Dummy program to demonstrate problems: working code

Dependencies:   SLCD mbed-rtos mbed

Fork of MNG_TC by Shreesha S

Committer:
shreeshas95
Date:
Wed Apr 15 10:43:22 2015 +0000
Revision:
0:b5b370873460
Child:
1:df31097c8442
without L1 ack TM

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 0:b5b370873460 26 #define TM_SHORT_SIZE 11
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 0:b5b370873460 102 tm_ptr->TM_string[0] = (10 << 4) & 0xf0;
shreeshas95 0:b5b370873460 103 // fill EXEC CODE below
shreeshas95 0:b5b370873460 104 }
shreeshas95 0:b5b370873460 105
shreeshas95 0:b5b370873460 106 TM_list* manage_process(TC_list *ptr_tc){
shreeshas95 0:b5b370873460 107 TM_list *test_TM = new TM_list;
shreeshas95 0:b5b370873460 108 test_TM->next_TM = NULL;
shreeshas95 0:b5b370873460 109 unsigned char *str = new unsigned char[TM_LONG_SIZE];
shreeshas95 0:b5b370873460 110 //ping the TC
shreeshas95 0:b5b370873460 111 test_TM->tmid = 0xa;
shreeshas95 0:b5b370873460 112
shreeshas95 0:b5b370873460 113 // 4 bit TMID
shreeshas95 0:b5b370873460 114 str[0] = (0xa) << 4;
shreeshas95 0:b5b370873460 115
shreeshas95 0:b5b370873460 116 // 20 bit seq. count
shreeshas95 0:b5b370873460 117 str[0] += 0xf;
shreeshas95 0:b5b370873460 118 str[1] = 0xff;
shreeshas95 0:b5b370873460 119 str[2] = 0xff;
shreeshas95 0:b5b370873460 120
shreeshas95 0:b5b370873460 121 // return data and append zeroes
shreeshas95 0:b5b370873460 122 for(int i = 3 ; i < 9 ; ++i ){
shreeshas95 0:b5b370873460 123 str[i] = ptr_tc->TC_string[i];
shreeshas95 0:b5b370873460 124 }
shreeshas95 0:b5b370873460 125 for(int i = 9 ; i < TM_LONG_SIZE ; ++i){
shreeshas95 0:b5b370873460 126 str[i] = 0;
shreeshas95 0:b5b370873460 127 }
shreeshas95 0:b5b370873460 128
shreeshas95 0:b5b370873460 129 test_TM->TM_string = str;
shreeshas95 0:b5b370873460 130
shreeshas95 0:b5b370873460 131 return test_TM;
shreeshas95 0:b5b370873460 132 }
shreeshas95 0:b5b370873460 133
shreeshas95 0:b5b370873460 134 bool detect_nack(TM_list *ptr_tm){
shreeshas95 0:b5b370873460 135 bool bluff = false;
shreeshas95 0:b5b370873460 136 return bluff;
shreeshas95 0:b5b370873460 137 }
shreeshas95 0:b5b370873460 138
shreeshas95 0:b5b370873460 139 public:
shreeshas95 0:b5b370873460 140 // Constructor
shreeshas95 0:b5b370873460 141 MNG_TC(TC_list *head){
shreeshas95 0:b5b370873460 142 total_valid_TC = 0;
shreeshas95 0:b5b370873460 143 TC_list_header = head;
shreeshas95 0:b5b370873460 144 all_crc_pass = true;
shreeshas95 0:b5b370873460 145 no_missing_TC = true;
shreeshas95 0:b5b370873460 146 stop_after_current_TC = false;
shreeshas95 0:b5b370873460 147 execute_high_priority_TC = false;
shreeshas95 0:b5b370873460 148 };
shreeshas95 0:b5b370873460 149
shreeshas95 0:b5b370873460 150 // delete the crc failed TC from the list to free-up memory
shreeshas95 0:b5b370873460 151 // and update the total valid TC
shreeshas95 0:b5b370873460 152 // and GENERATE L1_ACK_TM
shreeshas95 0:b5b370873460 153 void TC_list_cleanup(){
shreeshas95 0:b5b370873460 154 printf("Inside cleanup\r\n");
shreeshas95 0:b5b370873460 155 TC_list *current_TC = TC_list_header;
shreeshas95 0:b5b370873460 156 TC_list *previous_TC = NULL;
shreeshas95 0:b5b370873460 157
shreeshas95 0:b5b370873460 158 total_valid_TC = 0;
shreeshas95 0:b5b370873460 159 all_crc_pass = true;
shreeshas95 0:b5b370873460 160
shreeshas95 0:b5b370873460 161 TM_List *l1_ack = new TM_List;
shreeshas95 0:b5b370873460 162 TM_List *l1_ack_head = l1_ack;
shreeshas95 0:b5b370873460 163 generate_L1_ack_TM(l1_ack);
shreeshas95 0:b5b370873460 164
shreeshas95 0:b5b370873460 165 int TC_count = 0;
shreeshas95 0:b5b370873460 166
shreeshas95 0:b5b370873460 167 while(current_TC != NULL){
shreeshas95 0:b5b370873460 168
shreeshas95 0:b5b370873460 169 // don't care : crc pass or fail
shreeshas95 0:b5b370873460 170 l1_ack->TM_string[3+TC_count] = current_TC->packet_seq_count;
shreeshas95 0:b5b370873460 171
shreeshas95 0:b5b370873460 172 if( current_TC->crc_pass ){
shreeshas95 0:b5b370873460 173 ++total_valid_TC;
shreeshas95 0:b5b370873460 174
shreeshas95 0:b5b370873460 175 // set the crc pass field
shreeshas95 0:b5b370873460 176 l1_ack->TM_string[2] |= ( 1 << (7-TC_count) );
shreeshas95 0:b5b370873460 177
shreeshas95 0:b5b370873460 178 // advance to the next node
shreeshas95 0:b5b370873460 179 previous_TC = current_TC;
shreeshas95 0:b5b370873460 180 current_TC = current_TC->next_TC;
shreeshas95 0:b5b370873460 181 }
shreeshas95 0:b5b370873460 182 // crc fail
shreeshas95 0:b5b370873460 183 else{
shreeshas95 0:b5b370873460 184 // unset the crc pass field
shreeshas95 0:b5b370873460 185 l1_ack->TM_string[2] &= ~( 1 << (7-TC_count) );
shreeshas95 0:b5b370873460 186
shreeshas95 0:b5b370873460 187 // delete and advance to the next node
shreeshas95 0:b5b370873460 188 TC_list *next = current_TC->next_TC;
shreeshas95 0:b5b370873460 189 delete_TC(current_TC, previous_TC);
shreeshas95 0:b5b370873460 190 current_TC = next;
shreeshas95 0:b5b370873460 191 all_crc_pass = false;
shreeshas95 0:b5b370873460 192 }
shreeshas95 0:b5b370873460 193 ++TC_count;
shreeshas95 0:b5b370873460 194
shreeshas95 0:b5b370873460 195 // extend the linked list if TC_count > 7
shreeshas95 0:b5b370873460 196 if(TC_count > 7){
shreeshas95 0:b5b370873460 197 TC_count = 0;
shreeshas95 0:b5b370873460 198
shreeshas95 0:b5b370873460 199 l1_ack->next_TM = new TM_List;
shreeshas95 0:b5b370873460 200 l1_ack = l1_ack->next_TM;
shreeshas95 0:b5b370873460 201 generate_L1_ack_TM(l1_ack);
shreeshas95 0:b5b370873460 202 }
shreeshas95 0:b5b370873460 203 }
shreeshas95 0:b5b370873460 204
shreeshas95 0:b5b370873460 205 // SND_L1_ACK to GS
shreeshas95 0:b5b370873460 206
shreeshas95 0:b5b370873460 207 // delete the TM
shreeshas95 0:b5b370873460 208 l1_ack = l1_ack_head;
shreeshas95 0:b5b370873460 209 while(l1_ack != NULL){
shreeshas95 0:b5b370873460 210 TM_List *temp = l1_ack->next_TM;
shreeshas95 0:b5b370873460 211 delete l1_ack->TM_string;
shreeshas95 0:b5b370873460 212 delete l1_ack;
shreeshas95 0:b5b370873460 213 l1_ack = temp;
shreeshas95 0:b5b370873460 214 }
shreeshas95 0:b5b370873460 215
shreeshas95 0:b5b370873460 216 if(all_crc_pass == false){
shreeshas95 0:b5b370873460 217 // exit
shreeshas95 0:b5b370873460 218 }
shreeshas95 0:b5b370873460 219 printf("Completed cleanup\r\n");
shreeshas95 0:b5b370873460 220 printf("valid TC = %d\r\n", total_valid_TC);
shreeshas95 0:b5b370873460 221 }
shreeshas95 0:b5b370873460 222
shreeshas95 0:b5b370873460 223 // At this stage ALL NODES ARE CRC PASS
shreeshas95 0:b5b370873460 224 // decode the TCs and fill in the values in the tc-node
shreeshas95 0:b5b370873460 225 void decode_TC(){
shreeshas95 0:b5b370873460 226 printf("Inside decode tc\r\n");
shreeshas95 0:b5b370873460 227 TC_list *node_ptr = TC_list_header;
shreeshas95 0:b5b370873460 228
shreeshas95 0:b5b370873460 229 while( node_ptr != NULL ){
shreeshas95 0:b5b370873460 230
shreeshas95 0:b5b370873460 231 unsigned char temp;
shreeshas95 0:b5b370873460 232
shreeshas95 0:b5b370873460 233 // PSC
shreeshas95 0:b5b370873460 234 node_ptr->packet_seq_count = node_ptr->TC_string[0];
shreeshas95 0:b5b370873460 235 // APID
shreeshas95 0:b5b370873460 236 temp = node_ptr->TC_string[1];
shreeshas95 0:b5b370873460 237 printf("chr for apid is %d\r\n", temp);
shreeshas95 0:b5b370873460 238 node_ptr->apid = (temp >> 6) & 3;
shreeshas95 0:b5b370873460 239 printf("apid = %d\r\n", node_ptr->apid);
shreeshas95 0:b5b370873460 240 // Abort On Nack
shreeshas95 0:b5b370873460 241 node_ptr->abort_on_nack = (temp >> 3) & 1;
shreeshas95 0:b5b370873460 242 // default values of enable and execution
shreeshas95 0:b5b370873460 243 node_ptr->enabled = true;
shreeshas95 0:b5b370873460 244 node_ptr->valid_execution = false;
shreeshas95 0:b5b370873460 245
shreeshas95 0:b5b370873460 246 node_ptr = node_ptr->next_TC;
shreeshas95 0:b5b370873460 247 }
shreeshas95 0:b5b370873460 248 printf("completed decode\r\n");
shreeshas95 0:b5b370873460 249 }
shreeshas95 0:b5b370873460 250
shreeshas95 0:b5b370873460 251 // check for missing tc
shreeshas95 0:b5b370873460 252 // run TC_list_cleanup() before running this function
shreeshas95 0:b5b370873460 253 void check_for_missing_tc(){
shreeshas95 0:b5b370873460 254 printf("inside check for missing\r\n");
shreeshas95 0:b5b370873460 255 no_missing_TC = true;
shreeshas95 0:b5b370873460 256 for(unsigned char psc = PSC_START_VALUE ; psc < (total_valid_TC+PSC_START_VALUE) ; ++psc ) {
shreeshas95 0:b5b370873460 257 bool flag = false;
shreeshas95 0:b5b370873460 258 TC_list *node_ptr = TC_list_header;
shreeshas95 0:b5b370873460 259 while(node_ptr != NULL){
shreeshas95 0:b5b370873460 260 if( node_ptr->packet_seq_count == psc ){
shreeshas95 0:b5b370873460 261 flag = true;
shreeshas95 0:b5b370873460 262 break;
shreeshas95 0:b5b370873460 263 }
shreeshas95 0:b5b370873460 264 else{
shreeshas95 0:b5b370873460 265 node_ptr = node_ptr->next_TC;
shreeshas95 0:b5b370873460 266 }
shreeshas95 0:b5b370873460 267 }
shreeshas95 0:b5b370873460 268 if( flag == false ){
shreeshas95 0:b5b370873460 269 no_missing_TC = false;
shreeshas95 0:b5b370873460 270 // packet with PSC = psc is missing !!
shreeshas95 0:b5b370873460 271 // exit
shreeshas95 0:b5b370873460 272 printf("exit\r\n");
shreeshas95 0:b5b370873460 273 }
shreeshas95 0:b5b370873460 274 }
shreeshas95 0:b5b370873460 275 printf("Completed check for missing\r\n");
shreeshas95 0:b5b370873460 276 }
shreeshas95 0:b5b370873460 277
shreeshas95 0:b5b370873460 278
shreeshas95 0:b5b370873460 279 // At this stage ALL NODE ARE CRC PASS and NO MISSING PACKETS
shreeshas95 0:b5b370873460 280 // function : send TC to the target wait and receive from target
shreeshas95 0:b5b370873460 281 void execute_TC(){
shreeshas95 0:b5b370873460 282 printf("inside execute tc\r\n");
shreeshas95 0:b5b370873460 283 unsigned char psc = PSC_START_VALUE;
shreeshas95 0:b5b370873460 284 while( psc < (total_valid_TC+PSC_START_VALUE) ){
shreeshas95 0:b5b370873460 285 printf("psc = %d\r\n", psc);
shreeshas95 0:b5b370873460 286 if(stop_after_current_TC){
shreeshas95 0:b5b370873460 287 // exit
shreeshas95 0:b5b370873460 288 printf("exit stop after current TC\r\n");
shreeshas95 0:b5b370873460 289 }
shreeshas95 0:b5b370873460 290 else if(execute_high_priority_TC){
shreeshas95 0:b5b370873460 291 printf("Inside hptc\r\n");
shreeshas95 0:b5b370873460 292 TC_list *tc_ptr = TC_list_header;
shreeshas95 0:b5b370873460 293 while(tc_ptr != NULL){
shreeshas95 0:b5b370873460 294 // high priority TC belong APID_CDMS
shreeshas95 0:b5b370873460 295 if( tc_ptr->apid == APID_CDMS ){
shreeshas95 0:b5b370873460 296 // setup the priority order in nested if else
shreeshas95 0:b5b370873460 297 unsigned char temp = tc_ptr->TC_string[2];
shreeshas95 0:b5b370873460 298 unsigned char service = ( temp >> 4 ) & 0xf;
shreeshas95 0:b5b370873460 299 TM_List *tm_ptr;
shreeshas95 0:b5b370873460 300 if(service == HPTC1){
shreeshas95 0:b5b370873460 301 tm_ptr = manage_process(tc_ptr);
shreeshas95 0:b5b370873460 302 }
shreeshas95 0:b5b370873460 303 else if(service == HPTC2){
shreeshas95 0:b5b370873460 304 tm_ptr = manage_process(tc_ptr);
shreeshas95 0:b5b370873460 305 }
shreeshas95 0:b5b370873460 306 // add more entries above
shreeshas95 0:b5b370873460 307
shreeshas95 0:b5b370873460 308 // add number of tm packets also while calling snd
shreeshas95 0:b5b370873460 309 // tc_ptr : SND_TM to GS
shreeshas95 0:b5b370873460 310 // delete tm
shreeshas95 0:b5b370873460 311
shreeshas95 0:b5b370873460 312 if( detect_nack(tm_ptr) ){
shreeshas95 0:b5b370873460 313 if(tc_ptr->abort_on_nack){
shreeshas95 0:b5b370873460 314 // exit
shreeshas95 0:b5b370873460 315 printf("exit");
shreeshas95 0:b5b370873460 316 }
shreeshas95 0:b5b370873460 317 }
shreeshas95 0:b5b370873460 318 else{
shreeshas95 0:b5b370873460 319 tc_ptr->valid_execution = true;
shreeshas95 0:b5b370873460 320 // delete the tc string to free up memory
shreeshas95 0:b5b370873460 321 delete tc_ptr->TC_string;
shreeshas95 0:b5b370873460 322 }
shreeshas95 0:b5b370873460 323 }
shreeshas95 0:b5b370873460 324 }
shreeshas95 0:b5b370873460 325 execute_high_priority_TC = false;
shreeshas95 0:b5b370873460 326 }
shreeshas95 0:b5b370873460 327 else{
shreeshas95 0:b5b370873460 328 printf("executing normal TC\r\n");
shreeshas95 0:b5b370873460 329 TC_list *current_TC = TC_list_header;
shreeshas95 0:b5b370873460 330 // find the tc corresponding to the psc
shreeshas95 0:b5b370873460 331 while(current_TC != NULL){
shreeshas95 0:b5b370873460 332 printf("while : finding tc with psc : %d\r\n", psc);
shreeshas95 0:b5b370873460 333 if( current_TC->packet_seq_count == psc ){
shreeshas95 0:b5b370873460 334 printf("inside IF\r\n");
shreeshas95 0:b5b370873460 335 TM_List *tm_ptr;
shreeshas95 0:b5b370873460 336 printf("apid = %d\r\n", current_TC->apid);
shreeshas95 0:b5b370873460 337 if(current_TC->apid == APID_CDMS){
shreeshas95 0:b5b370873460 338 printf("CDMS APID found!\r\n");
shreeshas95 0:b5b370873460 339 tm_ptr = manage_process(current_TC);
shreeshas95 0:b5b370873460 340 }
shreeshas95 0:b5b370873460 341 else{
shreeshas95 0:b5b370873460 342 // call RLY_TMTC
shreeshas95 0:b5b370873460 343 // wait and receive for TM
shreeshas95 0:b5b370873460 344 tm_ptr = tm_ptr;
shreeshas95 0:b5b370873460 345 }
shreeshas95 0:b5b370873460 346
shreeshas95 0:b5b370873460 347 // add number of tm packets also
shreeshas95 0:b5b370873460 348 printf("sending data\r\n");
shreeshas95 0:b5b370873460 349 SND_TM(tm_ptr, false, 1);
shreeshas95 0:b5b370873460 350 printf("\r\nfinished sending data\r\n");
shreeshas95 0:b5b370873460 351
shreeshas95 0:b5b370873460 352 if( detect_nack(tm_ptr) ){
shreeshas95 0:b5b370873460 353 if(current_TC->abort_on_nack){
shreeshas95 0:b5b370873460 354 // exit
shreeshas95 0:b5b370873460 355 printf("exit");
shreeshas95 0:b5b370873460 356 }
shreeshas95 0:b5b370873460 357 }
shreeshas95 0:b5b370873460 358 else{
shreeshas95 0:b5b370873460 359 current_TC->valid_execution = true;
shreeshas95 0:b5b370873460 360 // delete the tc string to free up memory
shreeshas95 0:b5b370873460 361 printf("deleting TC string\r\n");
shreeshas95 0:b5b370873460 362 // delete current_TC->TC_string;
shreeshas95 0:b5b370873460 363 printf("finished deleting TC string\r\n");
shreeshas95 0:b5b370873460 364 }
shreeshas95 0:b5b370873460 365
shreeshas95 0:b5b370873460 366 // delete the TM received after sending to GS
shreeshas95 0:b5b370873460 367 printf("deleting TM received\r\n");
shreeshas95 0:b5b370873460 368 delete tm_ptr->TM_string;
shreeshas95 0:b5b370873460 369 delete tm_ptr;
shreeshas95 0:b5b370873460 370
shreeshas95 0:b5b370873460 371 // found the tc with psc hence break
shreeshas95 0:b5b370873460 372 break;
shreeshas95 0:b5b370873460 373 }
shreeshas95 0:b5b370873460 374
shreeshas95 0:b5b370873460 375 current_TC = current_TC->next_TC;
shreeshas95 0:b5b370873460 376 }
shreeshas95 0:b5b370873460 377 ++psc;
shreeshas95 0:b5b370873460 378 }
shreeshas95 0:b5b370873460 379 }
shreeshas95 0:b5b370873460 380 printf("completed execute tc\r\n");
shreeshas95 0:b5b370873460 381 }
shreeshas95 0:b5b370873460 382
shreeshas95 0:b5b370873460 383 // ~MNG_TC();
shreeshas95 0:b5b370873460 384
shreeshas95 0:b5b370873460 385 /* data */
shreeshas95 0:b5b370873460 386 };