![](/media/cache/group/underwritten_car_negative.png.50x50_q85.png)
System Management code
Dependencies: mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP
Fork of SystemManagement by
serviceCAN/serviceCAN.cpp
- Committer:
- pspatel321
- Date:
- 2014-11-14
- Revision:
- 31:7eaa5e881b56
- Parent:
- 30:91af74a299e1
- Child:
- 33:6bc82b6b62e5
File content as of revision 31:7eaa5e881b56:
#include "serviceCAN.h" #include "CAN_RxIDs.h" bool canbus::serviceCAN() { CANMessage msg; if (can.rxRead(msg)) { switch (msg.id) { case FAN_CONTROL_ID: if (msg.len != 2*sizeof(float)) break; memcpy((void*)&CANdata.dcdcFan1Duty, &msg.data[0], sizeof(float)); memcpy((void*)&CANdata.dcdcFan2Duty, &msg.data[4], sizeof(float)); dcdc.setPwm(FAN1, CANdata.dcdcFan1Duty); dcdc.setPwm(FAN2, CANdata.dcdcFan2Duty); break; case PUMP_CONTROL_ID: if (msg.len != 2*sizeof(float)) break; memcpy((void*)&CANdata.dcdcPump1Duty, &msg.data[0], sizeof(float)); memcpy((void*)&CANdata.dcdcPump2Duty, &msg.data[4], sizeof(float)); dcdc.setPwm(PUMP1, CANdata.dcdcPump1Duty); dcdc.setPwm(PUMP2, CANdata.dcdcPump2Duty); break; case DCDC_CONTROL_ID: if (msg.len != sizeof(char)) break; if (msg.data[0] == 1) dcdc.set(1); else dcdc.set(0); break; case AMS_RELAYS_ID: if (msg.len != sizeof(char)) break; if ((msg.data[0] & 0xC0) == 0xC0) { CANdata.airsClosed = true; dcdc.set(1); } else { CANdata.airsClosed = false; dcdc.set(0); } break; case GLVBAT_CLEARSOC_ID: if (msg.len != sizeof(float)) break; glvBat.resetToSOC(*((float*)(&msg.data[0]))); break; case GLVBAT_CLEARAH_ID: if (msg.len != sizeof(float)) break; glvBat.resetToAh(*((float*)(&msg.data[0]))); break; case GLVBAT_SETCAPAC_ID: if (msg.len != sizeof(float)) break; glvBat.changeCapacity(*((float*)(&msg.data[0]))); break; default: break; } xbee.receive(msg); return true; } return false; }