7extern EventGroupHandle_t xMsgReadyGroup;
8extern MessageBufferHandle_t xLoRaTxBuff;
9extern EventGroupHandle_t xSystemStatusGroup;
18void vLoRaTransmit(
void *argument) {
19 const TickType_t blockTime = portMAX_DELAY;
20 uint8_t rxData[LORA_MSG_LENGTH];
22 LoRa *lora = DeviceHandle_getHandle(
"LoRa").
device;
26 EventBits_t uxBits = xEventGroupWaitBits(xMsgReadyGroup, GROUP_MESSAGE_READY_LORA, pdFALSE, pdFALSE, blockTime);
27 if ((uxBits & GROUP_MESSAGE_READY_LORA)) {
29 size_t xReceivedBytes = xMessageBufferReceive(
38 xEventGroupClearBits(xMsgReadyGroup, GROUP_MESSAGE_READY_LORA);
52void vLoRaSample(
void *argument) {
53 const TickType_t xFrequency = pdMS_TO_TICKS(250);
54 const TickType_t blockTime = pdMS_TO_TICKS(125);
60 enum State *flightState = StateHandle_getHandle(
"FlightState").state;
61 float *altitude = StateHandle_getHandle(
"Altitude").state;
62 float *velocity = StateHandle_getHandle(
"Velocity").state;
66 TickType_t xLastWakeTime = xTaskGetTickCount();
67 vTaskDelayUntil(&xLastWakeTime, xFrequency);
69 uint8_t systemStatus = xEventGroupGetBits(xSystemStatusGroup);
74 *flightState | systemStatus,
77 KX134_1211_DATA_TOTAL,
85 xMessageBufferSend(xLoRaTxBuff, &avData, LORA_MSG_LENGTH, blockTime);
96void EXTI1_IRQHandler(
void) {
98 BaseType_t xHigherPriorityTaskWoken = pdFALSE, xResult;
101 xResult = xEventGroupSetBitsFromISR(
103 GROUP_MESSAGE_READY_LORA,
104 &xHigherPriorityTaskWoken
107 if (xResult != pdFAIL)
108 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
LoRa_Packet LoRa_AVData(uint8_t, uint8_t, uint8_t *, uint8_t *, uint8_t, uint8_t *, uint8_t, float, float)
Constructs a LoRa packet with accelerometer and gyroscope data, altitude, and velocity for transmissi...
uint8_t rawGyroData[A3G4250D_DATA_TOTAL]
Raw gyro rates array.
uint8_t rawAccelData[KX134_1211_DATA_TOTAL]
Raw accelerations array.
void(* transmit)(struct LoRa *, uint8_t *)
LoRa transmit method.
DeviceType device
Enum specifier for device type.