lele

Dependencies:   mbed

Committer:
krishanprajapat
Date:
Fri Jul 31 12:52:23 2015 +0000
Revision:
1:90fd52655154
Parent:
0:984643af7d81
bro working fine and Sframe and EoS is also done , so put peace;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
krishanprajapat 0:984643af7d81 1 int disk_write(const uint8_t *, uint64_t);
krishanprajapat 0:984643af7d81 2 uint64_t RTC_TIME; //need to be changed to uint_64
krishanprajapat 0:984643af7d81 3
krishanprajapat 0:984643af7d81 4
krishanprajapat 0:984643af7d81 5 namespace Science_TMframe {
krishanprajapat 0:984643af7d81 6
krishanprajapat 0:984643af7d81 7 #define OUTLENGTH 360 //length of the output frame after convolution
krishanprajapat 0:984643af7d81 8 #define SDcard_block 512 //block size of the sd card
krishanprajapat 0:984643af7d81 9
krishanprajapat 0:984643af7d81 10 Convolution ConvObj; //object which stores the frame after convolution
krishanprajapat 0:984643af7d81 11 bool fresh[3] = {true,true,true}; // True only for the first time
krishanprajapat 0:984643af7d81 12 unsigned char frames[3][134] = {0}; // "frame" stores the address of the current frame...."first_frame_address" stores the address of the first node made.
krishanprajapat 0:984643af7d81 13 unsigned int FCN[4] = {0}; //frame count number
krishanprajapat 0:984643af7d81 14 unsigned int data_starting_point[3] = {8,5,10};
krishanprajapat 0:984643af7d81 15 unsigned int max_data[3] = {124,127,122}; //number of bytes in each frame excluding TMID,FCN,first_header_point,crc
krishanprajapat 0:984643af7d81 16 unsigned char TM_convoluted_data[270] = {0}; //270 bytes is the size after convolution of 1072 bits
krishanprajapat 0:984643af7d81 17 unsigned char complete_frame[SDcard_block] = {0};
krishanprajapat 0:984643af7d81 18 uint64_t SDC_address = 10;
krishanprajapat 0:984643af7d81 19 bool SCH_FCCH_FLAG = true;
krishanprajapat 0:984643af7d81 20
krishanprajapat 0:984643af7d81 21
krishanprajapat 0:984643af7d81 22 void add_SCH_FCCH(){
krishanprajapat 0:984643af7d81 23 int i = 0;
krishanprajapat 0:984643af7d81 24 complete_frame[0] = 0x0a;
krishanprajapat 0:984643af7d81 25 complete_frame[1] = 0x3f;;
krishanprajapat 0:984643af7d81 26 complete_frame[2] = 0x46;
krishanprajapat 0:984643af7d81 27 complete_frame[3] = 0xb4;
krishanprajapat 0:984643af7d81 28 complete_frame[4] = 0x00;
krishanprajapat 0:984643af7d81 29
krishanprajapat 0:984643af7d81 30 for(i = 149 ; i < 159 ; i ++){
krishanprajapat 0:984643af7d81 31 complete_frame[i] = 0 ;
krishanprajapat 0:984643af7d81 32 }
krishanprajapat 0:984643af7d81 33
krishanprajapat 0:984643af7d81 34 complete_frame[159] = 0x0a;
krishanprajapat 0:984643af7d81 35 complete_frame[160] = 0x3f;;
krishanprajapat 0:984643af7d81 36 complete_frame[161] = 0x46;
krishanprajapat 0:984643af7d81 37 complete_frame[162] = 0xb4;
krishanprajapat 0:984643af7d81 38 complete_frame[163] = 0x00;
krishanprajapat 0:984643af7d81 39
krishanprajapat 0:984643af7d81 40 for(i = 308 ; i < 318 ; i ++){
krishanprajapat 0:984643af7d81 41 complete_frame[i] = 0 ;
krishanprajapat 0:984643af7d81 42 }
krishanprajapat 0:984643af7d81 43
krishanprajapat 0:984643af7d81 44 }
krishanprajapat 0:984643af7d81 45
krishanprajapat 0:984643af7d81 46 void making_frameHeader(unsigned char TMID){
krishanprajapat 0:984643af7d81 47
krishanprajapat 0:984643af7d81 48 unsigned char frame_type_identifier = 0; // not conform about the values , yet to be done
krishanprajapat 0:984643af7d81 49 frames[TMID][0] = (frame_type_identifier<<7) + ( (TMID + 1)<<3 ) + ( (FCN[TMID]>>24) & 0x7 ); //frame number should be less than 2^23 since 23 bits are assigned for that
krishanprajapat 0:984643af7d81 50 frames[TMID][1] = ((FCN[TMID]>>16) & 0xff );
krishanprajapat 0:984643af7d81 51 frames[TMID][2] = ( (FCN[TMID]>>8 )& 0xff );
krishanprajapat 0:984643af7d81 52 frames[TMID][3] = ( FCN[TMID] & 0xff ); // first bit for (frame identifier), next 4 for (TMID) and next 27 for FCN
krishanprajapat 0:984643af7d81 53
krishanprajapat 0:984643af7d81 54 if(TMID == 0){
krishanprajapat 0:984643af7d81 55 frames[TMID][5] =( (RTC_TIME>>29) & 0xff );
krishanprajapat 0:984643af7d81 56 frames[TMID][6] =( (RTC_TIME>>21) & 0xff );
krishanprajapat 0:984643af7d81 57 frames[TMID][7] =( (RTC_TIME>>13) & 0xff );
krishanprajapat 0:984643af7d81 58
krishanprajapat 0:984643af7d81 59 }else if(TMID == 2){
krishanprajapat 0:984643af7d81 60 frames[TMID][5] =( (RTC_TIME>>32) & 0xff );
krishanprajapat 0:984643af7d81 61 frames[TMID][6] =( (RTC_TIME>>24) & 0xff );
krishanprajapat 0:984643af7d81 62 frames[TMID][7] =( (RTC_TIME>>16) & 0xff );
krishanprajapat 0:984643af7d81 63 frames[TMID][8] =( (RTC_TIME>>8 ) & 0xff );
krishanprajapat 0:984643af7d81 64 frames[TMID][9] =( (RTC_TIME ) & 0xff );
krishanprajapat 0:984643af7d81 65 }
krishanprajapat 0:984643af7d81 66
krishanprajapat 0:984643af7d81 67 }
krishanprajapat 0:984643af7d81 68
krishanprajapat 0:984643af7d81 69 void convolution (unsigned char * ptr){
krishanprajapat 0:984643af7d81 70
krishanprajapat 0:984643af7d81 71 ConvObj.convolutionEncode(ptr , TM_convoluted_data);
krishanprajapat 0:984643af7d81 72 ConvObj.convolutionEncode(ptr + 67, TM_convoluted_data + 135);
krishanprajapat 0:984643af7d81 73
krishanprajapat 0:984643af7d81 74 }
krishanprajapat 0:984643af7d81 75
krishanprajapat 0:984643af7d81 76 /*
krishanprajapat 0:984643af7d81 77 @brief : take the address of array of LCR or HCR and stores it into a frame
krishanprajapat 0:984643af7d81 78 @parameters: type->L or H , deprnding on wheather it is LCR or HCR respectively
krishanprajapat 0:984643af7d81 79 @return: nothing
krishanprajapat 0:984643af7d81 80 */
krishanprajapat 0:984643af7d81 81
krishanprajapat 0:984643af7d81 82 // type 2 yet to be done
krishanprajapat 0:984643af7d81 83 void making_frame(unsigned char TMID ,unsigned char type, unsigned char* pointer){
krishanprajapat 0:984643af7d81 84
krishanprajapat 0:984643af7d81 85 TMID--; //TMID goes from 1 to 3 , convinient to ue from 0 to 2
krishanprajapat 0:984643af7d81 86 static int frame_space_number[3] = {0}; //this variable represents the register number of the frame in which LCR or HCR data to be written not including header
krishanprajapat 0:984643af7d81 87 int packet_len = 0;
krishanprajapat 0:984643af7d81 88 int copy_count = 0 ;
krishanprajapat 0:984643af7d81 89
krishanprajapat 0:984643af7d81 90 switch(int(TMID)){
krishanprajapat 0:984643af7d81 91 case 0: //SCP
krishanprajapat 0:984643af7d81 92 if(type == 'L'){ //below threshold
krishanprajapat 0:984643af7d81 93 packet_len = 22;
krishanprajapat 0:984643af7d81 94 }
krishanprajapat 0:984643af7d81 95 else if(type == 'H'){ //above threshold
krishanprajapat 0:984643af7d81 96 packet_len = 26;
krishanprajapat 0:984643af7d81 97 }
krishanprajapat 0:984643af7d81 98 break;
krishanprajapat 0:984643af7d81 99
krishanprajapat 0:984643af7d81 100 case 1: //SFP above threshold
krishanprajapat 0:984643af7d81 101 packet_len = 35;
krishanprajapat 0:984643af7d81 102 break;
krishanprajapat 0:984643af7d81 103
krishanprajapat 0:984643af7d81 104 case 2: //SFP below threshold
krishanprajapat 0:984643af7d81 105 packet_len = 23;
krishanprajapat 0:984643af7d81 106 break;
krishanprajapat 0:984643af7d81 107 }
krishanprajapat 0:984643af7d81 108
krishanprajapat 0:984643af7d81 109 if(SCH_FCCH_FLAG){
krishanprajapat 0:984643af7d81 110 add_SCH_FCCH();
krishanprajapat 0:984643af7d81 111 SCH_FCCH_FLAG = false;
krishanprajapat 0:984643af7d81 112 }
krishanprajapat 0:984643af7d81 113
krishanprajapat 0:984643af7d81 114 if(fresh[TMID]){
krishanprajapat 0:984643af7d81 115 //welcome to first frame
krishanprajapat 0:984643af7d81 116 making_frameHeader(TMID);
krishanprajapat 0:984643af7d81 117 frames[TMID][4] = 0;
krishanprajapat 0:984643af7d81 118 fresh[TMID] = false;
krishanprajapat 0:984643af7d81 119 }
krishanprajapat 0:984643af7d81 120
krishanprajapat 0:984643af7d81 121
krishanprajapat 0:984643af7d81 122 while(copy_count < packet_len){ // 22 bytes is the size of the LCR
krishanprajapat 0:984643af7d81 123 frames[TMID][ frame_space_number[TMID] + data_starting_point[TMID] ]= *(pointer + copy_count);
krishanprajapat 0:984643af7d81 124 frame_space_number[TMID]++;
krishanprajapat 0:984643af7d81 125 copy_count++;
krishanprajapat 0:984643af7d81 126 if( frame_space_number[TMID] == max_data[TMID] ){ //frame space number can go from 0 to 126 as data is written from 0+5 to 126+5
krishanprajapat 0:984643af7d81 127 FCN[TMID]++;
krishanprajapat 0:984643af7d81 128 // convolution and save frame in the sd card
krishanprajapat 0:984643af7d81 129
krishanprajapat 0:984643af7d81 130 // copying crc in 132 and 133
krishanprajapat 0:984643af7d81 131 int temp_crc;
krishanprajapat 0:984643af7d81 132 temp_crc = CRC::crc16_gen(frames[TMID],132);
krishanprajapat 0:984643af7d81 133 frames[TMID][132] = temp_crc>>8;
krishanprajapat 0:984643af7d81 134 frames[TMID][133] = temp_crc & 0xff;
krishanprajapat 0:984643af7d81 135
krishanprajapat 0:984643af7d81 136 //convolution and interleaving
krishanprajapat 0:984643af7d81 137 convolution(frames[TMID]);
krishanprajapat 0:984643af7d81 138 interleave(TM_convoluted_data , complete_frame + 5);
krishanprajapat 0:984643af7d81 139 interleave(TM_convoluted_data+ 135,complete_frame + 164);
krishanprajapat 0:984643af7d81 140
krishanprajapat 0:984643af7d81 141 disk_write(complete_frame , SDC_address);
krishanprajapat 0:984643af7d81 142 SDC_address++;
krishanprajapat 0:984643af7d81 143
krishanprajapat 0:984643af7d81 144
krishanprajapat 0:984643af7d81 145
krishanprajapat 0:984643af7d81 146 //now save to the sd card TM_convoluted_data
krishanprajapat 0:984643af7d81 147 // std::bitset<8> b;
krishanprajapat 0:984643af7d81 148 // printf("\nthis is frame %d\n",TMID); //for printing frame
krishanprajapat 0:984643af7d81 149 // for(int j =0; j<134;j++){
krishanprajapat 0:984643af7d81 150 // printf(" %d",frames[TMID][j]);
krishanprajapat 0:984643af7d81 151 //// b = frames[TMID][j];
krishanprajapat 0:984643af7d81 152 //// cout<<b;
krishanprajapat 0:984643af7d81 153 // }
krishanprajapat 0:984643af7d81 154
krishanprajapat 0:984643af7d81 155 frame_space_number[TMID] = 0;
krishanprajapat 0:984643af7d81 156 making_frameHeader(TMID);
krishanprajapat 0:984643af7d81 157 frames[TMID][4]=packet_len - copy_count;
krishanprajapat 0:984643af7d81 158 //write time here also
krishanprajapat 0:984643af7d81 159 continue;
krishanprajapat 0:984643af7d81 160 }
krishanprajapat 0:984643af7d81 161 }
krishanprajapat 0:984643af7d81 162
krishanprajapat 0:984643af7d81 163 // printf("\nthis is frame %d\n",TMID); //for printing frame
krishanprajapat 0:984643af7d81 164 // for(int j =0; j<134;j++){
krishanprajapat 0:984643af7d81 165 // printf(" %d",frames[TMID][j]);
krishanprajapat 0:984643af7d81 166 // }
krishanprajapat 0:984643af7d81 167
krishanprajapat 0:984643af7d81 168 }
krishanprajapat 0:984643af7d81 169
krishanprajapat 0:984643af7d81 170
krishanprajapat 0:984643af7d81 171 }
krishanprajapat 0:984643af7d81 172
krishanprajapat 0:984643af7d81 173
krishanprajapat 0:984643af7d81 174
krishanprajapat 0:984643af7d81 175
krishanprajapat 0:984643af7d81 176
krishanprajapat 0:984643af7d81 177 namespace Science_Data_Compression{
krishanprajapat 0:984643af7d81 178
krishanprajapat 0:984643af7d81 179 # define PACKET_SEQUENCE_COUNT 1 //1 byte
krishanprajapat 0:984643af7d81 180 # define NUM_PROTON_BIN 17 //2 byte each
krishanprajapat 0:984643af7d81 181 # define NUM_ELECTRON_BIN 14 //2 byte each
krishanprajapat 0:984643af7d81 182 # define VETO 1 //2 byte
krishanprajapat 0:984643af7d81 183 # define FASTCHAIN 2 //4 byte each
krishanprajapat 0:984643af7d81 184 #define RAW_PACKET_LENGTH 73 //73 bytes
krishanprajapat 0:984643af7d81 185
krishanprajapat 0:984643af7d81 186 // #define PACKET_SEQ_COUNT 1
krishanprajapat 0:984643af7d81 187 // #define PROTON_BIN_SIZE 2
krishanprajapat 0:984643af7d81 188 // #define ELECTRON_BIN_SIZE 2
krishanprajapat 0:984643af7d81 189 // #define VETO 2
krishanprajapat 0:984643af7d81 190 // #define FAST_CHAIN 4
krishanprajapat 0:984643af7d81 191
krishanprajapat 0:984643af7d81 192
krishanprajapat 0:984643af7d81 193 /*
krishanprajapat 0:984643af7d81 194 @brief: read one uint16_t equivalent of first two chars from the stream. short int because 16 bits
krishanprajapat 0:984643af7d81 195 @param: pointer to the start of the short int
krishanprajapat 0:984643af7d81 196 @return: uint16_t
krishanprajapat 0:984643af7d81 197 */
krishanprajapat 0:984643af7d81 198
krishanprajapat 0:984643af7d81 199
krishanprajapat 0:984643af7d81 200 unsigned int read_2byte(unsigned char* ptr){
krishanprajapat 0:984643af7d81 201 unsigned int output = (unsigned int) *(ptr+1);
krishanprajapat 0:984643af7d81 202 output += ( (unsigned int)(*ptr) ) << 8;
krishanprajapat 0:984643af7d81 203 return output;
krishanprajapat 0:984643af7d81 204 }
krishanprajapat 0:984643af7d81 205
krishanprajapat 0:984643af7d81 206 /*
krishanprajapat 0:984643af7d81 207 @brief: read one int equivalent of first four chars from the stream. int because 32 bits
krishanprajapat 0:984643af7d81 208 @param: pointer to the start of the short int
krishanprajapat 0:984643af7d81 209 @return: unsigned int
krishanprajapat 0:984643af7d81 210 */
krishanprajapat 0:984643af7d81 211
krishanprajapat 0:984643af7d81 212 unsigned int read_4byte(unsigned char* ptr){
krishanprajapat 0:984643af7d81 213 unsigned int output = (unsigned int) *(ptr+3);
krishanprajapat 0:984643af7d81 214 output += (unsigned int)*(ptr+2)<<8;
krishanprajapat 0:984643af7d81 215 output += (unsigned int)*(ptr+1)<<16;
krishanprajapat 0:984643af7d81 216 output += (unsigned int)*(ptr)<<24;
krishanprajapat 0:984643af7d81 217 return output;
krishanprajapat 0:984643af7d81 218 }
krishanprajapat 0:984643af7d81 219
krishanprajapat 0:984643af7d81 220 unsigned int SFP_thresholds[35]={0 ,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100};//threashold values
krishanprajapat 0:984643af7d81 221 unsigned int SCP_thresholds[35]={0 ,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0 ,0 ,0 };
krishanprajapat 0:984643af7d81 222 unsigned int SFP_bin[35];
krishanprajapat 0:984643af7d81 223 unsigned int SCP_bin[35]={0};
krishanprajapat 0:984643af7d81 224 unsigned char SFP_outputBT[23]; //BT = below threshold
krishanprajapat 0:984643af7d81 225 unsigned char SFP_outputAT[35];
krishanprajapat 0:984643af7d81 226 unsigned char SCP_outputLCR[22];
krishanprajapat 0:984643af7d81 227 unsigned char SCP_outputHCR[26];
krishanprajapat 0:984643af7d81 228
krishanprajapat 0:984643af7d81 229
krishanprajapat 0:984643af7d81 230 //**********************************************************************************************************************************************************************
krishanprajapat 0:984643af7d81 231 //lots of compression functions are listed below
krishanprajapat 0:984643af7d81 232
krishanprajapat 0:984643af7d81 233
krishanprajapat 0:984643af7d81 234 unsigned char SFP_compress4_BT(unsigned int input){ //for veto
krishanprajapat 0:984643af7d81 235 int de_4 = 0;
krishanprajapat 0:984643af7d81 236 unsigned char output;
krishanprajapat 0:984643af7d81 237
krishanprajapat 0:984643af7d81 238 if(input<= 3){
krishanprajapat 0:984643af7d81 239 // DE = 0;
krishanprajapat 0:984643af7d81 240 output = 0x0;
krishanprajapat 0:984643af7d81 241 de_4 = 0;
krishanprajapat 0:984643af7d81 242 }
krishanprajapat 0:984643af7d81 243 else if(input <= 12){
krishanprajapat 0:984643af7d81 244 // DE = 01;
krishanprajapat 0:984643af7d81 245 output = 0x1;
krishanprajapat 0:984643af7d81 246 de_4 = 2;
krishanprajapat 0:984643af7d81 247 }
krishanprajapat 0:984643af7d81 248 else if(input <= 48){
krishanprajapat 0:984643af7d81 249 // DE = 10
krishanprajapat 0:984643af7d81 250 output = 0x2;
krishanprajapat 0:984643af7d81 251 de_4 = 4;
krishanprajapat 0:984643af7d81 252 }
krishanprajapat 0:984643af7d81 253 else {
krishanprajapat 0:984643af7d81 254 // DE = 11
krishanprajapat 0:984643af7d81 255 output = 0x3;
krishanprajapat 0:984643af7d81 256 de_4 = 6;
krishanprajapat 0:984643af7d81 257 }
krishanprajapat 0:984643af7d81 258
krishanprajapat 0:984643af7d81 259 unsigned short int temp = input >> de_4;
krishanprajapat 0:984643af7d81 260 output += (temp ) << 2;
krishanprajapat 0:984643af7d81 261 return output;
krishanprajapat 0:984643af7d81 262 }
krishanprajapat 0:984643af7d81 263
krishanprajapat 0:984643af7d81 264
krishanprajapat 0:984643af7d81 265 unsigned char SFP_compress5_BT(unsigned int input){
krishanprajapat 0:984643af7d81 266 int de_4 = 0; //number by which bin value need to be shifted
krishanprajapat 0:984643af7d81 267 unsigned char output;
krishanprajapat 0:984643af7d81 268
krishanprajapat 0:984643af7d81 269 if(input <= 15){
krishanprajapat 0:984643af7d81 270 // D = 0 [0]
krishanprajapat 0:984643af7d81 271 output = 0x0;
krishanprajapat 0:984643af7d81 272 de_4 = 0;
krishanprajapat 0:984643af7d81 273 }
krishanprajapat 0:984643af7d81 274 else if(input <= 60){
krishanprajapat 0:984643af7d81 275 // D = 1
krishanprajapat 0:984643af7d81 276 output = 0x1;
krishanprajapat 0:984643af7d81 277 de_4 = 2;
krishanprajapat 0:984643af7d81 278 }
krishanprajapat 0:984643af7d81 279
krishanprajapat 0:984643af7d81 280 unsigned short int temp = input >> de_4;
krishanprajapat 0:984643af7d81 281 output += (temp ) << 1;
krishanprajapat 0:984643af7d81 282
krishanprajapat 0:984643af7d81 283 return output;
krishanprajapat 0:984643af7d81 284 };
krishanprajapat 0:984643af7d81 285
krishanprajapat 0:984643af7d81 286
krishanprajapat 0:984643af7d81 287 unsigned char SFP_compress6_BT(unsigned int input){
krishanprajapat 0:984643af7d81 288 int de_4 = 0;;
krishanprajapat 0:984643af7d81 289 unsigned char output;
krishanprajapat 0:984643af7d81 290
krishanprajapat 0:984643af7d81 291 if(input <= 31){
krishanprajapat 0:984643af7d81 292 // E = 0 [0]
krishanprajapat 0:984643af7d81 293 output = 0x0;
krishanprajapat 0:984643af7d81 294 de_4 = 0;
krishanprajapat 0:984643af7d81 295 }
krishanprajapat 0:984643af7d81 296 else if(input <= 124){
krishanprajapat 0:984643af7d81 297 // E = 1
krishanprajapat 0:984643af7d81 298 output = 0x1;
krishanprajapat 0:984643af7d81 299 de_4 = 2;
krishanprajapat 0:984643af7d81 300 }
krishanprajapat 0:984643af7d81 301
krishanprajapat 0:984643af7d81 302
krishanprajapat 0:984643af7d81 303 unsigned short int temp = input >> de_4;
krishanprajapat 0:984643af7d81 304 output += (temp ) << 1;
krishanprajapat 0:984643af7d81 305
krishanprajapat 0:984643af7d81 306 return output;
krishanprajapat 0:984643af7d81 307 };
krishanprajapat 0:984643af7d81 308
krishanprajapat 0:984643af7d81 309 unsigned char SFP_compress7_AT(unsigned int input){
krishanprajapat 0:984643af7d81 310 int de_4 = 0;
krishanprajapat 0:984643af7d81 311 unsigned char output;
krishanprajapat 0:984643af7d81 312
krishanprajapat 0:984643af7d81 313 if(input <= 31){
krishanprajapat 0:984643af7d81 314 // DE = 00 [0]
krishanprajapat 0:984643af7d81 315 output = 0x0;
krishanprajapat 0:984643af7d81 316 de_4 = 0;
krishanprajapat 0:984643af7d81 317 }
krishanprajapat 0:984643af7d81 318 else if(input <= 124){
krishanprajapat 0:984643af7d81 319 // DE = 01 [1]
krishanprajapat 0:984643af7d81 320 output = 0x1;
krishanprajapat 0:984643af7d81 321 de_4 = 2;
krishanprajapat 0:984643af7d81 322 }
krishanprajapat 0:984643af7d81 323
krishanprajapat 0:984643af7d81 324 else if(input <= 496){
krishanprajapat 0:984643af7d81 325 // DE = 10 [2]
krishanprajapat 0:984643af7d81 326 output = 0x2;
krishanprajapat 0:984643af7d81 327 de_4 = 4;
krishanprajapat 0:984643af7d81 328 }
krishanprajapat 0:984643af7d81 329
krishanprajapat 0:984643af7d81 330 else if(input <= 1984){
krishanprajapat 0:984643af7d81 331 // DE = 11 [3]
krishanprajapat 0:984643af7d81 332 output = 0x3;
krishanprajapat 0:984643af7d81 333 de_4 = 6;
krishanprajapat 0:984643af7d81 334 }
krishanprajapat 0:984643af7d81 335
krishanprajapat 0:984643af7d81 336 unsigned short int temp = input >> de_4;
krishanprajapat 0:984643af7d81 337 output += (temp ) << 2;
krishanprajapat 0:984643af7d81 338
krishanprajapat 0:984643af7d81 339 return output;
krishanprajapat 0:984643af7d81 340
krishanprajapat 0:984643af7d81 341 };
krishanprajapat 0:984643af7d81 342
krishanprajapat 0:984643af7d81 343
krishanprajapat 0:984643af7d81 344 unsigned char SFP_compress8_AT(unsigned int input){
krishanprajapat 0:984643af7d81 345
krishanprajapat 0:984643af7d81 346 int de_4 = 0;;
krishanprajapat 0:984643af7d81 347 unsigned char output;
krishanprajapat 0:984643af7d81 348
krishanprajapat 0:984643af7d81 349 if(input <= 63){
krishanprajapat 0:984643af7d81 350 // DE = 00 [0]
krishanprajapat 0:984643af7d81 351 output = 0x0;
krishanprajapat 0:984643af7d81 352 de_4 = 0;
krishanprajapat 0:984643af7d81 353 }
krishanprajapat 0:984643af7d81 354 else if(input <= 252){
krishanprajapat 0:984643af7d81 355 // DE = 01 [1]
krishanprajapat 0:984643af7d81 356 output = 0x1;
krishanprajapat 0:984643af7d81 357 de_4 = 2;
krishanprajapat 0:984643af7d81 358 }
krishanprajapat 0:984643af7d81 359
krishanprajapat 0:984643af7d81 360 else if(input <= 1008){
krishanprajapat 0:984643af7d81 361 // DE = 10 [2]
krishanprajapat 0:984643af7d81 362 output = 0x2;
krishanprajapat 0:984643af7d81 363 de_4 = 4;
krishanprajapat 0:984643af7d81 364 }
krishanprajapat 0:984643af7d81 365
krishanprajapat 0:984643af7d81 366 else {
krishanprajapat 0:984643af7d81 367 // DE = 11 [3]
krishanprajapat 0:984643af7d81 368 output = 0x3;
krishanprajapat 0:984643af7d81 369 de_4 = 6;
krishanprajapat 0:984643af7d81 370 }
krishanprajapat 0:984643af7d81 371
krishanprajapat 0:984643af7d81 372 unsigned short int temp = input >> de_4;
krishanprajapat 0:984643af7d81 373 output += (temp ) << 2;
krishanprajapat 0:984643af7d81 374
krishanprajapat 0:984643af7d81 375 return output;
krishanprajapat 0:984643af7d81 376 };
krishanprajapat 0:984643af7d81 377
krishanprajapat 0:984643af7d81 378 unsigned char SFP_compress5_AT(unsigned int input){
krishanprajapat 0:984643af7d81 379 int de_4 = 0;;
krishanprajapat 0:984643af7d81 380 unsigned char output;
krishanprajapat 0:984643af7d81 381
krishanprajapat 0:984643af7d81 382 if(input <= 3){
krishanprajapat 0:984643af7d81 383 // DE = 000 [0]
krishanprajapat 0:984643af7d81 384 output = 0x0;
krishanprajapat 0:984643af7d81 385 de_4 = 0;
krishanprajapat 0:984643af7d81 386 }
krishanprajapat 0:984643af7d81 387 else if(input <= 12){
krishanprajapat 0:984643af7d81 388 // DE = 001 [1]
krishanprajapat 0:984643af7d81 389 output = 0x1;
krishanprajapat 0:984643af7d81 390 de_4 = 2;
krishanprajapat 0:984643af7d81 391 }
krishanprajapat 0:984643af7d81 392
krishanprajapat 0:984643af7d81 393 else if(input <= 48){
krishanprajapat 0:984643af7d81 394 // DE = 010 [2]
krishanprajapat 0:984643af7d81 395 output = 0x2;
krishanprajapat 0:984643af7d81 396 de_4 = 4;
krishanprajapat 0:984643af7d81 397 }
krishanprajapat 0:984643af7d81 398
krishanprajapat 0:984643af7d81 399 else if(input <= 192) {
krishanprajapat 0:984643af7d81 400 // DE = 011 [3]
krishanprajapat 0:984643af7d81 401 output = 0x3;
krishanprajapat 0:984643af7d81 402 de_4 = 6;
krishanprajapat 0:984643af7d81 403 }
krishanprajapat 0:984643af7d81 404
krishanprajapat 0:984643af7d81 405 else if(input <= 768) {
krishanprajapat 0:984643af7d81 406 // DE = 100 [4]
krishanprajapat 0:984643af7d81 407 output = 0x4;
krishanprajapat 0:984643af7d81 408 de_4 = 8;
krishanprajapat 0:984643af7d81 409 }
krishanprajapat 0:984643af7d81 410
krishanprajapat 0:984643af7d81 411 else if(input <= 3072) {
krishanprajapat 0:984643af7d81 412 // DE = 101 [5]
krishanprajapat 0:984643af7d81 413 output = 0x5;
krishanprajapat 0:984643af7d81 414 de_4 = 10;
krishanprajapat 0:984643af7d81 415 }
krishanprajapat 0:984643af7d81 416
krishanprajapat 0:984643af7d81 417 else if(input <= 12288) {
krishanprajapat 0:984643af7d81 418 // DE = 110 [6]
krishanprajapat 0:984643af7d81 419 output = 0x6;
krishanprajapat 0:984643af7d81 420 de_4 = 12;
krishanprajapat 0:984643af7d81 421 }
krishanprajapat 0:984643af7d81 422
krishanprajapat 0:984643af7d81 423 else {
krishanprajapat 0:984643af7d81 424 // DE = 111 [7]
krishanprajapat 0:984643af7d81 425 output = 0x7;
krishanprajapat 0:984643af7d81 426 de_4 = 14;
krishanprajapat 0:984643af7d81 427 }
krishanprajapat 0:984643af7d81 428
krishanprajapat 0:984643af7d81 429 unsigned short int temp = input >> de_4;
krishanprajapat 0:984643af7d81 430 output += (temp ) << 3;
krishanprajapat 0:984643af7d81 431
krishanprajapat 0:984643af7d81 432 return output;
krishanprajapat 0:984643af7d81 433 }
krishanprajapat 0:984643af7d81 434
krishanprajapat 0:984643af7d81 435 unsigned char SFP_compress7FC_AT(unsigned int input){ // for fast chain above threshold
krishanprajapat 0:984643af7d81 436 int de_4 = 0;;
krishanprajapat 0:984643af7d81 437 unsigned char output;
krishanprajapat 0:984643af7d81 438
krishanprajapat 0:984643af7d81 439 if(input <= 15){
krishanprajapat 0:984643af7d81 440 // DE = 000 [0]
krishanprajapat 0:984643af7d81 441 output = 0x0;
krishanprajapat 0:984643af7d81 442 de_4 = 0;
krishanprajapat 0:984643af7d81 443 }
krishanprajapat 0:984643af7d81 444 else if(input <= 60){
krishanprajapat 0:984643af7d81 445 // DE = 001 [1]
krishanprajapat 0:984643af7d81 446 output = 0x1;
krishanprajapat 0:984643af7d81 447 de_4 = 2;
krishanprajapat 0:984643af7d81 448 }
krishanprajapat 0:984643af7d81 449
krishanprajapat 0:984643af7d81 450 else if(input <= 240){
krishanprajapat 0:984643af7d81 451 // DE = 010 [2]
krishanprajapat 0:984643af7d81 452 output = 0x2;
krishanprajapat 0:984643af7d81 453 de_4 = 4;
krishanprajapat 0:984643af7d81 454 }
krishanprajapat 0:984643af7d81 455
krishanprajapat 0:984643af7d81 456 else if(input <= 960) {
krishanprajapat 0:984643af7d81 457 // DE = 011 [3]
krishanprajapat 0:984643af7d81 458 output = 0x3;
krishanprajapat 0:984643af7d81 459 de_4 = 6;
krishanprajapat 0:984643af7d81 460 }
krishanprajapat 0:984643af7d81 461
krishanprajapat 0:984643af7d81 462 else if(input <= 3840) {
krishanprajapat 0:984643af7d81 463 // DE = 100 [4]
krishanprajapat 0:984643af7d81 464 output = 0x4;
krishanprajapat 0:984643af7d81 465 de_4 = 8;
krishanprajapat 0:984643af7d81 466 }
krishanprajapat 0:984643af7d81 467
krishanprajapat 0:984643af7d81 468 else if(input <= 15360) {
krishanprajapat 0:984643af7d81 469 // DE = 101 [5]
krishanprajapat 0:984643af7d81 470 output = 0x5;
krishanprajapat 0:984643af7d81 471 de_4 = 10;
krishanprajapat 0:984643af7d81 472 }
krishanprajapat 0:984643af7d81 473
krishanprajapat 0:984643af7d81 474 else if(input <= 61440) {
krishanprajapat 0:984643af7d81 475 // DE = 110 [6]
krishanprajapat 0:984643af7d81 476 output = 0x6;
krishanprajapat 0:984643af7d81 477 de_4 = 12;
krishanprajapat 0:984643af7d81 478 }
krishanprajapat 0:984643af7d81 479
krishanprajapat 0:984643af7d81 480 else {
krishanprajapat 0:984643af7d81 481 // DE = 111 [7]
krishanprajapat 0:984643af7d81 482 output = 0x7;
krishanprajapat 0:984643af7d81 483 de_4 = 14;
krishanprajapat 0:984643af7d81 484 }
krishanprajapat 0:984643af7d81 485
krishanprajapat 0:984643af7d81 486 unsigned short int temp = input >> de_4;
krishanprajapat 0:984643af7d81 487 output += (temp ) << 3;
krishanprajapat 0:984643af7d81 488
krishanprajapat 0:984643af7d81 489 return output;
krishanprajapat 0:984643af7d81 490 }
krishanprajapat 0:984643af7d81 491
krishanprajapat 0:984643af7d81 492
krishanprajapat 0:984643af7d81 493
krishanprajapat 0:984643af7d81 494 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
krishanprajapat 0:984643af7d81 495 unsigned char SCP_compress6(unsigned int input){
krishanprajapat 0:984643af7d81 496 int ef_4;
krishanprajapat 0:984643af7d81 497 unsigned char output;
krishanprajapat 0:984643af7d81 498
krishanprajapat 0:984643af7d81 499 if(input <= 15){
krishanprajapat 0:984643af7d81 500 // EF = 00
krishanprajapat 0:984643af7d81 501 output = 0x0;
krishanprajapat 0:984643af7d81 502 ef_4 = 0;
krishanprajapat 0:984643af7d81 503 }
krishanprajapat 0:984643af7d81 504
krishanprajapat 0:984643af7d81 505 else if(input <= 60 ){
krishanprajapat 0:984643af7d81 506 // EF = 01 [1]
krishanprajapat 0:984643af7d81 507 output = 0x01;
krishanprajapat 0:984643af7d81 508 ef_4 = 2;
krishanprajapat 0:984643af7d81 509 }
krishanprajapat 0:984643af7d81 510 else if(input <= 240){
krishanprajapat 0:984643af7d81 511 // EF = 10 [2]
krishanprajapat 0:984643af7d81 512 output = 0x02;
krishanprajapat 0:984643af7d81 513 ef_4 = 4;
krishanprajapat 0:984643af7d81 514 }
krishanprajapat 0:984643af7d81 515 else{
krishanprajapat 0:984643af7d81 516 // EF = 11 [3]
krishanprajapat 0:984643af7d81 517 output = 0x03;
krishanprajapat 0:984643af7d81 518 ef_4 = 6;
krishanprajapat 0:984643af7d81 519 }
krishanprajapat 0:984643af7d81 520
krishanprajapat 0:984643af7d81 521 unsigned short int temp = input >> ef_4;
krishanprajapat 0:984643af7d81 522 output += (temp & 0xf) << 2;
krishanprajapat 0:984643af7d81 523
krishanprajapat 0:984643af7d81 524 return output;
krishanprajapat 0:984643af7d81 525 }
krishanprajapat 0:984643af7d81 526
krishanprajapat 0:984643af7d81 527 unsigned char SCP_compress5(unsigned int input){
krishanprajapat 0:984643af7d81 528
krishanprajapat 0:984643af7d81 529 int de_4 = 0;;
krishanprajapat 0:984643af7d81 530 unsigned char output;
krishanprajapat 0:984643af7d81 531
krishanprajapat 0:984643af7d81 532 if(input <= 7){
krishanprajapat 0:984643af7d81 533 // DE = 00 [0]
krishanprajapat 0:984643af7d81 534 output = 0x0;
krishanprajapat 0:984643af7d81 535 de_4 = 0;
krishanprajapat 0:984643af7d81 536 }
krishanprajapat 0:984643af7d81 537
krishanprajapat 0:984643af7d81 538 else if(input <= 28){
krishanprajapat 0:984643af7d81 539 // DE = 01 [1]
krishanprajapat 0:984643af7d81 540 output = 0x01;
krishanprajapat 0:984643af7d81 541 de_4 = 2;
krishanprajapat 0:984643af7d81 542 }
krishanprajapat 0:984643af7d81 543 else if(input <= 112){
krishanprajapat 0:984643af7d81 544 // DE = 10 [2]
krishanprajapat 0:984643af7d81 545 output = 0x02;
krishanprajapat 0:984643af7d81 546 de_4 = 4;
krishanprajapat 0:984643af7d81 547 }
krishanprajapat 0:984643af7d81 548 else{
krishanprajapat 0:984643af7d81 549 // DE = 11 [3]
krishanprajapat 0:984643af7d81 550 output = 0x03;
krishanprajapat 0:984643af7d81 551 de_4 = 6;
krishanprajapat 0:984643af7d81 552 }
krishanprajapat 0:984643af7d81 553
krishanprajapat 0:984643af7d81 554 unsigned short int temp = input >> de_4;
krishanprajapat 0:984643af7d81 555 output += (temp & 0x7) << 2;
krishanprajapat 0:984643af7d81 556
krishanprajapat 0:984643af7d81 557 return output;
krishanprajapat 0:984643af7d81 558 }
krishanprajapat 0:984643af7d81 559
krishanprajapat 0:984643af7d81 560 unsigned char SCP_compress6h(unsigned int input) {
krishanprajapat 0:984643af7d81 561
krishanprajapat 0:984643af7d81 562 int ef_4;
krishanprajapat 0:984643af7d81 563 unsigned char output;
krishanprajapat 0:984643af7d81 564
krishanprajapat 0:984643af7d81 565 if(input <=7){
krishanprajapat 0:984643af7d81 566 // EF = 000 [0]
krishanprajapat 0:984643af7d81 567 output = 0x00;
krishanprajapat 0:984643af7d81 568 ef_4 = 0;
krishanprajapat 0:984643af7d81 569 }
krishanprajapat 0:984643af7d81 570
krishanprajapat 0:984643af7d81 571 else if(input <=28){
krishanprajapat 0:984643af7d81 572 // EF = 001 [1]
krishanprajapat 0:984643af7d81 573 output = 0x01;
krishanprajapat 0:984643af7d81 574 ef_4 = 2;
krishanprajapat 0:984643af7d81 575 }
krishanprajapat 0:984643af7d81 576 else if(input <= 112){
krishanprajapat 0:984643af7d81 577
krishanprajapat 0:984643af7d81 578 // EF = 010 [2]
krishanprajapat 0:984643af7d81 579 output = 0x02;
krishanprajapat 0:984643af7d81 580 ef_4 = 4;
krishanprajapat 0:984643af7d81 581 }
krishanprajapat 0:984643af7d81 582 else if(input <= 448){
krishanprajapat 0:984643af7d81 583 // EF = 011 [3]
krishanprajapat 0:984643af7d81 584 output = 0x03;
krishanprajapat 0:984643af7d81 585 ef_4 = 6;
krishanprajapat 0:984643af7d81 586 }
krishanprajapat 0:984643af7d81 587 else if(input <= 1792){
krishanprajapat 0:984643af7d81 588 // EF = 100 [4]
krishanprajapat 0:984643af7d81 589 output = 0x04;
krishanprajapat 0:984643af7d81 590 ef_4 = 8;
krishanprajapat 0:984643af7d81 591
krishanprajapat 0:984643af7d81 592 }
krishanprajapat 0:984643af7d81 593 else if(input <= 7168){
krishanprajapat 0:984643af7d81 594 // EF = 101 [5]
krishanprajapat 0:984643af7d81 595 output = 0x05;
krishanprajapat 0:984643af7d81 596 ef_4 = 10;
krishanprajapat 0:984643af7d81 597
krishanprajapat 0:984643af7d81 598 }
krishanprajapat 0:984643af7d81 599 else if(input <= 28672){
krishanprajapat 0:984643af7d81 600 // EF = 110 [6]
krishanprajapat 0:984643af7d81 601 output = 0x06;
krishanprajapat 0:984643af7d81 602 ef_4 = 12;
krishanprajapat 0:984643af7d81 603 }
krishanprajapat 0:984643af7d81 604 else{
krishanprajapat 0:984643af7d81 605 // EF = 111 [7]
krishanprajapat 0:984643af7d81 606 output = 0x07;
krishanprajapat 0:984643af7d81 607 ef_4 =14;
krishanprajapat 0:984643af7d81 608 }
krishanprajapat 0:984643af7d81 609
krishanprajapat 0:984643af7d81 610 unsigned short int temp = input >> ef_4;
krishanprajapat 0:984643af7d81 611 output += (temp & 0x7) << 3;
krishanprajapat 0:984643af7d81 612
krishanprajapat 0:984643af7d81 613 return output;
krishanprajapat 0:984643af7d81 614
krishanprajapat 0:984643af7d81 615 }
krishanprajapat 0:984643af7d81 616
krishanprajapat 0:984643af7d81 617
krishanprajapat 0:984643af7d81 618 unsigned char SCP_compress7h(unsigned int input) {
krishanprajapat 0:984643af7d81 619
krishanprajapat 0:984643af7d81 620 int fg_4;
krishanprajapat 0:984643af7d81 621 unsigned char output;
krishanprajapat 0:984643af7d81 622
krishanprajapat 0:984643af7d81 623 if(input <= 15){
krishanprajapat 0:984643af7d81 624 // EF = 000 [0]
krishanprajapat 0:984643af7d81 625 output = 0x0;
krishanprajapat 0:984643af7d81 626 fg_4 = 0;
krishanprajapat 0:984643af7d81 627 }
krishanprajapat 0:984643af7d81 628
krishanprajapat 0:984643af7d81 629 else if(input <= 60){
krishanprajapat 0:984643af7d81 630 // EF = 001 [1]
krishanprajapat 0:984643af7d81 631 output = 0x01;
krishanprajapat 0:984643af7d81 632 fg_4 = 2;
krishanprajapat 0:984643af7d81 633 }
krishanprajapat 0:984643af7d81 634 else if(input <= 240){
krishanprajapat 0:984643af7d81 635
krishanprajapat 0:984643af7d81 636 // EF = 010 [2]
krishanprajapat 0:984643af7d81 637 output = 0x02;
krishanprajapat 0:984643af7d81 638 fg_4 = 4;
krishanprajapat 0:984643af7d81 639 }
krishanprajapat 0:984643af7d81 640 else if(input <= 960){
krishanprajapat 0:984643af7d81 641 // EF = 011 [3]
krishanprajapat 0:984643af7d81 642 output = 0x03;
krishanprajapat 0:984643af7d81 643 fg_4 = 6;
krishanprajapat 0:984643af7d81 644 }
krishanprajapat 0:984643af7d81 645 else if(input <= 3840){
krishanprajapat 0:984643af7d81 646 // EF = 100 [4]
krishanprajapat 0:984643af7d81 647 output = 0x04;
krishanprajapat 0:984643af7d81 648 fg_4 = 8;
krishanprajapat 0:984643af7d81 649
krishanprajapat 0:984643af7d81 650 }
krishanprajapat 0:984643af7d81 651 else if(input <= 15360){
krishanprajapat 0:984643af7d81 652 // EF = 101 [5]
krishanprajapat 0:984643af7d81 653 output = 0x05;
krishanprajapat 0:984643af7d81 654 fg_4 = 10;
krishanprajapat 0:984643af7d81 655
krishanprajapat 0:984643af7d81 656 }
krishanprajapat 0:984643af7d81 657 else if(input <= 61440){
krishanprajapat 0:984643af7d81 658 // EF = 110 [6]
krishanprajapat 0:984643af7d81 659 output = 0x06;
krishanprajapat 0:984643af7d81 660 fg_4 = 12;
krishanprajapat 0:984643af7d81 661 }
krishanprajapat 0:984643af7d81 662 else{
krishanprajapat 0:984643af7d81 663 // EF = 111 [7]
krishanprajapat 0:984643af7d81 664 output = 0x07;
krishanprajapat 0:984643af7d81 665 fg_4 =14;
krishanprajapat 0:984643af7d81 666 }
krishanprajapat 0:984643af7d81 667
krishanprajapat 0:984643af7d81 668 unsigned short int temp = input >> fg_4;
krishanprajapat 0:984643af7d81 669 output += (temp & 0xf) << 3;
krishanprajapat 0:984643af7d81 670
krishanprajapat 0:984643af7d81 671 return output;
krishanprajapat 0:984643af7d81 672
krishanprajapat 0:984643af7d81 673 }
krishanprajapat 0:984643af7d81 674 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
krishanprajapat 0:984643af7d81 675 void SCP_compress_data();
krishanprajapat 0:984643af7d81 676 void SFP_compress_data(unsigned char* input){
krishanprajapat 0:984643af7d81 677
krishanprajapat 0:984643af7d81 678 bool LCR = true;
krishanprajapat 0:984643af7d81 679 int i = 0;
krishanprajapat 0:984643af7d81 680 static int packet_no = 0; //takes value from 0 to 29
krishanprajapat 0:984643af7d81 681 //TRAVERSE THE LIST TO DETERMINE LCR OR HCR and stroing the values in proton_bin and electron bin
krishanprajapat 0:984643af7d81 682 SFP_bin[0] = *input;
krishanprajapat 0:984643af7d81 683 for(i=1 ; i<= NUM_PROTON_BIN + NUM_ELECTRON_BIN + VETO ; ++i){ //storing the bin values into an array name bin
krishanprajapat 0:984643af7d81 684 SFP_bin[i]=read_2byte(input+1+((i-1)<<1)); //proton bin and elecron bin are 2 byte, hence read_2byte and
krishanprajapat 0:984643af7d81 685 SCP_bin[i]+=SFP_bin[i];
krishanprajapat 0:984643af7d81 686 if(SFP_bin[i] > SFP_thresholds[i]){ //fast cahin is 4 byte hence read_4byte
krishanprajapat 0:984643af7d81 687 LCR = false; // if a single value is above threshold then lcr becomes false
krishanprajapat 0:984643af7d81 688 i++;
krishanprajapat 0:984643af7d81 689 break;
krishanprajapat 0:984643af7d81 690 }
krishanprajapat 0:984643af7d81 691 }
krishanprajapat 0:984643af7d81 692
krishanprajapat 0:984643af7d81 693 for( ; i<= NUM_PROTON_BIN + NUM_ELECTRON_BIN + VETO ; ++i){
krishanprajapat 0:984643af7d81 694 SCP_bin[i]+=SFP_bin[i];
krishanprajapat 0:984643af7d81 695 SFP_bin[i] = read_2byte(input + 1 + ( (i-1)<<1) );
krishanprajapat 0:984643af7d81 696 }
krishanprajapat 0:984643af7d81 697
krishanprajapat 0:984643af7d81 698 SFP_bin[i] = read_4byte(input+1+ ((i-1)<<1)) ;
krishanprajapat 0:984643af7d81 699 SCP_bin[i]+=SFP_bin[i];
krishanprajapat 0:984643af7d81 700
krishanprajapat 0:984643af7d81 701 if(SFP_bin[i]>SFP_thresholds[i])
krishanprajapat 0:984643af7d81 702 LCR = false; //since veto starts from location (input + 65) and (input + 69)
krishanprajapat 0:984643af7d81 703
krishanprajapat 0:984643af7d81 704 SFP_bin[i+1] = read_4byte(input+69);
krishanprajapat 0:984643af7d81 705 SCP_bin[i]+=SFP_bin[i];
krishanprajapat 0:984643af7d81 706
krishanprajapat 0:984643af7d81 707 if(SFP_bin[i]>SFP_thresholds[i])
krishanprajapat 0:984643af7d81 708 LCR = false;
krishanprajapat 0:984643af7d81 709
krishanprajapat 0:984643af7d81 710
krishanprajapat 0:984643af7d81 711 // printf("\n"); //for printing the sfp bin
krishanprajapat 0:984643af7d81 712 // for (i=0;i<35;i++){
krishanprajapat 0:984643af7d81 713 // printf("sfp[%d] = %d",i,SFP_bin[i]);
krishanprajapat 0:984643af7d81 714 // }
krishanprajapat 0:984643af7d81 715 // printf("\n");
krishanprajapat 0:984643af7d81 716
krishanprajapat 0:984643af7d81 717 if(LCR){
krishanprajapat 0:984643af7d81 718
krishanprajapat 0:984643af7d81 719 SFP_outputBT[0] = (packet_no<<3) + ( SFP_compress5_BT(SFP_bin[1])>>2 );
krishanprajapat 0:984643af7d81 720 SFP_outputBT[1] = ( SFP_compress5_BT(SFP_bin[1])<<6 ) + ( SFP_compress5_BT(SFP_bin[2])<<1 ) + ( SFP_compress5_BT(SFP_bin[3])>>4 );
krishanprajapat 0:984643af7d81 721 SFP_outputBT[2] = ( SFP_compress5_BT(SFP_bin[3])<<4 ) + ( SFP_compress5_BT(SFP_bin[4])>>1 );
krishanprajapat 0:984643af7d81 722 SFP_outputBT[3] = ( SFP_compress5_BT(SFP_bin[4])<<7 ) + ( SFP_compress5_BT(SFP_bin[5])<<2 ) + ( SFP_compress5_BT(SFP_bin[6])>>3 );
krishanprajapat 0:984643af7d81 723 SFP_outputBT[4] = ( SFP_compress5_BT(SFP_bin[6])<<5 ) + ( SFP_compress5_BT(SFP_bin[7]) );
krishanprajapat 0:984643af7d81 724 SFP_outputBT[5] = ( SFP_compress5_BT(SFP_bin[8])<<3 ) + ( SFP_compress5_BT(SFP_bin[9])>>2 );
krishanprajapat 0:984643af7d81 725 SFP_outputBT[6] = ( SFP_compress5_BT(SFP_bin[9])<<6 ) + ( SFP_compress5_BT(SFP_bin[10])<<1 ) + ( SFP_compress5_BT(SFP_bin[11])>>4 );
krishanprajapat 0:984643af7d81 726 SFP_outputBT[7] = ( SFP_compress5_BT(SFP_bin[11])<<4 ) + ( SFP_compress5_BT(SFP_bin[12])>>1 );
krishanprajapat 0:984643af7d81 727 SFP_outputBT[8] = ( SFP_compress5_BT(SFP_bin[12])<<7 ) + ( SFP_compress5_BT(SFP_bin[13])<<2 ) + ( SFP_compress5_BT(SFP_bin[14])>>3 );
krishanprajapat 0:984643af7d81 728 SFP_outputBT[9] = ( SFP_compress5_BT(SFP_bin[14])<<5 ) + ( SFP_compress5_BT(SFP_bin[15]) );
krishanprajapat 0:984643af7d81 729 SFP_outputBT[10] = ( SFP_compress5_BT(SFP_bin[16])<<3 ) + ( SFP_compress5_BT(SFP_bin[17])>>2 );
krishanprajapat 0:984643af7d81 730 SFP_outputBT[11] = ( SFP_compress5_BT(SFP_bin[17])<<6 ) + ( SFP_compress6_BT(SFP_bin[18]) );
krishanprajapat 0:984643af7d81 731 SFP_outputBT[12] = ( SFP_compress6_BT(SFP_bin[19])<<2 ) + ( SFP_compress6_BT(SFP_bin[20])>>4 );
krishanprajapat 0:984643af7d81 732 SFP_outputBT[13] = ( SFP_compress6_BT(SFP_bin[20])<<4 ) + ( SFP_compress5_BT(SFP_bin[21])>>1 );
krishanprajapat 0:984643af7d81 733 SFP_outputBT[14] = ( SFP_compress5_BT(SFP_bin[21])<<7 ) + ( SFP_compress5_BT(SFP_bin[22])<<2 ) + ( SFP_compress5_BT(SFP_bin[23])>>3 );
krishanprajapat 0:984643af7d81 734 SFP_outputBT[15] = ( SFP_compress5_BT(SFP_bin[23])<<5 ) + ( SFP_compress5_BT(SFP_bin[24]) );
krishanprajapat 0:984643af7d81 735 SFP_outputBT[16] = ( SFP_compress5_BT(SFP_bin[25])<<3 ) + ( SFP_compress5_BT(SFP_bin[26])>>2 );
krishanprajapat 0:984643af7d81 736 SFP_outputBT[17] = ( SFP_compress5_BT(SFP_bin[26])<<6 ) + ( SFP_compress5_BT(SFP_bin[27])<<1 ) + ( SFP_compress5_BT(SFP_bin[28])>>4);
krishanprajapat 0:984643af7d81 737 SFP_outputBT[18] = ( SFP_compress5_BT(SFP_bin[28])<<4 ) + ( SFP_compress5_BT(SFP_bin[29])>>1) ;
krishanprajapat 0:984643af7d81 738 SFP_outputBT[19] = ( SFP_compress5_BT(SFP_bin[29])<<7 ) + ( SFP_compress5_BT(SFP_bin[30])<<2 ) + ( SFP_compress5_BT(SFP_bin[31])>>3) ;
krishanprajapat 0:984643af7d81 739 SFP_outputBT[20] = ( SFP_compress5_BT(SFP_bin[31])<<5 ) + ( SFP_compress4_BT(SFP_bin[32])<<1) + ( SCP_compress5(SFP_bin[33])>>4 ) ; //
krishanprajapat 0:984643af7d81 740 SFP_outputBT[21] = ( SCP_compress5(SFP_bin[33])<<4 ) + ( SCP_compress5(SFP_bin[34])>>1 ); //here intentionally SCP_compress is used instead of SCP_compress5 is different than SFP_compress5
krishanprajapat 0:984643af7d81 741 SFP_outputBT[22] = ( SCP_compress5(SFP_bin[34])<<7 ); //7 bits are spare
krishanprajapat 0:984643af7d81 742
krishanprajapat 0:984643af7d81 743 Science_TMframe::making_frame(3,'L',SFP_outputBT);
krishanprajapat 0:984643af7d81 744 if(++packet_no == 30){
krishanprajapat 0:984643af7d81 745 packet_no=0;
krishanprajapat 0:984643af7d81 746 SCP_compress_data();
krishanprajapat 0:984643af7d81 747 for(i=0;i<PACKET_SEQUENCE_COUNT + NUM_PROTON_BIN + NUM_ELECTRON_BIN + VETO + FASTCHAIN;i++){
krishanprajapat 0:984643af7d81 748 if(packet_no==0){
krishanprajapat 0:984643af7d81 749 SCP_bin[i]=0;
krishanprajapat 0:984643af7d81 750 }
krishanprajapat 0:984643af7d81 751 }
krishanprajapat 0:984643af7d81 752 }
krishanprajapat 0:984643af7d81 753
krishanprajapat 0:984643af7d81 754
krishanprajapat 0:984643af7d81 755 }
krishanprajapat 0:984643af7d81 756
krishanprajapat 0:984643af7d81 757 else {
krishanprajapat 0:984643af7d81 758
krishanprajapat 0:984643af7d81 759
krishanprajapat 0:984643af7d81 760 SFP_outputAT[0] = (RTC_TIME>>27)&(0xff);
krishanprajapat 0:984643af7d81 761 SFP_outputAT[1] = (RTC_TIME>>19)&(0xff);
krishanprajapat 0:984643af7d81 762 SFP_outputAT[2] = (RTC_TIME>>11)&(0xff);
krishanprajapat 0:984643af7d81 763 SFP_outputAT[3] = (RTC_TIME>>3 )&(0xff);
krishanprajapat 0:984643af7d81 764 SFP_outputAT[4] = (RTC_TIME<<5 )&(0xff) + (packet_no);
krishanprajapat 0:984643af7d81 765 SFP_outputAT[5] = ( SFP_compress7_AT(SFP_bin[1])<<1 ) + ( SFP_compress7_AT(SFP_bin[2])>>6 );
krishanprajapat 0:984643af7d81 766 SFP_outputAT[6] = ( SFP_compress7_AT(SFP_bin[2])<<2 ) + ( SFP_compress7_AT(SFP_bin[3])>>5 );
krishanprajapat 0:984643af7d81 767 SFP_outputAT[7] = ( SFP_compress7_AT(SFP_bin[3])<<3 ) + ( SFP_compress7_AT(SFP_bin[4])>>4 );
krishanprajapat 0:984643af7d81 768 SFP_outputAT[8] = ( SFP_compress7_AT(SFP_bin[4])<<4 ) + ( SFP_compress7_AT(SFP_bin[5])>>3 );
krishanprajapat 0:984643af7d81 769 SFP_outputAT[9] = ( SFP_compress7_AT(SFP_bin[5])<<5 ) + ( SFP_compress7_AT(SFP_bin[6])>>2 );
krishanprajapat 0:984643af7d81 770 SFP_outputAT[10] = ( SFP_compress7_AT(SFP_bin[6])<<6 ) + ( SFP_compress7_AT(SFP_bin[7])>>1 );
krishanprajapat 0:984643af7d81 771 SFP_outputAT[11] = ( SFP_compress7_AT(SFP_bin[7])<<7 ) + ( SFP_compress7_AT(SFP_bin[8]) );
krishanprajapat 0:984643af7d81 772 SFP_outputAT[12] = ( SFP_compress7_AT(SFP_bin[9])<<1 ) + ( SFP_compress7_AT(SFP_bin[10])>>6);
krishanprajapat 0:984643af7d81 773 SFP_outputAT[13] = ( SFP_compress7_AT(SFP_bin[10])<<2 ) + ( SFP_compress7_AT(SFP_bin[11])>>5);
krishanprajapat 0:984643af7d81 774 SFP_outputAT[14] = ( SFP_compress7_AT(SFP_bin[11])<<3 ) + ( SFP_compress7_AT(SFP_bin[12])>>4);
krishanprajapat 0:984643af7d81 775 SFP_outputAT[15] = ( SFP_compress7_AT(SFP_bin[12])<<4 ) + ( SFP_compress7_AT(SFP_bin[13])>>3);
krishanprajapat 0:984643af7d81 776 SFP_outputAT[16] = ( SFP_compress7_AT(SFP_bin[13])<<5 ) + ( SFP_compress7_AT(SFP_bin[14])>>2);
krishanprajapat 0:984643af7d81 777 SFP_outputAT[17] = ( SFP_compress7_AT(SFP_bin[14])<<6 ) + ( SFP_compress7_AT(SFP_bin[15])>>1);
krishanprajapat 0:984643af7d81 778 SFP_outputAT[18] = ( SFP_compress7_AT(SFP_bin[15])<<7 ) + ( SFP_compress7_AT(SFP_bin[16]));
krishanprajapat 0:984643af7d81 779 SFP_outputAT[19] = ( SFP_compress7_AT(SFP_bin[17])<<1 ) + ( SFP_compress8_AT(SFP_bin[18])>>7 );
krishanprajapat 0:984643af7d81 780 SFP_outputAT[20] = ( SFP_compress8_AT(SFP_bin[18])<<1 ) + ( SFP_compress8_AT(SFP_bin[19])>>7 );
krishanprajapat 0:984643af7d81 781 SFP_outputAT[21] = ( SFP_compress8_AT(SFP_bin[19])<<1 ) + ( SFP_compress8_AT(SFP_bin[20])>>7 );
krishanprajapat 0:984643af7d81 782 SFP_outputAT[22] = ( SFP_compress8_AT(SFP_bin[20])<<1 ) + ( SFP_compress7_AT(SFP_bin[21])>>6 );
krishanprajapat 0:984643af7d81 783 SFP_outputAT[23] = ( SFP_compress7_AT(SFP_bin[21])<<2 ) + ( SFP_compress7_AT(SFP_bin[22])>>5 );
krishanprajapat 0:984643af7d81 784 SFP_outputAT[24] = ( SFP_compress7_AT(SFP_bin[22])<<3 ) + ( SFP_compress7_AT(SFP_bin[23])>>4 );
krishanprajapat 0:984643af7d81 785 SFP_outputAT[25] = ( SFP_compress7_AT(SFP_bin[23])<<4 ) + ( SFP_compress7_AT(SFP_bin[24])>>3 );
krishanprajapat 0:984643af7d81 786 SFP_outputAT[26] = ( SFP_compress7_AT(SFP_bin[24])<<5 ) + ( SFP_compress7_AT(SFP_bin[25])>>2 );
krishanprajapat 0:984643af7d81 787 SFP_outputAT[27] = ( SFP_compress7_AT(SFP_bin[25])<<6 ) + ( SFP_compress7_AT(SFP_bin[26])>>1 );
krishanprajapat 0:984643af7d81 788 SFP_outputAT[28] = ( SFP_compress7_AT(SFP_bin[26])<<7 ) + ( SFP_compress7_AT(SFP_bin[27]) );
krishanprajapat 0:984643af7d81 789 SFP_outputAT[29] = ( SFP_compress7_AT(SFP_bin[28])<<1 ) + ( SFP_compress7_AT(SFP_bin[29])>>6);
krishanprajapat 0:984643af7d81 790 SFP_outputAT[30] = ( SFP_compress7_AT(SFP_bin[29])<<2 ) + ( SFP_compress7_AT(SFP_bin[30])>>5);
krishanprajapat 0:984643af7d81 791 SFP_outputAT[31] = ( SFP_compress7_AT(SFP_bin[30])<<3 ) +( SFP_compress7_AT(SFP_bin[31])>>4);
krishanprajapat 0:984643af7d81 792 SFP_outputAT[32] = ( SFP_compress7_AT(SFP_bin[31])<<4 ) +( SFP_compress5_AT(SFP_bin[32])>>1);
krishanprajapat 0:984643af7d81 793 SFP_outputAT[33] = ( SFP_compress5_AT(SFP_bin[32])<<7 ) +( SFP_compress7FC_AT(SFP_bin[33]));
krishanprajapat 0:984643af7d81 794 SFP_outputAT[34] = ( SFP_compress7FC_AT(SFP_bin[34])<<1 ); // 1 bit is spare
krishanprajapat 0:984643af7d81 795
krishanprajapat 0:984643af7d81 796 Science_TMframe::making_frame(2,'H',SFP_outputAT);
krishanprajapat 0:984643af7d81 797 if(++packet_no == 30){
krishanprajapat 0:984643af7d81 798 packet_no=0;
krishanprajapat 0:984643af7d81 799 SCP_compress_data();
krishanprajapat 0:984643af7d81 800 for(i=0;i<PACKET_SEQUENCE_COUNT + NUM_PROTON_BIN + NUM_ELECTRON_BIN + VETO + FASTCHAIN;i++){
krishanprajapat 0:984643af7d81 801 if(packet_no==0){
krishanprajapat 0:984643af7d81 802 SCP_bin[i]=0;
krishanprajapat 0:984643af7d81 803 }
krishanprajapat 0:984643af7d81 804 }
krishanprajapat 0:984643af7d81 805 }
krishanprajapat 0:984643af7d81 806
krishanprajapat 0:984643af7d81 807 }
krishanprajapat 0:984643af7d81 808
krishanprajapat 0:984643af7d81 809 }
krishanprajapat 0:984643af7d81 810
krishanprajapat 0:984643af7d81 811
krishanprajapat 0:984643af7d81 812 /*
krishanprajapat 0:984643af7d81 813 brief: takes the pointer of the raw data string and return the address of the array which stores the address of 30 packets.
krishanprajapat 0:984643af7d81 814 input: pointer to the raw data.
krishanprajapat 0:984643af7d81 815 output : void
krishanprajapat 0:984643af7d81 816 */
krishanprajapat 0:984643af7d81 817
krishanprajapat 0:984643af7d81 818 void complete_compression(unsigned char *SRP,uint64_t x){
krishanprajapat 0:984643af7d81 819 RTC_TIME = x;
krishanprajapat 0:984643af7d81 820 int i; //30 times because 3 second data
krishanprajapat 0:984643af7d81 821
krishanprajapat 0:984643af7d81 822 for(i=0;i<30;i++){
krishanprajapat 0:984643af7d81 823 SFP_compress_data(SRP + 73*i);
krishanprajapat 0:984643af7d81 824 }
krishanprajapat 0:984643af7d81 825
krishanprajapat 0:984643af7d81 826 }
krishanprajapat 0:984643af7d81 827
krishanprajapat 0:984643af7d81 828
krishanprajapat 0:984643af7d81 829
krishanprajapat 0:984643af7d81 830 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
krishanprajapat 0:984643af7d81 831
krishanprajapat 0:984643af7d81 832
krishanprajapat 0:984643af7d81 833
krishanprajapat 0:984643af7d81 834 /*
krishanprajapat 0:984643af7d81 835 @brief: compresses the given input stream and return output packet
krishanprajapat 0:984643af7d81 836 @param: pointer to input stream. Input stream always has the fixed size of RAW_PACKET_LENGTH
krishanprajapat 0:984643af7d81 837 @return: pointer to output stream. Output stream has the size of 22 or 26 bytes
krishanprajapat 0:984643af7d81 838 */
krishanprajapat 0:984643af7d81 839 void SCP_compress_data(){
krishanprajapat 0:984643af7d81 840
krishanprajapat 0:984643af7d81 841 bool LCR = true;
krishanprajapat 0:984643af7d81 842 int i = 0;
krishanprajapat 0:984643af7d81 843
krishanprajapat 0:984643af7d81 844 for(i=1;i<=PACKET_SEQUENCE_COUNT + NUM_PROTON_BIN + NUM_ELECTRON_BIN + VETO + FASTCHAIN ;i++){
krishanprajapat 0:984643af7d81 845 if(SCP_bin[i]>SCP_thresholds[i]){
krishanprajapat 0:984643af7d81 846 LCR = false;
krishanprajapat 0:984643af7d81 847 break;
krishanprajapat 0:984643af7d81 848 }
krishanprajapat 0:984643af7d81 849 }
krishanprajapat 0:984643af7d81 850 // printf("\n"); //for printing the scp bin
krishanprajapat 0:984643af7d81 851 // for (i=0;i<35;i++){
krishanprajapat 0:984643af7d81 852 // printf(" scp[%d] = %d ",i,SCP_bin[i]);
krishanprajapat 0:984643af7d81 853 // }
krishanprajapat 0:984643af7d81 854 // printf("\n");
krishanprajapat 0:984643af7d81 855 // compressing the data
krishanprajapat 0:984643af7d81 856 if(LCR){
krishanprajapat 0:984643af7d81 857 SCP_outputLCR[0] = (RTC_TIME>>5)&(0xff); //first 13 bits for time tagging
krishanprajapat 0:984643af7d81 858 SCP_outputLCR[1] = (RTC_TIME<<3)&(0xff); //then 4 bits for attitude tag
krishanprajapat 0:984643af7d81 859 SCP_outputLCR[2] = 0x00; //only attitude tag is left
krishanprajapat 0:984643af7d81 860 SCP_outputLCR[2] += ( SCP_compress5(SCP_bin[0])<<1 ) + ( SCP_compress5(SCP_bin[1])>>4 );
krishanprajapat 0:984643af7d81 861 SCP_outputLCR[3] = ( SCP_compress5(SCP_bin[1])<<4 ) + ( SCP_compress5(SCP_bin[2])>>1 );
krishanprajapat 0:984643af7d81 862 SCP_outputLCR[4] = ( SCP_compress5(SCP_bin[2])<<7 ) + ( SCP_compress5(SCP_bin[3])<<2 ) + ( SCP_compress5(SCP_bin[4])>>3 );
krishanprajapat 0:984643af7d81 863 SCP_outputLCR[5] = ( SCP_compress5(SCP_bin[4])<<5 ) + ( SCP_compress5(SCP_bin[5]) );
krishanprajapat 0:984643af7d81 864 SCP_outputLCR[6] = ( SCP_compress5(SCP_bin[6])<<3 ) + ( SCP_compress5(SCP_bin[7])>>2 );
krishanprajapat 0:984643af7d81 865 SCP_outputLCR[7] = ( SCP_compress5(SCP_bin[7])<<6 ) + ( SCP_compress5(SCP_bin[8])<<1 ) + ( SCP_compress5(SCP_bin[9])>>4 );
krishanprajapat 0:984643af7d81 866 SCP_outputLCR[8] = ( SCP_compress5(SCP_bin[9])<<4 ) + ( SCP_compress5(SCP_bin[10])>>1 );
krishanprajapat 0:984643af7d81 867 SCP_outputLCR[9] = ( SCP_compress5(SCP_bin[10])<<7 ) + ( SCP_compress5(SCP_bin[11])<<2) + ( SCP_compress5(SCP_bin[12])>>3 );
krishanprajapat 0:984643af7d81 868 SCP_outputLCR[10] = ( SCP_compress5(SCP_bin[12])<<5 ) + ( SCP_compress5(SCP_bin[13]) );
krishanprajapat 0:984643af7d81 869 SCP_outputLCR[11] = ( SCP_compress5(SCP_bin[14])<<3 ) + ( SCP_compress5(SCP_bin[15])>>2 );
krishanprajapat 0:984643af7d81 870 SCP_outputLCR[12] = ( SCP_compress5(SCP_bin[15])<<6 ) + ( SCP_compress5(SCP_bin[16])<<1) + ( SCP_compress6(SCP_bin[17])>>5 );
krishanprajapat 0:984643af7d81 871 SCP_outputLCR[13] = ( SCP_compress6(SCP_bin[17])<<3 ) + ( SCP_compress6(SCP_bin[18])>>3 );
krishanprajapat 0:984643af7d81 872 SCP_outputLCR[14] = ( SCP_compress5(SCP_bin[18])<<5 ) + ( SCP_compress6(SCP_bin[19])>>1 );
krishanprajapat 0:984643af7d81 873 SCP_outputLCR[15] = ( SCP_compress6(SCP_bin[19])<<7 ) + ( SCP_compress5(SCP_bin[20])<<2 ) + ( SCP_compress5(SCP_bin[21])>>3 );
krishanprajapat 0:984643af7d81 874 SCP_outputLCR[16] = ( SCP_compress5(SCP_bin[21])<<5 ) + ( SCP_compress5(SCP_bin[22]) );
krishanprajapat 0:984643af7d81 875 SCP_outputLCR[17] = ( SCP_compress5(SCP_bin[23])<<3 ) + ( SCP_compress5(SCP_bin[24])>>2 );
krishanprajapat 0:984643af7d81 876 SCP_outputLCR[18] = ( SCP_compress5(SCP_bin[24])<<6 ) + ( SCP_compress5(SCP_bin[25])<<1) + ( SCP_compress5(SCP_bin[26])>>4 );
krishanprajapat 0:984643af7d81 877 SCP_outputLCR[19] = ( SCP_compress5(SCP_bin[26])<<4 ) + ( SCP_compress5(SCP_bin[27])>>1 );
krishanprajapat 0:984643af7d81 878 SCP_outputLCR[20] = ( SCP_compress5(SCP_bin[27])<<7 ) + ( SCP_compress5(SCP_bin[28])<<2 ) + ( SCP_compress5(SCP_bin[29])>>3 );
krishanprajapat 0:984643af7d81 879 SCP_outputLCR[21] = ( SCP_compress5(SCP_bin[29])<<5 ) + ( SCP_compress5(SCP_bin[30]) );
krishanprajapat 0:984643af7d81 880
krishanprajapat 0:984643af7d81 881 Science_TMframe::making_frame(1,'L',SCP_outputLCR);
krishanprajapat 0:984643af7d81 882 }
krishanprajapat 0:984643af7d81 883 else{
krishanprajapat 0:984643af7d81 884
krishanprajapat 0:984643af7d81 885 SCP_outputLCR[0] = (RTC_TIME>>5)&(0xff); //first 13 bits for time tagging
krishanprajapat 0:984643af7d81 886 SCP_outputLCR[1] = (RTC_TIME<<3)&(0xff);
krishanprajapat 0:984643af7d81 887 SCP_outputHCR[2] = 0x40;
krishanprajapat 0:984643af7d81 888 SCP_outputHCR[2] += ( SCP_compress6h(SCP_bin[0])<<6 ) ;
krishanprajapat 0:984643af7d81 889 SCP_outputHCR[3] = ( SCP_compress6h(SCP_bin[1])<<2 ) + ( SCP_compress6h(SCP_bin[2])>>4) ;
krishanprajapat 0:984643af7d81 890 SCP_outputHCR[4] = ( SCP_compress6h(SCP_bin[2])<<4 ) + ( SCP_compress6h(SCP_bin[3])>>2) ;
krishanprajapat 0:984643af7d81 891 SCP_outputHCR[5] = ( SCP_compress6h(SCP_bin[3])<<6 ) + ( SCP_compress6h(SCP_bin[4])) ;
krishanprajapat 0:984643af7d81 892 SCP_outputHCR[6] = ( SCP_compress6h(SCP_bin[5])<<2 ) + ( SCP_compress6h(SCP_bin[6])>>4) ;
krishanprajapat 0:984643af7d81 893 SCP_outputHCR[7] = ( SCP_compress6h(SCP_bin[6])<<4 ) + ( SCP_compress6h(SCP_bin[7])>>2) ;
krishanprajapat 0:984643af7d81 894 SCP_outputHCR[8] = ( SCP_compress6h(SCP_bin[7])<<6 ) + ( SCP_compress6h(SCP_bin[8])) ;
krishanprajapat 0:984643af7d81 895 SCP_outputHCR[9] = ( SCP_compress6h(SCP_bin[9])<<2 ) + ( SCP_compress6h(SCP_bin[10])>>4) ;
krishanprajapat 0:984643af7d81 896 SCP_outputHCR[10] = ( SCP_compress6h(SCP_bin[10])<<4 ) + ( SCP_compress6h(SCP_bin[11])>>2);
krishanprajapat 0:984643af7d81 897 SCP_outputHCR[11] = ( SCP_compress6h(SCP_bin[11])<<6 ) + ( SCP_compress6h(SCP_bin[12])) ;
krishanprajapat 0:984643af7d81 898 SCP_outputHCR[12] = ( SCP_compress6h(SCP_bin[13])<<2 ) + ( SCP_compress6h(SCP_bin[14])>>4) ;
krishanprajapat 0:984643af7d81 899 SCP_outputHCR[13] = ( SCP_compress6h(SCP_bin[14])<<4 ) + ( SCP_compress6h(SCP_bin[15])>>2) ;
krishanprajapat 0:984643af7d81 900 SCP_outputHCR[14] = ( SCP_compress6h(SCP_bin[15])<<6 ) + ( SCP_compress6h(SCP_bin[16])) ;
krishanprajapat 0:984643af7d81 901 SCP_outputHCR[15] = ( SCP_compress7h(SCP_bin[17])<<1 ) + ( SCP_compress7h(SCP_bin[18])>>6) ;
krishanprajapat 0:984643af7d81 902 SCP_outputHCR[16] = ( SCP_compress7h(SCP_bin[18])<<2 ) + ( SCP_compress7h(SCP_bin[19])>>5) ;
krishanprajapat 0:984643af7d81 903 SCP_outputHCR[17] = ( SCP_compress7h(SCP_bin[19])<<3 ) + ( SCP_compress6h(SCP_bin[20])>>3) ;
krishanprajapat 0:984643af7d81 904 SCP_outputHCR[18] = ( SCP_compress6h(SCP_bin[20])<<5 ) + ( SCP_compress6h(SCP_bin[21])>>1) ;
krishanprajapat 0:984643af7d81 905 SCP_outputHCR[19] = ( SCP_compress6h(SCP_bin[21])<<7 ) + ( SCP_compress6h(SCP_bin[22])<<1) + ( SCP_compress6h(SCP_bin[23])>>5) ;
krishanprajapat 0:984643af7d81 906 SCP_outputHCR[20] = ( SCP_compress6h(SCP_bin[23])<<3 ) + ( SCP_compress6h(SCP_bin[24])>>3) ;
krishanprajapat 0:984643af7d81 907 SCP_outputHCR[21] = ( SCP_compress6h(SCP_bin[24])<<5 ) + ( SCP_compress6h(SCP_bin[25])>>1) ;
krishanprajapat 0:984643af7d81 908 SCP_outputHCR[22] = ( SCP_compress6h(SCP_bin[25])<<7 ) + ( SCP_compress6h(SCP_bin[26])<<1) + ( SCP_compress6h(SCP_bin[27])>>5) ;
krishanprajapat 0:984643af7d81 909 SCP_outputHCR[23] = ( SCP_compress6h(SCP_bin[27])<<3 ) + ( SCP_compress6h(SCP_bin[28])>>3) ;
krishanprajapat 0:984643af7d81 910 SCP_outputHCR[24] = ( SCP_compress6h(SCP_bin[28])<<5 ) + ( SCP_compress6h(SCP_bin[29])>>1) ;
krishanprajapat 0:984643af7d81 911 SCP_outputHCR[25] = ( SCP_compress6h(SCP_bin[29])<<7 ) + ( SCP_compress6h(SCP_bin[30])<<1) ; //last bit is empty
krishanprajapat 0:984643af7d81 912
krishanprajapat 0:984643af7d81 913 /* for (i=0;i<26;i++){
krishanprajapat 0:984643af7d81 914 printf("\nscp[%d] = %d",i,SCP_outputHCR[i]);
krishanprajapat 0:984643af7d81 915 }*/
krishanprajapat 0:984643af7d81 916 Science_TMframe::making_frame(1,'H',SCP_outputHCR);
krishanprajapat 0:984643af7d81 917 }
krishanprajapat 0:984643af7d81 918 }
krishanprajapat 0:984643af7d81 919
krishanprajapat 0:984643af7d81 920 }