11th feb i2c checking chaitu's code
Dependencies: SimpleDMA eeprom mbed-rtos mbed
Fork of CDMS_CODE_FM_28JAN2017 by
Compression.h@346:204497974293, 2017-01-13 (annotated)
- Committer:
- samp1234
- Date:
- Fri Jan 13 08:00:33 2017 +0000
- Revision:
- 346:204497974293
- Parent:
- 342:77b0d59897f7
- Child:
- 347:2517c9f6bb4f
HK SD write moved to Science, Timer restart in science thread, SD_write of compressed data commented, PL_GPIO1_Status (pin71) used for signalling PL for DMA data transfer.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chaithanyarss | 331:1943be3fd178 | 1 | /*-----------------------------------------to_do_compression.h--------------------------------------------------------------- |
prasanthbj05 | 266:ae588e75cfa4 | 2 | |
chaithanyarss | 331:1943be3fd178 | 3 | -> SD_Write error to be checked(refer to flowchart) |
chaithanyarss | 331:1943be3fd178 | 4 | -> compression algo not yet changed |
chaithanyarss | 331:1943be3fd178 | 5 | -> inform Nandu that in extreme data conservation mode alone, even if pzf,ezf=1 the bins are present but have junk values |
chaithanyarss | 331:1943be3fd178 | 6 | -> attitude tag not updated anywhere |
chaithanyarss | 331:1943be3fd178 | 7 | -> packet_pp to be verified |
chaithanyarss | 331:1943be3fd178 | 8 | -----------------------------------------------------------------------------------------------------------------------------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 9 | |
chaithanyarss | 331:1943be3fd178 | 10 | //last updated on 18 Dec 2016 |
chaithanyarss | 331:1943be3fd178 | 11 | |
prasanthbj05 | 266:ae588e75cfa4 | 12 | /*#include <iostream> |
prasanthbj05 | 266:ae588e75cfa4 | 13 | #include "stdio.h" |
prasanthbj05 | 266:ae588e75cfa4 | 14 | #include "crc.h" |
prasanthbj05 | 266:ae588e75cfa4 | 15 | #include "interleave.h" |
prasanthbj05 | 266:ae588e75cfa4 | 16 | #include "Convolution.h" |
prasanthbj05 | 266:ae588e75cfa4 | 17 | #include "bitset"*/ |
prasanthbj05 | 266:ae588e75cfa4 | 18 | //using namespace std; |
prasanthbj05 | 266:ae588e75cfa4 | 19 | |
prasanthbj05 | 266:ae588e75cfa4 | 20 | //reading functions 2byte, 4byte |
ee12b079 | 278:1d837d6dfb6e | 21 | #define srpz 0 |
ee12b079 | 278:1d837d6dfb6e | 22 | #define scpz 0 |
chaithanyarss | 290:3159ff1081a2 | 23 | #define scpz_last 0 |
chaithanyarss | 290:3159ff1081a2 | 24 | #define srpz_last 0 |
chaithanyarss | 290:3159ff1081a2 | 25 | #define debug_fsc 0 |
chaithanyarss | 331:1943be3fd178 | 26 | #define debug_time 0 //used for testing without rtc, assigns constant time to all frames |
chaithanyarss | 331:1943be3fd178 | 27 | #define debug_dma 0 //byte reading order in dma, used to read test_cases 4 to 16 since they're in the wrong order |
chaithanyarss | 331:1943be3fd178 | 28 | #define test_science 0 |
chaithanyarss | 331:1943be3fd178 | 29 | #define tabulation 0 |
samp1234 | 346:204497974293 | 30 | uint8_t HK_timer_toggle = 0; |
samp1234 | 346:204497974293 | 31 | |
samp1234 | 346:204497974293 | 32 | Timer timer_test; |
prasanthbj05 | 266:ae588e75cfa4 | 33 | |
chaithanyarss | 290:3159ff1081a2 | 34 | #if debug_dma |
chaithanyarss | 290:3159ff1081a2 | 35 | uint16_t read_2byte(uint8_t* ptr) |
chaithanyarss | 290:3159ff1081a2 | 36 | { |
chaithanyarss | 290:3159ff1081a2 | 37 | uint16_t output = (((uint16_t )(*(ptr+1)))<<8); |
chaithanyarss | 290:3159ff1081a2 | 38 | output += (((uint16_t)(*ptr))); |
chaithanyarss | 290:3159ff1081a2 | 39 | return output; |
chaithanyarss | 290:3159ff1081a2 | 40 | } |
chaithanyarss | 290:3159ff1081a2 | 41 | uint32_t read_4byte(uint8_t* ptr) |
chaithanyarss | 290:3159ff1081a2 | 42 | { |
chaithanyarss | 290:3159ff1081a2 | 43 | uint32_t output = (uint32_t)(*(ptr+3))<<24; |
chaithanyarss | 290:3159ff1081a2 | 44 | output += (uint32_t)(*(ptr+2)<<16); |
chaithanyarss | 290:3159ff1081a2 | 45 | output += (uint32_t)(*(ptr+1)<<8); |
chaithanyarss | 290:3159ff1081a2 | 46 | output += (uint32_t)(*(ptr)); |
chaithanyarss | 290:3159ff1081a2 | 47 | return output; |
chaithanyarss | 290:3159ff1081a2 | 48 | } |
chaithanyarss | 290:3159ff1081a2 | 49 | #endif |
chaithanyarss | 290:3159ff1081a2 | 50 | #if !debug_dma |
prasanthbj05 | 266:ae588e75cfa4 | 51 | uint16_t read_2byte(uint8_t* ptr) |
prasanthbj05 | 266:ae588e75cfa4 | 52 | { |
prasanthbj05 | 266:ae588e75cfa4 | 53 | uint16_t output = (uint8_t ) *(ptr+1); |
prasanthbj05 | 266:ae588e75cfa4 | 54 | output += ( (uint8_t )(*ptr) ) << 8; |
ee12b079 | 93:4d76de54a699 | 55 | return output; |
ee12b079 | 93:4d76de54a699 | 56 | } |
prasanthbj05 | 266:ae588e75cfa4 | 57 | uint32_t read_4byte(uint8_t* ptr) |
prasanthbj05 | 266:ae588e75cfa4 | 58 | { |
prasanthbj05 | 266:ae588e75cfa4 | 59 | uint32_t output = (uint32_t) (*(ptr+3)); |
prasanthbj05 | 266:ae588e75cfa4 | 60 | output += (uint32_t)(*(ptr+2)<<8); |
prasanthbj05 | 266:ae588e75cfa4 | 61 | output += (uint32_t)(*(ptr+1)<<16); |
prasanthbj05 | 266:ae588e75cfa4 | 62 | output += (uint32_t)(*(ptr)<<24); |
prasanthbj05 | 266:ae588e75cfa4 | 63 | return output; |
prasanthbj05 | 266:ae588e75cfa4 | 64 | } |
chaithanyarss | 290:3159ff1081a2 | 65 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 66 | uint8_t adjust(uint8_t size, uint8_t data, uint8_t* ptr , uint8_t space) |
prasanthbj05 | 266:ae588e75cfa4 | 67 | { |
ee12b079 | 93:4d76de54a699 | 68 | space = space&0x0f; |
ee12b079 | 171:31bdf83591a1 | 69 | if(space == 8) *ptr = 0; |
ee12b079 | 93:4d76de54a699 | 70 | data = data&((1<<size)-1); |
ee12b079 | 93:4d76de54a699 | 71 | if(space >= size){ |
ee12b079 | 93:4d76de54a699 | 72 | *ptr += data<<(space-size); |
ee12b079 | 93:4d76de54a699 | 73 | if(space - size == 0){ |
ee12b079 | 93:4d76de54a699 | 74 | return 0x18; |
ee12b079 | 93:4d76de54a699 | 75 | }else{ |
ee12b079 | 93:4d76de54a699 | 76 | return space-size; |
shreeshas95 | 1:a0055b3280c8 | 77 | } |
ee12b079 | 93:4d76de54a699 | 78 | }else{ |
ee12b079 | 93:4d76de54a699 | 79 | ptr[0] += data>>(size-space); |
ee12b079 | 93:4d76de54a699 | 80 | ptr[1] = (data<<(8-(size-space)))&0xff ; |
ee12b079 | 93:4d76de54a699 | 81 | return 0x10 + 8-(size - space); |
ee12b079 | 93:4d76de54a699 | 82 | } |
ee12b079 | 93:4d76de54a699 | 83 | } |
prasanthbj05 | 266:ae588e75cfa4 | 84 | int compress (int data, int x, int y) //to be compressed with scheme (msb x)*4^y ; |
prasanthbj05 | 266:ae588e75cfa4 | 85 | { |
prasanthbj05 | 266:ae588e75cfa4 | 86 | for(int i = 0 ; i < (1<<y) ; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 87 | { |
prasanthbj05 | 266:ae588e75cfa4 | 88 | if(data <= ( (1<<x)-1) * (1<<(2*i)) ) |
prasanthbj05 | 266:ae588e75cfa4 | 89 | { |
ee12b079 | 93:4d76de54a699 | 90 | return ( ((data>>i*2)<<y) + i); |
shreeshas95 | 1:a0055b3280c8 | 91 | } |
ee12b079 | 93:4d76de54a699 | 92 | } |
chaithanyarss | 331:1943be3fd178 | 93 | if ( data > (( (1<<x)-1) * (1<<(2*((1<<y)-1)))) ) //if value of data is more than that can be stored by compressed bits then return maximum value |
prasanthbj05 | 266:ae588e75cfa4 | 94 | { |
prasanthbj05 | 266:ae588e75cfa4 | 95 | //cout <<"compression exception"<<endl; |
chaithanyarss | 331:1943be3fd178 | 96 | return (1<<(x+y))-1; //maximum value is nothing but a number with(x+y) bits with all 1's |
ee12b079 | 93:4d76de54a699 | 97 | } |
ee12b079 | 93:4d76de54a699 | 98 | } |
chaithanyarss | 331:1943be3fd178 | 99 | int compress2 (int data, int x, int y) //to be compressed with scheme (msb x)*8^y; |
chaithanyarss | 331:1943be3fd178 | 100 | { |
chaithanyarss | 331:1943be3fd178 | 101 | for(int i = 0 ; i < (1<<y) ; i++) |
chaithanyarss | 331:1943be3fd178 | 102 | { |
chaithanyarss | 331:1943be3fd178 | 103 | if(data <= ( (1<<x)-1) * (1<<(3*i)) ) |
chaithanyarss | 331:1943be3fd178 | 104 | { |
chaithanyarss | 331:1943be3fd178 | 105 | return ( ((data>>i*3)<<y) + i); |
chaithanyarss | 331:1943be3fd178 | 106 | } |
chaithanyarss | 331:1943be3fd178 | 107 | } |
chaithanyarss | 331:1943be3fd178 | 108 | if ( data > (( (1<<x)-1) * (1<<(3*((1<<y)-1)))) ) //if value of data is more than that can be stored by compressed bits then return maximum value |
chaithanyarss | 331:1943be3fd178 | 109 | { |
chaithanyarss | 331:1943be3fd178 | 110 | //cout <<"compression exception"<<endl; |
chaithanyarss | 331:1943be3fd178 | 111 | return (1<<(x+y))-1; //maximum value is nothing but a number with(x+y) bits with all 1's |
chaithanyarss | 331:1943be3fd178 | 112 | } |
chaithanyarss | 331:1943be3fd178 | 113 | } |
ee12b079 | 93:4d76de54a699 | 114 | |
prasanthbj05 | 266:ae588e75cfa4 | 115 | //--------------------------------------------------------beacon |
prasanthbj05 | 266:ae588e75cfa4 | 116 | uint8_t beacon_array[134]; |
prasanthbj05 | 266:ae588e75cfa4 | 117 | uint8_t beacon_cntr = 1; |
prasanthbj05 | 266:ae588e75cfa4 | 118 | uint8_t *beacon_ptr; |
prasanthbj05 | 266:ae588e75cfa4 | 119 | //--------------------------------------------------------beacon |
ee12b079 | 93:4d76de54a699 | 120 | |
prasanthbj05 | 266:ae588e75cfa4 | 121 | //variable declarations |
prasanthbj05 | 266:ae588e75cfa4 | 122 | 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 | 123 | uint32_t sfp_bin[52] , scp_bin[52]; //storing the bin values. |
prasanthbj05 | 266:ae588e75cfa4 | 124 | 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 | 125 | 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 | 126 | 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 | 127 | uint32_t scp_sfp_threshold_m0_2[3] = {245760,65472,65472}; |
prasanthbj05 | 266:ae588e75cfa4 | 128 | 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 | 129 | 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 | 130 | uint8_t frames[3][134] = {0}; |
ee12b079 | 171:31bdf83591a1 | 131 | uint8_t position_tm_frame[3] = {8,11,5} , position_tm_starting[3] = {8,11,5}; //{sc,sf-bt,sf-at} |
ee12b079 | 171:31bdf83591a1 | 132 | uint8_t id; //sf = 0,sc-at = 1,sc-bt = 2; |
ee12b079 | 171:31bdf83591a1 | 133 | uint8_t TM_interleave_data[512] , TM_convoluted_data[270] = {0}; |
prasanthbj05 | 266:ae588e75cfa4 | 134 | uint64_t proton_scp_sum,electron_scp_sum,FSC_science; |
prasanthbj05 | 266:ae588e75cfa4 | 135 | uint16_t temp_crc; |
prasanthbj05 | 266:ae588e75cfa4 | 136 | uint32_t debug_cntr, size,space,length; |
ee12b079 | 171:31bdf83591a1 | 137 | uint8_t *ptr ,* pointer; |
prasanthbj05 | 266:ae588e75cfa4 | 138 | uint64_t sci_time = 0, time_prev_scp = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 139 | uint32_t attitude = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 140 | uint32_t beacon_threshold[9] = {114688,245760,245760,245760,245760,114688,114688,65472,65472}; |
ee12b079 | 93:4d76de54a699 | 141 | |
chaithanyarss | 290:3159ff1081a2 | 142 | /*----------------------------temporary counters used for testing purposes---------------------------*/ |
chaithanyarss | 331:1943be3fd178 | 143 | uint32_t test_fsc[4]={0,0,0,0}; |
chaithanyarss | 290:3159ff1081a2 | 144 | /*---------------------------------------------------------------------------------------------------*/ |
chaithanyarss | 290:3159ff1081a2 | 145 | |
chaithanyarss | 290:3159ff1081a2 | 146 | |
prasanthbj05 | 266:ae588e75cfa4 | 147 | Convolution ConvObj; |
prasanthbj05 | 266:ae588e75cfa4 | 148 | void convolution (uint8_t * ptr){ |
prasanthbj05 | 266:ae588e75cfa4 | 149 | ConvObj.convolutionEncode(ptr, TM_convoluted_data); |
prasanthbj05 | 266:ae588e75cfa4 | 150 | ConvObj.convolutionEncode(ptr + 67, TM_convoluted_data + 135); |
prasanthbj05 | 266:ae588e75cfa4 | 151 | } |
chaithanyarss | 331:1943be3fd178 | 152 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 153 | char srp_calibrated[][34] = { //names of different bins in calibrated mode, refer to excel sheet having testcases |
chaithanyarss | 331:1943be3fd178 | 154 | "NA", //packet sequnce count (not important here) |
chaithanyarss | 331:1943be3fd178 | 155 | "NA", //science data mode + compression mode (not important here) |
chaithanyarss | 331:1943be3fd178 | 156 | "proton energy", |
chaithanyarss | 331:1943be3fd178 | 157 | "electron energy", |
chaithanyarss | 331:1943be3fd178 | 158 | "Ion dEdX response", |
chaithanyarss | 331:1943be3fd178 | 159 | "Ion bulk response", |
chaithanyarss | 331:1943be3fd178 | 160 | "proton angles [0,40]", |
chaithanyarss | 331:1943be3fd178 | 161 | "proton angles [40,50]", |
chaithanyarss | 331:1943be3fd178 | 162 | "proton angles [50,60]", |
chaithanyarss | 331:1943be3fd178 | 163 | "proton angles [60,70]", |
chaithanyarss | 331:1943be3fd178 | 164 | "proton angles [70,80]", |
chaithanyarss | 331:1943be3fd178 | 165 | "electron angles [0,60]", |
chaithanyarss | 331:1943be3fd178 | 166 | "high energy protons and electrons", |
chaithanyarss | 331:1943be3fd178 | 167 | "proton energy overlap events", |
chaithanyarss | 331:1943be3fd178 | 168 | "dEdX & bulk & Veto counts", |
chaithanyarss | 331:1943be3fd178 | 169 | "dEdX fast counts", |
chaithanyarss | 331:1943be3fd178 | 170 | "bulk fast counts", |
chaithanyarss | 331:1943be3fd178 | 171 | "veto fast counts" |
chaithanyarss | 331:1943be3fd178 | 172 | }; |
chaithanyarss | 331:1943be3fd178 | 173 | char srp_scattered[][33] = { //names of different bins in scattered mode, refer to excel sheet having testcases |
chaithanyarss | 331:1943be3fd178 | 174 | "NA", |
chaithanyarss | 331:1943be3fd178 | 175 | "NA", |
chaithanyarss | 331:1943be3fd178 | 176 | "dEdX & bulk & not veto 2d dEdX..", |
chaithanyarss | 331:1943be3fd178 | 177 | "dEdX & bulk & veto counts", |
chaithanyarss | 331:1943be3fd178 | 178 | "dEdX fast counts", |
chaithanyarss | 331:1943be3fd178 | 179 | "bulk fast counts", |
chaithanyarss | 331:1943be3fd178 | 180 | "veto fast counts" |
chaithanyarss | 331:1943be3fd178 | 181 | }; |
chaithanyarss | 331:1943be3fd178 | 182 | #endif |
chaithanyarss | 331:1943be3fd178 | 183 | uint32_t data_srp_calibrated[] = { // this data will be copied 60 times(except for the first two elements which are included only at the start of dma) and to fill the dma |
chaithanyarss | 331:1943be3fd178 | 184 | 1, //packet sequence count |
chaithanyarss | 331:1943be3fd178 | 185 | 0, //last bit for calibrated mode and next two bits for compression mode |
chaithanyarss | 331:1943be3fd178 | 186 | 20, //proton energy(18 bins) |
chaithanyarss | 331:1943be3fd178 | 187 | 60, //Electron energy(6 bins) |
chaithanyarss | 331:1943be3fd178 | 188 | 700, //Ion dEdX response |
chaithanyarss | 331:1943be3fd178 | 189 | 600, //Ion bulk response |
chaithanyarss | 331:1943be3fd178 | 190 | 100, //proton angles [0,40] |
chaithanyarss | 331:1943be3fd178 | 191 | 200, //proton angles [40,50] |
chaithanyarss | 331:1943be3fd178 | 192 | 500, //proton angles [50,60] |
chaithanyarss | 331:1943be3fd178 | 193 | 600, //proton angles [60,70] |
chaithanyarss | 331:1943be3fd178 | 194 | 720, //proton angles [70,80] |
chaithanyarss | 331:1943be3fd178 | 195 | 246, //electron angles [0,60] |
chaithanyarss | 331:1943be3fd178 | 196 | 10, //high energy protons and electrons |
chaithanyarss | 331:1943be3fd178 | 197 | 250, //proton energy overlap events |
chaithanyarss | 331:1943be3fd178 | 198 | 120, //dEdX & bulk & Veto counts |
chaithanyarss | 331:1943be3fd178 | 199 | 8129, //dEdX fast counts |
chaithanyarss | 331:1943be3fd178 | 200 | 3000, //bulk fast counts |
chaithanyarss | 331:1943be3fd178 | 201 | 4000 //veto fast counts |
chaithanyarss | 331:1943be3fd178 | 202 | }; |
chaithanyarss | 331:1943be3fd178 | 203 | /*uint8_t calib_sfp_at_com[] = {0,0,0,0,700,600,100,200,500,600,720,246,10,250,120,3500,3000,4000}; |
chaithanyarss | 331:1943be3fd178 | 204 | uint8_t data_sfp_calib_at[][2] = { |
chaithanyarss | 331:1943be3fd178 | 205 | {20,300} //64 bytes |
chaithanyarss | 331:1943be3fd178 | 206 | {300,0}, //58 bytes |
chaithanyarss | 331:1943be3fd178 | 207 | {0,300}, //43 bytes |
chaithanyarss | 331:1943be3fd178 | 208 | {0,0} //36 bytes |
chaithanyarss | 331:1943be3fd178 | 209 | }; //36 bytes |
chaithanyarss | 331:1943be3fd178 | 210 | uint16_t packet_insert_dma(uint8_t *head,uint8_t size,uint16_t j) |
chaithanyarss | 331:1943be3fd178 | 211 | { |
chaithanyarss | 331:1943be3fd178 | 212 | if(size==64){ |
chaithanyarss | 331:1943be3fd178 | 213 | for(count=0;count<18;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 214 | head[j] = (calib_sfp_at_com[0][0]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 215 | head[j+1] = (calib_sfp_at_com[0][0]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 216 | } |
chaithanyarss | 331:1943be3fd178 | 217 | for(count=0;count<6;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 218 | head[j] = (calib_sfp_at_com[0][1]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 219 | head[j+1] = (calib_sfp_at_com[0][1]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 220 | } |
chaithanyarss | 331:1943be3fd178 | 221 | } |
chaithanyarss | 331:1943be3fd178 | 222 | else if(size==58){ |
chaithanyarss | 331:1943be3fd178 | 223 | for(count=0;count<18;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 224 | head[j] = (calib_sfp_at_com[1][0]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 225 | head[j+1] = (calib_sfp_at_com[1][0]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 226 | } |
chaithanyarss | 331:1943be3fd178 | 227 | for(count=0;count<6;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 228 | head[j] = (calib_sfp_at_com[1][1]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 229 | head[j+1] = (calib_sfp_at_com[1][1]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 230 | } |
chaithanyarss | 331:1943be3fd178 | 231 | } |
chaithanyarss | 331:1943be3fd178 | 232 | else if(size==43){ |
chaithanyarss | 331:1943be3fd178 | 233 | for(count=0;count<18;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 234 | head[j] = (calib_sfp_at_com[2][0]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 235 | head[j+1] = (calib_sfp_at_com[2][0]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 236 | } |
chaithanyarss | 331:1943be3fd178 | 237 | for(count=0;count<6;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 238 | head[j] = (calib_sfp_at_com[2][1]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 239 | head[j+1] = (calib_sfp_at_com[2][1]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 240 | } |
chaithanyarss | 331:1943be3fd178 | 241 | } |
chaithanyarss | 331:1943be3fd178 | 242 | else if(size==36){ |
chaithanyarss | 331:1943be3fd178 | 243 | for(count=0;count<18;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 244 | head[j] = (calib_sfp_at_com[3][0]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 245 | head[j+1] = (calib_sfp_at_com[3][0]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 246 | } |
chaithanyarss | 331:1943be3fd178 | 247 | for(count=0;count<6;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 248 | head[j] = (calib_sfp_at_com[3][1]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 249 | head[j+1] = (calib_sfp_at_com[3][1]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 250 | } |
chaithanyarss | 331:1943be3fd178 | 251 | } |
chaithanyarss | 331:1943be3fd178 | 252 | else{ |
chaithanyarss | 331:1943be3fd178 | 253 | gPC.printf("\n\rError: Invalid length in inserting packet DMA"); |
chaithanyarss | 331:1943be3fd178 | 254 | return 3; |
chaithanyarss | 331:1943be3fd178 | 255 | } |
chaithanyarss | 331:1943be3fd178 | 256 | for(count=0;count<4;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 257 | head[j] = (calib_sfp_at_com[4]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 258 | head[j+1] = (calib_sfp_at_com[4]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 259 | } |
chaithanyarss | 331:1943be3fd178 | 260 | for(count=0;count<4;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 261 | head[j] = (calib_sfp_at_com[5]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 262 | head[j+1] = (calib_sfp_at_com[5]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 263 | } |
chaithanyarss | 331:1943be3fd178 | 264 | for(uint8_t count2 = 0;count2<6;count2++) |
chaithanyarss | 331:1943be3fd178 | 265 | for(uint8_t count=0;count<2;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 266 | head[j] = (calib_sfp_at_com[6+count2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 267 | head[j+1] = (calib_sfp_at_com[6+count2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 268 | } |
chaithanyarss | 331:1943be3fd178 | 269 | head[j++] = (calib_sfp_at_com[12]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 270 | head[j++] = (calib_sfp_at_com[12]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 271 | for(count=0;count<3;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 272 | head[j] = (calib_sfp_at_com[13]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 273 | head[j+1] = (calib_sfp_at_com[13]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 274 | } |
chaithanyarss | 331:1943be3fd178 | 275 | for(uint8_t count2 =0;count2<4;count2++) |
chaithanyarss | 331:1943be3fd178 | 276 | for(uint8_t count=0;count<1;count++,j+=4){ |
chaithanyarss | 331:1943be3fd178 | 277 | head[j] = (calib_sfp_at_com[14+count2]>>24) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 278 | head[j+1] = (calib_sfp_at_com[14+count2]>>16) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 279 | head[j+2] = (calib_sfp_at_com[14+count2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 280 | head[j+3] = (calib_sfp_at_com[14+count2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 281 | } |
chaithanyarss | 331:1943be3fd178 | 282 | return j; |
chaithanyarss | 331:1943be3fd178 | 283 | } |
chaithanyarss | 331:1943be3fd178 | 284 | void generate_dma_tmid2(uint8_t *head) |
chaithanyarss | 331:1943be3fd178 | 285 | { |
chaithanyarss | 331:1943be3fd178 | 286 | uint8_t dma_index = 3; |
chaithanyarss | 331:1943be3fd178 | 287 | head[0] = 0; |
chaithanyarss | 331:1943be3fd178 | 288 | head[1] = 1; |
chaithanyarss | 331:1943be3fd178 | 289 | head[2] = 0; |
chaithanyarss | 331:1943be3fd178 | 290 | for(uint8_t count=1;count<=2;count++){ |
chaithanyarss | 331:1943be3fd178 | 291 | dma_index = packet_insert_dma(head,64,dma_index); |
chaithanyarss | 331:1943be3fd178 | 292 | dma_index = packet_insert_dma(head,58,dma_index); |
chaithanyarss | 331:1943be3fd178 | 293 | dma_index = packet_insert_dma(head,43,dma_index); |
chaithanyarss | 331:1943be3fd178 | 294 | dma_index = packet_insert_dma(head,36,dma_index); |
chaithanyarss | 331:1943be3fd178 | 295 | } |
chaithanyarss | 331:1943be3fd178 | 296 | } |
chaithanyarss | 331:1943be3fd178 | 297 | */ |
chaithanyarss | 331:1943be3fd178 | 298 | //uint8_t data_sfp_scat_at10[] ={}; |
chaithanyarss | 331:1943be3fd178 | 299 | //uint8_t data_sfp_scat_at |
chaithanyarss | 331:1943be3fd178 | 300 | /*uint32_t data_srp_calibrated2[] = { // this data will be copied 60 times(except for the first two elements which are included only at the start of dma) and to fill the dma |
chaithanyarss | 331:1943be3fd178 | 301 | 1, //packet sequence count |
chaithanyarss | 331:1943be3fd178 | 302 | 0, //last bit for calibrated mode and next two bits for compression mode |
chaithanyarss | 331:1943be3fd178 | 303 | 1, //proton energy(18 bins) |
chaithanyarss | 331:1943be3fd178 | 304 | 60, //Electron energy(6 bins) |
chaithanyarss | 331:1943be3fd178 | 305 | 700, //Ion dEdX response |
chaithanyarss | 331:1943be3fd178 | 306 | 600, //Ion bulk response |
chaithanyarss | 331:1943be3fd178 | 307 | 100, //proton angles [0,40] |
chaithanyarss | 331:1943be3fd178 | 308 | 200, //proton angles [40,50] |
chaithanyarss | 331:1943be3fd178 | 309 | 500, //proton angles [50,60] |
chaithanyarss | 331:1943be3fd178 | 310 | 600, //proton angles [60,70] |
chaithanyarss | 331:1943be3fd178 | 311 | 720, //proton angles [70,80] |
chaithanyarss | 331:1943be3fd178 | 312 | 246, //electron angles [0,60] |
chaithanyarss | 331:1943be3fd178 | 313 | 10, //high energy protons and electrons |
chaithanyarss | 331:1943be3fd178 | 314 | 250, //proton energy overlap events |
chaithanyarss | 331:1943be3fd178 | 315 | 120, //dEdX & bulk & Veto counts |
chaithanyarss | 331:1943be3fd178 | 316 | 3500, //dEdX fast counts |
chaithanyarss | 331:1943be3fd178 | 317 | 3000, //bulk fast counts |
chaithanyarss | 331:1943be3fd178 | 318 | 4000 //veto fast counts |
chaithanyarss | 331:1943be3fd178 | 319 | };*/ |
chaithanyarss | 331:1943be3fd178 | 320 | uint32_t data_srp_scattered[] = {// this data will be copied 60 times(except for the first two elements which are included only at the start of dma) and to fill the dma |
chaithanyarss | 331:1943be3fd178 | 321 | 1, //packet sequence count |
chaithanyarss | 331:1943be3fd178 | 322 | 5, //last bit for scattered plot mode and next two bits for compression mode |
chaithanyarss | 331:1943be3fd178 | 323 | 1980, //dEdX & bulk & not veto 2d dEdX bulk response |
chaithanyarss | 331:1943be3fd178 | 324 | 10, //dEdX & bulk & veto counts |
chaithanyarss | 331:1943be3fd178 | 325 | 8100, //dEdX fast counts |
chaithanyarss | 331:1943be3fd178 | 326 | 1500, //bulk fast counts |
chaithanyarss | 331:1943be3fd178 | 327 | 10295 //veto fast counts |
chaithanyarss | 331:1943be3fd178 | 328 | }; |
chaithanyarss | 331:1943be3fd178 | 329 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 330 | uint8_t dma_sfp_at_count=0,dma_scp_at_count=0,calib_thres_index[16][60],scat_thres_index[5][60],calib_thres_index_scp[16],scat_thres_index_scp[5]; |
chaithanyarss | 331:1943be3fd178 | 331 | uint8_t calib_thres_subindex[16],scat_thres_subindex[5],thres_scp_index[16],proton_scp_sum_at,electron_scp_sum_at,sfp_mode_count[2],scp_mode_count[5]; |
chaithanyarss | 331:1943be3fd178 | 332 | #endif |
chaithanyarss | 331:1943be3fd178 | 333 | #if tabulation |
chaithanyarss | 331:1943be3fd178 | 334 | uint8_t pack_curr_det,pack_prev_det,pack_split_det= 0,pack_buf[3][70] = {0}; |
chaithanyarss | 331:1943be3fd178 | 335 | uint8_t fsc_incomplete[3]={0},len_prev[3]={0},len_correct[3]={0},len_current; |
ee12b079 | 93:4d76de54a699 | 336 | |
chaithanyarss | 331:1943be3fd178 | 337 | //uint8_t test_tm[3][134] = {0}; |
chaithanyarss | 331:1943be3fd178 | 338 | uint64_t decompress(uint16_t data, uint8_t x,uint8_t y){ //x * 4^y |
chaithanyarss | 331:1943be3fd178 | 339 | uint64_t value = 0; |
chaithanyarss | 331:1943be3fd178 | 340 | value = ((data>>y)&((1<<x)-1))*(1<<(2*(data &((1<<y)-1)))); |
chaithanyarss | 331:1943be3fd178 | 341 | return value; |
chaithanyarss | 331:1943be3fd178 | 342 | } |
chaithanyarss | 331:1943be3fd178 | 343 | uint64_t decompress2(uint16_t data, uint8_t x,uint8_t y){ //x * 8^y for proton and electron angles bins in SCP_AT(calibrated) |
chaithanyarss | 331:1943be3fd178 | 344 | uint64_t value = 0; |
chaithanyarss | 331:1943be3fd178 | 345 | value = ((data>>y)&((1<<x)-1))*(1<<(3*(data &((1<<y)-1)))); |
chaithanyarss | 331:1943be3fd178 | 346 | return value; |
chaithanyarss | 331:1943be3fd178 | 347 | } |
chaithanyarss | 331:1943be3fd178 | 348 | uint8_t calc_length(uint8_t tmid,uint8_t srp_mode,uint8_t comp_opt,uint8_t zf){ |
chaithanyarss | 331:1943be3fd178 | 349 | uint16_t length; |
chaithanyarss | 331:1943be3fd178 | 350 | if(tmid==1){ |
chaithanyarss | 331:1943be3fd178 | 351 | if(srp_mode == 0 && (comp_opt>>1 & 0x03) == 0){ |
chaithanyarss | 331:1943be3fd178 | 352 | if((comp_opt&0x01) == 0){ |
chaithanyarss | 331:1943be3fd178 | 353 | length = 228; |
chaithanyarss | 331:1943be3fd178 | 354 | if(((zf>>1)&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 355 | length += 121; |
chaithanyarss | 331:1943be3fd178 | 356 | if((zf&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 357 | length +=41; |
chaithanyarss | 331:1943be3fd178 | 358 | }else if((comp_opt&0x01) == 1){ |
chaithanyarss | 331:1943be3fd178 | 359 | length = 266; |
chaithanyarss | 331:1943be3fd178 | 360 | if(((zf>>1)&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 361 | length += 136; |
chaithanyarss | 331:1943be3fd178 | 362 | if((zf&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 363 | length += 40; |
chaithanyarss | 331:1943be3fd178 | 364 | } |
chaithanyarss | 331:1943be3fd178 | 365 | }else if(srp_mode == 0 && (comp_opt>>1 & 0x03) == 1){ //data conservation mode |
chaithanyarss | 331:1943be3fd178 | 366 | if((comp_opt&0x01) == 0){ |
chaithanyarss | 331:1943be3fd178 | 367 | length = 94; |
chaithanyarss | 331:1943be3fd178 | 368 | if(((zf>>1)&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 369 | length += 12; |
chaithanyarss | 331:1943be3fd178 | 370 | if((zf&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 371 | length += 12; |
chaithanyarss | 331:1943be3fd178 | 372 | }else if((comp_opt&0x01) == 1){ |
chaithanyarss | 331:1943be3fd178 | 373 | length = 123; |
chaithanyarss | 331:1943be3fd178 | 374 | if(((zf>>1)&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 375 | length += 9; |
chaithanyarss | 331:1943be3fd178 | 376 | if((zf&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 377 | length += 9; |
chaithanyarss | 331:1943be3fd178 | 378 | } |
chaithanyarss | 331:1943be3fd178 | 379 | } |
chaithanyarss | 331:1943be3fd178 | 380 | else if( srp_mode == 1){ |
chaithanyarss | 331:1943be3fd178 | 381 | if((comp_opt&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 382 | length = 368; |
chaithanyarss | 331:1943be3fd178 | 383 | else if((comp_opt&0x01) == 1) |
chaithanyarss | 331:1943be3fd178 | 384 | length = 432; |
chaithanyarss | 331:1943be3fd178 | 385 | } |
chaithanyarss | 331:1943be3fd178 | 386 | else if(((comp_opt>>1 & 0x03)==2)&&(srp_mode==0)) |
chaithanyarss | 331:1943be3fd178 | 387 | { |
chaithanyarss | 331:1943be3fd178 | 388 | if((comp_opt&0x01) == 0){ |
chaithanyarss | 331:1943be3fd178 | 389 | length = 31; |
chaithanyarss | 331:1943be3fd178 | 390 | if(((zf>>1)&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 391 | length += 12; |
chaithanyarss | 331:1943be3fd178 | 392 | if((zf&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 393 | length += 12; |
chaithanyarss | 331:1943be3fd178 | 394 | }else if((comp_opt&0x01) == 1){ |
chaithanyarss | 331:1943be3fd178 | 395 | length = 36; |
chaithanyarss | 331:1943be3fd178 | 396 | if(((zf>>1)&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 397 | length += 9; |
chaithanyarss | 331:1943be3fd178 | 398 | if((zf&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 399 | length += 9; |
chaithanyarss | 331:1943be3fd178 | 400 | } |
chaithanyarss | 331:1943be3fd178 | 401 | } |
chaithanyarss | 331:1943be3fd178 | 402 | else if(((comp_opt>>1 & 0x03)==2)&&(srp_mode==1)) |
chaithanyarss | 331:1943be3fd178 | 403 | { |
chaithanyarss | 331:1943be3fd178 | 404 | length = 56; |
chaithanyarss | 331:1943be3fd178 | 405 | } |
chaithanyarss | 331:1943be3fd178 | 406 | } |
chaithanyarss | 331:1943be3fd178 | 407 | else if(tmid==2){ |
chaithanyarss | 331:1943be3fd178 | 408 | if(srp_mode==0){ |
chaithanyarss | 331:1943be3fd178 | 409 | length = 288; |
chaithanyarss | 331:1943be3fd178 | 410 | if(((zf>>1)&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 411 | length += 170; |
chaithanyarss | 331:1943be3fd178 | 412 | if((zf&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 413 | length += 50; |
chaithanyarss | 331:1943be3fd178 | 414 | } |
chaithanyarss | 331:1943be3fd178 | 415 | else if(srp_mode==1) |
chaithanyarss | 331:1943be3fd178 | 416 | length = 568; |
chaithanyarss | 331:1943be3fd178 | 417 | } |
chaithanyarss | 331:1943be3fd178 | 418 | else if(tmid==3){ |
chaithanyarss | 331:1943be3fd178 | 419 | if(srp_mode==0){ |
chaithanyarss | 331:1943be3fd178 | 420 | length = 241; |
chaithanyarss | 331:1943be3fd178 | 421 | if(((zf>>1)&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 422 | length += 87; |
chaithanyarss | 331:1943be3fd178 | 423 | if((zf&0x01) == 0) |
chaithanyarss | 331:1943be3fd178 | 424 | length += 35; |
chaithanyarss | 331:1943be3fd178 | 425 | } |
chaithanyarss | 331:1943be3fd178 | 426 | else if(srp_mode==1) |
chaithanyarss | 331:1943be3fd178 | 427 | length = 384; |
chaithanyarss | 331:1943be3fd178 | 428 | } |
chaithanyarss | 331:1943be3fd178 | 429 | length = (length%8==0)?(length/8):(length/8)+1; |
chaithanyarss | 331:1943be3fd178 | 430 | return (uint8_t)length; |
chaithanyarss | 331:1943be3fd178 | 431 | } |
chaithanyarss | 331:1943be3fd178 | 432 | uint64_t decode(uint8_t size,uint8_t *space,uint8_t **ptr){ |
chaithanyarss | 331:1943be3fd178 | 433 | /* This function accepts a double pointer, pointing to the header pointer of an array, |
chaithanyarss | 331:1943be3fd178 | 434 | example if TM[135] is a telemetry array, then create a new "temporary" pointer as ptr=&TM and pass &ptr to the function |
chaithanyarss | 331:1943be3fd178 | 435 | Given this pointer and size, this function reads the number of bits(=size) and returns the decimal value and updates (*space). |
chaithanyarss | 331:1943be3fd178 | 436 | "space" is nothing but how many bits have been not been read in the current byte. |
chaithanyarss | 331:1943be3fd178 | 437 | example: when reading an array for the first time,(*space) will be 8 coz none of the bits have been decoded, once we decode a few bits(say 5), then (*space) will be 3 |
chaithanyarss | 331:1943be3fd178 | 438 | This function can be used to decode bins(which have varying number of bits) from telemetry |
chaithanyarss | 331:1943be3fd178 | 439 | */ |
chaithanyarss | 331:1943be3fd178 | 440 | uint64_t data = 0; |
chaithanyarss | 331:1943be3fd178 | 441 | while(size!=0){ |
chaithanyarss | 331:1943be3fd178 | 442 | if((*space)>=size){ |
chaithanyarss | 331:1943be3fd178 | 443 | data |= (((**ptr)>>((*space)-size)) & ((1<<size)-1)); |
chaithanyarss | 331:1943be3fd178 | 444 | (*space) = (*space)-size; |
chaithanyarss | 331:1943be3fd178 | 445 | size = 0; |
chaithanyarss | 331:1943be3fd178 | 446 | } |
chaithanyarss | 331:1943be3fd178 | 447 | else{ |
chaithanyarss | 331:1943be3fd178 | 448 | data |= (((**ptr) & ((1<<(*space))-1))<<(size-(*space))); |
chaithanyarss | 331:1943be3fd178 | 449 | size -= (*space); |
chaithanyarss | 331:1943be3fd178 | 450 | (*space) = 8; |
chaithanyarss | 331:1943be3fd178 | 451 | (*ptr)++; |
chaithanyarss | 331:1943be3fd178 | 452 | } |
chaithanyarss | 331:1943be3fd178 | 453 | } |
chaithanyarss | 331:1943be3fd178 | 454 | return data; |
chaithanyarss | 331:1943be3fd178 | 455 | } |
chaithanyarss | 331:1943be3fd178 | 456 | uint8_t print_packet(uint8_t tmid,uint8_t *ptr) |
chaithanyarss | 331:1943be3fd178 | 457 | { |
chaithanyarss | 331:1943be3fd178 | 458 | //prints each bin values of a packet in a row separated by tab spaces and returns the length of the packet printed |
chaithanyarss | 331:1943be3fd178 | 459 | uint8_t *temp,space; |
chaithanyarss | 331:1943be3fd178 | 460 | uint8_t len = 0; |
chaithanyarss | 331:1943be3fd178 | 461 | temp = ptr; space = 8; |
chaithanyarss | 331:1943be3fd178 | 462 | uint8_t temp_x,srp_mode; //temp_x = header(compression option) |
chaithanyarss | 331:1943be3fd178 | 463 | uint8_t pzf=0,ezf=0; |
chaithanyarss | 331:1943be3fd178 | 464 | if(tmid==1) //SCP packet |
chaithanyarss | 331:1943be3fd178 | 465 | { |
chaithanyarss | 331:1943be3fd178 | 466 | gPC.printf("\n\r%d",decode(1,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 467 | gPC.printf("\t%d",decode(6,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 468 | gPC.printf("\t%d",decode(7,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 469 | gPC.printf("\t%d",decode(4,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 470 | temp_x = decode(3,&space,&temp); |
chaithanyarss | 331:1943be3fd178 | 471 | gPC.printf("\t%d",temp_x); |
chaithanyarss | 331:1943be3fd178 | 472 | srp_mode = decode(1,&space,&temp); |
chaithanyarss | 331:1943be3fd178 | 473 | gPC.printf("\t%d",srp_mode); |
chaithanyarss | 331:1943be3fd178 | 474 | if((temp_x>>1 & 0x03)!=2){ |
chaithanyarss | 331:1943be3fd178 | 475 | gPC.printf("\t%d",decode(24,&space,&temp)); //SFP_AT starting counter not present in extreme conservation mode |
chaithanyarss | 331:1943be3fd178 | 476 | } |
chaithanyarss | 331:1943be3fd178 | 477 | if(srp_mode==0){ //scp calibrated |
chaithanyarss | 331:1943be3fd178 | 478 | pzf = decode(1,&space,&temp); |
chaithanyarss | 331:1943be3fd178 | 479 | ezf = decode(1,&space,&temp); |
chaithanyarss | 331:1943be3fd178 | 480 | gPC.printf("\t%d",pzf); |
chaithanyarss | 331:1943be3fd178 | 481 | gPC.printf("\t%d",ezf); |
chaithanyarss | 331:1943be3fd178 | 482 | len = calc_length(tmid,srp_mode,temp_x,((uint8_t)((pzf<<1)|ezf))); |
chaithanyarss | 331:1943be3fd178 | 483 | if(temp_x==0){ |
chaithanyarss | 331:1943be3fd178 | 484 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 485 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(7,&space,&temp),4,3)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 486 | } |
chaithanyarss | 331:1943be3fd178 | 487 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 488 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(7,&space,&temp),4,3)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 489 | } |
chaithanyarss | 331:1943be3fd178 | 490 | for(uint8_t i=0;i<12;i++){ |
chaithanyarss | 331:1943be3fd178 | 491 | if(i%2==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(5,&space,&temp),2,3)); if(i%2==0){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 492 | } |
chaithanyarss | 331:1943be3fd178 | 493 | } |
chaithanyarss | 331:1943be3fd178 | 494 | if(temp_x==1){ |
chaithanyarss | 331:1943be3fd178 | 495 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 496 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(7,&space,&temp),4,3)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 497 | } |
chaithanyarss | 331:1943be3fd178 | 498 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 499 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(7,&space,&temp),4,3)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 500 | } |
chaithanyarss | 331:1943be3fd178 | 501 | for(uint8_t i=0;i<12;i++){ |
chaithanyarss | 331:1943be3fd178 | 502 | if(i%2==0){gPC.printf("\t");} gPC.printf("%d",decompress2(decode(5,&space,&temp),2,3)); if(i%2==0){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 503 | } |
chaithanyarss | 331:1943be3fd178 | 504 | } |
chaithanyarss | 331:1943be3fd178 | 505 | if(temp_x==0){ //SCP calibrated below threshold |
chaithanyarss | 331:1943be3fd178 | 506 | gPC.printf("\t%d",decompress(decode(6,&space,&temp),3,3)); |
chaithanyarss | 331:1943be3fd178 | 507 | for(uint8_t i=0;i<3;i++){ |
chaithanyarss | 331:1943be3fd178 | 508 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(6,&space,&temp),3,3)); if(i!=2){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 509 | } |
chaithanyarss | 331:1943be3fd178 | 510 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 511 | gPC.printf("\t%d",decompress(decode(7,&space,&temp),4,3)); |
chaithanyarss | 331:1943be3fd178 | 512 | } |
chaithanyarss | 331:1943be3fd178 | 513 | for(uint8_t i=0;i<2;i++) |
chaithanyarss | 331:1943be3fd178 | 514 | gPC.printf("\t%d",decompress(decode(6,&space,&temp),3,3)); |
chaithanyarss | 331:1943be3fd178 | 515 | if(pzf==0){ |
chaithanyarss | 331:1943be3fd178 | 516 | for(uint8_t i=0;i<2;i++){ |
chaithanyarss | 331:1943be3fd178 | 517 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(8,&space,&temp),6,2)); if(i==0){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 518 | } |
chaithanyarss | 331:1943be3fd178 | 519 | for(uint8_t i=0;i<15;i++){ |
chaithanyarss | 331:1943be3fd178 | 520 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(7,&space,&temp),5,2)); if(i!=14){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 521 | } |
chaithanyarss | 331:1943be3fd178 | 522 | } |
chaithanyarss | 331:1943be3fd178 | 523 | else{ |
chaithanyarss | 331:1943be3fd178 | 524 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 525 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 526 | } |
chaithanyarss | 331:1943be3fd178 | 527 | if(ezf==0){ |
chaithanyarss | 331:1943be3fd178 | 528 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),7,2)); |
chaithanyarss | 331:1943be3fd178 | 529 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 530 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(8,&space,&temp),7,2)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 531 | } |
chaithanyarss | 331:1943be3fd178 | 532 | } |
chaithanyarss | 331:1943be3fd178 | 533 | else{ |
chaithanyarss | 331:1943be3fd178 | 534 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 535 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 536 | } |
chaithanyarss | 331:1943be3fd178 | 537 | } |
chaithanyarss | 331:1943be3fd178 | 538 | else if(temp_x==1){ //SCP calibrated above threshold |
chaithanyarss | 331:1943be3fd178 | 539 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 540 | for(uint8_t i=0;i<3;i++){ |
chaithanyarss | 331:1943be3fd178 | 541 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(9,&space,&temp),6,3)); if(i!=2){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 542 | } |
chaithanyarss | 331:1943be3fd178 | 543 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 544 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),9,3)); |
chaithanyarss | 331:1943be3fd178 | 545 | } |
chaithanyarss | 331:1943be3fd178 | 546 | for(uint8_t i=0;i<2;i++){ |
chaithanyarss | 331:1943be3fd178 | 547 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 548 | } |
chaithanyarss | 331:1943be3fd178 | 549 | if(pzf==0){ |
chaithanyarss | 331:1943be3fd178 | 550 | for(uint8_t i=0;i<2;i++){ |
chaithanyarss | 331:1943be3fd178 | 551 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(8,&space,&temp),5,3)); if(i==0){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 552 | } |
chaithanyarss | 331:1943be3fd178 | 553 | for(uint8_t i=0;i<15;i++){ |
chaithanyarss | 331:1943be3fd178 | 554 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(8,&space,&temp),5,3)); if(i!=14){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 555 | } |
chaithanyarss | 331:1943be3fd178 | 556 | } |
chaithanyarss | 331:1943be3fd178 | 557 | else{ |
chaithanyarss | 331:1943be3fd178 | 558 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 559 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 560 | } |
chaithanyarss | 331:1943be3fd178 | 561 | if(ezf==0){ |
chaithanyarss | 331:1943be3fd178 | 562 | gPC.printf("\t%d",decompress(decode(8,&space,&temp),5,3)); |
chaithanyarss | 331:1943be3fd178 | 563 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 564 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(8,&space,&temp),5,3)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 565 | } |
chaithanyarss | 331:1943be3fd178 | 566 | } |
chaithanyarss | 331:1943be3fd178 | 567 | else{ |
chaithanyarss | 331:1943be3fd178 | 568 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 569 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 570 | } |
chaithanyarss | 331:1943be3fd178 | 571 | } |
chaithanyarss | 331:1943be3fd178 | 572 | else if(temp_x ==2){ |
chaithanyarss | 331:1943be3fd178 | 573 | gPC.printf("\t%d",decompress(decode(6,&space,&temp),3,3)); |
chaithanyarss | 331:1943be3fd178 | 574 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 575 | gPC.printf("\t%d",decompress(decode(7,&space,&temp),4,3)); |
chaithanyarss | 331:1943be3fd178 | 576 | } |
chaithanyarss | 331:1943be3fd178 | 577 | gPC.printf("\t%d",decompress(decode(6,&space,&temp),3,3)); |
chaithanyarss | 331:1943be3fd178 | 578 | gPC.printf("\t%d",decompress(decode(6,&space,&temp),3,3)); |
chaithanyarss | 331:1943be3fd178 | 579 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),10,2)); |
chaithanyarss | 331:1943be3fd178 | 580 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),10,2)); |
chaithanyarss | 331:1943be3fd178 | 581 | } |
chaithanyarss | 331:1943be3fd178 | 582 | else if(temp_x==3){ |
chaithanyarss | 331:1943be3fd178 | 583 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 584 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 585 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),9,3)); |
chaithanyarss | 331:1943be3fd178 | 586 | } |
chaithanyarss | 331:1943be3fd178 | 587 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 588 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 589 | } |
chaithanyarss | 331:1943be3fd178 | 590 | } |
chaithanyarss | 331:1943be3fd178 | 591 | else if(temp_x==4){ |
chaithanyarss | 331:1943be3fd178 | 592 | gPC.printf("\t%d",decompress(decode(7,&space,&temp),4,3)); |
chaithanyarss | 331:1943be3fd178 | 593 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),10,2)); |
chaithanyarss | 331:1943be3fd178 | 594 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),10,2)); |
chaithanyarss | 331:1943be3fd178 | 595 | } |
chaithanyarss | 331:1943be3fd178 | 596 | else if(temp_x==5){ |
chaithanyarss | 331:1943be3fd178 | 597 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),9,3)); |
chaithanyarss | 331:1943be3fd178 | 598 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 599 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 600 | } |
chaithanyarss | 331:1943be3fd178 | 601 | } |
chaithanyarss | 331:1943be3fd178 | 602 | else if(srp_mode==1){ //scattered mode |
chaithanyarss | 331:1943be3fd178 | 603 | len = calc_length(tmid,srp_mode,temp_x,0); |
chaithanyarss | 331:1943be3fd178 | 604 | if(temp_x==0){ |
chaithanyarss | 331:1943be3fd178 | 605 | for(uint8_t i=0;i<48;i++){ |
chaithanyarss | 331:1943be3fd178 | 606 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(6,&space,&temp),3,3)); if(i!=47){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 607 | } |
chaithanyarss | 331:1943be3fd178 | 608 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 609 | gPC.printf("\t%d",decompress(decode(7,&space,&temp),4,3)); |
chaithanyarss | 331:1943be3fd178 | 610 | } |
chaithanyarss | 331:1943be3fd178 | 611 | } |
chaithanyarss | 331:1943be3fd178 | 612 | else if(temp_x==1){ |
chaithanyarss | 331:1943be3fd178 | 613 | gPC.printf("\t%d",2*decompress(decode(7,&space,&temp),4,3)); |
chaithanyarss | 331:1943be3fd178 | 614 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 615 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),9,3)); |
chaithanyarss | 331:1943be3fd178 | 616 | } |
chaithanyarss | 331:1943be3fd178 | 617 | } |
chaithanyarss | 331:1943be3fd178 | 618 | else if(temp_x==4){ |
chaithanyarss | 331:1943be3fd178 | 619 | gPC.printf("\t%d",decompress(decode(7,&space,&temp),4,3)); |
chaithanyarss | 331:1943be3fd178 | 620 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),10,2)); |
chaithanyarss | 331:1943be3fd178 | 621 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),10,2)); |
chaithanyarss | 331:1943be3fd178 | 622 | } |
chaithanyarss | 331:1943be3fd178 | 623 | else if(temp_x==5){ |
chaithanyarss | 331:1943be3fd178 | 624 | gPC.printf("\t%d",decompress(decode(12,&space,&temp),9,3)); |
chaithanyarss | 331:1943be3fd178 | 625 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 626 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 627 | } |
chaithanyarss | 331:1943be3fd178 | 628 | } |
chaithanyarss | 331:1943be3fd178 | 629 | } |
chaithanyarss | 331:1943be3fd178 | 630 | else{ |
chaithanyarss | 331:1943be3fd178 | 631 | if(tmid==2){ |
chaithanyarss | 331:1943be3fd178 | 632 | gPC.printf("\n\r%d",decode(2,&space,&temp)); //splitting first 35 bits of time into year,month....... |
chaithanyarss | 331:1943be3fd178 | 633 | gPC.printf("\t%d",decode(4,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 634 | gPC.printf("\t%d",decode(5,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 635 | gPC.printf("\t%d",decode(5,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 636 | gPC.printf("\t%d",decode(6,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 637 | gPC.printf("\t%d",decode(6,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 638 | gPC.printf("\t%d",decode(7,&space,&temp)); //time ends here |
chaithanyarss | 331:1943be3fd178 | 639 | } |
chaithanyarss | 331:1943be3fd178 | 640 | if(tmid==3) |
chaithanyarss | 331:1943be3fd178 | 641 | gPC.printf("\n\r"); |
chaithanyarss | 331:1943be3fd178 | 642 | gPC.printf("\t%d",decode(4,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 643 | gPC.printf("\t%d",decode(6,&space,&temp)); |
chaithanyarss | 331:1943be3fd178 | 644 | srp_mode = decode(1,&space,&temp); |
chaithanyarss | 331:1943be3fd178 | 645 | gPC.printf("\t%d",srp_mode); |
chaithanyarss | 331:1943be3fd178 | 646 | if(srp_mode==0){ |
chaithanyarss | 331:1943be3fd178 | 647 | //gPC.printf("\n\rspace before pzf = %d",space); |
chaithanyarss | 331:1943be3fd178 | 648 | pzf = decode(1,&space,&temp); |
chaithanyarss | 331:1943be3fd178 | 649 | //gPC.printf("\n\rspace after pzf = %d",space); |
chaithanyarss | 331:1943be3fd178 | 650 | ezf = decode(1,&space,&temp); |
chaithanyarss | 331:1943be3fd178 | 651 | //gPC.printf("\n\rspace after pzf = %d",space); |
chaithanyarss | 331:1943be3fd178 | 652 | gPC.printf("\t%d",pzf); |
chaithanyarss | 331:1943be3fd178 | 653 | gPC.printf("\t%d",ezf); |
chaithanyarss | 331:1943be3fd178 | 654 | len = calc_length(tmid,srp_mode,0,((uint8_t)((pzf<<1)|ezf))); |
chaithanyarss | 331:1943be3fd178 | 655 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 656 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(9,&space,&temp),7,2)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 657 | } |
chaithanyarss | 331:1943be3fd178 | 658 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 659 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(9,&space,&temp),7,2)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 660 | } |
chaithanyarss | 331:1943be3fd178 | 661 | if(tmid==2){ |
chaithanyarss | 331:1943be3fd178 | 662 | for(uint8_t i=0;i<12;i++){ |
chaithanyarss | 331:1943be3fd178 | 663 | if(i%2==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(6,&space,&temp),3,3)); if(i%2==0){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 664 | } |
chaithanyarss | 331:1943be3fd178 | 665 | gPC.printf("\t%d",decompress(decode(10,&space,&temp),8,2)); |
chaithanyarss | 331:1943be3fd178 | 666 | for(uint8_t i=0;i<3;i++){ |
chaithanyarss | 331:1943be3fd178 | 667 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(10,&space,&temp),8,2)); if(i!=2){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 668 | } |
chaithanyarss | 331:1943be3fd178 | 669 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 670 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 671 | } |
chaithanyarss | 331:1943be3fd178 | 672 | gPC.printf("\t%d",decompress(decode(10,&space,&temp),8,2)); |
chaithanyarss | 331:1943be3fd178 | 673 | gPC.printf("\t%d",decompress(decode(10,&space,&temp),8,2)); |
chaithanyarss | 331:1943be3fd178 | 674 | if(pzf==0){ |
chaithanyarss | 331:1943be3fd178 | 675 | for(uint8_t i=0;i<2;i++){ |
chaithanyarss | 331:1943be3fd178 | 676 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(10,&space,&temp),8,2)); if(i==0){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 677 | } |
chaithanyarss | 331:1943be3fd178 | 678 | for(uint8_t i=0;i<15;i++){ |
chaithanyarss | 331:1943be3fd178 | 679 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(10,&space,&temp),8,2)); if(i!=14){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 680 | } |
chaithanyarss | 331:1943be3fd178 | 681 | } |
chaithanyarss | 331:1943be3fd178 | 682 | else{ |
chaithanyarss | 331:1943be3fd178 | 683 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 684 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 685 | } |
chaithanyarss | 331:1943be3fd178 | 686 | if(ezf==0){ |
chaithanyarss | 331:1943be3fd178 | 687 | gPC.printf("\t%d",decompress(decode(10,&space,&temp),8,2)); |
chaithanyarss | 331:1943be3fd178 | 688 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 689 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(10,&space,&temp),8,2)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 690 | } |
chaithanyarss | 331:1943be3fd178 | 691 | } |
chaithanyarss | 331:1943be3fd178 | 692 | else{ |
chaithanyarss | 331:1943be3fd178 | 693 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 694 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 695 | } |
chaithanyarss | 331:1943be3fd178 | 696 | } |
chaithanyarss | 331:1943be3fd178 | 697 | else if(tmid==3){ |
chaithanyarss | 331:1943be3fd178 | 698 | for(uint8_t i=0;i<12;i++){ |
chaithanyarss | 331:1943be3fd178 | 699 | if(i%2==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(6,&space,&temp),4,2)); if(i%2==0){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 700 | } |
chaithanyarss | 331:1943be3fd178 | 701 | gPC.printf("\t%d",decompress(decode(8,&space,&temp),6,2)); |
chaithanyarss | 331:1943be3fd178 | 702 | for(uint8_t i=0;i<3;i++){ |
chaithanyarss | 331:1943be3fd178 | 703 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(8,&space,&temp),6,2)); if(i!=2){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 704 | } |
chaithanyarss | 331:1943be3fd178 | 705 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 706 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),7,2)); |
chaithanyarss | 331:1943be3fd178 | 707 | } |
chaithanyarss | 331:1943be3fd178 | 708 | gPC.printf("\t%d",decompress(decode(8,&space,&temp),6,2)); |
chaithanyarss | 331:1943be3fd178 | 709 | gPC.printf("\t%d",decompress(decode(8,&space,&temp),6,2)); |
chaithanyarss | 331:1943be3fd178 | 710 | if(pzf==0){ |
chaithanyarss | 331:1943be3fd178 | 711 | for(uint8_t i=0;i<2;i++){ |
chaithanyarss | 331:1943be3fd178 | 712 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(6,&space,&temp),5,1)); if(i==0){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 713 | } |
chaithanyarss | 331:1943be3fd178 | 714 | for(uint8_t i=0;i<15;i++){ |
chaithanyarss | 331:1943be3fd178 | 715 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(5,&space,&temp),4,1)); if(i!=14){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 716 | } |
chaithanyarss | 331:1943be3fd178 | 717 | } |
chaithanyarss | 331:1943be3fd178 | 718 | else{ |
chaithanyarss | 331:1943be3fd178 | 719 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 720 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 721 | } |
chaithanyarss | 331:1943be3fd178 | 722 | if(ezf==0){ |
chaithanyarss | 331:1943be3fd178 | 723 | gPC.printf("\t%d",decompress(decode(7,&space,&temp),6,1)); |
chaithanyarss | 331:1943be3fd178 | 724 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 725 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(7,&space,&temp),6,1)); if(i!=3){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 726 | } |
chaithanyarss | 331:1943be3fd178 | 727 | } |
chaithanyarss | 331:1943be3fd178 | 728 | else{ |
chaithanyarss | 331:1943be3fd178 | 729 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 730 | gPC.printf("\tNA"); |
chaithanyarss | 331:1943be3fd178 | 731 | } |
chaithanyarss | 331:1943be3fd178 | 732 | } |
chaithanyarss | 331:1943be3fd178 | 733 | } |
chaithanyarss | 331:1943be3fd178 | 734 | else if(srp_mode==1){ |
chaithanyarss | 331:1943be3fd178 | 735 | len = calc_length(tmid,srp_mode,0,((uint8_t)((pzf<<1)|ezf))); |
chaithanyarss | 331:1943be3fd178 | 736 | if(tmid==2){ |
chaithanyarss | 331:1943be3fd178 | 737 | for(uint8_t i=0;i<48;i++){ |
chaithanyarss | 331:1943be3fd178 | 738 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(10,&space,&temp),8,2)); if(i!=47){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 739 | } |
chaithanyarss | 331:1943be3fd178 | 740 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 741 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),6,3)); |
chaithanyarss | 331:1943be3fd178 | 742 | } |
chaithanyarss | 331:1943be3fd178 | 743 | } |
chaithanyarss | 331:1943be3fd178 | 744 | else if(tmid==3){ |
chaithanyarss | 331:1943be3fd178 | 745 | for(uint8_t i=0;i<48;i++){ |
chaithanyarss | 331:1943be3fd178 | 746 | if(i==0){gPC.printf("\t");} gPC.printf("%d",decompress(decode(7,&space,&temp),5,2)); if(i!=47){gPC.printf(",");} |
chaithanyarss | 331:1943be3fd178 | 747 | } |
chaithanyarss | 331:1943be3fd178 | 748 | for(uint8_t i=0;i<4;i++){ |
chaithanyarss | 331:1943be3fd178 | 749 | gPC.printf("\t%d",decompress(decode(9,&space,&temp),7,2)); |
chaithanyarss | 331:1943be3fd178 | 750 | } |
chaithanyarss | 331:1943be3fd178 | 751 | } |
chaithanyarss | 331:1943be3fd178 | 752 | } |
chaithanyarss | 331:1943be3fd178 | 753 | } |
chaithanyarss | 331:1943be3fd178 | 754 | return len; |
chaithanyarss | 331:1943be3fd178 | 755 | } |
chaithanyarss | 331:1943be3fd178 | 756 | #endif |
chaithanyarss | 331:1943be3fd178 | 757 | void print_headings(uint8_t *pack_curr_det){ |
chaithanyarss | 331:1943be3fd178 | 758 | switch(((*pack_curr_det) & 0x3F)){ |
chaithanyarss | 331:1943be3fd178 | 759 | case 0x10: gPC.printf("\n\n\r----------------------------SCP_BT calibrated mode-----------------------------"); |
chaithanyarss | 331:1943be3fd178 | 760 | break; |
chaithanyarss | 331:1943be3fd178 | 761 | case 0x12: gPC.printf("\n\n\r----------------------------SCP_AT calibrated mode-----------------------------"); |
chaithanyarss | 331:1943be3fd178 | 762 | break; |
chaithanyarss | 331:1943be3fd178 | 763 | case 0x14: gPC.printf("\n\n\r-----------------SCP_BT calibrated with data conservation mode-----------------"); |
chaithanyarss | 331:1943be3fd178 | 764 | break; |
chaithanyarss | 331:1943be3fd178 | 765 | case 0x16: gPC.printf("\n\n\r-----------------SCP_AT calibrated with data conservation mode-----------------"); |
chaithanyarss | 331:1943be3fd178 | 766 | break; |
chaithanyarss | 331:1943be3fd178 | 767 | case 0x18: gPC.printf("\n\n\r----------------SCP_BT calibrated with extreme conservation mode---------------"); |
chaithanyarss | 331:1943be3fd178 | 768 | break; |
chaithanyarss | 331:1943be3fd178 | 769 | case 0x1A: gPC.printf("\n\n\r----------------SCP_AT calibrated with extreme conservation mode---------------"); |
chaithanyarss | 331:1943be3fd178 | 770 | break; |
chaithanyarss | 331:1943be3fd178 | 771 | case 0x11: gPC.printf("\n\n\r---------------------------SCP_BT scattered plot mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 772 | break; |
chaithanyarss | 331:1943be3fd178 | 773 | case 0x13: gPC.printf("\n\n\r---------------------------SCP_AT scattered plot mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 774 | break; |
chaithanyarss | 331:1943be3fd178 | 775 | case 0x19: gPC.printf("\n\n\r--------------SCP_BT scattered plot with extreme conservation mode-------------"); |
chaithanyarss | 331:1943be3fd178 | 776 | break; |
chaithanyarss | 331:1943be3fd178 | 777 | case 0x1B: gPC.printf("\n\n\r--------------SCP_AT scattered plot with extreme conservation mode-------------"); |
chaithanyarss | 331:1943be3fd178 | 778 | break; |
chaithanyarss | 331:1943be3fd178 | 779 | case 0x20: gPC.printf("\n\n\r---------------------------SFP_BT calibrated mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 780 | break; |
chaithanyarss | 331:1943be3fd178 | 781 | case 0x22: gPC.printf("\n\n\r---------------------------SFP_AT calibrated mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 782 | break; |
chaithanyarss | 331:1943be3fd178 | 783 | case 0x30: gPC.printf("\n\n\r---------------------------SFP_BT calibrated mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 784 | break; |
chaithanyarss | 331:1943be3fd178 | 785 | case 0x32: gPC.printf("\n\n\r---------------------------SFP_AT calibrated mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 786 | break; |
chaithanyarss | 331:1943be3fd178 | 787 | case 0x21: gPC.printf("\n\n\r---------------------------SFP_BT scattered plot mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 788 | break; |
chaithanyarss | 331:1943be3fd178 | 789 | case 0x23: gPC.printf("\n\n\r---------------------------SFP_AT scattered plot mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 790 | break; |
chaithanyarss | 331:1943be3fd178 | 791 | case 0x31: gPC.printf("\n\n\r---------------------------SFP_BT scattered plot mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 792 | break; |
chaithanyarss | 331:1943be3fd178 | 793 | case 0x33: gPC.printf("\n\n\r---------------------------SFP_AT scattered plot mode--------------------------"); |
chaithanyarss | 331:1943be3fd178 | 794 | break; |
chaithanyarss | 331:1943be3fd178 | 795 | default: gPC.printf("\n\n\rxxxxxxxxxxxxxxxxxxxx INVALID packet type xxxxxxxxxxxxxxxxxxxxxx"); |
chaithanyarss | 331:1943be3fd178 | 796 | break; |
chaithanyarss | 331:1943be3fd178 | 797 | } |
chaithanyarss | 331:1943be3fd178 | 798 | } |
chaithanyarss | 331:1943be3fd178 | 799 | #if tabulation |
chaithanyarss | 331:1943be3fd178 | 800 | void clear_buffer(uint8_t index){ //index = tmid-1; |
chaithanyarss | 331:1943be3fd178 | 801 | for(uint8_t i=0;i<70;i++) |
chaithanyarss | 331:1943be3fd178 | 802 | pack_buf[index][i] = 0; |
chaithanyarss | 331:1943be3fd178 | 803 | fsc_incomplete[index] = 0; |
chaithanyarss | 331:1943be3fd178 | 804 | len_prev[index] = 0; |
chaithanyarss | 331:1943be3fd178 | 805 | len_correct[index] = 0; |
chaithanyarss | 331:1943be3fd178 | 806 | pack_split_det &= (~(0x01<<(index))); //making the corresponding tmid bit 0 to indicate buffer is empty |
chaithanyarss | 331:1943be3fd178 | 807 | } |
chaithanyarss | 331:1943be3fd178 | 808 | void tabulate_TM(uint8_t *ptr){ |
chaithanyarss | 331:1943be3fd178 | 809 | /* This function prints the TM packets info in the form of a table so that the data can be used to verify decoding |
chaithanyarss | 331:1943be3fd178 | 810 | at the Ground Station(GS)."ptr" is the pointer to the TM frame extracted from SD card before transmitting to GS |
chaithanyarss | 331:1943be3fd178 | 811 | */ |
chaithanyarss | 331:1943be3fd178 | 812 | pack_curr_det = 0; |
chaithanyarss | 331:1943be3fd178 | 813 | uint32_t fsc_TM; //to store the FSC of the current TM |
chaithanyarss | 331:1943be3fd178 | 814 | uint8_t tmid = (ptr[0]>>3)&0x0f,temp_index; |
chaithanyarss | 331:1943be3fd178 | 815 | pack_curr_det |= (ptr[0]<<1)& 0x30; //3rd and 4th bits(MSB) = tmid |
chaithanyarss | 331:1943be3fd178 | 816 | if(tmid==1||tmid==2){ //the TMID corresponds to SCP or SFP_AT(both have FSC at the same location in the frame) |
chaithanyarss | 331:1943be3fd178 | 817 | fsc_TM &= 0x00000000; |
chaithanyarss | 331:1943be3fd178 | 818 | fsc_TM |= (((uint32_t)(ptr[1]<<16))&0x00ff0000); |
chaithanyarss | 331:1943be3fd178 | 819 | fsc_TM |= (((uint32_t)(ptr[2]<<8)) &0x0000ff00); |
chaithanyarss | 331:1943be3fd178 | 820 | fsc_TM |= (((uint32_t)(ptr[3])) &0x000000ff); |
chaithanyarss | 331:1943be3fd178 | 821 | gPC.printf("\n\n\rFrame sequence count(tmid=%d): %d---------------------------------------------------------",tmid,fsc_TM); |
chaithanyarss | 331:1943be3fd178 | 822 | if(tmid==1){ |
chaithanyarss | 331:1943be3fd178 | 823 | gPC.printf("\n\rYear:%d\tMon:%d\tDate:%d",((ptr[5]>>4)&0x03),(ptr[5]&0x0f),((ptr[6]>>3)&0x1f)); |
chaithanyarss | 331:1943be3fd178 | 824 | gPC.printf("\tHour:%d\tMin:%d\n\r",((ptr[6]&0x07)<<2)|((ptr[7]&0xC0)>>6),ptr[7]&0x3f); |
chaithanyarss | 331:1943be3fd178 | 825 | } |
chaithanyarss | 331:1943be3fd178 | 826 | if(ptr[4]!=(11-(3*tmid))){ //there is an incomplete packet present at the start of the current frame |
chaithanyarss | 331:1943be3fd178 | 827 | if(!((pack_split_det>>(tmid-1))&0x01)){ |
chaithanyarss | 331:1943be3fd178 | 828 | gPC.printf("\n\rError: TMID = %d frame contains split packet but buffer empty----------------------\n",tmid); |
chaithanyarss | 331:1943be3fd178 | 829 | pack_split_det |= 0x08; //4 th bit (from LSB) if equal to 1 indicates error in packet splitting |
chaithanyarss | 331:1943be3fd178 | 830 | } |
chaithanyarss | 331:1943be3fd178 | 831 | if((fsc_TM-1)!=(fsc_incomplete[tmid-1])){ //fsc_incomplete[] |
chaithanyarss | 331:1943be3fd178 | 832 | gPC.printf("\n\rError: FSC for TMID = %d is not continous---------------------------\n",tmid); |
chaithanyarss | 331:1943be3fd178 | 833 | clear_buffer(tmid-1); |
chaithanyarss | 331:1943be3fd178 | 834 | pack_split_det |= 0x08; //4 th bit (from LSB) indicates error in packet splitting |
chaithanyarss | 331:1943be3fd178 | 835 | } |
chaithanyarss | 331:1943be3fd178 | 836 | if(((pack_split_det>>3)&0x01)==0){ //no error upto now in split packet |
chaithanyarss | 331:1943be3fd178 | 837 | len_current = ptr[4] - (11-(3*tmid)); //len_current |
chaithanyarss | 331:1943be3fd178 | 838 | if((len_prev[tmid-1]+len_current)!=len_correct[tmid-1]){ //len_correct[] and len_prev[] |
chaithanyarss | 331:1943be3fd178 | 839 | gPC.printf("\n\rError: Length of the split packet for TMID = %d not correct,len_correct=%d,len_prev=%d,len_current=%d",tmid,len_correct[tmid-1],len_prev[tmid-1],len_current); |
chaithanyarss | 331:1943be3fd178 | 840 | clear_buffer(tmid-1); |
chaithanyarss | 331:1943be3fd178 | 841 | pack_split_det &= (~0x08); //clear the packet splitting error bit |
chaithanyarss | 331:1943be3fd178 | 842 | } |
chaithanyarss | 331:1943be3fd178 | 843 | else{ |
chaithanyarss | 331:1943be3fd178 | 844 | temp_index = 11-(3*tmid); |
chaithanyarss | 331:1943be3fd178 | 845 | for(uint8_t i=0;i<len_current;i++) |
chaithanyarss | 331:1943be3fd178 | 846 | pack_buf[tmid-1][len_prev[tmid-1]+i] = ptr[temp_index+i]; //storing the remaining part of the packet in appropriate buffer |
chaithanyarss | 331:1943be3fd178 | 847 | if(tmid==1){ |
chaithanyarss | 331:1943be3fd178 | 848 | pack_curr_det |= (pack_buf[0][2]>>2)&0x0f;//5th and 6th bits (start from MSB) bits = compression option, 7th bit = threshold bit and last bit = science data mode |
chaithanyarss | 331:1943be3fd178 | 849 | } |
chaithanyarss | 331:1943be3fd178 | 850 | else if(tmid==2){ |
chaithanyarss | 331:1943be3fd178 | 851 | pack_curr_det |= (pack_buf[1][5]>>2)&0x01;//5th and 6th (start from MSB) bits = compression option, 7th bit = threshold bit and last bit = science data mode |
chaithanyarss | 331:1943be3fd178 | 852 | pack_curr_det |= 0x02; //to indicate sfp is above threshold |
chaithanyarss | 331:1943be3fd178 | 853 | } |
chaithanyarss | 331:1943be3fd178 | 854 | //gPC.printf("\n\rpack_curr_det=0x%02X and pack_prev_det=0x%02X",pack_curr_det,pack_prev_det); |
chaithanyarss | 331:1943be3fd178 | 855 | if(pack_curr_det!=pack_prev_det){ |
chaithanyarss | 331:1943be3fd178 | 856 | print_headings(&pack_curr_det); |
chaithanyarss | 331:1943be3fd178 | 857 | pack_prev_det = pack_curr_det; |
chaithanyarss | 331:1943be3fd178 | 858 | pack_curr_det &= (~0x0f); //clearing last four bits to store next packet's info(but tmid remains same) |
chaithanyarss | 331:1943be3fd178 | 859 | } |
chaithanyarss | 331:1943be3fd178 | 860 | if(len_correct[tmid-1]!=print_packet(tmid,&(pack_buf[tmid-1][0]))){ |
chaithanyarss | 331:1943be3fd178 | 861 | gPC.printf("\n\rError: print_packet() length not equal to len_correct (tmid=%d)-------------------------\n",tmid); |
chaithanyarss | 331:1943be3fd178 | 862 | } |
chaithanyarss | 331:1943be3fd178 | 863 | clear_buffer(tmid-1); |
chaithanyarss | 331:1943be3fd178 | 864 | } |
chaithanyarss | 331:1943be3fd178 | 865 | } |
chaithanyarss | 331:1943be3fd178 | 866 | } |
chaithanyarss | 331:1943be3fd178 | 867 | temp_index = ptr[4]; //index of the first complete packet in the frame |
chaithanyarss | 331:1943be3fd178 | 868 | //gPC.printf("\n\rfirst header pointer = %d and temp_index = %d",ptr[4],temp_index); |
chaithanyarss | 331:1943be3fd178 | 869 | while(temp_index!=0 && temp_index <132){ //temp_index = 0 implies no more complete packets left to display |
chaithanyarss | 331:1943be3fd178 | 870 | if(tmid==1){ |
chaithanyarss | 331:1943be3fd178 | 871 | pack_curr_det |= (ptr[temp_index+2]>>2)&0x0f;//5th and 6th (start from MSB) 2 bits = compression option, next bit = threshold bit and last bit = science data mode |
chaithanyarss | 331:1943be3fd178 | 872 | } |
chaithanyarss | 331:1943be3fd178 | 873 | else if(tmid==2){ |
chaithanyarss | 331:1943be3fd178 | 874 | pack_curr_det |= (ptr[temp_index+5]>>2)&0x01;//5th and 6th (start from MSB) bits = compression option, next bit = threshold bit and last bit = science data mode |
chaithanyarss | 331:1943be3fd178 | 875 | pack_curr_det |= 0x02; //to indicate sfp is above threshold |
chaithanyarss | 331:1943be3fd178 | 876 | //gPC.printf("\n\rScience data mode:%d",pack_curr_det&0x1); |
chaithanyarss | 331:1943be3fd178 | 877 | } |
chaithanyarss | 331:1943be3fd178 | 878 | //gPC.printf("\n\rpack_curr_det=0x%02X and pack_prev_det=0x%02X",pack_curr_det,pack_prev_det); |
chaithanyarss | 331:1943be3fd178 | 879 | if(pack_curr_det!=pack_prev_det){ |
chaithanyarss | 331:1943be3fd178 | 880 | print_headings(&pack_curr_det); |
chaithanyarss | 331:1943be3fd178 | 881 | pack_prev_det = pack_curr_det; |
chaithanyarss | 331:1943be3fd178 | 882 | pack_curr_det &= (~0x0f); //clearing last four bits to store next packet's info(but tmid remains same) |
chaithanyarss | 331:1943be3fd178 | 883 | } |
chaithanyarss | 331:1943be3fd178 | 884 | temp_index = temp_index + print_packet(tmid,&ptr[temp_index]); |
chaithanyarss | 331:1943be3fd178 | 885 | //gPC.printf("\n\rtemp_index = %d after one packet",temp_index); |
chaithanyarss | 331:1943be3fd178 | 886 | //temp_index = 69; |
chaithanyarss | 331:1943be3fd178 | 887 | if((132-temp_index)<(3*tmid)){ |
chaithanyarss | 331:1943be3fd178 | 888 | temp_index = 0; //no more packets available, minimum number of bytes are not remaining(3 for SCP and 6 for SFP_AT) |
chaithanyarss | 331:1943be3fd178 | 889 | } |
chaithanyarss | 331:1943be3fd178 | 890 | else if((132-temp_index)<(41+(15*tmid))){ //space left in the frame is less than the maximum packet size for the corresponding tmid |
chaithanyarss | 331:1943be3fd178 | 891 | if(tmid==1){ |
chaithanyarss | 331:1943be3fd178 | 892 | pack_split_det |= ((ptr[temp_index+2]<<2)&0xf0); |
chaithanyarss | 331:1943be3fd178 | 893 | //first(MSB) 3 bits = header(compression option),next bit=science data mode,next bit=errorbit,last 3 bits = to store if incomplete packet is present in the buffer |
chaithanyarss | 331:1943be3fd178 | 894 | if((pack_split_det&0xd0)==0x80) //extreme data & calibrated mode |
chaithanyarss | 331:1943be3fd178 | 895 | len_correct[tmid-1] = calc_length(tmid,(pack_split_det>>4)&0x1,(pack_split_det>>5)&0x3,ptr[temp_index+2]&0x03); |
chaithanyarss | 331:1943be3fd178 | 896 | else |
chaithanyarss | 331:1943be3fd178 | 897 | len_correct[tmid-1] = calc_length(tmid,(pack_split_det>>4)&0x1,(pack_split_det>>5)&0x3,ptr[temp_index+5]&0x03); |
chaithanyarss | 331:1943be3fd178 | 898 | //scattered plot mode doesn't have pzf and ezf bits but even if we send junk values but they will not be used in the function |
chaithanyarss | 331:1943be3fd178 | 899 | } |
chaithanyarss | 331:1943be3fd178 | 900 | else if(tmid==2){ |
chaithanyarss | 331:1943be3fd178 | 901 | pack_split_det |= ((ptr[temp_index+5]<<4)&0x70); |
chaithanyarss | 331:1943be3fd178 | 902 | len_correct[tmid-1] = calc_length(tmid,(pack_split_det>>6)&0x1,0,(pack_split_det>>4)&0x03); |
chaithanyarss | 331:1943be3fd178 | 903 | //in this case(tmid = 2), 2nd bit(MSB) is srp_mode, next bit is pzf, next is ezf and next four bits are described before |
chaithanyarss | 331:1943be3fd178 | 904 | } |
chaithanyarss | 331:1943be3fd178 | 905 | pack_split_det &= (~0xf0); //first four bits(MSB) of pack_split_det not used anymore |
chaithanyarss | 331:1943be3fd178 | 906 | if((132-temp_index)<len_correct[tmid-1]){ //incomplete packet present |
chaithanyarss | 331:1943be3fd178 | 907 | len_prev[tmid-1] = 132 - temp_index; |
chaithanyarss | 331:1943be3fd178 | 908 | fsc_incomplete[tmid-1] = fsc_TM; |
chaithanyarss | 331:1943be3fd178 | 909 | for(uint8_t i=0;i<len_prev[tmid-1];i++) |
chaithanyarss | 331:1943be3fd178 | 910 | pack_buf[tmid-1][i] = ptr[temp_index+i]; |
chaithanyarss | 331:1943be3fd178 | 911 | pack_split_det |= (1<<(tmid-1));//1st bit(LSB) indicates scp incomplete packet,2nd bit indicates sfp_at incomplete |
chaithanyarss | 331:1943be3fd178 | 912 | temp_index = 0; |
chaithanyarss | 331:1943be3fd178 | 913 | } |
chaithanyarss | 331:1943be3fd178 | 914 | } |
chaithanyarss | 331:1943be3fd178 | 915 | } |
chaithanyarss | 331:1943be3fd178 | 916 | } |
chaithanyarss | 331:1943be3fd178 | 917 | else if(tmid==3){ //SFP_BT |
chaithanyarss | 331:1943be3fd178 | 918 | fsc_TM &= 0x00000000; |
chaithanyarss | 331:1943be3fd178 | 919 | fsc_TM |= (((uint32_t)(ptr[1]<<24))&0xff000000); |
chaithanyarss | 331:1943be3fd178 | 920 | fsc_TM |= (((uint32_t)(ptr[2]<<16))&0x00ff0000); |
chaithanyarss | 331:1943be3fd178 | 921 | fsc_TM |= (((uint32_t)(ptr[3]<<8)) &0x0000ff00); |
chaithanyarss | 331:1943be3fd178 | 922 | fsc_TM |= (((uint32_t)(ptr[4])) &0x000000ff); |
chaithanyarss | 331:1943be3fd178 | 923 | gPC.printf("\n\n\rFrame sequence count(tmid=%d): %d---------------------------------------------------------",tmid,fsc_TM); |
chaithanyarss | 331:1943be3fd178 | 924 | gPC.printf("\n\rYear:%d\tMon:%d\tDate:%d",((ptr[6]>>1)&0x03),(((ptr[7]>>5)&0x07)|((ptr[6]&0x01)<<3)),(ptr[7]&0x1f)); |
chaithanyarss | 331:1943be3fd178 | 925 | gPC.printf("\tHour:%d\tMin:%d\tSec:%d\tCenti:%d\n\r",(ptr[8]&0xf1)>>3,(((ptr[9]&0xE0)>>5)|((ptr[8]&0x07)<<3)),((ptr[10]&0x80)|((ptr[9]&0x1f)<<1)),ptr[10]&0x7f); |
chaithanyarss | 331:1943be3fd178 | 926 | if(ptr[5]!=11){ //there is an incomplete packet present at the start of the current frame |
chaithanyarss | 331:1943be3fd178 | 927 | if(!((pack_split_det>>(tmid-1))&0x01)){ |
chaithanyarss | 331:1943be3fd178 | 928 | gPC.printf("\n\rError: TMID = %d frame contains split packet but buffer empty",tmid); |
chaithanyarss | 331:1943be3fd178 | 929 | pack_split_det |= 0x08; //4 th bit (from LSB) indicates error in packet splitting |
chaithanyarss | 331:1943be3fd178 | 930 | } |
chaithanyarss | 331:1943be3fd178 | 931 | else if((fsc_TM-1)!=(fsc_incomplete[tmid-1])){ //fsc |
chaithanyarss | 331:1943be3fd178 | 932 | gPC.printf("\n\rError: FSC for TMID = %d is not continous---------------------------\n",tmid); |
chaithanyarss | 331:1943be3fd178 | 933 | clear_buffer(tmid-1); |
chaithanyarss | 331:1943be3fd178 | 934 | pack_split_det |= 0x08; //4 th bit (from LSB) indicates error in packet splitting |
chaithanyarss | 331:1943be3fd178 | 935 | } |
chaithanyarss | 331:1943be3fd178 | 936 | if(((pack_split_det>>3)&0x01)==0){ //no error upto now in split packet |
chaithanyarss | 331:1943be3fd178 | 937 | len_current = ptr[5] - 11; |
chaithanyarss | 331:1943be3fd178 | 938 | if((len_prev[tmid-1]+len_current)!=len_correct[tmid-1]){ |
chaithanyarss | 331:1943be3fd178 | 939 | gPC.printf("\n\rError: Length of the split packet for TMID = %d not correct,len_correct=%d,len_prev=%d,len_current=%d",tmid,len_correct[tmid-1],len_prev[tmid-1],len_current); |
chaithanyarss | 331:1943be3fd178 | 940 | clear_buffer(tmid-1); |
chaithanyarss | 331:1943be3fd178 | 941 | pack_split_det &= (~0x08); //clear the packet splitting error bit |
chaithanyarss | 331:1943be3fd178 | 942 | } |
chaithanyarss | 331:1943be3fd178 | 943 | else{ |
chaithanyarss | 331:1943be3fd178 | 944 | temp_index = 11; |
chaithanyarss | 331:1943be3fd178 | 945 | for(uint8_t i=0;i<len_current;i++) |
chaithanyarss | 331:1943be3fd178 | 946 | pack_buf[tmid-1][len_prev[tmid-1]+i] = ptr[temp_index+i]; //storing the remaining part of the packet in appropriate buffer |
chaithanyarss | 331:1943be3fd178 | 947 | pack_curr_det |= (pack_buf[2][1]>>5)&0x01;//5th and 6th (start from MSB) bits = compression option, 7th bit = threshold bit and last bit = science data mode |
chaithanyarss | 331:1943be3fd178 | 948 | if(pack_curr_det!=pack_prev_det){ |
chaithanyarss | 331:1943be3fd178 | 949 | print_headings(&pack_curr_det); |
chaithanyarss | 331:1943be3fd178 | 950 | pack_prev_det = pack_curr_det; |
chaithanyarss | 331:1943be3fd178 | 951 | pack_curr_det &= (~0x0f);//clearing last four bits to store next packet's info(but tmid remains same) |
chaithanyarss | 331:1943be3fd178 | 952 | } |
chaithanyarss | 331:1943be3fd178 | 953 | if(len_correct[tmid-1]!=print_packet(tmid,&(pack_buf[tmid-1][0]))){ |
chaithanyarss | 331:1943be3fd178 | 954 | gPC.printf("\n\rError: print_packet() length not equal to len_correct (tmid=%d)-------------------------",tmid); |
chaithanyarss | 331:1943be3fd178 | 955 | } |
chaithanyarss | 331:1943be3fd178 | 956 | clear_buffer(tmid-1); |
chaithanyarss | 331:1943be3fd178 | 957 | } |
chaithanyarss | 331:1943be3fd178 | 958 | } |
chaithanyarss | 331:1943be3fd178 | 959 | } |
chaithanyarss | 331:1943be3fd178 | 960 | temp_index = ptr[5]; //index of the first complete packet in the frame |
chaithanyarss | 331:1943be3fd178 | 961 | while(temp_index!=0){ //temp_index = 0 implies no more complete packets left to display |
chaithanyarss | 331:1943be3fd178 | 962 | pack_curr_det |= (ptr[temp_index+1]>>5)&0x01; //calibrated or scattered mode |
chaithanyarss | 331:1943be3fd178 | 963 | if(pack_curr_det!=pack_prev_det){ |
chaithanyarss | 331:1943be3fd178 | 964 | print_headings(&pack_curr_det); |
chaithanyarss | 331:1943be3fd178 | 965 | pack_prev_det = pack_curr_det; |
chaithanyarss | 331:1943be3fd178 | 966 | pack_curr_det &= (~0x0f); //clearing last four bits to store next packet's info(but tmid remains same) |
chaithanyarss | 331:1943be3fd178 | 967 | } |
chaithanyarss | 331:1943be3fd178 | 968 | temp_index = temp_index + print_packet(tmid,&ptr[temp_index]); |
chaithanyarss | 331:1943be3fd178 | 969 | if((132-temp_index)<2){ |
chaithanyarss | 331:1943be3fd178 | 970 | temp_index = 0; //no more packets available, minimum number of bytes are not remaining(2 for SFP_BT) |
chaithanyarss | 331:1943be3fd178 | 971 | } |
chaithanyarss | 331:1943be3fd178 | 972 | else if((132-temp_index)<(46+(2*(pack_curr_det&0x01)))){ //space left in the frame is less than the maximum packet size(46 bytes for calib and 48 for scattered mode) |
chaithanyarss | 331:1943be3fd178 | 973 | pack_split_det |= ((ptr[temp_index+1]<<1)&0x70); |
chaithanyarss | 331:1943be3fd178 | 974 | len_correct[tmid-1] = calc_length(tmid,(pack_split_det>>6)&0x1,0,(pack_split_det>>4)&0x03); |
chaithanyarss | 331:1943be3fd178 | 975 | //gPC.printf("\n\rSFP_BT srp mode:%d",(pack_split_det>>6)&0x1); |
chaithanyarss | 331:1943be3fd178 | 976 | //gPC.printf("\n\rSFP_BT: len_correct = %d",len_correct[tmid-1]); |
chaithanyarss | 331:1943be3fd178 | 977 | //in this case(tmid = 3), 2nd bit(MSB) is srp_mode, next bit is pzf, next is ezf and next four bits are described before |
chaithanyarss | 331:1943be3fd178 | 978 | pack_split_det &= (~0xf0); //first four bits(MSB) of pack_split_det not used anymore |
chaithanyarss | 331:1943be3fd178 | 979 | if((132-temp_index)<len_correct[tmid-1]){ //incomplete packet present at the end of the frame |
chaithanyarss | 331:1943be3fd178 | 980 | len_prev[tmid-1] = 132 - temp_index; |
chaithanyarss | 331:1943be3fd178 | 981 | fsc_incomplete[tmid-1] = fsc_TM; |
chaithanyarss | 331:1943be3fd178 | 982 | for(uint8_t i=0;i<len_prev[tmid-1];i++) |
chaithanyarss | 331:1943be3fd178 | 983 | pack_buf[tmid-1][i] = ptr[temp_index+i]; |
chaithanyarss | 331:1943be3fd178 | 984 | pack_split_det |= (1<<(tmid-1));//1st bit(LSB) indicates scp incomplete packet,2nd bit indicates sfp_at incomplete |
chaithanyarss | 331:1943be3fd178 | 985 | //len_correct[tmid-1] = calc_length(tmid,(pack_split_det>>6)&0x1,0,(pack_split_det>>4)&0x03); |
chaithanyarss | 331:1943be3fd178 | 986 | temp_index = 0; |
chaithanyarss | 331:1943be3fd178 | 987 | } |
chaithanyarss | 331:1943be3fd178 | 988 | } |
chaithanyarss | 331:1943be3fd178 | 989 | } |
chaithanyarss | 331:1943be3fd178 | 990 | } |
chaithanyarss | 331:1943be3fd178 | 991 | } |
chaithanyarss | 331:1943be3fd178 | 992 | #endif |
chaithanyarss | 331:1943be3fd178 | 993 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 994 | void generated_dma(uint8_t *head){ |
chaithanyarss | 331:1943be3fd178 | 995 | uint8_t temp_buf[16] = {0}; |
chaithanyarss | 331:1943be3fd178 | 996 | gPC.printf("\n\rDisplaying generated data"); |
chaithanyarss | 331:1943be3fd178 | 997 | gPC.printf("\n\rhead[0,1] = %d",read_2byte(&head[0])); |
chaithanyarss | 331:1943be3fd178 | 998 | for(uint8_t i=0,j=3;i<48;i++,j+=2) |
chaithanyarss | 331:1943be3fd178 | 999 | gPC.printf("\n\rhead[%d] = %d",i,read_2byte(&head[j])); |
chaithanyarss | 331:1943be3fd178 | 1000 | for(uint8_t i=0,j=99;i<4;i++,j+=4) |
chaithanyarss | 331:1943be3fd178 | 1001 | gPC.printf("\n\rhead[%d] = %d",i+48,read_4byte(&head[j])); |
chaithanyarss | 331:1943be3fd178 | 1002 | for(uint16_t j=115;j<6723;j++) |
chaithanyarss | 331:1943be3fd178 | 1003 | if(head[j]!=head[j-112]){ |
chaithanyarss | 331:1943be3fd178 | 1004 | gPC.printf("\n\rDMA data repeat error at index = %d",j); |
chaithanyarss | 331:1943be3fd178 | 1005 | return; |
chaithanyarss | 331:1943be3fd178 | 1006 | } |
chaithanyarss | 331:1943be3fd178 | 1007 | gPC.printf("\n\rNo errors in generated repeated DMA data"); |
chaithanyarss | 331:1943be3fd178 | 1008 | } |
chaithanyarss | 331:1943be3fd178 | 1009 | void generate_dma_calibrated(uint8_t *head) |
chaithanyarss | 331:1943be3fd178 | 1010 | { |
chaithanyarss | 331:1943be3fd178 | 1011 | head[0] = (data_srp_calibrated[0]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1012 | head[1] = (data_srp_calibrated[0]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1013 | head[2] = (data_srp_calibrated[1]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1014 | for(int j=3,count=0;count<18;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1015 | head[j] = (data_srp_calibrated[2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1016 | head[j+1] = (data_srp_calibrated[2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1017 | } |
chaithanyarss | 331:1943be3fd178 | 1018 | for(int j=39,count=0;count<6;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1019 | head[j] = (data_srp_calibrated[3]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1020 | head[j+1] = (data_srp_calibrated[3]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1021 | } |
chaithanyarss | 331:1943be3fd178 | 1022 | for(int j=51,count=0;count<4;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1023 | head[j] = (data_srp_calibrated[4]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1024 | head[j+1] = (data_srp_calibrated[4]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1025 | } |
chaithanyarss | 331:1943be3fd178 | 1026 | for(int j=59,count=0;count<4;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1027 | head[j] = (data_srp_calibrated[5]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1028 | head[j+1] = (data_srp_calibrated[5]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1029 | } |
chaithanyarss | 331:1943be3fd178 | 1030 | int j=67; |
chaithanyarss | 331:1943be3fd178 | 1031 | for(uint8_t count2 = 0;count2<6;count2++) |
chaithanyarss | 331:1943be3fd178 | 1032 | for(uint8_t count=0;count<2;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1033 | head[j] = (data_srp_calibrated[6+count2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1034 | head[j+1] = (data_srp_calibrated[6+count2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1035 | //gPC.printf("\n\rj = %d",j); |
chaithanyarss | 331:1943be3fd178 | 1036 | } |
chaithanyarss | 331:1943be3fd178 | 1037 | head[91] = (data_srp_calibrated[12]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1038 | head[92] = (data_srp_calibrated[12]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1039 | for(j=93,count=0;count<3;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1040 | head[j] = (data_srp_calibrated[13]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1041 | head[j+1] = (data_srp_calibrated[13]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1042 | } |
chaithanyarss | 331:1943be3fd178 | 1043 | j=99; |
chaithanyarss | 331:1943be3fd178 | 1044 | for(uint8_t count2 =0;count2<4;count2++) |
chaithanyarss | 331:1943be3fd178 | 1045 | for(uint8_t count=0;count<1;count++,j+=4){ |
chaithanyarss | 331:1943be3fd178 | 1046 | head[j] = (data_srp_calibrated[14+count2]>>24) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1047 | head[j+1] = (data_srp_calibrated[14+count2]>>16) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1048 | head[j+2] = (data_srp_calibrated[14+count2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1049 | head[j+3] = (data_srp_calibrated[14+count2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1050 | } |
chaithanyarss | 331:1943be3fd178 | 1051 | for(j=115;j<6723;j++) //copying the same data for all other 59 packets |
chaithanyarss | 331:1943be3fd178 | 1052 | head[j] = head[j-112]; |
chaithanyarss | 331:1943be3fd178 | 1053 | /*for(j=115;j<3363;j++) //copying the same data for all next 29 packets |
chaithanyarss | 331:1943be3fd178 | 1054 | head[j] = head[j-112]; |
chaithanyarss | 331:1943be3fd178 | 1055 | //next 30 packets will have following data |
chaithanyarss | 331:1943be3fd178 | 1056 | j=3363; |
chaithanyarss | 331:1943be3fd178 | 1057 | for(int count=0;count<18;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1058 | head[j] = (data_srp_calibrated2[2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1059 | head[j+1] = (data_srp_calibrated2[2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1060 | } |
chaithanyarss | 331:1943be3fd178 | 1061 | for(int j=3399,count=0;count<6;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1062 | head[j] = (data_srp_calibrated2[3]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1063 | head[j+1] = (data_srp_calibrated2[3]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1064 | } |
chaithanyarss | 331:1943be3fd178 | 1065 | for(int j=3411,count=0;count<4;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1066 | head[j] = (data_srp_calibrated2[4]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1067 | head[j+1] = (data_srp_calibrated2[4]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1068 | } |
chaithanyarss | 331:1943be3fd178 | 1069 | for(int j=3419,count=0;count<4;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1070 | head[j] = (data_srp_calibrated2[5]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1071 | head[j+1] = (data_srp_calibrated2[5]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1072 | } |
chaithanyarss | 331:1943be3fd178 | 1073 | j=3427; |
chaithanyarss | 331:1943be3fd178 | 1074 | for(uint8_t count2 = 0;count2<6;count2++) |
chaithanyarss | 331:1943be3fd178 | 1075 | for(uint8_t count=0;count<2;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1076 | head[j] = (data_srp_calibrated2[6+count2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1077 | head[j+1] = (data_srp_calibrated2[6+count2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1078 | //gPC.printf("\n\rj = %d",j); |
chaithanyarss | 331:1943be3fd178 | 1079 | } |
chaithanyarss | 331:1943be3fd178 | 1080 | head[3451] = (data_srp_calibrated2[12]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1081 | head[3452] = (data_srp_calibrated2[12]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1082 | for(j=3453,count=0;count<3;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1083 | head[j] = (data_srp_calibrated2[13]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1084 | head[j+1] = (data_srp_calibrated2[13]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1085 | } |
chaithanyarss | 331:1943be3fd178 | 1086 | j=3459; |
chaithanyarss | 331:1943be3fd178 | 1087 | for(uint8_t count2 =0;count2<4;count2++) |
chaithanyarss | 331:1943be3fd178 | 1088 | for(uint8_t count=0;count<1;count++,j+=4){ |
chaithanyarss | 331:1943be3fd178 | 1089 | head[j] = (data_srp_calibrated2[14+count2]>>24) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1090 | head[j+1] = (data_srp_calibrated2[14+count2]>>16) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1091 | head[j+2] = (data_srp_calibrated2[14+count2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1092 | head[j+3] = (data_srp_calibrated2[14+count2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1093 | } |
chaithanyarss | 331:1943be3fd178 | 1094 | for(j=3475;j<6723;j++) //copying the same data for last 29 packets |
chaithanyarss | 331:1943be3fd178 | 1095 | head[j] = head[j-112];*/ |
chaithanyarss | 331:1943be3fd178 | 1096 | } |
chaithanyarss | 331:1943be3fd178 | 1097 | void generate_dma_scattered(uint8_t *head) |
chaithanyarss | 331:1943be3fd178 | 1098 | { |
chaithanyarss | 331:1943be3fd178 | 1099 | int j=3; |
chaithanyarss | 331:1943be3fd178 | 1100 | uint8_t count; |
chaithanyarss | 331:1943be3fd178 | 1101 | head[0] = (data_srp_scattered[0]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1102 | head[1] = (data_srp_scattered[0]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1103 | head[2] = (data_srp_scattered[1]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1104 | for (count=0,j=3;count<48;count++,j+=2){ |
chaithanyarss | 331:1943be3fd178 | 1105 | head[j] = (data_srp_scattered[2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1106 | head[j+1] = (data_srp_scattered[2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1107 | } |
chaithanyarss | 331:1943be3fd178 | 1108 | j=99; |
chaithanyarss | 331:1943be3fd178 | 1109 | for(uint8_t count2 =0;count2<4;count2++) |
chaithanyarss | 331:1943be3fd178 | 1110 | for(uint8_t count=0;count<1;count++,j+=4){ |
chaithanyarss | 331:1943be3fd178 | 1111 | head[j] = (data_srp_scattered[3+count2]>>24) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1112 | head[j+1] = (data_srp_scattered[3+count2]>>16) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1113 | head[j+2] = (data_srp_scattered[3+count2]>>8) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1114 | head[j+3] = (data_srp_scattered[3+count2]) & 0xff; |
chaithanyarss | 331:1943be3fd178 | 1115 | } |
chaithanyarss | 331:1943be3fd178 | 1116 | for(int j=115;j<6723;j++) |
chaithanyarss | 331:1943be3fd178 | 1117 | head[j] = head[j-112]; |
chaithanyarss | 331:1943be3fd178 | 1118 | } |
chaithanyarss | 331:1943be3fd178 | 1119 | uint8_t map_index_bins_2_srp_index(uint8_t i,uint8_t srp_mode) |
chaithanyarss | 331:1943be3fd178 | 1120 | { |
chaithanyarss | 331:1943be3fd178 | 1121 | /* This function is used to map sfp_indices to data_srp_calibrated[] or data_srp_scattered[] array indices |
chaithanyarss | 331:1943be3fd178 | 1122 | Example: indices 0 to 17 (the first 18 bins of sfp_bin[] array) correspond to index 2 of data_srp_calibrated[] array which is nothing |
chaithanyarss | 331:1943be3fd178 | 1123 | but proton energy. This function is used to update calib_thres_index[], scat_thresh_index[], calib_thres_index_scp[] |
chaithanyarss | 331:1943be3fd178 | 1124 | and scat_thres_index_scp[] which stores info about which bins is causing above threshold condition(refer to comments |
chaithanyarss | 331:1943be3fd178 | 1125 | in dma_packet_info() funtion regarding calib_thres_index[] array) |
chaithanyarss | 331:1943be3fd178 | 1126 | */ |
chaithanyarss | 331:1943be3fd178 | 1127 | if(srp_mode==0){ |
chaithanyarss | 331:1943be3fd178 | 1128 | if(i<18) return 2; |
chaithanyarss | 331:1943be3fd178 | 1129 | else if(i<24) return 3; |
chaithanyarss | 331:1943be3fd178 | 1130 | else if(i<28) return 4; |
chaithanyarss | 331:1943be3fd178 | 1131 | else if(i<32) return 5; |
chaithanyarss | 331:1943be3fd178 | 1132 | |
chaithanyarss | 331:1943be3fd178 | 1133 | else if(i<34) return 6; |
chaithanyarss | 331:1943be3fd178 | 1134 | else if(i<36) return 7; |
chaithanyarss | 331:1943be3fd178 | 1135 | else if(i<38) return 8; |
chaithanyarss | 331:1943be3fd178 | 1136 | else if(i<40) return 9; |
chaithanyarss | 331:1943be3fd178 | 1137 | else if(i<42) return 10; |
chaithanyarss | 331:1943be3fd178 | 1138 | else if(i<44) return 11; |
chaithanyarss | 331:1943be3fd178 | 1139 | |
chaithanyarss | 331:1943be3fd178 | 1140 | //else if(i<44) return 6+((i-32)/2); |
chaithanyarss | 331:1943be3fd178 | 1141 | else if(i<45) return 12; |
chaithanyarss | 331:1943be3fd178 | 1142 | else if(i<48) return 13; |
chaithanyarss | 331:1943be3fd178 | 1143 | |
chaithanyarss | 331:1943be3fd178 | 1144 | else if(i<49) return 14; |
chaithanyarss | 331:1943be3fd178 | 1145 | else if(i<50) return 15; |
chaithanyarss | 331:1943be3fd178 | 1146 | else if(i<51) return 16; |
chaithanyarss | 331:1943be3fd178 | 1147 | else if(i<52) return 17; |
chaithanyarss | 331:1943be3fd178 | 1148 | //else if(i<52) return i-34; |
chaithanyarss | 331:1943be3fd178 | 1149 | } |
chaithanyarss | 331:1943be3fd178 | 1150 | else if(srp_mode==1){ |
chaithanyarss | 331:1943be3fd178 | 1151 | if(i<48) return 2; |
chaithanyarss | 331:1943be3fd178 | 1152 | else if(i<52) return i-45; |
chaithanyarss | 331:1943be3fd178 | 1153 | } |
chaithanyarss | 331:1943be3fd178 | 1154 | } |
chaithanyarss | 331:1943be3fd178 | 1155 | void verify_read_dma(uint8_t srp_mode,uint8_t counter){ |
chaithanyarss | 331:1943be3fd178 | 1156 | /* This function verifies that correct data was generated in dma by comparing sfp_bin[i] with the |
chaithanyarss | 331:1943be3fd178 | 1157 | data in srp_calibrated[] or srp_scattered[]. This function assumes that all the 60 srp packets in DMA have |
chaithanyarss | 331:1943be3fd178 | 1158 | identical data. If not change the dma_generating functions and this function appropriately |
chaithanyarss | 331:1943be3fd178 | 1159 | */ |
chaithanyarss | 331:1943be3fd178 | 1160 | uint8_t i; |
chaithanyarss | 331:1943be3fd178 | 1161 | if(srp_mode==0){ |
chaithanyarss | 331:1943be3fd178 | 1162 | for(i=0;i<18;i++) //first 18 bins correspond to proton energy which is nothing but data_srp_calibrated[2] |
chaithanyarss | 331:1943be3fd178 | 1163 | if(sfp_bin[i]!=data_srp_calibrated[2]){ |
chaithanyarss | 331:1943be3fd178 | 1164 | gPC.printf("\n\rsfp_bin[%d]:%d\tdatasrp_calibrated[2]:%d",i,sfp_bin[i],data_srp_calibrated[2]); |
chaithanyarss | 331:1943be3fd178 | 1165 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[2],counter); //print the name of the bin whose DMA value didn't match with value in the data_srp_calibrated[] array |
chaithanyarss | 331:1943be3fd178 | 1166 | return; |
chaithanyarss | 331:1943be3fd178 | 1167 | } |
chaithanyarss | 331:1943be3fd178 | 1168 | for(;i<24;i++) //next 6 bins correspond to electron energy |
chaithanyarss | 331:1943be3fd178 | 1169 | if(sfp_bin[i]!=data_srp_calibrated[3]){ |
chaithanyarss | 331:1943be3fd178 | 1170 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[3],counter); |
chaithanyarss | 331:1943be3fd178 | 1171 | return; |
chaithanyarss | 331:1943be3fd178 | 1172 | } |
chaithanyarss | 331:1943be3fd178 | 1173 | for(;i<28;i++) //refer to excel sheet with test cases |
chaithanyarss | 331:1943be3fd178 | 1174 | if(sfp_bin[i]!=data_srp_calibrated[4]){ |
chaithanyarss | 331:1943be3fd178 | 1175 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[4],counter); |
chaithanyarss | 331:1943be3fd178 | 1176 | return; |
chaithanyarss | 331:1943be3fd178 | 1177 | } |
chaithanyarss | 331:1943be3fd178 | 1178 | for(;i<32;i++) |
chaithanyarss | 331:1943be3fd178 | 1179 | if(sfp_bin[i]!=data_srp_calibrated[5]){ |
chaithanyarss | 331:1943be3fd178 | 1180 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[5],counter); |
chaithanyarss | 331:1943be3fd178 | 1181 | return; |
chaithanyarss | 331:1943be3fd178 | 1182 | } |
chaithanyarss | 331:1943be3fd178 | 1183 | for(i=0;i<12;i++) |
chaithanyarss | 331:1943be3fd178 | 1184 | if(sfp_bin[32+i]!=data_srp_calibrated[6+(i/2)]){ |
chaithanyarss | 331:1943be3fd178 | 1185 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[6+(i/2)],counter); |
chaithanyarss | 331:1943be3fd178 | 1186 | return; |
chaithanyarss | 331:1943be3fd178 | 1187 | } |
chaithanyarss | 331:1943be3fd178 | 1188 | if(sfp_bin[44]!=data_srp_calibrated[12]){ |
chaithanyarss | 331:1943be3fd178 | 1189 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[12],counter); |
chaithanyarss | 331:1943be3fd178 | 1190 | return; |
chaithanyarss | 331:1943be3fd178 | 1191 | } |
chaithanyarss | 331:1943be3fd178 | 1192 | for(i=45;i<48;i++) |
chaithanyarss | 331:1943be3fd178 | 1193 | if(sfp_bin[i]!=data_srp_calibrated[13]){ |
chaithanyarss | 331:1943be3fd178 | 1194 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[13],counter); |
chaithanyarss | 331:1943be3fd178 | 1195 | return; |
chaithanyarss | 331:1943be3fd178 | 1196 | } |
chaithanyarss | 331:1943be3fd178 | 1197 | if(sfp_bin[48]!=data_srp_calibrated[14]){ |
chaithanyarss | 331:1943be3fd178 | 1198 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[14],counter); |
chaithanyarss | 331:1943be3fd178 | 1199 | return; |
chaithanyarss | 331:1943be3fd178 | 1200 | } |
chaithanyarss | 331:1943be3fd178 | 1201 | if(sfp_bin[49]!=data_srp_calibrated[15]){ |
chaithanyarss | 331:1943be3fd178 | 1202 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[15],counter); |
chaithanyarss | 331:1943be3fd178 | 1203 | return; |
chaithanyarss | 331:1943be3fd178 | 1204 | } |
chaithanyarss | 331:1943be3fd178 | 1205 | if(sfp_bin[50]!=data_srp_calibrated[16]){ |
chaithanyarss | 331:1943be3fd178 | 1206 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[16],counter); |
chaithanyarss | 331:1943be3fd178 | 1207 | return; |
chaithanyarss | 331:1943be3fd178 | 1208 | } |
chaithanyarss | 331:1943be3fd178 | 1209 | if(sfp_bin[51]!=data_srp_calibrated[17]){ |
chaithanyarss | 331:1943be3fd178 | 1210 | gPC.printf("\n\r\"%s\" data mismatch in DMA, counter = %d",srp_calibrated[17],counter); |
chaithanyarss | 331:1943be3fd178 | 1211 | return; |
chaithanyarss | 331:1943be3fd178 | 1212 | } |
chaithanyarss | 331:1943be3fd178 | 1213 | } |
chaithanyarss | 331:1943be3fd178 | 1214 | else if(srp_mode==1){ |
chaithanyarss | 331:1943be3fd178 | 1215 | for(i=0;i<48;i++) //first 48 bins correspond to dEdX & bulk & not Veto..... which is nothing but data_srp_scattered[2] |
chaithanyarss | 331:1943be3fd178 | 1216 | if(sfp_bin[i]!=data_srp_scattered[2]){ |
chaithanyarss | 331:1943be3fd178 | 1217 | gPC.printf("\n\r\"%s\" data mismatch in DMA",srp_scattered[2]); // //print the name of the bin whose DMA value didn't match with value in the srp_scattered[] array |
chaithanyarss | 331:1943be3fd178 | 1218 | return; |
chaithanyarss | 331:1943be3fd178 | 1219 | } |
chaithanyarss | 331:1943be3fd178 | 1220 | if(sfp_bin[48]!=data_srp_scattered[3]){ |
chaithanyarss | 331:1943be3fd178 | 1221 | gPC.printf("\n\r\"%s\" data mismatch in DMA",srp_scattered[3]); |
chaithanyarss | 331:1943be3fd178 | 1222 | return; |
chaithanyarss | 331:1943be3fd178 | 1223 | } |
chaithanyarss | 331:1943be3fd178 | 1224 | if(sfp_bin[49]!=data_srp_scattered[4]){ |
chaithanyarss | 331:1943be3fd178 | 1225 | gPC.printf("\n\r\"%s\" data mismatch in DMA",srp_scattered[4]); |
chaithanyarss | 331:1943be3fd178 | 1226 | return; |
chaithanyarss | 331:1943be3fd178 | 1227 | } |
chaithanyarss | 331:1943be3fd178 | 1228 | if(sfp_bin[50]!=data_srp_scattered[5]){ |
chaithanyarss | 331:1943be3fd178 | 1229 | gPC.printf("\n\r\"%s\" data mismatch in DMA",srp_scattered[5]); |
chaithanyarss | 331:1943be3fd178 | 1230 | return; |
chaithanyarss | 331:1943be3fd178 | 1231 | } |
chaithanyarss | 331:1943be3fd178 | 1232 | if(sfp_bin[51]!=data_srp_scattered[6]){ |
chaithanyarss | 331:1943be3fd178 | 1233 | gPC.printf("\n\r\"%s\" data mismatch in DMA",srp_scattered[6]); |
chaithanyarss | 331:1943be3fd178 | 1234 | return; |
chaithanyarss | 331:1943be3fd178 | 1235 | } |
chaithanyarss | 331:1943be3fd178 | 1236 | } |
chaithanyarss | 331:1943be3fd178 | 1237 | gPC.printf("\n\rNo errors in generated data"); |
chaithanyarss | 331:1943be3fd178 | 1238 | } |
chaithanyarss | 331:1943be3fd178 | 1239 | void dma_packets_info() |
chaithanyarss | 331:1943be3fd178 | 1240 | { |
chaithanyarss | 331:1943be3fd178 | 1241 | gPC.printf("\n\n\r-------------------------------------------------------------------------------------------"); |
chaithanyarss | 331:1943be3fd178 | 1242 | gPC.printf("\n\rNumber of SFP_AT: %d",dma_sfp_at_count); // dma_sfp_at_count = number of sfp which are above threshold when dma is read every 6 seconds |
chaithanyarss | 331:1943be3fd178 | 1243 | gPC.printf("\n\rNumber of SCP_AT: %d",dma_scp_at_count); // dma_scp_at_count = number of scp which are above threshold when dma is read every 6 seconds |
chaithanyarss | 331:1943be3fd178 | 1244 | if(sfp_mode_count[0]!=0){ //number of sfp packets in calibrated mode when dma is read every 6 seconds |
chaithanyarss | 331:1943be3fd178 | 1245 | gPC.printf("\n\rNumber of SFP in calibrated mode: %d",sfp_mode_count[0]); |
chaithanyarss | 331:1943be3fd178 | 1246 | if(dma_sfp_at_count!=0) //if there are above threshold packets then display information |
chaithanyarss | 331:1943be3fd178 | 1247 | gPC.printf("\n\rSFP Above Threshold indices info:"); |
chaithanyarss | 331:1943be3fd178 | 1248 | for(uint8_t i=0;i<16;i++){ //for the 16 types of bins in calibrated mode |
chaithanyarss | 331:1943be3fd178 | 1249 | |
chaithanyarss | 331:1943be3fd178 | 1250 | /* calib_thres_index is a 2d array with 16 rows(for 16 differnt types of bins possible in calibrated mode which are named |
chaithanyarss | 331:1943be3fd178 | 1251 | in srp_calibrated character array) and each "i"th row contains the packet numbers(1 to 60) which is above threshold due to the "i"th row |
chaithanyarss | 331:1943be3fd178 | 1252 | example:if proton bins have energy above threshold for all the 60 srp packets in dma, then calib_thres_index[0] will have numbers |
chaithanyarss | 331:1943be3fd178 | 1253 | from {1,2,3...so on upto 60} which is why the column size of calib_thres_index is [16][60].the variable calib_thres_subindex[j] is |
chaithanyarss | 331:1943be3fd178 | 1254 | used to update packet numbers in each row of calib_thres_index[i][j] (0<=j<60) |
chaithanyarss | 331:1943be3fd178 | 1255 | */ |
chaithanyarss | 331:1943be3fd178 | 1256 | |
chaithanyarss | 331:1943be3fd178 | 1257 | if(calib_thres_index[i][0]!=0){ //display only those bins which have atleast one packet in which they are above threshold |
chaithanyarss | 331:1943be3fd178 | 1258 | gPC.printf("\n\r%s :{ ",srp_calibrated[i+2]); |
chaithanyarss | 331:1943be3fd178 | 1259 | /*srp_calibrated has index (i+2) because the first two indices have "NA" and index of "proton bins"=2 whereas, |
chaithanyarss | 331:1943be3fd178 | 1260 | in calib_thres_index[] the index of "proton_bins" is 0 and similarly for all other 15 bins of srp_calibrated |
chaithanyarss | 331:1943be3fd178 | 1261 | */ |
chaithanyarss | 331:1943be3fd178 | 1262 | } |
chaithanyarss | 331:1943be3fd178 | 1263 | //for(uint8_t j=0;j<60;j++){ |
chaithanyarss | 331:1943be3fd178 | 1264 | for(uint8_t j=0;(calib_thres_index[i][j]!=0)&&(j<60);j++){ //display only non zero elements |
chaithanyarss | 331:1943be3fd178 | 1265 | gPC.printf("%d ",calib_thres_index[i][j]); |
chaithanyarss | 331:1943be3fd178 | 1266 | } |
chaithanyarss | 331:1943be3fd178 | 1267 | if(calib_thres_index[i][0]!=0) |
chaithanyarss | 331:1943be3fd178 | 1268 | gPC.printf("}"); |
chaithanyarss | 331:1943be3fd178 | 1269 | } |
chaithanyarss | 331:1943be3fd178 | 1270 | } |
chaithanyarss | 331:1943be3fd178 | 1271 | if(sfp_mode_count[1]!=0){ //number of sfp/srp packets in scattered plot mode when dma is read every 6 seconds |
chaithanyarss | 331:1943be3fd178 | 1272 | gPC.printf("\n\rNumber of SFP in scattered plot mode: %d",sfp_mode_count[1]); |
chaithanyarss | 331:1943be3fd178 | 1273 | if(dma_sfp_at_count!=0) //same logic as stated above |
chaithanyarss | 331:1943be3fd178 | 1274 | gPC.printf("\n\rSFP Above Threshold indices info:"); |
chaithanyarss | 331:1943be3fd178 | 1275 | for(uint8_t i=0;i<5;i++){ //scat_thres_index[5][60] has only 5 rows because only 5 different bins are possible, refer to excel sheet having test cases |
chaithanyarss | 331:1943be3fd178 | 1276 | if(scat_thres_index[i][0]!=0){ //display only those bins which contribute to above threshold |
chaithanyarss | 331:1943be3fd178 | 1277 | gPC.printf("\n\r%s :{ ",srp_scattered[i+2]); |
chaithanyarss | 331:1943be3fd178 | 1278 | } |
chaithanyarss | 331:1943be3fd178 | 1279 | //for(uint8_t j=0;scat_thres_index[i][j]!=0;j++){ |
chaithanyarss | 331:1943be3fd178 | 1280 | for(uint8_t j=0;(scat_thres_index[i][j]!=0)&&(j<60);j++){ |
chaithanyarss | 331:1943be3fd178 | 1281 | gPC.printf("%d ",scat_thres_index[i][j]); |
chaithanyarss | 331:1943be3fd178 | 1282 | } |
chaithanyarss | 331:1943be3fd178 | 1283 | if(scat_thres_index[i][0]!=0) |
chaithanyarss | 331:1943be3fd178 | 1284 | gPC.printf("}"); |
chaithanyarss | 331:1943be3fd178 | 1285 | } |
chaithanyarss | 331:1943be3fd178 | 1286 | } |
chaithanyarss | 331:1943be3fd178 | 1287 | if(scp_mode_count[0]!=0){ //scp_mode_count[0] stores number of scp in calibrated mode |
chaithanyarss | 331:1943be3fd178 | 1288 | gPC.printf("\n\rNumber of SCP in calibrated mode: %d",scp_mode_count[0]); |
chaithanyarss | 331:1943be3fd178 | 1289 | if(dma_scp_at_count!=0) |
chaithanyarss | 331:1943be3fd178 | 1290 | gPC.printf("\n\rSCP Above Threshold indices info:"); |
chaithanyarss | 331:1943be3fd178 | 1291 | //for(uint8_t temp_i=0;temp_i<16;temp_i++) |
chaithanyarss | 331:1943be3fd178 | 1292 | //gPC.printf("\n\rcalib_thres_index_scp[%d]:%d",temp_i,calib_thres_index_scp[temp_i]); |
chaithanyarss | 331:1943be3fd178 | 1293 | for(uint8_t i=0;i<16;i++){ //same logic as srp/sfp above threshold stated above |
chaithanyarss | 331:1943be3fd178 | 1294 | if(calib_thres_index_scp[i]!=0){ |
chaithanyarss | 331:1943be3fd178 | 1295 | /*the array calib_thres_index_scp[16] is one dimensional because every 6 seconds only one scp packet is generated, so if a bin caused it to |
chaithanyarss | 331:1943be3fd178 | 1296 | be above threshold it is possible only in one scp packet whereas in sfp, the bin could have caused any of the 60 sfp's to be |
chaithanyarss | 331:1943be3fd178 | 1297 | above threshold(so we store the packet number also), we make the value of calib_thres_index_scp[i] = 1 if that bin caused above threshold in scp |
chaithanyarss | 331:1943be3fd178 | 1298 | */ |
chaithanyarss | 331:1943be3fd178 | 1299 | gPC.printf("\n\r%s is above threshold",srp_calibrated[i+2]); |
chaithanyarss | 331:1943be3fd178 | 1300 | } |
chaithanyarss | 331:1943be3fd178 | 1301 | } |
chaithanyarss | 331:1943be3fd178 | 1302 | } |
chaithanyarss | 331:1943be3fd178 | 1303 | if(scp_mode_count[1]!=0){ //scp_mode_count[1] stores number of scp in calibrated mode with data conservation |
chaithanyarss | 331:1943be3fd178 | 1304 | gPC.printf("\n\rNumber of SCP in calibrated mode with data conservation: %d",scp_mode_count[1]); |
chaithanyarss | 331:1943be3fd178 | 1305 | if(dma_scp_at_count!=0) |
chaithanyarss | 331:1943be3fd178 | 1306 | gPC.printf("\n\rSCP Above Threshold indices info:"); |
chaithanyarss | 331:1943be3fd178 | 1307 | for(uint8_t i=0;i<16;i++){ //same logic as above |
chaithanyarss | 331:1943be3fd178 | 1308 | if(calib_thres_index_scp[i]!=0){ |
chaithanyarss | 331:1943be3fd178 | 1309 | gPC.printf("\n\r%s is above threshold",srp_calibrated[i+2]); |
chaithanyarss | 331:1943be3fd178 | 1310 | } |
chaithanyarss | 331:1943be3fd178 | 1311 | } |
chaithanyarss | 331:1943be3fd178 | 1312 | if(proton_scp_sum_at==1){ |
chaithanyarss | 331:1943be3fd178 | 1313 | /* here two other things apart from the bins stated in test cases can cause above threshold, |
chaithanyarss | 331:1943be3fd178 | 1314 | namely proton_scp_sum and electron_scp_sum which are calculated as sum of proton enery bins, refer to excel sheet |
chaithanyarss | 331:1943be3fd178 | 1315 | hence we check these two cases saparately at the end |
chaithanyarss | 331:1943be3fd178 | 1316 | */ |
chaithanyarss | 331:1943be3fd178 | 1317 | gPC.printf("\n\rSum of proton bins is above threshold"); |
chaithanyarss | 331:1943be3fd178 | 1318 | } |
chaithanyarss | 331:1943be3fd178 | 1319 | if(electron_scp_sum_at==1) |
chaithanyarss | 331:1943be3fd178 | 1320 | gPC.printf("\n\rSum of electron bins is above threshold"); |
chaithanyarss | 331:1943be3fd178 | 1321 | } |
chaithanyarss | 331:1943be3fd178 | 1322 | if(scp_mode_count[2]!=0){ //scp_mode_count[2] stores number of scp packets in calibrated with extreme data conservation mode |
chaithanyarss | 331:1943be3fd178 | 1323 | gPC.printf("\n\rNumber of SCP in calibrated mode with Extreme data conservation: %d",scp_mode_count[2]); |
chaithanyarss | 331:1943be3fd178 | 1324 | if(dma_scp_at_count!=0) |
chaithanyarss | 331:1943be3fd178 | 1325 | gPC.printf("\n\rSCP Above Threshold indices info:"); |
chaithanyarss | 331:1943be3fd178 | 1326 | //for(uint8_t temp_i=0;temp_i<16;temp_i++) |
chaithanyarss | 331:1943be3fd178 | 1327 | //gPC.printf("\n\rcalib_thres_index_scp[%d]:%d",temp_i,calib_thres_index_scp[temp_i]); |
chaithanyarss | 331:1943be3fd178 | 1328 | if(calib_thres_index_scp[14]!=0) //only bulk fast counts bin is present other than sum of energies bins |
chaithanyarss | 331:1943be3fd178 | 1329 | gPC.printf("\n\rBulk fast counts is above threshold"); |
chaithanyarss | 331:1943be3fd178 | 1330 | if(proton_scp_sum_at==1) |
chaithanyarss | 331:1943be3fd178 | 1331 | gPC.printf("\n\rSum of proton bins is above threshold"); |
chaithanyarss | 331:1943be3fd178 | 1332 | if(electron_scp_sum_at==1) |
chaithanyarss | 331:1943be3fd178 | 1333 | gPC.printf("\n\rSum of electron bins is above threshold"); |
chaithanyarss | 331:1943be3fd178 | 1334 | } |
chaithanyarss | 331:1943be3fd178 | 1335 | if(scp_mode_count[3]!=0){ //scp_mode_count[3] stores number of scp packets in scattered plot mode |
chaithanyarss | 331:1943be3fd178 | 1336 | gPC.printf("\n\rNumber of SCP in scattered plot mode: %d",scp_mode_count[3]); |
chaithanyarss | 331:1943be3fd178 | 1337 | if(dma_scp_at_count!=0) |
chaithanyarss | 331:1943be3fd178 | 1338 | gPC.printf("\n\rSCP Above Threshold indices info:"); |
chaithanyarss | 331:1943be3fd178 | 1339 | //for(uint8_t temp_i=0;temp_i<5;temp_i++) |
chaithanyarss | 331:1943be3fd178 | 1340 | //gPC.printf("\n\rscat_thres_index_scp[%d]:%d",temp_i,scat_thres_index_scp[temp_i]); |
chaithanyarss | 331:1943be3fd178 | 1341 | for(uint8_t i=0;i<5;i++){ |
chaithanyarss | 331:1943be3fd178 | 1342 | if(scat_thres_index_scp[i]!=0){ |
chaithanyarss | 331:1943be3fd178 | 1343 | gPC.printf("\n\r%s is above index",srp_scattered[i+2]); |
chaithanyarss | 331:1943be3fd178 | 1344 | } |
chaithanyarss | 331:1943be3fd178 | 1345 | } |
chaithanyarss | 331:1943be3fd178 | 1346 | } |
chaithanyarss | 331:1943be3fd178 | 1347 | if(scp_mode_count[4]!=0){ //scp_mode_count[4] stores number of scp packets in scattered plot with extreme data conservation mode |
chaithanyarss | 331:1943be3fd178 | 1348 | gPC.printf("\n\rNumber of SCP in scattered mode with Extreme data conservation: %d",scp_mode_count[4]); |
chaithanyarss | 331:1943be3fd178 | 1349 | if(scat_thres_index_scp[3]!=0) //only bulk fast counts bin is present other than sum of energies bins |
chaithanyarss | 331:1943be3fd178 | 1350 | gPC.printf("\n\rBulk fast counts is above threshold"); |
chaithanyarss | 331:1943be3fd178 | 1351 | if(proton_scp_sum_at==1) |
chaithanyarss | 331:1943be3fd178 | 1352 | gPC.printf("\n\rSum of proton bins is above threshold"); |
chaithanyarss | 331:1943be3fd178 | 1353 | if(electron_scp_sum_at==1) |
chaithanyarss | 331:1943be3fd178 | 1354 | gPC.printf("\n\rSum of electron bins is above threshold"); |
chaithanyarss | 331:1943be3fd178 | 1355 | } |
chaithanyarss | 331:1943be3fd178 | 1356 | } |
chaithanyarss | 331:1943be3fd178 | 1357 | #endif |
ee12b079 | 93:4d76de54a699 | 1358 | //give the pointer of 6 second data to this function |
chaithanyarss | 331:1943be3fd178 | 1359 | void srp(uint8_t * head)//void const *args) |
prasanthbj05 | 266:ae588e75cfa4 | 1360 | { |
samp1234 | 346:204497974293 | 1361 | //timer_test.start(); |
ee12b079 | 268:ded5306a1fd1 | 1362 | uint8_t sd_stat = 0; |
samp1234 | 346:204497974293 | 1363 | // SCI_LED1 =1; |
samp1234 | 346:204497974293 | 1364 | |
samp1234 | 346:204497974293 | 1365 | /****** added by samp to HK occurance *********/ |
samp1234 | 346:204497974293 | 1366 | if (HK_timer_toggle==0) |
samp1234 | 346:204497974293 | 1367 | { |
samp1234 | 346:204497974293 | 1368 | HK_counter->stop(); |
samp1234 | 346:204497974293 | 1369 | wait_ms(0.1); |
samp1234 | 346:204497974293 | 1370 | HK_counter->start(10000); |
samp1234 | 346:204497974293 | 1371 | } |
samp1234 | 346:204497974293 | 1372 | HK_timer_toggle = !HK_timer_toggle; |
samp1234 | 346:204497974293 | 1373 | |
samp1234 | 346:204497974293 | 1374 | /****** added by samp to HK occurance *********/ |
samp1234 | 346:204497974293 | 1375 | |
spacelab | 309:6ed5535ac465 | 1376 | // SCI_LED1 = !SCI_LED1; |
chaithanyarss | 331:1943be3fd178 | 1377 | //gPC.printf("\n\rsrp"); |
prasanthbj05 | 266:ae588e75cfa4 | 1378 | debug_cntr = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 1379 | sci_time = FCTN_CDMS_RD_RTC(); |
chaithanyarss | 331:1943be3fd178 | 1380 | TIME_LATEST_SPI_SPEED = sci_time; |
chaithanyarss | 290:3159ff1081a2 | 1381 | #if debug_time |
chaithanyarss | 331:1943be3fd178 | 1382 | gPC.printf("\n\rAssigning time manually"); |
chaithanyarss | 331:1943be3fd178 | 1383 | sci_time = 0x000000055555555; |
chaithanyarss | 290:3159ff1081a2 | 1384 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1385 | if(time_prev_scp==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 1386 | time_prev_scp = sci_time; |
samp1234 | 346:204497974293 | 1387 | } |
samp1234 | 346:204497974293 | 1388 | // gPC.printf("enterdSCI_SD7"); |
samp1234 | 346:204497974293 | 1389 | // gPC.printf("timer start %d::",HK_counter.read_ms()); |
samp1234 | 346:204497974293 | 1390 | |
samp1234 | 346:204497974293 | 1391 | FCTN_SD_MNGR(); |
samp1234 | 346:204497974293 | 1392 | |
samp1234 | 346:204497974293 | 1393 | // gPC.printf("timer end %d::",HK_counter.read_ms()); ///changed recently |
samp1234 | 346:204497974293 | 1394 | // timer_test.stop(); |
samp1234 | 346:204497974293 | 1395 | // gPC.printf("endSCI_SD8"); |
chaithanyarss | 331:1943be3fd178 | 1396 | #if tabulation |
chaithanyarss | 331:1943be3fd178 | 1397 | if(head[0]==0 & head[1]==0){ |
chaithanyarss | 331:1943be3fd178 | 1398 | position_tm_frame[1] = position_tm_starting[1]; |
chaithanyarss | 331:1943be3fd178 | 1399 | position_tm_frame[2] = position_tm_starting[2]; |
chaithanyarss | 331:1943be3fd178 | 1400 | gPC.printf("\n\n\r--------------------------*************************************-------------------------------"); |
chaithanyarss | 331:1943be3fd178 | 1401 | //gPC.printf("\n\rFrame pointer reset done"); |
chaithanyarss | 331:1943be3fd178 | 1402 | gPC.printf("\n\rStart FSC for TMID=1 :%d",FSC_CURRENT[1]+1); |
chaithanyarss | 331:1943be3fd178 | 1403 | gPC.printf("\n\rStart FSC for TMID=2 :%d",FSC_CURRENT[2]+1); |
chaithanyarss | 331:1943be3fd178 | 1404 | gPC.printf("\n\rStart FSC for TMID=3 :%d",FSC_CURRENT[3]+1); |
chaithanyarss | 331:1943be3fd178 | 1405 | gPC.printf("\n\r--------------------------*************************************-------------------------------"); |
chaithanyarss | 331:1943be3fd178 | 1406 | } |
chaithanyarss | 331:1943be3fd178 | 1407 | #endif |
chaithanyarss | 331:1943be3fd178 | 1408 | ptr = head + 3; //ptr points to proton energy bin of srp |
chaithanyarss | 331:1943be3fd178 | 1409 | srp_mode = head[2]&0x01; |
chaithanyarss | 331:1943be3fd178 | 1410 | //for(uint8_t temp_counter=0;temp_counter<9;temp_counter++){ |
ee12b079 | 268:ded5306a1fd1 | 1411 | for (int i = 0; i < 52 ; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 1412 | { |
ee12b079 | 93:4d76de54a699 | 1413 | scp_bin[i] = 0; |
shreeshas95 | 1:a0055b3280c8 | 1414 | } |
chaithanyarss | 331:1943be3fd178 | 1415 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1416 | gPC.printf("\n\n\rTesting science mode - initializing test indices and to zero"); |
chaithanyarss | 331:1943be3fd178 | 1417 | for(uint8_t i=0;i<5;i++) |
chaithanyarss | 331:1943be3fd178 | 1418 | for(uint8_t j=0;j<60;j++){ |
chaithanyarss | 331:1943be3fd178 | 1419 | calib_thres_index[i][j] = 0; |
chaithanyarss | 331:1943be3fd178 | 1420 | scat_thres_index[i][j] = 0; |
chaithanyarss | 331:1943be3fd178 | 1421 | } |
chaithanyarss | 331:1943be3fd178 | 1422 | for(uint8_t i=5;i<16;i++) |
chaithanyarss | 331:1943be3fd178 | 1423 | for(uint8_t j=0;j<60;j++){ |
chaithanyarss | 331:1943be3fd178 | 1424 | calib_thres_index[i][j] = 0; |
chaithanyarss | 331:1943be3fd178 | 1425 | calib_thres_index_scp[i] = 0; |
chaithanyarss | 331:1943be3fd178 | 1426 | } |
chaithanyarss | 331:1943be3fd178 | 1427 | for(uint8_t i=0;i<16;i++){ |
chaithanyarss | 331:1943be3fd178 | 1428 | if(i<5){ |
chaithanyarss | 331:1943be3fd178 | 1429 | scat_thres_subindex[i] = 0; |
chaithanyarss | 331:1943be3fd178 | 1430 | scat_thres_index_scp[i] = 0; |
chaithanyarss | 331:1943be3fd178 | 1431 | scp_mode_count[i] = 0; |
chaithanyarss | 331:1943be3fd178 | 1432 | } |
chaithanyarss | 331:1943be3fd178 | 1433 | calib_thres_subindex[i] = 0; |
chaithanyarss | 331:1943be3fd178 | 1434 | thres_scp_index[i] = 0; |
chaithanyarss | 331:1943be3fd178 | 1435 | calib_thres_index_scp[i] = 0; |
chaithanyarss | 331:1943be3fd178 | 1436 | } |
chaithanyarss | 331:1943be3fd178 | 1437 | dma_scp_at_count = 0; |
chaithanyarss | 331:1943be3fd178 | 1438 | dma_sfp_at_count = 0; |
chaithanyarss | 331:1943be3fd178 | 1439 | proton_scp_sum_at = 0; |
chaithanyarss | 331:1943be3fd178 | 1440 | electron_scp_sum_at = 0; |
chaithanyarss | 331:1943be3fd178 | 1441 | sfp_mode_count[0] = 0; |
chaithanyarss | 331:1943be3fd178 | 1442 | sfp_mode_count[1] = 0; |
chaithanyarss | 331:1943be3fd178 | 1443 | /*if((head[2]&0x01)==0){ |
chaithanyarss | 331:1943be3fd178 | 1444 | gPC.printf("\n\rGenerating DMA calibrated data"); |
chaithanyarss | 331:1943be3fd178 | 1445 | generate_dma_calibrated(head); //fill the dma with data given in data_srp_calibrated[] and repeat it 60 times to fill the entire dma |
chaithanyarss | 331:1943be3fd178 | 1446 | } |
chaithanyarss | 331:1943be3fd178 | 1447 | else if((head[2]&0x1)==1){ |
chaithanyarss | 331:1943be3fd178 | 1448 | gPC.printf("\n\rGenerating DMA scattered data"); |
chaithanyarss | 331:1943be3fd178 | 1449 | generate_dma_scattered(head); //fill the dma with data given in data_srp_scattered[] and repeat it 60 times to fill the entire dma |
chaithanyarss | 331:1943be3fd178 | 1450 | } |
chaithanyarss | 331:1943be3fd178 | 1451 | generated_dma(head);*/ |
chaithanyarss | 331:1943be3fd178 | 1452 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1453 | for(uint8_t counter = 0 ; counter < 60 ; counter++) |
prasanthbj05 | 266:ae588e75cfa4 | 1454 | { |
ee12b079 | 268:ded5306a1fd1 | 1455 | #if srpz |
chaithanyarss | 331:1943be3fd178 | 1456 | gPC.printf("\n\n\rSRP count:%d",counter+1); |
ee12b079 | 268:ded5306a1fd1 | 1457 | #endif |
chaithanyarss | 331:1943be3fd178 | 1458 | /*---------------------------------populating sfp_bin and scp_bin[] starts here(also tag AT or BT)-----------------------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 1459 | at = 0; pzf = 1; ezf = 1; |
prasanthbj05 | 266:ae588e75cfa4 | 1460 | if(srp_mode == 0) //calibrated mode |
prasanthbj05 | 266:ae588e75cfa4 | 1461 | { |
ee12b079 | 268:ded5306a1fd1 | 1462 | #if srpz |
chaithanyarss | 331:1943be3fd178 | 1463 | gPC.printf("\n\rSRP - Calibrated Mode"); |
ee12b079 | 268:ded5306a1fd1 | 1464 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1465 | for(int i=0; i<48 ; i++) //first 48 bins or SRP are of 16 bits size |
prasanthbj05 | 266:ae588e75cfa4 | 1466 | { |
ee12b079 | 93:4d76de54a699 | 1467 | sfp_bin[i] = read_2byte(ptr + i*2); |
chaithanyarss | 331:1943be3fd178 | 1468 | /*if(counter==0){ |
chaithanyarss | 331:1943be3fd178 | 1469 | gPC.printf("\n\r sfp_bin[%d] = %d",i,sfp_bin[i]); |
chaithanyarss | 331:1943be3fd178 | 1470 | }*/ |
ee12b079 | 93:4d76de54a699 | 1471 | scp_bin[i] += sfp_bin[i]; |
prasanthbj05 | 266:ae588e75cfa4 | 1472 | if(sfp_bin[i]>sfp_threshold_m0[i]) |
prasanthbj05 | 266:ae588e75cfa4 | 1473 | { |
ee12b079 | 268:ded5306a1fd1 | 1474 | //gPC.printf("\n\rSFP above threshold index:%d",i); |
chaithanyarss | 331:1943be3fd178 | 1475 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1476 | //gPC.printf("\n\ri:%d",i); |
chaithanyarss | 331:1943be3fd178 | 1477 | //gPC.printf("\n\ri:%d\tj:%d",map_index_bins_2_srp_index(i,srp_mode)-2,calib_thres_subindex[map_index_bins_2_srp_index(i,srp_mode)-2]); |
chaithanyarss | 331:1943be3fd178 | 1478 | calib_thres_index[map_index_bins_2_srp_index(i,srp_mode)-2][calib_thres_subindex[map_index_bins_2_srp_index(i,srp_mode)-2]] = 1; |
chaithanyarss | 331:1943be3fd178 | 1479 | //gPC.printf("\n\ri:%d\tj:%d",map_index_bins_2_srp_index(i,srp_mode)-2,calib_thres_subindex[map_index_bins_2_srp_index(i,srp_mode)-2]); |
chaithanyarss | 331:1943be3fd178 | 1480 | #endif |
ee12b079 | 93:4d76de54a699 | 1481 | at = 1; |
ee12b079 | 93:4d76de54a699 | 1482 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1483 | if(i<17) |
prasanthbj05 | 266:ae588e75cfa4 | 1484 | { |
ee12b079 | 93:4d76de54a699 | 1485 | if(sfp_bin[i] > 0) |
ee12b079 | 93:4d76de54a699 | 1486 | pzf = 0; |
ee12b079 | 93:4d76de54a699 | 1487 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1488 | else if (i>17 && i < 23) |
prasanthbj05 | 266:ae588e75cfa4 | 1489 | { |
ee12b079 | 93:4d76de54a699 | 1490 | if(sfp_bin[i]>0) |
ee12b079 | 93:4d76de54a699 | 1491 | ezf = 0; |
ee12b079 | 93:4d76de54a699 | 1492 | } |
ee12b079 | 93:4d76de54a699 | 1493 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1494 | for(int i=0; i<4; i++) //last 4 bins(excluding the spare bin) are 32 bit each |
prasanthbj05 | 266:ae588e75cfa4 | 1495 | { |
ee12b079 | 93:4d76de54a699 | 1496 | sfp_bin[i+48] = read_4byte( (ptr+96) + 4*i ); |
chaithanyarss | 331:1943be3fd178 | 1497 | /*if(counter==0){ |
chaithanyarss | 331:1943be3fd178 | 1498 | gPC.printf("\n\rsfp_bin[%d] = %d",48+i,sfp_bin[i+48]); |
chaithanyarss | 331:1943be3fd178 | 1499 | }*/ |
ee12b079 | 93:4d76de54a699 | 1500 | scp_bin[i+48] += sfp_bin[i+48]; |
ee12b079 | 268:ded5306a1fd1 | 1501 | if(sfp_bin[i+48]>sfp_threshold_m0[i+48]){ |
ee12b079 | 268:ded5306a1fd1 | 1502 | //gPC.printf("\n\rSP above threshold index: %d",i+48); |
chaithanyarss | 331:1943be3fd178 | 1503 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1504 | //gPC.printf("\n\ri:%d\tj:%d",map_index_bins_2_srp_index(48+i,srp_mode)-2,calib_thres_subindex[map_index_bins_2_srp_index(48+i,srp_mode)-2]); |
chaithanyarss | 331:1943be3fd178 | 1505 | calib_thres_index[map_index_bins_2_srp_index(48+i,srp_mode)-2][calib_thres_subindex[map_index_bins_2_srp_index(48+i,srp_mode)-2]] = 1; |
chaithanyarss | 331:1943be3fd178 | 1506 | //gPC.printf("\n\ri:%d\tj:%d",map_index_bins_2_srp_index(48+i,srp_mode)-2,calib_thres_subindex[map_index_bins_2_srp_index(48+i,srp_mode)-2]); |
chaithanyarss | 331:1943be3fd178 | 1507 | #endif |
ee12b079 | 93:4d76de54a699 | 1508 | at = 1; |
ee12b079 | 268:ded5306a1fd1 | 1509 | } |
ee12b079 | 93:4d76de54a699 | 1510 | } |
chaithanyarss | 331:1943be3fd178 | 1511 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1512 | else if(srp_mode == 1) //scattered mode |
prasanthbj05 | 266:ae588e75cfa4 | 1513 | { |
ee12b079 | 268:ded5306a1fd1 | 1514 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1515 | gPC.printf("\n\rSRP - Scatter Plot Mode"); |
ee12b079 | 268:ded5306a1fd1 | 1516 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1517 | for(int i = 0; i <48; i++) //first 48 bins of SRP are of 16 bit size |
prasanthbj05 | 266:ae588e75cfa4 | 1518 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1519 | sfp_bin[i] = read_2byte(ptr+2*i); |
ee12b079 | 93:4d76de54a699 | 1520 | scp_bin[i] += sfp_bin[i]; |
chaithanyarss | 331:1943be3fd178 | 1521 | /*if(counter==0){ |
chaithanyarss | 331:1943be3fd178 | 1522 | gPC.printf("\n\rsfp_bin[%d]= %u\t\tscp_bin[%d]= %u",i,sfp_bin[i],i,scp_bin[i]); |
chaithanyarss | 331:1943be3fd178 | 1523 | }*/ |
ee12b079 | 268:ded5306a1fd1 | 1524 | if(sfp_bin[i] > sfp_threshold_m1[i]){ |
ee12b079 | 268:ded5306a1fd1 | 1525 | //gPC.printf("\n\rSP above threshold index: %d",i); |
chaithanyarss | 331:1943be3fd178 | 1526 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1527 | scat_thres_index[map_index_bins_2_srp_index(i,srp_mode)-2][scat_thres_subindex[map_index_bins_2_srp_index(i,srp_mode)-2]] = 1; |
chaithanyarss | 331:1943be3fd178 | 1528 | #endif |
ee12b079 | 93:4d76de54a699 | 1529 | at = 1; |
ee12b079 | 268:ded5306a1fd1 | 1530 | } |
ee12b079 | 93:4d76de54a699 | 1531 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1532 | for(int i = 0; i < 4 ; i++) //next 4 bins are of 32 bit size |
prasanthbj05 | 266:ae588e75cfa4 | 1533 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1534 | sfp_bin[i+48] = read_4byte( (ptr+96) + 4*i ); |
prasanthbj05 | 266:ae588e75cfa4 | 1535 | scp_bin[i+48] += sfp_bin[i+48]; |
chaithanyarss | 331:1943be3fd178 | 1536 | |
chaithanyarss | 331:1943be3fd178 | 1537 | /*if(counter==0){ |
chaithanyarss | 331:1943be3fd178 | 1538 | gPC.printf("\n\rsfp_bin[%d]= %u\t\tscp_bin[%d]= %u",i,sfp_bin[i],i,scp_bin[i]); |
chaithanyarss | 331:1943be3fd178 | 1539 | }*/ |
ee12b079 | 268:ded5306a1fd1 | 1540 | if(sfp_bin[i+48] > sfp_threshold_m1[i+48]){ |
ee12b079 | 268:ded5306a1fd1 | 1541 | //gPC.printf("\n\rSP above threshold index: %d",i+48); |
chaithanyarss | 331:1943be3fd178 | 1542 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1543 | scat_thres_index[map_index_bins_2_srp_index(48+i,srp_mode)-2][scat_thres_subindex[map_index_bins_2_srp_index(48+i,srp_mode)-2]] = 1; |
chaithanyarss | 331:1943be3fd178 | 1544 | #endif |
ee12b079 | 93:4d76de54a699 | 1545 | at = 1; |
ee12b079 | 268:ded5306a1fd1 | 1546 | } |
ee12b079 | 93:4d76de54a699 | 1547 | } |
shreeshas95 | 1:a0055b3280c8 | 1548 | } |
chaithanyarss | 331:1943be3fd178 | 1549 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1550 | for(uint8_t temp_i = 0;temp_i<16;temp_i++){ |
chaithanyarss | 331:1943be3fd178 | 1551 | if(calib_thres_index[temp_i][calib_thres_subindex[temp_i]]==1){ |
chaithanyarss | 331:1943be3fd178 | 1552 | calib_thres_index[temp_i][calib_thres_subindex[temp_i]] = counter+1; |
chaithanyarss | 331:1943be3fd178 | 1553 | calib_thres_subindex[temp_i]++; |
chaithanyarss | 331:1943be3fd178 | 1554 | } |
chaithanyarss | 331:1943be3fd178 | 1555 | } |
chaithanyarss | 331:1943be3fd178 | 1556 | for(uint8_t temp_i = 0;temp_i<5;temp_i++){ |
chaithanyarss | 331:1943be3fd178 | 1557 | if(scat_thres_index[temp_i][scat_thres_subindex[temp_i]]==1){ |
chaithanyarss | 331:1943be3fd178 | 1558 | scat_thres_index[temp_i][scat_thres_subindex[temp_i]] = counter+1; |
chaithanyarss | 331:1943be3fd178 | 1559 | scat_thres_subindex[temp_i]++; |
chaithanyarss | 331:1943be3fd178 | 1560 | } |
chaithanyarss | 331:1943be3fd178 | 1561 | } |
chaithanyarss | 331:1943be3fd178 | 1562 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1563 | /*---------------------------populating sfp_bin[] and scp_bin[] from srp ends here(also tagging AT or BT)------------------*/ |
chaithanyarss | 331:1943be3fd178 | 1564 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1565 | //gPC.printf("\n\n\rCounter: %d",counter); |
chaithanyarss | 331:1943be3fd178 | 1566 | //verify_read_dma(srp_mode,counter); |
chaithanyarss | 331:1943be3fd178 | 1567 | #endif |
chaithanyarss | 331:1943be3fd178 | 1568 | ptr = ptr + 112; //moving the pointer to next srp packet in the DMA buffer |
prasanthbj05 | 266:ae588e75cfa4 | 1569 | |
prasanthbj05 | 266:ae588e75cfa4 | 1570 | /*------------------------------------------forming a science fine packet starts here---------------------------------------- |
prasanthbj05 | 266:ae588e75cfa4 | 1571 | First we fill packet header, then fill packet data and finally assign its length |
prasanthbj05 | 266:ae588e75cfa4 | 1572 | ----------------------------------------------------------------------------------------------------------------------------*/ |
chaithanyarss | 331:1943be3fd178 | 1573 | for(int i = 0; i<71; i++) |
ee12b079 | 93:4d76de54a699 | 1574 | sfp[i] = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 1575 | if(srp_mode == 0) //calibrated mode |
prasanthbj05 | 266:ae588e75cfa4 | 1576 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1577 | if(at == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 1578 | { |
ee12b079 | 268:ded5306a1fd1 | 1579 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1580 | gPC.printf("\n\rSFP Below Threshold"); |
ee12b079 | 268:ded5306a1fd1 | 1581 | #endif |
ee12b079 | 93:4d76de54a699 | 1582 | pointer = sfp; debug_cntr = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 1583 | space = adjust(4, attitude,pointer,8); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1584 | space = adjust(6, counter,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1585 | space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1586 | space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1587 | space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1588 | for(uint8_t i = 0 ; i < 8 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1589 | space = adjust(1, ((compress(sfp_bin[24+i],7,2))&0x100)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1590 | space = adjust(8, ((compress(sfp_bin[24+i],7,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1591 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1592 | for(uint8_t i = 0 ; i <12 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1593 | space = adjust(6, (compress(sfp_bin[32+i],4,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1594 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1595 | for(uint8_t i = 0; i < 4; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1596 | space = adjust(8, (compress(sfp_bin[44+i],6,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1597 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1598 | for(uint8_t i = 0 ; i < 4 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1599 | space = adjust(1, (compress(sfp_bin[48+i],7,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1600 | space = adjust(8, compress(sfp_bin[48+i],7,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1601 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1602 | space = adjust(8, ((compress(sfp_bin[17],6,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1603 | space = adjust(8, ((compress(sfp_bin[23],6,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1604 | if(pzf == 0){ |
prasanthbj05 | 266:ae588e75cfa4 | 1605 | for(uint8_t i = 0; i<2 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1606 | space = adjust(6, ((compress(sfp_bin[i],5,1))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1607 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1608 | for(uint8_t i = 0; i<15 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1609 | space = adjust(5, ((compress(sfp_bin[i+2],4,1))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1610 | } |
ee12b079 | 93:4d76de54a699 | 1611 | } |
ee12b079 | 93:4d76de54a699 | 1612 | if(ezf == 0){ |
prasanthbj05 | 266:ae588e75cfa4 | 1613 | for(uint8_t i = 0; i <5 ;i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1614 | space = adjust(7, ((compress(sfp_bin[18+i],6,1))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1615 | } |
ee12b079 | 93:4d76de54a699 | 1616 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1617 | } //below thershold ends here. |
ee12b079 | 93:4d76de54a699 | 1618 | if(at == 1){ |
ee12b079 | 268:ded5306a1fd1 | 1619 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1620 | gPC.printf("\n\rSFP Above Threshold"); |
ee12b079 | 268:ded5306a1fd1 | 1621 | #endif |
ee12b079 | 93:4d76de54a699 | 1622 | pointer = sfp + 6; debug_cntr = 6;space = 8; |
ee12b079 | 93:4d76de54a699 | 1623 | 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 | 1624 | sfp[4] = ((sci_time&0x07)<<5) + ((attitude&0x0f)<<1) + (counter>>5); |
prasanthbj05 | 266:ae588e75cfa4 | 1625 | sfp[5] = ((counter&0x1f)<<3) + (srp_mode<<2); |
ee12b079 | 93:4d76de54a699 | 1626 | sfp[5] += (pzf<<1) + ezf ; |
prasanthbj05 | 266:ae588e75cfa4 | 1627 | for(uint8_t i = 0 ; i < 8 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1628 | space = adjust(1, (compress(sfp_bin[24+i],7,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1629 | space = adjust(8, ((compress(sfp_bin[24+i],7,2))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
shreeshas95 | 1:a0055b3280c8 | 1630 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1631 | for(uint8_t i = 0 ; i <12 ; i++){ |
ee12b079 | 93:4d76de54a699 | 1632 | space = adjust(6, ((compress(sfp_bin[32+i],3,3))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
shreeshas95 | 1:a0055b3280c8 | 1633 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1634 | for(uint8_t i = 0 ; i < 4 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1635 | space = adjust(2, (compress(sfp_bin[44+i],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1636 | space = adjust(8, compress(sfp_bin[44+i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
shreeshas95 | 1:a0055b3280c8 | 1637 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1638 | for(uint8_t i = 0 ; i < 4 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1639 | space = adjust(1, (compress(sfp_bin[48+i],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1640 | space = adjust(8, compress(sfp_bin[48+i],6,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 1641 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1642 | space = adjust(2, (compress(sfp_bin[17],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1643 | space = adjust(8, compress(sfp_bin[17],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1644 | space = adjust(2, (compress(sfp_bin[23],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1645 | space = adjust(8, compress(sfp_bin[23],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1646 | |
ee12b079 | 93:4d76de54a699 | 1647 | if(pzf == 0){ |
prasanthbj05 | 266:ae588e75cfa4 | 1648 | //cout<<"proton bins "; |
ee12b079 | 268:ded5306a1fd1 | 1649 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1650 | gPC.printf("\n\rProton bins present in SRP"); |
ee12b079 | 268:ded5306a1fd1 | 1651 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1652 | for(uint8_t i = 0; i<17 ; i++){ |
ee12b079 | 93:4d76de54a699 | 1653 | space = adjust(2, ((compress(sfp_bin[i],8,2))>>8) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1654 | space = adjust(8, compress(sfp_bin[i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
chaithanyarss | 331:1943be3fd178 | 1655 | //gPC.printf("%02X ",compress(sfp_bin[i],8,2)); |
ee12b079 | 93:4d76de54a699 | 1656 | } |
ee12b079 | 93:4d76de54a699 | 1657 | } |
chaithanyarss | 332:7d2431ce979f | 1658 | //if(pzf==1) |
chaithanyarss | 331:1943be3fd178 | 1659 | //gPC.printf("\n\rAll proton bins empty"); |
chaithanyarss | 332:7d2431ce979f | 1660 | if(ezf == 0){ |
prasanthbj05 | 266:ae588e75cfa4 | 1661 | //cout<<"electron bins "; |
ee12b079 | 268:ded5306a1fd1 | 1662 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1663 | gPC.printf("\n\rElectron bins present in SRP"); |
ee12b079 | 268:ded5306a1fd1 | 1664 | #endif |
ee12b079 | 93:4d76de54a699 | 1665 | for(int i = 0; i<5 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 1666 | space = adjust(2,((compress(sfp_bin[18+i],8,2))>>8),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1667 | space = adjust(8, compress(sfp_bin[18+i],8,2),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
chaithanyarss | 331:1943be3fd178 | 1668 | //gPC.printf("%02X ",compress(sfp_bin[i],8,2)); |
ee12b079 | 93:4d76de54a699 | 1669 | } |
ee12b079 | 93:4d76de54a699 | 1670 | } |
chaithanyarss | 332:7d2431ce979f | 1671 | //if(ezf==1) |
chaithanyarss | 331:1943be3fd178 | 1672 | //gPC.printf("\n\rAll electron bins empty"); |
prasanthbj05 | 266:ae588e75cfa4 | 1673 | } //above threshold ends here. |
chaithanyarss | 332:7d2431ce979f | 1674 | if(at == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 1675 | { |
chaithanyarss | 331:1943be3fd178 | 1676 | id = 1; length = 241; |
chaithanyarss | 332:7d2431ce979f | 1677 | if(pzf == 0) |
ee12b079 | 93:4d76de54a699 | 1678 | length += 87; |
chaithanyarss | 332:7d2431ce979f | 1679 | if(ezf == 0) |
chaithanyarss | 331:1943be3fd178 | 1680 | length += 35; |
prasanthbj05 | 266:ae588e75cfa4 | 1681 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1682 | else |
prasanthbj05 | 266:ae588e75cfa4 | 1683 | { |
chaithanyarss | 331:1943be3fd178 | 1684 | id = 2; length = 288; |
ee12b079 | 93:4d76de54a699 | 1685 | if(pzf == 0) |
ee12b079 | 93:4d76de54a699 | 1686 | length += 170; |
ee12b079 | 93:4d76de54a699 | 1687 | if(ezf == 0) |
ee12b079 | 93:4d76de54a699 | 1688 | length += 50; |
chaithanyarss | 331:1943be3fd178 | 1689 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1690 | dma_sfp_at_count++; |
chaithanyarss | 331:1943be3fd178 | 1691 | #endif |
ee12b079 | 93:4d76de54a699 | 1692 | } |
chaithanyarss | 331:1943be3fd178 | 1693 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1694 | sfp_mode_count[0]++; |
chaithanyarss | 331:1943be3fd178 | 1695 | #endif |
shreeshas95 | 1:a0055b3280c8 | 1696 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1697 | else if(srp_mode == 1) //scattered mode |
prasanthbj05 | 266:ae588e75cfa4 | 1698 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1699 | if(at == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 1700 | { |
ee12b079 | 268:ded5306a1fd1 | 1701 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1702 | gPC.printf("\n\rSFP below threshold"); |
ee12b079 | 268:ded5306a1fd1 | 1703 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1704 | pointer = sfp; debug_cntr = 0; space = 8; |
prasanthbj05 | 266:ae588e75cfa4 | 1705 | space = adjust(4, attitude,pointer,8); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1706 | space = adjust(6, counter,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1707 | space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1708 | for(uint8_t i=0; i<48; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 1709 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1710 | space = adjust(7, compress(sfp_bin[i],5,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1711 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1712 | for(uint8_t i = 0 ; i < 4 ; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 1713 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1714 | space = adjust(1, (compress(sfp_bin[48+i],7,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1715 | space = adjust(8, compress(sfp_bin[48+i],7,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1716 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1717 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1718 | if(at == 1) |
prasanthbj05 | 266:ae588e75cfa4 | 1719 | { |
ee12b079 | 268:ded5306a1fd1 | 1720 | |
ee12b079 | 268:ded5306a1fd1 | 1721 | #if srpz |
chaithanyarss | 331:1943be3fd178 | 1722 | gPC.printf("\n\rSFP above threshold"); |
ee12b079 | 268:ded5306a1fd1 | 1723 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1724 | pointer = sfp; debug_cntr = 0; space = 8; |
prasanthbj05 | 266:ae588e75cfa4 | 1725 | space = adjust(3, sci_time>>32 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1726 | space = adjust(8, sci_time>>24 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1727 | space = adjust(8, sci_time>>16 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1728 | space = adjust(8, sci_time>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1729 | space = adjust(8, sci_time ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1730 | space = adjust(4, attitude,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1731 | space = adjust(6, counter,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1732 | space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1733 | for(uint8_t i=0; i<48; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 1734 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1735 | space = adjust(2, (compress(sfp_bin[i],8,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1736 | space = adjust(8, compress(sfp_bin[i],8,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1737 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1738 | for(uint8_t i = 0 ; i < 4 ; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 1739 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1740 | space = adjust(1, (compress(sfp_bin[48+i],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1741 | space = adjust(8, compress(sfp_bin[48+i],6,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 1742 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1743 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1744 | if(at == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 1745 | { |
chaithanyarss | 331:1943be3fd178 | 1746 | id = 1; length = 384; |
prasanthbj05 | 266:ae588e75cfa4 | 1747 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1748 | else |
prasanthbj05 | 266:ae588e75cfa4 | 1749 | { |
chaithanyarss | 331:1943be3fd178 | 1750 | id = 2; length = 568; |
chaithanyarss | 331:1943be3fd178 | 1751 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1752 | dma_sfp_at_count++; |
chaithanyarss | 331:1943be3fd178 | 1753 | #endif |
ee12b079 | 93:4d76de54a699 | 1754 | } |
chaithanyarss | 331:1943be3fd178 | 1755 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1756 | sfp_mode_count[1]++; |
chaithanyarss | 331:1943be3fd178 | 1757 | #endif |
shreeshas95 | 1:a0055b3280c8 | 1758 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1759 | length = (length%8==0)?(length/8):(length/8)+1; //converting length to mulitple of 8 |
ee12b079 | 268:ded5306a1fd1 | 1760 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1761 | gPC.printf("\n\rLength of SFP packet in bytes = %d",length); |
ee12b079 | 268:ded5306a1fd1 | 1762 | #endif |
chaithanyarss | 331:1943be3fd178 | 1763 | //gPC.printf("\n\rLength of SFP packet in bytes = %d",length); |
chaithanyarss | 331:1943be3fd178 | 1764 | /*----------------------------------------filling the science fine packet array ends here------------------------------------------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 1765 | |
prasanthbj05 | 266:ae588e75cfa4 | 1766 | /*-----------------------------Inserting the above packet(sfp) into the TM frame(s) starts here----------------------------*/ |
chaithanyarss | 331:1943be3fd178 | 1767 | if(id==1){ //below threshold |
prasanthbj05 | 266:ae588e75cfa4 | 1768 | if(position_tm_frame[id]>130){ |
ee12b079 | 268:ded5306a1fd1 | 1769 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1770 | gPC.printf("\n\rSkipping the current frame.Inserting sfp packet into the next frame."); |
ee12b079 | 268:ded5306a1fd1 | 1771 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1772 | while(position_tm_frame[id]<132){ |
prasanthbj05 | 266:ae588e75cfa4 | 1773 | frames[id][position_tm_frame[id]] = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 1774 | position_tm_frame[id]++; |
prasanthbj05 | 266:ae588e75cfa4 | 1775 | } |
chaithanyarss | 331:1943be3fd178 | 1776 | //position_tm_frame[id]=position_tm_starting[id]; |
prasanthbj05 | 266:ae588e75cfa4 | 1777 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1778 | } |
chaithanyarss | 331:1943be3fd178 | 1779 | else if(id==2){ //above threshold |
prasanthbj05 | 266:ae588e75cfa4 | 1780 | if(position_tm_frame[id]>126){ |
ee12b079 | 268:ded5306a1fd1 | 1781 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1782 | gPC.printf("\n\rSkipping the current frame.Inserting sfp packet into the next frame."); |
ee12b079 | 268:ded5306a1fd1 | 1783 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1784 | while(position_tm_frame[id]<132){ |
prasanthbj05 | 266:ae588e75cfa4 | 1785 | frames[id][position_tm_frame[id]] = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 1786 | position_tm_frame[id]++; |
prasanthbj05 | 266:ae588e75cfa4 | 1787 | } |
chaithanyarss | 331:1943be3fd178 | 1788 | //position_tm_frame[id]=position_tm_starting[id]; // |
prasanthbj05 | 266:ae588e75cfa4 | 1789 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1790 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1791 | if(position_tm_frame[id]==position_tm_starting[id]){ |
prasanthbj05 | 266:ae588e75cfa4 | 1792 | frames[id][6-id] = position_tm_starting[id]; |
prasanthbj05 | 266:ae588e75cfa4 | 1793 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1794 | for(uint16_t j=0 ; j<length ;) |
prasanthbj05 | 266:ae588e75cfa4 | 1795 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1796 | if(position_tm_frame[id]==frames[id][6-id]){ |
prasanthbj05 | 266:ae588e75cfa4 | 1797 | if(id==1){ |
ee12b079 | 268:ded5306a1fd1 | 1798 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1799 | gPC.printf("\n\rAdding Time to TM frame"); |
ee12b079 | 268:ded5306a1fd1 | 1800 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1801 | frames[id][6] = (uint8_t)((sci_time>>32)&0x07); |
prasanthbj05 | 266:ae588e75cfa4 | 1802 | frames[id][7] = (uint8_t)((sci_time>>24)&0xff); |
prasanthbj05 | 266:ae588e75cfa4 | 1803 | frames[id][8] = (uint8_t)((sci_time>>16)&0xff); |
prasanthbj05 | 266:ae588e75cfa4 | 1804 | frames[id][9] = (uint8_t)((sci_time>>8)&0xff); |
prasanthbj05 | 266:ae588e75cfa4 | 1805 | frames[id][10] = (uint8_t)((sci_time)&0xff); |
prasanthbj05 | 266:ae588e75cfa4 | 1806 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1807 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1808 | if(position_tm_frame[id]<132){ |
prasanthbj05 | 266:ae588e75cfa4 | 1809 | frames[id][position_tm_frame[id]] = sfp[j]; |
prasanthbj05 | 266:ae588e75cfa4 | 1810 | j++; |
prasanthbj05 | 266:ae588e75cfa4 | 1811 | position_tm_frame[id]++; //incrementing position of write pointer in TM frame |
prasanthbj05 | 266:ae588e75cfa4 | 1812 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1813 | if(position_tm_frame[id] == 132) |
prasanthbj05 | 266:ae588e75cfa4 | 1814 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1815 | /*-----------the current frame is completely filled and we fill frame header to write into SD card---------*/ |
ee12b079 | 268:ded5306a1fd1 | 1816 | #if srpz |
chaithanyarss | 290:3159ff1081a2 | 1817 | gPC.printf("\n\rSFP_TM frame full. Length of current packet = %d",j); |
chaithanyarss | 290:3159ff1081a2 | 1818 | gPC.printf("\n\rFirst Header pointer: %d",frames[id][6-id]); |
chaithanyarss | 290:3159ff1081a2 | 1819 | gPC.printf("\n\rFirst head pointer contents: 0x%02X",frames[id][frames[id][6-id]]); |
ee12b079 | 268:ded5306a1fd1 | 1820 | #endif |
ee12b079 | 93:4d76de54a699 | 1821 | pointer = frames[id]; |
prasanthbj05 | 266:ae588e75cfa4 | 1822 | if(id == 1){ //below threshold |
ee12b079 | 93:4d76de54a699 | 1823 | space = adjust(1,0,pointer,8); |
ee12b079 | 93:4d76de54a699 | 1824 | space = adjust(4,3,pointer,space); |
ee12b079 | 271:72529b247333 | 1825 | FSC_science = FSC_CURRENT[3]; ///to be used as this, but FSC_CURRENT[] is 32 bit |
chaithanyarss | 290:3159ff1081a2 | 1826 | |
chaithanyarss | 290:3159ff1081a2 | 1827 | //gPC.printf("3 = 0x%X",FSC_science); |
chaithanyarss | 290:3159ff1081a2 | 1828 | #if debug_fsc |
chaithanyarss | 290:3159ff1081a2 | 1829 | frames[id][1] = (test_fsc[3]>>24)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1830 | frames[id][2] = (test_fsc[3]>>16)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1831 | frames[id][3] = (test_fsc[3]>>8)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1832 | frames[id][4] = test_fsc[3]&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1833 | test_fsc[3]++; |
chaithanyarss | 290:3159ff1081a2 | 1834 | #endif |
chaithanyarss | 290:3159ff1081a2 | 1835 | #if !debug_fsc |
ee12b079 | 93:4d76de54a699 | 1836 | frames[id][1] = (FSC_science>>24)&0xff; |
ee12b079 | 93:4d76de54a699 | 1837 | frames[id][2] = (FSC_science>>16)&0xff; |
ee12b079 | 93:4d76de54a699 | 1838 | frames[id][3] = (FSC_science>>8)&0xff; |
prasanthbj05 | 266:ae588e75cfa4 | 1839 | frames[id][4] = FSC_science&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1840 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1841 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1842 | else if(id == 2) //above threshold |
prasanthbj05 | 266:ae588e75cfa4 | 1843 | { |
ee12b079 | 93:4d76de54a699 | 1844 | space = adjust(1,0,pointer,8); |
prasanthbj05 | 266:ae588e75cfa4 | 1845 | space = adjust(4,2,pointer,space); |
prasanthbj05 | 266:ae588e75cfa4 | 1846 | FSC_science = FSC_CURRENT[2]; ///to be used as this |
chaithanyarss | 290:3159ff1081a2 | 1847 | //gPC.printf("2 = 0x%X",FSC_science); |
chaithanyarss | 290:3159ff1081a2 | 1848 | #if debug_fsc |
chaithanyarss | 290:3159ff1081a2 | 1849 | frames[id][1] = (test_fsc[2]>>16)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1850 | frames[id][2] = (test_fsc[2]>>8)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1851 | frames[id][3] = test_fsc[2]&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1852 | test_fsc[2]++; |
chaithanyarss | 290:3159ff1081a2 | 1853 | #endif |
chaithanyarss | 290:3159ff1081a2 | 1854 | #if !debug_fsc |
ee12b079 | 93:4d76de54a699 | 1855 | frames[id][1] = (FSC_science>>16)&0xff; |
ee12b079 | 93:4d76de54a699 | 1856 | frames[id][2] = (FSC_science>>8)&0xff; |
ee12b079 | 93:4d76de54a699 | 1857 | frames[id][3] = FSC_science&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1858 | #endif |
ee12b079 | 93:4d76de54a699 | 1859 | } |
ee12b079 | 93:4d76de54a699 | 1860 | temp_crc = crc16_gen(frames[id],132); |
ee12b079 | 93:4d76de54a699 | 1861 | frames[id][132] = temp_crc>>8; |
ee12b079 | 93:4d76de54a699 | 1862 | frames[id][133] = temp_crc & 0xff; |
ee12b079 | 268:ded5306a1fd1 | 1863 | |
ee12b079 | 268:ded5306a1fd1 | 1864 | #if srpz |
ee12b079 | 268:ded5306a1fd1 | 1865 | gPC.printf("\n\rPrinting SFP_TM\n\r{"); |
chaithanyarss | 290:3159ff1081a2 | 1866 | //gPC.printf("\n\r{"); |
ee12b079 | 268:ded5306a1fd1 | 1867 | for(uint8_t z=0;z<134;z++){ |
chaithanyarss | 290:3159ff1081a2 | 1868 | gPC.printf("%02X",frames[id][z]); |
ee12b079 | 268:ded5306a1fd1 | 1869 | } |
ee12b079 | 268:ded5306a1fd1 | 1870 | gPC.printf("}\n\r"); |
ee12b079 | 268:ded5306a1fd1 | 1871 | #endif |
chaithanyarss | 331:1943be3fd178 | 1872 | #if tabulation |
chaithanyarss | 331:1943be3fd178 | 1873 | tabulate_TM(&frames[id][0]); |
chaithanyarss | 331:1943be3fd178 | 1874 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 1875 | /*------------------current TM frame completely filled-----------------------*/ |
ee12b079 | 114:9fb55057b13f | 1876 | exor(frames[id]); |
ee12b079 | 93:4d76de54a699 | 1877 | convolution(frames[id]); |
ee12b079 | 93:4d76de54a699 | 1878 | interleave(TM_convoluted_data,TM_interleave_data); |
ee12b079 | 93:4d76de54a699 | 1879 | interleave(TM_convoluted_data+ 135,TM_interleave_data + 144); |
samp1234 | 346:204497974293 | 1880 | // gPC.printf("enterSCI_SD11"); |
samp1234 | 346:204497974293 | 1881 | |
samp1234 | 346:204497974293 | 1882 | // gPC.printf("timer start %d::",HK_counter); |
prasanthbj05 | 266:ae588e75cfa4 | 1883 | if(id == 1) |
ee12b079 | 195:6a549c0e9287 | 1884 | { |
samp1234 | 346:204497974293 | 1885 | // sd_stat = SD_WRITE(TM_interleave_data,FSC_science+1,3); //sd_write will return ack later, for now not included |
prasanthbj05 | 266:ae588e75cfa4 | 1886 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1887 | else if (id == 2) |
prasanthbj05 | 266:ae588e75cfa4 | 1888 | { |
samp1234 | 346:204497974293 | 1889 | // sd_stat = SD_WRITE(TM_interleave_data,FSC_science+1,2); //sd_write will return ack later, for now not included |
prasanthbj05 | 266:ae588e75cfa4 | 1890 | } |
ee12b079 | 268:ded5306a1fd1 | 1891 | if(sd_stat) |
ee12b079 | 268:ded5306a1fd1 | 1892 | { |
chaithanyarss | 331:1943be3fd178 | 1893 | gPC.printf("\n\n\rsd write fail---------------------------------------"); |
chaithanyarss | 290:3159ff1081a2 | 1894 | } |
samp1234 | 346:204497974293 | 1895 | |
samp1234 | 346:204497974293 | 1896 | // gPC.printf("timer end %d::",timer_test.read_ms()); ///changed recently |
samp1234 | 346:204497974293 | 1897 | // timer_test.stop(); |
samp1234 | 346:204497974293 | 1898 | |
samp1234 | 346:204497974293 | 1899 | |
samp1234 | 346:204497974293 | 1900 | // gPC.printf("endSCI_SD12"); |
ee12b079 | 93:4d76de54a699 | 1901 | position_tm_frame[id] = position_tm_starting[id]; |
chaithanyarss | 331:1943be3fd178 | 1902 | if(j!=0) |
chaithanyarss | 331:1943be3fd178 | 1903 | frames[id][6-id] = (length - j)+position_tm_starting[id]; |
chaithanyarss | 331:1943be3fd178 | 1904 | else if(j==0) |
chaithanyarss | 331:1943be3fd178 | 1905 | frames[id][6-id] = position_tm_starting[id]; |
ee12b079 | 93:4d76de54a699 | 1906 | } |
shreeshas95 | 1:a0055b3280c8 | 1907 | } |
prasanthbj05 | 266:ae588e75cfa4 | 1908 | /*------------------------------finished inserting the sfp packet into the TM frame(s)-------------------------------------*/ |
chaithanyarss | 331:1943be3fd178 | 1909 | } // for loop bracket which runs 60 times |
chaithanyarss | 331:1943be3fd178 | 1910 | //ptr = ptr + 112; //moving the pointer to next srp packet in the DMA buffer |
chaithanyarss | 331:1943be3fd178 | 1911 | |
chaithanyarss | 331:1943be3fd178 | 1912 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1913 | if(pzf==1){ |
chaithanyarss | 331:1943be3fd178 | 1914 | gPC.printf("\n\rAll protons bins empty"); |
chaithanyarss | 331:1943be3fd178 | 1915 | } |
chaithanyarss | 331:1943be3fd178 | 1916 | if(ezf==1){ |
chaithanyarss | 331:1943be3fd178 | 1917 | gPC.printf("\n\rAll electrons bins are empty"); |
chaithanyarss | 331:1943be3fd178 | 1918 | } |
chaithanyarss | 331:1943be3fd178 | 1919 | #endif |
ee12b079 | 268:ded5306a1fd1 | 1920 | #if srpz_last |
ee12b079 | 268:ded5306a1fd1 | 1921 | //gPC.printf("\n\rPrinting the last SFP_TM frame"); |
ee12b079 | 268:ded5306a1fd1 | 1922 | //gPC.printf("\n\n\rPosition of tm_pointer: %d",position_tm_frame[id]); |
ee12b079 | 268:ded5306a1fd1 | 1923 | while(position_tm_frame[id]<132){ |
ee12b079 | 268:ded5306a1fd1 | 1924 | frames[id][position_tm_frame[id]] = 0; |
ee12b079 | 268:ded5306a1fd1 | 1925 | position_tm_frame[id]++; |
ee12b079 | 268:ded5306a1fd1 | 1926 | } |
ee12b079 | 268:ded5306a1fd1 | 1927 | if(position_tm_frame[id]==132){ |
ee12b079 | 268:ded5306a1fd1 | 1928 | //gPC.printf("\n\rFirst head pointer contents: 0x%02X",frames[id][frames[id][6-id]]); |
ee12b079 | 268:ded5306a1fd1 | 1929 | pointer = frames[id]; |
ee12b079 | 268:ded5306a1fd1 | 1930 | if(id == 1){ //below threshold |
ee12b079 | 268:ded5306a1fd1 | 1931 | space = adjust(1,0,pointer,8); |
ee12b079 | 268:ded5306a1fd1 | 1932 | space = adjust(4,3,pointer,space); |
ee12b079 | 268:ded5306a1fd1 | 1933 | FSC_science = FSC_CURRENT[3]; ///to be used as this, but FSC_CURRENT[] is 32 bit |
chaithanyarss | 290:3159ff1081a2 | 1934 | #if debug_fsc |
chaithanyarss | 331:1943be3fd178 | 1935 | frames[id][1] = (test_fsc[3]>>24)&0xff; |
chaithanyarss | 331:1943be3fd178 | 1936 | frames[id][2] = (test_fsc[3]>>16)&0xff; |
chaithanyarss | 331:1943be3fd178 | 1937 | frames[id][3] = (test_fsc[3]>>8)&0xff; |
chaithanyarss | 331:1943be3fd178 | 1938 | frames[id][4] = test_fsc[3]&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1939 | test_fsc[3]++; |
chaithanyarss | 290:3159ff1081a2 | 1940 | #endif |
chaithanyarss | 290:3159ff1081a2 | 1941 | #if !debug_fsc |
ee12b079 | 268:ded5306a1fd1 | 1942 | frames[id][1] = (FSC_science>>24)&0xff; |
ee12b079 | 268:ded5306a1fd1 | 1943 | frames[id][2] = (FSC_science>>16)&0xff; |
ee12b079 | 268:ded5306a1fd1 | 1944 | frames[id][3] = (FSC_science>>8)&0xff; |
ee12b079 | 268:ded5306a1fd1 | 1945 | frames[id][4] = FSC_science&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1946 | #endif |
ee12b079 | 268:ded5306a1fd1 | 1947 | } |
ee12b079 | 268:ded5306a1fd1 | 1948 | else if(id == 2) //above threshold |
ee12b079 | 268:ded5306a1fd1 | 1949 | { |
ee12b079 | 268:ded5306a1fd1 | 1950 | space = adjust(1,0,pointer,8); |
ee12b079 | 268:ded5306a1fd1 | 1951 | space = adjust(4,2,pointer,space); |
ee12b079 | 268:ded5306a1fd1 | 1952 | FSC_science = FSC_CURRENT[2]; ///to be used as this |
chaithanyarss | 290:3159ff1081a2 | 1953 | #if debug_fsc |
chaithanyarss | 290:3159ff1081a2 | 1954 | frames[id][1] = (test_fsc[2]>>16)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1955 | frames[id][2] = (test_fsc[2]>>8)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1956 | frames[id][3] = test_fsc[2]&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1957 | test_fsc[2]++; |
chaithanyarss | 290:3159ff1081a2 | 1958 | #endif |
chaithanyarss | 290:3159ff1081a2 | 1959 | #if !debug_fsc |
ee12b079 | 268:ded5306a1fd1 | 1960 | frames[id][1] = (FSC_science>>16)&0xff; |
ee12b079 | 268:ded5306a1fd1 | 1961 | frames[id][2] = (FSC_science>>8)&0xff; |
ee12b079 | 268:ded5306a1fd1 | 1962 | frames[id][3] = FSC_science&0xff; |
chaithanyarss | 290:3159ff1081a2 | 1963 | #endif |
ee12b079 | 268:ded5306a1fd1 | 1964 | } |
ee12b079 | 268:ded5306a1fd1 | 1965 | temp_crc = crc16_gen(frames[id],132); |
ee12b079 | 268:ded5306a1fd1 | 1966 | frames[id][132] = temp_crc>>8; |
ee12b079 | 268:ded5306a1fd1 | 1967 | frames[id][133] = temp_crc & 0xff; |
ee12b079 | 268:ded5306a1fd1 | 1968 | |
chaithanyarss | 290:3159ff1081a2 | 1969 | //gPC.printf("\n\rPrinting SFP_TM\n\r{"); |
chaithanyarss | 290:3159ff1081a2 | 1970 | gPC.printf("\n\r{"); |
ee12b079 | 268:ded5306a1fd1 | 1971 | for(uint8_t z=0;z<134;z++){ |
chaithanyarss | 290:3159ff1081a2 | 1972 | gPC.printf("%02X",frames[id][z]); |
ee12b079 | 268:ded5306a1fd1 | 1973 | } |
ee12b079 | 268:ded5306a1fd1 | 1974 | gPC.printf("}\n\r"); |
chaithanyarss | 290:3159ff1081a2 | 1975 | position_tm_frame[id] = position_tm_starting[id]; |
ee12b079 | 268:ded5306a1fd1 | 1976 | } |
ee12b079 | 268:ded5306a1fd1 | 1977 | #endif |
ee12b079 | 93:4d76de54a699 | 1978 | at = 0; pzf = 1; ezf = 1; |
ee12b079 | 93:4d76de54a699 | 1979 | srp_mode = head[2]&0x1; |
prasanthbj05 | 266:ae588e75cfa4 | 1980 | uint8_t compression_option = (head[2]>>1)&0x3; |
prasanthbj05 | 266:ae588e75cfa4 | 1981 | /*-------------------------------Tagging the scp packet formed from these 60 sfp's as AT or BT starts here------------------------- |
prasanthbj05 | 266:ae588e75cfa4 | 1982 | ------------------(in case compression option = 0 , then tagging beacon packet(not yet formed) as AT or BT is also done)----------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 1983 | if(srp_mode ==0) |
prasanthbj05 | 266:ae588e75cfa4 | 1984 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1985 | if(compression_option == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 1986 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1987 | for(int i=0; i<52 ;i++) |
prasanthbj05 | 266:ae588e75cfa4 | 1988 | { |
prasanthbj05 | 266:ae588e75cfa4 | 1989 | if(scp_bin[i] > scp_threshold_m0[i]) |
prasanthbj05 | 266:ae588e75cfa4 | 1990 | { |
ee12b079 | 268:ded5306a1fd1 | 1991 | //gPC.printf("\n\rSCP above threshold index: %d",i); |
chaithanyarss | 331:1943be3fd178 | 1992 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 1993 | calib_thres_index_scp[map_index_bins_2_srp_index(i,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 1994 | #endif |
ee12b079 | 93:4d76de54a699 | 1995 | at = 1; |
chaithanyarss | 331:1943be3fd178 | 1996 | //break; |
shreeshas95 | 1:a0055b3280c8 | 1997 | } |
shreeshas95 | 1:a0055b3280c8 | 1998 | } |
chaithanyarss | 331:1943be3fd178 | 1999 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2000 | scp_mode_count[0]++; |
chaithanyarss | 331:1943be3fd178 | 2001 | #endif |
ee12b079 | 93:4d76de54a699 | 2002 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2003 | else if(compression_option == 1) |
prasanthbj05 | 266:ae588e75cfa4 | 2004 | { |
chaithanyarss | 331:1943be3fd178 | 2005 | if(scp_bin[44] > scp_threshold_m0_1[0]){ |
chaithanyarss | 331:1943be3fd178 | 2006 | //gPC.printf("\n\rSCP above threshold index: 44"); |
chaithanyarss | 331:1943be3fd178 | 2007 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2008 | //thres_scp_index[map_index_bins_2_srp_index(44,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2009 | calib_thres_index_scp[map_index_bins_2_srp_index(44,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2010 | #endif |
chaithanyarss | 331:1943be3fd178 | 2011 | at=1; |
chaithanyarss | 331:1943be3fd178 | 2012 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2013 | for(int i=0; i<4 ;i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2014 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2015 | if(scp_bin[48+i] > scp_threshold_m0_1[i+1]) |
prasanthbj05 | 266:ae588e75cfa4 | 2016 | { |
ee12b079 | 268:ded5306a1fd1 | 2017 | //gPC.printf("\n\rSCP above threshold index: %d",i+48); |
chaithanyarss | 331:1943be3fd178 | 2018 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2019 | //thres_scp_index[map_index_bins_2_srp_index(48+i,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2020 | calib_thres_index_scp[map_index_bins_2_srp_index(48+i,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2021 | #endif |
ee12b079 | 93:4d76de54a699 | 2022 | at = 1; |
chaithanyarss | 331:1943be3fd178 | 2023 | //break; |
ee12b079 | 93:4d76de54a699 | 2024 | } |
shreeshas95 | 1:a0055b3280c8 | 2025 | } |
ee12b079 | 268:ded5306a1fd1 | 2026 | if(scp_bin[17] > scp_threshold_m0_1[5]){ |
ee12b079 | 268:ded5306a1fd1 | 2027 | //gPC.printf("\n\rSP above threshold index: 17"); |
chaithanyarss | 331:1943be3fd178 | 2028 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2029 | //thres_scp_index[map_index_bins_2_srp_index(17,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2030 | calib_thres_index_scp[map_index_bins_2_srp_index(17,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2031 | #endif |
ee12b079 | 268:ded5306a1fd1 | 2032 | at=1; |
ee12b079 | 268:ded5306a1fd1 | 2033 | } |
ee12b079 | 268:ded5306a1fd1 | 2034 | if(scp_bin[23] > scp_threshold_m0_1[6]){ |
ee12b079 | 268:ded5306a1fd1 | 2035 | //gPC.printf("\n\rSP above threshold index: 23"); |
chaithanyarss | 331:1943be3fd178 | 2036 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2037 | //thres_scp_index[map_index_bins_2_srp_index(23,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2038 | calib_thres_index_scp[map_index_bins_2_srp_index(23,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2039 | #endif |
ee12b079 | 268:ded5306a1fd1 | 2040 | at=1; |
ee12b079 | 268:ded5306a1fd1 | 2041 | } |
ee12b079 | 93:4d76de54a699 | 2042 | proton_scp_sum = 0; electron_scp_sum = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2043 | for(int i=0;i<17;i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2044 | { |
ee12b079 | 93:4d76de54a699 | 2045 | proton_scp_sum += scp_bin[i]; |
shreeshas95 | 1:a0055b3280c8 | 2046 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2047 | for(int i=0; i<5; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2048 | { |
ee12b079 | 93:4d76de54a699 | 2049 | electron_scp_sum += scp_bin[18+i]; |
ee12b079 | 93:4d76de54a699 | 2050 | } |
chaithanyarss | 331:1943be3fd178 | 2051 | if(proton_scp_sum > scp_threshold_m0_1[7]){ |
chaithanyarss | 331:1943be3fd178 | 2052 | //gPC.printf("\n\rProton_scp_sum above threshold"); |
chaithanyarss | 331:1943be3fd178 | 2053 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2054 | proton_scp_sum_at = 1; |
chaithanyarss | 331:1943be3fd178 | 2055 | #endif |
chaithanyarss | 331:1943be3fd178 | 2056 | at=1; |
chaithanyarss | 331:1943be3fd178 | 2057 | } |
chaithanyarss | 331:1943be3fd178 | 2058 | if(electron_scp_sum > scp_threshold_m0_1[8]){ |
chaithanyarss | 331:1943be3fd178 | 2059 | //gPC.printf("\n\rElectron_scp_sum above threshold"); |
chaithanyarss | 331:1943be3fd178 | 2060 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2061 | electron_scp_sum_at = 1; |
chaithanyarss | 331:1943be3fd178 | 2062 | #endif |
chaithanyarss | 331:1943be3fd178 | 2063 | at=1; |
chaithanyarss | 331:1943be3fd178 | 2064 | } |
chaithanyarss | 331:1943be3fd178 | 2065 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2066 | scp_mode_count[1]++; |
chaithanyarss | 331:1943be3fd178 | 2067 | #endif |
shreeshas95 | 1:a0055b3280c8 | 2068 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2069 | else if(compression_option == 2) |
prasanthbj05 | 266:ae588e75cfa4 | 2070 | { |
chaithanyarss | 331:1943be3fd178 | 2071 | if(scp_bin[50] > scp_sfp_threshold_m0_2[0]){ |
chaithanyarss | 331:1943be3fd178 | 2072 | //gPC.printf("\n\rSCP above threshold index:50"); |
chaithanyarss | 331:1943be3fd178 | 2073 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2074 | //thres_scp_index[map_index_bins_2_srp_index(50,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2075 | calib_thres_index_scp[map_index_bins_2_srp_index(50,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2076 | #endif |
chaithanyarss | 331:1943be3fd178 | 2077 | at=1; |
chaithanyarss | 331:1943be3fd178 | 2078 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2079 | proton_scp_sum = 0; electron_scp_sum = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2080 | for(int i=0;i<17;i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2081 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2082 | proton_scp_sum += scp_bin[i]; |
prasanthbj05 | 266:ae588e75cfa4 | 2083 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2084 | for(int i=0; i<5; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2085 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2086 | electron_scp_sum += scp_bin[18+i]; |
prasanthbj05 | 266:ae588e75cfa4 | 2087 | } |
ee12b079 | 268:ded5306a1fd1 | 2088 | if(proton_scp_sum > scp_sfp_threshold_m0_2[1]){//gPC.printf("\n\rProton_SCP_sum above threshold"); |
chaithanyarss | 331:1943be3fd178 | 2089 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2090 | proton_scp_sum_at = 1; |
chaithanyarss | 331:1943be3fd178 | 2091 | #endif |
ee12b079 | 268:ded5306a1fd1 | 2092 | at=1;} |
ee12b079 | 268:ded5306a1fd1 | 2093 | if(electron_scp_sum > scp_sfp_threshold_m0_2[2]){//gPC.printf("\n\rElectron above threshold"); |
chaithanyarss | 331:1943be3fd178 | 2094 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2095 | electron_scp_sum_at = 1; |
chaithanyarss | 331:1943be3fd178 | 2096 | #endif |
ee12b079 | 268:ded5306a1fd1 | 2097 | at=1;} |
chaithanyarss | 331:1943be3fd178 | 2098 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2099 | scp_mode_count[2]++; |
chaithanyarss | 331:1943be3fd178 | 2100 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2101 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2102 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2103 | else if(srp_mode ==1) |
prasanthbj05 | 266:ae588e75cfa4 | 2104 | { |
ee12b079 | 268:ded5306a1fd1 | 2105 | if(compression_option==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2106 | for(int i=0; i<48; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2107 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2108 | if(scp_bin[i] > scp_threshold_m1[i]){ |
ee12b079 | 268:ded5306a1fd1 | 2109 | //gPC.printf("\nSCP above threshold index:%d, Value:%d",i,scp_bin[i]); |
chaithanyarss | 331:1943be3fd178 | 2110 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2111 | scat_thres_index_scp[map_index_bins_2_srp_index(i,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2112 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2113 | at = 1; |
chaithanyarss | 331:1943be3fd178 | 2114 | //break; |
prasanthbj05 | 266:ae588e75cfa4 | 2115 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2116 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2117 | for(int i=48; i<52; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2118 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2119 | if(scp_bin[i] > scp_threshold_m1[i]){ |
ee12b079 | 268:ded5306a1fd1 | 2120 | //gPC.printf("\nSCP above threshold index:%d, Value:%d",i,scp_bin[i]); |
chaithanyarss | 331:1943be3fd178 | 2121 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2122 | scat_thres_index_scp[map_index_bins_2_srp_index(i,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2123 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2124 | at = 1; |
chaithanyarss | 331:1943be3fd178 | 2125 | //break; |
prasanthbj05 | 266:ae588e75cfa4 | 2126 | } |
shreeshas95 | 1:a0055b3280c8 | 2127 | } |
chaithanyarss | 331:1943be3fd178 | 2128 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2129 | scp_mode_count[3]++; |
chaithanyarss | 331:1943be3fd178 | 2130 | #endif |
shreeshas95 | 1:a0055b3280c8 | 2131 | } |
ee12b079 | 268:ded5306a1fd1 | 2132 | else if(compression_option==2){ |
ee12b079 | 268:ded5306a1fd1 | 2133 | if(scp_bin[50]>scp_sfp_threshold_m0_2[0]){ |
ee12b079 | 268:ded5306a1fd1 | 2134 | //gPC.printf("\nSCP above threshold index:50, Value:%",scp_bin[50]); |
chaithanyarss | 331:1943be3fd178 | 2135 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2136 | //thres_scp_index[map_index_bins_2_srp_index(50,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2137 | scat_thres_index_scp[map_index_bins_2_srp_index(50,srp_mode)-2] = 1; |
chaithanyarss | 331:1943be3fd178 | 2138 | #endif |
ee12b079 | 268:ded5306a1fd1 | 2139 | at=1; |
ee12b079 | 268:ded5306a1fd1 | 2140 | } |
chaithanyarss | 331:1943be3fd178 | 2141 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2142 | scp_mode_count[4]++; |
chaithanyarss | 331:1943be3fd178 | 2143 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2144 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2145 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2146 | /*----------------------------Tagging the scp packet formed from these 60 sfp's as AT or BT ends here--------------------------*/ |
chaithanyarss | 331:1943be3fd178 | 2147 | /*for(uint8_t temp_i=0;temp_i<52;temp_i++){ |
chaithanyarss | 331:1943be3fd178 | 2148 | gPC.printf("\n\rscp_bin[%d] =%d",temp_i+1,scp_bin[temp_i]); |
chaithanyarss | 331:1943be3fd178 | 2149 | }*/ |
prasanthbj05 | 266:ae588e75cfa4 | 2150 | if(srp_mode == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 2151 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2152 | //determining if non zero values of proton and electron bins exist for calibrated mode (srp) |
prasanthbj05 | 266:ae588e75cfa4 | 2153 | for(int i=0; i<17 ;i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2154 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2155 | if(scp_bin[i]>0) |
prasanthbj05 | 266:ae588e75cfa4 | 2156 | pzf = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2157 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2158 | for(int i=18; i<23 ;i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2159 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2160 | if(scp_bin[i]>0) |
prasanthbj05 | 266:ae588e75cfa4 | 2161 | ezf = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2162 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2163 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2164 | /*-----------------------------------------Tagging beacon packet as AT or BT starts here-------------------------------------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 2165 | beacon_at = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2166 | if(srp_mode==0) //those bins which can be meaningfully compared only in srp_mode==0 |
prasanthbj05 | 266:ae588e75cfa4 | 2167 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2168 | if(scp_bin[44]>beacon_threshold[0]) beacon_at = 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2169 | if(scp_bin[17]>beacon_threshold[5]) beacon_at = 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2170 | if(scp_bin[23]>beacon_threshold[6]) beacon_at = 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2171 | proton_scp_sum = 0; electron_scp_sum = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2172 | for(int i=0;i<17;i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2173 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2174 | proton_scp_sum += scp_bin[i]; |
prasanthbj05 | 266:ae588e75cfa4 | 2175 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2176 | for(int i=0; i<5; i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2177 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2178 | electron_scp_sum += scp_bin[18+i]; |
prasanthbj05 | 266:ae588e75cfa4 | 2179 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2180 | if(proton_scp_sum > beacon_threshold[7]) beacon_at =1; |
prasanthbj05 | 266:ae588e75cfa4 | 2181 | if(electron_scp_sum > beacon_threshold[8]) beacon_at =1; |
prasanthbj05 | 266:ae588e75cfa4 | 2182 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2183 | if(scp_bin[48]>beacon_threshold[1]) beacon_at = 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2184 | if(scp_bin[49]>beacon_threshold[2]) beacon_at = 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2185 | if(scp_bin[50]>beacon_threshold[3]) beacon_at = 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2186 | if(scp_bin[51]>beacon_threshold[4]) beacon_at = 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2187 | /*----------------------------------------Tagging beacon packet as AT or BT ends here------------------------------------------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 2188 | |
prasanthbj05 | 266:ae588e75cfa4 | 2189 | /*-----------------------------------------------Forming the beacon packet starts here-----------------------------------------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 2190 | //Last 512 bits of beacon_array excluding CRC bits is used for storing the 5 most recent beacon packets |
prasanthbj05 | 266:ae588e75cfa4 | 2191 | |
prasanthbj05 | 266:ae588e75cfa4 | 2192 | if(beacon_cntr == 1) |
prasanthbj05 | 266:ae588e75cfa4 | 2193 | { |
prasanthbj05 | 267:783c248a6207 | 2194 | beacon_ptr = &(beacon_array[47]); // starting block address, stores the oldest(among the 5 most recent) beacon packet |
prasanthbj05 | 266:ae588e75cfa4 | 2195 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2196 | else if(beacon_cntr>1 && beacon_cntr<6) |
prasanthbj05 | 266:ae588e75cfa4 | 2197 | { |
prasanthbj05 | 267:783c248a6207 | 2198 | beacon_ptr +=17; // increase the block number(totally 5 blocks for 5 beacon packets) |
prasanthbj05 | 266:ae588e75cfa4 | 2199 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2200 | else if(beacon_cntr == 6) |
prasanthbj05 | 266:ae588e75cfa4 | 2201 | { |
prasanthbj05 | 267:783c248a6207 | 2202 | 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 | 2203 | { // overwrite the new beacon packet in the 5th block |
prasanthbj05 | 267:783c248a6207 | 2204 | beacon_array[47+i] = beacon_array[64+i]; |
prasanthbj05 | 267:783c248a6207 | 2205 | beacon_array[64+i] = beacon_array[81+i]; |
prasanthbj05 | 267:783c248a6207 | 2206 | beacon_array[81+i] = beacon_array[98+i]; |
prasanthbj05 | 267:783c248a6207 | 2207 | beacon_array[98+i] = beacon_array[115+i]; |
prasanthbj05 | 266:ae588e75cfa4 | 2208 | } |
prasanthbj05 | 267:783c248a6207 | 2209 | beacon_ptr = &(beacon_array[115]); //address of the 5th block |
prasanthbj05 | 266:ae588e75cfa4 | 2210 | beacon_cntr = 5; |
prasanthbj05 | 266:ae588e75cfa4 | 2211 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2212 | pointer = beacon_ptr; debug_cntr = 0; space = 8; |
prasanthbj05 | 267:783c248a6207 | 2213 | space = adjust(2, compression_option,pointer,space); pointer += space>>4; debug_cntr += space>>4; //first two bits of compression option |
prasanthbj05 | 267:783c248a6207 | 2214 | space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2215 | space = adjust(3,(sci_time>>32)&0x07,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2216 | space = adjust(8,(sci_time>>24)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2217 | space = adjust(8,(sci_time>>16)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2218 | space = adjust(8,(sci_time>>8)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2219 | space = adjust(8,(sci_time)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2220 | space = adjust(4, (attitude)&0x0f,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2221 | |
prasanthbj05 | 266:ae588e75cfa4 | 2222 | if(srp_mode==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2223 | if(beacon_at == 0){ |
prasanthbj05 | 267:783c248a6207 | 2224 | space = adjust(1, 0,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2225 | space = adjust(6, compress(scp_bin[44],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2226 | space = adjust(7, compress(scp_bin[48],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2227 | space = adjust(7, compress(scp_bin[49],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2228 | space = adjust(7, compress(scp_bin[50],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2229 | space = adjust(7, compress(scp_bin[51],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2230 | space = adjust(6, compress(scp_bin[17],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2231 | space = adjust(6, compress(scp_bin[23],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2232 | space = adjust(4, compress(proton_scp_sum ,10,2)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2233 | space = adjust(8, compress(proton_scp_sum ,10,2),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2234 | space = adjust(4, compress(electron_scp_sum ,10,2)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2235 | space = adjust(8, compress(electron_scp_sum ,10,2),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2236 | pointer = pointer + 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2237 | for(int temp_i = 12; temp_i<14; temp_i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2238 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2239 | *pointer = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2240 | pointer = pointer + 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2241 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2242 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2243 | else if(beacon_at==1){ |
prasanthbj05 | 266:ae588e75cfa4 | 2244 | space = adjust(1, 1,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2245 | space = adjust(1, compress(sfp_bin[44],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2246 | space = adjust(8, compress(sfp_bin[44],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2247 | space = adjust(4, compress(sfp_bin[48],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2248 | space = adjust(8, compress(sfp_bin[48],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2249 | space = adjust(4, compress(sfp_bin[49],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2250 | space = adjust(8, compress(sfp_bin[49],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2251 | space = adjust(4, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2252 | space = adjust(8, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2253 | space = adjust(4, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2254 | space = adjust(8, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2255 | space = adjust(1, compress(sfp_bin[17],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2256 | space = adjust(8, compress(sfp_bin[17],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2257 | space = adjust(1, compress(sfp_bin[23],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2258 | space = adjust(8, compress(sfp_bin[23],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2259 | space = adjust(1, compress(proton_scp_sum ,6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2260 | space = adjust(8, compress(proton_scp_sum ,6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2261 | space = adjust(1, compress(electron_scp_sum,6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2262 | space = adjust(8, compress(electron_scp_sum ,6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2263 | //cout<<"for beacon space = "<<(space&0x0f)<<" counter = "<<debug_cntr; |
prasanthbj05 | 266:ae588e75cfa4 | 2264 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2265 | }else if(srp_mode==1){ |
prasanthbj05 | 266:ae588e75cfa4 | 2266 | if(beacon_at==0){ |
prasanthbj05 | 267:783c248a6207 | 2267 | space = adjust(1, 0,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2268 | space = adjust(6, compress(0,3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2269 | space = adjust(7, compress(sfp_bin[48],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2270 | space = adjust(7, compress(sfp_bin[49],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2271 | space = adjust(7, compress(sfp_bin[50],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2272 | space = adjust(7, compress(sfp_bin[51],4,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2273 | pointer = pointer + 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2274 | for(uint8_t temp_i = 7; temp_i<14; temp_i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2275 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2276 | *pointer = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2277 | pointer = pointer + 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2278 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2279 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2280 | else if(beacon_at==1){ |
prasanthbj05 | 267:783c248a6207 | 2281 | space = adjust(1, 1,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2282 | space = adjust(1, compress(0,6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 267:783c248a6207 | 2283 | space = adjust(8, compress(0,6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2284 | space = adjust(4, compress(sfp_bin[48],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2285 | space = adjust(8, compress(sfp_bin[48],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2286 | space = adjust(4, compress(sfp_bin[49],9,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2287 | space = adjust(8, compress(sfp_bin[49],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2288 | space = adjust(4, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2289 | space = adjust(8, compress(sfp_bin[50],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2290 | space = adjust(4, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2291 | space = adjust(8, compress(sfp_bin[51],9,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2292 | pointer = pointer + 1; |
prasanthbj05 | 266:ae588e75cfa4 | 2293 | for(uint8_t temp_i = 10; temp_i<14; temp_i++) |
prasanthbj05 | 266:ae588e75cfa4 | 2294 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2295 | *pointer = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2296 | pointer = pointer + 1; |
ee12b079 | 93:4d76de54a699 | 2297 | } |
shreeshas95 | 1:a0055b3280c8 | 2298 | } |
shreeshas95 | 1:a0055b3280c8 | 2299 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2300 | beacon_cntr++; |
prasanthbj05 | 266:ae588e75cfa4 | 2301 | /*--------------------------------------------------beacon packet ends here--------------------------------------------------------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 2302 | |
chaithanyarss | 290:3159ff1081a2 | 2303 | //gPC.printf("\n\n\rSCP"); |
prasanthbj05 | 266:ae588e75cfa4 | 2304 | uint8_t packet_pp,time_diff; |
prasanthbj05 | 266:ae588e75cfa4 | 2305 | /*------------------------------------------Forming a science packet(scp) starts here----------------------------------------------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 2306 | |
ee12b079 | 93:4d76de54a699 | 2307 | pointer = scp; debug_cntr = 0; space = 8; |
chaithanyarss | 331:1943be3fd178 | 2308 | time_diff = 0; |
chaithanyarss | 331:1943be3fd178 | 2309 | packet_pp = 1; //value 1 indicates there is no time jump, i.e. next packet in the frame arrived within 10 seconds |
chaithanyarss | 331:1943be3fd178 | 2310 | |
chaithanyarss | 331:1943be3fd178 | 2311 | /*upto line 892: if the time difference between two successive frames is greater than 10 seconds then packet_pp bit is set to 1 |
chaithanyarss | 331:1943be3fd178 | 2312 | to indicate this time jump*/ |
chaithanyarss | 331:1943be3fd178 | 2313 | if(time_prev_scp!=sci_time) |
prasanthbj05 | 266:ae588e75cfa4 | 2314 | { |
chaithanyarss | 331:1943be3fd178 | 2315 | if((((uint8_t)(sci_time>>7))&0x3f)<(((uint8_t)(time_prev_scp>>7))&0x3f)) |
chaithanyarss | 331:1943be3fd178 | 2316 | { |
chaithanyarss | 331:1943be3fd178 | 2317 | time_diff = time_diff+60; |
chaithanyarss | 331:1943be3fd178 | 2318 | } |
chaithanyarss | 331:1943be3fd178 | 2319 | time_diff += (((uint8_t)(sci_time>>7))&0x3f); |
chaithanyarss | 331:1943be3fd178 | 2320 | time_diff -= (((uint8_t)(time_prev_scp>>7))&0x3f); |
chaithanyarss | 331:1943be3fd178 | 2321 | if(time_diff>10){ |
chaithanyarss | 331:1943be3fd178 | 2322 | packet_pp = 0; |
chaithanyarss | 331:1943be3fd178 | 2323 | } |
chaithanyarss | 331:1943be3fd178 | 2324 | else{ |
chaithanyarss | 331:1943be3fd178 | 2325 | uint8_t min[2],hour[2],day[2],month[2],year[2]; |
chaithanyarss | 331:1943be3fd178 | 2326 | min[0] = (((uint8_t)(sci_time>>13))&0x3f); |
chaithanyarss | 331:1943be3fd178 | 2327 | min[1] = (((uint8_t)(time_prev_scp>>13))&0x3f); |
chaithanyarss | 331:1943be3fd178 | 2328 | hour[0] = (((uint8_t)(sci_time>>19))&0x1f); |
chaithanyarss | 331:1943be3fd178 | 2329 | hour[1] = (((uint8_t)(time_prev_scp>>19))&0x1f); |
chaithanyarss | 331:1943be3fd178 | 2330 | day[0] = (((uint8_t)(sci_time>>24))&0x1f); |
chaithanyarss | 331:1943be3fd178 | 2331 | day[1] = (((uint8_t)(time_prev_scp>>24))&0x1f); |
chaithanyarss | 331:1943be3fd178 | 2332 | month[0] = (((uint8_t)(sci_time>>29))&0x0f); |
chaithanyarss | 331:1943be3fd178 | 2333 | month[1] = (((uint8_t)(time_prev_scp>>29))&0x0f); |
chaithanyarss | 331:1943be3fd178 | 2334 | year[0] = (((uint8_t)(sci_time>>33))&0x03); |
chaithanyarss | 331:1943be3fd178 | 2335 | year[1] = (((uint8_t)(time_prev_scp>>33))&0x03); |
chaithanyarss | 331:1943be3fd178 | 2336 | if(min[0]<min[1]){ |
chaithanyarss | 331:1943be3fd178 | 2337 | if(hour[0]<hour[1]){ |
chaithanyarss | 331:1943be3fd178 | 2338 | if(day[0]<day[1]){ |
chaithanyarss | 331:1943be3fd178 | 2339 | if(month[0]<month[1]){ |
chaithanyarss | 331:1943be3fd178 | 2340 | if((year[0]-year[1])!=1) |
chaithanyarss | 331:1943be3fd178 | 2341 | packet_pp = 0; |
chaithanyarss | 331:1943be3fd178 | 2342 | } |
chaithanyarss | 331:1943be3fd178 | 2343 | else if((month[0]-month[1])!=1) |
chaithanyarss | 331:1943be3fd178 | 2344 | packet_pp = 0; |
chaithanyarss | 331:1943be3fd178 | 2345 | } |
chaithanyarss | 331:1943be3fd178 | 2346 | else if((day[0]-day[1])!=1) |
chaithanyarss | 331:1943be3fd178 | 2347 | packet_pp = 0; |
chaithanyarss | 331:1943be3fd178 | 2348 | } |
chaithanyarss | 331:1943be3fd178 | 2349 | else if((hour[0]-hour[1])!=1) |
chaithanyarss | 331:1943be3fd178 | 2350 | packet_pp = 0; |
chaithanyarss | 331:1943be3fd178 | 2351 | } |
chaithanyarss | 331:1943be3fd178 | 2352 | else if((min[0]-min[1])!=1) |
chaithanyarss | 331:1943be3fd178 | 2353 | packet_pp = 0; |
chaithanyarss | 331:1943be3fd178 | 2354 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2355 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2356 | time_prev_scp = sci_time; |
prasanthbj05 | 266:ae588e75cfa4 | 2357 | uint32_t sfp_at_counter; |
prasanthbj05 | 266:ae588e75cfa4 | 2358 | sfp_at_counter = FSC_CURRENT[2]; |
prasanthbj05 | 266:ae588e75cfa4 | 2359 | space = adjust(1, packet_pp,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2360 | space = adjust(5, (sci_time>>8)&0x1f,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2361 | space = adjust(8, (sci_time)&0xff,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2362 | space = adjust(4, (attitude)&0xf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2363 | space = adjust(2, compression_option,pointer,space); pointer += space>>4; debug_cntr += space>>4; //first two bits of compression option |
prasanthbj05 | 266:ae588e75cfa4 | 2364 | space = adjust(1, at,pointer,space); pointer += space>>4; debug_cntr += space>>4; //last bit of compression option |
prasanthbj05 | 266:ae588e75cfa4 | 2365 | space = adjust(1, srp_mode,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2366 | if(!((srp_mode==0 && compression_option==2)|(srp_mode==1 && compression_option==2))) |
prasanthbj05 | 266:ae588e75cfa4 | 2367 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2368 | space = adjust(8, sfp_at_counter>>16,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2369 | space = adjust(8, sfp_at_counter>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2370 | space = adjust(8, sfp_at_counter,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2371 | } |
ee12b079 | 93:4d76de54a699 | 2372 | if(srp_mode == 0 && compression_option == 0){ //normal callibrated mode |
ee12b079 | 268:ded5306a1fd1 | 2373 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2374 | gPC.printf("\n\rSCP - Normal calibrated mode"); |
ee12b079 | 268:ded5306a1fd1 | 2375 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2376 | space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2377 | space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2378 | if(at == 0 ){ |
ee12b079 | 268:ded5306a1fd1 | 2379 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2380 | gPC.printf("\n\rBelow threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2381 | #endif |
ee12b079 | 93:4d76de54a699 | 2382 | for(int i = 0; i<8 ;i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2383 | space = adjust(7,compress(scp_bin[24+i],4,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2384 | } |
ee12b079 | 93:4d76de54a699 | 2385 | for(int i = 0; i<12 ;i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2386 | space = adjust(5,compress(scp_bin[32+i],2,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2387 | } |
ee12b079 | 93:4d76de54a699 | 2388 | for(int i = 0; i<4 ;i++){ |
ee12b079 | 93:4d76de54a699 | 2389 | space = adjust(6,compress(scp_bin[44+i],3,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2390 | } |
ee12b079 | 93:4d76de54a699 | 2391 | for(int i = 0; i<4 ;i++){ |
ee12b079 | 93:4d76de54a699 | 2392 | space = adjust(7,compress(scp_bin[48+i],4,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2393 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2394 | space = adjust(6,compress(scp_bin[17],3,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2395 | space = adjust(6,compress(scp_bin[23],3,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2396 | if(pzf == 0){ |
ee12b079 | 93:4d76de54a699 | 2397 | for(int i = 0; i<2 ;i++){ |
ee12b079 | 93:4d76de54a699 | 2398 | space = adjust(8,compress(scp_bin[i],6,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2399 | } |
ee12b079 | 93:4d76de54a699 | 2400 | for(int i = 0; i<15 ;i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2401 | space = adjust(7,compress(scp_bin[i+2],5,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2402 | } |
ee12b079 | 93:4d76de54a699 | 2403 | } |
ee12b079 | 93:4d76de54a699 | 2404 | if(ezf == 0){ |
ee12b079 | 93:4d76de54a699 | 2405 | space = adjust(1,compress(scp_bin[18],7,2)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2406 | space = adjust(8,compress(scp_bin[18],7,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2407 | for(int i=0; i<4; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2408 | space = adjust(8,compress(scp_bin[19+i],6,2) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2409 | } |
ee12b079 | 93:4d76de54a699 | 2410 | } |
ee12b079 | 93:4d76de54a699 | 2411 | }// below threshold ends here |
ee12b079 | 93:4d76de54a699 | 2412 | if(at == 1){ |
ee12b079 | 268:ded5306a1fd1 | 2413 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2414 | gPC.printf("\n\rAbove threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2415 | #endif |
ee12b079 | 93:4d76de54a699 | 2416 | for(int i = 0; i<8 ;i++){ |
ee12b079 | 93:4d76de54a699 | 2417 | space = adjust(7,compress(scp_bin[24+i],4,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2418 | } |
ee12b079 | 93:4d76de54a699 | 2419 | for(int i = 0; i<12 ;i++){ |
chaithanyarss | 331:1943be3fd178 | 2420 | space = adjust(5,compress2(scp_bin[32+i],2,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2421 | } |
ee12b079 | 93:4d76de54a699 | 2422 | for(int i = 0; i<4 ;i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2423 | space = adjust(1,compress(scp_bin[44+i],6,3)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2424 | space = adjust(8,compress(scp_bin[44+i],6,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2425 | } |
ee12b079 | 93:4d76de54a699 | 2426 | for(int i=0; i<4 ;i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2427 | space = adjust(4,compress(scp_bin[48+i],9,3)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2428 | space = adjust(8,compress(scp_bin[48+i],9,3) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2429 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2430 | space = adjust(1,compress(scp_bin[17],6,3)>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2431 | space = adjust(8,compress(scp_bin[17],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2432 | space = adjust(1,compress(scp_bin[23],6,3)>>8,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2433 | space = adjust(8,compress(scp_bin[23],6,3),pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2434 | |
ee12b079 | 93:4d76de54a699 | 2435 | if(pzf == 0){ |
ee12b079 | 93:4d76de54a699 | 2436 | for(int i = 0; i<17 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2437 | space = adjust(8, (compress(scp_bin[i],5,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2438 | } |
ee12b079 | 93:4d76de54a699 | 2439 | } |
ee12b079 | 93:4d76de54a699 | 2440 | if(ezf == 0){ |
ee12b079 | 93:4d76de54a699 | 2441 | for(int i = 0; i<5 ; i++){ |
ee12b079 | 93:4d76de54a699 | 2442 | space = adjust(8, (compress(scp_bin[18+i],5,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2443 | } |
ee12b079 | 93:4d76de54a699 | 2444 | } |
ee12b079 | 93:4d76de54a699 | 2445 | } //above thresholds ends |
ee12b079 | 93:4d76de54a699 | 2446 | } //srp_mode == 0 ends |
ee12b079 | 93:4d76de54a699 | 2447 | if(srp_mode == 1){ |
ee12b079 | 268:ded5306a1fd1 | 2448 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2449 | gPC.printf("\n\rSCP - Scatter plot mode"); |
ee12b079 | 268:ded5306a1fd1 | 2450 | #endif |
ee12b079 | 93:4d76de54a699 | 2451 | if(at == 0){ |
ee12b079 | 268:ded5306a1fd1 | 2452 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2453 | gPC.printf("\n\rBelow Threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2454 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2455 | for(int i=0; i<48; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2456 | space = adjust(6, ((compress(scp_bin[i],3,3))&0xff) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2457 | } |
ee12b079 | 93:4d76de54a699 | 2458 | for(int i = 0 ; i < 4 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2459 | space = adjust(7, (compress(scp_bin[48+i],4,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2460 | } |
ee12b079 | 93:4d76de54a699 | 2461 | } |
ee12b079 | 93:4d76de54a699 | 2462 | if(at == 1){ |
ee12b079 | 268:ded5306a1fd1 | 2463 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2464 | gPC.printf("\n\rAbove threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2465 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2466 | for(int i=0; i<48; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2467 | space = adjust(7, (compress((scp_bin[i]/2),4,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2468 | } |
ee12b079 | 93:4d76de54a699 | 2469 | for(int i = 0 ; i < 4 ; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2470 | space = adjust(4, (compress(scp_bin[48+i],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2471 | space = adjust(8, (compress(scp_bin[48+i],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2472 | } |
ee12b079 | 93:4d76de54a699 | 2473 | } |
ee12b079 | 93:4d76de54a699 | 2474 | }// scp mode 1 end |
ee12b079 | 93:4d76de54a699 | 2475 | if( srp_mode == 0 && compression_option == 1 ){ //scp data conservation mode |
ee12b079 | 268:ded5306a1fd1 | 2476 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2477 | gPC.printf("\n\rSCP - Calibrated data conservation mode"); |
ee12b079 | 268:ded5306a1fd1 | 2478 | #endif |
ee12b079 | 93:4d76de54a699 | 2479 | space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2480 | space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2481 | if(at == 0){ |
ee12b079 | 268:ded5306a1fd1 | 2482 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2483 | gPC.printf("\n\rBelow threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2484 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2485 | space = adjust(6, (compress(scp_bin[44],3,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2486 | for(int i=0; i<4; i++){ |
prasanthbj05 | 266:ae588e75cfa4 | 2487 | space = adjust(7, (compress(scp_bin[48+i],4,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2488 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2489 | space = adjust(6, (compress(scp_bin[17],3,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2490 | space = adjust(6, (compress(scp_bin[23],3,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2491 | if(pzf==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2492 | space = adjust(4, (compress(proton_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2493 | space = adjust(8, ( compress(proton_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2494 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2495 | if(ezf==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2496 | space = adjust(4, (compress(electron_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2497 | space = adjust(8, (compress(electron_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2498 | } |
ee12b079 | 93:4d76de54a699 | 2499 | }else if(at == 1){ |
ee12b079 | 268:ded5306a1fd1 | 2500 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2501 | gPC.printf("\n\rAbove threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2502 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2503 | space = adjust(1, (compress(scp_bin[44],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2504 | space = adjust(8, (compress(scp_bin[44],6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2505 | for(int i=0; i<4; i++){ |
ee12b079 | 93:4d76de54a699 | 2506 | space = adjust(4, (compress(scp_bin[48+i],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2507 | space = adjust(8, (compress(scp_bin[48+i],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2508 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2509 | space = adjust(1, (compress(scp_bin[17],6,3)>>8) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2510 | space = adjust(8, (compress(scp_bin[17],6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2511 | space = adjust(1, (compress(scp_bin[23],6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2512 | space = adjust(8, (compress(scp_bin[23],6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2513 | if(pzf==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2514 | space = adjust(1, (compress(proton_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2515 | space = adjust(8, (compress(proton_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2516 | } |
ee12b079 | 93:4d76de54a699 | 2517 | if(ezf==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2518 | space = adjust(1, (compress(electron_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2519 | space = adjust(8, (compress(electron_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
ee12b079 | 93:4d76de54a699 | 2520 | } |
ee12b079 | 93:4d76de54a699 | 2521 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2522 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2523 | if(compression_option == 2 ) //scp extreme data conservation mode |
prasanthbj05 | 266:ae588e75cfa4 | 2524 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2525 | if(srp_mode==0) |
prasanthbj05 | 266:ae588e75cfa4 | 2526 | { |
ee12b079 | 268:ded5306a1fd1 | 2527 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2528 | gPC.printf("\n\rSCP - calibrated extreme data conservation mode"); |
ee12b079 | 268:ded5306a1fd1 | 2529 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2530 | space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2531 | space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2532 | if(at==0){ |
ee12b079 | 268:ded5306a1fd1 | 2533 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2534 | gPC.printf("\n\rBelow threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2535 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2536 | space = adjust(7, (compress(scp_bin[50],4,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2537 | if(pzf==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2538 | space = adjust(4, (compress(proton_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2539 | space = adjust(8, ( compress(proton_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2540 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2541 | if(ezf==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2542 | space = adjust(4, (compress(electron_scp_sum,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2543 | space = adjust(8, (compress(electron_scp_sum,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2544 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2545 | }else if(at==1){ |
ee12b079 | 268:ded5306a1fd1 | 2546 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2547 | gPC.printf("\n\rAbove threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2548 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2549 | space = adjust(4, (compress(scp_bin[50],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2550 | space = adjust(8, (compress(scp_bin[50],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2551 | if(pzf==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2552 | space = adjust(1, (compress(proton_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2553 | space = adjust(8, (compress(proton_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2554 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2555 | if(ezf==0){ |
prasanthbj05 | 266:ae588e75cfa4 | 2556 | space = adjust(1, (compress(electron_scp_sum,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2557 | space = adjust(8, (compress(electron_scp_sum,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2558 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2559 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2560 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2561 | else if(srp_mode==1) |
prasanthbj05 | 266:ae588e75cfa4 | 2562 | { |
ee12b079 | 268:ded5306a1fd1 | 2563 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2564 | gPC.printf("\n\rSCP - Scatter plot, extreme data conservation mode"); |
ee12b079 | 268:ded5306a1fd1 | 2565 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2566 | 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 | 2567 | space = adjust(1, pzf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2568 | space = adjust(1, ezf,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2569 | if(at==0){ |
ee12b079 | 268:ded5306a1fd1 | 2570 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2571 | gPC.printf("\n\rBelow threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2572 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2573 | space = adjust(7, (compress(scp_bin[50],4,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2574 | // below 4 lines - filling the proton ane electron energy bins with zeros(junk value) since they're not available in srp |
prasanthbj05 | 266:ae588e75cfa4 | 2575 | space = adjust(4, (compress(0,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2576 | space = adjust(8, (compress(0,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2577 | space = adjust(4, (compress(0,10,2))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2578 | space = adjust(8, (compress(0,10,2)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2579 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2580 | else if(at==1){ |
ee12b079 | 268:ded5306a1fd1 | 2581 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2582 | gPC.printf("\n\rAbove threshold"); |
ee12b079 | 268:ded5306a1fd1 | 2583 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2584 | space = adjust(4, (compress(scp_bin[50],9,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2585 | space = adjust(8, (compress(scp_bin[50],9,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2586 | space = adjust(1, (compress(0,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2587 | space = adjust(8, (compress(0,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2588 | space = adjust(1, (compress(0,6,3))>>8 ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2589 | space = adjust(8, (compress(0,6,3)) ,pointer,space); pointer += space>>4; debug_cntr += space>>4; |
prasanthbj05 | 266:ae588e75cfa4 | 2590 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2591 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2592 | } |
chaithanyarss | 331:1943be3fd178 | 2593 | /*---------------------------------------------forming a science coarse packet ends here----------------------------------------------*/ |
prasanthbj05 | 266:ae588e75cfa4 | 2594 | |
ee12b079 | 93:4d76de54a699 | 2595 | id = 0; |
ee12b079 | 93:4d76de54a699 | 2596 | if(srp_mode == 0 && compression_option == 0){ |
ee12b079 | 93:4d76de54a699 | 2597 | if(at == 0){ |
chaithanyarss | 331:1943be3fd178 | 2598 | length = 228; |
ee12b079 | 93:4d76de54a699 | 2599 | if(pzf == 0) |
ee12b079 | 93:4d76de54a699 | 2600 | length += 121; |
ee12b079 | 93:4d76de54a699 | 2601 | if(ezf == 0) |
ee12b079 | 93:4d76de54a699 | 2602 | length +=41; |
ee12b079 | 93:4d76de54a699 | 2603 | }else if(at == 1){ |
chaithanyarss | 331:1943be3fd178 | 2604 | length = 266; |
ee12b079 | 93:4d76de54a699 | 2605 | if(pzf == 0) |
ee12b079 | 93:4d76de54a699 | 2606 | length += 136; |
ee12b079 | 93:4d76de54a699 | 2607 | if(ezf == 0) |
ee12b079 | 93:4d76de54a699 | 2608 | length += 40; |
chaithanyarss | 331:1943be3fd178 | 2609 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2610 | dma_scp_at_count++; |
chaithanyarss | 331:1943be3fd178 | 2611 | #endif |
ee12b079 | 93:4d76de54a699 | 2612 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2613 | }else if(srp_mode == 0 && compression_option == 1){ //data conservation mode |
ee12b079 | 93:4d76de54a699 | 2614 | if(at == 0){ |
chaithanyarss | 331:1943be3fd178 | 2615 | length = 94; |
ee12b079 | 93:4d76de54a699 | 2616 | if(pzf == 0) |
ee12b079 | 93:4d76de54a699 | 2617 | length += 12; |
ee12b079 | 93:4d76de54a699 | 2618 | if(ezf == 0) |
ee12b079 | 93:4d76de54a699 | 2619 | length += 12; |
ee12b079 | 93:4d76de54a699 | 2620 | }else if(at == 1){ |
chaithanyarss | 331:1943be3fd178 | 2621 | length = 123; |
prasanthbj05 | 266:ae588e75cfa4 | 2622 | if(pzf == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 2623 | length += 9; |
prasanthbj05 | 266:ae588e75cfa4 | 2624 | if(ezf == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 2625 | length += 9; |
chaithanyarss | 331:1943be3fd178 | 2626 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2627 | dma_scp_at_count++; |
chaithanyarss | 331:1943be3fd178 | 2628 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2629 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2630 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2631 | else if( srp_mode == 1){ |
prasanthbj05 | 266:ae588e75cfa4 | 2632 | if(at == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 2633 | length = 368; |
chaithanyarss | 331:1943be3fd178 | 2634 | else if(at == 1){ |
prasanthbj05 | 266:ae588e75cfa4 | 2635 | length = 432; |
chaithanyarss | 331:1943be3fd178 | 2636 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2637 | dma_scp_at_count++; |
chaithanyarss | 331:1943be3fd178 | 2638 | #endif |
chaithanyarss | 331:1943be3fd178 | 2639 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2640 | } |
chaithanyarss | 331:1943be3fd178 | 2641 | else if(compression_option == 2 && srp_mode==0) //in extreme data conservation mode, length is same for both srp_modes |
prasanthbj05 | 266:ae588e75cfa4 | 2642 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2643 | if(at == 0){ |
chaithanyarss | 331:1943be3fd178 | 2644 | length = 31; |
prasanthbj05 | 266:ae588e75cfa4 | 2645 | if(pzf == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 2646 | length += 12; |
prasanthbj05 | 266:ae588e75cfa4 | 2647 | if(ezf == 0) |
prasanthbj05 | 266:ae588e75cfa4 | 2648 | length += 12; |
prasanthbj05 | 266:ae588e75cfa4 | 2649 | }else if(at == 1){ |
chaithanyarss | 331:1943be3fd178 | 2650 | length = 36; |
ee12b079 | 93:4d76de54a699 | 2651 | if(pzf == 0) |
ee12b079 | 93:4d76de54a699 | 2652 | length += 9; |
ee12b079 | 93:4d76de54a699 | 2653 | if(ezf == 0) |
ee12b079 | 93:4d76de54a699 | 2654 | length += 9; |
chaithanyarss | 331:1943be3fd178 | 2655 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2656 | dma_scp_at_count++; |
chaithanyarss | 331:1943be3fd178 | 2657 | #endif |
chaithanyarss | 331:1943be3fd178 | 2658 | } |
chaithanyarss | 331:1943be3fd178 | 2659 | } |
chaithanyarss | 331:1943be3fd178 | 2660 | else if(compression_option == 2 && srp_mode==1){ |
chaithanyarss | 331:1943be3fd178 | 2661 | if(at==0) |
chaithanyarss | 331:1943be3fd178 | 2662 | length = 56; |
chaithanyarss | 331:1943be3fd178 | 2663 | else if(at==1){ |
chaithanyarss | 331:1943be3fd178 | 2664 | length = 56; |
chaithanyarss | 331:1943be3fd178 | 2665 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2666 | dma_scp_at_count++; |
chaithanyarss | 331:1943be3fd178 | 2667 | #endif |
ee12b079 | 93:4d76de54a699 | 2668 | } |
ee12b079 | 93:4d76de54a699 | 2669 | } |
ee12b079 | 93:4d76de54a699 | 2670 | length = (length%8==0)?(length/8):(length/8)+1; |
ee12b079 | 268:ded5306a1fd1 | 2671 | #if scpz |
chaithanyarss | 331:1943be3fd178 | 2672 | gPC.printf("\n\rLength of SCP packet in bytes = %d",length); |
ee12b079 | 268:ded5306a1fd1 | 2673 | #endif |
chaithanyarss | 331:1943be3fd178 | 2674 | /*if(position_tm_frame[id]>129){ |
ee12b079 | 268:ded5306a1fd1 | 2675 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2676 | gPC.printf("\n\rSkipping the current TM frame. Inserting SCP into the next frame"); |
chaithanyarss | 290:3159ff1081a2 | 2677 | gPC.printf("\n\rposition_tm_frame = %d",position_tm_frame[id]); |
ee12b079 | 268:ded5306a1fd1 | 2678 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2679 | while(position_tm_frame[id]<132){ |
prasanthbj05 | 266:ae588e75cfa4 | 2680 | frames[id][position_tm_frame[id]] = 0; |
prasanthbj05 | 266:ae588e75cfa4 | 2681 | position_tm_frame[id]++; |
prasanthbj05 | 266:ae588e75cfa4 | 2682 | } |
chaithanyarss | 331:1943be3fd178 | 2683 | }*/ |
chaithanyarss | 331:1943be3fd178 | 2684 | if(srp_mode==0 && compression_option!=2){ |
chaithanyarss | 331:1943be3fd178 | 2685 | if(position_tm_frame[id]>126){ |
chaithanyarss | 331:1943be3fd178 | 2686 | #if scpz |
chaithanyarss | 331:1943be3fd178 | 2687 | gPC.printf("\n\rSkipping the current TM frame. Inserting SCP into the next frame"); |
chaithanyarss | 331:1943be3fd178 | 2688 | gPC.printf("\n\rposition_tm_frame = %d",position_tm_frame[id]); |
chaithanyarss | 331:1943be3fd178 | 2689 | #endif |
chaithanyarss | 331:1943be3fd178 | 2690 | while(position_tm_frame[id]<132){ |
chaithanyarss | 331:1943be3fd178 | 2691 | frames[id][position_tm_frame[id]] = 0; |
chaithanyarss | 331:1943be3fd178 | 2692 | position_tm_frame[id]++; |
chaithanyarss | 331:1943be3fd178 | 2693 | } |
chaithanyarss | 331:1943be3fd178 | 2694 | } |
chaithanyarss | 331:1943be3fd178 | 2695 | } |
chaithanyarss | 331:1943be3fd178 | 2696 | else if(((srp_mode==0)||(srp_mode==1)) && compression_option==2){ |
chaithanyarss | 331:1943be3fd178 | 2697 | if(position_tm_frame[id]>129){ |
chaithanyarss | 331:1943be3fd178 | 2698 | #if scpz |
chaithanyarss | 331:1943be3fd178 | 2699 | gPC.printf("\n\rSkipping the current TM frame. Inserting SCP into the next frame"); |
chaithanyarss | 331:1943be3fd178 | 2700 | gPC.printf("\n\rposition_tm_frame = %d",position_tm_frame[id]); |
chaithanyarss | 331:1943be3fd178 | 2701 | #endif |
chaithanyarss | 331:1943be3fd178 | 2702 | while(position_tm_frame[id]<132){ |
chaithanyarss | 331:1943be3fd178 | 2703 | frames[id][position_tm_frame[id]] = 0; |
chaithanyarss | 331:1943be3fd178 | 2704 | position_tm_frame[id]++; |
chaithanyarss | 331:1943be3fd178 | 2705 | } |
chaithanyarss | 331:1943be3fd178 | 2706 | } |
chaithanyarss | 331:1943be3fd178 | 2707 | } |
chaithanyarss | 331:1943be3fd178 | 2708 | else if(srp_mode==1){ |
chaithanyarss | 331:1943be3fd178 | 2709 | if(position_tm_frame[id]>129){ |
chaithanyarss | 331:1943be3fd178 | 2710 | #if scpz |
chaithanyarss | 331:1943be3fd178 | 2711 | gPC.printf("\n\rSkipping the current TM frame. Inserting SCP into the next frame"); |
chaithanyarss | 331:1943be3fd178 | 2712 | gPC.printf("\n\rposition_tm_frame = %d",position_tm_frame[id]); |
chaithanyarss | 331:1943be3fd178 | 2713 | #endif |
chaithanyarss | 331:1943be3fd178 | 2714 | while(position_tm_frame[id]<132){ |
chaithanyarss | 331:1943be3fd178 | 2715 | frames[id][position_tm_frame[id]] = 0; |
chaithanyarss | 331:1943be3fd178 | 2716 | position_tm_frame[id]++; |
chaithanyarss | 331:1943be3fd178 | 2717 | } |
chaithanyarss | 331:1943be3fd178 | 2718 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2719 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2720 | if(position_tm_frame[id]==position_tm_starting[id]){ |
prasanthbj05 | 266:ae588e75cfa4 | 2721 | frames[id][4] = position_tm_starting[id]; |
prasanthbj05 | 266:ae588e75cfa4 | 2722 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2723 | for(int j= 0; j < length ;) |
prasanthbj05 | 266:ae588e75cfa4 | 2724 | { |
prasanthbj05 | 266:ae588e75cfa4 | 2725 | if(position_tm_frame[id]==frames[id][4]){ |
ee12b079 | 268:ded5306a1fd1 | 2726 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2727 | gPC.printf("\n\rInserting Time into SCP_TM"); |
ee12b079 | 268:ded5306a1fd1 | 2728 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2729 | frames[id][5] = (uint8_t)((sci_time>>29)&0x3f); |
prasanthbj05 | 266:ae588e75cfa4 | 2730 | frames[id][6] = (uint8_t)((sci_time>>21)&0xff); |
prasanthbj05 | 266:ae588e75cfa4 | 2731 | frames[id][7] = (uint8_t)((sci_time>>13)&0x3f); |
prasanthbj05 | 266:ae588e75cfa4 | 2732 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2733 | if(position_tm_frame[id]<132){ |
prasanthbj05 | 266:ae588e75cfa4 | 2734 | frames[id][position_tm_frame[id]] = scp[j]; |
prasanthbj05 | 266:ae588e75cfa4 | 2735 | j++; |
ee12b079 | 93:4d76de54a699 | 2736 | position_tm_frame[id]++; |
prasanthbj05 | 266:ae588e75cfa4 | 2737 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2738 | if(position_tm_frame[id] == 132) //space full in the frame bro |
prasanthbj05 | 266:ae588e75cfa4 | 2739 | { |
ee12b079 | 268:ded5306a1fd1 | 2740 | #if scpz |
chaithanyarss | 290:3159ff1081a2 | 2741 | gPC.printf("\n\rSCP_TM frame full. Length of current SCP packet = %d",j); |
ee12b079 | 268:ded5306a1fd1 | 2742 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2743 | pointer = frames[id]; |
prasanthbj05 | 266:ae588e75cfa4 | 2744 | space = adjust(1,0,pointer,8); |
prasanthbj05 | 266:ae588e75cfa4 | 2745 | space = adjust(4,1,pointer,space); |
prasanthbj05 | 266:ae588e75cfa4 | 2746 | FSC_science = FSC_CURRENT[1]; |
chaithanyarss | 290:3159ff1081a2 | 2747 | //gPC.printf("1 = 0x%X",FSC_science); |
chaithanyarss | 290:3159ff1081a2 | 2748 | |
chaithanyarss | 290:3159ff1081a2 | 2749 | #if debug_fsc |
chaithanyarss | 331:1943be3fd178 | 2750 | frames[id][1] = (test_fsc[1]>>16)&0xff; |
chaithanyarss | 331:1943be3fd178 | 2751 | frames[id][2] = (test_fsc[1]>>8)&0xff; |
chaithanyarss | 331:1943be3fd178 | 2752 | frames[id][3] = (test_fsc[1])&0xff; |
chaithanyarss | 290:3159ff1081a2 | 2753 | test_fsc[1]++; |
chaithanyarss | 290:3159ff1081a2 | 2754 | #endif |
chaithanyarss | 290:3159ff1081a2 | 2755 | #if !debug_fsc |
chaithanyarss | 290:3159ff1081a2 | 2756 | frames[id][1] = (FSC_science>>16)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 2757 | frames[id][2] = (FSC_science>>8)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 2758 | frames[id][3] = (FSC_science)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 2759 | #endif |
chaithanyarss | 290:3159ff1081a2 | 2760 | |
prasanthbj05 | 266:ae588e75cfa4 | 2761 | temp_crc = crc16_gen(frames[id],132); |
prasanthbj05 | 266:ae588e75cfa4 | 2762 | frames[id][132] = temp_crc>>8; |
prasanthbj05 | 266:ae588e75cfa4 | 2763 | frames[id][133] = temp_crc & 0xff; |
ee12b079 | 268:ded5306a1fd1 | 2764 | #if scpz |
chaithanyarss | 331:1943be3fd178 | 2765 | gPC.printf("\n\rFirst head pointer: 0x%02X",frames[id][4]); |
chaithanyarss | 331:1943be3fd178 | 2766 | gPC.printf("\n\rFirst head pointer contents: 0x%02X",frames[id][frames[id][4]]); |
chaithanyarss | 331:1943be3fd178 | 2767 | gPC.printf("\n\rPrinting SCP_TM\n\r{"); |
ee12b079 | 268:ded5306a1fd1 | 2768 | for(uint8_t z=0;z<134;z++){ |
chaithanyarss | 290:3159ff1081a2 | 2769 | gPC.printf("%02X",frames[id][z]); |
ee12b079 | 268:ded5306a1fd1 | 2770 | } |
ee12b079 | 268:ded5306a1fd1 | 2771 | gPC.printf("}\n\r"); |
ee12b079 | 268:ded5306a1fd1 | 2772 | #endif |
chaithanyarss | 331:1943be3fd178 | 2773 | #if tabulation |
chaithanyarss | 331:1943be3fd178 | 2774 | tabulate_TM(&frames[id][0]); |
chaithanyarss | 331:1943be3fd178 | 2775 | #endif |
prasanthbj05 | 266:ae588e75cfa4 | 2776 | exor(frames[id]); |
prasanthbj05 | 266:ae588e75cfa4 | 2777 | convolution(frames[id]); |
prasanthbj05 | 266:ae588e75cfa4 | 2778 | interleave(TM_convoluted_data,TM_interleave_data); |
prasanthbj05 | 266:ae588e75cfa4 | 2779 | interleave(TM_convoluted_data+ 135,TM_interleave_data + 144); |
samp1234 | 346:204497974293 | 2780 | gPC.printf("endSCI_SD13"); |
samp1234 | 346:204497974293 | 2781 | // sd_stat = SD_WRITE(TM_interleave_data,FSC_science+1,1); //sd_write returns ack, for now not included |
samp1234 | 346:204497974293 | 2782 | gPC.printf("endSCI_SD14"); |
ee12b079 | 268:ded5306a1fd1 | 2783 | if(sd_stat) |
chaithanyarss | 290:3159ff1081a2 | 2784 | { |
chaithanyarss | 290:3159ff1081a2 | 2785 | gPC.puts("sd write fail"); |
chaithanyarss | 290:3159ff1081a2 | 2786 | } |
prasanthbj05 | 266:ae588e75cfa4 | 2787 | position_tm_frame[id] = position_tm_starting[id]; |
chaithanyarss | 331:1943be3fd178 | 2788 | if(j!=0) |
chaithanyarss | 331:1943be3fd178 | 2789 | frames[id][4] = (length - j)+position_tm_starting[id]; |
chaithanyarss | 331:1943be3fd178 | 2790 | else if(j==0) |
chaithanyarss | 331:1943be3fd178 | 2791 | frames[id][4] = position_tm_starting[id]; |
prasanthbj05 | 266:ae588e75cfa4 | 2792 | } |
ee12b079 | 93:4d76de54a699 | 2793 | } |
ee12b079 | 268:ded5306a1fd1 | 2794 | #if scpz_last |
chaithanyarss | 290:3159ff1081a2 | 2795 | //gPC.printf("\n\rPrinting the last SCP_TM frame"); |
ee12b079 | 268:ded5306a1fd1 | 2796 | //gPC.printf("\n\n\rPosition of tm_pointer: %d",position_tm_frame[id]); |
ee12b079 | 268:ded5306a1fd1 | 2797 | while(position_tm_frame[id]<132){ |
ee12b079 | 268:ded5306a1fd1 | 2798 | frames[id][position_tm_frame[id]] = 0; |
ee12b079 | 268:ded5306a1fd1 | 2799 | position_tm_frame[id]++; |
ee12b079 | 268:ded5306a1fd1 | 2800 | } |
chaithanyarss | 290:3159ff1081a2 | 2801 | if(position_tm_frame[id] == 132) //space full in the frame bro |
chaithanyarss | 290:3159ff1081a2 | 2802 | { |
chaithanyarss | 290:3159ff1081a2 | 2803 | //gPC.printf("\n\rSCP_TM frame full. Length of current SCP packet = %d",j); |
ee12b079 | 268:ded5306a1fd1 | 2804 | pointer = frames[id]; |
chaithanyarss | 290:3159ff1081a2 | 2805 | space = adjust(1,0,pointer,8); |
chaithanyarss | 290:3159ff1081a2 | 2806 | space = adjust(4,1,pointer,space); |
chaithanyarss | 290:3159ff1081a2 | 2807 | FSC_science = FSC_CURRENT[1]; |
chaithanyarss | 290:3159ff1081a2 | 2808 | //gPC.printf("1 = 0x%X",FSC_science); |
chaithanyarss | 290:3159ff1081a2 | 2809 | |
chaithanyarss | 290:3159ff1081a2 | 2810 | #if debug_fsc |
chaithanyarss | 331:1943be3fd178 | 2811 | frames[id][1] = (test_fsc[1]>>16)&0xff; |
chaithanyarss | 331:1943be3fd178 | 2812 | frames[id][2] = (test_fsc[1]>>8)&0xff; |
chaithanyarss | 331:1943be3fd178 | 2813 | frames[id][3] = (test_fsc[1])&0xff; |
chaithanyarss | 290:3159ff1081a2 | 2814 | test_fsc[1]++; |
chaithanyarss | 290:3159ff1081a2 | 2815 | #endif |
chaithanyarss | 290:3159ff1081a2 | 2816 | #if !debug_fsc |
chaithanyarss | 290:3159ff1081a2 | 2817 | frames[id][1] = (FSC_science>>16)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 2818 | frames[id][2] = (FSC_science>>8)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 2819 | frames[id][3] = (FSC_science)&0xff; |
chaithanyarss | 290:3159ff1081a2 | 2820 | #endif |
chaithanyarss | 290:3159ff1081a2 | 2821 | |
ee12b079 | 268:ded5306a1fd1 | 2822 | temp_crc = crc16_gen(frames[id],132); |
ee12b079 | 268:ded5306a1fd1 | 2823 | frames[id][132] = temp_crc>>8; |
ee12b079 | 268:ded5306a1fd1 | 2824 | frames[id][133] = temp_crc & 0xff; |
chaithanyarss | 290:3159ff1081a2 | 2825 | //gPC.printf("\n\rFirst head pointer contents: 0x%02X",frames[id][frames[id][4]]); |
chaithanyarss | 290:3159ff1081a2 | 2826 | //gPC.printf("\n\rPrinting SCP_TM\n\r{"); |
chaithanyarss | 290:3159ff1081a2 | 2827 | gPC.printf("\n\r{"); |
ee12b079 | 268:ded5306a1fd1 | 2828 | for(uint8_t z=0;z<134;z++){ |
chaithanyarss | 290:3159ff1081a2 | 2829 | gPC.printf("%02X",frames[id][z]); |
ee12b079 | 268:ded5306a1fd1 | 2830 | } |
ee12b079 | 268:ded5306a1fd1 | 2831 | gPC.printf("}\n\r"); |
chaithanyarss | 290:3159ff1081a2 | 2832 | position_tm_frame[id] = position_tm_starting[id]; |
ee12b079 | 268:ded5306a1fd1 | 2833 | } |
chaithanyarss | 290:3159ff1081a2 | 2834 | #endif |
chaithanyarss | 331:1943be3fd178 | 2835 | //gPC.printf("fsc = %u, %u,%u\n\r", FSC_CURRENT[1],FSC_CURRENT[2],FSC_CURRENT[3]); |
chaithanyarss | 331:1943be3fd178 | 2836 | #if test_science |
chaithanyarss | 331:1943be3fd178 | 2837 | dma_packets_info(); |
chaithanyarss | 331:1943be3fd178 | 2838 | #endif |
ee12b079 | 342:77b0d59897f7 | 2839 | gPC.printf("End of SRP function\n\r"); |
chaithanyarss | 331:1943be3fd178 | 2840 | //SCI_LED1 = !SCI_LED1; |
samp1234 | 346:204497974293 | 2841 | // SCI_LED1 = 0; |
chaithanyarss | 331:1943be3fd178 | 2842 | } |
chaithanyarss | 331:1943be3fd178 | 2843 | /*void test_sci_main(){ |
chaithanyarss | 331:1943be3fd178 | 2844 | gPAYLOAD_BUFFER[2] &= (~0x01); //calibrated mode data generation |
chaithanyarss | 331:1943be3fd178 | 2845 | //gPAYLOAD_BUFFER[2] |= (0x01); //scattered plot mode data generation |
chaithanyarss | 331:1943be3fd178 | 2846 | srp(gPAYLOAD_BUFFER); |
chaithanyarss | 331:1943be3fd178 | 2847 | }*/ |
chaithanyarss | 331:1943be3fd178 | 2848 | /*void test_tabulate(){ |
chaithanyarss | 331:1943be3fd178 | 2849 | uint8_t tmid=2,temp_index,temp=13,space; |
chaithanyarss | 331:1943be3fd178 | 2850 | pointer = &test_tm[0][0]; |
chaithanyarss | 331:1943be3fd178 | 2851 | space = adjust(1, 0,pointer,8); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2852 | space = adjust(4, 2,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2853 | space = adjust(3, 0,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2854 | |
chaithanyarss | 331:1943be3fd178 | 2855 | space = adjust(8, 0,pointer,space); pointer += space>>4; //fsc |
chaithanyarss | 331:1943be3fd178 | 2856 | space = adjust(8, 0,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2857 | space = adjust(8, 1,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2858 | |
chaithanyarss | 331:1943be3fd178 | 2859 | space = adjust(8, 5,pointer,space); pointer += space>>4; //first head pointer |
chaithanyarss | 331:1943be3fd178 | 2860 | |
chaithanyarss | 331:1943be3fd178 | 2861 | space = adjust(2, 2,pointer,space); pointer += space>>4; //time |
chaithanyarss | 331:1943be3fd178 | 2862 | space = adjust(4, 12,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2863 | space = adjust(5, 8,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2864 | space = adjust(5, 10,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2865 | space = adjust(6, 25,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2866 | space = adjust(6, 25,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2867 | space = adjust(7, 69,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2868 | |
chaithanyarss | 331:1943be3fd178 | 2869 | space = adjust(4, 15,pointer,space); pointer += space>>4; //attitude |
chaithanyarss | 331:1943be3fd178 | 2870 | |
chaithanyarss | 331:1943be3fd178 | 2871 | space = adjust(6, 60,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2872 | space = adjust(1, 1,pointer,space); pointer += space>>4; //science data mode |
chaithanyarss | 331:1943be3fd178 | 2873 | |
chaithanyarss | 331:1943be3fd178 | 2874 | for(uint8_t i = 0 ; i < 48 ; i++){ |
chaithanyarss | 331:1943be3fd178 | 2875 | space = adjust(2, ((compress(16320,8,2))>>8) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2876 | space = adjust(8, ((compress(16320,8,2))&0xff) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2877 | } |
chaithanyarss | 331:1943be3fd178 | 2878 | for(uint8_t i = 0 ; i < 4 ; i++){ |
chaithanyarss | 331:1943be3fd178 | 2879 | space = adjust(1, ((compress(1032192,6,3))>>8) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2880 | space = adjust(8, ((compress(1032192,6,3))&0xff) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2881 | } |
chaithanyarss | 331:1943be3fd178 | 2882 | space = adjust(6, 0,pointer,space); pointer += space>>4; //spare |
spacelab | 309:6ed5535ac465 | 2883 | |
chaithanyarss | 331:1943be3fd178 | 2884 | //next packet |
chaithanyarss | 331:1943be3fd178 | 2885 | space = adjust(2, 2,pointer,space); pointer += space>>4; //time |
chaithanyarss | 331:1943be3fd178 | 2886 | space = adjust(4, 12,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2887 | space = adjust(5, 8,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2888 | space = adjust(5, 10,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2889 | space = adjust(6, 25,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2890 | space = adjust(6, 25,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2891 | space = adjust(7, 69,pointer,space); pointer += space>>4; |
spacelab | 309:6ed5535ac465 | 2892 | |
chaithanyarss | 331:1943be3fd178 | 2893 | space = adjust(4, 15,pointer,space); pointer += space>>4; //attitude |
chaithanyarss | 331:1943be3fd178 | 2894 | |
chaithanyarss | 331:1943be3fd178 | 2895 | space = adjust(6, 61,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2896 | space = adjust(1, 0,pointer,space); pointer += space>>4; //science data mode |
chaithanyarss | 331:1943be3fd178 | 2897 | space = adjust(1, 0,pointer,space); pointer += space>>4; //pzf |
chaithanyarss | 331:1943be3fd178 | 2898 | space = adjust(1, 0,pointer,space); pointer += space>>4; //ezf |
chaithanyarss | 331:1943be3fd178 | 2899 | |
chaithanyarss | 331:1943be3fd178 | 2900 | for(uint8_t i = 0 ; i < 8 ; i++){ |
chaithanyarss | 331:1943be3fd178 | 2901 | space = adjust(1, ((compress(8128,7,2))>>8) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2902 | space = adjust(8, ((compress(8128,7,2))&0xff) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2903 | } |
chaithanyarss | 331:1943be3fd178 | 2904 | for(uint8_t i = 0 ; i < 12 ; i++){ |
chaithanyarss | 331:1943be3fd178 | 2905 | space = adjust(6, ((compress(114688,3,3))) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2906 | } |
chaithanyarss | 331:1943be3fd178 | 2907 | for(uint8_t i = 0 ; i < 4 ; i++){ |
chaithanyarss | 331:1943be3fd178 | 2908 | space = adjust(2, ((compress(16320,8,2))>>8) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2909 | space = adjust(8, ((compress(16320,8,2))&0xff) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2910 | } |
chaithanyarss | 331:1943be3fd178 | 2911 | for(uint8_t i = 0 ; i < 4 ; i++){ |
chaithanyarss | 331:1943be3fd178 | 2912 | space = adjust(1, ((compress(1032192,6,3))>>8) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2913 | space = adjust(8, ((compress(1032192,6,3))&0xff) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2914 | } |
chaithanyarss | 331:1943be3fd178 | 2915 | for(uint8_t i = 0 ; i < 18 ; i++){ |
chaithanyarss | 331:1943be3fd178 | 2916 | space = adjust(2, ((compress(16320,8,2))>>8) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2917 | space = adjust(8, ((compress(16320,8,2))&0xff) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2918 | } |
chaithanyarss | 331:1943be3fd178 | 2919 | tabulate_TM(&test_tm[0][0]); |
chaithanyarss | 331:1943be3fd178 | 2920 | |
chaithanyarss | 331:1943be3fd178 | 2921 | space=8; pointer = &test_tm[1][0]; |
chaithanyarss | 331:1943be3fd178 | 2922 | space = adjust(1, 0,pointer,8); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2923 | space = adjust(4, 2,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2924 | space = adjust(3, 0,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2925 | |
chaithanyarss | 331:1943be3fd178 | 2926 | space = adjust(8, 0,pointer,space); pointer += space>>4; //fsc |
chaithanyarss | 331:1943be3fd178 | 2927 | space = adjust(8, 0,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2928 | space = adjust(8, 2,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2929 | |
chaithanyarss | 331:1943be3fd178 | 2930 | space = adjust(8, 13,pointer,space); pointer += space>>4; //first head pointer |
chaithanyarss | 331:1943be3fd178 | 2931 | |
chaithanyarss | 331:1943be3fd178 | 2932 | for(uint8_t i = 0 ; i < 6 ; i++){ |
chaithanyarss | 331:1943be3fd178 | 2933 | space = adjust(2, ((compress(16320,8,2))>>8) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2934 | space = adjust(8, ((compress(16320,8,2))&0xff) ,pointer,space); pointer += space>>4; |
chaithanyarss | 331:1943be3fd178 | 2935 | } |
chaithanyarss | 331:1943be3fd178 | 2936 | space = adjust(4, 0,pointer,space); pointer += space>>4; //spare |
chaithanyarss | 331:1943be3fd178 | 2937 | tabulate_TM(&test_tm[1][0]); |
chaithanyarss | 331:1943be3fd178 | 2938 | }*/ |