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:
14:a4c259ca0325
DUMMP program to demonstrate the problems : working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 13:7b27a8e9cbb4 1 //without warning
shreeshas95 13:7b27a8e9cbb4 2 void adf_not_SDcard();
shreeshas95 13:7b27a8e9cbb4 3
shreeshas95 13:7b27a8e9cbb4 4 #define S_FRAME_SIZE 48
shreeshas95 13:7b27a8e9cbb4 5 #define EoS_SIZE 120
shreeshas95 13:7b27a8e9cbb4 6 #define SEGMENT_SIZE 40
shreeshas95 13:7b27a8e9cbb4 7 #define TM_FRAME_SIZE 134
shreeshas95 13:7b27a8e9cbb4 8
shreeshas95 13:7b27a8e9cbb4 9 class SND_TM{
shreeshas95 13:7b27a8e9cbb4 10
shreeshas95 13:7b27a8e9cbb4 11 int diff_prev;
shreeshas95 13:7b27a8e9cbb4 12 int type0_no; //number of type zero frames
shreeshas95 13:7b27a8e9cbb4 13 int type1_no;
shreeshas95 13:7b27a8e9cbb4 14 int total_frames; //number of type one packe (TMP)
shreeshas95 13:7b27a8e9cbb4 15 int segment_no; //number of type one packe (TMP)
shreeshas95 13:7b27a8e9cbb4 16 TM_list * list_ptr;
shreeshas95 13:7b27a8e9cbb4 17 unsigned char SCH40[5];
shreeshas95 13:7b27a8e9cbb4 18 unsigned char FCCH80[10];
shreeshas95 14:a4c259ca0325 19 bool reset_flag; //for reseting all the variables when new list is given.
shreeshas95 14:a4c259ca0325 20
shreeshas95 14:a4c259ca0325 21
shreeshas95 14:a4c259ca0325 22 // transmit data variables
shreeshas95 14:a4c259ca0325 23 int Tframe_counter; //contains the number of Tframes in a segment had been written
shreeshas95 14:a4c259ca0325 24 int EOS_counter; //count no of byres of eos have been weitten in the buffer
shreeshas95 14:a4c259ca0325 25 int Sframe_Counter;
shreeshas95 14:a4c259ca0325 26 int SCH40_counter;
shreeshas95 14:a4c259ca0325 27 int string_space_counter;
shreeshas95 14:a4c259ca0325 28 int FCCH80_counter;
shreeshas95 14:a4c259ca0325 29 int rolling_buffer_counter; //maximum it can be 1152 bits
shreeshas95 14:a4c259ca0325 30 bool Sframe_flag;
shreeshas95 14:a4c259ca0325 31 bool new_Tframe_flag;
shreeshas95 14:a4c259ca0325 32 bool FCCH80_flag;
shreeshas95 14:a4c259ca0325 33 bool data_flag;
shreeshas95 14:a4c259ca0325 34 int uv;
shreeshas95 14:a4c259ca0325 35 bool repete_data_flag;
shreeshas95 14:a4c259ca0325 36 int segment_counter;
shreeshas95 14:a4c259ca0325 37 bool diff_enc_flag;
shreeshas95 14:a4c259ca0325 38
shreeshas95 14:a4c259ca0325 39 // make_DataStream variables
shreeshas95 14:a4c259ca0325 40 bool state;
shreeshas95 14:a4c259ca0325 41 int DS_counter;
shreeshas95 14:a4c259ca0325 42 unsigned char * DS_ptr;
shreeshas95 14:a4c259ca0325 43 bool DS_flag;
shreeshas95 14:a4c259ca0325 44
shreeshas95 14:a4c259ca0325 45 // type 1 frame
shreeshas95 14:a4c259ca0325 46 TM_list *T1F_pointer ;
shreeshas95 14:a4c259ca0325 47 int T1F_counter;
shreeshas95 14:a4c259ca0325 48
shreeshas95 14:a4c259ca0325 49 TM_list *T0F_pointer ;
shreeshas95 13:7b27a8e9cbb4 50
shreeshas95 13:7b27a8e9cbb4 51 void differential_encode(unsigned char* ptr, int length){
shreeshas95 13:7b27a8e9cbb4 52
shreeshas95 13:7b27a8e9cbb4 53 for(int i=0; i<length;i++){
shreeshas95 13:7b27a8e9cbb4 54
shreeshas95 13:7b27a8e9cbb4 55 unsigned char s = ptr[i] , t;
shreeshas95 13:7b27a8e9cbb4 56 t = s ^ (s >> 1);
shreeshas95 13:7b27a8e9cbb4 57 (diff_prev == 0) ? t=t^0x00 : t=t^0x80 ;
shreeshas95 13:7b27a8e9cbb4 58 diff_prev = int(s & 0x01);
shreeshas95 13:7b27a8e9cbb4 59 ptr[i] = t;
shreeshas95 13:7b27a8e9cbb4 60 }
shreeshas95 13:7b27a8e9cbb4 61
shreeshas95 13:7b27a8e9cbb4 62 }
shreeshas95 13:7b27a8e9cbb4 63
shreeshas95 13:7b27a8e9cbb4 64 int decide_type(unsigned char tmid){
shreeshas95 13:7b27a8e9cbb4 65 int type = 0;
shreeshas95 13:7b27a8e9cbb4 66
shreeshas95 13:7b27a8e9cbb4 67 switch(tmid){
shreeshas95 13:7b27a8e9cbb4 68 case 0x1:
shreeshas95 13:7b27a8e9cbb4 69 case 0x2:
shreeshas95 13:7b27a8e9cbb4 70 case 0x3:
shreeshas95 13:7b27a8e9cbb4 71 case 0x4:
shreeshas95 13:7b27a8e9cbb4 72 case 0x5:
shreeshas95 13:7b27a8e9cbb4 73 case 0x6:
shreeshas95 13:7b27a8e9cbb4 74 case 0x7:
shreeshas95 13:7b27a8e9cbb4 75 case 0x8:
shreeshas95 13:7b27a8e9cbb4 76 type = 0;
shreeshas95 13:7b27a8e9cbb4 77 break;
shreeshas95 13:7b27a8e9cbb4 78 case 0xA:
shreeshas95 13:7b27a8e9cbb4 79 case 0xB:
shreeshas95 13:7b27a8e9cbb4 80 case 0xC:
shreeshas95 13:7b27a8e9cbb4 81 case 0xD:
shreeshas95 13:7b27a8e9cbb4 82 case 0xE:
shreeshas95 13:7b27a8e9cbb4 83 type = 1;
shreeshas95 13:7b27a8e9cbb4 84 break;
shreeshas95 13:7b27a8e9cbb4 85 }
shreeshas95 13:7b27a8e9cbb4 86
shreeshas95 13:7b27a8e9cbb4 87 return type;
shreeshas95 13:7b27a8e9cbb4 88 }
shreeshas95 13:7b27a8e9cbb4 89
shreeshas95 14:a4c259ca0325 90 void inline data_number(){
shreeshas95 13:7b27a8e9cbb4 91
shreeshas95 13:7b27a8e9cbb4 92 int type1_frame_no;
shreeshas95 13:7b27a8e9cbb4 93 TM_list *head = list_ptr;
shreeshas95 13:7b27a8e9cbb4 94
shreeshas95 13:7b27a8e9cbb4 95 type0_no = 0;
shreeshas95 13:7b27a8e9cbb4 96 type1_no = 0;
shreeshas95 13:7b27a8e9cbb4 97
shreeshas95 13:7b27a8e9cbb4 98 do{
shreeshas95 13:7b27a8e9cbb4 99
shreeshas95 13:7b27a8e9cbb4 100 switch( decide_type(head->tmid) ){
shreeshas95 13:7b27a8e9cbb4 101 case 0:
shreeshas95 13:7b27a8e9cbb4 102 type0_no++;
shreeshas95 13:7b27a8e9cbb4 103 break;
shreeshas95 13:7b27a8e9cbb4 104 case 1:
shreeshas95 13:7b27a8e9cbb4 105 type1_no++;
shreeshas95 13:7b27a8e9cbb4 106
shreeshas95 13:7b27a8e9cbb4 107 }
shreeshas95 13:7b27a8e9cbb4 108
shreeshas95 13:7b27a8e9cbb4 109 head=head->next_TM;
shreeshas95 13:7b27a8e9cbb4 110
shreeshas95 13:7b27a8e9cbb4 111 }
shreeshas95 13:7b27a8e9cbb4 112 while(head->next_TM != NULL);
shreeshas95 13:7b27a8e9cbb4 113
shreeshas95 13:7b27a8e9cbb4 114 type1_frame_no = ( type1_no % 10 == 0 )? (type1_no / 10) : ( (type1_no / 10) + 1);
shreeshas95 13:7b27a8e9cbb4 115 total_frames = type0_no + type1_frame_no ;
shreeshas95 13:7b27a8e9cbb4 116 segment_no = (total_frames*2 % (SEGMENT_SIZE-1) == 0) ? ( total_frames*2/(SEGMENT_SIZE-1) ) : (total_frames*2/(SEGMENT_SIZE-1) + 1); //subtracting 1 since the last Tframe is not detected
shreeshas95 13:7b27a8e9cbb4 117
shreeshas95 13:7b27a8e9cbb4 118 }
shreeshas95 13:7b27a8e9cbb4 119
shreeshas95 13:7b27a8e9cbb4 120
shreeshas95 13:7b27a8e9cbb4 121 TM_list* next_type_structure(TM_list *ptr){
shreeshas95 13:7b27a8e9cbb4 122
shreeshas95 13:7b27a8e9cbb4 123 if(ptr == NULL){
shreeshas95 13:7b27a8e9cbb4 124 return NULL;
shreeshas95 13:7b27a8e9cbb4 125 }
shreeshas95 13:7b27a8e9cbb4 126
shreeshas95 13:7b27a8e9cbb4 127 int temp = decide_type(ptr->tmid);
shreeshas95 13:7b27a8e9cbb4 128
shreeshas95 13:7b27a8e9cbb4 129 if((temp == 0) && (ptr->next_TM != NULL) ){
shreeshas95 13:7b27a8e9cbb4 130
shreeshas95 13:7b27a8e9cbb4 131 do{
shreeshas95 13:7b27a8e9cbb4 132 ptr = ptr->next_TM;
shreeshas95 13:7b27a8e9cbb4 133 temp = decide_type(ptr->tmid);
shreeshas95 13:7b27a8e9cbb4 134 }
shreeshas95 13:7b27a8e9cbb4 135 while(temp == 1 && ptr->next_TM != NULL);
shreeshas95 13:7b27a8e9cbb4 136
shreeshas95 13:7b27a8e9cbb4 137 if(temp == 1){
shreeshas95 13:7b27a8e9cbb4 138 return NULL;
shreeshas95 13:7b27a8e9cbb4 139 }
shreeshas95 13:7b27a8e9cbb4 140
shreeshas95 13:7b27a8e9cbb4 141 }
shreeshas95 13:7b27a8e9cbb4 142
shreeshas95 13:7b27a8e9cbb4 143 else if((temp == 1) && (ptr->next_TM != NULL)){
shreeshas95 13:7b27a8e9cbb4 144
shreeshas95 13:7b27a8e9cbb4 145 do{
shreeshas95 13:7b27a8e9cbb4 146 ptr = ptr->next_TM;
shreeshas95 13:7b27a8e9cbb4 147 temp = decide_type(ptr->tmid);
shreeshas95 13:7b27a8e9cbb4 148 }
shreeshas95 13:7b27a8e9cbb4 149 while(temp == 0 && ptr->next_TM != NULL);
shreeshas95 13:7b27a8e9cbb4 150
shreeshas95 13:7b27a8e9cbb4 151 if(temp == 0){
shreeshas95 13:7b27a8e9cbb4 152 return NULL;
shreeshas95 13:7b27a8e9cbb4 153 }
shreeshas95 13:7b27a8e9cbb4 154
shreeshas95 13:7b27a8e9cbb4 155
shreeshas95 13:7b27a8e9cbb4 156 }
shreeshas95 13:7b27a8e9cbb4 157
shreeshas95 13:7b27a8e9cbb4 158 else{
shreeshas95 13:7b27a8e9cbb4 159
shreeshas95 13:7b27a8e9cbb4 160 // cout<<"\nNULL returned by next_type_structure\n";
shreeshas95 13:7b27a8e9cbb4 161 return NULL;
shreeshas95 13:7b27a8e9cbb4 162
shreeshas95 13:7b27a8e9cbb4 163 }
shreeshas95 13:7b27a8e9cbb4 164 return ptr;
shreeshas95 13:7b27a8e9cbb4 165 }
shreeshas95 13:7b27a8e9cbb4 166
shreeshas95 13:7b27a8e9cbb4 167 /*
shreeshas95 13:7b27a8e9cbb4 168 brief: take input type 0 or 1 and return the address of the first node in the list that have that type
shreeshas95 13:7b27a8e9cbb4 169 parameter: type 0 or 1
shreeshas95 13:7b27a8e9cbb4 170 return: pointer of the first node having same type
shreeshas95 13:7b27a8e9cbb4 171 */
shreeshas95 13:7b27a8e9cbb4 172 TM_list* first_type_structure(int type){
shreeshas95 13:7b27a8e9cbb4 173 TM_list* temp_ptr = list_ptr;
shreeshas95 13:7b27a8e9cbb4 174
shreeshas95 13:7b27a8e9cbb4 175 if(type == 0){
shreeshas95 13:7b27a8e9cbb4 176 while((decide_type(temp_ptr->tmid) == 1)){
shreeshas95 13:7b27a8e9cbb4 177 temp_ptr = temp_ptr->next_TM;
shreeshas95 13:7b27a8e9cbb4 178
shreeshas95 13:7b27a8e9cbb4 179 if(temp_ptr == NULL){
shreeshas95 13:7b27a8e9cbb4 180 return NULL ;
shreeshas95 13:7b27a8e9cbb4 181 }
shreeshas95 13:7b27a8e9cbb4 182 }
shreeshas95 13:7b27a8e9cbb4 183 }
shreeshas95 13:7b27a8e9cbb4 184
shreeshas95 13:7b27a8e9cbb4 185 else if(type == 1){
shreeshas95 13:7b27a8e9cbb4 186 while((decide_type(temp_ptr->tmid) == 0) ){
shreeshas95 13:7b27a8e9cbb4 187 temp_ptr = temp_ptr->next_TM;
shreeshas95 13:7b27a8e9cbb4 188
shreeshas95 13:7b27a8e9cbb4 189 if(temp_ptr == NULL){
shreeshas95 13:7b27a8e9cbb4 190 return NULL;
shreeshas95 13:7b27a8e9cbb4 191 }
shreeshas95 13:7b27a8e9cbb4 192 }
shreeshas95 13:7b27a8e9cbb4 193 }
shreeshas95 13:7b27a8e9cbb4 194 return temp_ptr;
shreeshas95 13:7b27a8e9cbb4 195 }
shreeshas95 13:7b27a8e9cbb4 196
shreeshas95 13:7b27a8e9cbb4 197 unsigned char TMframe_type1[TM_FRAME_SIZE];
shreeshas95 13:7b27a8e9cbb4 198 bool type1_frame_flag; //should be true for every new list
shreeshas95 13:7b27a8e9cbb4 199
shreeshas95 13:7b27a8e9cbb4 200 unsigned char * type1_frame(){
shreeshas95 13:7b27a8e9cbb4 201
shreeshas95 13:7b27a8e9cbb4 202 int i;
shreeshas95 13:7b27a8e9cbb4 203
shreeshas95 13:7b27a8e9cbb4 204 if(type1_frame_flag){
shreeshas95 14:a4c259ca0325 205 T1F_pointer = first_type_structure(1);
shreeshas95 14:a4c259ca0325 206 T1F_counter = 0;
shreeshas95 13:7b27a8e9cbb4 207 type1_frame_flag = false;
shreeshas95 13:7b27a8e9cbb4 208 }
shreeshas95 13:7b27a8e9cbb4 209
shreeshas95 13:7b27a8e9cbb4 210
shreeshas95 13:7b27a8e9cbb4 211
shreeshas95 14:a4c259ca0325 212 for(i = 4 ; (i < 134) && (T1F_pointer != NULL) ; i++){
shreeshas95 14:a4c259ca0325 213 TMframe_type1[i] = T1F_pointer->TM_string[T1F_counter];
shreeshas95 13:7b27a8e9cbb4 214
shreeshas95 14:a4c259ca0325 215 if(T1F_counter++ == 12){
shreeshas95 14:a4c259ca0325 216 T1F_counter = 0;
shreeshas95 14:a4c259ca0325 217 T1F_pointer = next_type_structure(T1F_pointer);
shreeshas95 13:7b27a8e9cbb4 218 }
shreeshas95 13:7b27a8e9cbb4 219 }
shreeshas95 13:7b27a8e9cbb4 220
shreeshas95 13:7b27a8e9cbb4 221 // header
shreeshas95 13:7b27a8e9cbb4 222 TMframe_type1[0] = 1<<7 + ( (i-4)/10 )<<3; //( (i-4)/10 ) gives number of packets in the frame
shreeshas95 13:7b27a8e9cbb4 223 //insert time ;
shreeshas95 13:7b27a8e9cbb4 224 TMframe_type1[3] = CRC::crc16_gen(TMframe_type1,3);
shreeshas95 13:7b27a8e9cbb4 225 //end header
shreeshas95 13:7b27a8e9cbb4 226
shreeshas95 14:a4c259ca0325 227 if(T1F_pointer == NULL){
shreeshas95 13:7b27a8e9cbb4 228 for( ; i < 134 ; i++){ //repeating ;ast packet to fill up the extra space
shreeshas95 13:7b27a8e9cbb4 229 TMframe_type1[i] = TMframe_type1[i-13];
shreeshas95 13:7b27a8e9cbb4 230 }
shreeshas95 13:7b27a8e9cbb4 231
shreeshas95 13:7b27a8e9cbb4 232 }
shreeshas95 13:7b27a8e9cbb4 233 return TMframe_type1;
shreeshas95 13:7b27a8e9cbb4 234
shreeshas95 13:7b27a8e9cbb4 235 }
shreeshas95 13:7b27a8e9cbb4 236
shreeshas95 13:7b27a8e9cbb4 237 bool type0_frame_flag;
shreeshas95 13:7b27a8e9cbb4 238
shreeshas95 13:7b27a8e9cbb4 239 unsigned char* type0_frame(){
shreeshas95 14:a4c259ca0325 240
shreeshas95 13:7b27a8e9cbb4 241
shreeshas95 13:7b27a8e9cbb4 242 if(type0_frame_flag){
shreeshas95 14:a4c259ca0325 243 T0F_pointer = first_type_structure(0);
shreeshas95 13:7b27a8e9cbb4 244 type0_frame_flag = false;
shreeshas95 13:7b27a8e9cbb4 245 }
shreeshas95 13:7b27a8e9cbb4 246
shreeshas95 13:7b27a8e9cbb4 247 else {
shreeshas95 14:a4c259ca0325 248 T0F_pointer = next_type_structure(T0F_pointer);
shreeshas95 13:7b27a8e9cbb4 249
shreeshas95 13:7b27a8e9cbb4 250 }
shreeshas95 14:a4c259ca0325 251 return T0F_pointer->TM_string;
shreeshas95 13:7b27a8e9cbb4 252 }
shreeshas95 13:7b27a8e9cbb4 253
shreeshas95 13:7b27a8e9cbb4 254
shreeshas95 13:7b27a8e9cbb4 255
shreeshas95 13:7b27a8e9cbb4 256 void interleave( unsigned char *input, unsigned char *output ){
shreeshas95 13:7b27a8e9cbb4 257
shreeshas95 13:7b27a8e9cbb4 258 unsigned int outState = 0;
shreeshas95 13:7b27a8e9cbb4 259 unsigned int outByte = 0;
shreeshas95 13:7b27a8e9cbb4 260
shreeshas95 13:7b27a8e9cbb4 261 for( unsigned int i = 0 ; i < 36 ; ++i ){
shreeshas95 13:7b27a8e9cbb4 262 for(unsigned int j = 0 ; j < 30 ; ++j){
shreeshas95 13:7b27a8e9cbb4 263 unsigned int x = j*36+i;
shreeshas95 13:7b27a8e9cbb4 264 unsigned char tempBit = ((input[x >> 3]) >> (7-(x % 8))) & 1;
shreeshas95 13:7b27a8e9cbb4 265 switch(outState){
shreeshas95 13:7b27a8e9cbb4 266 case 0:
shreeshas95 13:7b27a8e9cbb4 267 outState = 1;
shreeshas95 13:7b27a8e9cbb4 268 output[outByte] = tempBit << 7;
shreeshas95 13:7b27a8e9cbb4 269 break;
shreeshas95 13:7b27a8e9cbb4 270 case 1:
shreeshas95 13:7b27a8e9cbb4 271 outState = 2;
shreeshas95 13:7b27a8e9cbb4 272 output[outByte] += tempBit << 6;
shreeshas95 13:7b27a8e9cbb4 273 break;
shreeshas95 13:7b27a8e9cbb4 274 case 2:
shreeshas95 13:7b27a8e9cbb4 275 outState = 3;
shreeshas95 13:7b27a8e9cbb4 276 output[outByte] += tempBit << 5;
shreeshas95 13:7b27a8e9cbb4 277 break;
shreeshas95 13:7b27a8e9cbb4 278 case 3:
shreeshas95 13:7b27a8e9cbb4 279 outState = 4;
shreeshas95 13:7b27a8e9cbb4 280 output[outByte] += tempBit << 4;
shreeshas95 13:7b27a8e9cbb4 281 break;
shreeshas95 13:7b27a8e9cbb4 282 case 4:
shreeshas95 13:7b27a8e9cbb4 283 outState = 5;
shreeshas95 13:7b27a8e9cbb4 284 output[outByte] += tempBit << 3;
shreeshas95 13:7b27a8e9cbb4 285 break;
shreeshas95 13:7b27a8e9cbb4 286 case 5:
shreeshas95 13:7b27a8e9cbb4 287 outState = 6;
shreeshas95 13:7b27a8e9cbb4 288 output[outByte] += tempBit << 2;
shreeshas95 13:7b27a8e9cbb4 289 break;
shreeshas95 13:7b27a8e9cbb4 290 case 6:
shreeshas95 13:7b27a8e9cbb4 291 outState = 7;
shreeshas95 13:7b27a8e9cbb4 292 output[outByte] += tempBit << 1;
shreeshas95 13:7b27a8e9cbb4 293 break;
shreeshas95 13:7b27a8e9cbb4 294 case 7:
shreeshas95 13:7b27a8e9cbb4 295 outState = 0;
shreeshas95 13:7b27a8e9cbb4 296 output[outByte] += tempBit;
shreeshas95 13:7b27a8e9cbb4 297 ++outByte;
shreeshas95 13:7b27a8e9cbb4 298 break;
shreeshas95 13:7b27a8e9cbb4 299 }
shreeshas95 13:7b27a8e9cbb4 300 }
shreeshas95 13:7b27a8e9cbb4 301 for(unsigned int j = 0 ; j < 2 ; ++j){
shreeshas95 13:7b27a8e9cbb4 302 switch(outState){
shreeshas95 13:7b27a8e9cbb4 303 case 0:
shreeshas95 13:7b27a8e9cbb4 304 output[outByte] = 0;
shreeshas95 13:7b27a8e9cbb4 305 outState = 1;
shreeshas95 13:7b27a8e9cbb4 306 break;
shreeshas95 13:7b27a8e9cbb4 307 case 1:
shreeshas95 13:7b27a8e9cbb4 308 outState = 2;
shreeshas95 13:7b27a8e9cbb4 309 break;
shreeshas95 13:7b27a8e9cbb4 310 case 2:
shreeshas95 13:7b27a8e9cbb4 311 outState = 3;
shreeshas95 13:7b27a8e9cbb4 312 break;
shreeshas95 13:7b27a8e9cbb4 313 case 3:
shreeshas95 13:7b27a8e9cbb4 314 outState = 4;
shreeshas95 13:7b27a8e9cbb4 315 break;
shreeshas95 13:7b27a8e9cbb4 316 case 4:
shreeshas95 13:7b27a8e9cbb4 317 outState = 5;
shreeshas95 13:7b27a8e9cbb4 318 break;
shreeshas95 13:7b27a8e9cbb4 319 case 5:
shreeshas95 13:7b27a8e9cbb4 320 outState = 6;
shreeshas95 13:7b27a8e9cbb4 321 break;
shreeshas95 13:7b27a8e9cbb4 322 case 6:
shreeshas95 13:7b27a8e9cbb4 323 outState = 7;
shreeshas95 13:7b27a8e9cbb4 324 break;
shreeshas95 13:7b27a8e9cbb4 325 case 7:
shreeshas95 13:7b27a8e9cbb4 326 outState = 0;
shreeshas95 13:7b27a8e9cbb4 327 ++outByte;
shreeshas95 13:7b27a8e9cbb4 328 break;
shreeshas95 13:7b27a8e9cbb4 329 }
shreeshas95 13:7b27a8e9cbb4 330 }
shreeshas95 13:7b27a8e9cbb4 331 }
shreeshas95 13:7b27a8e9cbb4 332 }
shreeshas95 13:7b27a8e9cbb4 333
shreeshas95 13:7b27a8e9cbb4 334
shreeshas95 13:7b27a8e9cbb4 335
shreeshas95 13:7b27a8e9cbb4 336 public:
shreeshas95 13:7b27a8e9cbb4 337
shreeshas95 13:7b27a8e9cbb4 338 bool give_buffer ;
shreeshas95 13:7b27a8e9cbb4 339 bool transmission_done;
shreeshas95 13:7b27a8e9cbb4 340 unsigned char S_frame[S_FRAME_SIZE];
shreeshas95 13:7b27a8e9cbb4 341 unsigned char EoS[EoS_SIZE];
shreeshas95 13:7b27a8e9cbb4 342 SND_TM(){
shreeshas95 13:7b27a8e9cbb4 343
shreeshas95 14:a4c259ca0325 344 //transmit
shreeshas95 14:a4c259ca0325 345 Tframe_counter = 0; //contains the number of Tframes in a segment had been written
shreeshas95 14:a4c259ca0325 346 EOS_counter = 0; //count no of byres of eos have been weitten in the buffer
shreeshas95 14:a4c259ca0325 347 Sframe_Counter = 0;
shreeshas95 14:a4c259ca0325 348 SCH40_counter = 0;
shreeshas95 14:a4c259ca0325 349 string_space_counter = 0;
shreeshas95 14:a4c259ca0325 350 FCCH80_counter = 0;
shreeshas95 14:a4c259ca0325 351 rolling_buffer_counter = 0; //maximum it can be 1152 bits
shreeshas95 14:a4c259ca0325 352 Sframe_flag = true;
shreeshas95 14:a4c259ca0325 353 new_Tframe_flag = false;
shreeshas95 14:a4c259ca0325 354 FCCH80_flag = false;
shreeshas95 14:a4c259ca0325 355 data_flag = false;
shreeshas95 14:a4c259ca0325 356 repete_data_flag = false;
shreeshas95 14:a4c259ca0325 357 segment_counter = 0;
shreeshas95 14:a4c259ca0325 358 diff_enc_flag = false;
shreeshas95 14:a4c259ca0325 359
shreeshas95 14:a4c259ca0325 360
shreeshas95 14:a4c259ca0325 361 state = true;
shreeshas95 14:a4c259ca0325 362 DS_counter = 0;
shreeshas95 14:a4c259ca0325 363 DS_flag = false;
shreeshas95 14:a4c259ca0325 364
shreeshas95 14:a4c259ca0325 365 // type_1_frame
shreeshas95 14:a4c259ca0325 366 T1F_counter = 0;
shreeshas95 14:a4c259ca0325 367
shreeshas95 13:7b27a8e9cbb4 368 // list_ptr = x;
shreeshas95 13:7b27a8e9cbb4 369
shreeshas95 13:7b27a8e9cbb4 370 diff_prev = 0;
shreeshas95 13:7b27a8e9cbb4 371
shreeshas95 13:7b27a8e9cbb4 372 type0_no= 0;
shreeshas95 13:7b27a8e9cbb4 373 type1_no= 0;
shreeshas95 13:7b27a8e9cbb4 374 //~ S-FRAME
shreeshas95 13:7b27a8e9cbb4 375 //~ SCH_64 * 2
shreeshas95 13:7b27a8e9cbb4 376 S_frame[0] = 0x46;
shreeshas95 13:7b27a8e9cbb4 377 S_frame[1] = 0x9d;
shreeshas95 13:7b27a8e9cbb4 378 S_frame[2] = 0xfb;
shreeshas95 13:7b27a8e9cbb4 379 S_frame[3] = 0xf0;
shreeshas95 13:7b27a8e9cbb4 380 S_frame[4] = 0xd2;
shreeshas95 13:7b27a8e9cbb4 381 S_frame[5] = 0xba;
shreeshas95 13:7b27a8e9cbb4 382 S_frame[6] = 0x89;
shreeshas95 13:7b27a8e9cbb4 383 S_frame[7] = 0xe4;
shreeshas95 13:7b27a8e9cbb4 384
shreeshas95 13:7b27a8e9cbb4 385 S_frame[8] = 0x46;
shreeshas95 13:7b27a8e9cbb4 386 S_frame[9] = 0x9d;
shreeshas95 13:7b27a8e9cbb4 387 S_frame[10] = 0xfb;
shreeshas95 13:7b27a8e9cbb4 388 S_frame[11] = 0xf0;
shreeshas95 13:7b27a8e9cbb4 389 S_frame[12] = 0xd2;
shreeshas95 13:7b27a8e9cbb4 390 S_frame[13] = 0xba;
shreeshas95 13:7b27a8e9cbb4 391 S_frame[14] = 0x89;
shreeshas95 13:7b27a8e9cbb4 392 S_frame[15] = 0xe4;
shreeshas95 13:7b27a8e9cbb4 393
shreeshas95 13:7b27a8e9cbb4 394 //~ FCCH
shreeshas95 13:7b27a8e9cbb4 395 for(int i = 16 ; i < 48 ; ++i ){
shreeshas95 13:7b27a8e9cbb4 396 S_frame[i] = 0x00;
shreeshas95 13:7b27a8e9cbb4 397 }
shreeshas95 13:7b27a8e9cbb4 398
shreeshas95 13:7b27a8e9cbb4 399
shreeshas95 13:7b27a8e9cbb4 400 for(int i = 0 ; i < 24 ; ++i){
shreeshas95 13:7b27a8e9cbb4 401 EoS[i] = 0x00;
shreeshas95 13:7b27a8e9cbb4 402 }
shreeshas95 13:7b27a8e9cbb4 403
shreeshas95 13:7b27a8e9cbb4 404 //~ S-FRAME [1]
shreeshas95 13:7b27a8e9cbb4 405 //~ first two bits of S-FRAME
shreeshas95 13:7b27a8e9cbb4 406 EoS[23] = 0x01;
shreeshas95 13:7b27a8e9cbb4 407
shreeshas95 13:7b27a8e9cbb4 408 EoS[24] = 0x1a;
shreeshas95 13:7b27a8e9cbb4 409 EoS[25] = 0x77;
shreeshas95 13:7b27a8e9cbb4 410 EoS[26] = 0xef;
shreeshas95 13:7b27a8e9cbb4 411 EoS[27] = 0xc3;
shreeshas95 13:7b27a8e9cbb4 412 EoS[28] = 0x4a;
shreeshas95 13:7b27a8e9cbb4 413 EoS[29] = 0xea;
shreeshas95 13:7b27a8e9cbb4 414 EoS[30] = 0x27;
shreeshas95 13:7b27a8e9cbb4 415 EoS[31] = 0x91;
shreeshas95 13:7b27a8e9cbb4 416 EoS[32] = 0x1a;
shreeshas95 13:7b27a8e9cbb4 417 EoS[33] = 0x77;
shreeshas95 13:7b27a8e9cbb4 418 EoS[34] = 0xef;
shreeshas95 13:7b27a8e9cbb4 419 EoS[35] = 0xc3;
shreeshas95 13:7b27a8e9cbb4 420 EoS[36] = 0x4a;
shreeshas95 13:7b27a8e9cbb4 421 EoS[37] = 0xea;
shreeshas95 13:7b27a8e9cbb4 422 EoS[38] = 0x27;
shreeshas95 13:7b27a8e9cbb4 423 EoS[39] = 0x90;
shreeshas95 13:7b27a8e9cbb4 424
shreeshas95 13:7b27a8e9cbb4 425 for(int i = 40 ; i < 72 ; ++i){
shreeshas95 13:7b27a8e9cbb4 426 EoS[i] = 0x00;
shreeshas95 13:7b27a8e9cbb4 427 }
shreeshas95 13:7b27a8e9cbb4 428
shreeshas95 13:7b27a8e9cbb4 429 //~ S-FRAME [2]
shreeshas95 13:7b27a8e9cbb4 430 //~ first two bits of S-FRAME
shreeshas95 13:7b27a8e9cbb4 431 EoS[71] = 0x01;
shreeshas95 13:7b27a8e9cbb4 432
shreeshas95 13:7b27a8e9cbb4 433 EoS[72] = 0x1a;
shreeshas95 13:7b27a8e9cbb4 434 EoS[73] = 0x77;
shreeshas95 13:7b27a8e9cbb4 435 EoS[74] = 0xef;
shreeshas95 13:7b27a8e9cbb4 436 EoS[75] = 0xc3;
shreeshas95 13:7b27a8e9cbb4 437 EoS[76] = 0x4a;
shreeshas95 13:7b27a8e9cbb4 438 EoS[77] = 0xea;
shreeshas95 13:7b27a8e9cbb4 439 EoS[78] = 0x27;
shreeshas95 13:7b27a8e9cbb4 440 EoS[79] = 0x91;
shreeshas95 13:7b27a8e9cbb4 441 EoS[80] = 0x1a;
shreeshas95 13:7b27a8e9cbb4 442 EoS[81] = 0x77;
shreeshas95 13:7b27a8e9cbb4 443 EoS[82] = 0xef;
shreeshas95 13:7b27a8e9cbb4 444 EoS[83] = 0xc3;
shreeshas95 13:7b27a8e9cbb4 445 EoS[84] = 0x4a;
shreeshas95 13:7b27a8e9cbb4 446 EoS[85] = 0xea;
shreeshas95 13:7b27a8e9cbb4 447 EoS[86] = 0x27;
shreeshas95 13:7b27a8e9cbb4 448 EoS[87] = 0x90;
shreeshas95 13:7b27a8e9cbb4 449
shreeshas95 13:7b27a8e9cbb4 450 for(int i = 88 ; i < 120 ; ++i){
shreeshas95 13:7b27a8e9cbb4 451 EoS[i] = 0x00;
shreeshas95 13:7b27a8e9cbb4 452 }
shreeshas95 13:7b27a8e9cbb4 453
shreeshas95 13:7b27a8e9cbb4 454 for(int i = 0 ; i < 10 ; ++i){
shreeshas95 13:7b27a8e9cbb4 455 FCCH80[i] = 0x00;
shreeshas95 13:7b27a8e9cbb4 456 }
shreeshas95 13:7b27a8e9cbb4 457
shreeshas95 13:7b27a8e9cbb4 458 SCH40[0] = 0x0a;
shreeshas95 13:7b27a8e9cbb4 459 SCH40[1] = 0x3f;
shreeshas95 13:7b27a8e9cbb4 460 SCH40[2] = 0x46;
shreeshas95 13:7b27a8e9cbb4 461 SCH40[3] = 0xb4;
shreeshas95 13:7b27a8e9cbb4 462 SCH40[4] = 0x00;
shreeshas95 13:7b27a8e9cbb4 463
shreeshas95 13:7b27a8e9cbb4 464 // give_buffer = false;
shreeshas95 13:7b27a8e9cbb4 465 transmission_done=false;
shreeshas95 13:7b27a8e9cbb4 466
shreeshas95 13:7b27a8e9cbb4 467 }
shreeshas95 13:7b27a8e9cbb4 468
shreeshas95 14:a4c259ca0325 469 bool transmit_data_flag;
shreeshas95 14:a4c259ca0325 470
shreeshas95 14:a4c259ca0325 471 // void head_pointer(TM_list * ptr){
shreeshas95 14:a4c259ca0325 472 void head_pointer(TM_list *ptr){
shreeshas95 13:7b27a8e9cbb4 473 list_ptr = ptr ;
shreeshas95 13:7b27a8e9cbb4 474 type1_frame_flag = true;
shreeshas95 13:7b27a8e9cbb4 475 type0_frame_flag = true;
shreeshas95 13:7b27a8e9cbb4 476 make_DataStream_flag = true;
shreeshas95 13:7b27a8e9cbb4 477 transmit_data_flag = true;
shreeshas95 13:7b27a8e9cbb4 478 transmission_done=false;
shreeshas95 13:7b27a8e9cbb4 479 adf_not_SDcard();
shreeshas95 13:7b27a8e9cbb4 480 }
shreeshas95 13:7b27a8e9cbb4 481
shreeshas95 13:7b27a8e9cbb4 482 unsigned char convoluted_frame[270];
shreeshas95 13:7b27a8e9cbb4 483
shreeshas95 14:a4c259ca0325 484 Convolution ConvObj2;
shreeshas95 13:7b27a8e9cbb4 485
shreeshas95 13:7b27a8e9cbb4 486 void convolution (unsigned char * ptr){
shreeshas95 13:7b27a8e9cbb4 487
shreeshas95 14:a4c259ca0325 488 ConvObj2.convolutionEncode(ptr, convoluted_frame);
shreeshas95 14:a4c259ca0325 489 ConvObj2.convolutionEncode(ptr + 67, convoluted_frame + 135);
shreeshas95 13:7b27a8e9cbb4 490 }
shreeshas95 13:7b27a8e9cbb4 491
shreeshas95 13:7b27a8e9cbb4 492 unsigned char interleave_data[2][144]; //initialize to zero how;
shreeshas95 13:7b27a8e9cbb4 493
shreeshas95 13:7b27a8e9cbb4 494 bool make_DataStream_flag;
shreeshas95 13:7b27a8e9cbb4 495
shreeshas95 14:a4c259ca0325 496 // int inline make_DataStream(){
shreeshas95 14:a4c259ca0325 497 //
shreeshas95 14:a4c259ca0325 498 // if(make_DataStream_flag){
shreeshas95 14:a4c259ca0325 499 //// data_number();
shreeshas95 14:a4c259ca0325 500 //
shreeshas95 14:a4c259ca0325 501 // int type1_frame_no;
shreeshas95 14:a4c259ca0325 502 // TM_list *head = list_ptr;
shreeshas95 14:a4c259ca0325 503 //
shreeshas95 14:a4c259ca0325 504 // type0_no = 0;
shreeshas95 14:a4c259ca0325 505 // type1_no = 0;
shreeshas95 14:a4c259ca0325 506 //
shreeshas95 14:a4c259ca0325 507 // do{
shreeshas95 14:a4c259ca0325 508 //
shreeshas95 14:a4c259ca0325 509 // switch( decide_type(head->tmid) ){
shreeshas95 14:a4c259ca0325 510 // case 0:
shreeshas95 14:a4c259ca0325 511 // type0_no++;
shreeshas95 14:a4c259ca0325 512 // break;
shreeshas95 14:a4c259ca0325 513 // case 1:
shreeshas95 14:a4c259ca0325 514 // type1_no++;
shreeshas95 14:a4c259ca0325 515 // }
shreeshas95 14:a4c259ca0325 516 //
shreeshas95 14:a4c259ca0325 517 // head=head->next_TM;
shreeshas95 14:a4c259ca0325 518 //
shreeshas95 14:a4c259ca0325 519 // }
shreeshas95 14:a4c259ca0325 520 // while(head->next_TM != NULL);
shreeshas95 14:a4c259ca0325 521 //
shreeshas95 14:a4c259ca0325 522 // type1_frame_no = ( type1_no % 10 == 0 )? (type1_no / 10) : ( (type1_no / 10) + 1);
shreeshas95 14:a4c259ca0325 523 // total_frames = type0_no + type1_frame_no ;
shreeshas95 14:a4c259ca0325 524 // segment_no = (total_frames*2 % (SEGMENT_SIZE-1) == 0) ? ( total_frames*2/(SEGMENT_SIZE-1) ) : (total_frames*2/(SEGMENT_SIZE-1) + 1); //subtracting 1 since the last Tframe is not detected
shreeshas95 14:a4c259ca0325 525 //
shreeshas95 14:a4c259ca0325 526 //
shreeshas95 14:a4c259ca0325 527 // state = true;
shreeshas95 14:a4c259ca0325 528 // DS_counter = 0;
shreeshas95 14:a4c259ca0325 529 // DS_flag = false;
shreeshas95 14:a4c259ca0325 530 // make_DataStream_flag = false;
shreeshas95 14:a4c259ca0325 531 // }
shreeshas95 14:a4c259ca0325 532 ////
shreeshas95 14:a4c259ca0325 533 // if(state){
shreeshas95 14:a4c259ca0325 534 //
shreeshas95 14:a4c259ca0325 535 // if(DS_counter < type0_no){
shreeshas95 14:a4c259ca0325 536 // DS_ptr = type0_frame();
shreeshas95 14:a4c259ca0325 537 // DS_flag = true;
shreeshas95 14:a4c259ca0325 538 //
shreeshas95 14:a4c259ca0325 539 // }
shreeshas95 14:a4c259ca0325 540 //
shreeshas95 14:a4c259ca0325 541 // else if(DS_counter < total_frames ){
shreeshas95 14:a4c259ca0325 542 // DS_ptr = type1_frame();
shreeshas95 14:a4c259ca0325 543 // DS_flag = true;
shreeshas95 14:a4c259ca0325 544 // }
shreeshas95 14:a4c259ca0325 545 //
shreeshas95 14:a4c259ca0325 546 // DS_counter++;
shreeshas95 14:a4c259ca0325 547 //
shreeshas95 14:a4c259ca0325 548 // }
shreeshas95 14:a4c259ca0325 549 //
shreeshas95 14:a4c259ca0325 550 // state = !state;
shreeshas95 14:a4c259ca0325 551 //
shreeshas95 14:a4c259ca0325 552 // if (DS_flag){
shreeshas95 14:a4c259ca0325 553 //// cout<<"i m here";
shreeshas95 14:a4c259ca0325 554 //
shreeshas95 14:a4c259ca0325 555 //// printf("------inside convolution\r\n");
shreeshas95 14:a4c259ca0325 556 // convolution(DS_ptr);
shreeshas95 14:a4c259ca0325 557 //// printf("-------out of convolution\n");
shreeshas95 14:a4c259ca0325 558 // interleave(convoluted_frame,interleave_data[0]);
shreeshas95 14:a4c259ca0325 559 // interleave(convoluted_frame+ 135,interleave_data[1]);
shreeshas95 14:a4c259ca0325 560 //// printf("completed intrleave\n");
shreeshas95 14:a4c259ca0325 561 // DS_flag = false;
shreeshas95 14:a4c259ca0325 562 //
shreeshas95 14:a4c259ca0325 563 // }
shreeshas95 14:a4c259ca0325 564 ////
shreeshas95 14:a4c259ca0325 565 ////
shreeshas95 14:a4c259ca0325 566 // int temp = (state == false) ? 0 : 1 ;
shreeshas95 14:a4c259ca0325 567 //
shreeshas95 14:a4c259ca0325 568 // return temp;
shreeshas95 14:a4c259ca0325 569 //
shreeshas95 14:a4c259ca0325 570 // }
shreeshas95 13:7b27a8e9cbb4 571
shreeshas95 13:7b27a8e9cbb4 572 //112 bytes - half rolling buffer
shreeshas95 14:a4c259ca0325 573
shreeshas95 13:7b27a8e9cbb4 574
shreeshas95 14:a4c259ca0325 575 void inline transmit_data(unsigned char * transmit , bool * last_buffer){
shreeshas95 13:7b27a8e9cbb4 576 if(transmit_data_flag){
shreeshas95 13:7b27a8e9cbb4 577 rolling_buffer_counter = 0;
shreeshas95 13:7b27a8e9cbb4 578 Sframe_Counter = 0;
shreeshas95 13:7b27a8e9cbb4 579 SCH40_counter = 0;
shreeshas95 13:7b27a8e9cbb4 580 FCCH80_counter = 0;
shreeshas95 13:7b27a8e9cbb4 581 Tframe_counter = 0;
shreeshas95 13:7b27a8e9cbb4 582 EOS_counter = 0;
shreeshas95 13:7b27a8e9cbb4 583 segment_counter = 0;
shreeshas95 13:7b27a8e9cbb4 584 string_space_counter = 0;
shreeshas95 13:7b27a8e9cbb4 585
shreeshas95 13:7b27a8e9cbb4 586 Sframe_flag = true;
shreeshas95 13:7b27a8e9cbb4 587 new_Tframe_flag = false;
shreeshas95 13:7b27a8e9cbb4 588 repete_data_flag = false;
shreeshas95 13:7b27a8e9cbb4 589 data_flag = false;
shreeshas95 13:7b27a8e9cbb4 590 FCCH80_flag = false;
shreeshas95 13:7b27a8e9cbb4 591 transmit_data_flag = false;
shreeshas95 13:7b27a8e9cbb4 592 diff_enc_flag = false;
shreeshas95 13:7b27a8e9cbb4 593 }
shreeshas95 13:7b27a8e9cbb4 594
shreeshas95 14:a4c259ca0325 595 for(rolling_buffer_counter = 0 ; rolling_buffer_counter<112 ; rolling_buffer_counter++){
shreeshas95 14:a4c259ca0325 596 //
shreeshas95 13:7b27a8e9cbb4 597 if(diff_enc_flag){
shreeshas95 13:7b27a8e9cbb4 598 transmit[rolling_buffer_counter] = 0;
shreeshas95 13:7b27a8e9cbb4 599 continue;
shreeshas95 13:7b27a8e9cbb4 600 }
shreeshas95 14:a4c259ca0325 601 //
shreeshas95 13:7b27a8e9cbb4 602 if(Sframe_flag){
shreeshas95 13:7b27a8e9cbb4 603 transmit[rolling_buffer_counter] = S_frame[Sframe_Counter++];
shreeshas95 13:7b27a8e9cbb4 604
shreeshas95 13:7b27a8e9cbb4 605 if(Sframe_Counter == 48){
shreeshas95 13:7b27a8e9cbb4 606 // printf("sframe quit\n");
shreeshas95 13:7b27a8e9cbb4 607 Sframe_Counter = 0;
shreeshas95 13:7b27a8e9cbb4 608 Sframe_flag = false;
shreeshas95 13:7b27a8e9cbb4 609 new_Tframe_flag =true;
shreeshas95 13:7b27a8e9cbb4 610 }
shreeshas95 13:7b27a8e9cbb4 611
shreeshas95 13:7b27a8e9cbb4 612 }
shreeshas95 14:a4c259ca0325 613 //
shreeshas95 13:7b27a8e9cbb4 614 else if(new_Tframe_flag){
shreeshas95 13:7b27a8e9cbb4 615 transmit[rolling_buffer_counter] = SCH40[SCH40_counter++];
shreeshas95 13:7b27a8e9cbb4 616
shreeshas95 13:7b27a8e9cbb4 617 if(SCH40_counter == 5 ){
shreeshas95 13:7b27a8e9cbb4 618 SCH40_counter = 0;
shreeshas95 13:7b27a8e9cbb4 619 new_Tframe_flag = false;
shreeshas95 13:7b27a8e9cbb4 620 // printf("new Tframe flag quit\n");
shreeshas95 13:7b27a8e9cbb4 621 // data_flag = (Tframe_counter == 38)? false : true;
shreeshas95 13:7b27a8e9cbb4 622 // put_F = !data_flag;
shreeshas95 13:7b27a8e9cbb4 623
shreeshas95 13:7b27a8e9cbb4 624 repete_data_flag = (Tframe_counter == SEGMENT_SIZE -1)?true:false;
shreeshas95 13:7b27a8e9cbb4 625 data_flag = !repete_data_flag;
shreeshas95 13:7b27a8e9cbb4 626
shreeshas95 13:7b27a8e9cbb4 627 }
shreeshas95 13:7b27a8e9cbb4 628
shreeshas95 13:7b27a8e9cbb4 629 }
shreeshas95 14:a4c259ca0325 630 //
shreeshas95 13:7b27a8e9cbb4 631 else if(data_flag){
shreeshas95 13:7b27a8e9cbb4 632
shreeshas95 14:a4c259ca0325 633 if(string_space_counter == 0 ){
shreeshas95 14:a4c259ca0325 634
shreeshas95 14:a4c259ca0325 635 //---------------------------------------------------------------------------------------
shreeshas95 14:a4c259ca0325 636 if(make_DataStream_flag){
shreeshas95 14:a4c259ca0325 637 int type1_frame_no;
shreeshas95 14:a4c259ca0325 638 TM_list *head = list_ptr;
shreeshas95 14:a4c259ca0325 639
shreeshas95 14:a4c259ca0325 640 type0_no = 0;
shreeshas95 14:a4c259ca0325 641 type1_no = 0;
shreeshas95 14:a4c259ca0325 642
shreeshas95 14:a4c259ca0325 643 while(head != NULL){
shreeshas95 14:a4c259ca0325 644 unsigned char tmid = head->tmid;
shreeshas95 14:a4c259ca0325 645 int type = 0;
shreeshas95 14:a4c259ca0325 646
shreeshas95 14:a4c259ca0325 647 switch(tmid){
shreeshas95 14:a4c259ca0325 648 case 0x1:
shreeshas95 14:a4c259ca0325 649 case 0x2:
shreeshas95 14:a4c259ca0325 650 case 0x3:
shreeshas95 14:a4c259ca0325 651 case 0x4:
shreeshas95 14:a4c259ca0325 652 case 0x5:
shreeshas95 14:a4c259ca0325 653 case 0x6:
shreeshas95 14:a4c259ca0325 654 case 0x7:
shreeshas95 14:a4c259ca0325 655 case 0x8:
shreeshas95 14:a4c259ca0325 656 type = 0;
shreeshas95 14:a4c259ca0325 657 break;
shreeshas95 14:a4c259ca0325 658 case 0xA:
shreeshas95 14:a4c259ca0325 659 case 0xB:
shreeshas95 14:a4c259ca0325 660 case 0xC:
shreeshas95 14:a4c259ca0325 661 case 0xD:
shreeshas95 14:a4c259ca0325 662 case 0xE:
shreeshas95 14:a4c259ca0325 663 type = 1;
shreeshas95 14:a4c259ca0325 664 break;
shreeshas95 14:a4c259ca0325 665 }
shreeshas95 14:a4c259ca0325 666
shreeshas95 14:a4c259ca0325 667
shreeshas95 14:a4c259ca0325 668 switch( type ){
shreeshas95 14:a4c259ca0325 669 case 0:
shreeshas95 14:a4c259ca0325 670 type0_no++;
shreeshas95 14:a4c259ca0325 671 break;
shreeshas95 14:a4c259ca0325 672 case 1:
shreeshas95 14:a4c259ca0325 673 type1_no++;
shreeshas95 14:a4c259ca0325 674 }
shreeshas95 14:a4c259ca0325 675
shreeshas95 14:a4c259ca0325 676 head=head->next_TM;
shreeshas95 14:a4c259ca0325 677
shreeshas95 14:a4c259ca0325 678 }
shreeshas95 14:a4c259ca0325 679
shreeshas95 14:a4c259ca0325 680
shreeshas95 14:a4c259ca0325 681 type1_frame_no = ( type1_no % 10 == 0 )? (type1_no / 10) : ( (type1_no / 10) + 1);
shreeshas95 14:a4c259ca0325 682 total_frames = type0_no + type1_frame_no ;
shreeshas95 14:a4c259ca0325 683 segment_no = (total_frames*2 % (SEGMENT_SIZE-1) == 0) ? ( total_frames*2/(SEGMENT_SIZE-1) ) : (total_frames*2/(SEGMENT_SIZE-1) + 1); //subtracting 1 since the last Tframe is not detected
shreeshas95 14:a4c259ca0325 684
shreeshas95 14:a4c259ca0325 685
shreeshas95 14:a4c259ca0325 686 state = true;
shreeshas95 14:a4c259ca0325 687 DS_counter = 0;
shreeshas95 14:a4c259ca0325 688 DS_flag = false;
shreeshas95 14:a4c259ca0325 689 make_DataStream_flag = false;
shreeshas95 14:a4c259ca0325 690 }
shreeshas95 14:a4c259ca0325 691 //
shreeshas95 14:a4c259ca0325 692 if(state){
shreeshas95 14:a4c259ca0325 693
shreeshas95 14:a4c259ca0325 694 if(DS_counter < type0_no){
shreeshas95 14:a4c259ca0325 695 DS_ptr = type0_frame();
shreeshas95 14:a4c259ca0325 696 DS_flag = true;
shreeshas95 14:a4c259ca0325 697
shreeshas95 14:a4c259ca0325 698 }
shreeshas95 14:a4c259ca0325 699
shreeshas95 14:a4c259ca0325 700 else if(DS_counter < total_frames ){
shreeshas95 14:a4c259ca0325 701 DS_ptr = type1_frame();
shreeshas95 14:a4c259ca0325 702 DS_flag = true;
shreeshas95 14:a4c259ca0325 703 }
shreeshas95 14:a4c259ca0325 704
shreeshas95 14:a4c259ca0325 705 DS_counter++;
shreeshas95 14:a4c259ca0325 706
shreeshas95 14:a4c259ca0325 707 }
shreeshas95 14:a4c259ca0325 708
shreeshas95 14:a4c259ca0325 709 state = !state;
shreeshas95 14:a4c259ca0325 710
shreeshas95 14:a4c259ca0325 711 if (DS_flag){
shreeshas95 14:a4c259ca0325 712 // cout<<"i m here";
shreeshas95 14:a4c259ca0325 713
shreeshas95 14:a4c259ca0325 714 // printf("------inside convolution\r\n");
shreeshas95 14:a4c259ca0325 715 convolution(DS_ptr);
shreeshas95 14:a4c259ca0325 716 // printf("-------out of convolution\n");
shreeshas95 14:a4c259ca0325 717 interleave(convoluted_frame,interleave_data[0]);
shreeshas95 14:a4c259ca0325 718 interleave(convoluted_frame+ 135,interleave_data[1]);
shreeshas95 14:a4c259ca0325 719 // printf("completed intrleave\n");
shreeshas95 14:a4c259ca0325 720 DS_flag = false;
shreeshas95 14:a4c259ca0325 721
shreeshas95 14:a4c259ca0325 722 }
shreeshas95 14:a4c259ca0325 723
shreeshas95 14:a4c259ca0325 724 //
shreeshas95 14:a4c259ca0325 725 int temp = (state == false) ? 0 : 1 ;
shreeshas95 14:a4c259ca0325 726 //---------------------------------------------------------------------------------------
shreeshas95 14:a4c259ca0325 727 uv = temp ;
shreeshas95 13:7b27a8e9cbb4 728 }
shreeshas95 14:a4c259ca0325 729 //
shreeshas95 14:a4c259ca0325 730 transmit[rolling_buffer_counter] = interleave_data[uv][string_space_counter++];
shreeshas95 13:7b27a8e9cbb4 731 if(string_space_counter == 144){
shreeshas95 13:7b27a8e9cbb4 732 // printf("data_flag quit\n");
shreeshas95 13:7b27a8e9cbb4 733 string_space_counter = 0;
shreeshas95 13:7b27a8e9cbb4 734 FCCH80_flag = true;
shreeshas95 13:7b27a8e9cbb4 735 data_flag = false;
shreeshas95 13:7b27a8e9cbb4 736 }
shreeshas95 14:a4c259ca0325 737 //
shreeshas95 13:7b27a8e9cbb4 738 }
shreeshas95 14:a4c259ca0325 739 //
shreeshas95 13:7b27a8e9cbb4 740 else if(repete_data_flag){
shreeshas95 14:a4c259ca0325 741 transmit[rolling_buffer_counter] = interleave_data[uv][string_space_counter];;
shreeshas95 13:7b27a8e9cbb4 742 if(++string_space_counter == 144){
shreeshas95 13:7b27a8e9cbb4 743 repete_data_flag = false;
shreeshas95 13:7b27a8e9cbb4 744 FCCH80_flag = true;
shreeshas95 13:7b27a8e9cbb4 745 string_space_counter = 0;
shreeshas95 13:7b27a8e9cbb4 746 // cout<<"repete_data_flag quit\n";
shreeshas95 13:7b27a8e9cbb4 747 }
shreeshas95 13:7b27a8e9cbb4 748 }
shreeshas95 13:7b27a8e9cbb4 749
shreeshas95 13:7b27a8e9cbb4 750 else if(FCCH80_flag){
shreeshas95 13:7b27a8e9cbb4 751
shreeshas95 13:7b27a8e9cbb4 752 transmit[rolling_buffer_counter] = FCCH80[FCCH80_counter++];
shreeshas95 13:7b27a8e9cbb4 753 // cout<<FCCH80_counter;
shreeshas95 13:7b27a8e9cbb4 754 if(FCCH80_counter == 10){
shreeshas95 13:7b27a8e9cbb4 755 // printf("FCCH80 quit\n");
shreeshas95 13:7b27a8e9cbb4 756 FCCH80_counter = 0;
shreeshas95 13:7b27a8e9cbb4 757 FCCH80_flag = false;
shreeshas95 13:7b27a8e9cbb4 758
shreeshas95 13:7b27a8e9cbb4 759 if(++Tframe_counter != SEGMENT_SIZE)
shreeshas95 13:7b27a8e9cbb4 760 new_Tframe_flag = true;
shreeshas95 13:7b27a8e9cbb4 761
shreeshas95 13:7b27a8e9cbb4 762 }
shreeshas95 13:7b27a8e9cbb4 763
shreeshas95 13:7b27a8e9cbb4 764 }
shreeshas95 13:7b27a8e9cbb4 765
shreeshas95 13:7b27a8e9cbb4 766
shreeshas95 13:7b27a8e9cbb4 767
shreeshas95 13:7b27a8e9cbb4 768 else if(Tframe_counter == SEGMENT_SIZE){
shreeshas95 13:7b27a8e9cbb4 769
shreeshas95 13:7b27a8e9cbb4 770 transmit[rolling_buffer_counter] = EoS[EOS_counter++];
shreeshas95 13:7b27a8e9cbb4 771
shreeshas95 13:7b27a8e9cbb4 772 if(EOS_counter == 120){
shreeshas95 13:7b27a8e9cbb4 773 diff_enc_flag = true;
shreeshas95 13:7b27a8e9cbb4 774 Tframe_counter = 0;
shreeshas95 13:7b27a8e9cbb4 775 EOS_counter = 0;
shreeshas95 13:7b27a8e9cbb4 776 if(++segment_counter == segment_no){
shreeshas95 13:7b27a8e9cbb4 777 // cout<<"transmit_counter = "<<++transmit_counter;
shreeshas95 13:7b27a8e9cbb4 778 *last_buffer = true;
shreeshas95 13:7b27a8e9cbb4 779 break;
shreeshas95 13:7b27a8e9cbb4 780
shreeshas95 13:7b27a8e9cbb4 781 }
shreeshas95 13:7b27a8e9cbb4 782 else{
shreeshas95 13:7b27a8e9cbb4 783 Sframe_flag = true;
shreeshas95 13:7b27a8e9cbb4 784 continue;
shreeshas95 13:7b27a8e9cbb4 785 }
shreeshas95 13:7b27a8e9cbb4 786
shreeshas95 13:7b27a8e9cbb4 787 }
shreeshas95 13:7b27a8e9cbb4 788 continue;
shreeshas95 13:7b27a8e9cbb4 789 }
shreeshas95 13:7b27a8e9cbb4 790
shreeshas95 13:7b27a8e9cbb4 791 }
shreeshas95 13:7b27a8e9cbb4 792
shreeshas95 13:7b27a8e9cbb4 793
shreeshas95 14:a4c259ca0325 794 // printf("a");
shreeshas95 13:7b27a8e9cbb4 795 differential_encode(transmit,112);
shreeshas95 13:7b27a8e9cbb4 796
shreeshas95 13:7b27a8e9cbb4 797 if(diff_enc_flag){
shreeshas95 13:7b27a8e9cbb4 798 diff_prev = 0;
shreeshas95 13:7b27a8e9cbb4 799 diff_enc_flag = false;
shreeshas95 13:7b27a8e9cbb4 800 Sframe_flag = true;
shreeshas95 13:7b27a8e9cbb4 801
shreeshas95 13:7b27a8e9cbb4 802 }
shreeshas95 13:7b27a8e9cbb4 803
shreeshas95 13:7b27a8e9cbb4 804 }
shreeshas95 14:a4c259ca0325 805
shreeshas95 14:a4c259ca0325 806 // void inline printhaha(void){
shreeshas95 14:a4c259ca0325 807 //// TM_list *ptr = NULL;
shreeshas95 14:a4c259ca0325 808 // printf("c");
shreeshas95 14:a4c259ca0325 809 // // list_ptr = ptr ;
shreeshas95 14:a4c259ca0325 810 // type1_frame_flag = true;
shreeshas95 14:a4c259ca0325 811 // type0_frame_flag = true;
shreeshas95 14:a4c259ca0325 812 // make_DataStream_flag = true;
shreeshas95 14:a4c259ca0325 813 // transmit_data_flag = true;
shreeshas95 14:a4c259ca0325 814 // transmission_done=false;
shreeshas95 14:a4c259ca0325 815 // printf("b");
shreeshas95 14:a4c259ca0325 816 // adf_not_SDcard();
shreeshas95 14:a4c259ca0325 817 // printf("a");
shreeshas95 14:a4c259ca0325 818 // }
shreeshas95 13:7b27a8e9cbb4 819
shreeshas95 14:a4c259ca0325 820 };
shreeshas95 14:a4c259ca0325 821
shreeshas95 14:a4c259ca0325 822 SND_TM snd_tm;