changed to be compatible with struct
Fork of dataComm_Brad by
dataComm.h@0:f0dc2775ec68, 2015-03-20 (annotated)
- Committer:
- mzling
- Date:
- Fri Mar 20 20:25:34 2015 +0000
- Revision:
- 0:f0dc2775ec68
- Child:
- 1:ad39c297a768
Changed processing/checking functions to work with SPI
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mzling | 0:f0dc2775ec68 | 1 | #ifndef DATACOMM_H |
mzling | 0:f0dc2775ec68 | 2 | #define DATACOMM_H |
mzling | 0:f0dc2775ec68 | 3 | |
mzling | 0:f0dc2775ec68 | 4 | #include <map> |
mzling | 0:f0dc2775ec68 | 5 | #include <string> |
mzling | 0:f0dc2775ec68 | 6 | |
mzling | 0:f0dc2775ec68 | 7 | #include "mbed.h" |
mzling | 0:f0dc2775ec68 | 8 | //#include "MODSERIAL.h" |
mzling | 0:f0dc2775ec68 | 9 | /** |
mzling | 0:f0dc2775ec68 | 10 | * @file dataComm.h |
mzling | 0:f0dc2775ec68 | 11 | * @brief This header file describes dataComm, an object that receives and processes messages through Bluetooth. |
mzling | 0:f0dc2775ec68 | 12 | * @author Michael Ling |
mzling | 0:f0dc2775ec68 | 13 | * @date 2/4/2015 |
mzling | 0:f0dc2775ec68 | 14 | */ |
mzling | 0:f0dc2775ec68 | 15 | |
mzling | 0:f0dc2775ec68 | 16 | class dataComm |
mzling | 0:f0dc2775ec68 | 17 | { |
mzling | 0:f0dc2775ec68 | 18 | public: |
mzling | 0:f0dc2775ec68 | 19 | dataComm(); |
mzling | 0:f0dc2775ec68 | 20 | |
mzling | 0:f0dc2775ec68 | 21 | bool parity(short c); |
mzling | 0:f0dc2775ec68 | 22 | char* get_checksum(char* b, int len); |
mzling | 0:f0dc2775ec68 | 23 | //void send_error(char errCode); |
mzling | 0:f0dc2775ec68 | 24 | //void setCharge(short level); |
mzling | 0:f0dc2775ec68 | 25 | void set_values(std::map<string, short> newValues); |
mzling | 0:f0dc2775ec68 | 26 | |
mzling | 0:f0dc2775ec68 | 27 | //void send(char* cmd); |
mzling | 0:f0dc2775ec68 | 28 | void send_values(char* paramList); |
mzling | 0:f0dc2775ec68 | 29 | void send_read_only_values(); |
mzling | 0:f0dc2775ec68 | 30 | bool msg_check(char* msg, int len); |
mzling | 0:f0dc2775ec68 | 31 | //void process_read_only(char* message, int len); |
mzling | 0:f0dc2775ec68 | 32 | //void process_read(char* message, int len); |
mzling | 0:f0dc2775ec68 | 33 | //void process_write(short* message, int len); |
mzling | 0:f0dc2775ec68 | 34 | void process_write(short int *message, int len); |
mzling | 0:f0dc2775ec68 | 35 | char *convert_to_char_array(short int *message, int len); |
mzling | 0:f0dc2775ec68 | 36 | //void process(char* message, int len); |
mzling | 0:f0dc2775ec68 | 37 | //void attachment(); |
mzling | 0:f0dc2775ec68 | 38 | int main(); |
mzling | 0:f0dc2775ec68 | 39 | short generic_get(string var); |
mzling | 0:f0dc2775ec68 | 40 | void generic_set(string var, short newval); |
mzling | 0:f0dc2775ec68 | 41 | |
mzling | 0:f0dc2775ec68 | 42 | private: |
mzling | 0:f0dc2775ec68 | 43 | //MODSERIAL _rn42; // serial object to read data coming in |
mzling | 0:f0dc2775ec68 | 44 | //Map containing values of Exo parameters |
mzling | 0:f0dc2775ec68 | 45 | std::map<std::string, short> _paramMap; |
mzling | 0:f0dc2775ec68 | 46 | //Maps parameter indices to param names |
mzling | 0:f0dc2775ec68 | 47 | std::string _indexMap[50]; |
mzling | 0:f0dc2775ec68 | 48 | //Last received MSG |
mzling | 0:f0dc2775ec68 | 49 | char _msg[50]; |
mzling | 0:f0dc2775ec68 | 50 | //Value of Exo parameters, stored locally |
mzling | 0:f0dc2775ec68 | 51 | // _localValues[50]; |
mzling | 0:f0dc2775ec68 | 52 | char _curMsg[50]; |
mzling | 0:f0dc2775ec68 | 53 | int _numVars; |
mzling | 0:f0dc2775ec68 | 54 | //Last sent command |
mzling | 0:f0dc2775ec68 | 55 | char _lastCmd[50]; |
mzling | 0:f0dc2775ec68 | 56 | int _failures; |
mzling | 0:f0dc2775ec68 | 57 | //Readonly Parameters |
mzling | 0:f0dc2775ec68 | 58 | int _numReadOnlyParams; |
mzling | 0:f0dc2775ec68 | 59 | short _readOnlyParams[12]; |
mzling | 0:f0dc2775ec68 | 60 | //Indices where an escape char. is needed |
mzling | 0:f0dc2775ec68 | 61 | int _escapeNeeded[9]; |
mzling | 0:f0dc2775ec68 | 62 | int _escapesNeeded; |
mzling | 0:f0dc2775ec68 | 63 | int _len; |
mzling | 0:f0dc2775ec68 | 64 | int _counter; |
mzling | 0:f0dc2775ec68 | 65 | bool _inMsg; |
mzling | 0:f0dc2775ec68 | 66 | int _data; |
mzling | 0:f0dc2775ec68 | 67 | |
mzling | 0:f0dc2775ec68 | 68 | //START/END bytes, parameter indices |
mzling | 0:f0dc2775ec68 | 69 | static const char START = 0xff; |
mzling | 0:f0dc2775ec68 | 70 | static const char END = 0xfe; |
mzling | 0:f0dc2775ec68 | 71 | static const char KPSTANCE_IND = 0x0; |
mzling | 0:f0dc2775ec68 | 72 | static const char KPSWING_IND = 0x1; |
mzling | 0:f0dc2775ec68 | 73 | static const char KPSTAND_IND = 0x2; |
mzling | 0:f0dc2775ec68 | 74 | static const char KPSIT_IND = 0x3; |
mzling | 0:f0dc2775ec68 | 75 | static const char KPUP_IND = 0x4; |
mzling | 0:f0dc2775ec68 | 76 | static const char KPDOWN_IND = 0x5; |
mzling | 0:f0dc2775ec68 | 77 | static const char KDSTANCE_IND = 0x6; |
mzling | 0:f0dc2775ec68 | 78 | static const char KDSWING_IND = 0x7; |
mzling | 0:f0dc2775ec68 | 79 | static const char KDSTAND_IND = 0x8; |
mzling | 0:f0dc2775ec68 | 80 | static const char KDSIT_IND = 0x9; |
mzling | 0:f0dc2775ec68 | 81 | static const char KDUP_IND = 0xa; |
mzling | 0:f0dc2775ec68 | 82 | static const char KDDOWN_IND = 0xb; |
mzling | 0:f0dc2775ec68 | 83 | static const char STAND_IND = 0xc; |
mzling | 0:f0dc2775ec68 | 84 | static const char SIT_IND = 0xd; |
mzling | 0:f0dc2775ec68 | 85 | static const char BENT_IND = 0xe; |
mzling | 0:f0dc2775ec68 | 86 | static const char FORWARD_IND = 0xf; |
mzling | 0:f0dc2775ec68 | 87 | static const char REAR_IND = 0x10; |
mzling | 0:f0dc2775ec68 | 88 | static const char IMU_IND = 0x11; |
mzling | 0:f0dc2775ec68 | 89 | static const char RETRACT_IND = 0x12; |
mzling | 0:f0dc2775ec68 | 90 | static const char EXTEND_IND = 0x13; |
mzling | 0:f0dc2775ec68 | 91 | static const char LOCK_IND = 0x14; |
mzling | 0:f0dc2775ec68 | 92 | static const char RATE_IND = 0x15; |
mzling | 0:f0dc2775ec68 | 93 | static const char SUASST_IND = 0x16; |
mzling | 0:f0dc2775ec68 | 94 | static const char SUTIME_IND = 0x17; |
mzling | 0:f0dc2775ec68 | 95 | static const char SDASST_IND = 0x18; |
mzling | 0:f0dc2775ec68 | 96 | static const char SDTIME_IND = 0x19; |
mzling | 0:f0dc2775ec68 | 97 | static const char WALK_IND = 0x1a; |
mzling | 0:f0dc2775ec68 | 98 | |
mzling | 0:f0dc2775ec68 | 99 | //Indicates a readonly request |
mzling | 0:f0dc2775ec68 | 100 | static const char READONLY_IND = 0x1f; |
mzling | 0:f0dc2775ec68 | 101 | |
mzling | 0:f0dc2775ec68 | 102 | //Error codes |
mzling | 0:f0dc2775ec68 | 103 | static const char START_ERR = 1; |
mzling | 0:f0dc2775ec68 | 104 | static const char END_ERR = 2; |
mzling | 0:f0dc2775ec68 | 105 | static const char PARITY_ERR = 3; |
mzling | 0:f0dc2775ec68 | 106 | static const char CHECKSUM_ERR = 4; |
mzling | 0:f0dc2775ec68 | 107 | static const char VAR_ERR = 5; |
mzling | 0:f0dc2775ec68 | 108 | static const char DATA_ERR = 6; |
mzling | 0:f0dc2775ec68 | 109 | static const char RW_ERR = 7; |
mzling | 0:f0dc2775ec68 | 110 | |
mzling | 0:f0dc2775ec68 | 111 | }; |
mzling | 0:f0dc2775ec68 | 112 | #endif |