Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -ref0b3f0ec00fadc50f95e0db1a6477fb4b076ea1 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision ef0b3f0ec00fadc50f95e0db1a6477fb4b076ea1) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1) @@ -45,6 +45,17 @@ U08 alarmsFlags; // bit flags: 1 = true, 0 = false for each bit } ALARM_COMP_STATUS_PAYLOAD_T; +typedef struct +{ + U32 setPoint; + F32 measFlow; + F32 measRotorSpd; + F32 measPumpSpd; + F32 measMCSpd; + F32 measMCCurr; + F32 pwmDC; +} PERISTALTIC_PUMP_STATUS_PAYLOAD_T; + #pragma pack(pop) // ********** private data ********** @@ -291,33 +302,33 @@ * @param measSpd : Latest measured blood pump speed * @param measMCspd : Latest measured blood pump motor controller speed * @param measSpd : Latest measured blood pump motor controller current + * @param pwmDC : Latest PWM duty cycle % * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL broadcastBloodFlowData( U32 flowStPt, F32 measFlow, F32 measRotorSpd, F32 measSpd, F32 measMCSpd, F32 measMCCurr ) +BOOL broadcastBloodFlowData( U32 flowStPt, F32 measFlow, F32 measRotorSpd, F32 measSpd, F32 measMCSpd, F32 measMCCurr, F32 pwmDC ) { BOOL result; MESSAGE_T msg; U32 msgSize; U08 data[ sizeof( MESSAGE_WRAPPER_T ) + 1 + CAN_MESSAGE_PAYLOAD_SIZE ]; // must hold full (wrapped) message + sync + any CAN padding U08 *payloadPtr = msg.payload; + PERISTALTIC_PUMP_STATUS_PAYLOAD_T payload; // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_BLOOD_FLOW_DATA; - msg.hdr.payloadLen = sizeof( U32 ) + sizeof( F32 ) + sizeof( F32 ) + sizeof( F32 ) + sizeof( F32 ) + sizeof( F32 ); + msg.hdr.payloadLen = sizeof( PERISTALTIC_PUMP_STATUS_PAYLOAD_T ); - memcpy( payloadPtr, &flowStPt, sizeof( U32 ) ); - payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &measFlow, sizeof( F32 ) ); - payloadPtr += sizeof( F32 ); - memcpy( payloadPtr, &measRotorSpd, sizeof( F32 ) ); - payloadPtr += sizeof( F32 ); - memcpy( payloadPtr, &measSpd, sizeof( F32 ) ); - payloadPtr += sizeof( F32 ); - memcpy( payloadPtr, &measMCSpd, sizeof( F32 ) ); - payloadPtr += sizeof( F32 ); - memcpy( payloadPtr, &measMCCurr, sizeof( F32 ) ); + payload.setPoint = flowStPt; + payload.measFlow = measFlow; + payload.measRotorSpd = measRotorSpd; + payload.measPumpSpd = measSpd; + payload.measMCSpd = measMCSpd; + payload.measMCCurr = measMCCurr; + payload.pwmDC = pwmDC; + memcpy( payloadPtr, &payload, sizeof( PERISTALTIC_PUMP_STATUS_PAYLOAD_T ) ); + // serialize the message (w/ sync, CRC, and appropriate CAN padding) msgSize = serializeMessage( msg, data );