![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
lele
SD_read.h@0:984643af7d81, 2015-07-31 (annotated)
- Committer:
- krishanprajapat
- Date:
- Fri Jul 31 12:30:28 2015 +0000
- Revision:
- 0:984643af7d81
- Child:
- 1:90fd52655154
bro was working .......next step to reducr 2 sframes and eos to 1
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:984643af7d81 | 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 | 0:984643af7d81 | 22 | unsigned char EoS[120]; |
krishanprajapat | 0:984643af7d81 | 23 | unsigned char make_EOS_flag =true; |
krishanprajapat | 0:984643af7d81 | 24 | |
krishanprajapat | 0:984643af7d81 | 25 | void differential_encode(unsigned char* ptr, int length){ |
krishanprajapat | 0:984643af7d81 | 26 | |
krishanprajapat | 0:984643af7d81 | 27 | for(int i=0; i<length;i++){ |
krishanprajapat | 0:984643af7d81 | 28 | |
krishanprajapat | 0:984643af7d81 | 29 | unsigned char s = ptr[i] , t; |
krishanprajapat | 0:984643af7d81 | 30 | t = s ^ (s >> 1); |
krishanprajapat | 0:984643af7d81 | 31 | (diff_prev == 0) ? t=t^0x00 : t=t^0x80 ; |
krishanprajapat | 0:984643af7d81 | 32 | diff_prev = int(s & 0x01); |
krishanprajapat | 0:984643af7d81 | 33 | ptr[i] = t; |
krishanprajapat | 0:984643af7d81 | 34 | } |
krishanprajapat | 0:984643af7d81 | 35 | |
krishanprajapat | 0:984643af7d81 | 36 | } |
krishanprajapat | 0:984643af7d81 | 37 | |
krishanprajapat | 0:984643af7d81 | 38 | void make_EOS() |
krishanprajapat | 0:984643af7d81 | 39 | { |
krishanprajapat | 0:984643af7d81 | 40 | |
krishanprajapat | 0:984643af7d81 | 41 | for(int i = 0 ; i < 24 ; ++i){ |
krishanprajapat | 0:984643af7d81 | 42 | EoS[i] = 0x00; |
krishanprajapat | 0:984643af7d81 | 43 | } |
krishanprajapat | 0:984643af7d81 | 44 | |
krishanprajapat | 0:984643af7d81 | 45 | //~ S-FRAME [1] |
krishanprajapat | 0:984643af7d81 | 46 | //~ first two bits of S-FRAME |
krishanprajapat | 0:984643af7d81 | 47 | EoS[23] = 0x01; |
krishanprajapat | 0:984643af7d81 | 48 | |
krishanprajapat | 0:984643af7d81 | 49 | EoS[24] = 0x1a; |
krishanprajapat | 0:984643af7d81 | 50 | EoS[25] = 0x77; |
krishanprajapat | 0:984643af7d81 | 51 | EoS[26] = 0xef; |
krishanprajapat | 0:984643af7d81 | 52 | EoS[27] = 0xc3; |
krishanprajapat | 0:984643af7d81 | 53 | EoS[28] = 0x4a; |
krishanprajapat | 0:984643af7d81 | 54 | EoS[29] = 0xea; |
krishanprajapat | 0:984643af7d81 | 55 | EoS[30] = 0x27; |
krishanprajapat | 0:984643af7d81 | 56 | EoS[31] = 0x91; |
krishanprajapat | 0:984643af7d81 | 57 | EoS[32] = 0x1a; |
krishanprajapat | 0:984643af7d81 | 58 | EoS[33] = 0x77; |
krishanprajapat | 0:984643af7d81 | 59 | EoS[34] = 0xef; |
krishanprajapat | 0:984643af7d81 | 60 | EoS[35] = 0xc3; |
krishanprajapat | 0:984643af7d81 | 61 | EoS[36] = 0x4a; |
krishanprajapat | 0:984643af7d81 | 62 | EoS[37] = 0xea; |
krishanprajapat | 0:984643af7d81 | 63 | EoS[38] = 0x27; |
krishanprajapat | 0:984643af7d81 | 64 | EoS[39] = 0x90; |
krishanprajapat | 0:984643af7d81 | 65 | |
krishanprajapat | 0:984643af7d81 | 66 | for(int i = 40 ; i < 72 ; ++i){ |
krishanprajapat | 0:984643af7d81 | 67 | EoS[i] = 0x00; |
krishanprajapat | 0:984643af7d81 | 68 | } |
krishanprajapat | 0:984643af7d81 | 69 | |
krishanprajapat | 0:984643af7d81 | 70 | //~ S-FRAME [2] |
krishanprajapat | 0:984643af7d81 | 71 | //~ first two bits of S-FRAME |
krishanprajapat | 0:984643af7d81 | 72 | EoS[71] = 0x01; |
krishanprajapat | 0:984643af7d81 | 73 | |
krishanprajapat | 0:984643af7d81 | 74 | EoS[72] = 0x1a; |
krishanprajapat | 0:984643af7d81 | 75 | EoS[73] = 0x77; |
krishanprajapat | 0:984643af7d81 | 76 | EoS[74] = 0xef; |
krishanprajapat | 0:984643af7d81 | 77 | EoS[75] = 0xc3; |
krishanprajapat | 0:984643af7d81 | 78 | EoS[76] = 0x4a; |
krishanprajapat | 0:984643af7d81 | 79 | EoS[77] = 0xea; |
krishanprajapat | 0:984643af7d81 | 80 | EoS[78] = 0x27; |
krishanprajapat | 0:984643af7d81 | 81 | EoS[79] = 0x91; |
krishanprajapat | 0:984643af7d81 | 82 | EoS[80] = 0x1a; |
krishanprajapat | 0:984643af7d81 | 83 | EoS[81] = 0x77; |
krishanprajapat | 0:984643af7d81 | 84 | EoS[82] = 0xef; |
krishanprajapat | 0:984643af7d81 | 85 | EoS[83] = 0xc3; |
krishanprajapat | 0:984643af7d81 | 86 | EoS[84] = 0x4a; |
krishanprajapat | 0:984643af7d81 | 87 | EoS[85] = 0xea; |
krishanprajapat | 0:984643af7d81 | 88 | EoS[86] = 0x27; |
krishanprajapat | 0:984643af7d81 | 89 | EoS[87] = 0x90; |
krishanprajapat | 0:984643af7d81 | 90 | |
krishanprajapat | 0:984643af7d81 | 91 | for(int i = 88 ; i < 120 ; ++i){ |
krishanprajapat | 0:984643af7d81 | 92 | EoS[i] = 0x00; |
krishanprajapat | 0:984643af7d81 | 93 | } |
krishanprajapat | 0:984643af7d81 | 94 | |
krishanprajapat | 0:984643af7d81 | 95 | } |
krishanprajapat | 0:984643af7d81 | 96 | |
krishanprajapat | 0:984643af7d81 | 97 | void send_tm_from_SD_card(){ |
krishanprajapat | 0:984643af7d81 | 98 | |
krishanprajapat | 0:984643af7d81 | 99 | |
krishanprajapat | 0:984643af7d81 | 100 | if(make_EOS_flag == true){ |
krishanprajapat | 0:984643af7d81 | 101 | make_EOS(); |
krishanprajapat | 0:984643af7d81 | 102 | make_EOS_flag = false; |
krishanprajapat | 0:984643af7d81 | 103 | Number_of_blocks_to_read = end_block_num - start_block_num +1; |
krishanprajapat | 0:984643af7d81 | 104 | } |
krishanprajapat | 0:984643af7d81 | 105 | |
krishanprajapat | 0:984643af7d81 | 106 | |
krishanprajapat | 0:984643af7d81 | 107 | for(buffer_112_counter=0;buffer_112_counter<112;buffer_112_counter++){ |
krishanprajapat | 0:984643af7d81 | 108 | |
krishanprajapat | 0:984643af7d81 | 109 | |
krishanprajapat | 0:984643af7d81 | 110 | if(new_session == true){ //check if it is beginnig of session |
krishanprajapat | 0:984643af7d81 | 111 | |
krishanprajapat | 0:984643af7d81 | 112 | buffer_112[buffer_112_counter]=S_frame[counter_in_S_frame++]; // sending S frame |
krishanprajapat | 0:984643af7d81 | 113 | |
krishanprajapat | 0:984643af7d81 | 114 | if(counter_in_S_frame==48){ |
krishanprajapat | 0:984643af7d81 | 115 | // cout<<"new_session_over\n"; |
krishanprajapat | 0:984643af7d81 | 116 | counter_in_S_frame=0; |
krishanprajapat | 0:984643af7d81 | 117 | new_session = false; |
krishanprajapat | 0:984643af7d81 | 118 | enable_T_frame = true; |
krishanprajapat | 0:984643af7d81 | 119 | // enable_SCH = true; |
krishanprajapat | 0:984643af7d81 | 120 | } |
krishanprajapat | 0:984643af7d81 | 121 | } |
krishanprajapat | 0:984643af7d81 | 122 | else if(enable_T_frame == true){ // To send t frames |
krishanprajapat | 0:984643af7d81 | 123 | |
krishanprajapat | 0:984643af7d81 | 124 | if(block_counter != Number_of_blocks_to_read){ |
krishanprajapat | 0:984643af7d81 | 125 | |
krishanprajapat | 0:984643af7d81 | 126 | if(first_block){ // Read first block |
krishanprajapat | 0:984643af7d81 | 127 | // cout<<"brooooooo"<<start_block_num<<"yo"<<endl; |
krishanprajapat | 0:984643af7d81 | 128 | |
krishanprajapat | 0:984643af7d81 | 129 | disk_read(buffer_512,start_block_num ); |
krishanprajapat | 0:984643af7d81 | 130 | counter_in_block = 0; |
krishanprajapat | 0:984643af7d81 | 131 | block_counter++; |
krishanprajapat | 0:984643af7d81 | 132 | |
krishanprajapat | 0:984643af7d81 | 133 | first_block = false; |
krishanprajapat | 0:984643af7d81 | 134 | // cout<<"first block exit\n"; |
krishanprajapat | 0:984643af7d81 | 135 | // cout<<Number_of_blocks_to_read; |
krishanprajapat | 0:984643af7d81 | 136 | |
krishanprajapat | 0:984643af7d81 | 137 | //printf("\n"); |
krishanprajapat | 0:984643af7d81 | 138 | // for(int j=0;j<512;j++){ |
krishanprajapat | 0:984643af7d81 | 139 | // printf("%02X ",buffer_512[j]); |
krishanprajapat | 0:984643af7d81 | 140 | // } |
krishanprajapat | 0:984643af7d81 | 141 | // printf("\n"); |
krishanprajapat | 0:984643af7d81 | 142 | // if(block_counter == Number_of_blocks_to_read){ |
krishanprajapat | 0:984643af7d81 | 143 | // last_block = true; |
krishanprajapat | 0:984643af7d81 | 144 | // } |
krishanprajapat | 0:984643af7d81 | 145 | |
krishanprajapat | 0:984643af7d81 | 146 | |
krishanprajapat | 0:984643af7d81 | 147 | } |
krishanprajapat | 0:984643af7d81 | 148 | if((counter_in_block == 318 )&&(sent_tm<38)){ // Read next block |
krishanprajapat | 0:984643af7d81 | 149 | |
krishanprajapat | 0:984643af7d81 | 150 | // cout<<"next block exit\n"; |
krishanprajapat | 0:984643af7d81 | 151 | disk_read(buffer_512,start_block_num + block_counter ); |
krishanprajapat | 0:984643af7d81 | 152 | counter_in_block = 0; |
krishanprajapat | 0:984643af7d81 | 153 | block_counter++; |
krishanprajapat | 0:984643af7d81 | 154 | if(block_counter == Number_of_blocks_to_read){ |
krishanprajapat | 0:984643af7d81 | 155 | last_block = true; |
krishanprajapat | 0:984643af7d81 | 156 | } |
krishanprajapat | 0:984643af7d81 | 157 | } |
krishanprajapat | 0:984643af7d81 | 158 | } |
krishanprajapat | 0:984643af7d81 | 159 | |
krishanprajapat | 0:984643af7d81 | 160 | if(!last_block){ |
krishanprajapat | 0:984643af7d81 | 161 | |
krishanprajapat | 0:984643af7d81 | 162 | // cout<<int(sent_tm)<<" "; |
krishanprajapat | 0:984643af7d81 | 163 | if(sent_tm<38){ |
krishanprajapat | 0:984643af7d81 | 164 | buffer_112[buffer_112_counter] = buffer_512[counter_in_block++]; // sending T frames |
krishanprajapat | 0:984643af7d81 | 165 | // cout<<int (counter_in_block)<<" "; |
krishanprajapat | 0:984643af7d81 | 166 | if(counter_in_block == 318){ |
krishanprajapat | 0:984643af7d81 | 167 | |
krishanprajapat | 0:984643af7d81 | 168 | sent_tm = sent_tm + 2; |
krishanprajapat | 0:984643af7d81 | 169 | } |
krishanprajapat | 0:984643af7d81 | 170 | } |
krishanprajapat | 0:984643af7d81 | 171 | else if(sent_tm == (T_frames-1)){ |
krishanprajapat | 0:984643af7d81 | 172 | buffer_112[buffer_112_counter] = buffer_512[(counter_in_block++ )-159]; |
krishanprajapat | 0:984643af7d81 | 173 | if(counter_in_block == 318){ |
krishanprajapat | 0:984643af7d81 | 174 | // cout<<"last block exit\n"; |
krishanprajapat | 0:984643af7d81 | 175 | sent_tm = T_frames; |
krishanprajapat | 0:984643af7d81 | 176 | } |
krishanprajapat | 0:984643af7d81 | 177 | } |
krishanprajapat | 0:984643af7d81 | 178 | else if(sent_tm == T_frames){ // Give eos and start new session |
krishanprajapat | 0:984643af7d81 | 179 | buffer_112[buffer_112_counter]=EoS[EOS_counter++]; |
krishanprajapat | 0:984643af7d81 | 180 | if(EOS_counter == 120){ |
krishanprajapat | 0:984643af7d81 | 181 | enable_T_frame = false; |
krishanprajapat | 0:984643af7d81 | 182 | new_session = true; |
krishanprajapat | 0:984643af7d81 | 183 | EOS_counter =0; |
krishanprajapat | 0:984643af7d81 | 184 | sent_tm=0; |
krishanprajapat | 0:984643af7d81 | 185 | repeat_T_frame = false; |
krishanprajapat | 0:984643af7d81 | 186 | // cout<<"eos exit\n"; |
krishanprajapat | 0:984643af7d81 | 187 | } |
krishanprajapat | 0:984643af7d81 | 188 | } |
krishanprajapat | 0:984643af7d81 | 189 | } |
krishanprajapat | 0:984643af7d81 | 190 | if(last_block){ |
krishanprajapat | 0:984643af7d81 | 191 | // cout<<"lb"; |
krishanprajapat | 0:984643af7d81 | 192 | if(sent_tm == (T_frames-1) && (repeat_T_frame == false)){ |
krishanprajapat | 0:984643af7d81 | 193 | buffer_112[buffer_112_counter] = buffer_512[(counter_in_block++ )-159]; |
krishanprajapat | 0:984643af7d81 | 194 | if(counter_in_block == 318){ |
krishanprajapat | 0:984643af7d81 | 195 | // cout<<"repeat block exit\n"; |
krishanprajapat | 0:984643af7d81 | 196 | sent_tm = T_frames; |
krishanprajapat | 0:984643af7d81 | 197 | } |
krishanprajapat | 0:984643af7d81 | 198 | } |
krishanprajapat | 0:984643af7d81 | 199 | if((sent_tm == T_frames) && (repeat_T_frame == false)){ // Give eos and start new session |
krishanprajapat | 0:984643af7d81 | 200 | buffer_112[buffer_112_counter]=EoS[EOS_counter++]; |
krishanprajapat | 0:984643af7d81 | 201 | if(EOS_counter == 120){ |
krishanprajapat | 0:984643af7d81 | 202 | // cout<<"eos exit"; |
krishanprajapat | 0:984643af7d81 | 203 | enable_T_frame = false; |
krishanprajapat | 0:984643af7d81 | 204 | new_session = true; |
krishanprajapat | 0:984643af7d81 | 205 | EOS_counter =0; |
krishanprajapat | 0:984643af7d81 | 206 | sent_tm=0; |
krishanprajapat | 0:984643af7d81 | 207 | } |
krishanprajapat | 0:984643af7d81 | 208 | } |
krishanprajapat | 0:984643af7d81 | 209 | else if((sent_tm < (T_frames-1)) && (repeat_T_frame == false)){ |
krishanprajapat | 0:984643af7d81 | 210 | buffer_112[buffer_112_counter] = buffer_512[counter_in_block++]; // sending last two T frames |
krishanprajapat | 0:984643af7d81 | 211 | if(counter_in_block == 318){ |
krishanprajapat | 0:984643af7d81 | 212 | sent_tm = sent_tm + 2; |
krishanprajapat | 0:984643af7d81 | 213 | repeat_T_frame= true; |
krishanprajapat | 0:984643af7d81 | 214 | } |
krishanprajapat | 0:984643af7d81 | 215 | } |
krishanprajapat | 0:984643af7d81 | 216 | else if((sent_tm< T_frames) && (repeat_T_frame == true)){ |
krishanprajapat | 0:984643af7d81 | 217 | buffer_112[buffer_112_counter] = buffer_512[(counter_in_block++ )-159]; |
krishanprajapat | 0:984643af7d81 | 218 | if(counter_in_block == 477){ |
krishanprajapat | 0:984643af7d81 | 219 | sent_tm = sent_tm +1; |
krishanprajapat | 0:984643af7d81 | 220 | counter_in_block = counter_in_block-159; |
krishanprajapat | 0:984643af7d81 | 221 | } |
krishanprajapat | 0:984643af7d81 | 222 | } |
krishanprajapat | 0:984643af7d81 | 223 | else if((sent_tm == T_frames ) && (repeat_T_frame == true)){ // Give eos and start new session |
krishanprajapat | 0:984643af7d81 | 224 | |
krishanprajapat | 0:984643af7d81 | 225 | buffer_112[buffer_112_counter]=EoS[EOS_counter++]; |
krishanprajapat | 0:984643af7d81 | 226 | if(EOS_counter == 120){ |
krishanprajapat | 0:984643af7d81 | 227 | enable_T_frame = false; |
krishanprajapat | 0:984643af7d81 | 228 | new_session = true; |
krishanprajapat | 0:984643af7d81 | 229 | EOS_counter =0; |
krishanprajapat | 0:984643af7d81 | 230 | // printf("yoooo %d",int(sent_tm)); |
krishanprajapat | 0:984643af7d81 | 231 | sent_tm=0; |
krishanprajapat | 0:984643af7d81 | 232 | |
krishanprajapat | 0:984643af7d81 | 233 | last_block = false; |
krishanprajapat | 0:984643af7d81 | 234 | last_buffer = true; |
krishanprajapat | 0:984643af7d81 | 235 | // printf("i m here"); |
krishanprajapat | 0:984643af7d81 | 236 | break; |
krishanprajapat | 0:984643af7d81 | 237 | } |
krishanprajapat | 0:984643af7d81 | 238 | } |
krishanprajapat | 0:984643af7d81 | 239 | |
krishanprajapat | 0:984643af7d81 | 240 | } |
krishanprajapat | 0:984643af7d81 | 241 | |
krishanprajapat | 0:984643af7d81 | 242 | } |
krishanprajapat | 0:984643af7d81 | 243 | |
krishanprajapat | 0:984643af7d81 | 244 | } |
krishanprajapat | 0:984643af7d81 | 245 | differential_encode(buffer_112, 112); |
krishanprajapat | 0:984643af7d81 | 246 | if(last_buffer ==true){ |
krishanprajapat | 0:984643af7d81 | 247 | diff_prev=0; |
krishanprajapat | 0:984643af7d81 | 248 | } |
krishanprajapat | 0:984643af7d81 | 249 | |
krishanprajapat | 0:984643af7d81 | 250 | } |