Index: firmware/App/Drivers/Battery.c =================================================================== diff -u -rc008c3f741ded3d32d9ee307db0879a2db21b9e4 -ra3e085bb1ecb3b7e3f0dc69610b6e783f7db4eef --- firmware/App/Drivers/Battery.c (.../Battery.c) (revision c008c3f741ded3d32d9ee307db0879a2db21b9e4) +++ firmware/App/Drivers/Battery.c (.../Battery.c) (revision a3e085bb1ecb3b7e3f0dc69610b6e783f7db4eef) @@ -152,7 +152,7 @@ static F32 getBatteryRemainingCapacity_mWh( void ); static U32 getBatteryStatus( void ); static U32 getBatteryChargerStatus( void ); -static U32 getI2CStatusRegister( void ); +static U32 getI2CStatusRegister( BOOL resetOverride ); static void setupI2CDriver( void ); static BOOL waitForTxReady( void ); static BOOL waitForRxReady( void ); @@ -222,19 +222,23 @@ /*********************************************************************//** * @brief * The getI2CStatusRegister function returns the I2C status register + * @param reset override on get * @details Inputs: batteryI2CStatusRegister, i2cREG1->STR * @details Outputs: none * @return I2C Interrupt Status. *************************************************************************/ -static U32 getI2CStatusRegister( void ) +static U32 getI2CStatusRegister( BOOL resetOverride ) { U32 result = i2cREG1->STR; if ( OVERRIDE_KEY == batteryI2CStatusRegister.override ) { result = batteryI2CStatusRegister.ovData; - batteryI2CStatusRegister.override = OVERRIDE_RESET; - batteryI2CStatusRegister.ovData = batteryI2CStatusRegister.ovInitData; + if (TRUE == resetOverride ) + { + batteryI2CStatusRegister.override = OVERRIDE_RESET; + batteryI2CStatusRegister.ovData = batteryI2CStatusRegister.ovInitData; + } } return result; @@ -447,7 +451,7 @@ if ( TRUE == waitForAccessReady() ) { - if ( 0 == ( getI2CStatusRegister() & ( (U32)I2C_NACK | (U32)I2C_AL ) ) ) + if ( 0 == ( getI2CStatusRegister( TRUE ) & ( (U32)I2C_NACK | (U32)I2C_AL ) ) ) { result = TRUE; } @@ -723,7 +727,7 @@ batteryStatusData.RemainingCapacity = (U32)getBatteryRemainingCapacity_mWh(); batteryStatusData.BatteryStatus = getBatteryStatus(); batteryStatusData.BatteryChargerStatus = getBatteryChargerStatus(); - batteryStatusData.BatteryI2CStatus = getI2CStatusRegister(); + batteryStatusData.BatteryI2CStatus = getI2CStatusRegister( FALSE ); broadcastData( MSG_ID_HD_BATTERY_STATUS_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&batteryStatusData, sizeof( BATTERY_STATUS_PAYLOAD_T ) ); }