Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r8f5feed92f41a476d5656038bcdfe884e17bd593 -r699c4f96ab672fb9db9ac218a5a00358dc68c2c6 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 8f5feed92f41a476d5656038bcdfe884e17bd593) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 699c4f96ab672fb9db9ac218a5a00358dc68c2c6) @@ -327,16 +327,19 @@ *************************************************************************/ F32 getTemperatureValue ( U32 sensor ) { - F32 temperature; + F32 temperature = 0.0; - if ( temperatureValues [ sensor ].override == OVERRIDE_KEY ) + if ( sensor < NUM_OF_TEMPERATURE_SENSORS ) { - temperature = temperatureValues [ sensor ].ovData; + if ( temperatureValues [ sensor ].override == OVERRIDE_KEY ) + { + temperature = temperatureValues [ sensor ].ovData; + } + else + { + temperature = temperatureValues [ sensor ].data; + } } - else - { - temperature = temperatureValues [ sensor ].data; - } return temperature; } @@ -614,7 +617,8 @@ // TODo Remove F32 avgADCReads [ NUM_OF_TEMPERATURE_SENSORS ]; //TODO remove U08 i; - for ( i = 0; i < sizeof(avgADCReads); i++ ) + + for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) { U32 avgADC = avgADCReads [ i ]; @@ -647,9 +651,9 @@ // Check if all the sensors are within a certain degree c // from each other - for ( i = 0; i < sizeof(temperatureValues); i++ ) + for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) { - for ( j = 0; j < sizeof(temperatureValues); j++ ) + for ( j = 0; j < NUM_OF_TEMPERATURE_SENSORS; j++ ) { if ( i != j ) { Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r8f5feed92f41a476d5656038bcdfe884e17bd593 -r699c4f96ab672fb9db9ac218a5a00358dc68c2c6 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 8f5feed92f41a476d5656038bcdfe884e17bd593) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 699c4f96ab672fb9db9ac218a5a00358dc68c2c6) @@ -49,7 +49,7 @@ static BOOL checkValveStateName( VALVES_T valve, VALVE_STATE_NAMES_T valveStateName ); ///< check validity of requested valve state name for given valve static U32 convertValveStateNameToValveState(VALVE_STATE_NAMES_T valveStateName); ///< Convert valve state name to de-/energized valve state -static U16 fromU32ArrayToU16( OVERRIDE_U32_T array[ NUM_OF_VALVES ] ); ///< convert array of U32 to U16 for statesValves preparation +static U16 fromU32ArrayToU16( void ); ///< convert array of U32 to U16 for statesValves preparation static void publishValvesStates( void ); static DATA_GET_PROTOTYPE( U32, getPublishValvesStatesInterval ); @@ -252,7 +252,7 @@ * Outputs : none * @return converted U16 bit field for currently commanded valve states *************************************************************************/ -U16 fromU32ArrayToU16( OVERRIDE_U32_T array[ NUM_OF_VALVES ] ) +U16 fromU32ArrayToU16( void ) { U16 result = ALL_VALVES_DEENERGIZED; // start result flag as all valves de-energized U32 i; @@ -351,11 +351,18 @@ BOOL setValveState( VALVES_T valveID, VALVE_STATE_NAMES_T valveStateName ) { BOOL result = FALSE; // initialize result flag to FALSE - - if ( checkValveStateName ( valveID, valveStateName ) ) - { - valveStates[ valveID ].data = convertValveStateNameToValveState( valveStateName ); - result = TRUE; + + if ( valveID < NUM_OF_VALVES ) + { + if ( checkValveStateName ( valveID, valveStateName ) ) + { + valveStates[ valveID ].data = convertValveStateNameToValveState( valveStateName ); + result = TRUE; + } + } + else + { + // TODO - s/w fault } return result; Index: firmware/App/Drivers/InternalADC.c =================================================================== diff -u -r8f5feed92f41a476d5656038bcdfe884e17bd593 -r699c4f96ab672fb9db9ac218a5a00358dc68c2c6 --- firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 8f5feed92f41a476d5656038bcdfe884e17bd593) +++ firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 699c4f96ab672fb9db9ac218a5a00358dc68c2c6) @@ -144,7 +144,7 @@ // process readings from last conversion for ( i = 0; i < adcRawReadingsCount; i++ ) { - U32 ch = adcChannelNum2ChannelId[ adcRawReadings[ i ].id ]; + U32 ch = adcChannelNum2ChannelId[ adcRawReadings[ i ].id ]; // TODO - need to range check .id? adcReadingsTotals[ ch ] -= adcReadings[ ch ][ adcReadingsIdx[ ch ] ]; adcReadings[ ch ][ adcReadingsIdx[ ch ] ] = adcRawReadings[i].value; Index: firmware/App/Services/PIControllers.c =================================================================== diff -u -r8f5feed92f41a476d5656038bcdfe884e17bd593 -r699c4f96ab672fb9db9ac218a5a00358dc68c2c6 --- firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 8f5feed92f41a476d5656038bcdfe884e17bd593) +++ firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 699c4f96ab672fb9db9ac218a5a00358dc68c2c6) @@ -55,7 +55,6 @@ /// PI Controllers -- initial configurations. static PI_CONTROLLER_T piControllers[ NUM_OF_PI_CONTROLLERS_IDS ] = { // Kp Ki uMax uMin ref meas err esw esum ctrl - { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, // PI_CONTROLLER_ID_RO_PUMP { 0.0, 0.0, 0.89, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, // PI_CONTROLLER_ID_PRIMARY_HEATER { 0.0, 0.0, 0.50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } // PI_CONTROLLER_ID_TRIMMER_HEATER Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -rdd70052b03eeb284223a4aade8567a4acec63efb -r699c4f96ab672fb9db9ac218a5a00358dc68c2c6 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision dd70052b03eeb284223a4aade8567a4acec63efb) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 699c4f96ab672fb9db9ac218a5a00358dc68c2c6) @@ -981,21 +981,23 @@ // find expired messages pending ACK for ( i = 0; i < PENDING_ACK_LIST_SIZE; i++ ) - { + { // pending ACK expired? if ( ( TRUE == pendingAckList[ i ].used ) && ( TRUE == didTimeout( pendingAckList[ i ].timeStamp, MSG_NOT_ACKED_TIMEOUT_MS ) ) ) - { + { // if retries left, reset and resend pending message if ( pendingAckList[ i ].retries > 0 ) { // re-queue message for transmit pendingAckList[ i ].retries--; pendingAckList[ i ].timeStamp = getMSTimerCount(); addToCommBuffer( pendingAckList[ i ].channel, pendingAckList[ i ].msg, pendingAckList[ i ].msgSize ); - } + } + // if no retries left, alarm else { U16 msgID; memcpy( &msgID, &pendingAckList[ i ].msg[ sizeof( U08 ) + sizeof( U16) ], sizeof( U16 ) ); - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CAN_MESSAGE_NOT_ACKED, (U32)msgID ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CAN_MESSAGE_NOT_ACKED, (U32)msgID ); + pendingAckList[ i ].used = FALSE; // take pending message off of list } } }