Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: net lpc1768 crypto clock web fram log
comms.c
00001 #include <stdint.h> 00002 00003 #include "can.h" 00004 #include "mstimer.h" 00005 #include "log.h" 00006 #include "comms.h" 00007 00008 #define CAN_ID_BATTERY 0x100 00009 #define CAN_ID_COUNTED_AMP_SECONDS 0x00 00010 #define CAN_ID_COUNTED_ERROR_PERCENT 0x01 00011 #define CAN_ID_MA 0x02 00012 #define CAN_ID_OUTPUT_SETPOINT 0x03 00013 #define CAN_ID_OUTPUT_STATE 0x04 00014 #define CAN_ID_CHARGE_ENABLED 0x05 00015 #define CAN_ID_DISCHARGE_ENABLED 0x06 00016 #define CAN_ID_TEMPERATURE_TENTHS 0x07 00017 #define CAN_ID_HEATER_SET_POINT 0x08 00018 #define CAN_ID_HEATER_OUTPUT 0x09 00019 #define CAN_ID_VOLTAGE 0x0A 00020 #define CAN_ID_MEASURED_SOC_PERCENT 0x0B 00021 #define CAN_ID_MEASURED_SOC_ERROR 0x0C 00022 #define CAN_ID_CAPACITY_AUTO_UPDATE 0x0D 00023 00024 00025 static uint32_t _batteryCountedCapacity = 0; 00026 static uint8_t _batteryCountedError = 0; 00027 static int32_t _batteryCurrentMa = 0; 00028 static uint8_t _batteryCapacitySetPointPercent = 0; 00029 static char _batteryOutputState = ' '; 00030 static char _batteryChargeEnabled = 0; 00031 static char _batteryDischargeEnabled = 0; 00032 static int16_t _batteryTemperatureTenths = 0; 00033 static int16_t _batteryTemperatureSetPoint = 0; 00034 static uint8_t _batteryHeaterOutputPercent = 0; 00035 static int16_t _batteryVoltageMv = 0; 00036 static uint8_t _batteryMeasuredPercent = 0; 00037 static uint8_t _batteryMeasuredError = 0; 00038 static char _batteryCapacityAutoUpdate = 0; 00039 00040 uint32_t BatteryGetCountedCapacity (){ return _batteryCountedCapacity; } 00041 uint8_t BatteryGetCountedError (){ return _batteryCountedError; } 00042 int32_t BatteryGetCurrentMa (){ return _batteryCurrentMa; } 00043 uint8_t BatteryGetCapacitySetPointPercent (){ return _batteryCapacitySetPointPercent; } 00044 char BatteryGetOutputState (){ return _batteryOutputState; } 00045 char BatteryGetChargeEnabled (){ return _batteryChargeEnabled; } 00046 char BatteryGetDischargeEnabled (){ return _batteryDischargeEnabled; } 00047 int16_t BatteryGetTemperatureTenths (){ return _batteryTemperatureTenths; } 00048 int16_t BatteryGetTemperatureSetPoint (){ return _batteryTemperatureSetPoint; } 00049 uint8_t BatteryGetHeaterOutputPercent (){ return _batteryHeaterOutputPercent; } 00050 int16_t BatteryGetVoltageMv (){ return _batteryVoltageMv; } 00051 uint8_t BatteryGetMeasuredPercent (){ return _batteryMeasuredPercent; } 00052 uint8_t BatteryGetMeasuredError (){ return _batteryMeasuredError; } 00053 char BatteryGetCapacityAutoUpdate (){ return _batteryCapacityAutoUpdate; } 00054 00055 void BatterySetCountedCapacity (uint32_t value){ _batteryCountedCapacity = value; CanSend(CAN_ID_BATTERY + CAN_ID_COUNTED_AMP_SECONDS , 4, value, 0);} 00056 void BatterySetCountedError (uint8_t value){ _batteryCountedError = value; CanSend(CAN_ID_BATTERY + CAN_ID_COUNTED_ERROR_PERCENT, 1, value, 0);} 00057 void BatterySetCurrentMa (int32_t value){ _batteryCurrentMa = value; CanSend(CAN_ID_BATTERY + CAN_ID_MA , 4, value, 0);} 00058 void BatterySetCapacitySetPointPercent(uint8_t value){ _batteryCapacitySetPointPercent = value; CanSend(CAN_ID_BATTERY + CAN_ID_OUTPUT_SETPOINT , 1, value, 0);} 00059 void BatterySetOutputState (char value){ _batteryOutputState = value; CanSend(CAN_ID_BATTERY + CAN_ID_OUTPUT_STATE , 1, value, 0);} 00060 void BatterySetChargeEnabled (char value){ _batteryChargeEnabled = value; CanSend(CAN_ID_BATTERY + CAN_ID_CHARGE_ENABLED , 1, value, 0);} 00061 void BatterySetDischargeEnabled (char value){ _batteryDischargeEnabled = value; CanSend(CAN_ID_BATTERY + CAN_ID_DISCHARGE_ENABLED , 1, value, 0);} 00062 void BatterySetTemperatureSetPoint (int16_t value){ _batteryTemperatureSetPoint = value; CanSend(CAN_ID_BATTERY + CAN_ID_HEATER_SET_POINT , 2, value, 0);} 00063 void BatterySetCapacityAutoUpdate (char value){ _batteryCapacityAutoUpdate = value; CanSend(CAN_ID_BATTERY + CAN_ID_CAPACITY_AUTO_UPDATE , 1, value, 0);} 00064 00065 static void receive(uint16_t id, int length, uint32_t dataA, uint32_t dataB) 00066 { 00067 switch(id) 00068 { 00069 case CAN_ID_BATTERY + CAN_ID_COUNTED_AMP_SECONDS: _batteryCountedCapacity = (uint32_t)dataA; break; 00070 case CAN_ID_BATTERY + CAN_ID_COUNTED_ERROR_PERCENT: _batteryCountedError = ( uint8_t)dataA; break; 00071 case CAN_ID_BATTERY + CAN_ID_MA: _batteryCurrentMa = ( int32_t)dataA; break; 00072 case CAN_ID_BATTERY + CAN_ID_OUTPUT_SETPOINT: _batteryCapacitySetPointPercent = ( uint8_t)dataA; break; 00073 case CAN_ID_BATTERY + CAN_ID_OUTPUT_STATE: _batteryOutputState = ( char)dataA; break; 00074 case CAN_ID_BATTERY + CAN_ID_CHARGE_ENABLED: _batteryChargeEnabled = ( char)dataA; break; 00075 case CAN_ID_BATTERY + CAN_ID_DISCHARGE_ENABLED: _batteryDischargeEnabled = ( char)dataA; break; 00076 case CAN_ID_BATTERY + CAN_ID_TEMPERATURE_TENTHS: _batteryTemperatureTenths = ( int16_t)dataA; break; 00077 case CAN_ID_BATTERY + CAN_ID_HEATER_SET_POINT: _batteryTemperatureSetPoint = ( int16_t)dataA; break; 00078 case CAN_ID_BATTERY + CAN_ID_HEATER_OUTPUT: _batteryHeaterOutputPercent = ( uint8_t)dataA; break; 00079 case CAN_ID_BATTERY + CAN_ID_VOLTAGE: _batteryVoltageMv = ( int16_t)dataA; break; 00080 case CAN_ID_BATTERY + CAN_ID_MEASURED_SOC_PERCENT: _batteryMeasuredPercent = ( uint8_t)dataA; break; 00081 case CAN_ID_BATTERY + CAN_ID_MEASURED_SOC_ERROR: _batteryMeasuredError = ( uint8_t)dataA; break; 00082 case CAN_ID_BATTERY + CAN_ID_CAPACITY_AUTO_UPDATE: _batteryCapacityAutoUpdate = ( char)dataA; break; 00083 default: 00084 LogTimeF("Unknown CAN message id %03X received containing %d bytes: %0*X\r\n", id, length, length*2, dataA); 00085 break; 00086 } 00087 } 00088 void CommsInit() 00089 { 00090 CanReceive = &receive; 00091 } 00092 void CommsMain() 00093 { 00094 }
Generated on Tue Jul 12 2022 21:42:34 by
1.7.2