pl ack in tmtc

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of COM_MNG_TMTC_SIMPLE_pl123 by shubham c

Committer:
shreeshas95
Date:
Sun Jan 24 09:21:57 2016 +0000
Revision:
72:9eea047ebd0c
Parent:
52:0bd68655c651
Removed PUTtmid definition,; Changed telemetry GETx and PUTx input types, to maintain similarity

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 )
shreeshas95 0:f016e9e8d48b 49 #define GETapid(x) ( ( (x->TC_string[1]) & 0xA0 ) >> 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 0:f016e9e8d48b 100 // MASKS
shreeshas95 72:9eea047ebd0c 101
shreeshas95 72:9eea047ebd0c 102 // short_or_long mask for fields variable
shreeshas95 72:9eea047ebd0c 103 #define SHORT_LONG_TM_MASK 0x01
shreeshas95 72:9eea047ebd0c 104
shreeshas95 72:9eea047ebd0c 105 // tmid mask to read from telemetry
shreeshas95 72:9eea047ebd0c 106 #define TMID_MASK_LONG 0x78
shreeshas95 72:9eea047ebd0c 107 #define TMID_MASK_SHORT 0xF0
shreeshas95 0:f016e9e8d48b 108
shreeshas95 72:9eea047ebd0c 109 //x should be Base_tm ptr
shreeshas95 72:9eea047ebd0c 110 #define GETshort_or_long_tm(x) (((x->fields) & SHORT_LONG_TM_MASK))
shreeshas95 72:9eea047ebd0c 111 #define GETtmid(x) (GETshort_or_long(x) == TM_SHORT_CODE ? ((x->TM_string[0] & TMID_MASK_SHORT) >> 4) : ((x->TM_string[0] & TMID_MASK_LONG) >> 3) )
shreeshas95 0:f016e9e8d48b 112
shreeshas95 72:9eea047ebd0c 113 //x should be Base_tm pointer
shreeshas95 0:f016e9e8d48b 114 //y should be an 8-bit number with relevent data at LSB
shreeshas95 72:9eea047ebd0c 115 #define PUTshort_or_long_tm(x,y) x->fields = ((x->fields) & ~(SHORT_LONG_TM_MASK)) | ((y) & SHORT_LONG_TM_MASK)
shreeshas95 72:9eea047ebd0c 116 // #define PUTtmid(x,y) x = (x & ~(TMID_MASK)) | (y & TMID_MASK)
shreeshas95 0:f016e9e8d48b 117
shreeshas95 0:f016e9e8d48b 118 // PARENT TELEMETRY CLASS
shreeshas95 0:f016e9e8d48b 119 class Base_tm{
shreeshas95 0:f016e9e8d48b 120 public:
shreeshas95 0:f016e9e8d48b 121 uint8_t fields;
shreeshas95 0:f016e9e8d48b 122 uint8_t *TM_string;
shreeshas95 0:f016e9e8d48b 123 Base_tm *next_TM;
shreeshas95 0:f016e9e8d48b 124
shreeshas95 0:f016e9e8d48b 125 virtual ~Base_tm(){}
shreeshas95 0:f016e9e8d48b 126 };
shreeshas95 0:f016e9e8d48b 127
shreeshas95 0:f016e9e8d48b 128 // DERIVED CLASS : Long tm [type 0]
shreeshas95 0:f016e9e8d48b 129 // type 0
shreeshas95 0:f016e9e8d48b 130 class Long_tm : public Base_tm{
shreeshas95 0:f016e9e8d48b 131 private:
shreeshas95 0:f016e9e8d48b 132 uint8_t fix_str[TM_LONG_SIZE];
shreeshas95 0:f016e9e8d48b 133 public:
shreeshas95 0:f016e9e8d48b 134 Long_tm(){
shreeshas95 0:f016e9e8d48b 135 TM_string = fix_str;
shreeshas95 0:f016e9e8d48b 136 // type 0
shreeshas95 0:f016e9e8d48b 137 fields = 0;
shreeshas95 0:f016e9e8d48b 138 }
shreeshas95 0:f016e9e8d48b 139
shreeshas95 0:f016e9e8d48b 140 ~Long_tm(){}
shreeshas95 0:f016e9e8d48b 141 };
shreeshas95 0:f016e9e8d48b 142
shreeshas95 0:f016e9e8d48b 143 // DERIVED CLASS : Short tm [type 1]
shreeshas95 0:f016e9e8d48b 144 // type 1
shreeshas95 0:f016e9e8d48b 145 class Short_tm : public Base_tm{
shreeshas95 0:f016e9e8d48b 146 private:
shreeshas95 0:f016e9e8d48b 147 uint8_t fix_str[TM_SHORT_SIZE];
shreeshas95 0:f016e9e8d48b 148 public:
shreeshas95 0:f016e9e8d48b 149 Short_tm(){
shreeshas95 0:f016e9e8d48b 150 TM_string = fix_str;
shreeshas95 0:f016e9e8d48b 151 // type 1
shreeshas95 0:f016e9e8d48b 152 fields = 0x10;
shreeshas95 0:f016e9e8d48b 153 }
shreeshas95 0:f016e9e8d48b 154
shreeshas95 0:f016e9e8d48b 155 ~Short_tm(){}
shreeshas95 0:f016e9e8d48b 156 };