CDMS_CODE_samp_23SEP_DMA_flag

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE_samp_23SEP_DMA by iitm sat

Committer:
samp1234
Date:
Tue Nov 22 08:08:46 2016 +0000
Revision:
309:91755ef8f22a
Parent:
307:6ed5535ac465
DMA to be checked, srp after dma start?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
prasanthbj05 266:ae588e75cfa4 1 /*-----------------------------------------to_do_compression.h--------------------------------------------------
prasanthbj05 266:ae588e75cfa4 2
prasanthbj05 266:ae588e75cfa4 3 -> SD_Write error to be checked
prasanthbj05 266:ae588e75cfa4 4 -> fsc_counter is 32 bit but in the code 24 bit. Talk to chaitu
prasanthbj05 266:ae588e75cfa4 5 ---------------------------------------------------------------------------------------------------------------*/
prasanthbj05 266:ae588e75cfa4 6
prasanthbj05 266:ae588e75cfa4 7 //updated compression algorithm
prasanthbj05 266:ae588e75cfa4 8 /*#include <iostream>
prasanthbj05 266:ae588e75cfa4 9 #include "stdio.h"
prasanthbj05 266:ae588e75cfa4 10 #include "crc.h"
prasanthbj05 266:ae588e75cfa4 11 #include "interleave.h"
prasanthbj05 266:ae588e75cfa4 12 #include "Convolution.h"
prasanthbj05 266:ae588e75cfa4 13 #include "bitset"*/
prasanthbj05 266:ae588e75cfa4 14 //using namespace std;
prasanthbj05 266:ae588e75cfa4 15
prasanthbj05 266:ae588e75cfa4 16 //reading functions 2byte, 4byte
ee12b079 278:1d837d6dfb6e 17 #define srpz 0
ee12b079 278:1d837d6dfb6e 18 #define scpz 0
chaithanyarss 290:3159ff1081a2 19 #define scpz_last 0
chaithanyarss 290:3159ff1081a2 20 #define srpz_last 0
chaithanyarss 290:3159ff1081a2 21 #define debug_fsc 0
chaithanyarss 290:3159ff1081a2 22 #define debug_time 0
ee12b079 295:699801854b71 23 #define debug_dma 1
prasanthbj05 266:ae588e75cfa4 24
chaithanyarss 290:3159ff1081a2 25 #if debug_dma
chaithanyarss 290:3159ff1081a2 26 uint16_t read_2byte(uint8_t* ptr)
chaithanyarss 290:3159ff1081a2 27 {
chaithanyarss 290:3159ff1081a2 28 uint16_t output = (((uint16_t )(*(ptr+1)))<<8);
chaithanyarss 290:3159ff1081a2 29 output += (((uint16_t)(*ptr)));
chaithanyarss 290:3159ff1081a2 30 return output;
chaithanyarss 290:3159ff1081a2 31 }
chaithanyarss 290:3159ff1081a2 32
chaithanyarss 290:3159ff1081a2 33 uint32_t read_4byte(uint8_t* ptr)
chaithanyarss 290:3159ff1081a2 34 {
chaithanyarss 290:3159ff1081a2 35 uint32_t output = (uint32_t)(*(ptr+3))<<24;
chaithanyarss 290:3159ff1081a2 36 output += (uint32_t)(*(ptr+2)<<16);
chaithanyarss 290:3159ff1081a2 37 output += (uint32_t)(*(ptr+1)<<8);
chaithanyarss 290:3159ff1081a2 38 output += (uint32_t)(*(ptr));
chaithanyarss 290:3159ff1081a2 39 return output;
chaithanyarss 290:3159ff1081a2 40 }
chaithanyarss 290:3159ff1081a2 41 #endif
chaithanyarss 290:3159ff1081a2 42 #if !debug_dma
prasanthbj05 266:ae588e75cfa4 43 uint16_t read_2byte(uint8_t* ptr)
prasanthbj05 266:ae588e75cfa4 44 {
prasanthbj05 266:ae588e75cfa4 45 uint16_t output = (uint8_t ) *(ptr+1);
prasanthbj05 266:ae588e75cfa4 46 output += ( (uint8_t )(*ptr) ) << 8;
ee12b079 93:4d76de54a699 47 return output;
ee12b079 93:4d76de54a699 48 }
ee12b079 93:4d76de54a699 49
prasanthbj05 266:ae588e75cfa4 50 uint32_t read_4byte(uint8_t* ptr)
prasanthbj05 266:ae588e75cfa4 51 {
prasanthbj05 266:ae588e75cfa4 52 uint32_t output = (uint32_t) (*(ptr+3));
prasanthbj05 266:ae588e75cfa4 53 output += (uint32_t)(*(ptr+2)<<8);
prasanthbj05 266:ae588e75cfa4 54 output += (uint32_t)(*(ptr+1)<<16);
prasanthbj05 266:ae588e75cfa4 55 output += (uint32_t)(*(ptr)<<24);
prasanthbj05 266:ae588e75cfa4 56 return output;
prasanthbj05 266:ae588e75cfa4 57 }
chaithanyarss 290:3159ff1081a2 58 #endif
prasanthbj05 266:ae588e75cfa4 59 uint8_t adjust(uint8_t size, uint8_t data, uint8_t* ptr , uint8_t space)
prasanthbj05 266:ae588e75cfa4 60 {
ee12b079 93:4d76de54a699 61 space = space&0x0f;
ee12b079 171:31bdf83591a1 62 if(space == 8) *ptr = 0;
ee12b079 93:4d76de54a699 63 data = data&((1<<size)-1);
ee12b079 93:4d76de54a699 64 if(space >= size){
ee12b079 93:4d76de54a699 65 *ptr += data<<(space-size);
ee12b079 93:4d76de54a699 66 if(space - size == 0){
ee12b079 93:4d76de54a699 67 return 0x18;
ee12b079 93:4d76de54a699 68 }else{
ee12b079 93:4d76de54a699 69 return space-size;
shreeshas95 1:a0055b3280c8 70 }
ee12b079 93:4d76de54a699 71 }else{
ee12b079 93:4d76de54a699 72 ptr[0] += data>>(size-space);
ee12b079 93:4d76de54a699 73 ptr[1] = (data<<(8-(size-space)))&0xff ;
ee12b079 93:4d76de54a699 74 return 0x10 + 8-(size - space);
ee12b079 93:4d76de54a699 75 }
ee12b079 93:4d76de54a699 76 }
prasanthbj05 266:ae588e75cfa4 77 int compress (int data, int x, int y) //to be compressed with scheme (msb x)*4^y ;
prasanthbj05 266:ae588e75cfa4 78 {
prasanthbj05 266:ae588e75cfa4 79 for(int i = 0 ; i < (1<<y) ; i++)
prasanthbj05 266:ae588e75cfa4 80 {
prasanthbj05 266:ae588e75cfa4 81 if(data <= ( (1<<x)-1) * (1<<(2*i)) )
prasanthbj05 266:ae588e75cfa4 82 {
ee12b079 93:4d76de54a699 83 return ( ((data>>i*2)<<y) + i);
shreeshas95 1:a0055b3280c8 84 }
ee12b079 93:4d76de54a699 85 }
prasanthbj05 266:ae588e75cfa4 86 if ( data > (( (1<<x)-1) * (1<<(2*((1<<y)-1)))) )
prasanthbj05 266:ae588e75cfa4 87 {
prasanthbj05 266:ae588e75cfa4 88 //cout <<"compression exception"<<endl;
prasanthbj05 266:ae588e75cfa4 89 return (((1<<x)-1) * (1<<(2*((1<<y)-1))));
ee12b079 93:4d76de54a699 90 }
ee12b079 93:4d76de54a699 91 }
ee12b079 93:4d76de54a699 92
prasanthbj05 266:ae588e75cfa4 93 //--------------------------------------------------------beacon
prasanthbj05 266:ae588e75cfa4 94 uint8_t beacon_array[134];
prasanthbj05 266:ae588e75cfa4 95 uint8_t beacon_cntr = 1;
prasanthbj05 266:ae588e75cfa4 96 uint8_t *beacon_ptr;
prasanthbj05 266:ae588e75cfa4 97 //--------------------------------------------------------beacon
ee12b079 93:4d76de54a699 98
prasanthbj05 266:ae588e75cfa4 99 //variable declarations
prasanthbj05 266:ae588e75cfa4 100 uint8_t srp_mode , at , pzf , ezf ,sfp[71] ,scp[56],beacon_at; //tells which mode is calibrated or plot 0 for calibrated and 1 for scatterered, below threshold , proton zero flux, electron zero flux.
prasanthbj05 266:ae588e75cfa4 101 uint32_t sfp_bin[52] , scp_bin[52]; //storing the bin values.
prasanthbj05 266:ae588e75cfa4 102 uint32_t sfp_threshold_m0[52] = {124,124,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,4032,252,252,252,252,252,4032,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};
prasanthbj05 266:ae588e75cfa4 103 uint32_t scp_threshold_m0[52] = {4032,4032,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,114688,8128,4032,4032,4032,4032,114688,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};
prasanthbj05 266:ae588e75cfa4 104 uint32_t scp_threshold_m0_1[9] = {114688,245760,245760,245760,245760,114688,114688,65472,65472} ; //for callibrated mode with data conservation
prasanthbj05 266:ae588e75cfa4 105 uint32_t scp_sfp_threshold_m0_2[3] = {245760,65472,65472};
prasanthbj05 266:ae588e75cfa4 106 uint32_t sfp_threshold_m1[52] = {1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,8128,8128,8128,8128};
prasanthbj05 266:ae588e75cfa4 107 uint32_t scp_threshold_m1[52] = {114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,245760,245760,245760,245760};
ee12b079 171:31bdf83591a1 108 uint8_t frames[3][134] = {0};
ee12b079 171:31bdf83591a1 109 uint8_t position_tm_frame[3] = {8,11,5} , position_tm_starting[3] = {8,11,5}; //{sc,sf-bt,sf-at}
ee12b079 171:31bdf83591a1 110 uint8_t id; //sf = 0,sc-at = 1,sc-bt = 2;
ee12b079 171:31bdf83591a1 111 uint8_t TM_interleave_data[512] , TM_convoluted_data[270] = {0};
prasanthbj05 266:ae588e75cfa4 112 uint64_t proton_scp_sum,electron_scp_sum,FSC_science;
prasanthbj05 266:ae588e75cfa4 113 uint16_t temp_crc;
prasanthbj05 266:ae588e75cfa4 114 uint32_t debug_cntr, size,space,length;
ee12b079 171:31bdf83591a1 115 uint8_t *ptr ,* pointer;
prasanthbj05 266:ae588e75cfa4 116 uint64_t sci_time = 0, time_prev_scp = 0;
prasanthbj05 266:ae588e75cfa4 117 uint32_t attitude = 0;
prasanthbj05 266:ae588e75cfa4 118 uint32_t beacon_threshold[9] = {114688,245760,245760,245760,245760,114688,114688,65472,65472};
ee12b079 93:4d76de54a699 119
chaithanyarss 290:3159ff1081a2 120 /*----------------------------temporary counters used for testing purposes---------------------------*/
chaithanyarss 290:3159ff1081a2 121 uint32_t test_fsc[4]={1,1,1,1};
chaithanyarss 290:3159ff1081a2 122 /*---------------------------------------------------------------------------------------------------*/
chaithanyarss 290:3159ff1081a2 123
chaithanyarss 290:3159ff1081a2 124
prasanthbj05 266:ae588e75cfa4 125 Convolution ConvObj;
prasanthbj05 266:ae588e75cfa4 126 void convolution (uint8_t * ptr){
prasanthbj05 266:ae588e75cfa4 127 ConvObj.convolutionEncode(ptr, TM_convoluted_data);
prasanthbj05 266:ae588e75cfa4 128 ConvObj.convolutionEncode(ptr + 67, TM_convoluted_data + 135);
prasanthbj05 266:ae588e75cfa4 129 }
ee12b079 93:4d76de54a699 130
ee12b079 93:4d76de54a699 131 //give the pointer of 6 second data to this function
prasanthbj05 266:ae588e75cfa4 132 void srp(uint8_t * head)
prasanthbj05 266:ae588e75cfa4 133 {
ee12b079 268:ded5306a1fd1 134 uint8_t sd_stat = 0;
spacelab 307:6ed5535ac465 135 SCI_LED1 =1;
spacelab 307:6ed5535ac465 136
spacelab 307:6ed5535ac465 137 // SCI_LED1 = !SCI_LED1;
spacelab 307:6ed5535ac465 138 // gPC.printf("\n\rsrp");
prasanthbj05 266:ae588e75cfa4 139 debug_cntr = 0;
prasanthbj05 266:ae588e75cfa4 140 sci_time = FCTN_CDMS_RD_RTC();
chaithanyarss 290:3159ff1081a2 141 #if debug_time
chaithanyarss 290:3159ff1081a2 142 sci_time = 0x0000000021000000;
chaithanyarss 290:3159ff1081a2 143 #endif
prasanthbj05 266:ae588e75cfa4 144 if(time_prev_scp==0){
prasanthbj05 266:ae588e75cfa4 145 time_prev_scp = sci_time;
prasanthbj05 266:ae588e75cfa4 146 }
spacelab 307:6ed5535ac465 147 FCTN_SD_MNGR(); ///changed recently
ee12b079 268:ded5306a1fd1 148 for (int i = 0; i < 52 ; i++)
prasanthbj05 266:ae588e75cfa4 149 {
ee12b079 93:4d76de54a699 150 scp_bin[i] = 0;
shreeshas95 1:a0055b3280c8 151 }
prasanthbj05 266:ae588e75cfa4 152 ptr = head + 3; //ptr points to proton energy bin of srp
ee12b079 93:4d76de54a699 153 srp_mode = head[2]&0x1;
prasanthbj05 266:ae588e75cfa4 154 for(uint8_t counter = 0 ; counter < 60 ; counter++)
prasanthbj05 266:ae588e75cfa4 155 {
ee12b079 268:ded5306a1fd1 156 #if srpz
spacelab 307:6ed5535ac465 157 // gPC.printf("\n\n\rSRP count:%d",counter+1);
ee12b079 268:ded5306a1fd1 158 #endif
prasanthbj05 266:ae588e75cfa4 159 /*-------------------- ------------populating sfp_bin and scp_bin[] starts here(also tag AT or BT)-----------------------*/
prasanthbj05 266:ae588e75cfa4 160 at = 0; pzf = 1; ezf = 1;
prasanthbj05 266:ae588e75cfa4 161 if(srp_mode == 0) //calibrated mode
prasanthbj05 266:ae588e75cfa4 162 {
ee12b079 268:ded5306a1fd1 163 #if srpz
spacelab 307:6ed5535ac465 164 // gPC.printf("\n\rSRP - Calibrated Mode");
ee12b079 268:ded5306a1fd1 165 #endif
prasanthbj05 266:ae588e75cfa4 166 for(int i=0; i<48 ; i++) //first 48 bins or SRP are of 16 bits size
prasanthbj05 266:ae588e75cfa4 167 {
ee12b079 93:4d76de54a699 168 sfp_bin[i] = read_2byte(ptr + i*2);
ee12b079 93:4d76de54a699 169 scp_bin[i] += sfp_bin[i];
prasanthbj05 266:ae588e75cfa4 170 if(sfp_bin[i]>sfp_threshold_m0[i])
prasanthbj05 266:ae588e75cfa4 171 {
ee12b079 268:ded5306a1fd1 172 //gPC.printf("\n\rSFP above threshold index:%d",i);
ee12b079 93:4d76de54a699 173 at = 1;
ee12b079 93:4d76de54a699 174 }
prasanthbj05 266:ae588e75cfa4 175 if(i<17)
prasanthbj05 266:ae588e75cfa4 176 {
ee12b079 93:4d76de54a699 177 if(sfp_bin[i] > 0)
ee12b079 93:4d76de54a699 178 pzf = 0;
ee12b079 93:4d76de54a699 179 }
prasanthbj05 266:ae588e75cfa4 180 else if (i>17 && i < 23)
prasanthbj05 266:ae588e75cfa4 181 {
ee12b079 93:4d76de54a699 182 if(sfp_bin[i]>0)
ee12b079 93:4d76de54a699 183 ezf = 0;
ee12b079 93:4d76de54a699 184 }
ee12b079 93:4d76de54a699 185 }
prasanthbj05 266:ae588e75cfa4 186 for(int i=0; i<4; i++) //last 4 bins(excluding the spare bin) are 32 bit each
prasanthbj05 266:ae588e75cfa4 187 {
ee12b079 93:4d76de54a699 188 sfp_bin[i+48] = read_4byte( (ptr+96) + 4*i );
ee12b079 93:4d76de54a699 189 scp_bin[i+48] += sfp_bin[i+48];
ee12b079 268:ded5306a1fd1 190 if(sfp_bin[i+48]>sfp_threshold_m0[i+48]){
ee12b079 268:ded5306a1fd1 191 //gPC.printf("\n\rSP above threshold index: %d",i+48);
ee12b079 93:4d76de54a699 192 at = 1;
ee12b079 268:ded5306a1fd1 193 }
ee12b079 93:4d76de54a699 194 }
ee12b079 93:4d76de54a699 195 }
prasanthbj05 266:ae588e75cfa4 196 else if(srp_mode == 1) //scattered mode
prasanthbj05 266:ae588e75cfa4 197 {
ee12b079 268:ded5306a1fd1 198 #if srpz
chaithanyarss 290:3159ff1081a2 199 gPC.printf("\n\rSRP - Scatter Plot Mode");
ee12b079 268:ded5306a1fd1 200 #endif
prasanthbj05 266:ae588e75cfa4 201 for(int i = 0; i <48; i++) //first 48 bins of SRP are of 16 bit size
prasanthbj05 266:ae588e75cfa4 202 {
prasanthbj05 266:ae588e75cfa4 203 sfp_bin[i] = read_2byte(ptr+2*i);
ee12b079 93:4d76de54a699 204 scp_bin[i] += sfp_bin[i];
ee12b079 268:ded5306a1fd1 205 //gPC.printf("\n\rsfp_bin[%d]= %u\t\tscp_bin[%d]= %u",i,sfp_bin[i],i,scp_bin[i]);
ee12b079 268:ded5306a1fd1 206 if(sfp_bin[i] > sfp_threshold_m1[i]){
ee12b079 268:ded5306a1fd1 207 //gPC.printf("\n\rSP above threshold index: %d",i);
ee12b079 93:4d76de54a699 208 at = 1;
ee12b079 268:ded5306a1fd1 209 }
ee12b079 93:4d76de54a699 210 }
prasanthbj05 266:ae588e75cfa4 211 for(int i = 0; i < 4 ; i++) //next 4 bins are of 32 bit size
prasanthbj05 266:ae588e75cfa4 212 {
prasanthbj05 266:ae588e75cfa4 213 sfp_bin[i+48] = read_4byte( (ptr+96) + 4*i );
prasanthbj05 266:ae588e75cfa4 214 scp_bin[i+48] += sfp_bin[i+48];
ee12b079 268:ded5306a1fd1 215 if(sfp_bin[i+48] > sfp_threshold_m1[i+48]){
ee12b079 268:ded5306a1fd1 216 //gPC.printf("\n\rSP above threshold index: %d",i+48);
ee12b079 93:4d76de54a699 217 at = 1;
ee12b079 268:ded5306a1fd1 218 }
ee12b079 93:4d76de54a699 219 }
shreeshas95 1:a0055b3280c8 220 }
prasanthbj05 266:ae588e75cfa4 221 /*---------------------------populating sfp_bin[] and scp_bin[] from srp ends here(also tagging AT or BT)------------------*/
prasanthbj05 266:ae588e75cfa4 222
ee12b079 268:ded5306a1fd1 223 //ptr = ptr + 112; //moving the pointer to next srp packet in the DMA buffer
prasanthbj05 266:ae588e75cfa4 224
prasanthbj05 266:ae588e75cfa4 225 /*------------------------------------------forming a science fine packet starts here----------------------------------------
prasanthbj05 266:ae588e75cfa4 226 First we fill packet header, then fill packet data and finally assign its length
prasanthbj05 266:ae588e75cfa4 227 ----------------------------------------------------------------------------------------------------------------------------*/
prasanthbj05 266:ae588e75cfa4 228 for(int i = 0; i<71; i++)
ee12b079 93:4d76de54a699 229 sfp[i] = 0;
prasanthbj05 266:ae588e75cfa4 230 if(srp_mode == 0) //calibrated mode
prasanthbj05 266:ae588e75cfa4 231 {
prasanthbj05 266:ae588e75cfa4 232 if(at == 0)
prasanthbj05 266:ae588e75cfa4 233 {
ee12b079 268:ded5306a1fd1 234 #if srpz
chaithanyarss 290:3159ff1081a2 235 gPC.printf("\n\rSFP Below Threshold");
ee12b079 268:ded5306a1fd1 236 #endif
ee12b079 93:4d76de54a699 237 pointer = sfp; debug_cntr = 0;
prasanthbj05 266:ae588e75cfa4 238 space = adjust(4, attitude,pointer,8); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 239 space = adjust(6, counter,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 240 space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 241 space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 242 space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 243 for(uint8_t i = 0 ; i < 8 ; i++){
prasanthbj05 266:ae588e75cfa4 244 space = adjust(1, ((compress(sfp_bin[24+i],7,2))&0x100)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 245 space = adjust(8, ((compress(sfp_bin[24+i],7,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 246 }
prasanthbj05 266:ae588e75cfa4 247 for(uint8_t i = 0 ; i <12 ; i++){
prasanthbj05 266:ae588e75cfa4 248 space = adjust(6, (compress(sfp_bin[32+i],4,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 249 }
prasanthbj05 266:ae588e75cfa4 250 for(uint8_t i = 0; i < 4; i++){
prasanthbj05 266:ae588e75cfa4 251 space = adjust(8, (compress(sfp_bin[44+i],6,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 252 }
prasanthbj05 266:ae588e75cfa4 253 for(uint8_t i = 0 ; i < 4 ; i++){
prasanthbj05 266:ae588e75cfa4 254 space = adjust(1, (compress(sfp_bin[48+i],7,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 255 space = adjust(8, compress(sfp_bin[48+i],7,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 256 }
prasanthbj05 266:ae588e75cfa4 257 space = adjust(8, ((compress(sfp_bin[17],6,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 258 space = adjust(8, ((compress(sfp_bin[23],6,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 259 if(pzf == 0){
prasanthbj05 266:ae588e75cfa4 260 for(uint8_t i = 0; i<2 ; i++){
prasanthbj05 266:ae588e75cfa4 261 space = adjust(6, ((compress(sfp_bin[i],5,1))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 262 }
prasanthbj05 266:ae588e75cfa4 263 for(uint8_t i = 0; i<15 ; i++){
prasanthbj05 266:ae588e75cfa4 264 space = adjust(5, ((compress(sfp_bin[i+2],4,1))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 265 }
ee12b079 93:4d76de54a699 266 }
ee12b079 93:4d76de54a699 267 if(ezf == 0){
prasanthbj05 266:ae588e75cfa4 268 for(uint8_t i = 0; i <5 ;i++){
prasanthbj05 266:ae588e75cfa4 269 space = adjust(7, ((compress(sfp_bin[18+i],6,1))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 270 }
ee12b079 93:4d76de54a699 271 }
prasanthbj05 266:ae588e75cfa4 272 } //below thershold ends here.
ee12b079 93:4d76de54a699 273 if(at == 1){
ee12b079 268:ded5306a1fd1 274 #if srpz
chaithanyarss 290:3159ff1081a2 275 gPC.printf("\n\rSFP Above Threshold");
ee12b079 268:ded5306a1fd1 276 #endif
ee12b079 93:4d76de54a699 277 pointer = sfp + 6; debug_cntr = 6;space = 8;
ee12b079 93:4d76de54a699 278 sfp[0] = (sci_time>>27)&0xff; sfp[1] = (sci_time>>19)&0xff; sfp[2] = (sci_time>>11)&0xff; sfp[3] = (sci_time>>3)&0xff;
prasanthbj05 266:ae588e75cfa4 279 sfp[4] = ((sci_time&0x07)<<5) + ((attitude&0x0f)<<1) + (counter>>5);
prasanthbj05 266:ae588e75cfa4 280 sfp[5] = ((counter&0x1f)<<3) + (srp_mode<<2);
ee12b079 93:4d76de54a699 281 sfp[5] += (pzf<<1) + ezf ;
prasanthbj05 266:ae588e75cfa4 282 for(uint8_t i = 0 ; i < 8 ; i++){
prasanthbj05 266:ae588e75cfa4 283 space = adjust(1, (compress(sfp_bin[24+i],7,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 284 space = adjust(8, ((compress(sfp_bin[24+i],7,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
shreeshas95 1:a0055b3280c8 285 }
prasanthbj05 266:ae588e75cfa4 286 for(uint8_t i = 0 ; i <12 ; i++){
ee12b079 93:4d76de54a699 287 space = adjust(6, ((compress(sfp_bin[32+i],3,3))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
shreeshas95 1:a0055b3280c8 288 }
prasanthbj05 266:ae588e75cfa4 289 for(uint8_t i = 0 ; i < 4 ; i++){
prasanthbj05 266:ae588e75cfa4 290 space = adjust(2, (compress(sfp_bin[44+i],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 291 space = adjust(8, compress(sfp_bin[44+i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
shreeshas95 1:a0055b3280c8 292 }
prasanthbj05 266:ae588e75cfa4 293 for(uint8_t i = 0 ; i < 4 ; i++){
prasanthbj05 266:ae588e75cfa4 294 space = adjust(1, (compress(sfp_bin[48+i],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 295 space = adjust(8, compress(sfp_bin[48+i],6,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 296 }
prasanthbj05 266:ae588e75cfa4 297 space = adjust(2, (compress(sfp_bin[17],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 298 space = adjust(8, compress(sfp_bin[17],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 299 space = adjust(2, (compress(sfp_bin[23],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 300 space = adjust(8, compress(sfp_bin[23],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 301
ee12b079 93:4d76de54a699 302 if(pzf == 0){
prasanthbj05 266:ae588e75cfa4 303 //cout<<"proton bins ";
ee12b079 268:ded5306a1fd1 304 #if srpz
chaithanyarss 290:3159ff1081a2 305 gPC.printf("\n\rProton bins present in SRP");
ee12b079 268:ded5306a1fd1 306 #endif
prasanthbj05 266:ae588e75cfa4 307 for(uint8_t i = 0; i<17 ; i++){
ee12b079 93:4d76de54a699 308 space = adjust(2, ((compress(sfp_bin[i],8,2))>>8) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 309 space = adjust(8, compress(sfp_bin[i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 310 //printf("%02X ",compress(sfp_bin[i],8,2));
ee12b079 93:4d76de54a699 311 }
ee12b079 93:4d76de54a699 312 }
ee12b079 93:4d76de54a699 313 if(ezf == 0){
prasanthbj05 266:ae588e75cfa4 314 //cout<<"electron bins ";
ee12b079 268:ded5306a1fd1 315 #if srpz
chaithanyarss 290:3159ff1081a2 316 gPC.printf("\n\rElectron bins present in SRP");
ee12b079 268:ded5306a1fd1 317 #endif
ee12b079 93:4d76de54a699 318 for(int i = 0; i<5 ; i++){
prasanthbj05 266:ae588e75cfa4 319 space = adjust(2,((compress(sfp_bin[18+i],8,2))>>8),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 320 space = adjust(8, compress(sfp_bin[18+i],8,2),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 321 //printf("%02X ",compress(sfp_bin[i],8,2));
ee12b079 93:4d76de54a699 322 }
ee12b079 93:4d76de54a699 323 }
prasanthbj05 266:ae588e75cfa4 324 } //above threshold ends here.
prasanthbj05 266:ae588e75cfa4 325 if(at == 0)
prasanthbj05 266:ae588e75cfa4 326 {
prasanthbj05 266:ae588e75cfa4 327 id = 1; length = 241+5; //5 spare bits
ee12b079 93:4d76de54a699 328 if(pzf == 0)
ee12b079 93:4d76de54a699 329 length += 87;
ee12b079 93:4d76de54a699 330 if(ezf == 0)
ee12b079 93:4d76de54a699 331 length += 35;
prasanthbj05 266:ae588e75cfa4 332 }
prasanthbj05 266:ae588e75cfa4 333 else
prasanthbj05 266:ae588e75cfa4 334 {
prasanthbj05 266:ae588e75cfa4 335 id = 2; length = 288; //0 spare bits
ee12b079 93:4d76de54a699 336 if(pzf == 0)
ee12b079 93:4d76de54a699 337 length += 170;
ee12b079 93:4d76de54a699 338 if(ezf == 0)
ee12b079 93:4d76de54a699 339 length += 50;
ee12b079 93:4d76de54a699 340 }
shreeshas95 1:a0055b3280c8 341 }
prasanthbj05 266:ae588e75cfa4 342 else if(srp_mode == 1) //scattered mode
prasanthbj05 266:ae588e75cfa4 343 {
prasanthbj05 266:ae588e75cfa4 344 if(at == 0)
prasanthbj05 266:ae588e75cfa4 345 {
ee12b079 268:ded5306a1fd1 346 #if srpz
chaithanyarss 290:3159ff1081a2 347 gPC.printf("\n\rSFP below threshold");
ee12b079 268:ded5306a1fd1 348 #endif
prasanthbj05 266:ae588e75cfa4 349 pointer = sfp; debug_cntr = 0; space = 8;
prasanthbj05 266:ae588e75cfa4 350 space = adjust(4, attitude,pointer,8); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 351 space = adjust(6, counter,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 352 space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 353 for(uint8_t i=0; i<48; i++)
prasanthbj05 266:ae588e75cfa4 354 {
prasanthbj05 266:ae588e75cfa4 355 space = adjust(7, compress(sfp_bin[i],5,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 356 }
prasanthbj05 266:ae588e75cfa4 357 for(uint8_t i = 0 ; i < 4 ; i++)
prasanthbj05 266:ae588e75cfa4 358 {
prasanthbj05 266:ae588e75cfa4 359 space = adjust(1, (compress(sfp_bin[48+i],7,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 360 space = adjust(8, compress(sfp_bin[48+i],7,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 361 }
prasanthbj05 266:ae588e75cfa4 362 }
prasanthbj05 266:ae588e75cfa4 363 if(at == 1)
prasanthbj05 266:ae588e75cfa4 364 {
ee12b079 268:ded5306a1fd1 365
ee12b079 268:ded5306a1fd1 366 #if srpz
chaithanyarss 290:3159ff1081a2 367 gPC.printf("\n\rSFP below threshold");
ee12b079 268:ded5306a1fd1 368 #endif
prasanthbj05 266:ae588e75cfa4 369 pointer = sfp; debug_cntr = 0; space = 8;
prasanthbj05 266:ae588e75cfa4 370 space = adjust(3, sci_time>>32 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 371 space = adjust(8, sci_time>>24 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 372 space = adjust(8, sci_time>>16 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 373 space = adjust(8, sci_time>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 374 space = adjust(8, sci_time ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 375 space = adjust(4, attitude,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 376 space = adjust(6, counter,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 377 space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 378 for(uint8_t i=0; i<48; i++)
prasanthbj05 266:ae588e75cfa4 379 {
prasanthbj05 266:ae588e75cfa4 380 space = adjust(2, (compress(sfp_bin[i],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 381 space = adjust(8, compress(sfp_bin[i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 382 }
prasanthbj05 266:ae588e75cfa4 383 for(uint8_t i = 0 ; i < 4 ; i++)
prasanthbj05 266:ae588e75cfa4 384 {
prasanthbj05 266:ae588e75cfa4 385 space = adjust(1, (compress(sfp_bin[48+i],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 386 space = adjust(8, compress(sfp_bin[48+i],6,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 387 }
prasanthbj05 266:ae588e75cfa4 388 }
prasanthbj05 266:ae588e75cfa4 389 if(at == 0)
prasanthbj05 266:ae588e75cfa4 390 {
prasanthbj05 266:ae588e75cfa4 391 id = 1; length = 384; //0 spare bits
prasanthbj05 266:ae588e75cfa4 392 }
prasanthbj05 266:ae588e75cfa4 393 else
prasanthbj05 266:ae588e75cfa4 394 {
prasanthbj05 266:ae588e75cfa4 395 id = 2; length = 568; //0 spare bits
ee12b079 93:4d76de54a699 396 }
shreeshas95 1:a0055b3280c8 397 }
prasanthbj05 266:ae588e75cfa4 398 length = (length%8==0)?(length/8):(length/8)+1; //converting length to mulitple of 8
ee12b079 268:ded5306a1fd1 399 #if srpz
chaithanyarss 290:3159ff1081a2 400 gPC.printf("\n\rLength of SFP packet in bytes = %d",length);
ee12b079 268:ded5306a1fd1 401 #endif
prasanthbj05 266:ae588e75cfa4 402 /*----------------------------------------forming a science packet ends here-----------------------------------------------*/
prasanthbj05 266:ae588e75cfa4 403
prasanthbj05 266:ae588e75cfa4 404 /*-----------------------------Inserting the above packet(sfp) into the TM frame(s) starts here----------------------------*/
prasanthbj05 266:ae588e75cfa4 405 if(id==1){
prasanthbj05 266:ae588e75cfa4 406 if(position_tm_frame[id]>130){
ee12b079 268:ded5306a1fd1 407 #if srpz
chaithanyarss 290:3159ff1081a2 408 gPC.printf("\n\rSkipping the current frame.Inserting sfp packet into the next frame.");
ee12b079 268:ded5306a1fd1 409 #endif
prasanthbj05 266:ae588e75cfa4 410 while(position_tm_frame[id]<132){
prasanthbj05 266:ae588e75cfa4 411 frames[id][position_tm_frame[id]] = 0;
prasanthbj05 266:ae588e75cfa4 412 position_tm_frame[id]++;
prasanthbj05 266:ae588e75cfa4 413 }
prasanthbj05 266:ae588e75cfa4 414 }
prasanthbj05 266:ae588e75cfa4 415 }
prasanthbj05 266:ae588e75cfa4 416 else if(id==2){
prasanthbj05 266:ae588e75cfa4 417 if(position_tm_frame[id]>126){
ee12b079 268:ded5306a1fd1 418 #if srpz
chaithanyarss 290:3159ff1081a2 419 gPC.printf("\n\rSkipping the current frame.Inserting sfp packet into the next frame.");
ee12b079 268:ded5306a1fd1 420 #endif
prasanthbj05 266:ae588e75cfa4 421 while(position_tm_frame[id]<132){
prasanthbj05 266:ae588e75cfa4 422 frames[id][position_tm_frame[id]] = 0;
prasanthbj05 266:ae588e75cfa4 423 position_tm_frame[id]++;
prasanthbj05 266:ae588e75cfa4 424 }
prasanthbj05 266:ae588e75cfa4 425 }
prasanthbj05 266:ae588e75cfa4 426 }
prasanthbj05 266:ae588e75cfa4 427 if(position_tm_frame[id]==position_tm_starting[id]){
prasanthbj05 266:ae588e75cfa4 428 frames[id][6-id] = position_tm_starting[id];
prasanthbj05 266:ae588e75cfa4 429 }
prasanthbj05 266:ae588e75cfa4 430 for(uint16_t j=0 ; j<length ;)
prasanthbj05 266:ae588e75cfa4 431 {
prasanthbj05 266:ae588e75cfa4 432 if(position_tm_frame[id]==frames[id][6-id]){
prasanthbj05 266:ae588e75cfa4 433 if(id==1){
ee12b079 268:ded5306a1fd1 434 #if srpz
chaithanyarss 290:3159ff1081a2 435 gPC.printf("\n\rAdding Time to TM frame");
ee12b079 268:ded5306a1fd1 436 #endif
prasanthbj05 266:ae588e75cfa4 437 frames[id][6] = (uint8_t)((sci_time>>32)&0x07);
prasanthbj05 266:ae588e75cfa4 438 frames[id][7] = (uint8_t)((sci_time>>24)&0xff);
prasanthbj05 266:ae588e75cfa4 439 frames[id][8] = (uint8_t)((sci_time>>16)&0xff);
prasanthbj05 266:ae588e75cfa4 440 frames[id][9] = (uint8_t)((sci_time>>8)&0xff);
prasanthbj05 266:ae588e75cfa4 441 frames[id][10] = (uint8_t)((sci_time)&0xff);
prasanthbj05 266:ae588e75cfa4 442 }
prasanthbj05 266:ae588e75cfa4 443 }
prasanthbj05 266:ae588e75cfa4 444 if(position_tm_frame[id]<132){
prasanthbj05 266:ae588e75cfa4 445 frames[id][position_tm_frame[id]] = sfp[j];
prasanthbj05 266:ae588e75cfa4 446 j++;
prasanthbj05 266:ae588e75cfa4 447 position_tm_frame[id]++; //incrementing position of write pointer in TM frame
prasanthbj05 266:ae588e75cfa4 448 }
prasanthbj05 266:ae588e75cfa4 449 if(position_tm_frame[id] == 132)
prasanthbj05 266:ae588e75cfa4 450 {
prasanthbj05 266:ae588e75cfa4 451 /*-----------the current frame is completely filled and we fill frame header to write into SD card---------*/
ee12b079 268:ded5306a1fd1 452 #if srpz
chaithanyarss 290:3159ff1081a2 453 gPC.printf("\n\rSFP_TM frame full. Length of current packet = %d",j);
chaithanyarss 290:3159ff1081a2 454 gPC.printf("\n\rFirst Header pointer: %d",frames[id][6-id]);
chaithanyarss 290:3159ff1081a2 455 gPC.printf("\n\rFirst head pointer contents: 0x%02X",frames[id][frames[id][6-id]]);
ee12b079 268:ded5306a1fd1 456 #endif
ee12b079 93:4d76de54a699 457 pointer = frames[id];
prasanthbj05 266:ae588e75cfa4 458 if(id == 1){ //below threshold
ee12b079 93:4d76de54a699 459 space = adjust(1,0,pointer,8);
ee12b079 93:4d76de54a699 460 space = adjust(4,3,pointer,space);
ee12b079 271:72529b247333 461 FSC_science = FSC_CURRENT[3]; ///to be used as this, but FSC_CURRENT[] is 32 bit
chaithanyarss 290:3159ff1081a2 462
chaithanyarss 290:3159ff1081a2 463 //gPC.printf("3 = 0x%X",FSC_science);
chaithanyarss 290:3159ff1081a2 464 #if debug_fsc
chaithanyarss 290:3159ff1081a2 465 frames[id][1] = (test_fsc[3]>>24)&0xff;
chaithanyarss 290:3159ff1081a2 466 frames[id][2] = (test_fsc[3]>>16)&0xff;
chaithanyarss 290:3159ff1081a2 467 frames[id][3] = (test_fsc[3]>>8)&0xff;
chaithanyarss 290:3159ff1081a2 468 frames[id][4] = test_fsc[3]&0xff;
chaithanyarss 290:3159ff1081a2 469 test_fsc[3]++;
chaithanyarss 290:3159ff1081a2 470 #endif
chaithanyarss 290:3159ff1081a2 471 #if !debug_fsc
ee12b079 93:4d76de54a699 472 frames[id][1] = (FSC_science>>24)&0xff;
ee12b079 93:4d76de54a699 473 frames[id][2] = (FSC_science>>16)&0xff;
ee12b079 93:4d76de54a699 474 frames[id][3] = (FSC_science>>8)&0xff;
prasanthbj05 266:ae588e75cfa4 475 frames[id][4] = FSC_science&0xff;
chaithanyarss 290:3159ff1081a2 476 #endif
prasanthbj05 266:ae588e75cfa4 477 }
prasanthbj05 266:ae588e75cfa4 478 else if(id == 2) //above threshold
prasanthbj05 266:ae588e75cfa4 479 {
ee12b079 93:4d76de54a699 480 space = adjust(1,0,pointer,8);
prasanthbj05 266:ae588e75cfa4 481 space = adjust(4,2,pointer,space);
prasanthbj05 266:ae588e75cfa4 482 FSC_science = FSC_CURRENT[2]; ///to be used as this
chaithanyarss 290:3159ff1081a2 483 //gPC.printf("2 = 0x%X",FSC_science);
chaithanyarss 290:3159ff1081a2 484 #if debug_fsc
chaithanyarss 290:3159ff1081a2 485 frames[id][1] = (test_fsc[2]>>16)&0xff;
chaithanyarss 290:3159ff1081a2 486 frames[id][2] = (test_fsc[2]>>8)&0xff;
chaithanyarss 290:3159ff1081a2 487 frames[id][3] = test_fsc[2]&0xff;
chaithanyarss 290:3159ff1081a2 488 test_fsc[2]++;
chaithanyarss 290:3159ff1081a2 489 #endif
chaithanyarss 290:3159ff1081a2 490 #if !debug_fsc
ee12b079 93:4d76de54a699 491 frames[id][1] = (FSC_science>>16)&0xff;
ee12b079 93:4d76de54a699 492 frames[id][2] = (FSC_science>>8)&0xff;
ee12b079 93:4d76de54a699 493 frames[id][3] = FSC_science&0xff;
chaithanyarss 290:3159ff1081a2 494 #endif
ee12b079 93:4d76de54a699 495 }
ee12b079 93:4d76de54a699 496 temp_crc = crc16_gen(frames[id],132);
ee12b079 93:4d76de54a699 497 frames[id][132] = temp_crc>>8;
ee12b079 93:4d76de54a699 498 frames[id][133] = temp_crc & 0xff;
ee12b079 268:ded5306a1fd1 499
ee12b079 268:ded5306a1fd1 500 #if srpz
ee12b079 268:ded5306a1fd1 501 gPC.printf("\n\rPrinting SFP_TM\n\r{");
chaithanyarss 290:3159ff1081a2 502 //gPC.printf("\n\r{");
ee12b079 268:ded5306a1fd1 503 for(uint8_t z=0;z<134;z++){
chaithanyarss 290:3159ff1081a2 504 gPC.printf("%02X",frames[id][z]);
ee12b079 268:ded5306a1fd1 505 }
ee12b079 268:ded5306a1fd1 506 gPC.printf("}\n\r");
ee12b079 268:ded5306a1fd1 507 #endif
prasanthbj05 266:ae588e75cfa4 508 /*------------------current TM frame completely filled-----------------------*/
ee12b079 171:31bdf83591a1 509
ee12b079 114:9fb55057b13f 510 exor(frames[id]);
ee12b079 93:4d76de54a699 511 convolution(frames[id]);
ee12b079 93:4d76de54a699 512 interleave(TM_convoluted_data,TM_interleave_data);
ee12b079 93:4d76de54a699 513 interleave(TM_convoluted_data+ 135,TM_interleave_data + 144);
prasanthbj05 266:ae588e75cfa4 514 if(id == 1)
ee12b079 195:6a549c0e9287 515 {
ee12b079 268:ded5306a1fd1 516 sd_stat = SD_WRITE(TM_interleave_data,FSC_science+1,3); //sd_write will return ack later, for now not included
prasanthbj05 266:ae588e75cfa4 517 }
prasanthbj05 266:ae588e75cfa4 518 else if (id == 2)
prasanthbj05 266:ae588e75cfa4 519 {
ee12b079 268:ded5306a1fd1 520 sd_stat = SD_WRITE(TM_interleave_data,FSC_science+1,2); //sd_write will return ack later, for now not included
prasanthbj05 266:ae588e75cfa4 521 }
ee12b079 268:ded5306a1fd1 522 if(sd_stat)
ee12b079 268:ded5306a1fd1 523 {
ee12b079 268:ded5306a1fd1 524 gPC.puts("sd write fail");
chaithanyarss 290:3159ff1081a2 525 }
ee12b079 93:4d76de54a699 526 position_tm_frame[id] = position_tm_starting[id];
ee12b079 268:ded5306a1fd1 527 frames[id][6-id] = (length - j)+position_tm_starting[id];
ee12b079 93:4d76de54a699 528 }
shreeshas95 1:a0055b3280c8 529 }
prasanthbj05 266:ae588e75cfa4 530 /*------------------------------finished inserting the sfp packet into the TM frame(s)-------------------------------------*/
ee12b079 268:ded5306a1fd1 531 } // for loop bracket which runs 60 times
ee12b079 268:ded5306a1fd1 532 #if srpz_last
ee12b079 268:ded5306a1fd1 533 //gPC.printf("\n\rPrinting the last SFP_TM frame");
ee12b079 268:ded5306a1fd1 534 //gPC.printf("\n\n\rPosition of tm_pointer: %d",position_tm_frame[id]);
ee12b079 268:ded5306a1fd1 535 while(position_tm_frame[id]<132){
ee12b079 268:ded5306a1fd1 536 frames[id][position_tm_frame[id]] = 0;
ee12b079 268:ded5306a1fd1 537 position_tm_frame[id]++;
ee12b079 268:ded5306a1fd1 538 }
ee12b079 268:ded5306a1fd1 539 if(position_tm_frame[id]==132){
ee12b079 268:ded5306a1fd1 540 //gPC.printf("\n\rFirst head pointer contents: 0x%02X",frames[id][frames[id][6-id]]);
ee12b079 268:ded5306a1fd1 541 pointer = frames[id];
ee12b079 268:ded5306a1fd1 542 if(id == 1){ //below threshold
ee12b079 268:ded5306a1fd1 543 space = adjust(1,0,pointer,8);
ee12b079 268:ded5306a1fd1 544 space = adjust(4,3,pointer,space);
ee12b079 268:ded5306a1fd1 545 FSC_science = FSC_CURRENT[3]; ///to be used as this, but FSC_CURRENT[] is 32 bit
chaithanyarss 290:3159ff1081a2 546 #if debug_fsc
chaithanyarss 290:3159ff1081a2 547 frames[id][1] = (FSC_science>>24)&0xff;
chaithanyarss 290:3159ff1081a2 548 frames[id][2] = (FSC_science>>16)&0xff;
chaithanyarss 290:3159ff1081a2 549 frames[id][3] = (FSC_science>>8)&0xff;
chaithanyarss 290:3159ff1081a2 550 frames[id][4] = FSC_science&0xff;
chaithanyarss 290:3159ff1081a2 551 test_fsc[3]++;
chaithanyarss 290:3159ff1081a2 552 #endif
chaithanyarss 290:3159ff1081a2 553 #if !debug_fsc
ee12b079 268:ded5306a1fd1 554 frames[id][1] = (FSC_science>>24)&0xff;
ee12b079 268:ded5306a1fd1 555 frames[id][2] = (FSC_science>>16)&0xff;
ee12b079 268:ded5306a1fd1 556 frames[id][3] = (FSC_science>>8)&0xff;
ee12b079 268:ded5306a1fd1 557 frames[id][4] = FSC_science&0xff;
chaithanyarss 290:3159ff1081a2 558 #endif
ee12b079 268:ded5306a1fd1 559 }
ee12b079 268:ded5306a1fd1 560 else if(id == 2) //above threshold
ee12b079 268:ded5306a1fd1 561 {
ee12b079 268:ded5306a1fd1 562 space = adjust(1,0,pointer,8);
ee12b079 268:ded5306a1fd1 563 space = adjust(4,2,pointer,space);
ee12b079 268:ded5306a1fd1 564 FSC_science = FSC_CURRENT[2]; ///to be used as this
chaithanyarss 290:3159ff1081a2 565 #if debug_fsc
chaithanyarss 290:3159ff1081a2 566 frames[id][1] = (test_fsc[2]>>16)&0xff;
chaithanyarss 290:3159ff1081a2 567 frames[id][2] = (test_fsc[2]>>8)&0xff;
chaithanyarss 290:3159ff1081a2 568 frames[id][3] = test_fsc[2]&0xff;
chaithanyarss 290:3159ff1081a2 569 test_fsc[2]++;
chaithanyarss 290:3159ff1081a2 570 #endif
chaithanyarss 290:3159ff1081a2 571 #if !debug_fsc
ee12b079 268:ded5306a1fd1 572 frames[id][1] = (FSC_science>>16)&0xff;
ee12b079 268:ded5306a1fd1 573 frames[id][2] = (FSC_science>>8)&0xff;
ee12b079 268:ded5306a1fd1 574 frames[id][3] = FSC_science&0xff;
chaithanyarss 290:3159ff1081a2 575 #endif
ee12b079 268:ded5306a1fd1 576 }
ee12b079 268:ded5306a1fd1 577 temp_crc = crc16_gen(frames[id],132);
ee12b079 268:ded5306a1fd1 578 frames[id][132] = temp_crc>>8;
ee12b079 268:ded5306a1fd1 579 frames[id][133] = temp_crc & 0xff;
ee12b079 268:ded5306a1fd1 580
chaithanyarss 290:3159ff1081a2 581 //gPC.printf("\n\rPrinting SFP_TM\n\r{");
chaithanyarss 290:3159ff1081a2 582 gPC.printf("\n\r{");
ee12b079 268:ded5306a1fd1 583 for(uint8_t z=0;z<134;z++){
chaithanyarss 290:3159ff1081a2 584 gPC.printf("%02X",frames[id][z]);
ee12b079 268:ded5306a1fd1 585 }
ee12b079 268:ded5306a1fd1 586 gPC.printf("}\n\r");
chaithanyarss 290:3159ff1081a2 587 position_tm_frame[id] = position_tm_starting[id];
ee12b079 268:ded5306a1fd1 588 }
ee12b079 268:ded5306a1fd1 589 #endif
ee12b079 93:4d76de54a699 590 at = 0; pzf = 1; ezf = 1;
ee12b079 93:4d76de54a699 591 srp_mode = head[2]&0x1;
prasanthbj05 266:ae588e75cfa4 592 uint8_t compression_option = (head[2]>>1)&0x3;
prasanthbj05 266:ae588e75cfa4 593 /*-------------------------------Tagging the scp packet formed from these 60 sfp's as AT or BT starts here-------------------------
prasanthbj05 266:ae588e75cfa4 594 ------------------(in case compression option = 0 , then tagging beacon packet(not yet formed) as AT or BT is also done)----------*/
prasanthbj05 266:ae588e75cfa4 595 if(srp_mode ==0)
prasanthbj05 266:ae588e75cfa4 596 {
prasanthbj05 266:ae588e75cfa4 597 if(compression_option == 0)
prasanthbj05 266:ae588e75cfa4 598 {
prasanthbj05 266:ae588e75cfa4 599 for(int i=0; i<52 ;i++)
prasanthbj05 266:ae588e75cfa4 600 {
prasanthbj05 266:ae588e75cfa4 601 if(scp_bin[i] > scp_threshold_m0[i])
prasanthbj05 266:ae588e75cfa4 602 {
ee12b079 268:ded5306a1fd1 603 //gPC.printf("\n\rSCP above threshold index: %d",i);
ee12b079 93:4d76de54a699 604 at = 1;
shreeshas95 1:a0055b3280c8 605 break;
shreeshas95 1:a0055b3280c8 606 }
shreeshas95 1:a0055b3280c8 607 }
ee12b079 93:4d76de54a699 608 }
prasanthbj05 266:ae588e75cfa4 609 else if(compression_option == 1)
prasanthbj05 266:ae588e75cfa4 610 {
ee12b079 268:ded5306a1fd1 611 if(scp_bin[44] > scp_threshold_m0_1[0]){//gPC.printf("\n\rSCP above threshold index: 44");
ee12b079 268:ded5306a1fd1 612 at=1;}
prasanthbj05 266:ae588e75cfa4 613 for(int i=0; i<4 ;i++)
prasanthbj05 266:ae588e75cfa4 614 {
prasanthbj05 266:ae588e75cfa4 615 if(scp_bin[48+i] > scp_threshold_m0_1[i+1])
prasanthbj05 266:ae588e75cfa4 616 {
ee12b079 268:ded5306a1fd1 617 //gPC.printf("\n\rSCP above threshold index: %d",i+48);
ee12b079 93:4d76de54a699 618 at = 1;
ee12b079 93:4d76de54a699 619 break;
ee12b079 93:4d76de54a699 620 }
shreeshas95 1:a0055b3280c8 621 }
ee12b079 268:ded5306a1fd1 622 if(scp_bin[17] > scp_threshold_m0_1[5]){
ee12b079 268:ded5306a1fd1 623 //gPC.printf("\n\rSP above threshold index: 17");
ee12b079 268:ded5306a1fd1 624 at=1;
ee12b079 268:ded5306a1fd1 625 }
ee12b079 268:ded5306a1fd1 626 if(scp_bin[23] > scp_threshold_m0_1[6]){
ee12b079 268:ded5306a1fd1 627 //gPC.printf("\n\rSP above threshold index: 23");
ee12b079 268:ded5306a1fd1 628 at=1;
ee12b079 268:ded5306a1fd1 629 }
prasanthbj05 266:ae588e75cfa4 630
ee12b079 93:4d76de54a699 631 proton_scp_sum = 0; electron_scp_sum = 0;
prasanthbj05 266:ae588e75cfa4 632 for(int i=0;i<17;i++)
prasanthbj05 266:ae588e75cfa4 633 {
ee12b079 93:4d76de54a699 634 proton_scp_sum += scp_bin[i];
shreeshas95 1:a0055b3280c8 635 }
prasanthbj05 266:ae588e75cfa4 636 for(int i=0; i<5; i++)
prasanthbj05 266:ae588e75cfa4 637 {
ee12b079 93:4d76de54a699 638 electron_scp_sum += scp_bin[18+i];
ee12b079 93:4d76de54a699 639 }
ee12b079 268:ded5306a1fd1 640 if(proton_scp_sum > scp_threshold_m0_1[7]){ //gPC.printf("\n\rProton_scp_sum above threshold");
ee12b079 268:ded5306a1fd1 641 at=1;}
ee12b079 268:ded5306a1fd1 642 if(electron_scp_sum > scp_threshold_m0_1[8]){//gPC.printf("\n\rElectron_scp_sum above threshold");
ee12b079 268:ded5306a1fd1 643 at=1;}
shreeshas95 1:a0055b3280c8 644 }
prasanthbj05 266:ae588e75cfa4 645 else if(compression_option == 2)
prasanthbj05 266:ae588e75cfa4 646 {
ee12b079 268:ded5306a1fd1 647 if(scp_bin[50] > scp_sfp_threshold_m0_2[0]){//gPC.printf("\n\rSCP above threshold index:50");
ee12b079 268:ded5306a1fd1 648 at=1;}
prasanthbj05 266:ae588e75cfa4 649 proton_scp_sum = 0; electron_scp_sum = 0;
prasanthbj05 266:ae588e75cfa4 650 for(int i=0;i<17;i++)
prasanthbj05 266:ae588e75cfa4 651 {
prasanthbj05 266:ae588e75cfa4 652 proton_scp_sum += scp_bin[i];
prasanthbj05 266:ae588e75cfa4 653 }
prasanthbj05 266:ae588e75cfa4 654 for(int i=0; i<5; i++)
prasanthbj05 266:ae588e75cfa4 655 {
prasanthbj05 266:ae588e75cfa4 656 electron_scp_sum += scp_bin[18+i];
prasanthbj05 266:ae588e75cfa4 657 }
ee12b079 268:ded5306a1fd1 658 if(proton_scp_sum > scp_sfp_threshold_m0_2[1]){//gPC.printf("\n\rProton_SCP_sum above threshold");
ee12b079 268:ded5306a1fd1 659 at=1;}
ee12b079 268:ded5306a1fd1 660 if(electron_scp_sum > scp_sfp_threshold_m0_2[2]){//gPC.printf("\n\rElectron above threshold");
ee12b079 268:ded5306a1fd1 661 at=1;}
prasanthbj05 266:ae588e75cfa4 662 }
prasanthbj05 266:ae588e75cfa4 663 }
prasanthbj05 266:ae588e75cfa4 664 else if(srp_mode ==1)
prasanthbj05 266:ae588e75cfa4 665 {
ee12b079 268:ded5306a1fd1 666 if(compression_option==0){
prasanthbj05 266:ae588e75cfa4 667 for(int i=0; i<48; i++)
prasanthbj05 266:ae588e75cfa4 668 {
prasanthbj05 266:ae588e75cfa4 669 if(scp_bin[i] > scp_threshold_m1[i]){
ee12b079 268:ded5306a1fd1 670 //gPC.printf("\nSCP above threshold index:%d, Value:%d",i,scp_bin[i]);
prasanthbj05 266:ae588e75cfa4 671 at = 1;
prasanthbj05 266:ae588e75cfa4 672 break;
prasanthbj05 266:ae588e75cfa4 673 }
prasanthbj05 266:ae588e75cfa4 674 }
prasanthbj05 266:ae588e75cfa4 675 for(int i=48; i<52; i++)
prasanthbj05 266:ae588e75cfa4 676 {
prasanthbj05 266:ae588e75cfa4 677 if(scp_bin[i] > scp_threshold_m1[i]){
ee12b079 268:ded5306a1fd1 678 //gPC.printf("\nSCP above threshold index:%d, Value:%d",i,scp_bin[i]);
prasanthbj05 266:ae588e75cfa4 679 at = 1;
prasanthbj05 266:ae588e75cfa4 680 break;
prasanthbj05 266:ae588e75cfa4 681 }
shreeshas95 1:a0055b3280c8 682 }
shreeshas95 1:a0055b3280c8 683 }
ee12b079 268:ded5306a1fd1 684 else if(compression_option==2){
ee12b079 268:ded5306a1fd1 685 if(scp_bin[50]>scp_sfp_threshold_m0_2[0]){
ee12b079 268:ded5306a1fd1 686 //gPC.printf("\nSCP above threshold index:50, Value:%",scp_bin[50]);
ee12b079 268:ded5306a1fd1 687 at=1;
ee12b079 268:ded5306a1fd1 688 }
prasanthbj05 266:ae588e75cfa4 689 }
prasanthbj05 266:ae588e75cfa4 690 }
prasanthbj05 266:ae588e75cfa4 691 /*----------------------------Tagging the scp packet formed from these 60 sfp's as AT or BT ends here--------------------------*/
prasanthbj05 266:ae588e75cfa4 692
prasanthbj05 266:ae588e75cfa4 693 if(srp_mode == 0)
prasanthbj05 266:ae588e75cfa4 694 {
prasanthbj05 266:ae588e75cfa4 695 //determining if non zero values of proton and electron bins exist for calibrated mode (srp)
prasanthbj05 266:ae588e75cfa4 696 for(int i=0; i<17 ;i++)
prasanthbj05 266:ae588e75cfa4 697 {
prasanthbj05 266:ae588e75cfa4 698 if(scp_bin[i]>0)
prasanthbj05 266:ae588e75cfa4 699 pzf = 0;
prasanthbj05 266:ae588e75cfa4 700 }
prasanthbj05 266:ae588e75cfa4 701 for(int i=18; i<23 ;i++)
prasanthbj05 266:ae588e75cfa4 702 {
prasanthbj05 266:ae588e75cfa4 703 if(scp_bin[i]>0)
prasanthbj05 266:ae588e75cfa4 704 ezf = 0;
prasanthbj05 266:ae588e75cfa4 705 }
prasanthbj05 266:ae588e75cfa4 706 }
prasanthbj05 266:ae588e75cfa4 707 /*-----------------------------------------Tagging beacon packet as AT or BT starts here-------------------------------------*/
prasanthbj05 266:ae588e75cfa4 708 beacon_at = 0;
prasanthbj05 266:ae588e75cfa4 709 if(srp_mode==0) //those bins which can be meaningfully compared only in srp_mode==0
prasanthbj05 266:ae588e75cfa4 710 {
prasanthbj05 266:ae588e75cfa4 711 if(scp_bin[44]>beacon_threshold[0]) beacon_at = 1;
prasanthbj05 266:ae588e75cfa4 712 if(scp_bin[17]>beacon_threshold[5]) beacon_at = 1;
prasanthbj05 266:ae588e75cfa4 713 if(scp_bin[23]>beacon_threshold[6]) beacon_at = 1;
prasanthbj05 266:ae588e75cfa4 714 proton_scp_sum = 0; electron_scp_sum = 0;
prasanthbj05 266:ae588e75cfa4 715 for(int i=0;i<17;i++)
prasanthbj05 266:ae588e75cfa4 716 {
prasanthbj05 266:ae588e75cfa4 717 proton_scp_sum += scp_bin[i];
prasanthbj05 266:ae588e75cfa4 718 }
prasanthbj05 266:ae588e75cfa4 719 for(int i=0; i<5; i++)
prasanthbj05 266:ae588e75cfa4 720 {
prasanthbj05 266:ae588e75cfa4 721 electron_scp_sum += scp_bin[18+i];
prasanthbj05 266:ae588e75cfa4 722 }
prasanthbj05 266:ae588e75cfa4 723 if(proton_scp_sum > beacon_threshold[7]) beacon_at =1;
prasanthbj05 266:ae588e75cfa4 724 if(electron_scp_sum > beacon_threshold[8]) beacon_at =1;
prasanthbj05 266:ae588e75cfa4 725 }
prasanthbj05 266:ae588e75cfa4 726 if(scp_bin[48]>beacon_threshold[1]) beacon_at = 1;
prasanthbj05 266:ae588e75cfa4 727 if(scp_bin[49]>beacon_threshold[2]) beacon_at = 1;
prasanthbj05 266:ae588e75cfa4 728 if(scp_bin[50]>beacon_threshold[3]) beacon_at = 1;
prasanthbj05 266:ae588e75cfa4 729 if(scp_bin[51]>beacon_threshold[4]) beacon_at = 1;
prasanthbj05 266:ae588e75cfa4 730 /*----------------------------------------Tagging beacon packet as AT or BT ends here------------------------------------------*/
prasanthbj05 266:ae588e75cfa4 731
prasanthbj05 266:ae588e75cfa4 732 /*-----------------------------------------------Forming the beacon packet starts here-----------------------------------------*/
prasanthbj05 266:ae588e75cfa4 733 //Last 512 bits of beacon_array excluding CRC bits is used for storing the 5 most recent beacon packets
prasanthbj05 266:ae588e75cfa4 734
prasanthbj05 266:ae588e75cfa4 735 if(beacon_cntr == 1)
prasanthbj05 266:ae588e75cfa4 736 {
prasanthbj05 267:783c248a6207 737 beacon_ptr = &(beacon_array[47]); // starting block address, stores the oldest(among the 5 most recent) beacon packet
prasanthbj05 266:ae588e75cfa4 738 }
prasanthbj05 266:ae588e75cfa4 739 else if(beacon_cntr>1 && beacon_cntr<6)
prasanthbj05 266:ae588e75cfa4 740 {
prasanthbj05 267:783c248a6207 741 beacon_ptr +=17; // increase the block number(totally 5 blocks for 5 beacon packets)
prasanthbj05 266:ae588e75cfa4 742 }
prasanthbj05 266:ae588e75cfa4 743 else if(beacon_cntr == 6)
prasanthbj05 266:ae588e75cfa4 744 {
prasanthbj05 267:783c248a6207 745 for(uint16_t i=0;i<17;i++) // when all 5 blocks have been used shift the last 4 blocks up along the array and
prasanthbj05 266:ae588e75cfa4 746 { // overwrite the new beacon packet in the 5th block
prasanthbj05 267:783c248a6207 747 beacon_array[47+i] = beacon_array[64+i];
prasanthbj05 267:783c248a6207 748 beacon_array[64+i] = beacon_array[81+i];
prasanthbj05 267:783c248a6207 749 beacon_array[81+i] = beacon_array[98+i];
prasanthbj05 267:783c248a6207 750 beacon_array[98+i] = beacon_array[115+i];
prasanthbj05 266:ae588e75cfa4 751 }
prasanthbj05 267:783c248a6207 752 beacon_ptr = &(beacon_array[115]); //address of the 5th block
prasanthbj05 266:ae588e75cfa4 753 beacon_cntr = 5;
prasanthbj05 266:ae588e75cfa4 754 }
prasanthbj05 266:ae588e75cfa4 755 pointer = beacon_ptr; debug_cntr = 0; space = 8;
prasanthbj05 267:783c248a6207 756 space = adjust(2, compression_option,pointer,space); pointer += space>>4; debug_cntr += space>>4; //first two bits of compression option
prasanthbj05 267:783c248a6207 757 space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 758 space = adjust(3,(sci_time>>32)&0x07,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 759 space = adjust(8,(sci_time>>24)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 760 space = adjust(8,(sci_time>>16)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 761 space = adjust(8,(sci_time>>8)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 762 space = adjust(8,(sci_time)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 763 space = adjust(4, (attitude)&0x0f,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 764
prasanthbj05 266:ae588e75cfa4 765 if(srp_mode==0){
prasanthbj05 266:ae588e75cfa4 766 if(beacon_at == 0){
prasanthbj05 267:783c248a6207 767 space = adjust(1, 0,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 768 space = adjust(6, compress(scp_bin[44],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 769 space = adjust(7, compress(scp_bin[48],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 770 space = adjust(7, compress(scp_bin[49],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 771 space = adjust(7, compress(scp_bin[50],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 772 space = adjust(7, compress(scp_bin[51],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 773 space = adjust(6, compress(scp_bin[17],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 774 space = adjust(6, compress(scp_bin[23],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 775 space = adjust(4, compress(proton_scp_sum ,10,2)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 776 space = adjust(8, compress(proton_scp_sum ,10,2),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 777 space = adjust(4, compress(electron_scp_sum ,10,2)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 778 space = adjust(8, compress(electron_scp_sum ,10,2),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 779 pointer = pointer + 1;
prasanthbj05 266:ae588e75cfa4 780 for(int temp_i = 12; temp_i<14; temp_i++)
prasanthbj05 266:ae588e75cfa4 781 {
prasanthbj05 266:ae588e75cfa4 782 *pointer = 0;
prasanthbj05 266:ae588e75cfa4 783 pointer = pointer + 1;
prasanthbj05 266:ae588e75cfa4 784 }
prasanthbj05 266:ae588e75cfa4 785 }
prasanthbj05 266:ae588e75cfa4 786 else if(beacon_at==1){
prasanthbj05 266:ae588e75cfa4 787 space = adjust(1, 1,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 788 space = adjust(1, compress(sfp_bin[44],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 789 space = adjust(8, compress(sfp_bin[44],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 790 space = adjust(4, compress(sfp_bin[48],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 791 space = adjust(8, compress(sfp_bin[48],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 792 space = adjust(4, compress(sfp_bin[49],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 793 space = adjust(8, compress(sfp_bin[49],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 794 space = adjust(4, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 795 space = adjust(8, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 796 space = adjust(4, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 797 space = adjust(8, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 798 space = adjust(1, compress(sfp_bin[17],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 799 space = adjust(8, compress(sfp_bin[17],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 800 space = adjust(1, compress(sfp_bin[23],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 801 space = adjust(8, compress(sfp_bin[23],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 802 space = adjust(1, compress(proton_scp_sum ,6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 803 space = adjust(8, compress(proton_scp_sum ,6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 804 space = adjust(1, compress(electron_scp_sum,6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 805 space = adjust(8, compress(electron_scp_sum ,6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 806 //cout<<"for beacon space = "<<(space&0x0f)<<" counter = "<<debug_cntr;
prasanthbj05 266:ae588e75cfa4 807 }
prasanthbj05 266:ae588e75cfa4 808 }else if(srp_mode==1){
prasanthbj05 266:ae588e75cfa4 809 if(beacon_at==0){
prasanthbj05 267:783c248a6207 810 space = adjust(1, 0,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 811 space = adjust(6, compress(0,3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 812 space = adjust(7, compress(sfp_bin[48],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 813 space = adjust(7, compress(sfp_bin[49],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 814 space = adjust(7, compress(sfp_bin[50],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 815 space = adjust(7, compress(sfp_bin[51],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 816 pointer = pointer + 1;
prasanthbj05 266:ae588e75cfa4 817 for(uint8_t temp_i = 7; temp_i<14; temp_i++)
prasanthbj05 266:ae588e75cfa4 818 {
prasanthbj05 266:ae588e75cfa4 819 *pointer = 0;
prasanthbj05 266:ae588e75cfa4 820 pointer = pointer + 1;
prasanthbj05 266:ae588e75cfa4 821 }
prasanthbj05 266:ae588e75cfa4 822 }
prasanthbj05 266:ae588e75cfa4 823 else if(beacon_at==1){
prasanthbj05 267:783c248a6207 824 space = adjust(1, 1,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 825 space = adjust(1, compress(0,6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 267:783c248a6207 826 space = adjust(8, compress(0,6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 827 space = adjust(4, compress(sfp_bin[48],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 828 space = adjust(8, compress(sfp_bin[48],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 829 space = adjust(4, compress(sfp_bin[49],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 830 space = adjust(8, compress(sfp_bin[49],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 831 space = adjust(4, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 832 space = adjust(8, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 833 space = adjust(4, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 834 space = adjust(8, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 835 pointer = pointer + 1;
prasanthbj05 266:ae588e75cfa4 836 for(uint8_t temp_i = 10; temp_i<14; temp_i++)
prasanthbj05 266:ae588e75cfa4 837 {
prasanthbj05 266:ae588e75cfa4 838 *pointer = 0;
prasanthbj05 266:ae588e75cfa4 839 pointer = pointer + 1;
ee12b079 93:4d76de54a699 840 }
shreeshas95 1:a0055b3280c8 841 }
shreeshas95 1:a0055b3280c8 842 }
prasanthbj05 266:ae588e75cfa4 843 beacon_cntr++;
prasanthbj05 266:ae588e75cfa4 844 /*--------------------------------------------------beacon packet ends here--------------------------------------------------------*/
prasanthbj05 266:ae588e75cfa4 845
chaithanyarss 290:3159ff1081a2 846 //gPC.printf("\n\n\rSCP");
prasanthbj05 266:ae588e75cfa4 847 uint8_t packet_pp,time_diff;
prasanthbj05 266:ae588e75cfa4 848 /*------------------------------------------Forming a science packet(scp) starts here----------------------------------------------*/
prasanthbj05 266:ae588e75cfa4 849
ee12b079 93:4d76de54a699 850 pointer = scp; debug_cntr = 0; space = 8;
prasanthbj05 266:ae588e75cfa4 851 time_diff = 0;
prasanthbj05 266:ae588e75cfa4 852
prasanthbj05 266:ae588e75cfa4 853 packet_pp = 1;
prasanthbj05 266:ae588e75cfa4 854 if((((uint8_t)(sci_time>>7))&0x3f)<(((uint8_t)(time_prev_scp>>7))&0x3f))
prasanthbj05 266:ae588e75cfa4 855 {
prasanthbj05 266:ae588e75cfa4 856 time_diff = time_diff+60;
prasanthbj05 266:ae588e75cfa4 857 }
prasanthbj05 266:ae588e75cfa4 858 time_diff += (((uint8_t)(sci_time>>7))&0x3f);
prasanthbj05 266:ae588e75cfa4 859 time_diff -= (((uint8_t)(time_prev_scp>>7))&0x3f);
prasanthbj05 266:ae588e75cfa4 860 if(time_diff>10){
prasanthbj05 266:ae588e75cfa4 861 packet_pp = 0;
prasanthbj05 266:ae588e75cfa4 862 }
prasanthbj05 266:ae588e75cfa4 863 time_prev_scp = sci_time;
prasanthbj05 266:ae588e75cfa4 864 uint32_t sfp_at_counter;
prasanthbj05 266:ae588e75cfa4 865 sfp_at_counter = FSC_CURRENT[2];
prasanthbj05 266:ae588e75cfa4 866 space = adjust(1, packet_pp,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 867 space = adjust(5, (sci_time>>8)&0x1f,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 868 space = adjust(8, (sci_time)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 869 space = adjust(4, (attitude)&0xf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 870 space = adjust(2, compression_option,pointer,space); pointer += space>>4; debug_cntr += space>>4; //first two bits of compression option
prasanthbj05 266:ae588e75cfa4 871 space = adjust(1, at,pointer,space); pointer += space>>4; debug_cntr += space>>4; //last bit of compression option
prasanthbj05 266:ae588e75cfa4 872 space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 873 if(!(srp_mode==0 && compression_option==2))
prasanthbj05 266:ae588e75cfa4 874 {
prasanthbj05 266:ae588e75cfa4 875 space = adjust(8, sfp_at_counter>>16,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 876 space = adjust(8, sfp_at_counter>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 877 space = adjust(8, sfp_at_counter,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 878 }
ee12b079 93:4d76de54a699 879 if(srp_mode == 0 && compression_option == 0){ //normal callibrated mode
ee12b079 268:ded5306a1fd1 880 #if scpz
chaithanyarss 290:3159ff1081a2 881 gPC.printf("\n\rSCP - Normal calibrated mode");
ee12b079 268:ded5306a1fd1 882 #endif
prasanthbj05 266:ae588e75cfa4 883 space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 884 space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 885 if(at == 0 ){
ee12b079 268:ded5306a1fd1 886 #if scpz
chaithanyarss 290:3159ff1081a2 887 gPC.printf("\n\rBelow threshold");
ee12b079 268:ded5306a1fd1 888 #endif
ee12b079 93:4d76de54a699 889 for(int i = 0; i<8 ;i++){
prasanthbj05 266:ae588e75cfa4 890 space = adjust(7,compress(scp_bin[24+i],4,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 891 }
ee12b079 93:4d76de54a699 892 for(int i = 0; i<12 ;i++){
prasanthbj05 266:ae588e75cfa4 893 space = adjust(5,compress(scp_bin[32+i],2,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 894 }
ee12b079 93:4d76de54a699 895 for(int i = 0; i<4 ;i++){
ee12b079 93:4d76de54a699 896 space = adjust(6,compress(scp_bin[44+i],3,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 897 }
ee12b079 93:4d76de54a699 898 for(int i = 0; i<4 ;i++){
ee12b079 93:4d76de54a699 899 space = adjust(7,compress(scp_bin[48+i],4,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 900 }
prasanthbj05 266:ae588e75cfa4 901 space = adjust(6,compress(scp_bin[17],3,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 902 space = adjust(6,compress(scp_bin[23],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 903 if(pzf == 0){
ee12b079 93:4d76de54a699 904 for(int i = 0; i<2 ;i++){
ee12b079 93:4d76de54a699 905 space = adjust(8,compress(scp_bin[i],6,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 906 }
ee12b079 93:4d76de54a699 907 for(int i = 0; i<15 ;i++){
prasanthbj05 266:ae588e75cfa4 908 space = adjust(7,compress(scp_bin[i+2],5,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 909 }
ee12b079 93:4d76de54a699 910 }
ee12b079 93:4d76de54a699 911 if(ezf == 0){
ee12b079 93:4d76de54a699 912 space = adjust(1,compress(scp_bin[18],7,2)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 913 space = adjust(8,compress(scp_bin[18],7,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 914 for(int i=0; i<4; i++){
prasanthbj05 266:ae588e75cfa4 915 space = adjust(8,compress(scp_bin[19+i],6,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 916 }
ee12b079 93:4d76de54a699 917 }
ee12b079 93:4d76de54a699 918 }// below threshold ends here
ee12b079 93:4d76de54a699 919 if(at == 1){
ee12b079 268:ded5306a1fd1 920 #if scpz
chaithanyarss 290:3159ff1081a2 921 gPC.printf("\n\rAbove threshold");
ee12b079 268:ded5306a1fd1 922 #endif
ee12b079 93:4d76de54a699 923 for(int i = 0; i<8 ;i++){
ee12b079 93:4d76de54a699 924 space = adjust(7,compress(scp_bin[24+i],4,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 925 }
ee12b079 93:4d76de54a699 926 for(int i = 0; i<12 ;i++){
ee12b079 93:4d76de54a699 927 space = adjust(5,compress(scp_bin[32+i],2,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 928 }
ee12b079 93:4d76de54a699 929 for(int i = 0; i<4 ;i++){
prasanthbj05 266:ae588e75cfa4 930 space = adjust(1,compress(scp_bin[44+i],6,3)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 931 space = adjust(8,compress(scp_bin[44+i],6,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 932 }
ee12b079 93:4d76de54a699 933 for(int i=0; i<4 ;i++){
prasanthbj05 266:ae588e75cfa4 934 space = adjust(4,compress(scp_bin[48+i],9,3)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 935 space = adjust(8,compress(scp_bin[48+i],9,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 936 }
prasanthbj05 266:ae588e75cfa4 937 space = adjust(1,compress(scp_bin[17],6,3)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 938 space = adjust(8,compress(scp_bin[17],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 939 space = adjust(1,compress(scp_bin[23],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 940 space = adjust(8,compress(scp_bin[23],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 941
ee12b079 93:4d76de54a699 942 if(pzf == 0){
ee12b079 93:4d76de54a699 943 for(int i = 0; i<17 ; i++){
prasanthbj05 266:ae588e75cfa4 944 space = adjust(8, (compress(scp_bin[i],5,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 945 }
ee12b079 93:4d76de54a699 946 }
ee12b079 93:4d76de54a699 947 if(ezf == 0){
ee12b079 93:4d76de54a699 948 for(int i = 0; i<5 ; i++){
ee12b079 93:4d76de54a699 949 space = adjust(8, (compress(scp_bin[18+i],5,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 950 }
ee12b079 93:4d76de54a699 951 }
ee12b079 93:4d76de54a699 952 } //above thresholds ends
ee12b079 93:4d76de54a699 953 } //srp_mode == 0 ends
ee12b079 93:4d76de54a699 954 if(srp_mode == 1){
ee12b079 268:ded5306a1fd1 955 #if scpz
chaithanyarss 290:3159ff1081a2 956 gPC.printf("\n\rSCP - Scatter plot mode");
ee12b079 268:ded5306a1fd1 957 #endif
ee12b079 93:4d76de54a699 958 if(at == 0){
ee12b079 268:ded5306a1fd1 959 #if scpz
chaithanyarss 290:3159ff1081a2 960 gPC.printf("\n\rBelow Threshold");
ee12b079 268:ded5306a1fd1 961 #endif
prasanthbj05 266:ae588e75cfa4 962 for(int i=0; i<48; i++){
prasanthbj05 266:ae588e75cfa4 963 space = adjust(6, ((compress(scp_bin[i],3,3))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 964 }
ee12b079 93:4d76de54a699 965 for(int i = 0 ; i < 4 ; i++){
prasanthbj05 266:ae588e75cfa4 966 space = adjust(7, (compress(scp_bin[48+i],4,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 967 }
ee12b079 93:4d76de54a699 968 }
ee12b079 93:4d76de54a699 969 if(at == 1){
ee12b079 268:ded5306a1fd1 970 #if scpz
chaithanyarss 290:3159ff1081a2 971 gPC.printf("\n\rAbove threshold");
ee12b079 268:ded5306a1fd1 972 #endif
prasanthbj05 266:ae588e75cfa4 973 for(int i=0; i<48; i++){
prasanthbj05 266:ae588e75cfa4 974 space = adjust(7, (compress((scp_bin[i]/2),4,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 975 }
ee12b079 93:4d76de54a699 976 for(int i = 0 ; i < 4 ; i++){
prasanthbj05 266:ae588e75cfa4 977 space = adjust(4, (compress(scp_bin[48+i],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 978 space = adjust(8, (compress(scp_bin[48+i],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 979 }
ee12b079 93:4d76de54a699 980 }
ee12b079 93:4d76de54a699 981 }// scp mode 1 end
ee12b079 93:4d76de54a699 982 if( srp_mode == 0 && compression_option == 1 ){ //scp data conservation mode
ee12b079 268:ded5306a1fd1 983 #if scpz
chaithanyarss 290:3159ff1081a2 984 gPC.printf("\n\rSCP - Calibrated data conservation mode");
ee12b079 268:ded5306a1fd1 985 #endif
ee12b079 93:4d76de54a699 986 space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 987 space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 988 if(at == 0){
ee12b079 268:ded5306a1fd1 989 #if scpz
chaithanyarss 290:3159ff1081a2 990 gPC.printf("\n\rBelow threshold");
ee12b079 268:ded5306a1fd1 991 #endif
prasanthbj05 266:ae588e75cfa4 992 space = adjust(6, (compress(scp_bin[44],3,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 993 for(int i=0; i<4; i++){
prasanthbj05 266:ae588e75cfa4 994 space = adjust(7, (compress(scp_bin[48+i],4,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 995 }
prasanthbj05 266:ae588e75cfa4 996 space = adjust(6, (compress(scp_bin[17],3,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 997 space = adjust(6, (compress(scp_bin[23],3,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 998 if(pzf==0){
prasanthbj05 266:ae588e75cfa4 999 space = adjust(4, (compress(proton_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1000 space = adjust(8, ( compress(proton_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1001 }
prasanthbj05 266:ae588e75cfa4 1002 if(ezf==0){
prasanthbj05 266:ae588e75cfa4 1003 space = adjust(4, (compress(electron_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1004 space = adjust(8, (compress(electron_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1005 }
ee12b079 93:4d76de54a699 1006 }else if(at == 1){
ee12b079 268:ded5306a1fd1 1007 #if scpz
chaithanyarss 290:3159ff1081a2 1008 gPC.printf("\n\rAbove threshold");
ee12b079 268:ded5306a1fd1 1009 #endif
prasanthbj05 266:ae588e75cfa4 1010 space = adjust(1, (compress(scp_bin[44],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1011 space = adjust(8, (compress(scp_bin[44],6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 1012 for(int i=0; i<4; i++){
ee12b079 93:4d76de54a699 1013 space = adjust(4, (compress(scp_bin[48+i],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 1014 space = adjust(8, (compress(scp_bin[48+i],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 1015 }
prasanthbj05 266:ae588e75cfa4 1016 space = adjust(1, (compress(scp_bin[17],6,3)>>8) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1017 space = adjust(8, (compress(scp_bin[17],6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1018 space = adjust(1, (compress(scp_bin[23],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1019 space = adjust(8, (compress(scp_bin[23],6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 1020 if(pzf==0){
prasanthbj05 266:ae588e75cfa4 1021 space = adjust(1, (compress(proton_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 1022 space = adjust(8, (compress(proton_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 1023 }
ee12b079 93:4d76de54a699 1024 if(ezf==0){
prasanthbj05 266:ae588e75cfa4 1025 space = adjust(1, (compress(electron_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 1026 space = adjust(8, (compress(electron_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
ee12b079 93:4d76de54a699 1027 }
ee12b079 93:4d76de54a699 1028 }
prasanthbj05 266:ae588e75cfa4 1029 }
prasanthbj05 266:ae588e75cfa4 1030 if(compression_option == 2 ) //scp extreme data conservation mode
prasanthbj05 266:ae588e75cfa4 1031 {
prasanthbj05 266:ae588e75cfa4 1032 if(srp_mode==0)
prasanthbj05 266:ae588e75cfa4 1033 {
ee12b079 268:ded5306a1fd1 1034 #if scpz
chaithanyarss 290:3159ff1081a2 1035 gPC.printf("\n\rSCP - calibrated extreme data conservation mode");
ee12b079 268:ded5306a1fd1 1036 #endif
prasanthbj05 266:ae588e75cfa4 1037 space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1038 space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1039 if(at==0){
ee12b079 268:ded5306a1fd1 1040 #if scpz
chaithanyarss 290:3159ff1081a2 1041 gPC.printf("\n\rBelow threshold");
ee12b079 268:ded5306a1fd1 1042 #endif
prasanthbj05 266:ae588e75cfa4 1043 space = adjust(7, (compress(scp_bin[50],4,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1044 if(pzf==0){
prasanthbj05 266:ae588e75cfa4 1045 space = adjust(4, (compress(proton_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1046 space = adjust(8, ( compress(proton_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1047 }
prasanthbj05 266:ae588e75cfa4 1048 if(ezf==0){
prasanthbj05 266:ae588e75cfa4 1049 space = adjust(4, (compress(electron_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1050 space = adjust(8, (compress(electron_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1051 }
prasanthbj05 266:ae588e75cfa4 1052 }else if(at==1){
ee12b079 268:ded5306a1fd1 1053 #if scpz
chaithanyarss 290:3159ff1081a2 1054 gPC.printf("\n\rAbove threshold");
ee12b079 268:ded5306a1fd1 1055 #endif
prasanthbj05 266:ae588e75cfa4 1056 space = adjust(4, (compress(scp_bin[50],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1057 space = adjust(8, (compress(scp_bin[50],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1058 if(pzf==0){
prasanthbj05 266:ae588e75cfa4 1059 space = adjust(1, (compress(proton_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1060 space = adjust(8, (compress(proton_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1061 }
prasanthbj05 266:ae588e75cfa4 1062 if(ezf==0){
prasanthbj05 266:ae588e75cfa4 1063 space = adjust(1, (compress(electron_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1064 space = adjust(8, (compress(electron_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1065 }
prasanthbj05 266:ae588e75cfa4 1066 }
prasanthbj05 266:ae588e75cfa4 1067 }
prasanthbj05 266:ae588e75cfa4 1068 else if(srp_mode==1)
prasanthbj05 266:ae588e75cfa4 1069 {
ee12b079 268:ded5306a1fd1 1070 #if scpz
chaithanyarss 290:3159ff1081a2 1071 gPC.printf("\n\rSCP - Scatter plot, extreme data conservation mode");
ee12b079 268:ded5306a1fd1 1072 #endif
prasanthbj05 266:ae588e75cfa4 1073 pzf = 0; ezf = 0; //because proton energy bins are not available in scatter plot mode and hence in the packet we send dummy data(which is nothng but the maximum value which fits into that particular compression scheme)
prasanthbj05 266:ae588e75cfa4 1074 space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1075 space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1076 if(at==0){
ee12b079 268:ded5306a1fd1 1077 #if scpz
chaithanyarss 290:3159ff1081a2 1078 gPC.printf("\n\rBelow threshold");
ee12b079 268:ded5306a1fd1 1079 #endif
prasanthbj05 266:ae588e75cfa4 1080 space = adjust(7, (compress(scp_bin[50],4,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1081 // below 4 lines - filling the proton ane electron energy bins with zeros(junk value) since they're not available in srp
prasanthbj05 266:ae588e75cfa4 1082 space = adjust(4, (compress(0,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1083 space = adjust(8, (compress(0,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1084 space = adjust(4, (compress(0,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1085 space = adjust(8, (compress(0,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1086 }
prasanthbj05 266:ae588e75cfa4 1087 else if(at==1){
ee12b079 268:ded5306a1fd1 1088 #if scpz
chaithanyarss 290:3159ff1081a2 1089 gPC.printf("\n\rAbove threshold");
ee12b079 268:ded5306a1fd1 1090 #endif
prasanthbj05 266:ae588e75cfa4 1091 space = adjust(4, (compress(scp_bin[50],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1092 space = adjust(8, (compress(scp_bin[50],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1093 space = adjust(1, (compress(0,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1094 space = adjust(8, (compress(0,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1095 space = adjust(1, (compress(0,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1096 space = adjust(8, (compress(0,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4;
prasanthbj05 266:ae588e75cfa4 1097 }
prasanthbj05 266:ae588e75cfa4 1098 }
prasanthbj05 266:ae588e75cfa4 1099 }
prasanthbj05 266:ae588e75cfa4 1100 /*---------------------------------------------forming a science packet ends here----------------------------------------------*/
prasanthbj05 266:ae588e75cfa4 1101
ee12b079 93:4d76de54a699 1102 id = 0;
ee12b079 93:4d76de54a699 1103 if(srp_mode == 0 && compression_option == 0){
ee12b079 93:4d76de54a699 1104 if(at == 0){
prasanthbj05 266:ae588e75cfa4 1105 length = 228+2; //2 spare bits
ee12b079 93:4d76de54a699 1106 if(pzf == 0)
ee12b079 93:4d76de54a699 1107 length += 121;
ee12b079 93:4d76de54a699 1108 if(ezf == 0)
ee12b079 93:4d76de54a699 1109 length +=41;
ee12b079 93:4d76de54a699 1110 }else if(at == 1){
prasanthbj05 266:ae588e75cfa4 1111 length = 266+6; //6 spare bits
ee12b079 93:4d76de54a699 1112 if(pzf == 0)
ee12b079 93:4d76de54a699 1113 length += 136;
ee12b079 93:4d76de54a699 1114 if(ezf == 0)
ee12b079 93:4d76de54a699 1115 length += 40;
ee12b079 93:4d76de54a699 1116 }
prasanthbj05 266:ae588e75cfa4 1117 }else if(srp_mode == 0 && compression_option == 1){ //data conservation mode
ee12b079 93:4d76de54a699 1118 if(at == 0){
prasanthbj05 266:ae588e75cfa4 1119 length = 94+2; //2 spare bits
ee12b079 93:4d76de54a699 1120 if(pzf == 0)
ee12b079 93:4d76de54a699 1121 length += 12;
ee12b079 93:4d76de54a699 1122 if(ezf == 0)
ee12b079 93:4d76de54a699 1123 length += 12;
ee12b079 93:4d76de54a699 1124 }else if(at == 1){
prasanthbj05 266:ae588e75cfa4 1125 length = 123+3; //3 spare bits
prasanthbj05 266:ae588e75cfa4 1126 if(pzf == 0)
prasanthbj05 266:ae588e75cfa4 1127 length += 9;
prasanthbj05 266:ae588e75cfa4 1128 if(ezf == 0)
prasanthbj05 266:ae588e75cfa4 1129 length += 9;
prasanthbj05 266:ae588e75cfa4 1130 }
prasanthbj05 266:ae588e75cfa4 1131 }
prasanthbj05 266:ae588e75cfa4 1132 else if( srp_mode == 1){
prasanthbj05 266:ae588e75cfa4 1133 if(at == 0)
prasanthbj05 266:ae588e75cfa4 1134 length = 368;
prasanthbj05 266:ae588e75cfa4 1135 else if(at == 1)
prasanthbj05 266:ae588e75cfa4 1136 length = 432;
prasanthbj05 266:ae588e75cfa4 1137 }
prasanthbj05 266:ae588e75cfa4 1138 else if(compression_option == 2) //in extreme data conservation mode, length is same for both srp_modes
prasanthbj05 266:ae588e75cfa4 1139 {
prasanthbj05 266:ae588e75cfa4 1140 if(at == 0){
prasanthbj05 266:ae588e75cfa4 1141 length = 31+1; //1 spare bits
prasanthbj05 266:ae588e75cfa4 1142 if(pzf == 0)
prasanthbj05 266:ae588e75cfa4 1143 length += 12;
prasanthbj05 266:ae588e75cfa4 1144 if(ezf == 0)
prasanthbj05 266:ae588e75cfa4 1145 length += 12;
prasanthbj05 266:ae588e75cfa4 1146 }else if(at == 1){
prasanthbj05 266:ae588e75cfa4 1147 length = 36+2; //2 spare bits
ee12b079 93:4d76de54a699 1148 if(pzf == 0)
ee12b079 93:4d76de54a699 1149 length += 9;
ee12b079 93:4d76de54a699 1150 if(ezf == 0)
ee12b079 93:4d76de54a699 1151 length += 9;
ee12b079 93:4d76de54a699 1152 }
ee12b079 93:4d76de54a699 1153 }
ee12b079 93:4d76de54a699 1154 length = (length%8==0)?(length/8):(length/8)+1;
ee12b079 268:ded5306a1fd1 1155 #if scpz
chaithanyarss 290:3159ff1081a2 1156 gPC.printf("\n\rSCP packet length = %d",length);
ee12b079 268:ded5306a1fd1 1157 #endif
ee12b079 268:ded5306a1fd1 1158 if(position_tm_frame[id]>129){
ee12b079 268:ded5306a1fd1 1159 #if scpz
chaithanyarss 290:3159ff1081a2 1160 gPC.printf("\n\rSkipping the current TM frame. Inserting SCP into the next frame");
chaithanyarss 290:3159ff1081a2 1161 gPC.printf("\n\rposition_tm_frame = %d",position_tm_frame[id]);
ee12b079 268:ded5306a1fd1 1162 #endif
prasanthbj05 266:ae588e75cfa4 1163 while(position_tm_frame[id]<132){
prasanthbj05 266:ae588e75cfa4 1164 frames[id][position_tm_frame[id]] = 0;
prasanthbj05 266:ae588e75cfa4 1165 position_tm_frame[id]++;
prasanthbj05 266:ae588e75cfa4 1166 }
prasanthbj05 266:ae588e75cfa4 1167 }
prasanthbj05 266:ae588e75cfa4 1168 if(position_tm_frame[id]==position_tm_starting[id]){
prasanthbj05 266:ae588e75cfa4 1169 frames[id][4] = position_tm_starting[id];
prasanthbj05 266:ae588e75cfa4 1170 }
prasanthbj05 266:ae588e75cfa4 1171 for(int j= 0; j < length ;)
prasanthbj05 266:ae588e75cfa4 1172 {
prasanthbj05 266:ae588e75cfa4 1173 if(position_tm_frame[id]==frames[id][4]){
ee12b079 268:ded5306a1fd1 1174 #if scpz
chaithanyarss 290:3159ff1081a2 1175 gPC.printf("\n\rInserting Time into SCP_TM");
ee12b079 268:ded5306a1fd1 1176 #endif
prasanthbj05 266:ae588e75cfa4 1177 frames[id][5] = (uint8_t)((sci_time>>29)&0x3f);
prasanthbj05 266:ae588e75cfa4 1178 frames[id][6] = (uint8_t)((sci_time>>21)&0xff);
prasanthbj05 266:ae588e75cfa4 1179 frames[id][7] = (uint8_t)((sci_time>>13)&0x3f);
prasanthbj05 266:ae588e75cfa4 1180 }
prasanthbj05 266:ae588e75cfa4 1181 if(position_tm_frame[id]<132){
prasanthbj05 266:ae588e75cfa4 1182 frames[id][position_tm_frame[id]] = scp[j];
prasanthbj05 266:ae588e75cfa4 1183 j++;
ee12b079 93:4d76de54a699 1184 position_tm_frame[id]++;
prasanthbj05 266:ae588e75cfa4 1185 }
prasanthbj05 266:ae588e75cfa4 1186 if(position_tm_frame[id] == 132) //space full in the frame bro
prasanthbj05 266:ae588e75cfa4 1187 {
ee12b079 268:ded5306a1fd1 1188 #if scpz
chaithanyarss 290:3159ff1081a2 1189 gPC.printf("\n\rSCP_TM frame full. Length of current SCP packet = %d",j);
ee12b079 268:ded5306a1fd1 1190 #endif
prasanthbj05 266:ae588e75cfa4 1191 pointer = frames[id];
prasanthbj05 266:ae588e75cfa4 1192 space = adjust(1,0,pointer,8);
prasanthbj05 266:ae588e75cfa4 1193 space = adjust(4,1,pointer,space);
prasanthbj05 266:ae588e75cfa4 1194 FSC_science = FSC_CURRENT[1];
chaithanyarss 290:3159ff1081a2 1195 //gPC.printf("1 = 0x%X",FSC_science);
chaithanyarss 290:3159ff1081a2 1196
chaithanyarss 290:3159ff1081a2 1197 #if debug_fsc
prasanthbj05 266:ae588e75cfa4 1198 frames[id][1] = (FSC_science>>16)&0xff;
prasanthbj05 266:ae588e75cfa4 1199 frames[id][2] = (FSC_science>>8)&0xff;
prasanthbj05 266:ae588e75cfa4 1200 frames[id][3] = (FSC_science)&0xff;
chaithanyarss 290:3159ff1081a2 1201 test_fsc[1]++;
chaithanyarss 290:3159ff1081a2 1202 #endif
chaithanyarss 290:3159ff1081a2 1203 #if !debug_fsc
chaithanyarss 290:3159ff1081a2 1204 frames[id][1] = (FSC_science>>16)&0xff;
chaithanyarss 290:3159ff1081a2 1205 frames[id][2] = (FSC_science>>8)&0xff;
chaithanyarss 290:3159ff1081a2 1206 frames[id][3] = (FSC_science)&0xff;
chaithanyarss 290:3159ff1081a2 1207 #endif
chaithanyarss 290:3159ff1081a2 1208
prasanthbj05 266:ae588e75cfa4 1209 temp_crc = crc16_gen(frames[id],132);
prasanthbj05 266:ae588e75cfa4 1210 frames[id][132] = temp_crc>>8;
prasanthbj05 266:ae588e75cfa4 1211 frames[id][133] = temp_crc & 0xff;
ee12b079 268:ded5306a1fd1 1212 #if scpz
ee12b079 268:ded5306a1fd1 1213 //gPC.printf("\n\rFirst head pointer contents: 0x%02X",frames[id][frames[id][4]]);
chaithanyarss 290:3159ff1081a2 1214 //gPC.printf("\n\rPrinting SCP_TM\n\r{");
chaithanyarss 290:3159ff1081a2 1215 gPC.printf("\n\r{");
ee12b079 268:ded5306a1fd1 1216 for(uint8_t z=0;z<134;z++){
chaithanyarss 290:3159ff1081a2 1217 gPC.printf("%02X",frames[id][z]);
ee12b079 268:ded5306a1fd1 1218 }
ee12b079 268:ded5306a1fd1 1219 gPC.printf("}\n\r");
ee12b079 268:ded5306a1fd1 1220 #endif
prasanthbj05 266:ae588e75cfa4 1221 exor(frames[id]);
prasanthbj05 266:ae588e75cfa4 1222 convolution(frames[id]);
prasanthbj05 266:ae588e75cfa4 1223 interleave(TM_convoluted_data,TM_interleave_data);
prasanthbj05 266:ae588e75cfa4 1224 interleave(TM_convoluted_data+ 135,TM_interleave_data + 144);
prasanthbj05 266:ae588e75cfa4 1225
ee12b079 268:ded5306a1fd1 1226 sd_stat = SD_WRITE(TM_interleave_data,FSC_science+1,1); //sd_write returns ack, for now not included
ee12b079 268:ded5306a1fd1 1227 if(sd_stat)
chaithanyarss 290:3159ff1081a2 1228 {
chaithanyarss 290:3159ff1081a2 1229 gPC.puts("sd write fail");
chaithanyarss 290:3159ff1081a2 1230 }
prasanthbj05 266:ae588e75cfa4 1231 position_tm_frame[id] = position_tm_starting[id];
ee12b079 268:ded5306a1fd1 1232 frames[id][4] = (length - j)+position_tm_starting[id];
prasanthbj05 266:ae588e75cfa4 1233 }
ee12b079 93:4d76de54a699 1234 }
ee12b079 268:ded5306a1fd1 1235 #if scpz_last
chaithanyarss 290:3159ff1081a2 1236 //gPC.printf("\n\rPrinting the last SCP_TM frame");
ee12b079 268:ded5306a1fd1 1237 //gPC.printf("\n\n\rPosition of tm_pointer: %d",position_tm_frame[id]);
ee12b079 268:ded5306a1fd1 1238 while(position_tm_frame[id]<132){
ee12b079 268:ded5306a1fd1 1239 frames[id][position_tm_frame[id]] = 0;
ee12b079 268:ded5306a1fd1 1240 position_tm_frame[id]++;
ee12b079 268:ded5306a1fd1 1241 }
chaithanyarss 290:3159ff1081a2 1242 if(position_tm_frame[id] == 132) //space full in the frame bro
chaithanyarss 290:3159ff1081a2 1243 {
chaithanyarss 290:3159ff1081a2 1244 //gPC.printf("\n\rSCP_TM frame full. Length of current SCP packet = %d",j);
ee12b079 268:ded5306a1fd1 1245 pointer = frames[id];
chaithanyarss 290:3159ff1081a2 1246 space = adjust(1,0,pointer,8);
chaithanyarss 290:3159ff1081a2 1247 space = adjust(4,1,pointer,space);
chaithanyarss 290:3159ff1081a2 1248 FSC_science = FSC_CURRENT[1];
chaithanyarss 290:3159ff1081a2 1249 //gPC.printf("1 = 0x%X",FSC_science);
chaithanyarss 290:3159ff1081a2 1250
chaithanyarss 290:3159ff1081a2 1251 #if debug_fsc
chaithanyarss 290:3159ff1081a2 1252 frames[id][1] = (FSC_science>>16)&0xff;
chaithanyarss 290:3159ff1081a2 1253 frames[id][2] = (FSC_science>>8)&0xff;
chaithanyarss 290:3159ff1081a2 1254 frames[id][3] = (FSC_science)&0xff;
chaithanyarss 290:3159ff1081a2 1255 test_fsc[1]++;
chaithanyarss 290:3159ff1081a2 1256 #endif
chaithanyarss 290:3159ff1081a2 1257 #if !debug_fsc
chaithanyarss 290:3159ff1081a2 1258 frames[id][1] = (FSC_science>>16)&0xff;
chaithanyarss 290:3159ff1081a2 1259 frames[id][2] = (FSC_science>>8)&0xff;
chaithanyarss 290:3159ff1081a2 1260 frames[id][3] = (FSC_science)&0xff;
chaithanyarss 290:3159ff1081a2 1261 #endif
chaithanyarss 290:3159ff1081a2 1262
ee12b079 268:ded5306a1fd1 1263 temp_crc = crc16_gen(frames[id],132);
ee12b079 268:ded5306a1fd1 1264 frames[id][132] = temp_crc>>8;
ee12b079 268:ded5306a1fd1 1265 frames[id][133] = temp_crc & 0xff;
chaithanyarss 290:3159ff1081a2 1266 //gPC.printf("\n\rFirst head pointer contents: 0x%02X",frames[id][frames[id][4]]);
chaithanyarss 290:3159ff1081a2 1267 //gPC.printf("\n\rPrinting SCP_TM\n\r{");
chaithanyarss 290:3159ff1081a2 1268 gPC.printf("\n\r{");
ee12b079 268:ded5306a1fd1 1269 for(uint8_t z=0;z<134;z++){
chaithanyarss 290:3159ff1081a2 1270 gPC.printf("%02X",frames[id][z]);
ee12b079 268:ded5306a1fd1 1271 }
ee12b079 268:ded5306a1fd1 1272 gPC.printf("}\n\r");
chaithanyarss 290:3159ff1081a2 1273 position_tm_frame[id] = position_tm_starting[id];
ee12b079 268:ded5306a1fd1 1274 }
chaithanyarss 290:3159ff1081a2 1275 #endif
spacelab 306:7c3872365d58 1276 gPC.printf("fsc = %u, %u,%u\n\r", FSC_CURRENT[1],FSC_CURRENT[2],FSC_CURRENT[3]);
spacelab 306:7c3872365d58 1277 //gPC.printf("\n\rEndSRP");
spacelab 307:6ed5535ac465 1278 // SCI_LED1 = !SCI_LED1;
spacelab 307:6ed5535ac465 1279 SCI_LED1 = 0;
spacelab 307:6ed5535ac465 1280
spacelab 307:6ed5535ac465 1281
prasanthbj05 266:ae588e75cfa4 1282 }