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: mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP
Fork of SystemManagement by
Diff: serviceCAN/serviceCAN.cpp
- Revision:
- 34:18bcf276d3bf
- Parent:
- 33:6bc82b6b62e5
- Child:
- 35:9337ac9f4e1b
--- a/serviceCAN/serviceCAN.cpp Tue Jan 06 20:45:26 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-#include "serviceCAN.h"
-#include "CAN_RxIDs.h"
-
-bool canbus::serviceCAN(CANMessage* fromXbee)
-{
- CANMessage msg;
- if (fromXbee != NULL) {
- memcpy((void*)&msg, (void*)fromXbee, sizeof(CANMessage));
- } else {
- if (!can.rxRead(msg)) return false;
- }
-
- 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] & (1<<3|1<<4|1<<5)) == (1<<3|1<<4|1<<5)) { // AIRs closed? 1<<3=posAIR, 1<<4=negAIR, 1<<5=tractiveEnable signal
- 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;
- case STEERING_RESET_ID:
- NVIC_SystemReset();
- break;
- default:
- break;
- }
-
- return true;
-
-}
-// Check for incoming messages from the xbees
-bool canbus::receiveMsgXbee()
-{
- CANMessage msg;
- if (xbeeRelay.receive(msg)) { // Incoming CAN message string received
- if (!can.txWrite(msg)) data.canFault = true; // Send it out on the CAN bus
- serviceCAN(&msg); // Send it into the local serviceCAN routine
- return true;
- } else return false;
-}
\ No newline at end of file
