Repo for COM_MNG_TMTC_SIMPLE for integration with adf

Dependencies:   mbed-rtos mbed

Fork of COM_MNG_TMTC_SIMPLE by Shreesha S

Committer:
shekhar
Date:
Thu Dec 31 08:39:43 2015 +0000
Revision:
8:d1951bbdcdd8
Parent:
1:a0055b3280c8
added adf.h and snd_tm;

Who changed what in which revision?

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