Dummy program to demonstrate problems: working code

Dependencies:   SLCD mbed-rtos mbed

Fork of MNG_TC by Shreesha S

Committer:
shreeshas95
Date:
Sat Jun 06 04:27:40 2015 +0000
Revision:
1:df31097c8442
Parent:
0:b5b370873460
Child:
2:994e741028c7
before namespace (in class format)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 0:b5b370873460 1 // Apil 15
shreeshas95 0:b5b370873460 2 //added back printf statements
shreeshas95 0:b5b370873460 3 //added back delete TC_string for debugging
shreeshas95 0:b5b370873460 4
shreeshas95 0:b5b370873460 5 // add number of tm packets while calling snd
shreeshas95 0:b5b370873460 6 // function overloading z
shreeshas95 0:b5b370873460 7
shreeshas95 0:b5b370873460 8 #include "SND_TM.h"
shreeshas95 0:b5b370873460 9
shreeshas95 0:b5b370873460 10 // starting value of packet sequence count at each pass
shreeshas95 0:b5b370873460 11 #define PSC_START_VALUE 1
shreeshas95 0:b5b370873460 12
shreeshas95 0:b5b370873460 13 // APID list
shreeshas95 0:b5b370873460 14 #define APID_CALLSIGN 0
shreeshas95 0:b5b370873460 15 #define APID_BAE 1
shreeshas95 0:b5b370873460 16 #define APID_CDMS 2
shreeshas95 0:b5b370873460 17 #define APID_SPEED 3
shreeshas95 0:b5b370873460 18
shreeshas95 0:b5b370873460 19 // HIGH PRIORITY TC - priority list
shreeshas95 0:b5b370873460 20 // not correct values here
shreeshas95 0:b5b370873460 21 #define HPTC1 5
shreeshas95 0:b5b370873460 22 #define HPTC2 6
shreeshas95 0:b5b370873460 23 // Add more entries above
shreeshas95 0:b5b370873460 24
shreeshas95 0:b5b370873460 25 // size of short TM without CRC - in bytes
shreeshas95 1:df31097c8442 26 #define TM_SHORT_SIZE 14
shreeshas95 0:b5b370873460 27 #define TM_LONG_SIZE 131
shreeshas95 0:b5b370873460 28
shreeshas95 0:b5b370873460 29 // TMID list
shreeshas95 0:b5b370873460 30 #define TMID_ACK_L1 10
shreeshas95 0:b5b370873460 31
shreeshas95 0:b5b370873460 32 typedef struct TC_list{
shreeshas95 0:b5b370873460 33 // received from the RCV_TC
shreeshas95 0:b5b370873460 34 unsigned char *TC_string;
shreeshas95 0:b5b370873460 35 bool short_or_long; //'true' for short
shreeshas95 0:b5b370873460 36 bool crc_pass;
shreeshas95 0:b5b370873460 37
shreeshas95 0:b5b370873460 38 // updated info - updated in MNG_TC
shreeshas95 0:b5b370873460 39 unsigned char packet_seq_count;
shreeshas95 0:b5b370873460 40 unsigned char apid;
shreeshas95 0:b5b370873460 41 bool abort_on_nack;
shreeshas95 0:b5b370873460 42 bool enabled;
shreeshas95 0:b5b370873460 43 bool valid_execution;
shreeshas95 0:b5b370873460 44
shreeshas95 0:b5b370873460 45 struct TC_list *next_TC;
shreeshas95 0:b5b370873460 46 }TC_list;
shreeshas95 0:b5b370873460 47
shreeshas95 0:b5b370873460 48 //typedef struct TM_list{
shreeshas95 0:b5b370873460 49 //
shreeshas95 0:b5b370873460 50 // unsigned char *TM_string;
shreeshas95 0:b5b370873460 51 // // bool short_or_long; // true for short
shreeshas95 0:b5b370873460 52 // // pass while calling the function
shreeshas95 0:b5b370873460 53 // unsigned char tmid;
shreeshas95 0:b5b370873460 54 //
shreeshas95 0:b5b370873460 55 // struct TM_list *next_TM;
shreeshas95 0:b5b370873460 56 //}TM_List;
shreeshas95 0:b5b370873460 57
shreeshas95 0:b5b370873460 58 class MNG_TC
shreeshas95 0:b5b370873460 59 {
shreeshas95 0:b5b370873460 60 private:
shreeshas95 0:b5b370873460 61
shreeshas95 0:b5b370873460 62 // private variables and flags
shreeshas95 0:b5b370873460 63 int total_valid_TC;
shreeshas95 0:b5b370873460 64 TC_list *TC_list_header;
shreeshas95 0:b5b370873460 65 bool all_crc_pass;
shreeshas95 0:b5b370873460 66 bool no_missing_TC;
shreeshas95 0:b5b370873460 67 bool stop_after_current_TC;
shreeshas95 0:b5b370873460 68 bool execute_high_priority_TC;
shreeshas95 0:b5b370873460 69
shreeshas95 0:b5b370873460 70 // private functions
shreeshas95 0:b5b370873460 71 void delete_TC(TC_list *tc_ptr, TC_list* previous_tc){
shreeshas95 0:b5b370873460 72 // stitch the previous and next node
shreeshas95 0:b5b370873460 73 TC_list *temp_n = tc_ptr->next_TC;
shreeshas95 0:b5b370873460 74
shreeshas95 0:b5b370873460 75 if( (previous_tc != NULL) && (temp_n != NULL) ){
shreeshas95 0:b5b370873460 76 previous_tc->next_TC = temp_n;
shreeshas95 0:b5b370873460 77 }
shreeshas95 0:b5b370873460 78 else if( (previous_tc == NULL) && (temp_n != NULL) ){
shreeshas95 0:b5b370873460 79 // delete head node
shreeshas95 0:b5b370873460 80 TC_list_header = temp_n;
shreeshas95 0:b5b370873460 81 }
shreeshas95 0:b5b370873460 82 else if( (previous_tc != NULL) && (temp_n == NULL) ){
shreeshas95 0:b5b370873460 83 // delete last node
shreeshas95 0:b5b370873460 84 previous_tc->next_TC = NULL;
shreeshas95 0:b5b370873460 85 }
shreeshas95 0:b5b370873460 86 else{
shreeshas95 0:b5b370873460 87 // delete the only single node present
shreeshas95 0:b5b370873460 88 // in which case head is the only node
shreeshas95 0:b5b370873460 89 TC_list_header = NULL;
shreeshas95 0:b5b370873460 90 }
shreeshas95 0:b5b370873460 91
shreeshas95 0:b5b370873460 92 // delete the string
shreeshas95 0:b5b370873460 93 delete tc_ptr->TC_string;
shreeshas95 0:b5b370873460 94 // delete the node
shreeshas95 0:b5b370873460 95 delete tc_ptr;
shreeshas95 0:b5b370873460 96 }
shreeshas95 0:b5b370873460 97
shreeshas95 0:b5b370873460 98 void generate_L1_ack_TM(TM_list *tm_ptr){
shreeshas95 0:b5b370873460 99 tm_ptr->next_TM = NULL;
shreeshas95 0:b5b370873460 100 tm_ptr->TM_string = new unsigned char[TM_SHORT_SIZE];
shreeshas95 0:b5b370873460 101 // TMID
shreeshas95 1:df31097c8442 102 tm_ptr->TM_string[0] = 0xaf;
shreeshas95 1:df31097c8442 103 tm_ptr->TM_string[1] = 0xff;
shreeshas95 1:df31097c8442 104 tm_ptr->TM_string[2] = 0xff;
shreeshas95 1:df31097c8442 105 tm_ptr->TM_string[3] = 0xff;
shreeshas95 0:b5b370873460 106 }
shreeshas95 0:b5b370873460 107
shreeshas95 0:b5b370873460 108 TM_list* manage_process(TC_list *ptr_tc){
shreeshas95 0:b5b370873460 109 TM_list *test_TM = new TM_list;
shreeshas95 0:b5b370873460 110 test_TM->next_TM = NULL;
shreeshas95 0:b5b370873460 111 unsigned char *str = new unsigned char[TM_LONG_SIZE];
shreeshas95 0:b5b370873460 112 //ping the TC
shreeshas95 0:b5b370873460 113 test_TM->tmid = 0xa;
shreeshas95 0:b5b370873460 114
shreeshas95 0:b5b370873460 115 // 4 bit TMID
shreeshas95 0:b5b370873460 116 str[0] = (0xa) << 4;
shreeshas95 0:b5b370873460 117
shreeshas95 0:b5b370873460 118 // 20 bit seq. count
shreeshas95 0:b5b370873460 119 str[0] += 0xf;
shreeshas95 0:b5b370873460 120 str[1] = 0xff;
shreeshas95 0:b5b370873460 121 str[2] = 0xff;
shreeshas95 0:b5b370873460 122
shreeshas95 0:b5b370873460 123 // return data and append zeroes
shreeshas95 0:b5b370873460 124 for(int i = 3 ; i < 9 ; ++i ){
shreeshas95 0:b5b370873460 125 str[i] = ptr_tc->TC_string[i];
shreeshas95 0:b5b370873460 126 }
shreeshas95 0:b5b370873460 127 for(int i = 9 ; i < TM_LONG_SIZE ; ++i){
shreeshas95 0:b5b370873460 128 str[i] = 0;
shreeshas95 0:b5b370873460 129 }
shreeshas95 0:b5b370873460 130
shreeshas95 0:b5b370873460 131 test_TM->TM_string = str;
shreeshas95 0:b5b370873460 132
shreeshas95 0:b5b370873460 133 return test_TM;
shreeshas95 0:b5b370873460 134 }
shreeshas95 0:b5b370873460 135
shreeshas95 0:b5b370873460 136 bool detect_nack(TM_list *ptr_tm){
shreeshas95 0:b5b370873460 137 bool bluff = false;
shreeshas95 0:b5b370873460 138 return bluff;
shreeshas95 0:b5b370873460 139 }
shreeshas95 0:b5b370873460 140
shreeshas95 0:b5b370873460 141 public:
shreeshas95 0:b5b370873460 142 // Constructor
shreeshas95 0:b5b370873460 143 MNG_TC(TC_list *head){
shreeshas95 0:b5b370873460 144 total_valid_TC = 0;
shreeshas95 0:b5b370873460 145 TC_list_header = head;
shreeshas95 0:b5b370873460 146 all_crc_pass = true;
shreeshas95 0:b5b370873460 147 no_missing_TC = true;
shreeshas95 0:b5b370873460 148 stop_after_current_TC = false;
shreeshas95 0:b5b370873460 149 execute_high_priority_TC = false;
shreeshas95 0:b5b370873460 150 };
shreeshas95 0:b5b370873460 151
shreeshas95 0:b5b370873460 152 // delete the crc failed TC from the list to free-up memory
shreeshas95 0:b5b370873460 153 // and update the total valid TC
shreeshas95 0:b5b370873460 154 // and GENERATE L1_ACK_TM
shreeshas95 0:b5b370873460 155 void TC_list_cleanup(){
shreeshas95 1:df31097c8442 156 // printf("Inside cleanup\r\n");
shreeshas95 0:b5b370873460 157 TC_list *current_TC = TC_list_header;
shreeshas95 0:b5b370873460 158 TC_list *previous_TC = NULL;
shreeshas95 0:b5b370873460 159
shreeshas95 0:b5b370873460 160 total_valid_TC = 0;
shreeshas95 0:b5b370873460 161 all_crc_pass = true;
shreeshas95 0:b5b370873460 162
shreeshas95 0:b5b370873460 163 TM_List *l1_ack = new TM_List;
shreeshas95 0:b5b370873460 164 TM_List *l1_ack_head = l1_ack;
shreeshas95 0:b5b370873460 165 generate_L1_ack_TM(l1_ack);
shreeshas95 0:b5b370873460 166
shreeshas95 0:b5b370873460 167 int TC_count = 0;
shreeshas95 1:df31097c8442 168
shreeshas95 1:df31097c8442 169 l1_ack->TM_string[4] = 0x01;
shreeshas95 1:df31097c8442 170 l1_ack->TM_string[5] = 0xff;
shreeshas95 0:b5b370873460 171
shreeshas95 0:b5b370873460 172 while(current_TC != NULL){
shreeshas95 1:df31097c8442 173 // printf("Inside null\r\n");
shreeshas95 0:b5b370873460 174
shreeshas95 1:df31097c8442 175 // printf("TC_count = %u\r\npsc = %u\r\n", TC_count, current_TC->TC_string[0]);
shreeshas95 0:b5b370873460 176 // don't care : crc pass or fail
shreeshas95 1:df31097c8442 177 l1_ack->TM_string[6+TC_count] = current_TC->TC_string[0];
shreeshas95 0:b5b370873460 178
shreeshas95 0:b5b370873460 179 if( current_TC->crc_pass ){
shreeshas95 0:b5b370873460 180 ++total_valid_TC;
shreeshas95 0:b5b370873460 181
shreeshas95 0:b5b370873460 182 // set the crc pass field
shreeshas95 1:df31097c8442 183 // l1_ack->TM_string[2] |= ( 1 << (7-TC_count) );
shreeshas95 0:b5b370873460 184
shreeshas95 0:b5b370873460 185 // advance to the next node
shreeshas95 0:b5b370873460 186 previous_TC = current_TC;
shreeshas95 0:b5b370873460 187 current_TC = current_TC->next_TC;
shreeshas95 0:b5b370873460 188 }
shreeshas95 0:b5b370873460 189 // crc fail
shreeshas95 0:b5b370873460 190 else{
shreeshas95 0:b5b370873460 191 // unset the crc pass field
shreeshas95 1:df31097c8442 192 // l1_ack->TM_string[2] &= ~( 1 << (7-TC_count) );
shreeshas95 0:b5b370873460 193
shreeshas95 0:b5b370873460 194 // delete and advance to the next node
shreeshas95 0:b5b370873460 195 TC_list *next = current_TC->next_TC;
shreeshas95 1:df31097c8442 196 // delete_TC(current_TC, previous_TC);
shreeshas95 0:b5b370873460 197 current_TC = next;
shreeshas95 0:b5b370873460 198 all_crc_pass = false;
shreeshas95 0:b5b370873460 199 }
shreeshas95 0:b5b370873460 200 ++TC_count;
shreeshas95 0:b5b370873460 201
shreeshas95 0:b5b370873460 202 // extend the linked list if TC_count > 7
shreeshas95 1:df31097c8442 203 // if(TC_count > 7){
shreeshas95 1:df31097c8442 204 // TC_count = 0;
shreeshas95 1:df31097c8442 205 //
shreeshas95 1:df31097c8442 206 // l1_ack->next_TM = new TM_List;
shreeshas95 1:df31097c8442 207 // l1_ack = l1_ack->next_TM;
shreeshas95 1:df31097c8442 208 // generate_L1_ack_TM(l1_ack);
shreeshas95 1:df31097c8442 209 // }
shreeshas95 1:df31097c8442 210 }
shreeshas95 1:df31097c8442 211
shreeshas95 1:df31097c8442 212 for(int i = 0 ; i < 7 ; ++i){
shreeshas95 1:df31097c8442 213 l1_ack->TM_string[7+i] = 0x00;
shreeshas95 0:b5b370873460 214 }
shreeshas95 0:b5b370873460 215
shreeshas95 1:df31097c8442 216 // printf("Sending data\r\n");
shreeshas95 1:df31097c8442 217 SND_TM(l1_ack, false, 1);
shreeshas95 1:df31097c8442 218 // printf("finished sending data\r\n");
shreeshas95 0:b5b370873460 219
shreeshas95 0:b5b370873460 220 // delete the TM
shreeshas95 1:df31097c8442 221 // l1_ack = l1_ack_head;
shreeshas95 1:df31097c8442 222 // while(l1_ack != NULL){
shreeshas95 1:df31097c8442 223 // TM_List *temp = l1_ack->next_TM;
shreeshas95 1:df31097c8442 224 //// delete l1_ack->TM_string;
shreeshas95 1:df31097c8442 225 //// delete l1_ack;
shreeshas95 1:df31097c8442 226 // l1_ack = temp;
shreeshas95 1:df31097c8442 227 // }
shreeshas95 0:b5b370873460 228
shreeshas95 1:df31097c8442 229 // if(all_crc_pass == false){
shreeshas95 1:df31097c8442 230 // // exit
shreeshas95 1:df31097c8442 231 // }
shreeshas95 1:df31097c8442 232 // printf("Completed cleanup\r\n");
shreeshas95 1:df31097c8442 233 // printf("valid TC = %d\r\n", total_valid_TC);
shreeshas95 0:b5b370873460 234 }
shreeshas95 0:b5b370873460 235
shreeshas95 0:b5b370873460 236 // At this stage ALL NODES ARE CRC PASS
shreeshas95 0:b5b370873460 237 // decode the TCs and fill in the values in the tc-node
shreeshas95 0:b5b370873460 238 void decode_TC(){
shreeshas95 0:b5b370873460 239 printf("Inside decode tc\r\n");
shreeshas95 0:b5b370873460 240 TC_list *node_ptr = TC_list_header;
shreeshas95 0:b5b370873460 241
shreeshas95 0:b5b370873460 242 while( node_ptr != NULL ){
shreeshas95 0:b5b370873460 243
shreeshas95 0:b5b370873460 244 unsigned char temp;
shreeshas95 0:b5b370873460 245
shreeshas95 0:b5b370873460 246 // PSC
shreeshas95 0:b5b370873460 247 node_ptr->packet_seq_count = node_ptr->TC_string[0];
shreeshas95 0:b5b370873460 248 // APID
shreeshas95 0:b5b370873460 249 temp = node_ptr->TC_string[1];
shreeshas95 0:b5b370873460 250 printf("chr for apid is %d\r\n", temp);
shreeshas95 0:b5b370873460 251 node_ptr->apid = (temp >> 6) & 3;
shreeshas95 0:b5b370873460 252 printf("apid = %d\r\n", node_ptr->apid);
shreeshas95 0:b5b370873460 253 // Abort On Nack
shreeshas95 0:b5b370873460 254 node_ptr->abort_on_nack = (temp >> 3) & 1;
shreeshas95 0:b5b370873460 255 // default values of enable and execution
shreeshas95 0:b5b370873460 256 node_ptr->enabled = true;
shreeshas95 0:b5b370873460 257 node_ptr->valid_execution = false;
shreeshas95 0:b5b370873460 258
shreeshas95 0:b5b370873460 259 node_ptr = node_ptr->next_TC;
shreeshas95 0:b5b370873460 260 }
shreeshas95 0:b5b370873460 261 printf("completed decode\r\n");
shreeshas95 0:b5b370873460 262 }
shreeshas95 0:b5b370873460 263
shreeshas95 0:b5b370873460 264 // check for missing tc
shreeshas95 0:b5b370873460 265 // run TC_list_cleanup() before running this function
shreeshas95 0:b5b370873460 266 void check_for_missing_tc(){
shreeshas95 0:b5b370873460 267 printf("inside check for missing\r\n");
shreeshas95 0:b5b370873460 268 no_missing_TC = true;
shreeshas95 0:b5b370873460 269 for(unsigned char psc = PSC_START_VALUE ; psc < (total_valid_TC+PSC_START_VALUE) ; ++psc ) {
shreeshas95 0:b5b370873460 270 bool flag = false;
shreeshas95 0:b5b370873460 271 TC_list *node_ptr = TC_list_header;
shreeshas95 0:b5b370873460 272 while(node_ptr != NULL){
shreeshas95 0:b5b370873460 273 if( node_ptr->packet_seq_count == psc ){
shreeshas95 0:b5b370873460 274 flag = true;
shreeshas95 0:b5b370873460 275 break;
shreeshas95 0:b5b370873460 276 }
shreeshas95 0:b5b370873460 277 else{
shreeshas95 0:b5b370873460 278 node_ptr = node_ptr->next_TC;
shreeshas95 0:b5b370873460 279 }
shreeshas95 0:b5b370873460 280 }
shreeshas95 0:b5b370873460 281 if( flag == false ){
shreeshas95 0:b5b370873460 282 no_missing_TC = false;
shreeshas95 0:b5b370873460 283 // packet with PSC = psc is missing !!
shreeshas95 0:b5b370873460 284 // exit
shreeshas95 0:b5b370873460 285 printf("exit\r\n");
shreeshas95 0:b5b370873460 286 }
shreeshas95 0:b5b370873460 287 }
shreeshas95 0:b5b370873460 288 printf("Completed check for missing\r\n");
shreeshas95 0:b5b370873460 289 }
shreeshas95 0:b5b370873460 290
shreeshas95 0:b5b370873460 291
shreeshas95 0:b5b370873460 292 // At this stage ALL NODE ARE CRC PASS and NO MISSING PACKETS
shreeshas95 0:b5b370873460 293 // function : send TC to the target wait and receive from target
shreeshas95 0:b5b370873460 294 void execute_TC(){
shreeshas95 0:b5b370873460 295 printf("inside execute tc\r\n");
shreeshas95 0:b5b370873460 296 unsigned char psc = PSC_START_VALUE;
shreeshas95 0:b5b370873460 297 while( psc < (total_valid_TC+PSC_START_VALUE) ){
shreeshas95 0:b5b370873460 298 printf("psc = %d\r\n", psc);
shreeshas95 0:b5b370873460 299 if(stop_after_current_TC){
shreeshas95 0:b5b370873460 300 // exit
shreeshas95 0:b5b370873460 301 printf("exit stop after current TC\r\n");
shreeshas95 0:b5b370873460 302 }
shreeshas95 0:b5b370873460 303 else if(execute_high_priority_TC){
shreeshas95 0:b5b370873460 304 printf("Inside hptc\r\n");
shreeshas95 0:b5b370873460 305 TC_list *tc_ptr = TC_list_header;
shreeshas95 0:b5b370873460 306 while(tc_ptr != NULL){
shreeshas95 0:b5b370873460 307 // high priority TC belong APID_CDMS
shreeshas95 0:b5b370873460 308 if( tc_ptr->apid == APID_CDMS ){
shreeshas95 0:b5b370873460 309 // setup the priority order in nested if else
shreeshas95 0:b5b370873460 310 unsigned char temp = tc_ptr->TC_string[2];
shreeshas95 0:b5b370873460 311 unsigned char service = ( temp >> 4 ) & 0xf;
shreeshas95 0:b5b370873460 312 TM_List *tm_ptr;
shreeshas95 0:b5b370873460 313 if(service == HPTC1){
shreeshas95 0:b5b370873460 314 tm_ptr = manage_process(tc_ptr);
shreeshas95 0:b5b370873460 315 }
shreeshas95 0:b5b370873460 316 else if(service == HPTC2){
shreeshas95 0:b5b370873460 317 tm_ptr = manage_process(tc_ptr);
shreeshas95 0:b5b370873460 318 }
shreeshas95 0:b5b370873460 319 // add more entries above
shreeshas95 0:b5b370873460 320
shreeshas95 0:b5b370873460 321 // add number of tm packets also while calling snd
shreeshas95 0:b5b370873460 322 // tc_ptr : SND_TM to GS
shreeshas95 0:b5b370873460 323 // delete tm
shreeshas95 0:b5b370873460 324
shreeshas95 0:b5b370873460 325 if( detect_nack(tm_ptr) ){
shreeshas95 0:b5b370873460 326 if(tc_ptr->abort_on_nack){
shreeshas95 0:b5b370873460 327 // exit
shreeshas95 0:b5b370873460 328 printf("exit");
shreeshas95 0:b5b370873460 329 }
shreeshas95 0:b5b370873460 330 }
shreeshas95 0:b5b370873460 331 else{
shreeshas95 0:b5b370873460 332 tc_ptr->valid_execution = true;
shreeshas95 0:b5b370873460 333 // delete the tc string to free up memory
shreeshas95 0:b5b370873460 334 delete tc_ptr->TC_string;
shreeshas95 0:b5b370873460 335 }
shreeshas95 0:b5b370873460 336 }
shreeshas95 0:b5b370873460 337 }
shreeshas95 0:b5b370873460 338 execute_high_priority_TC = false;
shreeshas95 0:b5b370873460 339 }
shreeshas95 0:b5b370873460 340 else{
shreeshas95 0:b5b370873460 341 printf("executing normal TC\r\n");
shreeshas95 0:b5b370873460 342 TC_list *current_TC = TC_list_header;
shreeshas95 0:b5b370873460 343 // find the tc corresponding to the psc
shreeshas95 0:b5b370873460 344 while(current_TC != NULL){
shreeshas95 0:b5b370873460 345 printf("while : finding tc with psc : %d\r\n", psc);
shreeshas95 0:b5b370873460 346 if( current_TC->packet_seq_count == psc ){
shreeshas95 0:b5b370873460 347 printf("inside IF\r\n");
shreeshas95 0:b5b370873460 348 TM_List *tm_ptr;
shreeshas95 0:b5b370873460 349 printf("apid = %d\r\n", current_TC->apid);
shreeshas95 0:b5b370873460 350 if(current_TC->apid == APID_CDMS){
shreeshas95 0:b5b370873460 351 printf("CDMS APID found!\r\n");
shreeshas95 0:b5b370873460 352 tm_ptr = manage_process(current_TC);
shreeshas95 0:b5b370873460 353 }
shreeshas95 0:b5b370873460 354 else{
shreeshas95 0:b5b370873460 355 // call RLY_TMTC
shreeshas95 0:b5b370873460 356 // wait and receive for TM
shreeshas95 0:b5b370873460 357 tm_ptr = tm_ptr;
shreeshas95 0:b5b370873460 358 }
shreeshas95 0:b5b370873460 359
shreeshas95 0:b5b370873460 360 // add number of tm packets also
shreeshas95 0:b5b370873460 361 printf("sending data\r\n");
shreeshas95 0:b5b370873460 362 SND_TM(tm_ptr, false, 1);
shreeshas95 0:b5b370873460 363 printf("\r\nfinished sending data\r\n");
shreeshas95 0:b5b370873460 364
shreeshas95 0:b5b370873460 365 if( detect_nack(tm_ptr) ){
shreeshas95 0:b5b370873460 366 if(current_TC->abort_on_nack){
shreeshas95 0:b5b370873460 367 // exit
shreeshas95 0:b5b370873460 368 printf("exit");
shreeshas95 0:b5b370873460 369 }
shreeshas95 0:b5b370873460 370 }
shreeshas95 0:b5b370873460 371 else{
shreeshas95 0:b5b370873460 372 current_TC->valid_execution = true;
shreeshas95 0:b5b370873460 373 // delete the tc string to free up memory
shreeshas95 0:b5b370873460 374 printf("deleting TC string\r\n");
shreeshas95 0:b5b370873460 375 // delete current_TC->TC_string;
shreeshas95 0:b5b370873460 376 printf("finished deleting TC string\r\n");
shreeshas95 0:b5b370873460 377 }
shreeshas95 0:b5b370873460 378
shreeshas95 0:b5b370873460 379 // delete the TM received after sending to GS
shreeshas95 0:b5b370873460 380 printf("deleting TM received\r\n");
shreeshas95 0:b5b370873460 381 delete tm_ptr->TM_string;
shreeshas95 0:b5b370873460 382 delete tm_ptr;
shreeshas95 0:b5b370873460 383
shreeshas95 0:b5b370873460 384 // found the tc with psc hence break
shreeshas95 0:b5b370873460 385 break;
shreeshas95 0:b5b370873460 386 }
shreeshas95 0:b5b370873460 387
shreeshas95 0:b5b370873460 388 current_TC = current_TC->next_TC;
shreeshas95 0:b5b370873460 389 }
shreeshas95 0:b5b370873460 390 ++psc;
shreeshas95 0:b5b370873460 391 }
shreeshas95 0:b5b370873460 392 }
shreeshas95 0:b5b370873460 393 printf("completed execute tc\r\n");
shreeshas95 0:b5b370873460 394 }
shreeshas95 0:b5b370873460 395
shreeshas95 0:b5b370873460 396 // ~MNG_TC();
shreeshas95 0:b5b370873460 397
shreeshas95 0:b5b370873460 398 /* data */
shreeshas95 0:b5b370873460 399 };