From 2841844aa50861ba757e7dfcf5e13db350ffdac7 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sun, 24 Mar 2024 17:21:34 -0400 Subject: [PATCH] Improve bar chart visibility, working can --- Core/Modules/CANCallbacks.c | 110 +++++++------- Core/UI/HomeView.cpp | 89 ++--------- UOSM-Core/Modules/CANMessageLookUpModule.c | 49 ++++--- UOSM-Core/Modules/CANMessageLookUpModule.h | 4 +- UOSM-Core/Modules/InternalCommsModule.c | 162 +++++++++++---------- 5 files changed, 183 insertions(+), 231 deletions(-) diff --git a/Core/Modules/CANCallbacks.c b/Core/Modules/CANCallbacks.c index a54784b6..62ac5c63 100644 --- a/Core/Modules/CANCallbacks.c +++ b/Core/Modules/CANCallbacks.c @@ -20,63 +20,65 @@ void CAN_Dummy_RPM(velocity_t v) { SetMotorRPM(aggregatorWrapper, v); LogCanMessage(aggregatorWrapper, MOTOR_RPM_DATA_ID, v, CAN_DECIMAL); } - -void MotorRPMDataCallback(iCommsMessage_t* msg) { - if (!CAN_Enabled()) { - return; - } - - velocity_t rpm = readMsg(msg); - DebugPrint("CAN rpm received: %d", rpm); - SetMotorRPM(aggregatorWrapper, rpm * -1); - LogCanMessage(aggregatorWrapper, MOTOR_RPM_DATA_ID, rpm, CAN_DECIMAL); -} - -void ThrottleDataCallback(iCommsMessage_t* msg) { - if (!CAN_Enabled()) { - return; - } - - percentage_t throttle = readMsg(msg); - DebugPrint("CAN throttle received: %d", throttle); - SetThrottlePosition(aggregatorWrapper, throttle); - LogCanMessage(aggregatorWrapper, THROTTLE_DATA_ID, throttle, CAN_DECIMAL); -} - -void ErrorDataCallback(iCommsMessage_t* msg) { - if (msg->dataLength == CANMessageLookUpTable[ERROR_DATA_ID].numberOfBytes) { - ErrorCode code = msg->data[1]; - flag_status_t status = msg->data[0]; - LogCanMessagePairValue(aggregatorWrapper, ERROR_DATA_ID, code, status, CAN_DECIMAL); - } else { - DebugPrint("Received corrupted error CAN message."); - } -} - -void SpeedDataCallback(iCommsMessage_t* msg) { - speed_t speed = readMsg(msg); - LogCanMessage(aggregatorWrapper, SPEED_DATA_ID, speed, CAN_DECIMAL); -} - -void EventDataCallback(iCommsMessage_t* msg) { - if (msg->dataLength == CANMessageLookUpTable[EVENT_DATA_ID].numberOfBytes) { - EventCode code = (EventCode) msg->data[1]; - LogCanMessagePairValue(aggregatorWrapper, EVENT_DATA_ID, code, msg->data[0], CAN_DECIMAL); - } else { - DebugPrint("Received corrupted event CAN message."); - } -} - -void CurrentVoltageDataCallback(iCommsMessage_t* msg) { - uint16_pair_t pair = readMsgPairUInt16Bit(msg); - SetBatteryVoltage(aggregatorWrapper, pair.b); - SetCurrent(aggregatorWrapper, pair.a); - LogCanMessagePairValue(aggregatorWrapper, CURRENT_VOLTAGE_DATA_ID, pair.a, pair.b, CAN_DECIMAL); -} +// +//void MotorRPMDataCallback(iCommsMessage_t* msg) { +// if (!CAN_Enabled()) { +// return; +// } +// +// velocity_t rpm = readMsg(msg); +// DebugPrint("CAN rpm received: %d", rpm); +// SetMotorRPM(aggregatorWrapper, rpm * -1); +// LogCanMessage(aggregatorWrapper, MOTOR_RPM_DATA_ID, rpm, CAN_DECIMAL); +//} +// +//void ThrottleDataCallback(iCommsMessage_t* msg) { +// if (!CAN_Enabled()) { +// return; +// } +// +// percentage_t throttle = readMsg(msg); +// DebugPrint("CAN throttle received: %d", throttle); +// SetThrottlePosition(aggregatorWrapper, throttle); +// LogCanMessage(aggregatorWrapper, THROTTLE_DATA_ID, throttle, CAN_DECIMAL); +//} +// +//void ErrorDataCallback(iCommsMessage_t* msg) { +// if (msg->dataLength == CANMessageLookUpTable[ERROR_DATA_ID].numberOfBytes) { +// ErrorCode code = msg->data[1]; +// flag_status_t status = msg->data[0]; +// LogCanMessagePairValue(aggregatorWrapper, ERROR_DATA_ID, code, status, CAN_DECIMAL); +// } else { +// DebugPrint("Received corrupted error CAN message."); +// } +//} +// +//void SpeedDataCallback(iCommsMessage_t* msg) { +// speed_t speed = readMsg(msg); +// LogCanMessage(aggregatorWrapper, SPEED_DATA_ID, speed, CAN_DECIMAL); +//} +// +//void EventDataCallback(iCommsMessage_t* msg) { +// if (msg->dataLength == CANMessageLookUpTable[EVENT_DATA_ID].numberOfBytes) { +// EventCode code = (EventCode) msg->data[1]; +// LogCanMessagePairValue(aggregatorWrapper, EVENT_DATA_ID, code, msg->data[0], CAN_DECIMAL); +// } else { +// DebugPrint("Received corrupted event CAN message."); +// } +//} +// +//void CurrentVoltageDataCallback(iCommsMessage_t* msg) { +// uint16_pair_t pair = readMsgPairUInt16Bit(msg); +// SetBatteryVoltage(aggregatorWrapper, pair.b); +// SetCurrent(aggregatorWrapper, pair.a); +// LogCanMessagePairValue(aggregatorWrapper, CURRENT_VOLTAGE_DATA_ID, pair.a, pair.b, CAN_DECIMAL); +//} void EfficiencyDataCallback(iCommsMessage_t* msg) { lap_efficiencies_t e; + DebugPrint("Received efficiencies"); IComms_ReadEfficiencyMessage(msg, &e); - SetEfficiency(aggregatorWrapper, &e); DebugPrint("Lap Efficiency: %d %d %d %d", e.lap_0, e.lap_1, e.lap_2, e.lap_3); + + SetEfficiency(aggregatorWrapper, &e); } \ No newline at end of file diff --git a/Core/UI/HomeView.cpp b/Core/UI/HomeView.cpp index 5d5892ca..29e1b6a8 100644 --- a/Core/UI/HomeView.cpp +++ b/Core/UI/HomeView.cpp @@ -95,16 +95,26 @@ HomeView::HomeView(lv_obj_t* parent, DataAggregator& aggregator) : View(parent, lv_obj_t* efficiency_chart; efficiency_chart = lv_chart_create(bottomRow); - lv_obj_set_size(efficiency_chart, 800, 472); + lv_obj_set_size(efficiency_chart, 800, 460); lv_obj_center(efficiency_chart); - lv_chart_set_type(efficiency_chart, LV_CHART_TYPE_LINE); + lv_chart_set_type(efficiency_chart, LV_CHART_TYPE_BAR); lv_chart_set_update_mode(efficiency_chart, LV_CHART_UPDATE_MODE_CIRCULAR); lv_chart_set_point_count(efficiency_chart, 4); + lv_chart_set_range(efficiency_chart, LV_CHART_AXIS_PRIMARY_Y, 0, 200); + + lv_style_t style; + lv_style_set_line_width(&style, 20); + + lv_obj_add_style(efficiency_chart, &style, LV_PART_MAIN); lv_chart_series_t* efficiencies = lv_chart_add_series(efficiency_chart, lv_palette_main(LV_PALETTE_INDIGO), LV_CHART_AXIS_PRIMARY_Y); - getDataAggregator().efficiency.addListener([&efficiency_chart, &efficiencies](const lap_efficiencies_t& e) { - lv_chart_set_next_value(efficiency_chart, efficiencies, e.lap_0); + + + getDataAggregator().efficiency.addListener([efficiency_chart, efficiencies](const lap_efficiencies_t& e) { + DebugPrint("Displaying efficiencies: %d %d %d %d", e.lap_0, e.lap_1, e.lap_2, e.lap_3); + + lv_chart_set_next_value(efficiency_chart, efficiencies, 200); lv_chart_set_next_value(efficiency_chart, efficiencies, e.lap_1); lv_chart_set_next_value(efficiency_chart, efficiencies, e.lap_2); lv_chart_set_next_value(efficiency_chart, efficiencies, e.lap_3); @@ -112,76 +122,5 @@ HomeView::HomeView(lv_obj_t* parent, DataAggregator& aggregator) : View(parent, lv_chart_refresh(efficiency_chart); }); - //lv_chart_set_next_value(efficiency_chart, efficiencies, joule); - - - - -/* lapEfficiencyLabel = lv_label_create(bottomRow); - lv_label_set_text(lapEfficiencyLabel, "+99%"); - lv_obj_add_style(lapEfficiencyLabel, styles->GetLargeTextStyle(), LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_align(lapEfficiencyLabel, LV_ALIGN_CENTER, 0, 0);*/ - -/* lapTimeBarGraph = lv_chart_create(bottomRow); - lv_chart_set_type(lapTimeBarGraph, LV_CHART_TYPE_BAR); - lv_obj_set_size(lapTimeBarGraph, 200, 150); - lv_obj_center(lapTimeBarGraph); - lv_chart_set_range(lapTimeBarGraph, LV_CHART_AXIS_PRIMARY_Y, 0, 1010); - lv_chart_set_range(lapTimeBarGraph, LV_CHART_AXIS_SECONDARY_Y, 0, 1010); - lv_chart_set_point_count(lapTimeBarGraph, 12);*/ - -/* //Add ticks and label to every axis - lv_chart_set_axis_tick(lapTimeBarGraph, LV_CHART_AXIS_PRIMARY_X, 10, 5, 12, 3, true, 40); - lv_chart_set_axis_tick(lapTimeBarGraph, LV_CHART_AXIS_PRIMARY_Y, 10, 5, 6, 2, true, 50); - lv_chart_set_axis_tick(lapTimeBarGraph, LV_CHART_AXIS_SECONDARY_Y, 10, 5, 3, 4, true, 50); - - //Zoom in a little in X - lv_chart_set_zoom_x(lapTimeBarGraph, 800); - - //Add two data series - lv_chart_series_t * ser1 = lv_chart_add_series(lapTimeBarGraph, lv_palette_lighten(LV_PALETTE_GREEN, 2), LV_CHART_AXIS_PRIMARY_Y); - - lv_chart_set_point_count(lapTimeBarGraph, getDataAggregator().lapTimes.getNumberOfElements()); - lv_chart_set_ext_y_array(lapTimeBarGraph, ser1, - reinterpret_cast(aggregator.lapTimes.getValues())); - lv_chart_refresh(lapTimeBarGraph); Required after direct set - - getDataAggregator().batteryVoltages.addListenerForLatest([this](const voltage_t& voltage) { - uint32_t n = voltage * 33 * 185 / 40960; - lv_label_set_text_fmt(batteryVoltageLabel, "%d.%d Volts", n / 10, n % 10); - }); - viewModel.GetAggregator().motorVelocities.addListenerForLatest([this](const velocity_t& velocity) { - lv_label_set_text_fmt(motorRPMLabel, "%d RPM", velocity); - });*/ - -/* getDataAggregator().lapTimes.addListenerForLatest([this](const ms_t& time) { - lv_label_set_text_fmt(lapTimeLabel, "%dm %ds", time / 60000, time / 1000); - });*/ - -/* getDataAggregator().lapTimes.addListener([this](const DataQueue& queue) { - lv_chart_set_point_count(lapTimeBarGraph, queue.getNumberOfElements()); - lv_chart_refresh(lapTimeBarGraph); - });*/ - -/* getDataAggregator().throttlePositions.addListenerForLatest([this](const percentage_t& throttle) { - lv_anim_t a; - lv_anim_init(&a); - lv_anim_set_var(&a, throttleArc); - lv_anim_set_exec_cb(&a, reinterpret_cast(setArcValue)); - lv_anim_set_time(&a, 100); - lv_anim_set_values(&a, lv_arc_get_value(throttleArc), throttle); - lv_anim_start(&a); - lv_label_set_text_fmt(lapTimeLabel, "%d", throttle); - });*/ - - -/* lv_timer_t * timer = lv_timer_create([](lv_timer_t * timer) {lv_anim_t a; - lv_anim_init(&a); - lv_anim_set_var(&a, ai); - lv_anim_set_exec_cb(&a, reinterpret_cast(setArcValue)); - lv_anim_set_time(&a, 100); - lv_anim_set_values(&a, lv_arc_get_value(ai), 10+rand()%80); - lv_anim_start(&a); - }, 500, nullptr);*/ } diff --git a/UOSM-Core/Modules/CANMessageLookUpModule.c b/UOSM-Core/Modules/CANMessageLookUpModule.c index 17d6265c..a6d9ec1a 100644 --- a/UOSM-Core/Modules/CANMessageLookUpModule.c +++ b/UOSM-Core/Modules/CANMessageLookUpModule.c @@ -8,15 +8,23 @@ #include "CANMessageLookUpModule.h" #include "CANDriver.h" -extern __weak void ThrottleDataCallback(iCommsMessage_t *msg); -extern __weak void ErrorDataCallback(iCommsMessage_t *msg); -extern __weak void SpeedDataCallback(iCommsMessage_t *msg); -extern __weak void EventDataCallback(iCommsMessage_t *msg); -extern __weak void MotorRPMDataCallback(iCommsMessage_t *msg); -extern __weak void CurrentVoltageDataCallback(iCommsMessage_t *msg); -extern __weak void PressureTemperatureDataCallback(iCommsMessage_t *msg); -extern __weak void LightsDataCallback(iCommsMessage_t *msg); -extern __weak void EfficiencyDataCallback(iCommsMessage_t *msg); +__weak void ThrottleDataCallback(iCommsMessage_t* msg) {}; + +__weak void ErrorDataCallback(iCommsMessage_t* msg) {}; + +__weak void SpeedDataCallback(iCommsMessage_t* msg) {}; + +__weak void EventDataCallback(iCommsMessage_t* msg) {}; + +__weak void MotorRPMDataCallback(iCommsMessage_t* msg) {}; + +__weak void CurrentVoltageDataCallback(iCommsMessage_t* msg) {}; + +__weak void PressureTemperatureDataCallback(iCommsMessage_t* msg) {}; + +__weak void LightsDataCallback(iCommsMessage_t* msg) {}; + +__weak void EfficiencyDataCallback(iCommsMessage_t* msg) {}; /********************************************************************************* * @@ -24,16 +32,17 @@ extern __weak void EfficiencyDataCallback(iCommsMessage_t *msg); * **********************************************************************************/ const ICommsMessageInfo CANMessageLookUpTable[NUMBER_CAN_MESSAGE_IDS] = { - // Message Index CAN ID Num of Bytes Callback - {THROTTLE_DATA_ID, 0x0001, 2, &ThrottleDataCallback}, - {SPEED_DATA_ID, 0x0002, 4, &SpeedDataCallback}, - {MOTOR_RPM_DATA_ID, 0x0003, 4, &MotorRPMDataCallback}, - {EVENT_DATA_ID, 0x0400, 2, &EventDataCallback}, - {ERROR_DATA_ID, 0x0401, 2, &ErrorDataCallback}, - {CURRENT_VOLTAGE_DATA_ID, 0x0004, 2, &CurrentVoltageDataCallback}, - {LIGHT_DATA_ID,0x0305,4,&LightsDataCallback}, - {PRESSURE_TEMPERATURE_DATA_ID, 0x0005, 8, &PressureTemperatureDataCallback}, - {EFFICIENCY_DATA_ID, 0x0007, 4, &EfficiencyDataCallback} + // Message Index CAN ID Num of Bytes Callback + {THROTTLE_DATA_ID, 0x0001, 2, &ThrottleDataCallback}, + {SPEED_DATA_ID, 0x0002, 4, &SpeedDataCallback}, + {MOTOR_RPM_DATA_ID, 0x0003, 4, &MotorRPMDataCallback}, + {EVENT_DATA_ID, 0x0400, 2, &EventDataCallback}, + {ERROR_DATA_ID, 0x0401, 2, &ErrorDataCallback}, + {CURRENT_VOLTAGE_DATA_ID, 0x0004, 2, &CurrentVoltageDataCallback}, + {LIGHT_DATA_ID, 0x0305, 4, &LightsDataCallback}, + {PRESSURE_TEMPERATURE_DATA_ID, 0x0005, 8, &PressureTemperatureDataCallback}, + {EFFICIENCY_DATA_ID, 0x0007, 4, &EfficiencyDataCallback} }; -PUBLIC const ICommsMessageInfo *CANMessageLookUpGetInfo(ICommsMessageLookUpIndex id) { return &CANMessageLookUpTable[id]; } \ No newline at end of file +PUBLIC const ICommsMessageInfo* +CANMessageLookUpGetInfo(ICommsMessageLookUpIndex id) { return &CANMessageLookUpTable[id]; } \ No newline at end of file diff --git a/UOSM-Core/Modules/CANMessageLookUpModule.h b/UOSM-Core/Modules/CANMessageLookUpModule.h index 435c6fa0..baeda33f 100644 --- a/UOSM-Core/Modules/CANMessageLookUpModule.h +++ b/UOSM-Core/Modules/CANMessageLookUpModule.h @@ -16,7 +16,7 @@ extern "C" { // CAN Message IDs for each piece of data // Details can be found on the CAN Reference Document -#define NUMBER_CAN_MESSAGE_IDS 10 +#define NUMBER_CAN_MESSAGE_IDS 9 typedef enum ICommsMessageLookUpIndex { THROTTLE_DATA_ID, @@ -38,7 +38,7 @@ typedef struct { uint8_t numberOfBytes; // Lambda Function. Instructions to execute when a message of this type is received. - void (*canMessageCallback)(iCommsMessage_t* msg); + void (* canMessageCallback)(iCommsMessage_t* msg); } ICommsMessageInfo; diff --git a/UOSM-Core/Modules/InternalCommsModule.c b/UOSM-Core/Modules/InternalCommsModule.c index de2f9091..6dda192d 100644 --- a/UOSM-Core/Modules/InternalCommsModule.c +++ b/UOSM-Core/Modules/InternalCommsModule.c @@ -12,7 +12,7 @@ #include "CANMessageLookUpModule.h" #include -const char *ICM_TAG = "#ICM:"; +const char* ICM_TAG = "#ICM:"; static const uint8_t batchSize = 5; @@ -82,108 +82,109 @@ static const uint8_t batchSize = 5; #define ICOMMS_DRIVER_RECEIVE_MESSAGE(...) CANSPI_Receive(__VA_ARGS__) PUBLIC result_t IComms_Init() { - result_t ret = ICOMMS_DRIVER_INITIALIZE(); - return ret; + result_t ret = ICOMMS_DRIVER_INITIALIZE(); + return ret; } -PUBLIC result_t IComms_Transmit(iCommsMessage_t *txMsg) { - result_t ret = ICOMMS_DRIVER_TRANSMIT_MESSAGE(txMsg); - return ret; +PUBLIC result_t IComms_Transmit(iCommsMessage_t* txMsg) { + result_t ret = ICOMMS_DRIVER_TRANSMIT_MESSAGE(txMsg); + return ret; } PUBLIC void IComms_PeriodicReceive() { - for (uint8_t i = 0; i < batchSize && ICOMMS_DRIVER_MESSAGE_AVAILABLE() != 0; i++) { - // Create an empty message to populate + for (uint8_t i = 0; i < batchSize && ICOMMS_DRIVER_MESSAGE_AVAILABLE() != 0; i++) { + // Create an empty message to populate iCommsMessage_t rxMsg; - result_t ret = ICOMMS_DRIVER_RECEIVE_MESSAGE(&rxMsg); - if (ret == RESULT_FAIL) { - DebugPrint("#ICM: FAILED TO RETRIEVE ICOMMS MESSAGE FROM DRIVER"); - } else { - uint8_t lookupTableIndex = 0; - - // Lookup CAN message in table - // Exit while loop if message found or if end of table reached - while (rxMsg.standardMessageID != CANMessageLookUpTable[lookupTableIndex].messageID && lookupTableIndex < NUMBER_CAN_MESSAGE_IDS) { - // DebugPrint("%s msgId[%x] != [%x]", ICM_TAG, rxMsg.standardMessageID, CANMessageLookUpTable[lookupTableIndex].messageID); - lookupTableIndex++; - } - - // handle the case where the message is no recognized by the look up table - if (lookupTableIndex < NUMBER_CAN_MESSAGE_IDS) { - // DebugPrint("%s Executing callback", ICM_TAG); + result_t ret = ICOMMS_DRIVER_RECEIVE_MESSAGE(&rxMsg); + if (ret == RESULT_FAIL) { + DebugPrint("#ICM: FAILED TO RETRIEVE ICOMMS MESSAGE FROM DRIVER"); + } else { + uint8_t lookupTableIndex = 0; + + // Lookup CAN message in table + // Exit while loop if message found or if end of table reached + while (rxMsg.standardMessageID != CANMessageLookUpTable[lookupTableIndex].messageID && + lookupTableIndex < NUMBER_CAN_MESSAGE_IDS) { + // DebugPrint("%s msgId[%x] != [%x]", ICM_TAG, rxMsg.standardMessageID, CANMessageLookUpTable[lookupTableIndex].messageID); + lookupTableIndex++; + } + + // handle the case where the message is no recognized by the look up table + if (lookupTableIndex < NUMBER_CAN_MESSAGE_IDS) { + // DebugPrint("%s Executing callback", ICM_TAG); // Execute callback for message - DebugPrint("Executing CAN Callback"); - CANMessageLookUpTable[lookupTableIndex].canMessageCallback(&rxMsg); - } else { - DebugPrint("%s Unknown message id [%x], index [%d]", ICM_TAG, rxMsg.standardMessageID, lookupTableIndex); - } - } - } + CANMessageLookUpTable[lookupTableIndex].canMessageCallback(&rxMsg); + } else { + DebugPrint("%s Unknown message id [%x], index [%d]", ICM_TAG, rxMsg.standardMessageID, + lookupTableIndex); + } + } + } } PUBLIC iCommsMessage_t IComms_CreateMessage(uint16_t standardMessageID, uint8_t dataLength, uint8_t data[8]) { - iCommsMessage_t msg; - msg.standardMessageID = standardMessageID; - msg.dataLength = dataLength; + iCommsMessage_t msg; + msg.standardMessageID = standardMessageID; + msg.dataLength = dataLength; - memcpy(msg.data, data, 8); + memcpy(msg.data, data, 8); - return msg; + return msg; } PUBLIC iCommsMessage_t IComms_CreatePercentageMessage(uint16_t standardMessageID, percentage_t percentage) { - uint8_t data[8]; - data[0] = percentage; - data[1] = percentage >> 8; + uint8_t data[8]; + data[0] = percentage; + data[1] = percentage >> 8; - return IComms_CreateMessage(standardMessageID, 2, data); + return IComms_CreateMessage(standardMessageID, 2, data); } PUBLIC iCommsMessage_t IComms_CreateUint32BitMessage(uint16_t standardMessageID, uint32_t value) { - uint8_t data[8]; - data[0] = value; - data[1] = value >> 8; - data[2] = value >> 16; - data[3] = value >> 24; + uint8_t data[8]; + data[0] = value; + data[1] = value >> 8; + data[2] = value >> 16; + data[3] = value >> 24; - return IComms_CreateMessage(standardMessageID, 4, data); + return IComms_CreateMessage(standardMessageID, 4, data); } PUBLIC iCommsMessage_t IComms_CreateInt32BitMessage(uint16_t standardMessageID, int32_t value) { - uint8_t data[8]; - data[0] = value; - data[1] = value >> 8; - data[2] = value >> 16; - data[3] = value >> 24; + uint8_t data[8]; + data[0] = value; + data[1] = value >> 8; + data[2] = value >> 16; + data[3] = value >> 24; - return IComms_CreateMessage(standardMessageID, 4, data); + return IComms_CreateMessage(standardMessageID, 4, data); } PUBLIC iCommsMessage_t IComms_CreateErrorMessage(uint16_t standardMessageID, ErrorCode code, flag_status_t status) { - uint8_t data[8]; - data[0] = status; - data[1] = code; + uint8_t data[8]; + data[0] = status; + data[1] = code; - return IComms_CreateMessage(standardMessageID, 2, data); + return IComms_CreateMessage(standardMessageID, 2, data); } PUBLIC iCommsMessage_t IComms_CreateEventMessage(uint16_t standardMessageID, uint8_t code, uint8_t status) { - uint8_t data[8]; - data[0] = status; - data[1] = code; + uint8_t data[8]; + data[0] = status; + data[1] = code; - return IComms_CreateMessage(standardMessageID, 2, data); + return IComms_CreateMessage(standardMessageID, 2, data); } PUBLIC iCommsMessage_t IComms_CreatePairUInt16BitMessage(uint16_t standardMessageID, uint16_t a, uint16_t b) { - uint8_t data[8]; - data[0] = a; - data[1] = a >> 8; - data[2] = b; - data[3] = b >> 8; + uint8_t data[8]; + data[0] = a; + data[1] = a >> 8; + data[2] = b; + data[3] = b >> 8; - return IComms_CreateMessage(standardMessageID, 4, data); + return IComms_CreateMessage(standardMessageID, 4, data); } PUBLIC iCommsMessage_t IComms_CreateLightsMessage(uint16_t standardMessageID, uint8_t code, uint8_t status) { @@ -209,7 +210,7 @@ PUBLIC iCommsMessage_t IComms_CreatePairInt32Message(uint16_t standardMessageID, return IComms_CreateMessage(standardMessageID, 8, data); } -PUBLIC result_t IComms_ReadPairInt32Message(iCommsMessage_t *msg, int32_t* a, int32_t* b) { +PUBLIC result_t IComms_ReadPairInt32Message(iCommsMessage_t* msg, int32_t* a, int32_t* b) { if (msg->dataLength != 8) { return RESULT_FAIL; } @@ -229,22 +230,23 @@ PUBLIC result_t IComms_ReadPairInt32Message(iCommsMessage_t *msg, int32_t* a, in return RESULT_OK; } -PUBLIC iCommsMessage_t IComms_CreatePressureTemperatureMessage(uint16_t standardMessageID, pressure_t a, temperature_t b) {} +PUBLIC iCommsMessage_t +IComms_CreatePressureTemperatureMessage(uint16_t standardMessageID, pressure_t a, temperature_t b) {} PUBLIC result_t IComms_ReadPressureTemperatureMessage(iCommsMessage_t* msg, pressure_t* a, temperature_t* b); -PUBLIC uint16_pair_t readMsgPairUInt16Bit(iCommsMessage_t *msg) { - uint16_pair_t pair = {}; +PUBLIC uint16_pair_t readMsgPairUInt16Bit(iCommsMessage_t* msg) { + uint16_pair_t pair = {}; - if (msg->dataLength != 4) { return pair; } + if (msg->dataLength != 4) { return pair; } - pair.a = msg->data[1] << 8; - pair.a |= msg->data[0]; + pair.a = msg->data[1] << 8; + pair.a |= msg->data[0]; - pair.b = msg->data[3] << 8; - pair.b |= msg->data[2]; + pair.b = msg->data[3] << 8; + pair.b |= msg->data[2]; - return pair; + return pair; } PUBLIC iCommsMessage_t IComms_CreateEfficiencyMessage(uint16_t standardMessageID, lap_efficiencies_t* efficiencies) { @@ -257,11 +259,11 @@ PUBLIC iCommsMessage_t IComms_CreateEfficiencyMessage(uint16_t standardMessageID return IComms_CreateMessage(standardMessageID, 2, data); } -PUBLIC result_t IComms_ReadEfficiencyMessage(iCommsMessage_t *msg, lap_efficiencies_t* result) { +PUBLIC result_t IComms_ReadEfficiencyMessage(iCommsMessage_t* msg, lap_efficiencies_t* result) { result->lap_0 = msg->data[0]; - result->lap_0 = msg->data[1]; - result->lap_0 = msg->data[2]; - result->lap_0 = msg->data[3]; + result->lap_1 = msg->data[1]; + result->lap_2 = msg->data[2]; + result->lap_3 = msg->data[3]; return RESULT_OK; } \ No newline at end of file