System Management code
Dependencies: mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP
Fork of SystemManagement by
inCommands/inMacros.h
- Committer:
- pspatel321
- Date:
- 2015-02-11
- Revision:
- 39:ddf38df9699e
- Parent:
- 38:8efacce315ae
File content as of revision 39:ddf38df9699e:
#ifndef INMACROS_H #define INMACROS_H /*************** Serial String Input ****************/ // Compare string to a word in the serial input, shorthand #define CMP(w, string) if (!strcasecmp(word[w-1], string)) // Macro linking a serial string to a change function, 2 word command #define CHANGE_VAR(STR, NAME) \ CMP(1, STR) { \ float f = strtof(word[1], &next); \ if (*next == 0) { \ if (param->change_##NAME(f)) { \ op->profileModded=true; \ parsed=true; \ } \ } \ } /*************** CAN Message Profile Out ***************/ #include "outMacros.h" // Send out an item from the profile #define CAN_PROFILE(DATA, ID) \ SEND_CAN_SINGLE(param->DATA, ID); // Replies for commands that do not return data #define CAN_SUCCESS \ msg.data[0]=1; \ SEND_CAN(1, msg.id) \ return 1; #define CAN_FAIL \ msg.data[0]=0; \ SEND_CAN(1, msg.id) \ return 0; /*********************** CAN Bus Input ******************************/ template <class Type> Type CAN_EXTRACT(Type type, CANMessage& msg) { return *((Type*)((void*)(&msg.data[0]))); } #define CAN_CHANGE(NAME, ID) \ if (msg.id == ID) { \ if (msg.len == sizeof(param->NAME)) { \ if (param->change_##NAME(CAN_EXTRACT(param->NAME, msg))) { \ op->profileModded=true; \ parsed = true; \ } \ } \ CAN_PROFILE(NAME, ID) \ } #endif