Index: firmware/App/Monitors/Level.c =================================================================== diff -u -r323024b3c7b988f4da87d3e5ef54f395db1142f8 -r37d6f3341f62349589f63975779c0df952c0cfd4 --- firmware/App/Monitors/Level.c (.../Level.c) (revision 323024b3c7b988f4da87d3e5ef54f395db1142f8) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision 37d6f3341f62349589f63975779c0df952c0cfd4) @@ -28,7 +28,7 @@ */ // ********** private definitions ********** -#define LEVEL_SENSOR_LIQUID 0U ///< Level sensor digital low value (0 = liquid, 1 = no liquid). +#define LEVEL_SENSOR_LIQUID 0U ///< Level sensor digital low value (0 = liquid is detected, 1 = no liquid). #define FPGA_B1_HW_LEVEL_LOW 5 ///< Floater low level status for Beta 1.0 #define FPGA_B1_HW_LEVEL_MEDIUM 4 ///< Floater medium level status for Beta 1.0 #define FPGA_B1_HW_LEVEL_HIGH 6 ///< Floater high level status for Beta 1.0 @@ -242,7 +242,8 @@ { U32 stat = 0; - if ( levelId < LAST_LEVEL ) + // level id should include the last level + if ( levelId <= LAST_LEVEL ) { // Assume there is no override stat = status[ levelId ].data; @@ -274,7 +275,7 @@ { U32 stat = 0; - if ( levelId >= FIRST_FLOAT && levelId < LAST_FLOAT ) + if ( levelId >= FIRST_FLOAT && levelId <= LAST_FLOAT ) { // Assume there is no override stat = status[ levelId ].data; @@ -590,7 +591,7 @@ * The testLevelStatusOverride function sets the override status * for a specific level sensor. * @details \b Inputs: none - * @details \b Outputs: levelStatus + * @details \b Outputs: status * @param message Override message from Dialin which includes an ID of * the level sensor to override and the state to override the level sensor to. * @return TRUE if override successful, FALSE if not @@ -604,6 +605,32 @@ /*********************************************************************//** * @brief + * The testFloaterLevelStatusOverride function sets the override status + * for a specific floater level sensor. + * @details \b Inputs: none + * @details \b Outputs: status + * @param message Override message from Dialin which includes an ID of + * the level sensor to override and the state to override the level sensor to. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ + +BOOL testDDFloaterLevelStateOverride( MESSAGE_T *message ) +{ + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + + BOOL result = FALSE; + OVERRIDE_TYPE_T ovType = getOverrideArrayPayloadFromMessage( message, &payload ); + + if ( ( payload.index >= D6_LEVL ) && ( payload.index <= D6_LEVL ) ) + { + BOOL result = u32ArrayOverride( message, &status[0], D6_LEVL, 0, NUM_OF_LVL_STATES -1 ); + } + + return result; +} + +/*********************************************************************//** + * @brief * The testFPLevelsDataPublishIntervalOverride function overrides the Level * data publish interval. * @details \b Inputs: levelsDataPublishInterval @@ -629,15 +656,16 @@ * override the floater level sensor to. * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testFPLevelStateOverride( MESSAGE_T *message ) +BOOL testFPFloaterLevelStateOverride( MESSAGE_T *message ) { - BOOL result = FALSE; TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + + BOOL result = FALSE; OVERRIDE_TYPE_T ovType = getOverrideArrayPayloadFromMessage( message, &payload ); if ( ( payload.index >= P25_LEVL ) && ( payload.index <= P25_LEVL ) ) { - BOOL result = u32Override( message, &status[0], 0, NUM_OF_LVL_STATES -1 ); + BOOL result = u32ArrayOverride( message, &status[ 0 ], P25_LEVL, 0, NUM_OF_LVL_STATES -1 ); } return result;