working version
Dependencies: mbed mbed-rtos SimpleDMA FreescaleIAP eeprom
Fork of CDMS_CODE_FM_28JAN2017 by
common_functions.h@117:bfdc807f3d3c, 2016-02-06 (annotated)
- Committer:
- krishanprajapat
- Date:
- Sat Feb 06 10:38:35 2016 +0000
- Revision:
- 117:bfdc807f3d3c
- Child:
- 119:2b5632bc78ab
added common_functions.h file
Who changed what in which revision?
User | Revision | Line number | New 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 | 117:bfdc807f3d3c | 108 | #define get_call_sign(tm_ptr) {\ |
krishanprajapat | 117:bfdc807f3d3c | 109 | Base_tm* call_sign_tm = new Short_tm;\ |
krishanprajapat | 117:bfdc807f3d3c | 110 | call_sign_tm->next_TM = NULL;\ |
krishanprajapat | 117:bfdc807f3d3c | 111 | tm_ptr = call_sign_tm;\ |
krishanprajapat | 117:bfdc807f3d3c | 112 | for( int i = 0 ; i < TM_SHORT_SIZE ; ++i ){\ |
krishanprajapat | 117:bfdc807f3d3c | 113 | call_sign_tm->TM_string[i] = gCALL_SIGN_STRING[i];\ |
krishanprajapat | 117:bfdc807f3d3c | 114 | }\ |
krishanprajapat | 117:bfdc807f3d3c | 115 | } |