fs and ftg working. bent forward not working
Fork of dataComm by
dataComm.h@6:502959ea39e4, 2015-05-11 (annotated)
- Committer:
- mzling
- Date:
- Mon May 11 21:46:44 2015 +0000
- Revision:
- 6:502959ea39e4
- Parent:
- 4:86d9e33652b6
- Child:
- 10:d245feb52be2
Added setters/getters for gait params
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 | 6:502959ea39e4 | 11 | * shares many functions with BluetoothComm on the controlbed |
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 set_values(std::map<string, short> newValues); |
mzling | 4:86d9e33652b6 | 24 | |
mzling | 2:53547eb587fb | 25 | |
mzling | 0:f0dc2775ec68 | 26 | void send_values(char* paramList); |
mzling | 0:f0dc2775ec68 | 27 | void send_read_only_values(); |
mzling | 0:f0dc2775ec68 | 28 | bool msg_check(char* msg, int len); |
mzling | 0:f0dc2775ec68 | 29 | void process_write(short int *message, int len); |
mzling | 0:f0dc2775ec68 | 30 | int main(); |
mzling | 0:f0dc2775ec68 | 31 | short generic_get(string var); |
mzling | 0:f0dc2775ec68 | 32 | void generic_set(string var, short newval); |
mzling | 4:86d9e33652b6 | 33 | |
mzling | 0:f0dc2775ec68 | 34 | private: |
mzling | 4:86d9e33652b6 | 35 | |
mzling | 0:f0dc2775ec68 | 36 | //Map containing values of Exo parameters |
mzling | 0:f0dc2775ec68 | 37 | std::map<std::string, short> _paramMap; |
mzling | 0:f0dc2775ec68 | 38 | //Maps parameter indices to param names |
mzling | 0:f0dc2775ec68 | 39 | std::string _indexMap[50]; |
mzling | 0:f0dc2775ec68 | 40 | //Last received MSG |
mzling | 0:f0dc2775ec68 | 41 | char _msg[50]; |
mzling | 2:53547eb587fb | 42 | |
mzling | 0:f0dc2775ec68 | 43 | char _curMsg[50]; |
mzling | 0:f0dc2775ec68 | 44 | int _numVars; |
mzling | 0:f0dc2775ec68 | 45 | //Last sent command |
mzling | 0:f0dc2775ec68 | 46 | char _lastCmd[50]; |
mzling | 0:f0dc2775ec68 | 47 | int _failures; |
mzling | 0:f0dc2775ec68 | 48 | //Readonly Parameters |
mzling | 0:f0dc2775ec68 | 49 | int _numReadOnlyParams; |
mzling | 0:f0dc2775ec68 | 50 | short _readOnlyParams[12]; |
mzling | 0:f0dc2775ec68 | 51 | //Indices where an escape char. is needed |
mzling | 0:f0dc2775ec68 | 52 | int _escapeNeeded[9]; |
mzling | 0:f0dc2775ec68 | 53 | int _escapesNeeded; |
mzling | 0:f0dc2775ec68 | 54 | int _len; |
mzling | 0:f0dc2775ec68 | 55 | int _counter; |
mzling | 0:f0dc2775ec68 | 56 | bool _inMsg; |
mzling | 0:f0dc2775ec68 | 57 | int _data; |
mzling | 4:86d9e33652b6 | 58 | |
mzling | 0:f0dc2775ec68 | 59 | //START/END bytes, parameter indices |
mzling | 0:f0dc2775ec68 | 60 | static const char START = 0xff; |
mzling | 0:f0dc2775ec68 | 61 | static const char END = 0xfe; |
mzling | 0:f0dc2775ec68 | 62 | static const char KPSTANCE_IND = 0x0; |
mzling | 0:f0dc2775ec68 | 63 | static const char KPSWING_IND = 0x1; |
mzling | 0:f0dc2775ec68 | 64 | static const char KPSTAND_IND = 0x2; |
mzling | 0:f0dc2775ec68 | 65 | static const char KPSIT_IND = 0x3; |
mzling | 0:f0dc2775ec68 | 66 | static const char KPUP_IND = 0x4; |
mzling | 0:f0dc2775ec68 | 67 | static const char KPDOWN_IND = 0x5; |
mzling | 0:f0dc2775ec68 | 68 | static const char KDSTANCE_IND = 0x6; |
mzling | 0:f0dc2775ec68 | 69 | static const char KDSWING_IND = 0x7; |
mzling | 0:f0dc2775ec68 | 70 | static const char KDSTAND_IND = 0x8; |
mzling | 0:f0dc2775ec68 | 71 | static const char KDSIT_IND = 0x9; |
mzling | 0:f0dc2775ec68 | 72 | static const char KDUP_IND = 0xa; |
mzling | 0:f0dc2775ec68 | 73 | static const char KDDOWN_IND = 0xb; |
mzling | 0:f0dc2775ec68 | 74 | static const char STAND_IND = 0xc; |
mzling | 0:f0dc2775ec68 | 75 | static const char SIT_IND = 0xd; |
mzling | 0:f0dc2775ec68 | 76 | static const char BENT_IND = 0xe; |
mzling | 0:f0dc2775ec68 | 77 | static const char FORWARD_IND = 0xf; |
mzling | 0:f0dc2775ec68 | 78 | static const char REAR_IND = 0x10; |
mzling | 0:f0dc2775ec68 | 79 | static const char IMU_IND = 0x11; |
mzling | 0:f0dc2775ec68 | 80 | static const char RETRACT_IND = 0x12; |
mzling | 0:f0dc2775ec68 | 81 | static const char EXTEND_IND = 0x13; |
mzling | 0:f0dc2775ec68 | 82 | static const char LOCK_IND = 0x14; |
mzling | 0:f0dc2775ec68 | 83 | static const char RATE_IND = 0x15; |
mzling | 0:f0dc2775ec68 | 84 | static const char SUASST_IND = 0x16; |
mzling | 0:f0dc2775ec68 | 85 | static const char SUTIME_IND = 0x17; |
mzling | 0:f0dc2775ec68 | 86 | static const char SDASST_IND = 0x18; |
mzling | 0:f0dc2775ec68 | 87 | static const char SDTIME_IND = 0x19; |
mzling | 0:f0dc2775ec68 | 88 | static const char WALK_IND = 0x1a; |
mzling | 3:2091104c9b61 | 89 | static const char STEPLEN_IND = 0x1b; |
mzling | 3:2091104c9b61 | 90 | static const char STEPTIME_IND = 0x1c; |
mzling | 6:502959ea39e4 | 91 | static const char HIPFLEX_IND = 0x1d; |
mzling | 6:502959ea39e4 | 92 | static const char PHASESHIFT_IND = 0x1e; |
mzling | 6:502959ea39e4 | 93 | static const char MAXAMP_IND = 0x1f; |
mzling | 6:502959ea39e4 | 94 | static const char STANCESTART_IND = 0x20; |
mzling | 6:502959ea39e4 | 95 | static const char STANCEEND_IND = 0x21; |
mzling | 4:86d9e33652b6 | 96 | |
mzling | 6:502959ea39e4 | 97 | |
mzling | 6:502959ea39e4 | 98 | //MIN and MAX values for the various parameters |
mzling | 1:ad39c297a768 | 99 | static const float MIN_STAND = -15; |
mzling | 1:ad39c297a768 | 100 | static const float MAX_STAND = 15; |
mzling | 1:ad39c297a768 | 101 | static const float MIN_SIT = 70; |
mzling | 1:ad39c297a768 | 102 | static const float MAX_SIT = 110; |
mzling | 1:ad39c297a768 | 103 | static const float MIN_BENT = 90; |
mzling | 1:ad39c297a768 | 104 | static const float MAX_BENT = 140; |
mzling | 1:ad39c297a768 | 105 | static const float MIN_SUASST = -.17; |
mzling | 1:ad39c297a768 | 106 | static const float MAX_SUASST = -.11; |
mzling | 1:ad39c297a768 | 107 | static const float MIN_SDASST = -.03; |
mzling | 1:ad39c297a768 | 108 | static const float MAX_SDASST = -.02; |
mzling | 1:ad39c297a768 | 109 | static const float MIN_SDTIME = 3.2; |
mzling | 1:ad39c297a768 | 110 | static const float MAX_SDTIME = 4.8; |
mzling | 6:502959ea39e4 | 111 | static const float MIN_WALK = 0; |
mzling | 6:502959ea39e4 | 112 | static const float MAX_WALK = 10; |
mzling | 6:502959ea39e4 | 113 | static const float MIN_STEPTIME = 700; |
mzling | 6:502959ea39e4 | 114 | static const float MAX_STEPTIME = 1300; |
mzling | 6:502959ea39e4 | 115 | static const float MIN_STANDUPTIME = 0.5; |
mzling | 6:502959ea39e4 | 116 | static const float MAX_STANDUPTIME = 1.5; |
mzling | 6:502959ea39e4 | 117 | |
mzling | 6:502959ea39e4 | 118 | static const float MIN_STEPLEN = -10; |
mzling | 6:502959ea39e4 | 119 | static const float MAX_STEPLEN = 10; |
mzling | 6:502959ea39e4 | 120 | static const float MIN_HIPFLEX = 20; |
mzling | 6:502959ea39e4 | 121 | static const float MAX_HIPFLEX = 40; |
mzling | 6:502959ea39e4 | 122 | static const float MIN_PHASESHIFT = 400; |
mzling | 6:502959ea39e4 | 123 | static const float MAX_PHASESHIFT = 600; |
mzling | 4:86d9e33652b6 | 124 | |
mzling | 0:f0dc2775ec68 | 125 | //Indicates a readonly request |
mzling | 3:2091104c9b61 | 126 | static const char READONLY_IND = 0x3f; |
mzling | 4:86d9e33652b6 | 127 | |
mzling | 0:f0dc2775ec68 | 128 | //Error codes |
mzling | 0:f0dc2775ec68 | 129 | static const char START_ERR = 1; |
mzling | 0:f0dc2775ec68 | 130 | static const char END_ERR = 2; |
mzling | 0:f0dc2775ec68 | 131 | static const char PARITY_ERR = 3; |
mzling | 0:f0dc2775ec68 | 132 | static const char CHECKSUM_ERR = 4; |
mzling | 0:f0dc2775ec68 | 133 | static const char VAR_ERR = 5; |
mzling | 0:f0dc2775ec68 | 134 | static const char DATA_ERR = 6; |
mzling | 0:f0dc2775ec68 | 135 | static const char RW_ERR = 7; |
mzling | 4:86d9e33652b6 | 136 | |
mzling | 0:f0dc2775ec68 | 137 | }; |
mzling | 0:f0dc2775ec68 | 138 | #endif |