Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
Diff: SDCread.h
- Revision:
- 86:a26f5f22631d
- Parent:
- 85:0c5c860f249e
- Child:
- 87:6e154fd43531
--- a/SDCread.h Wed Jan 20 15:00:28 2016 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-// It takes 276us to read from sd card and write in 112 buffer
-
-//~ #include"SDcard.h"
-#define T_frames 30
-unsigned char buffer_112_counter,sent_tm = 0;
-int disk_read(uint8_t *, uint64_t),j;
-bool new_session = true;
-bool last_buffer = false;
-bool first_block = true;
-bool last_block =false;
-bool repeat_T_frame = false;
-unsigned int counter_in_block=0,diff_prev=0;
-unsigned char EOS_counter = 0;
-unsigned char enable_T_frame = false;
-uint64_t start_block_num ; // Read from TC
-uint64_t end_block_num ; // Read from TC
-uint64_t Number_of_blocks_to_read ;
-uint64_t block_counter = 0;
-unsigned char buffer_512[512], buffer_112[112],counter_in_S_frame=0,counter_in_SCH=0;
-unsigned char make_EOS_flag = true;
-bool reset = false;
-
-void differential_encode(unsigned char* ptr, int length){
-
- for(int i=0; i<length;i++){
-
- unsigned char s = ptr[i] , t;
- t = s ^ (s >> 1);
- (diff_prev == 0) ? t=t^0x00 : t=t^0x80 ;
- diff_prev = int(s & 0x01);
- ptr[i] = t;
- }
-
- }
-
-void send_tm_from_SD_card(){
-
- if(make_EOS_flag == true){
- make_EOS_flag = false;
- Number_of_blocks_to_read = end_block_num - start_block_num +1;
- }
-
-
- for(buffer_112_counter=0;buffer_112_counter<112;buffer_112_counter++){
-
-
- if(new_session == true){ //check if it is beginnig of session
-
- buffer_112[buffer_112_counter]=S_frame[counter_in_S_frame++]; // sending S frame
-
- if(counter_in_S_frame==48){
-// cout<<"new_session_over\n";
- counter_in_S_frame=0;
- new_session = false;
- enable_T_frame = true;
-// enable_SCH = true;
- }
- }
- else if(enable_T_frame == true){ // To send t frames
-
- if(block_counter != Number_of_blocks_to_read){
-
- if(first_block){ // Read first block
-// cout<<"brooooooo"<<start_block_num<<"yo"<<endl;
- SPI_mutex.lock();
- disk_read(buffer_512,start_block_num );
- SPI_mutex.unlock();
- counter_in_block = 0;
- block_counter++;
-
- first_block = false;
-// cout<<"first block exit\n";
-// cout<<Number_of_blocks_to_read;
-
- ////gPC.printf("\n");
-// for(int j=0;j<512;j++){
-// //gPC.printf("%02X ",buffer_512[j]);
-// }
-// //gPC.printf("\n");
-// if(block_counter == Number_of_blocks_to_read){
-// last_block = true;
-// }
-
-
- }
- if((counter_in_block == 318 )&&(sent_tm<38)){ // Read next block
-
-// cout<<"next block exit\n";
- SPI_mutex.lock();
- disk_read(buffer_512,start_block_num + block_counter );
- SPI_mutex.unlock();
- counter_in_block = 0;
- block_counter++;
- if(block_counter == Number_of_blocks_to_read){
- last_block = true;
- }
- }
- }
-
- if(!last_block){
-
- // cout<<int(sent_tm)<<" ";
- if(sent_tm<38){
- buffer_112[buffer_112_counter] = buffer_512[counter_in_block++]; // sending T frames
-// cout<<int (counter_in_block)<<" ";
- if(counter_in_block == 318){
-
- sent_tm = sent_tm + 2;
- }
- }
- else if(sent_tm == (T_frames-1)){
- buffer_112[buffer_112_counter] = buffer_512[(counter_in_block++ )-159];
- if(counter_in_block == 318){
-// cout<<"last block exit\n";
- sent_tm = T_frames;
- }
- }
- else if(sent_tm == T_frames){ // Give eos and start new session
- buffer_112[buffer_112_counter]=EoS[EOS_counter++];
- if(EOS_counter == 120){
- enable_T_frame = false;
- new_session = true;
- EOS_counter =0;
- sent_tm=0;
- repeat_T_frame = false;
-// cout<<"eos exit\n";
- }
- }
- }
- if(last_block){
-// cout<<"lb";
- if(sent_tm == (T_frames-1) && (repeat_T_frame == false)){
- buffer_112[buffer_112_counter] = buffer_512[(counter_in_block++ )-159];
- if(counter_in_block == 318){
-// cout<<"repeat block exit\n";
- sent_tm = T_frames;
- }
- }
- if((sent_tm == T_frames) && (repeat_T_frame == false)){ // Give eos and start new session
- buffer_112[buffer_112_counter]=EoS[EOS_counter++];
- if(EOS_counter == 120){
-// cout<<"eos exit";
- enable_T_frame = false;
- new_session = true;
- EOS_counter =0;
- sent_tm=0;
- }
- }
- else if((sent_tm < (T_frames-1)) && (repeat_T_frame == false)){
- buffer_112[buffer_112_counter] = buffer_512[counter_in_block++]; // sending last two T frames
- if(counter_in_block == 318){
- sent_tm = sent_tm + 2;
- repeat_T_frame= true;
- }
- }
- else if((sent_tm< T_frames) && (repeat_T_frame == true)){
- buffer_112[buffer_112_counter] = buffer_512[(counter_in_block++ )-159];
- if(counter_in_block == 477){
- sent_tm = sent_tm +1;
- counter_in_block = counter_in_block-159;
- }
- }
- else if((sent_tm == T_frames ) && (repeat_T_frame == true)){ // Give eos and start new session
-
- buffer_112[buffer_112_counter]=EoS[EOS_counter++];
- if(EOS_counter == 120){
- enable_T_frame = false;
- new_session = true;
- EOS_counter =0;
-// //gPC.printf("yoooo %d",int(sent_tm));
- sent_tm=0;
-
- last_block = false;
- last_buffer = true;
- //gPC.printf("?\r\n");
- break;
- }
- }
-
- }
-
- }
-
- }
- differential_encode(buffer_112, 112);
- if(last_buffer ==true){
- diff_prev=0;
- }
-
-}
\ No newline at end of file
