Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r4d27576bdd7843178d9b69ffff3584ee01ec24fe -r6d2d8f0267c57135554e5a1acaca9aef37f27949 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 4d27576bdd7843178d9b69ffff3584ee01ec24fe) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6d2d8f0267c57135554e5a1acaca9aef37f27949) @@ -51,6 +51,14 @@ typedef struct { + F32 loadCellA1inGram; + F32 loadCellA2inGram; + F32 loadCellB1inGram; + F32 loadCellB2inGram; +} LOAD_CELL_DATA_T; + +typedef struct +{ F32 res1PrimaryLoadCell; F32 res1BackupLoadCell; F32 res2PrimaryLoadCell; @@ -322,6 +330,43 @@ return result; } +/************************************************************************* + * @brief + * The broadcastLoadCellData function sends out load cell data. + * @details + * Inputs : load cell data + * Outputs : load cell data msg constructed and queued + * @param loadCellA1 : load cell A 1 data in grams. + * @param loadCellA2 : load cell A 2 data in grams. + * @param loadCellB1 : load cell B 1 data in grams. + * @param loadCellB2 : load cell B 2 data in grams. + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastLoadCellData( F32 loadCellA1, F32 loadCellA2, F32 loadCellB1, F32 loadCellB2 ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + LOAD_CELL_DATA_T payload; + + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_LOAD_CELL_READINGS; + msg.hdr.payloadLen = sizeof( LOAD_CELL_DATA_T ); + + payload.loadCellA1inGram = loadCellA1; + payload.loadCellA2inGram = loadCellA2; + payload.loadCellB1inGram = loadCellB1; + payload.loadCellB2inGram = loadCellB2; + + memcpy( payloadPtr, &payload, sizeof( LOAD_CELL_DATA_T ) ); + + // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_BROADCAST, ACK_NOT_REQUIRED ); + + return result; +} + #ifdef CAN_TEST void broadcastCANTest1LargeFrequentMessage() {