I2C code testing

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of COM_MNG_TMTC_SIMPLE_pl123 by Siva ram

Committer:
ee12b079
Date:
Wed Mar 30 14:04:48 2016 +0000
Revision:
139:17353d6311ce
Parent:
125:a3b95a9c16ef
PL I2C worked

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 0:f016e9e8d48b 1 // TC TM
shreeshas95 0:f016e9e8d48b 2 #define TC_SHORT_SIZE 11
shreeshas95 0:f016e9e8d48b 3 #define TC_LONG_SIZE 135
shreeshas95 0:f016e9e8d48b 4 #define TM_LONG_SIZE 134
shreeshas95 0:f016e9e8d48b 5 #define TM_SHORT_SIZE 13
shreeshas95 0:f016e9e8d48b 6
shreeshas95 4:104dd82c99b8 7 #define SHORT_TC_CODE 0
shreeshas95 4:104dd82c99b8 8 #define LONG_TC_CODE 1
shreeshas95 4:104dd82c99b8 9
shreeshas95 4:104dd82c99b8 10 #define SHORT_TM_CODE 1
shreeshas95 4:104dd82c99b8 11 #define LONG_TM_CODE 0
shreeshas95 4:104dd82c99b8 12
shreeshas95 0:f016e9e8d48b 13 // COM_RX
shreeshas95 0:f016e9e8d48b 14 #define RX_BUFFER_LENGTH 60
shreeshas95 0:f016e9e8d48b 15 // 60+4 = 64
shreeshas95 0:f016e9e8d48b 16
shreeshas95 0:f016e9e8d48b 17 struct data_node{
shreeshas95 0:f016e9e8d48b 18 uint8_t values[RX_BUFFER_LENGTH];
shreeshas95 0:f016e9e8d48b 19 struct data_node* next_node;
shreeshas95 0:f016e9e8d48b 20 };
shreeshas95 0:f016e9e8d48b 21 typedef struct data_node COM_RX_DATA_NODE;
shreeshas95 0:f016e9e8d48b 22
shreeshas95 0:f016e9e8d48b 23 //TELECOMMAND:
shreeshas95 0:f016e9e8d48b 24
shreeshas95 0:f016e9e8d48b 25 /*
shreeshas95 0:f016e9e8d48b 26 exec_status:
shreeshas95 0:f016e9e8d48b 27 0: unexecuted
shreeshas95 0:f016e9e8d48b 28 1: successfully executed
shreeshas95 0:f016e9e8d48b 29 2: Execution Failed
shreeshas95 0:f016e9e8d48b 30 3: Disabled
shreeshas95 0:f016e9e8d48b 31 4: Marked For retry
shreeshas95 0:f016e9e8d48b 32 */
shreeshas95 0:f016e9e8d48b 33 #define TC_STATE_UNEXECUTED 0x00
shreeshas95 0:f016e9e8d48b 34 #define TC_STATE_SUCCESSFULLY_EXECUTED 0x01
shreeshas95 0:f016e9e8d48b 35 #define TC_STATE_EXECUTION_FAILED 0x02
rohit3342 23:c89376564196 36 #define TC_STATE_DISABLED 0x04
rohit3342 23:c89376564196 37 #define TC_STATE_MARKED_RETRY 0x05
shreeshas95 0:f016e9e8d48b 38
shreeshas95 0:f016e9e8d48b 39 //MASKS
shreeshas95 0:f016e9e8d48b 40 #define SHORT_LONG_TC_MASK 0x10
shreeshas95 0:f016e9e8d48b 41 #define CRC_MASK 0x08
shreeshas95 0:f016e9e8d48b 42 #define EXEC_STATUS_MASK 0x07
shreeshas95 0:f016e9e8d48b 43
shreeshas95 0:f016e9e8d48b 44 //USE ONLY THE BELOW MACROS TO MODIFY 'flags' VARIABLE
shreeshas95 0:f016e9e8d48b 45 //x should be a Base_tc pointer
shreeshas95 0:f016e9e8d48b 46 #define GETshort_or_long_tc(x) ( ( (x->flags) & SHORT_LONG_TC_MASK ) >> 4 )
shreeshas95 0:f016e9e8d48b 47 #define GETcrc_pass(x) ( ( (x->flags) & CRC_MASK ) >> 3 )
shreeshas95 0:f016e9e8d48b 48 #define GETabort_on_nack(x) ( ( (x->TC_string[1]) & 0x08 ) >> 3 )
ee12b079 125:a3b95a9c16ef 49 #define GETapid(x) ( ( (x->TC_string[1]) & 0xC0 ) >> 6 )
shreeshas95 0:f016e9e8d48b 50 #define GETexec_status(x) ( (x->flags) & EXEC_STATUS_MASK )
shreeshas95 0:f016e9e8d48b 51 #define GETpacket_seq_count(x) (x->TC_string[0])
aniruddhv 52:0bd68655c651 52 #define GETservice_type(x) ( (x->TC_string[2]) & 0xF0 )
aniruddhv 52:0bd68655c651 53 #define GETservice_subtype(x) ( (x->TC_string[2]) & 0x0F )
aniruddhv 52:0bd68655c651 54 #define GETpid(x) (x->TC_string[3])
shreeshas95 0:f016e9e8d48b 55
shreeshas95 0:f016e9e8d48b 56 //x should be a Base_tc pointer
shreeshas95 6:79d422d1ed42 57 //y should be a 8-bit number with relevant data in LSB
shreeshas95 0:f016e9e8d48b 58 //use in a seperate line with ; at the end: similar to a function
shreeshas95 0:f016e9e8d48b 59 #define PUTshort_or_long(x,y) x->flags = ( (x->flags) & ~(SHORT_LONG_TC_MASK)) | ( (y << 4) & SHORT_LONG_TC_MASK )
shreeshas95 0:f016e9e8d48b 60 #define PUTcrc_pass(x,y) x->flags = ( (x->flags) & ~(CRC_MASK)) | ( (y << 3) & CRC_MASK)
shreeshas95 0:f016e9e8d48b 61 #define PUTexec_status(x,y) x->flags = ( (x->flags) & ~(EXEC_STATUS_MASK)) | ( y & EXEC_STATUS_MASK)
shreeshas95 0:f016e9e8d48b 62
shreeshas95 0:f016e9e8d48b 63 //PARENT TELECOMMAND CLASS
shreeshas95 0:f016e9e8d48b 64 class Base_tc{
shreeshas95 0:f016e9e8d48b 65 public:
shreeshas95 0:f016e9e8d48b 66 uint8_t flags;
shreeshas95 0:f016e9e8d48b 67 uint8_t *TC_string;
shreeshas95 0:f016e9e8d48b 68 Base_tc *next_TC;
shreeshas95 0:f016e9e8d48b 69
shreeshas95 0:f016e9e8d48b 70 virtual ~Base_tc(){}
shreeshas95 0:f016e9e8d48b 71 };
shreeshas95 0:f016e9e8d48b 72
shreeshas95 0:f016e9e8d48b 73 //DERIVED CLASS - SHORT TC
shreeshas95 0:f016e9e8d48b 74 class Short_tc : public Base_tc{
shreeshas95 0:f016e9e8d48b 75 private:
shreeshas95 0:f016e9e8d48b 76 uint8_t fix_str[TC_SHORT_SIZE];
shreeshas95 0:f016e9e8d48b 77 public:
shreeshas95 0:f016e9e8d48b 78 Short_tc(){
shreeshas95 0:f016e9e8d48b 79 TC_string = fix_str;
shreeshas95 0:f016e9e8d48b 80 flags = 0;
shreeshas95 0:f016e9e8d48b 81 }
shreeshas95 0:f016e9e8d48b 82
shreeshas95 0:f016e9e8d48b 83 ~Short_tc(){}
shreeshas95 0:f016e9e8d48b 84 };
shreeshas95 0:f016e9e8d48b 85
shreeshas95 0:f016e9e8d48b 86 //DERIVED CLASS - LONG TC
shreeshas95 0:f016e9e8d48b 87 class Long_tc : public Base_tc{
shreeshas95 0:f016e9e8d48b 88 private:
shreeshas95 0:f016e9e8d48b 89 uint8_t fix_str[TC_LONG_SIZE];
shreeshas95 0:f016e9e8d48b 90 public:
shreeshas95 0:f016e9e8d48b 91 Long_tc(){
shreeshas95 0:f016e9e8d48b 92 TC_string = fix_str;
shreeshas95 0:f016e9e8d48b 93 flags = 0;
shreeshas95 0:f016e9e8d48b 94 }
shreeshas95 0:f016e9e8d48b 95
shreeshas95 0:f016e9e8d48b 96 ~Long_tc(){}
shreeshas95 0:f016e9e8d48b 97 };
shreeshas95 0:f016e9e8d48b 98
shreeshas95 0:f016e9e8d48b 99 // TELEMETRY:
shreeshas95 102:80c911a6e736 100 // MASK
shreeshas95 102:80c911a6e736 101 #define SHORT_LONG_TM_MASK 0x80
shreeshas95 0:f016e9e8d48b 102
shreeshas95 102:80c911a6e736 103 //x should be 'Base tm' pointer
shreeshas95 102:80c911a6e736 104 #define GETshort_or_long_tm(x) ((x->TM_string[0] & SHORT_LONG_TM_MASK) >> 7)
shreeshas95 0:f016e9e8d48b 105
shreeshas95 0:f016e9e8d48b 106 // PARENT TELEMETRY CLASS
shreeshas95 0:f016e9e8d48b 107 class Base_tm{
shreeshas95 0:f016e9e8d48b 108 public:
shreeshas95 0:f016e9e8d48b 109 uint8_t *TM_string;
shreeshas95 0:f016e9e8d48b 110 Base_tm *next_TM;
shreeshas95 0:f016e9e8d48b 111
shreeshas95 0:f016e9e8d48b 112 virtual ~Base_tm(){}
shreeshas95 0:f016e9e8d48b 113 };
shreeshas95 0:f016e9e8d48b 114
shreeshas95 0:f016e9e8d48b 115 // DERIVED CLASS : Long tm [type 0]
shreeshas95 0:f016e9e8d48b 116 // type 0
shreeshas95 0:f016e9e8d48b 117 class Long_tm : public Base_tm{
shreeshas95 0:f016e9e8d48b 118 private:
shreeshas95 0:f016e9e8d48b 119 uint8_t fix_str[TM_LONG_SIZE];
shreeshas95 0:f016e9e8d48b 120 public:
shreeshas95 0:f016e9e8d48b 121 Long_tm(){
shreeshas95 0:f016e9e8d48b 122 TM_string = fix_str;
shreeshas95 0:f016e9e8d48b 123 // type 0
shreeshas95 0:f016e9e8d48b 124 }
shreeshas95 0:f016e9e8d48b 125
shreeshas95 0:f016e9e8d48b 126 ~Long_tm(){}
shreeshas95 0:f016e9e8d48b 127 };
shreeshas95 0:f016e9e8d48b 128
shreeshas95 0:f016e9e8d48b 129 // DERIVED CLASS : Short tm [type 1]
shreeshas95 0:f016e9e8d48b 130 // type 1
shreeshas95 0:f016e9e8d48b 131 class Short_tm : public Base_tm{
shreeshas95 0:f016e9e8d48b 132 private:
shreeshas95 0:f016e9e8d48b 133 uint8_t fix_str[TM_SHORT_SIZE];
shreeshas95 0:f016e9e8d48b 134 public:
shreeshas95 0:f016e9e8d48b 135 Short_tm(){
shreeshas95 0:f016e9e8d48b 136 TM_string = fix_str;
shreeshas95 0:f016e9e8d48b 137 // type 1
shreeshas95 0:f016e9e8d48b 138 }
shreeshas95 0:f016e9e8d48b 139
shreeshas95 0:f016e9e8d48b 140 ~Short_tm(){}
shreeshas95 103:b55559925dc1 141 };
shreeshas95 103:b55559925dc1 142
shreeshas95 103:b55559925dc1 143
shreeshas95 103:b55559925dc1 144 // CDMS HK
shreeshas95 103:b55559925dc1 145
shreeshas95 103:b55559925dc1 146 #define tstart -40
shreeshas95 103:b55559925dc1 147 #define tstep 8 //to be finalized by thermal team
shreeshas95 103:b55559925dc1 148 #define tstart_thermistor -40
shreeshas95 103:b55559925dc1 149 #define tstep_thermistor 8
shreeshas95 103:b55559925dc1 150
shreeshas95 103:b55559925dc1 151 typedef struct CDMS_HK_actual
shreeshas95 103:b55559925dc1 152 {
shreeshas95 103:b55559925dc1 153 float temp_actual[16];
shreeshas95 103:b55559925dc1 154 float CDMS_temp_actual;
shreeshas95 103:b55559925dc1 155
shreeshas95 103:b55559925dc1 156 }CDMS_HK_actual;
shreeshas95 103:b55559925dc1 157
shreeshas95 103:b55559925dc1 158 typedef struct CDMS_HK_quant
shreeshas95 103:b55559925dc1 159 {
shreeshas95 103:b55559925dc1 160 char temp_quant[16];
shreeshas95 103:b55559925dc1 161 char CDMS_temp_quant;
shreeshas95 103:b55559925dc1 162
shreeshas95 103:b55559925dc1 163 }CDMS_HK_quant;
shreeshas95 103:b55559925dc1 164
shreeshas95 103:b55559925dc1 165 typedef struct CDMS_HK_min_max
shreeshas95 103:b55559925dc1 166 {
shreeshas95 103:b55559925dc1 167 char temp_max[16];
shreeshas95 103:b55559925dc1 168 char temp_min[16];
shreeshas95 103:b55559925dc1 169 char CDMS_temp_min;
shreeshas95 103:b55559925dc1 170 char CDMS_temp_max;
shreeshas95 103:b55559925dc1 171 }CDMS_HK_min_max;