fs and ftg working. bent forward not working

Fork of dataComm by Bradley Perry

Committer:
cashdollar
Date:
Thu Jun 25 22:56:36 2015 +0000
Revision:
15:2acd4990e442
Parent:
10:d245feb52be2
added offset reading from text file;

Who changed what in which revision?

UserRevisionLine numberNew 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 #include "mbed.h"
mzling 0:f0dc2775ec68 7 /**
mzling 0:f0dc2775ec68 8 * @file dataComm.h
mzling 2:53547eb587fb 9 * @brief This header file describes dataComm, an object that receives and processes messages sent to the controlbed via SPI.
mzling 6:502959ea39e4 10 * shares many functions with BluetoothComm on the controlbed
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 6:502959ea39e4 90 static const char HIPFLEX_IND = 0x1d;
mzling 6:502959ea39e4 91 static const char PHASESHIFT_IND = 0x1e;
mzling 6:502959ea39e4 92 static const char MAXAMP_IND = 0x1f;
mzling 6:502959ea39e4 93 static const char STANCESTART_IND = 0x20;
mzling 6:502959ea39e4 94 static const char STANCEEND_IND = 0x21;
mzling 4:86d9e33652b6 95
mzling 6:502959ea39e4 96
mzling 6:502959ea39e4 97 //MIN and MAX values for the various parameters
mzling 1:ad39c297a768 98 static const float MIN_STAND = -15;
mzling 1:ad39c297a768 99 static const float MAX_STAND = 15;
mzling 1:ad39c297a768 100 static const float MIN_SIT = 70;
mzling 1:ad39c297a768 101 static const float MAX_SIT = 110;
mzling 1:ad39c297a768 102 static const float MIN_BENT = 90;
mzling 1:ad39c297a768 103 static const float MAX_BENT = 140;
mzling 1:ad39c297a768 104 static const float MIN_SUASST = -.17;
mzling 1:ad39c297a768 105 static const float MAX_SUASST = -.11;
mzling 1:ad39c297a768 106 static const float MIN_SDASST = -.03;
mzling 1:ad39c297a768 107 static const float MAX_SDASST = -.02;
mzling 1:ad39c297a768 108 static const float MIN_SDTIME = 3.2;
mzling 1:ad39c297a768 109 static const float MAX_SDTIME = 4.8;
mzling 6:502959ea39e4 110 static const float MIN_WALK = 0;
mzling 6:502959ea39e4 111 static const float MAX_WALK = 10;
mzling 6:502959ea39e4 112 static const float MIN_STEPTIME = 700;
mzling 6:502959ea39e4 113 static const float MAX_STEPTIME = 1300;
mzling 6:502959ea39e4 114 static const float MIN_STANDUPTIME = 0.5;
mzling 6:502959ea39e4 115 static const float MAX_STANDUPTIME = 1.5;
mzling 6:502959ea39e4 116
perr1940 10:d245feb52be2 117 static const float MIN_STEPLEN = -32;
perr1940 10:d245feb52be2 118 static const float MAX_STEPLEN = -12;
mzling 6:502959ea39e4 119 static const float MIN_HIPFLEX = 20;
mzling 6:502959ea39e4 120 static const float MAX_HIPFLEX = 40;
mzling 6:502959ea39e4 121 static const float MIN_PHASESHIFT = 400;
mzling 6:502959ea39e4 122 static const float MAX_PHASESHIFT = 600;
mzling 4:86d9e33652b6 123
mzling 0:f0dc2775ec68 124 //Indicates a readonly request
mzling 3:2091104c9b61 125 static const char READONLY_IND = 0x3f;
mzling 4:86d9e33652b6 126
mzling 0:f0dc2775ec68 127 //Error codes
mzling 0:f0dc2775ec68 128 static const char START_ERR = 1;
mzling 0:f0dc2775ec68 129 static const char END_ERR = 2;
mzling 0:f0dc2775ec68 130 static const char PARITY_ERR = 3;
mzling 0:f0dc2775ec68 131 static const char CHECKSUM_ERR = 4;
mzling 0:f0dc2775ec68 132 static const char VAR_ERR = 5;
mzling 0:f0dc2775ec68 133 static const char DATA_ERR = 6;
mzling 0:f0dc2775ec68 134 static const char RW_ERR = 7;
mzling 4:86d9e33652b6 135
mzling 0:f0dc2775ec68 136 };
mzling 0:f0dc2775ec68 137 #endif