changed to be compatible with struct
Fork of dataComm_Brad by
dataComm.h@4:86d9e33652b6, 2015-04-27 (annotated)
- Committer:
- mzling
- Date:
- Mon Apr 27 21:57:35 2015 +0000
- Revision:
- 4:86d9e33652b6
- Parent:
- 3:2091104c9b61
- Child:
- 6:502959ea39e4
added float-to-short conversion
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 | /** |
mzling | 0:f0dc2775ec68 | 9 | * @file dataComm.h |
mzling | 2:53547eb587fb | 10 | * @brief This header file describes dataComm, an object that receives and processes messages sent to the controlbed via SPI. |
mzling | 0:f0dc2775ec68 | 11 | * @author Michael Ling |
mzling | 0:f0dc2775ec68 | 12 | * @date 2/4/2015 |
mzling | 0:f0dc2775ec68 | 13 | */ |
mzling | 0:f0dc2775ec68 | 14 | |
mzling | 0:f0dc2775ec68 | 15 | class dataComm |
mzling | 0:f0dc2775ec68 | 16 | { |
mzling | 0:f0dc2775ec68 | 17 | public: |
mzling | 0:f0dc2775ec68 | 18 | dataComm(); |
mzling | 0:f0dc2775ec68 | 19 | |
mzling | 0:f0dc2775ec68 | 20 | bool parity(short c); |
mzling | 0:f0dc2775ec68 | 21 | char* get_checksum(char* b, int len); |
mzling | 0:f0dc2775ec68 | 22 | void set_values(std::map<string, short> newValues); |
mzling | 4:86d9e33652b6 | 23 | |
mzling | 2:53547eb587fb | 24 | |
mzling | 0:f0dc2775ec68 | 25 | void send_values(char* paramList); |
mzling | 0:f0dc2775ec68 | 26 | void send_read_only_values(); |
mzling | 0:f0dc2775ec68 | 27 | bool msg_check(char* msg, int len); |
mzling | 0:f0dc2775ec68 | 28 | void process_write(short int *message, int len); |
mzling | 0:f0dc2775ec68 | 29 | int main(); |
mzling | 0:f0dc2775ec68 | 30 | short generic_get(string var); |
mzling | 0:f0dc2775ec68 | 31 | void generic_set(string var, short newval); |
mzling | 4:86d9e33652b6 | 32 | |
mzling | 0:f0dc2775ec68 | 33 | private: |
mzling | 4:86d9e33652b6 | 34 | |
mzling | 0:f0dc2775ec68 | 35 | //Map containing values of Exo parameters |
mzling | 0:f0dc2775ec68 | 36 | std::map<std::string, short> _paramMap; |
mzling | 0:f0dc2775ec68 | 37 | //Maps parameter indices to param names |
mzling | 0:f0dc2775ec68 | 38 | std::string _indexMap[50]; |
mzling | 0:f0dc2775ec68 | 39 | //Last received MSG |
mzling | 0:f0dc2775ec68 | 40 | char _msg[50]; |
mzling | 2:53547eb587fb | 41 | |
mzling | 0:f0dc2775ec68 | 42 | char _curMsg[50]; |
mzling | 0:f0dc2775ec68 | 43 | int _numVars; |
mzling | 0:f0dc2775ec68 | 44 | //Last sent command |
mzling | 0:f0dc2775ec68 | 45 | char _lastCmd[50]; |
mzling | 0:f0dc2775ec68 | 46 | int _failures; |
mzling | 0:f0dc2775ec68 | 47 | //Readonly Parameters |
mzling | 0:f0dc2775ec68 | 48 | int _numReadOnlyParams; |
mzling | 0:f0dc2775ec68 | 49 | short _readOnlyParams[12]; |
mzling | 0:f0dc2775ec68 | 50 | //Indices where an escape char. is needed |
mzling | 0:f0dc2775ec68 | 51 | int _escapeNeeded[9]; |
mzling | 0:f0dc2775ec68 | 52 | int _escapesNeeded; |
mzling | 0:f0dc2775ec68 | 53 | int _len; |
mzling | 0:f0dc2775ec68 | 54 | int _counter; |
mzling | 0:f0dc2775ec68 | 55 | bool _inMsg; |
mzling | 0:f0dc2775ec68 | 56 | int _data; |
mzling | 4:86d9e33652b6 | 57 | |
mzling | 0:f0dc2775ec68 | 58 | //START/END bytes, parameter indices |
mzling | 0:f0dc2775ec68 | 59 | static const char START = 0xff; |
mzling | 0:f0dc2775ec68 | 60 | static const char END = 0xfe; |
mzling | 0:f0dc2775ec68 | 61 | static const char KPSTANCE_IND = 0x0; |
mzling | 0:f0dc2775ec68 | 62 | static const char KPSWING_IND = 0x1; |
mzling | 0:f0dc2775ec68 | 63 | static const char KPSTAND_IND = 0x2; |
mzling | 0:f0dc2775ec68 | 64 | static const char KPSIT_IND = 0x3; |
mzling | 0:f0dc2775ec68 | 65 | static const char KPUP_IND = 0x4; |
mzling | 0:f0dc2775ec68 | 66 | static const char KPDOWN_IND = 0x5; |
mzling | 0:f0dc2775ec68 | 67 | static const char KDSTANCE_IND = 0x6; |
mzling | 0:f0dc2775ec68 | 68 | static const char KDSWING_IND = 0x7; |
mzling | 0:f0dc2775ec68 | 69 | static const char KDSTAND_IND = 0x8; |
mzling | 0:f0dc2775ec68 | 70 | static const char KDSIT_IND = 0x9; |
mzling | 0:f0dc2775ec68 | 71 | static const char KDUP_IND = 0xa; |
mzling | 0:f0dc2775ec68 | 72 | static const char KDDOWN_IND = 0xb; |
mzling | 0:f0dc2775ec68 | 73 | static const char STAND_IND = 0xc; |
mzling | 0:f0dc2775ec68 | 74 | static const char SIT_IND = 0xd; |
mzling | 0:f0dc2775ec68 | 75 | static const char BENT_IND = 0xe; |
mzling | 0:f0dc2775ec68 | 76 | static const char FORWARD_IND = 0xf; |
mzling | 0:f0dc2775ec68 | 77 | static const char REAR_IND = 0x10; |
mzling | 0:f0dc2775ec68 | 78 | static const char IMU_IND = 0x11; |
mzling | 0:f0dc2775ec68 | 79 | static const char RETRACT_IND = 0x12; |
mzling | 0:f0dc2775ec68 | 80 | static const char EXTEND_IND = 0x13; |
mzling | 0:f0dc2775ec68 | 81 | static const char LOCK_IND = 0x14; |
mzling | 0:f0dc2775ec68 | 82 | static const char RATE_IND = 0x15; |
mzling | 0:f0dc2775ec68 | 83 | static const char SUASST_IND = 0x16; |
mzling | 0:f0dc2775ec68 | 84 | static const char SUTIME_IND = 0x17; |
mzling | 0:f0dc2775ec68 | 85 | static const char SDASST_IND = 0x18; |
mzling | 0:f0dc2775ec68 | 86 | static const char SDTIME_IND = 0x19; |
mzling | 0:f0dc2775ec68 | 87 | static const char WALK_IND = 0x1a; |
mzling | 3:2091104c9b61 | 88 | static const char STEPLEN_IND = 0x1b; |
mzling | 3:2091104c9b61 | 89 | static const char STEPTIME_IND = 0x1c; |
mzling | 4:86d9e33652b6 | 90 | static const char MAXAMP_IND = 0x1d; |
mzling | 4:86d9e33652b6 | 91 | static const char STANCESTART_IND = 0x1e; |
mzling | 4:86d9e33652b6 | 92 | static const char STANCEEND_IND = 0x1f; |
mzling | 4:86d9e33652b6 | 93 | |
mzling | 1:ad39c297a768 | 94 | static const float MIN_STAND = -15; |
mzling | 1:ad39c297a768 | 95 | static const float MAX_STAND = 15; |
mzling | 1:ad39c297a768 | 96 | static const float MIN_SIT = 70; |
mzling | 1:ad39c297a768 | 97 | static const float MAX_SIT = 110; |
mzling | 1:ad39c297a768 | 98 | static const float MIN_BENT = 90; |
mzling | 1:ad39c297a768 | 99 | static const float MAX_BENT = 140; |
mzling | 1:ad39c297a768 | 100 | static const float MIN_SUASST = -.17; |
mzling | 1:ad39c297a768 | 101 | static const float MAX_SUASST = -.11; |
mzling | 1:ad39c297a768 | 102 | static const float MIN_SDASST = -.03; |
mzling | 1:ad39c297a768 | 103 | static const float MAX_SDASST = -.02; |
mzling | 1:ad39c297a768 | 104 | static const float MIN_SDTIME = 3.2; |
mzling | 1:ad39c297a768 | 105 | static const float MAX_SDTIME = 4.8; |
mzling | 1:ad39c297a768 | 106 | static const float MIN_WALK = 4.8; |
mzling | 1:ad39c297a768 | 107 | static const float MAX_WALK = 7.2; |
mzling | 4:86d9e33652b6 | 108 | |
mzling | 0:f0dc2775ec68 | 109 | //Indicates a readonly request |
mzling | 3:2091104c9b61 | 110 | static const char READONLY_IND = 0x3f; |
mzling | 4:86d9e33652b6 | 111 | |
mzling | 0:f0dc2775ec68 | 112 | //Error codes |
mzling | 0:f0dc2775ec68 | 113 | static const char START_ERR = 1; |
mzling | 0:f0dc2775ec68 | 114 | static const char END_ERR = 2; |
mzling | 0:f0dc2775ec68 | 115 | static const char PARITY_ERR = 3; |
mzling | 0:f0dc2775ec68 | 116 | static const char CHECKSUM_ERR = 4; |
mzling | 0:f0dc2775ec68 | 117 | static const char VAR_ERR = 5; |
mzling | 0:f0dc2775ec68 | 118 | static const char DATA_ERR = 6; |
mzling | 0:f0dc2775ec68 | 119 | static const char RW_ERR = 7; |
mzling | 4:86d9e33652b6 | 120 | |
mzling | 0:f0dc2775ec68 | 121 | }; |
mzling | 0:f0dc2775ec68 | 122 | #endif |