Dummy program to demonstrate problems: working code

Dependencies:   SLCD mbed-rtos mbed

Fork of MNG_TC by Shreesha S

Committer:
shreeshas95
Date:
Thu Sep 17 14:15:00 2015 +0000
Revision:
17:2b04e53f3b1d
Parent:
13:7b27a8e9cbb4
Child:
15:cc266eccf327
DUMMP program to demonstrate the problems : working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 13:7b27a8e9cbb4 1 // TELECOMMAND CLASS :
shreeshas95 13:7b27a8e9cbb4 2
shreeshas95 13:7b27a8e9cbb4 3 #define TC_SHORT_SIZE 11
shreeshas95 13:7b27a8e9cbb4 4 #define TC_LONG_SIZE 135
shreeshas95 13:7b27a8e9cbb4 5
shreeshas95 2:994e741028c7 6 typedef struct TC_list{
shreeshas95 2:994e741028c7 7 // received from the RCV_TC
shreeshas95 2:994e741028c7 8 unsigned char *TC_string;
shreeshas95 2:994e741028c7 9 bool short_or_long; //'true' for short
shreeshas95 2:994e741028c7 10 bool crc_pass;
shreeshas95 13:7b27a8e9cbb4 11
shreeshas95 2:994e741028c7 12 // updated info - updated in MNG_TC
shreeshas95 2:994e741028c7 13 unsigned char packet_seq_count;
shreeshas95 2:994e741028c7 14 unsigned char apid;
shreeshas95 2:994e741028c7 15 bool abort_on_nack;
shreeshas95 2:994e741028c7 16 bool enabled;
shreeshas95 13:7b27a8e9cbb4 17 // bool valid_execution;
shreeshas95 8:cb93c1d3209a 18 unsigned char exec_status;
shreeshas95 13:7b27a8e9cbb4 19
shreeshas95 2:994e741028c7 20 struct TC_list *next_TC;
shreeshas95 2:994e741028c7 21
shreeshas95 2:994e741028c7 22 ~TC_list(){}
shreeshas95 2:994e741028c7 23 }TC_list;
shreeshas95 13:7b27a8e9cbb4 24
shreeshas95 2:994e741028c7 25 typedef struct TM_list{
shreeshas95 13:7b27a8e9cbb4 26
shreeshas95 2:994e741028c7 27 unsigned char *TM_string;
shreeshas95 2:994e741028c7 28 // bool short_or_long; // true for short
shreeshas95 2:994e741028c7 29 // pass while calling the function
shreeshas95 2:994e741028c7 30 unsigned char tmid;
shreeshas95 2:994e741028c7 31 struct TM_list *next_TM;
shreeshas95 2:994e741028c7 32
shreeshas95 2:994e741028c7 33 ~TM_list(){}
shreeshas95 13:7b27a8e9cbb4 34 }TM_List;
shreeshas95 13:7b27a8e9cbb4 35
shreeshas95 13:7b27a8e9cbb4 36 //MASKS
shreeshas95 13:7b27a8e9cbb4 37 /*#define SHORT_LONG_TC_MASK 0x4000
shreeshas95 13:7b27a8e9cbb4 38 #define CRC_MASK 0x2000
shreeshas95 13:7b27a8e9cbb4 39 #define ABORT_ON_NACK_MASK 0x1000
shreeshas95 13:7b27a8e9cbb4 40 #define APID_MASK 0x0C00
shreeshas95 13:7b27a8e9cbb4 41 #define EXEC_STATUS_MASK 0x0300
shreeshas95 13:7b27a8e9cbb4 42 #define PACKET_SEQ_COUNT_MASK 0x00FF
shreeshas95 13:7b27a8e9cbb4 43
shreeshas95 13:7b27a8e9cbb4 44 //PARENT CLASS
shreeshas95 13:7b27a8e9cbb4 45 class Base_tc {
shreeshas95 13:7b27a8e9cbb4 46 protected:
shreeshas95 13:7b27a8e9cbb4 47 uint16_t fields;
shreeshas95 13:7b27a8e9cbb4 48 public:
shreeshas95 13:7b27a8e9cbb4 49 uin8_t *TC_string;
shreeshas95 13:7b27a8e9cbb4 50 Base_tc *next_node;
shreeshas95 13:7b27a8e9cbb4 51
shreeshas95 13:7b27a8e9cbb4 52 // short = 0, long = 1
shreeshas95 13:7b27a8e9cbb4 53 bool inline GETshort_or_long(){
shreeshas95 13:7b27a8e9cbb4 54 return (fields & SHORT_LONG_TC_MASK);
shreeshas95 13:7b27a8e9cbb4 55 }
shreeshas95 13:7b27a8e9cbb4 56 void inline PUTshort_or_long(bool input){
shreeshas95 13:7b27a8e9cbb4 57 if(input){
shreeshas95 13:7b27a8e9cbb4 58 fields |= SHORT_LONG_TC_MASK;
shreeshas95 13:7b27a8e9cbb4 59 }
shreeshas95 13:7b27a8e9cbb4 60 else{
shreeshas95 13:7b27a8e9cbb4 61 fields &= ~(SHORT_LONG_TC_MASK);
shreeshas95 13:7b27a8e9cbb4 62 }
shreeshas95 13:7b27a8e9cbb4 63 }
shreeshas95 13:7b27a8e9cbb4 64
shreeshas95 13:7b27a8e9cbb4 65 bool inline GETcrc_pass(){
shreeshas95 13:7b27a8e9cbb4 66 return (fields & CRC_MASK);
shreeshas95 13:7b27a8e9cbb4 67 }
shreeshas95 13:7b27a8e9cbb4 68 void inline PUTcrc_pass(bool input){
shreeshas95 13:7b27a8e9cbb4 69 if(input){
shreeshas95 13:7b27a8e9cbb4 70 fields |= CRC_MASK;
shreeshas95 13:7b27a8e9cbb4 71 }
shreeshas95 13:7b27a8e9cbb4 72 else{
shreeshas95 13:7b27a8e9cbb4 73 fields &= ~(CRC_MASK);
shreeshas95 13:7b27a8e9cbb4 74 }
shreeshas95 13:7b27a8e9cbb4 75 }
shreeshas95 13:7b27a8e9cbb4 76
shreeshas95 13:7b27a8e9cbb4 77 bool inline GETabort_on_nack(){
shreeshas95 13:7b27a8e9cbb4 78 return (fields & ABORT_ON_NACK_MASK);
shreeshas95 13:7b27a8e9cbb4 79 }
shreeshas95 13:7b27a8e9cbb4 80 void inline PUTabort_on_nack(bool input){
shreeshas95 13:7b27a8e9cbb4 81 if(input){
shreeshas95 13:7b27a8e9cbb4 82 fields |= ABORT_ON_NACK_MASK;
shreeshas95 13:7b27a8e9cbb4 83 }
shreeshas95 13:7b27a8e9cbb4 84 else{
shreeshas95 13:7b27a8e9cbb4 85 fields &= ~(ABORT_ON_NACK_MASK);
shreeshas95 13:7b27a8e9cbb4 86 }
shreeshas95 13:7b27a8e9cbb4 87 }
shreeshas95 13:7b27a8e9cbb4 88
shreeshas95 13:7b27a8e9cbb4 89 uint8_t inline GETapid(){
shreeshas95 13:7b27a8e9cbb4 90 uint16_t temp = fields & APID_MASK;
shreeshas95 13:7b27a8e9cbb4 91 temp = temp >> 10;
shreeshas95 13:7b27a8e9cbb4 92 return (temp & 0xFF);
shreeshas95 13:7b27a8e9cbb4 93 }
shreeshas95 13:7b27a8e9cbb4 94 void inline PUTapid(uint8_t input){
shreeshas95 13:7b27a8e9cbb4 95 uint16_t temp = input;
shreeshas95 13:7b27a8e9cbb4 96 temp = temp << 10;
shreeshas95 13:7b27a8e9cbb4 97 fields &= ~(APID_MASK);
shreeshas95 13:7b27a8e9cbb4 98 fields |= (temp & APID_MASK);
shreeshas95 13:7b27a8e9cbb4 99 }
shreeshas95 13:7b27a8e9cbb4 100
shreeshas95 13:7b27a8e9cbb4 101 uint8_t inline GETexec_status(){
shreeshas95 13:7b27a8e9cbb4 102 uint16_t temp = fields & EXEC_STATUS_MASK;
shreeshas95 13:7b27a8e9cbb4 103 temp = temp >> 8;
shreeshas95 13:7b27a8e9cbb4 104 return (temp & 0xFF);
shreeshas95 13:7b27a8e9cbb4 105 }
shreeshas95 13:7b27a8e9cbb4 106 void inline PUTexec_status(uint8_t input){
shreeshas95 13:7b27a8e9cbb4 107 uint16_t temp = input;
shreeshas95 13:7b27a8e9cbb4 108 temp = temp << 8;
shreeshas95 13:7b27a8e9cbb4 109 fields &= ~(EXEC_STATUS_MASK);
shreeshas95 13:7b27a8e9cbb4 110 fields |= (temp & EXEC_STATUS_MASK);
shreeshas95 13:7b27a8e9cbb4 111 }
shreeshas95 13:7b27a8e9cbb4 112
shreeshas95 13:7b27a8e9cbb4 113 uint8_t inline GETpacket_seq_count(){
shreeshas95 13:7b27a8e9cbb4 114 uint16_t temp = fields & PACKET_SEQ_COUNT_MASK;
shreeshas95 13:7b27a8e9cbb4 115 return (temp & 0xFF);
shreeshas95 13:7b27a8e9cbb4 116 }
shreeshas95 13:7b27a8e9cbb4 117 void inline PUTpacket_seq_count(uint8_t input){
shreeshas95 13:7b27a8e9cbb4 118 uint16_t temp = input;
shreeshas95 13:7b27a8e9cbb4 119 fields &= ~(PACKET_SEQ_COUNT_MASK);
shreeshas95 13:7b27a8e9cbb4 120 fields |= (temp & PACKET_SEQ_COUNT_MASK);
shreeshas95 13:7b27a8e9cbb4 121 }
shreeshas95 13:7b27a8e9cbb4 122
shreeshas95 13:7b27a8e9cbb4 123 // update everything other than short_or_long, and crc_pass from TC_string
shreeshas95 13:7b27a8e9cbb4 124 void update_fields(){
shreeshas95 13:7b27a8e9cbb4 125 // abort on nack
shreeshas95 13:7b27a8e9cbb4 126 uint8_t temp = TC_string[1];
shreeshas95 13:7b27a8e9cbb4 127 uint16_t t16 = 0;
shreeshas95 13:7b27a8e9cbb4 128 if(temp & 0x10){
shreeshas95 13:7b27a8e9cbb4 129 fields |= ABORT_ON_NACK_MASK;
shreeshas95 13:7b27a8e9cbb4 130 }
shreeshas95 13:7b27a8e9cbb4 131 else{
shreeshas95 13:7b27a8e9cbb4 132 fields &= ~(ABORT_ON_NACK_MASK);
shreeshas95 13:7b27a8e9cbb4 133 }
shreeshas95 13:7b27a8e9cbb4 134
shreeshas95 13:7b27a8e9cbb4 135 // apid
shreeshas95 13:7b27a8e9cbb4 136 t16 = temp;
shreeshas95 13:7b27a8e9cbb4 137 t16 = t16 << 4;
shreeshas95 13:7b27a8e9cbb4 138 fields &= ~(APID_MASK);
shreeshas95 13:7b27a8e9cbb4 139 fields |= (t16 & APID_MASK);
shreeshas95 13:7b27a8e9cbb4 140
shreeshas95 13:7b27a8e9cbb4 141 // exec_status : default value of exec status
shreeshas95 13:7b27a8e9cbb4 142 fields &= ~(EXEC_STATUS_MASK);
shreeshas95 13:7b27a8e9cbb4 143
shreeshas95 13:7b27a8e9cbb4 144 // packet seq count
shreeshas95 13:7b27a8e9cbb4 145 temp = TC_string[0];
shreeshas95 13:7b27a8e9cbb4 146 t16 = temp;
shreeshas95 13:7b27a8e9cbb4 147 fields &= ~(PACKET_SEQ_COUNT_MASK);
shreeshas95 13:7b27a8e9cbb4 148 fields |= (t16 & PACKET_SEQ_COUNT_MASK);
shreeshas95 13:7b27a8e9cbb4 149 }
shreeshas95 13:7b27a8e9cbb4 150
shreeshas95 13:7b27a8e9cbb4 151 virtual ~Base_tc(){}
shreeshas95 13:7b27a8e9cbb4 152 };
shreeshas95 13:7b27a8e9cbb4 153
shreeshas95 13:7b27a8e9cbb4 154 //DERIVED CLASS - SHORT TC
shreeshas95 13:7b27a8e9cbb4 155 class Short_tc : public Base_tc{
shreeshas95 13:7b27a8e9cbb4 156 private:
shreeshas95 13:7b27a8e9cbb4 157 uin8_t fix_str[TC_SHORT_SIZE];
shreeshas95 13:7b27a8e9cbb4 158 public:
shreeshas95 13:7b27a8e9cbb4 159 Short_tc(){
shreeshas95 13:7b27a8e9cbb4 160 TC_string = fix_str;
shreeshas95 13:7b27a8e9cbb4 161 fields = 0;
shreeshas95 13:7b27a8e9cbb4 162 }
shreeshas95 13:7b27a8e9cbb4 163
shreeshas95 13:7b27a8e9cbb4 164 ~Short_tc(){}
shreeshas95 13:7b27a8e9cbb4 165 };
shreeshas95 13:7b27a8e9cbb4 166
shreeshas95 13:7b27a8e9cbb4 167 //DERIVED CLASS - LONG TC
shreeshas95 13:7b27a8e9cbb4 168 class Long_tc : public Base_tc{
shreeshas95 13:7b27a8e9cbb4 169 private:
shreeshas95 13:7b27a8e9cbb4 170 uin8_t fix_str[TC_LONG_SIZE];
shreeshas95 13:7b27a8e9cbb4 171 public:
shreeshas95 13:7b27a8e9cbb4 172 Long_tc(){
shreeshas95 13:7b27a8e9cbb4 173 TC_string = fix_str;
shreeshas95 13:7b27a8e9cbb4 174 fields = 0;
shreeshas95 13:7b27a8e9cbb4 175 }
shreeshas95 13:7b27a8e9cbb4 176
shreeshas95 13:7b27a8e9cbb4 177 ~Long_tc(){}
shreeshas95 13:7b27a8e9cbb4 178 };
shreeshas95 13:7b27a8e9cbb4 179
shreeshas95 13:7b27a8e9cbb4 180 // TELEMETRY CLASS :
shreeshas95 13:7b27a8e9cbb4 181
shreeshas95 13:7b27a8e9cbb4 182 // MASKS
shreeshas95 13:7b27a8e9cbb4 183 #define SHORT_LONG_TM_MASK 0x10
shreeshas95 13:7b27a8e9cbb4 184 #define TMID_MASK 0x0F
shreeshas95 13:7b27a8e9cbb4 185
shreeshas95 13:7b27a8e9cbb4 186 // PARENT CLASS
shreeshas95 13:7b27a8e9cbb4 187 class Base_tm{
shreeshas95 13:7b27a8e9cbb4 188 protected:
shreeshas95 13:7b27a8e9cbb4 189 uint8_t fields;
shreeshas95 13:7b27a8e9cbb4 190 public:
shreeshas95 13:7b27a8e9cbb4 191 uint8_t *TM_string;
shreeshas95 13:7b27a8e9cbb4 192 Base_tm *next_node;
shreeshas95 13:7b27a8e9cbb4 193
shreeshas95 13:7b27a8e9cbb4 194 // short = 0, long = 1
shreeshas95 13:7b27a8e9cbb4 195 bool GETshort_or_long(){
shreeshas95 13:7b27a8e9cbb4 196 return (fields & SHORT_LONG_TM_MASK);
shreeshas95 13:7b27a8e9cbb4 197 }
shreeshas95 13:7b27a8e9cbb4 198 void PUTshort_or_long(bool input){
shreeshas95 13:7b27a8e9cbb4 199 if(input){
shreeshas95 13:7b27a8e9cbb4 200 fields |= SHORT_LONG_TM_MASK;
shreeshas95 13:7b27a8e9cbb4 201 }
shreeshas95 13:7b27a8e9cbb4 202 else{
shreeshas95 13:7b27a8e9cbb4 203 fields &= ~(SHORT_LONG_TM_MASK);
shreeshas95 13:7b27a8e9cbb4 204 }
shreeshas95 13:7b27a8e9cbb4 205 }
shreeshas95 13:7b27a8e9cbb4 206
shreeshas95 13:7b27a8e9cbb4 207 uint8_t GETtmid(){
shreeshas95 13:7b27a8e9cbb4 208 return (fields & TMID_MASK);
shreeshas95 13:7b27a8e9cbb4 209 }
shreeshas95 13:7b27a8e9cbb4 210 void PUTtmid(uint8_t input){
shreeshas95 13:7b27a8e9cbb4 211 fields &= ~(TMID_MASK);
shreeshas95 13:7b27a8e9cbb4 212 fields |= (input & TMID_MASK);
shreeshas95 13:7b27a8e9cbb4 213 }
shreeshas95 13:7b27a8e9cbb4 214
shreeshas95 13:7b27a8e9cbb4 215 virtual ~Base_tm(){}
shreeshas95 13:7b27a8e9cbb4 216 };
shreeshas95 13:7b27a8e9cbb4 217
shreeshas95 13:7b27a8e9cbb4 218
shreeshas95 13:7b27a8e9cbb4 219 // DERIVED CLASS : Long tc [type 0]
shreeshas95 13:7b27a8e9cbb4 220 // type 0
shreeshas95 13:7b27a8e9cbb4 221 class Long_tm : public Base_tm{
shreeshas95 13:7b27a8e9cbb4 222 private:
shreeshas95 13:7b27a8e9cbb4 223 uint8_t fix_str[TM_LONG_SIZE];
shreeshas95 13:7b27a8e9cbb4 224 public:
shreeshas95 13:7b27a8e9cbb4 225 Long_tm(){
shreeshas95 13:7b27a8e9cbb4 226 TM_string = fix_str;
shreeshas95 13:7b27a8e9cbb4 227 // type 0
shreeshas95 13:7b27a8e9cbb4 228 fields = 0;
shreeshas95 13:7b27a8e9cbb4 229 }
shreeshas95 13:7b27a8e9cbb4 230
shreeshas95 13:7b27a8e9cbb4 231 ~Long_tm(){}
shreeshas95 13:7b27a8e9cbb4 232 };
shreeshas95 13:7b27a8e9cbb4 233
shreeshas95 13:7b27a8e9cbb4 234 // DERIVED CLASS : Short tc [type 1]
shreeshas95 13:7b27a8e9cbb4 235 // type 1
shreeshas95 13:7b27a8e9cbb4 236 class Short_tm : public Base_tm{
shreeshas95 13:7b27a8e9cbb4 237 private:
shreeshas95 13:7b27a8e9cbb4 238 uint8_t fix_str[TM_SHORT_SIZE];
shreeshas95 13:7b27a8e9cbb4 239 public:
shreeshas95 13:7b27a8e9cbb4 240 Short_tm(){
shreeshas95 13:7b27a8e9cbb4 241 TM_string = fix_str;
shreeshas95 13:7b27a8e9cbb4 242 // type 1
shreeshas95 13:7b27a8e9cbb4 243 fields = 0x10;
shreeshas95 13:7b27a8e9cbb4 244 }
shreeshas95 13:7b27a8e9cbb4 245
shreeshas95 13:7b27a8e9cbb4 246 ~Short_tm(){}
shreeshas95 13:7b27a8e9cbb4 247 };*/