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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 13:7b27a8e9cbb4 1 // It takes 276us to read from sd card and write in 112 buffer
shreeshas95 13:7b27a8e9cbb4 2
shreeshas95 13:7b27a8e9cbb4 3 //~ #include"SDcard.h"
shreeshas95 13:7b27a8e9cbb4 4 #define T_frames 39
shreeshas95 13:7b27a8e9cbb4 5 unsigned char buffer_112_counter,sent_tm = 0;
shreeshas95 13:7b27a8e9cbb4 6 int disk_read(uint8_t *, uint64_t),j;
shreeshas95 13:7b27a8e9cbb4 7 bool new_session = true;
shreeshas95 13:7b27a8e9cbb4 8 bool last_buffer = false;
shreeshas95 13:7b27a8e9cbb4 9 bool first_block = true;
shreeshas95 13:7b27a8e9cbb4 10 bool last_block =false;
shreeshas95 13:7b27a8e9cbb4 11 bool repeat_T_frame = false;
shreeshas95 13:7b27a8e9cbb4 12 unsigned int counter_in_block=0,diff_prev=0;
shreeshas95 13:7b27a8e9cbb4 13 unsigned char EOS_counter = 0;
shreeshas95 13:7b27a8e9cbb4 14 unsigned char enable_T_frame = false;
shreeshas95 13:7b27a8e9cbb4 15 uint64_t start_block_num ; // Read from TC
shreeshas95 13:7b27a8e9cbb4 16 uint64_t end_block_num ; // Read from TC
shreeshas95 13:7b27a8e9cbb4 17 uint64_t Number_of_blocks_to_read ;
shreeshas95 13:7b27a8e9cbb4 18 uint64_t block_counter = 0;
shreeshas95 13:7b27a8e9cbb4 19 unsigned char buffer_512[512], buffer_112[112],counter_in_S_frame=0,counter_in_SCH=0;
shreeshas95 13:7b27a8e9cbb4 20 //unsigned char S_frame[48]={0x46,0x9D,0xFB,0xF0,0xD2,0xBA,0x89,0xE4,0x46,0x9D,0xFB,0xF0,0xD2,0xBA,0x89,0xE4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
shreeshas95 13:7b27a8e9cbb4 21 //unsigned char SCH[40] = {0x0A,0x3F,0x46,0xB4,0x00};
shreeshas95 13:7b27a8e9cbb4 22 //unsigned char EoS[120];
shreeshas95 13:7b27a8e9cbb4 23 unsigned char * S_frame , *EoS;
shreeshas95 13:7b27a8e9cbb4 24 unsigned char make_EOS_flag =true;
shreeshas95 13:7b27a8e9cbb4 25
shreeshas95 13:7b27a8e9cbb4 26 void differential_encode(unsigned char* ptr, int length){
shreeshas95 13:7b27a8e9cbb4 27
shreeshas95 13:7b27a8e9cbb4 28 for(int i=0; i<length;i++){
shreeshas95 13:7b27a8e9cbb4 29
shreeshas95 13:7b27a8e9cbb4 30 unsigned char s = ptr[i] , t;
shreeshas95 13:7b27a8e9cbb4 31 t = s ^ (s >> 1);
shreeshas95 13:7b27a8e9cbb4 32 (diff_prev == 0) ? t=t^0x00 : t=t^0x80 ;
shreeshas95 13:7b27a8e9cbb4 33 diff_prev = int(s & 0x01);
shreeshas95 13:7b27a8e9cbb4 34 ptr[i] = t;
shreeshas95 13:7b27a8e9cbb4 35 }
shreeshas95 13:7b27a8e9cbb4 36
shreeshas95 13:7b27a8e9cbb4 37 }
shreeshas95 13:7b27a8e9cbb4 38
shreeshas95 13:7b27a8e9cbb4 39 void send_tm_from_SD_card(){
shreeshas95 13:7b27a8e9cbb4 40
shreeshas95 13:7b27a8e9cbb4 41
shreeshas95 13:7b27a8e9cbb4 42 if(make_EOS_flag == true){
shreeshas95 13:7b27a8e9cbb4 43 EoS = snd_tm.EoS;
shreeshas95 13:7b27a8e9cbb4 44 S_frame = snd_tm.S_frame;
shreeshas95 13:7b27a8e9cbb4 45 make_EOS_flag = false;
shreeshas95 13:7b27a8e9cbb4 46 Number_of_blocks_to_read = end_block_num - start_block_num +1;
shreeshas95 13:7b27a8e9cbb4 47 }
shreeshas95 13:7b27a8e9cbb4 48
shreeshas95 13:7b27a8e9cbb4 49
shreeshas95 13:7b27a8e9cbb4 50 for(buffer_112_counter=0;buffer_112_counter<112;buffer_112_counter++){
shreeshas95 13:7b27a8e9cbb4 51
shreeshas95 13:7b27a8e9cbb4 52
shreeshas95 13:7b27a8e9cbb4 53 if(new_session == true){ //check if it is beginnig of session
shreeshas95 13:7b27a8e9cbb4 54
shreeshas95 13:7b27a8e9cbb4 55 buffer_112[buffer_112_counter]=S_frame[counter_in_S_frame++]; // sending S frame
shreeshas95 13:7b27a8e9cbb4 56
shreeshas95 13:7b27a8e9cbb4 57 if(counter_in_S_frame==48){
shreeshas95 13:7b27a8e9cbb4 58 // cout<<"new_session_over\n";
shreeshas95 13:7b27a8e9cbb4 59 counter_in_S_frame=0;
shreeshas95 13:7b27a8e9cbb4 60 new_session = false;
shreeshas95 13:7b27a8e9cbb4 61 enable_T_frame = true;
shreeshas95 13:7b27a8e9cbb4 62 // enable_SCH = true;
shreeshas95 13:7b27a8e9cbb4 63 }
shreeshas95 13:7b27a8e9cbb4 64 }
shreeshas95 13:7b27a8e9cbb4 65 else if(enable_T_frame == true){ // To send t frames
shreeshas95 13:7b27a8e9cbb4 66
shreeshas95 13:7b27a8e9cbb4 67 if(block_counter != Number_of_blocks_to_read){
shreeshas95 13:7b27a8e9cbb4 68
shreeshas95 13:7b27a8e9cbb4 69 if(first_block){ // Read first block
shreeshas95 13:7b27a8e9cbb4 70 // cout<<"brooooooo"<<start_block_num<<"yo"<<endl;
shreeshas95 13:7b27a8e9cbb4 71 SPI_mutex.lock();
shreeshas95 13:7b27a8e9cbb4 72 disk_read(buffer_512,start_block_num );
shreeshas95 13:7b27a8e9cbb4 73 SPI_mutex.unlock();
shreeshas95 13:7b27a8e9cbb4 74 counter_in_block = 0;
shreeshas95 13:7b27a8e9cbb4 75 block_counter++;
shreeshas95 13:7b27a8e9cbb4 76
shreeshas95 13:7b27a8e9cbb4 77 first_block = false;
shreeshas95 13:7b27a8e9cbb4 78 // cout<<"first block exit\n";
shreeshas95 13:7b27a8e9cbb4 79 // cout<<Number_of_blocks_to_read;
shreeshas95 13:7b27a8e9cbb4 80
shreeshas95 13:7b27a8e9cbb4 81 //printf("\n");
shreeshas95 13:7b27a8e9cbb4 82 // for(int j=0;j<512;j++){
shreeshas95 13:7b27a8e9cbb4 83 // printf("%02X ",buffer_512[j]);
shreeshas95 13:7b27a8e9cbb4 84 // }
shreeshas95 13:7b27a8e9cbb4 85 // printf("\n");
shreeshas95 13:7b27a8e9cbb4 86 // if(block_counter == Number_of_blocks_to_read){
shreeshas95 13:7b27a8e9cbb4 87 // last_block = true;
shreeshas95 13:7b27a8e9cbb4 88 // }
shreeshas95 13:7b27a8e9cbb4 89
shreeshas95 13:7b27a8e9cbb4 90
shreeshas95 13:7b27a8e9cbb4 91 }
shreeshas95 13:7b27a8e9cbb4 92 if((counter_in_block == 318 )&&(sent_tm<38)){ // Read next block
shreeshas95 13:7b27a8e9cbb4 93
shreeshas95 13:7b27a8e9cbb4 94 // cout<<"next block exit\n";
shreeshas95 13:7b27a8e9cbb4 95 SPI_mutex.lock();
shreeshas95 13:7b27a8e9cbb4 96 disk_read(buffer_512,start_block_num + block_counter );
shreeshas95 13:7b27a8e9cbb4 97 SPI_mutex.unlock();
shreeshas95 13:7b27a8e9cbb4 98 counter_in_block = 0;
shreeshas95 13:7b27a8e9cbb4 99 block_counter++;
shreeshas95 13:7b27a8e9cbb4 100 if(block_counter == Number_of_blocks_to_read){
shreeshas95 13:7b27a8e9cbb4 101 last_block = true;
shreeshas95 13:7b27a8e9cbb4 102 }
shreeshas95 13:7b27a8e9cbb4 103 }
shreeshas95 13:7b27a8e9cbb4 104 }
shreeshas95 13:7b27a8e9cbb4 105
shreeshas95 13:7b27a8e9cbb4 106 if(!last_block){
shreeshas95 13:7b27a8e9cbb4 107
shreeshas95 13:7b27a8e9cbb4 108 // cout<<int(sent_tm)<<" ";
shreeshas95 13:7b27a8e9cbb4 109 if(sent_tm<38){
shreeshas95 13:7b27a8e9cbb4 110 buffer_112[buffer_112_counter] = buffer_512[counter_in_block++]; // sending T frames
shreeshas95 13:7b27a8e9cbb4 111 // cout<<int (counter_in_block)<<" ";
shreeshas95 13:7b27a8e9cbb4 112 if(counter_in_block == 318){
shreeshas95 13:7b27a8e9cbb4 113
shreeshas95 13:7b27a8e9cbb4 114 sent_tm = sent_tm + 2;
shreeshas95 13:7b27a8e9cbb4 115 }
shreeshas95 13:7b27a8e9cbb4 116 }
shreeshas95 13:7b27a8e9cbb4 117 else if(sent_tm == (T_frames-1)){
shreeshas95 13:7b27a8e9cbb4 118 buffer_112[buffer_112_counter] = buffer_512[(counter_in_block++ )-159];
shreeshas95 13:7b27a8e9cbb4 119 if(counter_in_block == 318){
shreeshas95 13:7b27a8e9cbb4 120 // cout<<"last block exit\n";
shreeshas95 13:7b27a8e9cbb4 121 sent_tm = T_frames;
shreeshas95 13:7b27a8e9cbb4 122 }
shreeshas95 13:7b27a8e9cbb4 123 }
shreeshas95 13:7b27a8e9cbb4 124 else if(sent_tm == T_frames){ // Give eos and start new session
shreeshas95 13:7b27a8e9cbb4 125 buffer_112[buffer_112_counter]=EoS[EOS_counter++];
shreeshas95 13:7b27a8e9cbb4 126 if(EOS_counter == 120){
shreeshas95 13:7b27a8e9cbb4 127 enable_T_frame = false;
shreeshas95 13:7b27a8e9cbb4 128 new_session = true;
shreeshas95 13:7b27a8e9cbb4 129 EOS_counter =0;
shreeshas95 13:7b27a8e9cbb4 130 sent_tm=0;
shreeshas95 13:7b27a8e9cbb4 131 repeat_T_frame = false;
shreeshas95 13:7b27a8e9cbb4 132 // cout<<"eos exit\n";
shreeshas95 13:7b27a8e9cbb4 133 }
shreeshas95 13:7b27a8e9cbb4 134 }
shreeshas95 13:7b27a8e9cbb4 135 }
shreeshas95 13:7b27a8e9cbb4 136 if(last_block){
shreeshas95 13:7b27a8e9cbb4 137 // cout<<"lb";
shreeshas95 13:7b27a8e9cbb4 138 if(sent_tm == (T_frames-1) && (repeat_T_frame == false)){
shreeshas95 13:7b27a8e9cbb4 139 buffer_112[buffer_112_counter] = buffer_512[(counter_in_block++ )-159];
shreeshas95 13:7b27a8e9cbb4 140 if(counter_in_block == 318){
shreeshas95 13:7b27a8e9cbb4 141 // cout<<"repeat block exit\n";
shreeshas95 13:7b27a8e9cbb4 142 sent_tm = T_frames;
shreeshas95 13:7b27a8e9cbb4 143 }
shreeshas95 13:7b27a8e9cbb4 144 }
shreeshas95 13:7b27a8e9cbb4 145 if((sent_tm == T_frames) && (repeat_T_frame == false)){ // Give eos and start new session
shreeshas95 13:7b27a8e9cbb4 146 buffer_112[buffer_112_counter]=EoS[EOS_counter++];
shreeshas95 13:7b27a8e9cbb4 147 if(EOS_counter == 120){
shreeshas95 13:7b27a8e9cbb4 148 // cout<<"eos exit";
shreeshas95 13:7b27a8e9cbb4 149 enable_T_frame = false;
shreeshas95 13:7b27a8e9cbb4 150 new_session = true;
shreeshas95 13:7b27a8e9cbb4 151 EOS_counter =0;
shreeshas95 13:7b27a8e9cbb4 152 sent_tm=0;
shreeshas95 13:7b27a8e9cbb4 153 }
shreeshas95 13:7b27a8e9cbb4 154 }
shreeshas95 13:7b27a8e9cbb4 155 else if((sent_tm < (T_frames-1)) && (repeat_T_frame == false)){
shreeshas95 13:7b27a8e9cbb4 156 buffer_112[buffer_112_counter] = buffer_512[counter_in_block++]; // sending last two T frames
shreeshas95 13:7b27a8e9cbb4 157 if(counter_in_block == 318){
shreeshas95 13:7b27a8e9cbb4 158 sent_tm = sent_tm + 2;
shreeshas95 13:7b27a8e9cbb4 159 repeat_T_frame= true;
shreeshas95 13:7b27a8e9cbb4 160 }
shreeshas95 13:7b27a8e9cbb4 161 }
shreeshas95 13:7b27a8e9cbb4 162 else if((sent_tm< T_frames) && (repeat_T_frame == true)){
shreeshas95 13:7b27a8e9cbb4 163 buffer_112[buffer_112_counter] = buffer_512[(counter_in_block++ )-159];
shreeshas95 13:7b27a8e9cbb4 164 if(counter_in_block == 477){
shreeshas95 13:7b27a8e9cbb4 165 sent_tm = sent_tm +1;
shreeshas95 13:7b27a8e9cbb4 166 counter_in_block = counter_in_block-159;
shreeshas95 13:7b27a8e9cbb4 167 }
shreeshas95 13:7b27a8e9cbb4 168 }
shreeshas95 13:7b27a8e9cbb4 169 else if((sent_tm == T_frames ) && (repeat_T_frame == true)){ // Give eos and start new session
shreeshas95 13:7b27a8e9cbb4 170
shreeshas95 13:7b27a8e9cbb4 171 buffer_112[buffer_112_counter]=EoS[EOS_counter++];
shreeshas95 13:7b27a8e9cbb4 172 if(EOS_counter == 120){
shreeshas95 13:7b27a8e9cbb4 173 enable_T_frame = false;
shreeshas95 13:7b27a8e9cbb4 174 new_session = true;
shreeshas95 13:7b27a8e9cbb4 175 EOS_counter =0;
shreeshas95 13:7b27a8e9cbb4 176 // printf("yoooo %d",int(sent_tm));
shreeshas95 13:7b27a8e9cbb4 177 sent_tm=0;
shreeshas95 13:7b27a8e9cbb4 178
shreeshas95 13:7b27a8e9cbb4 179 last_block = false;
shreeshas95 13:7b27a8e9cbb4 180 last_buffer = true;
shreeshas95 13:7b27a8e9cbb4 181 // printf("i m here");
shreeshas95 13:7b27a8e9cbb4 182 break;
shreeshas95 13:7b27a8e9cbb4 183 }
shreeshas95 13:7b27a8e9cbb4 184 }
shreeshas95 13:7b27a8e9cbb4 185
shreeshas95 13:7b27a8e9cbb4 186 }
shreeshas95 13:7b27a8e9cbb4 187
shreeshas95 13:7b27a8e9cbb4 188 }
shreeshas95 13:7b27a8e9cbb4 189
shreeshas95 13:7b27a8e9cbb4 190 }
shreeshas95 13:7b27a8e9cbb4 191 differential_encode(buffer_112, 112);
shreeshas95 13:7b27a8e9cbb4 192 if(last_buffer ==true){
shreeshas95 13:7b27a8e9cbb4 193 diff_prev=0;
shreeshas95 13:7b27a8e9cbb4 194 }
shreeshas95 13:7b27a8e9cbb4 195
shreeshas95 13:7b27a8e9cbb4 196 }