OreSat Linux Manager is the Linux board controller / CAN interface program for all Linux boards on OreSat. It is built ontop of CANopenNode and interfaces with Systemd, allowing the master CAN node to control everything on the board over CAN. The OLM is ment to be a node on the CANbus, not the master node.
- Built on top of the CANopenNode, therefor it follows the CANopen-Specifcations by CiA (CAN-in-Automation).
- Follows the ECSS-CANBus-Extended-Protocal on top of CiA specs.
- Allows the CAN Network Manager to control any daemons on the Linux board thru Systemd.
- Has a app based system that uses sd-bus (systemd dbus) for DBus communication to OreSat daemons.
- Allows other daemons with oresat-linux-manager apps to read/write to the CAN object dictionary over dbus.
- Allows the other processes/daemons to be written in any language that has a DBus library or a DBus binding. A lot of languages do have DBus support, See freedesktop DBus Bindings for a DBus supported languague list.
- For Debian:
apt install git libsystemd-dev cmake make gcc doxygen pkg-config
- optional:
ninja-build
- optional:
- For Arch:
pacman -S git systemd-libs cmake make gcc doxygen pkgconfig
- optional:
ninja
- optional:
- For Debian:
apt install libsystemd-dev
- For Arch:
pacman -S systemd-libs
- Compiling
$ cd build
$ cmake -DBOARD=<board> ..
or$ cmake -GNinja -DBOARD=<board> ..
$ make
or$ ninja
- Optional cmake flags, 1st option in
[ ]
is default when not specified:-DCMAKE_BUILD_TYPE=[Debug|Release]
to turn the -g -Wall cflags on/off
- Running OLM
$ sudo ./oresat-linux-manager
$ ./oresat-linux-manager -h
for help message
- Building deb binary package
$ make package
or$ ninja package
$ cp -r src/boards/generic src/boards/<new_board_name>
- modify
$ src/boards/<new_board_name>/board_main.c
as needed - modify
$ src/boards/<new_board_name>/object_dictionary/*.xdd
with CANopenEditor as needed. Make sure to save the.xdd
,.eds
,.md
, andCO_OD.*
files when editing the OD.