zephyr-copilot: Embedded programming in haskell using the Copilot stream DSL and Zephyr

[ bsd3, embedded, language, library ] [ Propose Tags ]

zephyr-copilot contains allows using Haskell to program many boards supported by the Zephyr project.

zephyr-copilot uses the Copilot stream DSL (domain-specific language) and Functional Reactive Programming (FRP) to generate a program which can be compiled in Zephyr and flashed to the board.

All the messy details are abstracted away, letting you focus on the desired behavior of the board.

Copilot is a stream (i.e., infinite lists) domain-specific language (DSL) in Haskell that compiles into embedded C. Copilot contains an interpreter, multiple back-end compilers, and other verification tools. https://copilot-language.github.io/

Zephyr is a real time embedded operating system (RTOS) supporting hundreds of boards. https://zephyrproject.org/


[Skip to Readme]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 1.0.0, 1.0.1, 1.0.2
Change log CHANGELOG
Dependencies base (>=4.5 && <5), containers, copilot (>=3.9 && <3.10), copilot-c99 (>=3.9 && <3.10), copilot-language (>=3.9 && <3.10), directory, filepath, mtl, optparse-applicative (>=0.14.1), sketch-frp-copilot (==1.0.2), temporary [details]
License BSD-3-Clause
Copyright 2020-2022 Joey Hess
Author Joey Hess
Maintainer Joey Hess <id@joeyh.name>
Category Embedded, Language
Source repo head: git clone git://git.joeyh.name/zephyr-copilot.git
Uploaded by JoeyHess at 2022-05-08T19:20:09Z
Distributions NixOS:1.0.2
Downloads 88 total (22 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2022-05-08 [all 1 reports]

Readme for zephyr-copilot-1.0.2

[back to package description]
Embedded programming in haskell using the Copilot stream DSL and Zephyr
zephyr-copilot contains allows using Haskell to program many boards
supported by the Zephyr project.

zephyr-copilot uses the Copilot stream DSL (domain-specific language)
and Functional Reactive Programming (FRP) to generate a program which
can be compiled in Zephyr and flashed to the board.

See Copilot.Zephyr for details on how to use write a program using this
library.

For example, to make a board blink its LED:

	import Copilot.Zephyr.Board.Generic
	main = zephyr $ do
		led0 =: blinking
		delay =: MilliSeconds (constant 100)

This and other examples are included in the Examples/ directory, each
with their own README explaining how to build and use them.

Copilot is a stream (i.e., infinite lists) domain-specific language
(DSL) in Haskell that compiles into embedded C. Copilot contains an
interpreter, multiple back-end compilers, and other verification tools.
<https://copilot-language.github.io/>

Zephyr is a real time embedded operating system (RTOS) supporting
hundreds of boards. <https://zephyrproject.org/>

## Contributing

Contributions are welcome, including adding support for more parts of
Zephyr and more boards that are supported by Zephyr.

Any contribution should have well documented functions and types.