Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r7d4711edd7b40cd3e29f43e766f79a8a09586fe9 -r9e5e0295b749e0cfb6017338fea63e6e4086e57b --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 7d4711edd7b40cd3e29f43e766f79a8a09586fe9) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 9e5e0295b749e0cfb6017338fea63e6e4086e57b) @@ -1123,17 +1123,26 @@ * @details Outputs: heatersDataPublishInterval * @return TRUE if the override was successful otherwise *************************************************************************/ -BOOL testSetHeatersPublishIntervalOverride( U32 value ) +BOOL testHeatersPublishIntervalOverride( TEST_OVERRIDE_PAYLOAD_T value ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { - U32 interval = value / TASK_PRIORITY_INTERVAL; + result = TRUE; - result = TRUE; - heatersDataPublishInterval.ovData = interval; - heatersDataPublishInterval.override = OVERRIDE_KEY; + if ( FALSE == value.reset ) + { + U32 interval = value.state.u32 / TASK_PRIORITY_INTERVAL; + + heatersDataPublishInterval.ovData = interval; + heatersDataPublishInterval.override = OVERRIDE_KEY; + } + else + { + heatersDataPublishInterval.override = OVERRIDE_RESET; + heatersDataPublishInterval.ovData = heatersDataPublishInterval.ovInitData; + } } return result; @@ -1147,7 +1156,7 @@ * @details Outputs: heatersDataPublishInterval * @return TRUE if the reset was successful otherwise, FALSE *************************************************************************/ -BOOL testResetHeatersPublishIntervalOverride( void ) +/*BOOL testResetHeatersPublishIntervalOverride( void ) { BOOL result = FALSE; @@ -1159,6 +1168,6 @@ } return result; -} +}*/ /**@}*/ Index: firmware/App/Controllers/Heaters.h =================================================================== diff -u -r7d4711edd7b40cd3e29f43e766f79a8a09586fe9 -r9e5e0295b749e0cfb6017338fea63e6e4086e57b --- firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 7d4711edd7b40cd3e29f43e766f79a8a09586fe9) +++ firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 9e5e0295b749e0cfb6017338fea63e6e4086e57b) @@ -75,8 +75,8 @@ BOOL testSetHeaterDutyCycleOverride( U32 heater, F32 value ); BOOL testResetHeaterDutyCycleOverride( U32 heater ); -BOOL testSetHeatersPublishIntervalOverride( U32 value ); -BOOL testResetHeatersPublishIntervalOverride( void ); +BOOL testHeatersPublishIntervalOverride( TEST_OVERRIDE_PAYLOAD_T value ); +//BOOL testResetHeatersPublishIntervalOverride( void ); /**@}*/ Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -rf986cf8443992e5caac5fcf407ca9d8e4ecc8db6 -r9e5e0295b749e0cfb6017338fea63e6e4086e57b --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision f986cf8443992e5caac5fcf407ca9d8e4ecc8db6) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 9e5e0295b749e0cfb6017338fea63e6e4086e57b) @@ -664,17 +664,26 @@ * @param value override load cell data publish interval with (in ms) * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetLoadCellDataPublishIntervalOverride( U32 value ) +BOOL testLoadCellDataPublishIntervalOverride( TEST_OVERRIDE_PAYLOAD_T value ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { - U32 intvl = value / TASK_PRIORITY_INTERVAL; - result = TRUE; - loadCellDataPublishInterval.ovData = intvl; - loadCellDataPublishInterval.override = OVERRIDE_KEY; + + if ( FALSE == value.reset ) + { + U32 intvl = value.state.u32 / TASK_PRIORITY_INTERVAL; + + loadCellDataPublishInterval.ovData = intvl; + loadCellDataPublishInterval.override = OVERRIDE_KEY; + } + else + { + loadCellDataPublishInterval.override = OVERRIDE_RESET; + loadCellDataPublishInterval.ovData = loadCellDataPublishInterval.ovInitData; + } } return result; @@ -688,7 +697,7 @@ * @details Outputs: loadCellDataPublishInterval * @return TRUE if override reset successful, FALSE if not *************************************************************************/ -BOOL testResetLoadCellDataPublishIntervalOverride( void ) +/*BOOL testResetLoadCellDataPublishIntervalOverride( void ) { BOOL result = FALSE; @@ -700,7 +709,7 @@ } return result; -} +}*/ /*********************************************************************//** * @brief Index: firmware/App/Controllers/LoadCell.h =================================================================== diff -u -r7d0fd5ed6b9db0479af90477e5108f6d3fa8df17 -r9e5e0295b749e0cfb6017338fea63e6e4086e57b --- firmware/App/Controllers/LoadCell.h (.../LoadCell.h) (revision 7d0fd5ed6b9db0479af90477e5108f6d3fa8df17) +++ firmware/App/Controllers/LoadCell.h (.../LoadCell.h) (revision 9e5e0295b749e0cfb6017338fea63e6e4086e57b) @@ -47,8 +47,8 @@ BOOL testSetLoadCellOverride( U32 loadCellID, F32 value, BOOL raw ); BOOL testResetLoadCellOverride( U32 loadCellID, BOOL raw ); -BOOL testSetLoadCellDataPublishIntervalOverride( U32 value ); -BOOL testResetLoadCellDataPublishIntervalOverride( void ); +BOOL testLoadCellDataPublishIntervalOverride( TEST_OVERRIDE_PAYLOAD_T value ); +//BOOL testResetLoadCellDataPublishIntervalOverride( void ); void getLoadCellsTareValues( U08* bufferAddress ); void setLoadCellsTareValues( U08* bufferAddress ); Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -rac029c36127b916d68c0039a470c3e4c68879adf -r9e5e0295b749e0cfb6017338fea63e6e4086e57b --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision ac029c36127b916d68c0039a470c3e4c68879adf) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 9e5e0295b749e0cfb6017338fea63e6e4086e57b) @@ -1339,17 +1339,26 @@ * @param value sensors data broadcast interval (in ms) to override * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetTemperatureSensorsPublishIntervalOverride( U32 value ) +BOOL testTemperatureSensorsPublishIntervalOverride( TEST_OVERRIDE_PAYLOAD_T value ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { - U32 interval = value / TASK_PRIORITY_INTERVAL; + result = TRUE; - result = TRUE; - tempSensorsPublishInterval.ovData = interval; - tempSensorsPublishInterval.override = OVERRIDE_KEY; + if ( FALSE == value.reset ) + { + U32 interval = value.state.u32 / TASK_PRIORITY_INTERVAL; + + tempSensorsPublishInterval.ovData = interval; + tempSensorsPublishInterval.override = OVERRIDE_KEY; + } + else + { + tempSensorsPublishInterval.override = OVERRIDE_RESET; + tempSensorsPublishInterval.ovData = tempSensorsPublishInterval.ovInitData; + } } return result; @@ -1363,7 +1372,7 @@ * @details Outputs: tempSensorsPublishInterval * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testResetTemperatureSensorsPublishIntervalOverride( void ) +/*BOOL testResetTemperatureSensorsPublishIntervalOverride( void ) { BOOL result = FALSE; @@ -1375,6 +1384,6 @@ } return result; -} +}*/ /**@}*/ Index: firmware/App/Controllers/TemperatureSensors.h =================================================================== diff -u -r7d4711edd7b40cd3e29f43e766f79a8a09586fe9 -r9e5e0295b749e0cfb6017338fea63e6e4086e57b --- firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision 7d4711edd7b40cd3e29f43e766f79a8a09586fe9) +++ firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision 9e5e0295b749e0cfb6017338fea63e6e4086e57b) @@ -77,8 +77,8 @@ BOOL testSetMeasuredTemperatureOverride( U32 sensorIndex, F32 temperature ); BOOL testResetMeasuredTemperatureOverride( U32 sensorIndex ); -BOOL testSetTemperatureSensorsPublishIntervalOverride( U32 value ); -BOOL testResetTemperatureSensorsPublishIntervalOverride( void ); +BOOL testTemperatureSensorsPublishIntervalOverride( TEST_OVERRIDE_PAYLOAD_T value ); +//BOOL testResetTemperatureSensorsPublishIntervalOverride( void ); /**@}*/ Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -re3839e10decfadf12a8fb2b9f8c049d8a30e945b -r9e5e0295b749e0cfb6017338fea63e6e4086e57b --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision e3839e10decfadf12a8fb2b9f8c049d8a30e945b) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 9e5e0295b749e0cfb6017338fea63e6e4086e57b) @@ -1008,9 +1008,9 @@ handleTestLoadCellOverrideRequest( message ); break; - case MSG_ID_LOAD_CELL_SEND_INTERVAL_OVERRIDE: +/* case MSG_ID_LOAD_CELL_SEND_INTERVAL_OVERRIDE: handleTestLoadCellDataBroadcastIntervalOverrideRequest( message ); - break; + break;*/ case MSG_ID_PRESSURE_OVERRIDE: handleTestPressureSensorOverrideRequest( message ); @@ -1057,12 +1057,15 @@ break; case MSG_ID_TEMPERATURE_SENSORS_PUBLISH_INTERVAL_OVERRIDE: - handleTestTemperatureSensorsDataPublishOverrideRequest( message ); + case MSG_ID_HEATERS_PUBLISH_INTERVAL_ORVERRIDE: + case MSG_ID_LOAD_CELL_SEND_INTERVAL_OVERRIDE: + //handleTestTemperatureSensorsDataPublishOverrideRequest( message ); + handleTestOverrideCommand( message ); break; - case MSG_ID_HEATERS_PUBLISH_INTERVAL_ORVERRIDE: +/* case MSG_ID_HEATERS_PUBLISH_INTERVAL_ORVERRIDE: handleTestHeatersDataPublishOverrideRequest( message ); - break; + break;*/ case MSG_ID_CONDUCTIVITY_OVERRIDE: handleTestSetConductivityOverrideRequest( message ); Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -re47489aaf3c818c6f438434ff6b2cf1cafc4210c -r9e5e0295b749e0cfb6017338fea63e6e4086e57b --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision e47489aaf3c818c6f438434ff6b2cf1cafc4210c) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 9e5e0295b749e0cfb6017338fea63e6e4086e57b) @@ -88,18 +88,34 @@ } FS_OVERRIDE_PAYLOAD_T; #pragma pack(pop) +typedef BOOL (*OverrideFuncPtr)( TEST_OVERRIDE_PAYLOAD_T ); + // ********** private data ********** static BOOL testerLoggedIn = FALSE; ///< Flag indicates whether tester logged in or not. static volatile U16 nextSeqNo = 1; ///< Next sequence number. /// List of message IDs that are requested not to be transmitted. static BLOCKED_MSGS_DATA_T blockedMessagesForXmit = { 0, 0, 0, 0, 0, 0, 0, 0 }; + +/// Override command handling function lookup table +static const U16 OVERRIDE_CMD_FUNCTION_HANDLER_LOOKUP[3][2] = { + { MSG_ID_TEMPERATURE_SENSORS_PUBLISH_INTERVAL_OVERRIDE, 0 }, + { MSG_ID_HEATERS_PUBLISH_INTERVAL_ORVERRIDE, 1 }, + { MSG_ID_LOAD_CELL_SEND_INTERVAL_OVERRIDE, 2 } +}; +/// Override command handling function table +static const OverrideFuncPtr OVERRIDE_CMD_FUNCTION_HANDLERS[3] = { + &testTemperatureSensorsPublishIntervalOverride, + &testHeatersPublishIntervalOverride, + &testLoadCellDataPublishIntervalOverride +}; // ********** private function prototypes ********** static BOOL sendTestAckResponseMsg( MSG_ID_T msgID, BOOL ack ); static BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); static BOOL sendUIResponseMsg( MSG_ID_T msgID, UI_RESPONSE_PAYLOAD_T *uiResponse ); +static OverrideFuncPtr getOverrideCmdHandler( U16 msgID ); /*********************************************************************//** * @brief @@ -2186,6 +2202,61 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } + + + + +static OverrideFuncPtr getOverrideCmdHandler( U16 msgID ) +{ + U32 i; + OverrideFuncPtr func = 0; + + // Search for the index associated with the given override command message ID and then use index to get the handling function + for ( i = 0; i < 3; i++ ) + { + if ( OVERRIDE_CMD_FUNCTION_HANDLER_LOOKUP[i][0] == msgID ) + { + func = OVERRIDE_CMD_FUNCTION_HANDLERS[i]; + break; + } + } + + return func; +} + +void handleTestOverrideCommand( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; // assume we will NAK until we have successful handling of message + + // verify Dialin user is logged in + if ( TRUE == isTestingActivated() ) + { + // verify payload length + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) + { + OverrideFuncPtr ovFuncPtr; + + // Copy message payload to local override record + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); + // Find the appropriate override command handling function to call + ovFuncPtr = getOverrideCmdHandler( message->hdr.msgID ); + // Ensure a handler is found before calling it + if ( ovFuncPtr != 0 ) + { // Call the appropriate override command handling function with the given override parameters + result = (*ovFuncPtr)( payload ); + } + } + } + + // ACK/NAK request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + + + + + /*********************************************************************//** * @brief * The handleTestTemperatureSensorsDataPublishOverrideRequest function handles @@ -2196,7 +2267,7 @@ * @param message a pointer to the message to handle * @return none *************************************************************************/ -void handleTestTemperatureSensorsDataPublishOverrideRequest( MESSAGE_T *message ) +/*void handleTestTemperatureSensorsDataPublishOverrideRequest( MESSAGE_T *message ) { TEST_OVERRIDE_PAYLOAD_T payload; BOOL result = FALSE; @@ -2217,7 +2288,7 @@ // respond to request sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); -} +}*/ /*********************************************************************//** * @brief @@ -2228,7 +2299,7 @@ * @param message a pointer to the message to handle * @return none *************************************************************************/ -void handleTestHeatersDataPublishOverrideRequest( MESSAGE_T *message ) +/*void handleTestHeatersDataPublishOverrideRequest( MESSAGE_T *message ) { TEST_OVERRIDE_PAYLOAD_T payload; BOOL result = FALSE; @@ -2249,7 +2320,7 @@ // respond to request sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); -} +}*/ /*********************************************************************//** * @brief @@ -2260,7 +2331,7 @@ * @param message a pointer to the message to handle * @return none *************************************************************************/ -void handleTestLoadCellDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ) +/*void handleTestLoadCellDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ) { TEST_OVERRIDE_PAYLOAD_T payload; BOOL result = FALSE; @@ -2281,7 +2352,7 @@ // respond to request sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); -} +}*/ /*********************************************************************//** * @brief Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -re47489aaf3c818c6f438434ff6b2cf1cafc4210c -r9e5e0295b749e0cfb6017338fea63e6e4086e57b --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision e47489aaf3c818c6f438434ff6b2cf1cafc4210c) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 9e5e0295b749e0cfb6017338fea63e6e4086e57b) @@ -204,6 +204,7 @@ void handleTesterLogInRequest( MESSAGE_T *message ); BOOL isTestingActivated( void ); void setTesterStatusToLoggedOut( void ); +void handleTestOverrideCommand( MESSAGE_T *message ); // MSG_ID_DG_ALARM_STATE_OVERRIDE void handleTestAlarmStateOverrideRequest( MESSAGE_T *message );