lele

Dependencies:   mbed

Committer:
krishanprajapat
Date:
Fri Jul 31 12:52:23 2015 +0000
Revision:
1:90fd52655154
Parent:
0:984643af7d81
bro working fine and Sframe and EoS is also done , so put peace;

Who changed what in which revision?

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