Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r99498a5bab0a1f4c706376feceadc66df6d1c22e -rd36643be8a309f2ee587b5975663e7519b3addf9 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision d36643be8a309f2ee587b5975663e7519b3addf9) @@ -374,4 +374,60 @@ current4thLevelState = state; } + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetOperationMode function will transition to a given operation + * mode if the transition is legal. + * @details \b Inputs: none + * @details \b Outputs: modeRequest[] + * @param message message from Dialin which includes the op mode to + * transition to. + * @return TRUE if request successful, FALSE if not + *************************************************************************/ +BOOL testSetOperationMode( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // Verify message payload length is valid + if ( sizeof( U32 ) == message->hdr.payloadLen ) + { + U32 newMode; + + memcpy( &newMode, message->payload, sizeof( U32 ) ); + if ( (RO_OP_MODE_T)newMode < NUM_OF_RO_MODES ) + { + RO_OP_MODE_T reqMode = (RO_OP_MODE_T)newMode; + + requestNewOperationMode( reqMode ); + result = TRUE; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSetOpModePublishIntervalOverride function sets the override of the + * operation mode publication interval. + * @details \b Inputs: none + * @details \b Outputs: opModePublishInterval + * @param message override message from Dialin which includes the interval + * (in ms) to set the op mode publish to. + * @return TRUE if override set successful, FALSE if not + *************************************************************************/ +BOOL testSetOpModePublishIntervalOverride( MESSAGE_T *message ) +{ + BOOL result = u32BroadcastIntervalOverride( message, &opModePublishInterval, TASK_GENERAL_INTERVAL ); + + return result; +} + + /**@}*/ Index: firmware/App/Modes/OperationModes.h =================================================================== diff -u -r99498a5bab0a1f4c706376feceadc66df6d1c22e -rd36643be8a309f2ee587b5975663e7519b3addf9 --- firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) +++ firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision d36643be8a309f2ee587b5975663e7519b3addf9) @@ -52,7 +52,10 @@ void setCurrentSubState( U32 subState ); // Set the current substate. void setCurrent4thLevelState( U32 state ); // Set the current 4th level state. +BOOL testSetOperationMode( MESSAGE_T *message ); // Set operation mode override +BOOL testSetOpModePublishIntervalOverride( MESSAGE_T *message ); // Set operation mode publish interval override + /**@}*/ #endif Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r99498a5bab0a1f4c706376feceadc66df6d1c22e -rd36643be8a309f2ee587b5975663e7519b3addf9 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision d36643be8a309f2ee587b5975663e7519b3addf9) @@ -96,6 +96,8 @@ { MSG_ID_FP_TEMPERATURE_OVERRIDE_REQUEST, &testMeasuredTemperatureOverride }, { MSG_ID_DD_FP_START_STOP_CMD_REQUEST, &handleGenerateWaterRequestMsg }, { MSG_ID_FP_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPreGenWaterDataPublishIntervalOverride }, +{ MSG_ID_FP_SET_OPERATION_MODE_REQUEST, &testSetOperationMode }, +{ MSG_ID_FP_TEMPERATURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testTemperatureSensorsDataPublishIntervalOverride }, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T))