...
Facilitates STD32 timer interrupts for periodic callbacks, essential for consistent data dispatch to the ground station. This is just a way to abstract the process of creating a timer interrupt on the STM32 board. This method will be used to generate timer interrupts to schedule regular data transmissions to the ground station.
Method Signature
void registerTimerInterrupt(int timeIntervalMs, void (*function)())
...
Manages byte streams as MAVLink messages within TM components, using a circular queue/buffer for effective data buffering.
...
A fundamental class for data integrity and memory efficiency in processing or waiting for transmission. Note, that we always check if the circular buffer has space before we add anything to it. This means that if one part of the program (MT.bytesToMavlinkMsg(GSC.DMAReceiveBuffer)) is accessing the buffer while an interrupt (GroundStationComms ISR) occurs, data integrity will remain if we ensure no overiting of data. The benefits of this approach are that we do not need to use mutex locks reducing the complexity. The drawback of this approach is that if we receive data, but the buffer is full, we need to discard the data.
🚀 Main Class Definition: System Initialization and Task Management
...
Details subsystem interactions within the project and with external entities, focusing on integration mechanisms and their objectives.
PREVIOUS PAGE IGNORE:
TM Will:
Drone to Ground Station Communication via RFD 900 Radio
RX
Receive raw MAVLink bytes from the ground station.
TX
Transmit raw MAVLink bytes from the ground station.
Encode & Decode Raw MAVLink Data
Encode
Into Mavlink bytes to send to Mission Planner transmitted via RFD 900
Decode
Decode raw Mavlink bytes received from Mission Planner, received via RFD 900.
Ingest Drone State Data (Lat, Lng, Velocity, Pitch, etc) via C++ references
Should these references be passed at TM instantiation?
Is there a finite list of drone state data TM will be ingesting?
Sample rate?
TM will communicate with other managers via [UNDEFINED COMMUNICATION MEDIUM]: Maybe for TM, this should go in M3?
ROS LCM?
Byte Streams?
MQTT Style?
TM will have an input/output testing strategy
?