Coder Social home page Coder Social logo

microsoft / jacdac Goto Github PK

View Code? Open in Web Editor NEW
61.0 12.0 23.0 64.09 MB

Device and service catalogs for Jacdac.

Home Page: https://aka.ms/jacdac

License: Creative Commons Attribution 4.0 International

Makefile 0.04% TypeScript 99.48% Shell 0.48%

jacdac's Introduction

Jacdac Specification, Device and Service Catalogs

Jacdac is a bus-based plug-and-play hardware/software stack for microcontrollers and their peripherals (sensors/actuators), with applications to rapid prototyping, making, and physical computing.

This repository contains the service specifications and device definitions.

Contributing

The list of open source repositories related to Jacdac is at https://microsoft.github.io/jacdac-docs/github/ .

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Legal Notices

Microsoft and any contributors grant you a license to the Microsoft documentation and other content in this repository under the Creative Commons Attribution 4.0 International Public License, see the LICENSE file, and grant you a license to any code in the repository under the MIT License, see the LICENSE-CODE file.

Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.

Privacy information can be found at https://privacy.microsoft.com/en-us/

Microsoft and any contributors reserve all other rights, whether under their respective copyrights, patents, or trademarks, whether by implication, estoppel or otherwise.

jacdac's People

Contributors

brian-inksmith avatar ducky64 avatar gakurekaruri avatar github-actions[bot] avatar jamesadevine avatar joernalraun avatar microsoftopensource avatar milador avatar mkleinsb avatar mmoskal avatar pelikhan avatar reggi avatar ross-inksmith avatar sehodges avatar smfox10 avatar tballmsft avatar xmeow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jacdac's Issues

Extract jdspectool parser

Eventually we should have live editor for the spec language in the spec web site. Would be nice to move the parser into its own file so that I can slurp it in the web.

Emit constants in specdata

Would be nice to emit a "specconstants.ts" file with all numberical constants from the specification -- or just in specdata.ts.

range on registers

servo pulse spec should give a range hint to help users.

In general, any register with range can easily be used with scaled values too.

_base has all sensor register?

There's a bunch of registers on base that are sensor specific, like cablirate and so forth. But sensor does not have calibrate.

sunset jacdac.org

If you search jacdac today, most of the hits land on jacdac.org. In order to send a consistent message, we need sunset the jacdac v1 web site and redirect to the new web site.

Barometer

A barometer sensor can be used to measure breathing if place on the exit vent of a mask.

temperature what does it mean?

The operating temperate of device may vary and we curerntly don't have enough info to raise an alarm or not.

My GPU runs at 84deg when playing CoD, it's normal. But this temparure might not be acceptable for other devices.

When does a device run hot? does it raise events?

spec revisions

naming rules

We need to specify rules for name:

  • maximum length for all identifiers
  • shortName / name: should we camelize always? can we move to "name", "displayName" like in DTDL

is streaming should automatically stop if no one is listening

It's easy to start streaming but stopping is much harder. When there are multiple listeners, a listener should not stop the streaming otherwise the other will loose data ... but ... that means never stopping the streaming once started. Or the listener might just go away without stopping streaming.

IMO, a device should stop streaming if it has not received a streaming command in x seconds.

Document unit

Document the list of unit support in the specification tool.

Don't add _ to name

It's a bit of a weird convention to have the _ in base/sensor. I'd just use the name.

please add breadcrumbs at top of doc for page ancestors

Now that we are getting more hierarchy, it would be useful to have a single line at the top of a document showing the hierarchy, with links to parent pages. Example

Reference -> Protocol Specification -> Physical Layer

rename service_number field everywhere

I suggest we rename service_number to service_index, which more accurately reflects that the value of the field is an index into a device's advertised list of services.

rename 'dummy' directory to 'hal'

the files in the "dummy" directory of "interfaces" really represent the hardware abstraction layer that JD relies on. Can we use a different name than "dummy"? Perhaps "hal"?

Document "repeat"

Can you add a section about repeat in the spec? not sure how to interpret it.

device -> module

In IoT world, it's all device... but we build device out of JACDAC modules, so module would make more sense.

Otherwise everything is a device: JACDAC devices combined into another devices, which is also a JACDAC device and so on.

Internal smooth policy for sensor

It might make sense in particular scenario to control how a device processes sensor data internally. For example, one could decide to apply a first order filter, keep the max value or just keep the last value.

  • default is probably filter based on the specs of the sensor
  • specific case like looking for spikes would require keeping max

Batch mode for fast sensor

Fitbit supports a batched reading mode to reduce the frequency of packets and send multiple readings at once.
https://dev.fitbit.com/build/guides/sensors/accelerometer/#batched-readings

Specifically, the sensor might be able to poll the data at a faster rate internally but unable to stream fast enough.

Practical example: measure forces when an object falls and hits the ground. It will typically a very short large spike which will probably be missed by the sampling.

How many devices can we sample on the bus when we are streaming at 100Hz?

Specify preferred polling rate

It doesn't make sense to poll temperatue 10x per second, but acceleraomter data maybe. Can we have a hint in the spec?

Losing events

In the record page, when devices are streaming, button events are lost.

  • connect accelerometer,
  • enable collection on fields
  • select button event to start/stop
  • try click and event are not coming in

Status for services? stable/unstable

Should we have a formal flag for service specifiaction that indicate the level of maturity of the specification. Maybe something like

    status: dev <-- still under development
    status: stable <-- no more changes allowed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.