Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r48c75a394c56b82886760e9a136b638edecf7572 -r48ca7fd644c67920acc29a80b7af379d0a134d1a --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 48c75a394c56b82886760e9a136b638edecf7572) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 48ca7fd644c67920acc29a80b7af379d0a134d1a) @@ -39,6 +39,13 @@ #define VALVES_STATE_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval ( ms / task time) at which valves states are published on CAN bus. #define DATA_PUBLISH_COUNTER_START_COUNT 50 ///< Data publish counter start count. + +/// Payload record structure for valve open/close request +typedef struct +{ + U32 valveID; ///< ValveID ( valid range 0 to 28 ) + U32 valveState; ///< Valve state ( Open : 0, closed :1) +} VALVE_CMD_PAYLOAD_T; // ********** private data ********** @@ -488,5 +495,41 @@ return result; } + +/*********************************************************************//** + * @brief + * The testValveOpenCloseStateOverride function overrides the value of the + * specified valve with a given value. + * @details \b Inputs: tester logged in + * @details \b Outputs: valveStates[] + * @param message set message from Dialin which includes the valve Id to set + * and the state to set the valves to. + * @return TRUE if set request is successful, FALSE if not + *************************************************************************/ +BOOL testValveOpenCloseStateOverride( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // Verify tester has logged in with TD + if ( TRUE == isTestingActivated() ) + { + // Verify payload length is valid + if ( sizeof( VALVE_CMD_PAYLOAD_T ) == message->hdr.payloadLen ) + { + VALVE_CMD_PAYLOAD_T payload; + + memcpy( &payload, message->payload, sizeof(VALVE_CMD_PAYLOAD_T) ); + + if ( ( (VALVES_T)payload.valveID < NUM_OF_VALVES ) && + ( (VALVE_STATE_NAMES_T)payload.valveState < NUM_OF_VALVE_STATES ) ) + { + setValveState( (VALVES_T)payload.valveID, (VALVE_STATE_NAMES_T)payload.valveState ); + result = TRUE; + } + } + } + + return result; +} /**@}*/