Skip to content

railab/dawn

Repository files navigation

Dawn Project logo

Dawn is a framework based on Apache NuttX for building descriptor-defined embedded device nodes.

Instead of hardcoding each application around one board and one protocol, Dawn describes a node as a set of IO, Program, and Protocol objects:

  • IO objects represent device data and control points.
  • Program objects implement runtime logic between IO objects.
  • Protocol objects expose the node through shell, CAN, serial, BLE/NimBLE, UDP, Modbus, or other transports.

The descriptor is the application definition. It decides which objects exist, how they are configured, and which protocols expose them.

Descriptor shape

A Dawn descriptor is YAML that connects IO, Program, and Protocol objects:

ios:
  - id: input1
    type: dummy
    dtype: uint32

  - id: output1
    type: dummy
    dtype: uint32

programs:
  - id: program1
    type: dummy
    inputs:
      - input1
    outputs:
      - output1

protocols:
  - id: protocol1
    type: dummy
    bindings:
      - input1
      - output1

This is a simplified shape example. Complete descriptors are available in descriptors/examples/.

What Dawn is for

Dawn is intended for embedded data-acquisition and control nodes, especially:

  • sensor and actuator nodes
  • NuttX-based prototypes
  • custom lab and diagnostic tools
  • hardware-in-the-loop and integration-test tools

Start Here

Run a Dawn node without hardware in the NuttX simulator:

Examples

For a first run, use the simulator and simple blinky-style descriptors. They are small starting points for learning how IO, Program, and Protocol objects fit together.

The full examples catalog contains more complete protocol, board, gateway, feature, and hardware-oriented demos.

Current Limits

  • Linux is the tested host environment.
  • At most GCC 14 is supported for the current NuttX libcxx build path.
  • GCC 15 currently breaks this build path.
  • Descriptor schemas, APIs, and protocol behavior may still change.

Documentation

Dawn documentation is published at https://railab.github.io/dawn/.

Python Tools

The Python tools live under tools/ as separate packages:

License

The code in this repository is under the Apache 2.0 license or a compatible license. See LICENSE for more information.

About

Open-source framework for building embedded DAQ and control devices from reusable building blocks on Apache NuttX.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors