June 30

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE by shubham c

Committer:
chaithanyarss
Date:
Sat Jul 02 13:36:18 2016 +0000
Revision:
191:d14b1c783736
Parent:
190:28a07943dded
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chaithanyarss 190:28a07943dded 1 uint8_t read_2byte(uint8_t* ptr){
chaithanyarss 190:28a07943dded 2 uint8_t output = (uint8_t ) *(ptr+1);
chaithanyarss 190:28a07943dded 3 output += ( (uint8_t )(*ptr) ) << 8;
ee12b079 93:4d76de54a699 4 return output;
ee12b079 93:4d76de54a699 5 }
shreeshas95 1:a0055b3280c8 6
chaithanyarss 190:28a07943dded 7 uint8_t read_4byte(uint8_t* ptr){
chaithanyarss 190:28a07943dded 8 uint8_t output = (uint8_t ) *(ptr+3);
chaithanyarss 190:28a07943dded 9 output += (uint8_t )*(ptr+2)<<8;
chaithanyarss 190:28a07943dded 10 output += (uint8_t )*(ptr+1)<<16;
chaithanyarss 190:28a07943dded 11 output += (uint8_t )*(ptr)<<24;
ee12b079 93:4d76de54a699 12 return output;
ee12b079 93:4d76de54a699 13 }
ee12b079 93:4d76de54a699 14
chaithanyarss 190:28a07943dded 15 int adjust(int size, uint8_t data, uint8_t* ptr , int space){
ee12b079 93:4d76de54a699 16 space = space&0x0f;
chaithanyarss 190:28a07943dded 17 if(space == 8) *ptr = 0;
ee12b079 93:4d76de54a699 18 data = data&((1<<size)-1);
ee12b079 93:4d76de54a699 19 if(space >= size){
ee12b079 93:4d76de54a699 20 *ptr += data<<(space-size);
ee12b079 93:4d76de54a699 21 if(space - size == 0){
ee12b079 93:4d76de54a699 22 return 0x18;
ee12b079 93:4d76de54a699 23 }else{
ee12b079 93:4d76de54a699 24 return space-size;
shreeshas95 1:a0055b3280c8 25 }
ee12b079 93:4d76de54a699 26 }else{
ee12b079 93:4d76de54a699 27 ptr[0] += data>>(size-space);
ee12b079 93:4d76de54a699 28 ptr[1] = (data<<(8-(size-space)))&0xff ;
ee12b079 93:4d76de54a699 29 return 0x10 + 8-(size - space);
ee12b079 93:4d76de54a699 30 }
ee12b079 93:4d76de54a699 31 }
ee12b079 93:4d76de54a699 32
ee12b079 93:4d76de54a699 33
ee12b079 93:4d76de54a699 34 int compress (int data, int x, int y){ //to be compressed with scheme (msb x)*4^y ;
ee12b079 93:4d76de54a699 35 for(int i = 0 ; i < 1<<y ; i++){
ee12b079 93:4d76de54a699 36 if(data <= ( (1<<x)-1) * (1<<(2*i)) ){
ee12b079 93:4d76de54a699 37 return ( ((data>>i*2)<<y) + i);
shreeshas95 1:a0055b3280c8 38 }
ee12b079 93:4d76de54a699 39 }
ee12b079 93:4d76de54a699 40 if ( data > ( (1<<x)-1) * (1<<(2*((1<<y)-1))) ){
ee12b079 93:4d76de54a699 41 // cout <<"compression exception"<<endl;
ee12b079 93:4d76de54a699 42 return 0;
ee12b079 93:4d76de54a699 43 }
ee12b079 93:4d76de54a699 44 }
ee12b079 93:4d76de54a699 45
chaithanyarss 190:28a07943dded 46 //--------------------------------------------------------beacon
chaithanyarss 190:28a07943dded 47 struct beacon_packet{
chaithanyarss 190:28a07943dded 48 unsigned char data[14];
chaithanyarss 190:28a07943dded 49 beacon_packet *next;
chaithanyarss 190:28a07943dded 50 int len;
chaithanyarss 190:28a07943dded 51 };
chaithanyarss 190:28a07943dded 52
chaithanyarss 190:28a07943dded 53 int beacon_cntr = 0;
chaithanyarss 190:28a07943dded 54 bool beacon_flag = true;
chaithanyarss 190:28a07943dded 55 beacon_packet *head_beacon, *tail_beacon;
chaithanyarss 190:28a07943dded 56 //--------------------------------------------------------beacon
chaithanyarss 190:28a07943dded 57
ee12b079 93:4d76de54a699 58
ee12b079 93:4d76de54a699 59
ee12b079 93:4d76de54a699 60 //variable declerations
chaithanyarss 190:28a07943dded 61 uint8_t srp_mode , at , pzf , ezf ,sfp[65] ,scp[55],beacon_at;; //tells which mode is calibrated or plot 0 for calibrated and 1 for scatterered, below threshold , proton zero flux, electron zero flux.
ee12b079 93:4d76de54a699 62 unsigned int sfp_bin[52] , scp_bin[52]; //storing the bin values.
ee12b079 93:4d76de54a699 63 unsigned int sfp_threshold_m0[52] = {8128,8128,8128,8128,8128,8128,8128,8128,960,960,960,960,960,960,960,960,960,960,960,960,4032,4032,4032,4032,8128,8128,8128,8128,4032,4032,124,124,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,252,252,252,252,252};
chaithanyarss 190:28a07943dded 64 const int scp_threshold_m0[52] = {245760,245760,245760,245760,245760,245760,245760,245760,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,114688,114688,114688,114688,245760,245760,245760,245760,114688,114688,4032,4032,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,8128,4032,4032,4032,4032};
ee12b079 93:4d76de54a699 65 unsigned int scp_threshold_m0_1[9]={114688,245760,245760,245760,245760,114688,114688,65472,65472} ; //for mode 0..ie callibrated mode
chaithanyarss 190:28a07943dded 66 const int sfp_threshold_m1[2] ={252,8128},scp_threshold_m1[2]={7680,245760};
chaithanyarss 190:28a07943dded 67 uint8_t frames[3][134] = {0};
chaithanyarss 190:28a07943dded 68 uint8_t position_tm_frame[3] = {8,11,5} , position_tm_starting[3] = {8,11,5}; //{sc,sf-bt,sf-at}
chaithanyarss 190:28a07943dded 69 uint8_t id; //sf = 0,sc-at = 1,sc-bt = 2;
chaithanyarss 190:28a07943dded 70 uint8_t TM_interleave_data[512] , TM_convoluted_data[270] = {0};
ee12b079 99:efde3df6cd94 71 int proton_scp_sum,electron_scp_sum,length, temp_crc,attitude = 0,FSC_science = 1,debug_cntr = 0, size,space;
chaithanyarss 190:28a07943dded 72 uint8_t *ptr ,* pointer;
chaithanyarss 190:28a07943dded 73 uint64_t sci_time = 0x221000000; //call some function and get the time or get in the starting, what ever akshay says
ee12b079 99:efde3df6cd94 74 int test_cntr = 0;
chaithanyarss 190:28a07943dded 75 unsigned int beacon_threshold[9] = {114688,245760,245760,245760,245760,114688,114688,65472,65472}; //fill it bro
ee12b079 93:4d76de54a699 76
ee12b079 93:4d76de54a699 77 Convolution ConvObj;
chaithanyarss 190:28a07943dded 78 void convolution (uint8_t * ptr){
ee12b079 93:4d76de54a699 79 ConvObj.convolutionEncode(ptr, TM_convoluted_data);
ee12b079 93:4d76de54a699 80 ConvObj.convolutionEncode(ptr + 67, TM_convoluted_data + 135);
ee12b079 93:4d76de54a699 81 }
ee12b079 93:4d76de54a699 82
ee12b079 93:4d76de54a699 83 //give the pointer of 6 second data to this function
chaithanyarss 190:28a07943dded 84 void srp(uint8_t * head){
ee12b079 98:fd99ddc0e0a1 85 //sci_time = FCTN_CDMS_RD_RTC();
ee12b079 98:fd99ddc0e0a1 86 sci_time = 0;
ee12b079 98:fd99ddc0e0a1 87 gPC.puts("enter srp");
ee12b079 98:fd99ddc0e0a1 88
ee12b079 93:4d76de54a699 89 for (int i = 0; i < 52 ; i++){
ee12b079 93:4d76de54a699 90 scp_bin[i] = 0;
shreeshas95 1:a0055b3280c8 91 }
ee12b079 93:4d76de54a699 92 ptr = head + 3;
ee12b079 93:4d76de54a699 93 srp_mode = head[2]&0x1;
ee12b079 93:4d76de54a699 94 at = 0; //above threshold is false
ee12b079 93:4d76de54a699 95 for(int counter = 0 ; counter < 60 ; counter++){
chaithanyarss 190:28a07943dded 96 //gPC.puts("Y");
chaithanyarss 190:28a07943dded 97 // gPC.printf("counter = %d\n",counter);
chaithanyarss 190:28a07943dded 98 // cout<<"counter = "<<counter<<endl;
ee12b079 93:4d76de54a699 99 pzf = 1; ezf = 1;
ee12b079 93:4d76de54a699 100 if(srp_mode == 0){ //calibrated mode
ee12b079 93:4d76de54a699 101 for(int i=0; i<48 ; i++){
ee12b079 93:4d76de54a699 102 sfp_bin[i] = read_2byte(ptr + i*2);
ee12b079 93:4d76de54a699 103 scp_bin[i] += sfp_bin[i];
ee12b079 93:4d76de54a699 104 if(sfp_bin[i]>sfp_threshold_m0[i]){
ee12b079 93:4d76de54a699 105 at = 1;
ee12b079 93:4d76de54a699 106 }
ee12b079 93:4d76de54a699 107 if(i<17){
ee12b079 93:4d76de54a699 108 if(sfp_bin[i] > 0)
ee12b079 93:4d76de54a699 109 pzf = 0;
ee12b079 93:4d76de54a699 110 }
ee12b079 93:4d76de54a699 111 else if (i>17 && i < 23){
ee12b079 93:4d76de54a699 112 if(sfp_bin[i]>0)
ee12b079 93:4d76de54a699 113 ezf = 0;
ee12b079 93:4d76de54a699 114 }
ee12b079 93:4d76de54a699 115 }
ee12b079 93:4d76de54a699 116 for(int i=0; i<4; i++){
ee12b079 93:4d76de54a699 117 sfp_bin[i+48] = read_4byte( (ptr+96) + 4*i );
ee12b079 93:4d76de54a699 118 scp_bin[i+48] += sfp_bin[i+48];
ee12b079 93:4d76de54a699 119 if(sfp_bin[i+48]>sfp_threshold_m0[i+48])
ee12b079 93:4d76de54a699 120 at = 1;
ee12b079 93:4d76de54a699 121 }
ee12b079 93:4d76de54a699 122 }
ee12b079 93:4d76de54a699 123 else if(srp_mode == 1){ //scattered mode
ee12b079 93:4d76de54a699 124 for(int i = 0; i <32; i++){
ee12b079 93:4d76de54a699 125 sfp_bin[i] = read_2byte(ptr+2*i);
ee12b079 93:4d76de54a699 126 scp_bin[i] += sfp_bin[i];
ee12b079 93:4d76de54a699 127 if(sfp_bin[i] > sfp_threshold_m1[0])
ee12b079 93:4d76de54a699 128 at = 1;
ee12b079 93:4d76de54a699 129 }
ee12b079 93:4d76de54a699 130 for(int i = 0; i < 4 ; i++){
ee12b079 93:4d76de54a699 131 sfp_bin[i+32] = read_4byte( (ptr+64) + 4*i );
ee12b079 93:4d76de54a699 132 scp_bin[i+32] += sfp_bin[i+32];
ee12b079 93:4d76de54a699 133 if(sfp_bin[i+32] > sfp_threshold_m1[1])
ee12b079 93:4d76de54a699 134 at = 1;
ee12b079 93:4d76de54a699 135 }
shreeshas95 1:a0055b3280c8 136 }
ee12b079 93:4d76de54a699 137 ptr = ptr + 112;
ee12b079 93:4d76de54a699 138 for(int i = 0; i<65; i++)
ee12b079 93:4d76de54a699 139 sfp[i] = 0;
ee12b079 93:4d76de54a699 140 if(srp_mode == 0){ //calibrated mode
ee12b079 93:4d76de54a699 141 if(at == 0){
ee12b079 93:4d76de54a699 142 pointer = sfp; debug_cntr = 0;
ee12b079 93:4d76de54a699 143 space = adjust(4, attitude,pointer,8); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 144 space = adjust(6, counter,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 145 space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 146 space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 147 space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 148 for(int i = 0 ; i < 8 ; i++){
ee12b079 93:4d76de54a699 149 space = adjust(1, ((compress(sfp_bin[24+i],7,2))&0x100)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 150 space = adjust(8, ((compress(sfp_bin[24+i],7,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 151 }
ee12b079 93:4d76de54a699 152 for(int i = 0 ; i <12 ; i++){
ee12b079 93:4d76de54a699 153 space = adjust(6, (compress(sfp_bin[32+i],4,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 154 }
ee12b079 93:4d76de54a699 155 for(int i = 0; i < 4; i++){
ee12b079 93:4d76de54a699 156 space = adjust(8, (compress(sfp_bin[44+i],6,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 157 }
ee12b079 93:4d76de54a699 158 for(int i = 0 ; i < 4 ; i++){
ee12b079 93:4d76de54a699 159 space = adjust(1, (compress(sfp_bin[48+i],7,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 160 space = adjust(8, compress(sfp_bin[48+i],7,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 161 }
ee12b079 93:4d76de54a699 162 space = adjust(8, ((compress(sfp_bin[17],6,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 163 space = adjust(8, ((compress(sfp_bin[23],6,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 164 if(pzf == 0){
ee12b079 93:4d76de54a699 165 for(int i = 0; i<2 ; i++){
ee12b079 93:4d76de54a699 166 space = adjust(6, ((compress(sfp_bin[i],5,1))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 167 }
ee12b079 93:4d76de54a699 168 for(int i = 0; i<15 ; i++){
ee12b079 93:4d76de54a699 169 space = adjust(5, ((compress(sfp_bin[i+2],4,1))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 170 }
ee12b079 93:4d76de54a699 171 }
ee12b079 93:4d76de54a699 172 if(ezf == 0){
ee12b079 93:4d76de54a699 173 for(int i = 0; i <5 ;i++){
ee12b079 93:4d76de54a699 174 space = adjust(7, ((compress(sfp_bin[18+i],6,1))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 175 }
ee12b079 93:4d76de54a699 176 }
ee12b079 93:4d76de54a699 177 }//below thershold ends here.
shreeshas95 1:a0055b3280c8 178
ee12b079 98:fd99ddc0e0a1 179 //gPC.puts("below_thresh\r\n");
ee12b079 98:fd99ddc0e0a1 180
ee12b079 93:4d76de54a699 181 if(at == 1){
ee12b079 93:4d76de54a699 182 pointer = sfp + 6; debug_cntr = 6;space = 8;
ee12b079 93:4d76de54a699 183 sfp[0] = (sci_time>>27)&0xff; sfp[1] = (sci_time>>19)&0xff; sfp[2] = (sci_time>>11)&0xff; sfp[3] = (sci_time>>3)&0xff;
ee12b079 93:4d76de54a699 184 sfp[4] = ((sci_time&0x07)<<5) + ((attitude&0x0f)<<1) + (counter>>5);
ee12b079 93:4d76de54a699 185 sfp[5] = ((counter&0x0f)<<3) + (srp_mode<<2);
ee12b079 93:4d76de54a699 186 sfp[5] += (pzf<<1) + ezf ;
ee12b079 93:4d76de54a699 187 for(int i = 0 ; i < 8 ; i++){
ee12b079 93:4d76de54a699 188 space = adjust(1, (compress(sfp_bin[24+i],7,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 189 space = adjust(8, ((compress(sfp_bin[24+i],7,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
shreeshas95 1:a0055b3280c8 190 }
ee12b079 93:4d76de54a699 191 for(int i = 0 ; i <12 ; i++){
ee12b079 93:4d76de54a699 192 space = adjust(6, ((compress(sfp_bin[32+i],3,3))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
shreeshas95 1:a0055b3280c8 193 }
ee12b079 93:4d76de54a699 194 for(int i = 0 ; i < 4 ; i++){
ee12b079 93:4d76de54a699 195 space = adjust(2, (compress(sfp_bin[44+i],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 196 space = adjust(8, compress(sfp_bin[44+i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
shreeshas95 1:a0055b3280c8 197 }
ee12b079 93:4d76de54a699 198 for(int i = 0 ; i < 4 ; i++){
ee12b079 93:4d76de54a699 199 space = adjust(1, (compress(sfp_bin[48+i],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 200 space = adjust(8, compress(sfp_bin[48+i],6,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 201 }
ee12b079 93:4d76de54a699 202 space = adjust(2, (compress(sfp_bin[17],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 203 space = adjust(8, compress(sfp_bin[17],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 204 space = adjust(2, (compress(sfp_bin[23],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 205 space = adjust(8, compress(sfp_bin[23],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
shreeshas95 1:a0055b3280c8 206
ee12b079 93:4d76de54a699 207 if(pzf == 0){
ee12b079 93:4d76de54a699 208 // cout<<"proton bins ";
ee12b079 93:4d76de54a699 209 for(int i = 0; i<17 ; i++){
ee12b079 93:4d76de54a699 210 space = adjust(2, ((compress(sfp_bin[i],8,2))>>8) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 211 space = adjust(8, compress(sfp_bin[i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 212 // printf("%02X ",compress(sfp_bin[i],8,2));
ee12b079 93:4d76de54a699 213 }
ee12b079 93:4d76de54a699 214 }
ee12b079 93:4d76de54a699 215 if(ezf == 0){
ee12b079 93:4d76de54a699 216 // cout<<"electron bins ";
ee12b079 93:4d76de54a699 217 for(int i = 0; i<5 ; i++){
ee12b079 93:4d76de54a699 218 space = adjust(2, ((compress(sfp_bin[18+i],8,2))>>8) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 219 space = adjust(8, compress(sfp_bin[18+i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 220 // printf("%02X ",compress(sfp_bin[i],8,2));
ee12b079 93:4d76de54a699 221 }
ee12b079 93:4d76de54a699 222 }
ee12b079 93:4d76de54a699 223 // cout<<debug_cntr<<" "<<(space&0xf)<<endl;
ee12b079 93:4d76de54a699 224 // cout<<"packet ";
ee12b079 93:4d76de54a699 225 // for(int i = 0; i< 64; i++){
ee12b079 93:4d76de54a699 226 // cout<<bitset<8>(sfp[i]);
ee12b079 93:4d76de54a699 227 // }
ee12b079 93:4d76de54a699 228 // cout<<"ends"<<endl;
ee12b079 93:4d76de54a699 229 }//above threshold ends here.
ee12b079 93:4d76de54a699 230 }else if(srp_mode == 1){ //scattered mode
ee12b079 93:4d76de54a699 231 if(at == 0){
ee12b079 93:4d76de54a699 232 pointer = sfp; debug_cntr = 0; space = 8;
ee12b079 93:4d76de54a699 233 space = adjust(4, attitude,pointer,8); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 234 space = adjust(6, counter,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 235 space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 236 for(int i=0; i<32; i++){
ee12b079 93:4d76de54a699 237 space = adjust(7, compress(sfp_bin[i],6,1) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 238 }
ee12b079 93:4d76de54a699 239 for(int i = 0 ; i < 4 ; i++){
ee12b079 93:4d76de54a699 240 space = adjust(1, (compress(sfp_bin[32+i],7,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 241 space = adjust(8, compress(sfp_bin[32+i],7,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 242 }
ee12b079 93:4d76de54a699 243 }
ee12b079 93:4d76de54a699 244 if(at == 1){
ee12b079 93:4d76de54a699 245 pointer = sfp; debug_cntr = 0; space = 8;
ee12b079 93:4d76de54a699 246 space = adjust(3, sci_time>>32 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 247 space = adjust(8, sci_time>>24 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 248 space = adjust(8, sci_time>>16 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 249 space = adjust(8, sci_time>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 250 space = adjust(8, sci_time ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 251 space = adjust(4, attitude,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 252 space = adjust(6, counter,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 253 space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 254 for(int i=0; i<32; i++){
ee12b079 93:4d76de54a699 255 space = adjust(2, (compress(sfp_bin[i],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 256 space = adjust(8, compress(sfp_bin[i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 257 }
ee12b079 93:4d76de54a699 258 for(int i = 0 ; i < 4 ; i++){
ee12b079 93:4d76de54a699 259 space = adjust(1, (compress(sfp_bin[32+i],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 260 space = adjust(8, compress(sfp_bin[32+i],6,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 261 }
ee12b079 93:4d76de54a699 262 }
ee12b079 93:4d76de54a699 263 }
ee12b079 98:fd99ddc0e0a1 264
ee12b079 98:fd99ddc0e0a1 265 //gPC.puts("sci fine pack\r\n");
ee12b079 93:4d76de54a699 266 //science fine packet is complete here.
ee12b079 93:4d76de54a699 267 //lets try to make frame now******************************************************************************************************************************
ee12b079 93:4d76de54a699 268 if(srp_mode == 0){
ee12b079 93:4d76de54a699 269 if(at == 0){
ee12b079 93:4d76de54a699 270 id = 1; length = 241;
ee12b079 93:4d76de54a699 271 if(pzf == 0)
ee12b079 93:4d76de54a699 272 length += 87;
ee12b079 93:4d76de54a699 273 if(ezf == 0)
ee12b079 93:4d76de54a699 274 length += 35;
ee12b079 93:4d76de54a699 275 }else{
ee12b079 93:4d76de54a699 276 id = 2; length = 288;
ee12b079 93:4d76de54a699 277 if(pzf == 0)
ee12b079 93:4d76de54a699 278 length += 170;
ee12b079 93:4d76de54a699 279 if(ezf == 0)
ee12b079 93:4d76de54a699 280 length += 50;
ee12b079 93:4d76de54a699 281 }
shreeshas95 1:a0055b3280c8 282 }
ee12b079 93:4d76de54a699 283 else if(srp_mode == 1){
ee12b079 93:4d76de54a699 284 if(at == 0){
ee12b079 93:4d76de54a699 285 id = 1; length = 272;
ee12b079 93:4d76de54a699 286 }else{
ee12b079 93:4d76de54a699 287 id = 2; length = 408;
ee12b079 93:4d76de54a699 288 }
shreeshas95 1:a0055b3280c8 289 }
ee12b079 93:4d76de54a699 290 length = (length%8==0)?(length/8):(length/8)+1;
ee12b079 93:4d76de54a699 291 for(int j=0 ; j<length ;j++){
ee12b079 93:4d76de54a699 292 // printf("%02X",sfp[j]);
ee12b079 93:4d76de54a699 293 frames[id][position_tm_frame[id]] = sfp[j];
ee12b079 93:4d76de54a699 294 position_tm_frame[id]++;
ee12b079 93:4d76de54a699 295 if(position_tm_frame[id] == 132){ //space full in the frame bro
ee12b079 93:4d76de54a699 296 pointer = frames[id];
ee12b079 93:4d76de54a699 297 if(id == 1){ //below thereshold
ee12b079 93:4d76de54a699 298 space = adjust(1,0,pointer,8);
ee12b079 93:4d76de54a699 299 space = adjust(4,3,pointer,space);
chaithanyarss 189:fba4aeebf004 300 FCTN_SD_MNGR();
chaithanyarss 189:fba4aeebf004 301 FSC_science = FSC_CURRENT[3];
ee12b079 96:4ca92f9775e0 302 //gPC.printf("SID = 3, FSC = %02X\r\n", FSC_science);
ee12b079 93:4d76de54a699 303 frames[id][1] = (FSC_science>>24)&0xff;
ee12b079 93:4d76de54a699 304 frames[id][2] = (FSC_science>>16)&0xff;
ee12b079 93:4d76de54a699 305 frames[id][3] = (FSC_science>>8)&0xff;
ee12b079 93:4d76de54a699 306 frames[id][4] = FSC_science&0xff;
ee12b079 93:4d76de54a699 307 frames[id][6] = (sci_time>>32)&0xff;
ee12b079 93:4d76de54a699 308 frames[id][7] = (sci_time>>24)&0xff;
ee12b079 93:4d76de54a699 309 frames[id][8] = (sci_time>>16)&0xff;
ee12b079 93:4d76de54a699 310 frames[id][9] = (sci_time>>8)&0xff;
ee12b079 93:4d76de54a699 311 frames[id][10] = (sci_time)&0xff;
ee12b079 93:4d76de54a699 312 }else if(id == 2){
ee12b079 93:4d76de54a699 313 space = adjust(1,0,pointer,8);
ee12b079 93:4d76de54a699 314 space = adjust(4,2,pointer,space);
chaithanyarss 190:28a07943dded 315 FCTN_SD_MNGR();
chaithanyarss 190:28a07943dded 316 FSC_science = FSC_CURRENT[2];
ee12b079 99:efde3df6cd94 317
chaithanyarss 190:28a07943dded 318 // gPC.printf("SID = 2, FSC = %02X\r\n", FSC_science);
ee12b079 93:4d76de54a699 319 frames[id][1] = (FSC_science>>16)&0xff;
ee12b079 93:4d76de54a699 320 frames[id][2] = (FSC_science>>8)&0xff;
ee12b079 93:4d76de54a699 321 frames[id][3] = FSC_science&0xff;
ee12b079 93:4d76de54a699 322 }
ee12b079 93:4d76de54a699 323 temp_crc = crc16_gen(frames[id],132);
ee12b079 93:4d76de54a699 324 frames[id][132] = temp_crc>>8;
ee12b079 93:4d76de54a699 325 frames[id][133] = temp_crc & 0xff;
chaithanyarss 190:28a07943dded 326 // if(test_cntr++ == 0){
chaithanyarss 190:28a07943dded 327 //gPC.puts("frame start\r\n");
chaithanyarss 190:28a07943dded 328 // for(int i = 0; i<134; i++){
chaithanyarss 190:28a07943dded 329 // gPC.printf("%02X",frames[id][i]);
chaithanyarss 190:28a07943dded 330 // }
chaithanyarss 190:28a07943dded 331 // gPC.puts("frame ends\r\n");
chaithanyarss 190:28a07943dded 332 // }
chaithanyarss 190:28a07943dded 333
chaithanyarss 190:28a07943dded 334
ee12b079 114:9fb55057b13f 335 exor(frames[id]);
ee12b079 93:4d76de54a699 336 convolution(frames[id]);
ee12b079 93:4d76de54a699 337 interleave(TM_convoluted_data,TM_interleave_data);
ee12b079 93:4d76de54a699 338 interleave(TM_convoluted_data+ 135,TM_interleave_data + 144);
chaithanyarss 190:28a07943dded 339
chaithanyarss 190:28a07943dded 340 if(id == 1){
ee12b079 99:efde3df6cd94 341 SD_WRITE(TM_interleave_data,FSC_science,3);
chaithanyarss 190:28a07943dded 342 }
chaithanyarss 190:28a07943dded 343 else if (id == 2){
ee12b079 99:efde3df6cd94 344 SD_WRITE(TM_interleave_data,FSC_science,2);
chaithanyarss 190:28a07943dded 345 }
ee12b079 99:efde3df6cd94 346 FSC_science++; //remove this after testing
ee12b079 93:4d76de54a699 347 position_tm_frame[id] = position_tm_starting[id];
ee12b079 93:4d76de54a699 348 frames[id][6-id] = (length-1) - j; // first head pointer.
chaithanyarss 190:28a07943dded 349
ee12b079 93:4d76de54a699 350 }
shreeshas95 1:a0055b3280c8 351 }
shreeshas95 1:a0055b3280c8 352
ee12b079 93:4d76de54a699 353 }//for loop bracket which runs 60 times
shreeshas95 1:a0055b3280c8 354
ee12b079 93:4d76de54a699 355 //---------------below is scp --------------**************************************************************************************************
ee12b079 93:4d76de54a699 356 at = 0; pzf = 1; ezf = 1;
ee12b079 93:4d76de54a699 357 srp_mode = head[2]&0x1;
chaithanyarss 190:28a07943dded 358 uint8_t compression_option = (head[2]>>1)&0x3; //--------------------------------------------------------------------------------------
ee12b079 93:4d76de54a699 359 if(srp_mode ==0){
ee12b079 93:4d76de54a699 360 if(compression_option == 0){
ee12b079 93:4d76de54a699 361 for(int i=0; i<52 ;i++){
ee12b079 93:4d76de54a699 362 if(scp_bin[i] > scp_threshold_m0[i]){
ee12b079 93:4d76de54a699 363 at = 1;
shreeshas95 1:a0055b3280c8 364 break;
shreeshas95 1:a0055b3280c8 365 }
shreeshas95 1:a0055b3280c8 366 }
chaithanyarss 190:28a07943dded 367
chaithanyarss 190:28a07943dded 368 //---------------------------------------------***********************************************************----------------------------beacon
chaithanyarss 190:28a07943dded 369 beacon_at = 0;
chaithanyarss 190:28a07943dded 370 if(scp_bin[44]>beacon_threshold[0]) beacon_at = 1;
chaithanyarss 190:28a07943dded 371 if(scp_bin[48]>beacon_threshold[1]) beacon_at = 1;
chaithanyarss 190:28a07943dded 372 if(scp_bin[49]>beacon_threshold[2]) beacon_at = 1;
chaithanyarss 190:28a07943dded 373 if(scp_bin[50]>beacon_threshold[3]) beacon_at = 1;
chaithanyarss 190:28a07943dded 374 if(scp_bin[51]>beacon_threshold[4]) beacon_at = 1;
chaithanyarss 190:28a07943dded 375 if(scp_bin[17]>beacon_threshold[5]) beacon_at = 1;
chaithanyarss 190:28a07943dded 376 if(scp_bin[23]>beacon_threshold[6]) beacon_at = 1;
chaithanyarss 190:28a07943dded 377 proton_scp_sum = 0; electron_scp_sum = 0;
chaithanyarss 190:28a07943dded 378 for(int i=0;i<17;i++){
chaithanyarss 190:28a07943dded 379 proton_scp_sum += scp_bin[i];
chaithanyarss 190:28a07943dded 380 }
chaithanyarss 190:28a07943dded 381 for(int i=0; i<5; i++){
chaithanyarss 190:28a07943dded 382 electron_scp_sum += scp_bin[18+i];
chaithanyarss 190:28a07943dded 383 }
chaithanyarss 190:28a07943dded 384 if(proton_scp_sum > beacon_threshold[7]) beacon_at =1;
chaithanyarss 190:28a07943dded 385 if(electron_scp_sum > beacon_threshold[8]) beacon_at =1;
chaithanyarss 190:28a07943dded 386 //--------------------------------------------*******************************************************************----------------------beacon
chaithanyarss 190:28a07943dded 387
ee12b079 93:4d76de54a699 388 }
ee12b079 93:4d76de54a699 389 else if(compression_option == 1){
ee12b079 93:4d76de54a699 390 if(scp_bin[44] > scp_threshold_m0_1[0]) at=1;
ee12b079 93:4d76de54a699 391 for(int i=0; i<4 ;i++){
ee12b079 93:4d76de54a699 392 if(scp_bin[48+i] > scp_threshold_m0_1[i+1]){
ee12b079 93:4d76de54a699 393 at = 1;
ee12b079 93:4d76de54a699 394 break;
ee12b079 93:4d76de54a699 395 }
shreeshas95 1:a0055b3280c8 396 }
ee12b079 93:4d76de54a699 397 if(scp_bin[17] > scp_threshold_m0_1[5]) at=1;
ee12b079 93:4d76de54a699 398 if(scp_bin[23] > scp_threshold_m0_1[6]) at=1;
ee12b079 93:4d76de54a699 399
ee12b079 93:4d76de54a699 400 proton_scp_sum = 0; electron_scp_sum = 0;
ee12b079 93:4d76de54a699 401 for(int i=0;i<17;i++){
ee12b079 93:4d76de54a699 402 proton_scp_sum += scp_bin[i];
shreeshas95 1:a0055b3280c8 403 }
ee12b079 93:4d76de54a699 404 for(int i=0; i<5; i++){
ee12b079 93:4d76de54a699 405 electron_scp_sum += scp_bin[18+i];
ee12b079 93:4d76de54a699 406 }
ee12b079 93:4d76de54a699 407 if(proton_scp_sum > scp_threshold_m0_1[7]) at=1;
ee12b079 93:4d76de54a699 408 if(electron_scp_sum > scp_threshold_m0_1[8]) at=1;
shreeshas95 1:a0055b3280c8 409 }
ee12b079 93:4d76de54a699 410 }else if(srp_mode ==1){
ee12b079 93:4d76de54a699 411 for(int i=0; i<32; i++){
ee12b079 93:4d76de54a699 412 if(scp_bin[i] > scp_threshold_m1[0]){
ee12b079 93:4d76de54a699 413 at = 1;
ee12b079 93:4d76de54a699 414 break;
shreeshas95 1:a0055b3280c8 415 }
shreeshas95 1:a0055b3280c8 416 }
ee12b079 93:4d76de54a699 417 for(int i=32; i<36; i++){
ee12b079 93:4d76de54a699 418 if(scp_bin[i] > scp_threshold_m1[1]){
ee12b079 93:4d76de54a699 419 at = 1;
ee12b079 93:4d76de54a699 420 break;
ee12b079 93:4d76de54a699 421 }
shreeshas95 1:a0055b3280c8 422 }
shreeshas95 1:a0055b3280c8 423 }
shreeshas95 1:a0055b3280c8 424
ee12b079 93:4d76de54a699 425 for(int i=0; i<17 ;i++){
ee12b079 93:4d76de54a699 426 if(scp_bin[i]>0)
ee12b079 93:4d76de54a699 427 pzf = 0;
ee12b079 93:4d76de54a699 428 }
ee12b079 93:4d76de54a699 429 for(int i=18; i<23 ;i++){
ee12b079 93:4d76de54a699 430 if(scp_bin[i]>0)
ee12b079 93:4d76de54a699 431 ezf = 0;
ee12b079 93:4d76de54a699 432 }
ee12b079 93:4d76de54a699 433
chaithanyarss 190:28a07943dded 434 //------------------------------------------------------------------------beacon
chaithanyarss 190:28a07943dded 435 // struct beacon_packet{
chaithanyarss 190:28a07943dded 436 // unsigned char data[12];
chaithanyarss 190:28a07943dded 437 // beacon_packet *next;
chaithanyarss 190:28a07943dded 438 // };
chaithanyarss 190:28a07943dded 439 //
chaithanyarss 190:28a07943dded 440 // int beacon_cntr = 0;
chaithanyarss 190:28a07943dded 441 // bool beacon_flag = true;
chaithanyarss 190:28a07943dded 442 // beacon_packet *head_beacon, *tail_beacon;
chaithanyarss 190:28a07943dded 443
chaithanyarss 190:28a07943dded 444 if(beacon_cntr == 0){
chaithanyarss 190:28a07943dded 445 head_beacon = tail_beacon = new beacon_packet;
chaithanyarss 190:28a07943dded 446 tail_beacon->next = NULL;
chaithanyarss 190:28a07943dded 447 }
chaithanyarss 190:28a07943dded 448 else{
chaithanyarss 190:28a07943dded 449 tail_beacon->next = new beacon_packet;
chaithanyarss 190:28a07943dded 450 tail_beacon = tail_beacon->next;
chaithanyarss 190:28a07943dded 451 tail_beacon->next = NULL;
chaithanyarss 190:28a07943dded 452 }
chaithanyarss 190:28a07943dded 453 pointer = tail_beacon->data; debug_cntr = 0; space = 8;
chaithanyarss 190:28a07943dded 454 space = adjust(1, 0,pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 455 space = adjust(5,(sci_time>>8)&0x1f,pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 456 space = adjust(8, sci_time,pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 457 space = adjust(4, (attitude)&0xf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 458 if(beacon_at == 0){
chaithanyarss 190:28a07943dded 459 tail_beacon->len = 12;
chaithanyarss 190:28a07943dded 460 space = adjust(1, 0,pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 461 space = adjust(6, compress(sfp_bin[44],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 462 space = adjust(7, compress(sfp_bin[48],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 463 space = adjust(7, compress(sfp_bin[49],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 464 space = adjust(7, compress(sfp_bin[50],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 465 space = adjust(7, compress(sfp_bin[51],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 466 space = adjust(6, compress(sfp_bin[17],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 467 space = adjust(6, compress(sfp_bin[23],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 468 space = adjust(4, compress(proton_scp_sum ,10,2)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 469 space = adjust(8, compress(proton_scp_sum ,10,2),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 470 space = adjust(4, compress(electron_scp_sum ,10,2)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 471 space = adjust(8, compress(electron_scp_sum ,10,2),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 472 // cout<<"for beacon space = "<<(space&0x0f)<<" counter = "<<debug_cntr;
chaithanyarss 190:28a07943dded 473 for(int temp_i = 12; temp_i<14; temp_i++){
chaithanyarss 190:28a07943dded 474 *pointer = 0;
chaithanyarss 190:28a07943dded 475 pointer = pointer + 1;
chaithanyarss 190:28a07943dded 476 }
chaithanyarss 190:28a07943dded 477 }
chaithanyarss 190:28a07943dded 478 else{
chaithanyarss 190:28a07943dded 479 tail_beacon->len = 14;
chaithanyarss 190:28a07943dded 480 space = adjust(1, 0,pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 481 space = adjust(1, compress(sfp_bin[44],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; space = adjust(8, compress(sfp_bin[44],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 482 space = adjust(4, compress(sfp_bin[48],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; space = adjust(8, compress(sfp_bin[48],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 483 space = adjust(4, compress(sfp_bin[49],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; space = adjust(8, compress(sfp_bin[49],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 484 space = adjust(4, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; space = adjust(8, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 485 space = adjust(4, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; space = adjust(8, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 486 space = adjust(1, compress(sfp_bin[17],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; space = adjust(8, compress(sfp_bin[17],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 487 space = adjust(1, compress(sfp_bin[23],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; space = adjust(8, compress(sfp_bin[23],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 488 space = adjust(1, compress(proton_scp_sum ,6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; space = adjust(8, compress(proton_scp_sum ,6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 489 space = adjust(1, compress(electron_scp_sum ,6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; space = adjust(8, compress(electron_scp_sum ,6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
chaithanyarss 190:28a07943dded 490 // cout<<"for beacon space = "<<(space&0x0f)<<" counter = "<<debug_cntr;
chaithanyarss 190:28a07943dded 491 }
chaithanyarss 190:28a07943dded 492 beacon_cntr++;
chaithanyarss 190:28a07943dded 493 if(beacon_cntr ==6){
chaithanyarss 190:28a07943dded 494 // cout<<"i deleted it"<<endl;
chaithanyarss 190:28a07943dded 495 beacon_packet *temp_bec;
chaithanyarss 190:28a07943dded 496 temp_bec = head_beacon;
chaithanyarss 190:28a07943dded 497 head_beacon = head_beacon->next;
chaithanyarss 190:28a07943dded 498 delete(temp_bec);
chaithanyarss 190:28a07943dded 499 beacon_cntr--;
chaithanyarss 190:28a07943dded 500 }
chaithanyarss 190:28a07943dded 501
chaithanyarss 190:28a07943dded 502 //------------------------------------------------------------------------beacon
chaithanyarss 190:28a07943dded 503
ee12b079 98:fd99ddc0e0a1 504 gPC.puts("scp\r\n");
ee12b079 98:fd99ddc0e0a1 505
ee12b079 93:4d76de54a699 506 pointer = scp; debug_cntr = 0; space = 8;
chaithanyarss 190:28a07943dded 507 uint8_t packet_pp = 1; //where to get this packet present bit----------------------------------------------------------------------------------
ee12b079 93:4d76de54a699 508 int sfp_at_counter; //----------------------------------------------------------------------------------------------------------------------------------
ee12b079 93:4d76de54a699 509 space = adjust(1, packet_pp,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 510 space = adjust(5, (sci_time>>8)&0x1f,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 511 space = adjust(8, (sci_time)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 512 space = adjust(4, (attitude)&0xf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 513 space = adjust(2, compression_option,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 514 space = adjust(1,srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 515 space = adjust(1,srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 516 space = adjust(8, sfp_at_counter>>16,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 517 space = adjust(8, sfp_at_counter>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 518 space = adjust(8, sfp_at_counter,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 519 if(srp_mode == 0 && compression_option == 0){ //normal callibrated mode
ee12b079 93:4d76de54a699 520 space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 521 space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 522 if(at == 0 ){
ee12b079 93:4d76de54a699 523 for(int i = 0; i<8 ;i++){
ee12b079 93:4d76de54a699 524 space = adjust(7,compress(sfp_bin[24+i],4,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 525 }
ee12b079 93:4d76de54a699 526 for(int i = 0; i<12 ;i++){
ee12b079 93:4d76de54a699 527 space = adjust(5,compress(sfp_bin[32+i],2,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 528 }
ee12b079 93:4d76de54a699 529 for(int i = 0; i<4 ;i++){
ee12b079 93:4d76de54a699 530 space = adjust(6,compress(scp_bin[44+i],3,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 531 }
ee12b079 93:4d76de54a699 532 for(int i = 0; i<4 ;i++){
ee12b079 93:4d76de54a699 533 space = adjust(7,compress(scp_bin[48+i],4,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 534 }
ee12b079 93:4d76de54a699 535 space = adjust(6,compress(scp_bin[17],3,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 536 space = adjust(6,compress(scp_bin[23],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 537 if(pzf == 0){
ee12b079 93:4d76de54a699 538 for(int i = 0; i<2 ;i++){
ee12b079 93:4d76de54a699 539 space = adjust(8,compress(scp_bin[i],6,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 540 }
ee12b079 93:4d76de54a699 541 for(int i = 0; i<15 ;i++){
ee12b079 93:4d76de54a699 542 space = adjust(7,compress(scp_bin[i+2],5,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 543 }
ee12b079 93:4d76de54a699 544 }
ee12b079 93:4d76de54a699 545 if(ezf == 0){
ee12b079 93:4d76de54a699 546 space = adjust(1,compress(scp_bin[18],7,2)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 547 space = adjust(8,compress(scp_bin[18],7,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 548 for(int i=0; i<4; i++){
ee12b079 93:4d76de54a699 549 space = adjust(8,compress(scp_bin[19+i],6,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 550 }
ee12b079 93:4d76de54a699 551 }
ee12b079 93:4d76de54a699 552 }// below threshold ends here
ee12b079 93:4d76de54a699 553 if(at == 1){
ee12b079 93:4d76de54a699 554 for(int i = 0; i<8 ;i++){
ee12b079 93:4d76de54a699 555 space = adjust(7,compress(scp_bin[24+i],4,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 556 }
ee12b079 93:4d76de54a699 557 for(int i = 0; i<12 ;i++){
ee12b079 93:4d76de54a699 558 space = adjust(5,compress(scp_bin[32+i],2,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 559 }
ee12b079 93:4d76de54a699 560 for(int i = 0; i<4 ;i++){
ee12b079 93:4d76de54a699 561 space = adjust(1,compress(scp_bin[44+i],6,3)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 562 space = adjust(8,compress(scp_bin[44+i],6,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 563 }
ee12b079 93:4d76de54a699 564 for(int i=0; i<4 ;i++){
ee12b079 93:4d76de54a699 565 space = adjust(2,compress(scp_bin[48+i],6,4)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 566 space = adjust(8,compress(scp_bin[48+i],6,4) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 567 }
ee12b079 93:4d76de54a699 568 space = adjust(1,compress(scp_bin[17],6,3)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 569 space = adjust(8,compress(scp_bin[17],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 570 space = adjust(1,compress(scp_bin[23],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 571 space = adjust(8,compress(scp_bin[23],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 572 if(pzf == 0){
ee12b079 93:4d76de54a699 573 for(int i = 0; i<17 ; i++){
ee12b079 93:4d76de54a699 574 space = adjust(8, (compress(scp_bin[i],5,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 575 }
ee12b079 93:4d76de54a699 576 }
ee12b079 93:4d76de54a699 577 if(ezf == 0){
ee12b079 93:4d76de54a699 578 for(int i = 0; i<5 ; i++){
ee12b079 93:4d76de54a699 579 space = adjust(8, (compress(scp_bin[18+i],5,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 580 }
ee12b079 93:4d76de54a699 581 }
ee12b079 93:4d76de54a699 582 } //above thresholds ends
ee12b079 93:4d76de54a699 583 } //srp_mode == 0 ends
ee12b079 93:4d76de54a699 584 if(srp_mode == 1){
ee12b079 93:4d76de54a699 585 if(at == 0){
ee12b079 93:4d76de54a699 586 for(int i=0; i<32; i++){
ee12b079 93:4d76de54a699 587 space = adjust(6, ((compress(scp_bin[i],4,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 588 }
ee12b079 93:4d76de54a699 589 for(int i = 0 ; i < 4 ; i++){
ee12b079 93:4d76de54a699 590 space = adjust(7, (compress(scp_bin[32+i],4,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 591 }
ee12b079 93:4d76de54a699 592 }
ee12b079 93:4d76de54a699 593 if(at == 1){
ee12b079 93:4d76de54a699 594 for(int i=0; i<32; i++){
ee12b079 93:4d76de54a699 595 space = adjust(6, (compress(scp_bin[i],3,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 596 }
ee12b079 93:4d76de54a699 597 for(int i = 0 ; i < 4 ; i++){
ee12b079 93:4d76de54a699 598 space = adjust(4, (compress(scp_bin[32+i],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 599 space = adjust(8, (compress(scp_bin[32+i],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 600 }
ee12b079 93:4d76de54a699 601 }
ee12b079 93:4d76de54a699 602 }// scp mode 1 end
ee12b079 93:4d76de54a699 603 if( srp_mode == 0 && compression_option == 1 ){ //scp data conservation mode
ee12b079 93:4d76de54a699 604 space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 605 space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 606 if(at == 0){
ee12b079 93:4d76de54a699 607 if(at == 0){
ee12b079 93:4d76de54a699 608 space = adjust(6, (compress(scp_bin[44],3,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 609 for(int i=0; i<4; i++){
ee12b079 93:4d76de54a699 610 space = adjust(7, (compress(scp_bin[48+i],4,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 611 }
ee12b079 93:4d76de54a699 612 space = adjust(6, (compress(scp_bin[17],3,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 613 space = adjust(6, (compress(scp_bin[23],3,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 614 if(pzf==0){
ee12b079 93:4d76de54a699 615 space = adjust(2, (compress(proton_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 616 space = adjust(8, (compress(proton_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 617 }
ee12b079 93:4d76de54a699 618 if(ezf==0){
ee12b079 93:4d76de54a699 619 space = adjust(2, (compress(electron_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 620 space = adjust(8, (compress(electron_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 621 }
ee12b079 93:4d76de54a699 622 } // scp data conservaton mode
ee12b079 93:4d76de54a699 623 }else if(at == 1){
ee12b079 93:4d76de54a699 624 space = adjust(1, (compress(scp_bin[44],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 625 space = adjust(8, (compress(scp_bin[44],6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 626 for(int i=0; i<4; i++){
ee12b079 93:4d76de54a699 627 space = adjust(4, (compress(scp_bin[48+i],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 628 space = adjust(8, (compress(scp_bin[48+i],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 629 }
ee12b079 93:4d76de54a699 630 space = adjust(1, (compress(scp_bin[17],6,3)>>8) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 631 space = adjust(8, (compress(scp_bin[17],6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 632 space = adjust(1, (compress(scp_bin[23],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 633 space = adjust(8, (compress(scp_bin[23],6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 634 if(pzf==0){
ee12b079 93:4d76de54a699 635 space = adjust(1, (compress(proton_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 636 space = adjust(8, (compress(proton_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 637 }
ee12b079 93:4d76de54a699 638 if(ezf==0){
ee12b079 93:4d76de54a699 639 space = adjust(1, (compress(electron_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 640 space = adjust(8, (compress(electron_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 641 }
ee12b079 93:4d76de54a699 642 }
ee12b079 93:4d76de54a699 643 }//-----------------------------------------------------------------------------------------------------------------------------------------------------
ee12b079 98:fd99ddc0e0a1 644
ee12b079 98:fd99ddc0e0a1 645 gPC.puts("sci frame starts\r\n");
ee12b079 98:fd99ddc0e0a1 646
ee12b079 93:4d76de54a699 647 //time to make scp frame
ee12b079 93:4d76de54a699 648 id = 0;
ee12b079 93:4d76de54a699 649 if(srp_mode == 0 && compression_option == 0){
ee12b079 93:4d76de54a699 650 if(at == 0){
ee12b079 93:4d76de54a699 651 length = 228;
ee12b079 93:4d76de54a699 652 if(pzf == 0)
ee12b079 93:4d76de54a699 653 length += 121;
ee12b079 93:4d76de54a699 654 if(ezf == 0)
ee12b079 93:4d76de54a699 655 length +=41;
ee12b079 93:4d76de54a699 656 }else if(at == 1){
ee12b079 93:4d76de54a699 657 length = 266;
ee12b079 93:4d76de54a699 658 if(pzf == 0)
ee12b079 93:4d76de54a699 659 length += 136;
ee12b079 93:4d76de54a699 660 if(ezf == 0)
ee12b079 93:4d76de54a699 661 length += 40;
ee12b079 93:4d76de54a699 662 }
ee12b079 93:4d76de54a699 663 }else if(srp_mode == 0 && compression_option == 1){ //data conservation mode
ee12b079 93:4d76de54a699 664 if(at == 0){
ee12b079 93:4d76de54a699 665 length = 94;
ee12b079 93:4d76de54a699 666 if(pzf == 0)
ee12b079 93:4d76de54a699 667 length += 12;
ee12b079 93:4d76de54a699 668 if(ezf == 0)
ee12b079 93:4d76de54a699 669 length += 12;
ee12b079 93:4d76de54a699 670 }else if(at == 1){
ee12b079 93:4d76de54a699 671 length = 123;
ee12b079 93:4d76de54a699 672 if(pzf == 0)
ee12b079 93:4d76de54a699 673 length += 9;
ee12b079 93:4d76de54a699 674 if(ezf == 0)
ee12b079 93:4d76de54a699 675 length += 9;
ee12b079 93:4d76de54a699 676 }
ee12b079 93:4d76de54a699 677 }else if( srp_mode == 1){
ee12b079 93:4d76de54a699 678 if(at == 0)
ee12b079 93:4d76de54a699 679 length = 272;
ee12b079 93:4d76de54a699 680 else if(at == 1)
ee12b079 93:4d76de54a699 681 length = 288;
ee12b079 93:4d76de54a699 682 }
ee12b079 93:4d76de54a699 683 length = (length%8==0)?(length/8):(length/8)+1;
ee12b079 93:4d76de54a699 684 for(int j= 0; j < length ; j++){
ee12b079 93:4d76de54a699 685 frames[id][position_tm_frame[id]] = scp[j];
ee12b079 93:4d76de54a699 686 position_tm_frame[id]++;
ee12b079 93:4d76de54a699 687 if(position_tm_frame[id] == 132){ //space full in the frame bro
ee12b079 93:4d76de54a699 688 pointer = frames[id];
ee12b079 93:4d76de54a699 689 space = adjust(1,0,pointer,8);
ee12b079 93:4d76de54a699 690 space = adjust(4,1,pointer,space);
chaithanyarss 189:fba4aeebf004 691 FCTN_SD_MNGR();
chaithanyarss 189:fba4aeebf004 692 FSC_science = FSC_CURRENT[1];
ee12b079 96:4ca92f9775e0 693 //gPC.printf("SID = 1, FSC = %02X\r\n", FSC_science);
ee12b079 93:4d76de54a699 694 frames[id][1] = (FSC_science>>16)&0xff;
ee12b079 93:4d76de54a699 695 frames[id][2] = (FSC_science>>8)&0xff;
ee12b079 93:4d76de54a699 696 frames[id][3] = (FSC_science)&0xff;
ee12b079 93:4d76de54a699 697 frames[id][5] = (sci_time>>16)&0x3f;
ee12b079 93:4d76de54a699 698 frames[id][6] = (sci_time>>8)&0xff;
ee12b079 93:4d76de54a699 699 frames[id][7] = (sci_time)&0xff;
ee12b079 93:4d76de54a699 700 temp_crc = crc16_gen(frames[id],132);
ee12b079 93:4d76de54a699 701 frames[id][132] = temp_crc>>8;
ee12b079 93:4d76de54a699 702 frames[id][133] = temp_crc & 0xff;
ee12b079 99:efde3df6cd94 703 exor(frames[id]);
ee12b079 93:4d76de54a699 704 convolution(frames[id]);
ee12b079 93:4d76de54a699 705 interleave(TM_convoluted_data,TM_interleave_data);
ee12b079 93:4d76de54a699 706 interleave(TM_convoluted_data+ 135,TM_interleave_data + 144);
ee12b079 99:efde3df6cd94 707 SD_WRITE(TM_interleave_data,FSC_science,1);
ee12b079 93:4d76de54a699 708 position_tm_frame[id] = position_tm_starting[id];
ee12b079 93:4d76de54a699 709 frames[id][4] = (length-1) - j;
ee12b079 93:4d76de54a699 710 }
ee12b079 93:4d76de54a699 711 }
ee12b079 96:4ca92f9775e0 712 gPC.puts("end srp");
ee12b079 93:4d76de54a699 713 }//srp fucntion end bracket