Hi Shubham I am just using this to test PYLD code

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of COM_MNG_TMTC_SIMPLE by Shreesha S

Committer:
ee12b079
Date:
Wed Mar 02 17:17:45 2016 +0000
Revision:
135:522f7d73d04f
Parent:
122:b99f8be0a51a
Testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
krishanprajapat 117:bfdc807f3d3c 1 #define get_tc_list(tm_ptr, thePSC){\
krishanprajapat 117:bfdc807f3d3c 2 uint8_t TM_PSC = 0xFF;\
krishanprajapat 117:bfdc807f3d3c 3 uint8_t TC_PSC = thePSC;\
krishanprajapat 117:bfdc807f3d3c 4 int overflowCount = 0;\
krishanprajapat 117:bfdc807f3d3c 5 uint8_t TC_LIST_TAG = 0x00;\
krishanprajapat 117:bfdc807f3d3c 6 Base_tc *temp_tc = gHEAD_NODE_TCL;\
krishanprajapat 117:bfdc807f3d3c 7 bool first_time = true;\
krishanprajapat 117:bfdc807f3d3c 8 Base_tm *current_tm = NULL;\
krishanprajapat 117:bfdc807f3d3c 9 while( temp_tc != NULL ){\
krishanprajapat 117:bfdc807f3d3c 10 if( overflowCount < TCL_OVERFLOW_CONSTANT ){\
krishanprajapat 117:bfdc807f3d3c 11 TM_PSC = TM_PSC + 1;\
krishanprajapat 117:bfdc807f3d3c 12 /*Increment TM_PSC for every new TM pointer created*/\
krishanprajapat 117:bfdc807f3d3c 13 Base_tm *temp_tm = new Long_tm;\
krishanprajapat 117:bfdc807f3d3c 14 temp_tm->next_TM = NULL;\
krishanprajapat 117:bfdc807f3d3c 15 temp_tm->TM_string[0] = 0x38;\
krishanprajapat 117:bfdc807f3d3c 16 /*Frame type(1) = 0; TMID = 0111; Spare = 000*/\
krishanprajapat 117:bfdc807f3d3c 17 temp_tm->TM_string[1] = TC_PSC;\
krishanprajapat 117:bfdc807f3d3c 18 temp_tm->TM_string[3] = TM_PSC;\
krishanprajapat 117:bfdc807f3d3c 19 int indexCustom = 4, num_of_short_tc = 0;\
krishanprajapat 117:bfdc807f3d3c 20 while(temp_tc != NULL){\
krishanprajapat 117:bfdc807f3d3c 21 if( overflowCount < TCL_OVERFLOW_CONSTANT ){\
krishanprajapat 117:bfdc807f3d3c 22 if( GETshort_or_long_tc(temp_tc) == SHORT_TC_CODE ){\
krishanprajapat 117:bfdc807f3d3c 23 for( int i = 0 ; i < TC_SHORT_SIZE ; ++i ){\
krishanprajapat 117:bfdc807f3d3c 24 temp_tm->TM_string[indexCustom + i] = temp_tc->TC_string[i];\
krishanprajapat 117:bfdc807f3d3c 25 }\
krishanprajapat 117:bfdc807f3d3c 26 indexCustom = indexCustom + TC_SHORT_SIZE;\
krishanprajapat 117:bfdc807f3d3c 27 ++overflowCount;\
krishanprajapat 117:bfdc807f3d3c 28 /*INCREMENT STUFF*/\
krishanprajapat 117:bfdc807f3d3c 29 temp_tc = temp_tc->next_TC;\
krishanprajapat 117:bfdc807f3d3c 30 num_of_short_tc = num_of_short_tc + 1;\
krishanprajapat 117:bfdc807f3d3c 31 if (temp_tc == NULL){\
krishanprajapat 117:bfdc807f3d3c 32 for (int i = indexCustom ; i < TM_LONG_SIZE-2 ; ++i){\
krishanprajapat 117:bfdc807f3d3c 33 temp_tm->TM_string[i] = 0;\
krishanprajapat 117:bfdc807f3d3c 34 /*Fill remaining values with 0*/\
krishanprajapat 117:bfdc807f3d3c 35 }\
krishanprajapat 117:bfdc807f3d3c 36 TC_LIST_TAG = num_of_short_tc;\
krishanprajapat 117:bfdc807f3d3c 37 break;\
krishanprajapat 117:bfdc807f3d3c 38 }\
krishanprajapat 117:bfdc807f3d3c 39 if( (GETshort_or_long_tc(temp_tc) == LONG_TC_CODE) || (num_of_short_tc == OBOSC_TCL_MAX_SHORT_SIZE) ){\
krishanprajapat 117:bfdc807f3d3c 40 /*Next TC is long or memory is filled*/\
krishanprajapat 117:bfdc807f3d3c 41 for(int i = indexCustom; i < TM_LONG_SIZE-2 ; ++i){\
krishanprajapat 117:bfdc807f3d3c 42 temp_tm->TM_string[i] = 0;\
krishanprajapat 117:bfdc807f3d3c 43 /*Fill remaining values with 0*/\
krishanprajapat 117:bfdc807f3d3c 44 }\
krishanprajapat 117:bfdc807f3d3c 45 TC_LIST_TAG = num_of_short_tc;\
krishanprajapat 117:bfdc807f3d3c 46 break;\
krishanprajapat 117:bfdc807f3d3c 47 }\
krishanprajapat 117:bfdc807f3d3c 48 }\
krishanprajapat 117:bfdc807f3d3c 49 else if (TC_LIST_TAG == OBOSC_TCL_TAG_LONG_FIRST_HALF){\
krishanprajapat 117:bfdc807f3d3c 50 /*Long TC, 2nd half*/\
krishanprajapat 117:bfdc807f3d3c 51 for (int i = 0; i < OBOSC_LONG_TC_SECOND_HALF_SIZE ; ++i){\
krishanprajapat 117:bfdc807f3d3c 52 temp_tm->TM_string[indexCustom + i] = temp_tc->TC_string[OBOSC_LONG_TC_FIRST_HALF_SIZE + i];\
krishanprajapat 117:bfdc807f3d3c 53 /*Fill the TM with TC_values*/\
krishanprajapat 117:bfdc807f3d3c 54 }\
krishanprajapat 117:bfdc807f3d3c 55 for (int i = OBOSC_LONG_TC_SECOND_HALF_SIZE + indexCustom ; i < TM_LONG_SIZE-2 ; ++i ){\
krishanprajapat 117:bfdc807f3d3c 56 temp_tm->TM_string[i] = 0;\
krishanprajapat 117:bfdc807f3d3c 57 /*Fill remaining values with 0*/\
krishanprajapat 117:bfdc807f3d3c 58 }\
krishanprajapat 117:bfdc807f3d3c 59 temp_tc = temp_tc->next_TC;\
krishanprajapat 117:bfdc807f3d3c 60 TC_LIST_TAG = OBOSC_TCL_TAG_LONG_SECOND_HALF;\
krishanprajapat 117:bfdc807f3d3c 61 ++overflowCount;\
krishanprajapat 117:bfdc807f3d3c 62 break;\
krishanprajapat 117:bfdc807f3d3c 63 }\
krishanprajapat 117:bfdc807f3d3c 64 else{\
krishanprajapat 117:bfdc807f3d3c 65 /*Long TC, 1st half */\
krishanprajapat 117:bfdc807f3d3c 66 for (int i = 0; i < OBOSC_LONG_TC_FIRST_HALF_SIZE; ++i){\
krishanprajapat 117:bfdc807f3d3c 67 /*gPC.printf("indexCustom = %d\r\n", indexCustom);*/\
krishanprajapat 117:bfdc807f3d3c 68 temp_tm->TM_string[indexCustom + i] = temp_tc->TC_string[i];\
krishanprajapat 117:bfdc807f3d3c 69 /*Fill the TM with TC_values*/\
krishanprajapat 117:bfdc807f3d3c 70 }\
krishanprajapat 117:bfdc807f3d3c 71 for (int i = OBOSC_LONG_TC_FIRST_HALF_SIZE + indexCustom ; i < TM_LONG_SIZE-2 ; ++i ){\
krishanprajapat 117:bfdc807f3d3c 72 temp_tm->TM_string[i] = 0;\
krishanprajapat 117:bfdc807f3d3c 73 /*Fill remaining values with 0*/\
krishanprajapat 117:bfdc807f3d3c 74 }\
krishanprajapat 117:bfdc807f3d3c 75 TC_LIST_TAG = OBOSC_TCL_TAG_LONG_FIRST_HALF;\
krishanprajapat 117:bfdc807f3d3c 76 break;\
krishanprajapat 117:bfdc807f3d3c 77 }\
krishanprajapat 117:bfdc807f3d3c 78 }\
krishanprajapat 117:bfdc807f3d3c 79 else{\
krishanprajapat 117:bfdc807f3d3c 80 /*PENDING: reset cdms*/\
krishanprajapat 117:bfdc807f3d3c 81 break;\
krishanprajapat 117:bfdc807f3d3c 82 }\
krishanprajapat 117:bfdc807f3d3c 83 }\
krishanprajapat 117:bfdc807f3d3c 84 temp_tm->TM_string[2] = TC_LIST_TAG;\
krishanprajapat 117:bfdc807f3d3c 85 /*TC_LIST_TAG as is updated in the inner while loop*/\
krishanprajapat 117:bfdc807f3d3c 86 uint16_t crc16 = crc16_gen(temp_tm->TM_string, TM_LONG_SIZE-2);\
krishanprajapat 117:bfdc807f3d3c 87 temp_tm->TM_string[TM_LONG_SIZE-2] = (crc16 & 0xFF00) >> 8 ;\
krishanprajapat 117:bfdc807f3d3c 88 temp_tm->TM_string[TM_LONG_SIZE-1] = crc16 & 0x00FF;\
krishanprajapat 117:bfdc807f3d3c 89 /*Attach this new node to the TM linked list*/\
krishanprajapat 117:bfdc807f3d3c 90 if( first_time ){\
krishanprajapat 117:bfdc807f3d3c 91 first_time = false;\
krishanprajapat 117:bfdc807f3d3c 92 tm_ptr = temp_tm;\
krishanprajapat 117:bfdc807f3d3c 93 current_tm = temp_tm;\
krishanprajapat 117:bfdc807f3d3c 94 }\
krishanprajapat 117:bfdc807f3d3c 95 else{\
krishanprajapat 117:bfdc807f3d3c 96 current_tm->next_TM = temp_tm;\
krishanprajapat 117:bfdc807f3d3c 97 current_tm = current_tm->next_TM;\
krishanprajapat 117:bfdc807f3d3c 98 }\
krishanprajapat 117:bfdc807f3d3c 99 /*Attach this new node at the end*/\
krishanprajapat 117:bfdc807f3d3c 100 }\
krishanprajapat 117:bfdc807f3d3c 101 else{\
krishanprajapat 117:bfdc807f3d3c 102 /*PENDING: reset CDMS*/\
krishanprajapat 117:bfdc807f3d3c 103 break;\
krishanprajapat 117:bfdc807f3d3c 104 }\
krishanprajapat 117:bfdc807f3d3c 105 }\
krishanprajapat 117:bfdc807f3d3c 106 }
krishanprajapat 117:bfdc807f3d3c 107
krishanprajapat 122:b99f8be0a51a 108 #define put_crc_l1_ack(tm_ptr) {\
krishanprajapat 122:b99f8be0a51a 109 tm_ptr->TM_string[2] = gTOTAL_CRC_FAIL_TC & 0xFF;\
krishanprajapat 122:b99f8be0a51a 110 /*TC LIST STATUS*/\
krishanprajapat 122:b99f8be0a51a 111 tm_ptr->TM_string[3] |= (gMASTER_STATE << 5) & 0xE0;\
krishanprajapat 122:b99f8be0a51a 112 /*PA HOT*/\
krishanprajapat 122:b99f8be0a51a 113 if( gFLAGS & COM_PA_HOT_FLAG ){\
krishanprajapat 122:b99f8be0a51a 114 tm_ptr->TM_string[3] |= (1 << 4);\
krishanprajapat 122:b99f8be0a51a 115 }\
krishanprajapat 122:b99f8be0a51a 116 else{\
krishanprajapat 122:b99f8be0a51a 117 tm_ptr->TM_string[3] &= ~(1 << 4);\
krishanprajapat 122:b99f8be0a51a 118 }\
krishanprajapat 122:b99f8be0a51a 119 uint16_t crc_checksum = crc16_gen(tm_ptr->TM_string, TM_SHORT_SIZE-2);\
krishanprajapat 122:b99f8be0a51a 120 tm_ptr->TM_string[TM_SHORT_SIZE-2] = (crc_checksum >> 8) & 0xFF;\
krishanprajapat 122:b99f8be0a51a 121 tm_ptr->TM_string[TM_SHORT_SIZE-1] = crc_checksum & 0xFF;\
krishanprajapat 122:b99f8be0a51a 122 }
krishanprajapat 122:b99f8be0a51a 123
krishanprajapat 122:b99f8be0a51a 124 #define fill_l1_ack(tm_ptr) {\
krishanprajapat 122:b99f8be0a51a 125 tm_ptr->next_TM = NULL;\
krishanprajapat 122:b99f8be0a51a 126 tm_ptr->TM_string[0] = TMID_ACK_L1 << 4;\
krishanprajapat 122:b99f8be0a51a 127 /*PENDING: PA TEMPERATURE*/\
krishanprajapat 122:b99f8be0a51a 128 tm_ptr->TM_string[1] = gTOTAL_INCORRECT_SIZE_TC & 0xFF;\
krishanprajapat 122:b99f8be0a51a 129 tm_ptr->TM_string[2] = gTOTAL_CRC_FAIL_TC & 0xFF;\
krishanprajapat 122:b99f8be0a51a 130 }
krishanprajapat 122:b99f8be0a51a 131
krishanprajapat 122:b99f8be0a51a 132 #define isPAhot(returnHere){\
krishanprajapat 122:b99f8be0a51a 133 /*PENDING : COMPLETE THIS FUNCTION*/\
krishanprajapat 122:b99f8be0a51a 134 returnHere = 0xFF;\
krishanprajapat 122:b99f8be0a51a 135 }
krishanprajapat 122:b99f8be0a51a 136
krishanprajapat 117:bfdc807f3d3c 137 #define get_call_sign(tm_ptr) {\
krishanprajapat 117:bfdc807f3d3c 138 Base_tm* call_sign_tm = new Short_tm;\
krishanprajapat 117:bfdc807f3d3c 139 call_sign_tm->next_TM = NULL;\
krishanprajapat 117:bfdc807f3d3c 140 tm_ptr = call_sign_tm;\
krishanprajapat 117:bfdc807f3d3c 141 for( int i = 0 ; i < TM_SHORT_SIZE ; ++i ){\
krishanprajapat 117:bfdc807f3d3c 142 call_sign_tm->TM_string[i] = gCALL_SIGN_STRING[i];\
krishanprajapat 117:bfdc807f3d3c 143 }\
krishanprajapat 119:2b5632bc78ab 144 }
krishanprajapat 119:2b5632bc78ab 145
krishanprajapat 119:2b5632bc78ab 146 #define get_ack_l1( tm_ptr ){\
krishanprajapat 119:2b5632bc78ab 147 Base_tc *current_TC = gHEAD_NODE_TCL;\
krishanprajapat 119:2b5632bc78ab 148 Base_tm *l1_ack = new Short_tm;\
krishanprajapat 119:2b5632bc78ab 149 /*APPEND TO THE tm_ptr HERE*/\
krishanprajapat 119:2b5632bc78ab 150 tm_ptr = l1_ack;\
krishanprajapat 119:2b5632bc78ab 151 fill_l1_ack(l1_ack);\
krishanprajapat 119:2b5632bc78ab 152 int TC_count = 0;\
krishanprajapat 119:2b5632bc78ab 153 int overflowCountL1 = 0;\
krishanprajapat 119:2b5632bc78ab 154 while(current_TC != NULL){\
krishanprajapat 119:2b5632bc78ab 155 if( overflowCountL1 < TCL_OVERFLOW_CONSTANT ){\
krishanprajapat 119:2b5632bc78ab 156 /*IF CRC PASS*/\
krishanprajapat 119:2b5632bc78ab 157 if( (GETcrc_pass(current_TC) == 1) ){\
krishanprajapat 119:2b5632bc78ab 158 if(TC_count > 4){\
krishanprajapat 119:2b5632bc78ab 159 /*PENDING: FILL TC_EXEC_CODE, APPEND CRC TO THE TM*/\
krishanprajapat 119:2b5632bc78ab 160 put_crc_l1_ack( l1_ack );\
krishanprajapat 119:2b5632bc78ab 161 /*extend the TM linked list*/\
krishanprajapat 119:2b5632bc78ab 162 TC_count = 0;\
krishanprajapat 119:2b5632bc78ab 163 l1_ack->next_TM = new Short_tm;\
krishanprajapat 119:2b5632bc78ab 164 l1_ack = l1_ack->next_TM;\
krishanprajapat 119:2b5632bc78ab 165 fill_l1_ack(l1_ack);\
krishanprajapat 119:2b5632bc78ab 166 }\
krishanprajapat 119:2b5632bc78ab 167 /*PSC starts from 7th byte*/\
krishanprajapat 119:2b5632bc78ab 168 l1_ack->TM_string[6+TC_count] = GETpacket_seq_count(current_TC);\
krishanprajapat 119:2b5632bc78ab 169 /*TC exec status*/\
krishanprajapat 119:2b5632bc78ab 170 switch(TC_count){\
krishanprajapat 119:2b5632bc78ab 171 case 0:\
krishanprajapat 119:2b5632bc78ab 172 l1_ack->TM_string[3] = (GETexec_status(current_TC)) & 0x0F;\
krishanprajapat 119:2b5632bc78ab 173 break;\
krishanprajapat 119:2b5632bc78ab 174 case 1:\
krishanprajapat 119:2b5632bc78ab 175 l1_ack->TM_string[4] = (GETexec_status(current_TC) << 4) & 0xF0;\
krishanprajapat 119:2b5632bc78ab 176 break;\
krishanprajapat 119:2b5632bc78ab 177 case 2:\
krishanprajapat 119:2b5632bc78ab 178 l1_ack->TM_string[4] |= (GETexec_status(current_TC)) & 0x0F;\
krishanprajapat 119:2b5632bc78ab 179 break;\
krishanprajapat 119:2b5632bc78ab 180 case 3:\
krishanprajapat 119:2b5632bc78ab 181 l1_ack->TM_string[5] = (GETexec_status(current_TC) << 4) & 0xF0;\
krishanprajapat 119:2b5632bc78ab 182 break;\
krishanprajapat 119:2b5632bc78ab 183 case 4:\
krishanprajapat 119:2b5632bc78ab 184 l1_ack->TM_string[5] |= (GETexec_status(current_TC)) & 0x0F;\
krishanprajapat 119:2b5632bc78ab 185 }\
krishanprajapat 119:2b5632bc78ab 186 ++TC_count;\
krishanprajapat 119:2b5632bc78ab 187 }\
krishanprajapat 119:2b5632bc78ab 188 current_TC = current_TC->next_TC;\
krishanprajapat 119:2b5632bc78ab 189 ++overflowCountL1;\
krishanprajapat 119:2b5632bc78ab 190 }\
krishanprajapat 119:2b5632bc78ab 191 else{\
krishanprajapat 119:2b5632bc78ab 192 /*PENDING: RESET CDMS*/\
krishanprajapat 119:2b5632bc78ab 193 break;\
krishanprajapat 119:2b5632bc78ab 194 }\
krishanprajapat 119:2b5632bc78ab 195 }\
krishanprajapat 119:2b5632bc78ab 196 /*FILL UP THE REMAINING FIELDS WITH 0x00 as PSC, AND 0xF as tc exec status*/\
krishanprajapat 119:2b5632bc78ab 197 if( (TC_count < 5) && (TC_count != 0) ){\
krishanprajapat 119:2b5632bc78ab 198 while(TC_count < 5){\
krishanprajapat 119:2b5632bc78ab 199 l1_ack->TM_string[6+TC_count] = 0x00;\
krishanprajapat 119:2b5632bc78ab 200 switch(TC_count){\
krishanprajapat 119:2b5632bc78ab 201 case 1:\
krishanprajapat 119:2b5632bc78ab 202 l1_ack->TM_string[4] = 0xF0;\
krishanprajapat 119:2b5632bc78ab 203 break;\
krishanprajapat 119:2b5632bc78ab 204 case 2:\
krishanprajapat 119:2b5632bc78ab 205 l1_ack->TM_string[4] |= 0x0F;\
krishanprajapat 119:2b5632bc78ab 206 break;\
krishanprajapat 119:2b5632bc78ab 207 case 3:\
krishanprajapat 119:2b5632bc78ab 208 l1_ack->TM_string[5] = 0xF0;\
krishanprajapat 119:2b5632bc78ab 209 break;\
krishanprajapat 119:2b5632bc78ab 210 case 4:\
krishanprajapat 119:2b5632bc78ab 211 l1_ack->TM_string[5] |= 0x0F;\
krishanprajapat 119:2b5632bc78ab 212 }\
krishanprajapat 119:2b5632bc78ab 213 ++TC_count;\
krishanprajapat 119:2b5632bc78ab 214 }\
krishanprajapat 119:2b5632bc78ab 215 }\
krishanprajapat 119:2b5632bc78ab 216 put_crc_l1_ack(l1_ack);\
krishanprajapat 117:bfdc807f3d3c 217 }