;---------------------- ; ; pro mvn_lpw_r_header new ; ;---------------------- ; ; Decomutater of the LPW telemetry data ; ;---------------------- ; contains routines/procedures: ; mvn_lpw_r_header ;---------------------- ;example ; to run ; mvn_lpw_r_header, '\\lasp-smb\vannattc\MAVEN\lab_rlse2_20110505.dat',output ;---------------------- ; history: ; original file r_header made by corinne vannatta ; last changes: 2012 May 1 by: Laila ;---------------------- ; pro mvn_lpw_r_header, filename,output,strip_pad = strip_pad, wrapper = wrapper, compressed=compressed,packet=packet ;+********************************************************* ; This routine strips the packet headers off the data, and stores the data in various ways. ; The data is stored in one long array as well as arrays of each individual type of data. ; The routine also prints out how many of each tpye of packet are present in the file. ; filename: the name of the file the data is in ; output: this is a dummy variable input, but output holds all the data for ; the subsequent plotting routines ; samplerate: Sample rate in Hz. Used to get time, as well as units on subsequent plots ;-********************************************************* t_start=SYSTIME(1,/seconds) ;to check on speed t1=SYSTIME(1,/seconds) print,'r_header filename ',filename ;plot_opt = plot_opt filename = filename newfile_unsigned = read_binary(filename, data_type = 12,endian='big') newfile_signed = read_binary(filename, data_type = 2,endian='big') ;can I get rid of this? used in ATR, EUV, ADR ...more? ;newfile_byte = read_binary(filename, data_type = 1,endian='big') ;can I get rid of this?; can we change this so only the byte is used??? size_file = size(newfile_unsigned) ;is this one used samplerate = samplerate concatention = 'on' ;-------------------------------------------------------------------- If (keyword_set(compressed)) Then compression = 'on' Else compression = 'off' ; this so that only a group of packets is selected and stored If(keyword_set(wrapper)) Then place = 3 Else place = 1 ;0/3 for SSL 1/4 for LASP place = 0; -- permanently set to not have message header in telemetry data ;Autodetect if message header is in file if ishft(newfile_unsigned[0],-11) eq 1 then place=0 else place=1 ;place = 1; If(keyword_set(strip_pad)) Then offset3 = -1 Else offset3 = 0 offset1 = 7 offset2 = -1 ;Difference between length reported in length2() and amount of non-header data in a packet ;used in checking if decompression decompresses the correct amount of compressed data len_offset=9 If (keyword_set(packet)) EQ 0 Then packet=['HSK','EUV','AVG','SPEC','HSBM','WPK'] ; this is so that the grouping can be change to anything ;example for only get one group ;packet=['EUV'] tmp = where(packet EQ 'HSK',nn_act_ATR) tmp = where(packet EQ 'EUV',nn_act_EUV) tmp = where(packet EQ 'HSK',nn_act_ADR) tmp = where(packet EQ 'HSK',nn_act_HSK) tmp = where(packet EQ 'AVG',nn_act_SWP1) tmp = where(packet EQ 'AVG',nn_act_SWP2) tmp = where(packet EQ 'AVG',nn_act_ACT) tmp = where(packet EQ 'AVG',nn_act_PAS) tmp = where(packet EQ 'SPEC',nn_act_ACT_LF) tmp = where(packet EQ 'SPEC',nn_act_ACT_MF) tmp = where(packet EQ 'SPEC',nn_act_ACT_HF) tmp = where(packet EQ 'SPEC',nn_act_PAS_LF) tmp = where(packet EQ 'SPEC',nn_act_PAS_MF) tmp = where(packet EQ 'SPEC',nn_act_PAS_HF) tmp = where(packet EQ 'HSBM',nn_act_HSBM_LF) tmp = where(packet EQ 'HSBM',nn_act_HSBM_MF) tmp = where(packet EQ 'HSBM',nn_act_HSBM_HF) tmp = where(packet EQ 'WPK',nn_act_w1) tmp = where(packet EQ 'WPK',nn_act_w2) tmp = where(packet EQ 'WPK',nn_act_w3) tmp = where(packet EQ 'WPK',nn_act_w4) tmp = where(packet EQ 'WPK',nn_act_w5) tmp = where(packet EQ 'HSBM',nn_act_htime) ;-------------------------------------------------------------------- t2=systime(1,/seconds) Print,' ## Read the binary file took ',t2-t1,' seconds ##' SC_CLK1_gst = !values.f_nan SC_CLK2_gst = !values.f_nan APID2 = !values.f_nan length2 = !values.f_nan SC_CLK3_gst = !values.f_nan SC_CLK4_gst = !values.f_nan if newfile_unsigned(0) eq 60304 then begin t1=systime(1,/seconds) ;*******this is where laila is changing things DECEMBER 2011...... nn_size = n_elements(newfile_unsigned) tmp1 = newfile_unsigned[0:nn_size-1-18] EQ 60304 ;find where 'eb90' can be found in the data set tmp2 = newfile_unsigned[9:nn_size-1-9] EQ 260 ;find where '0104' can be found 9 words shifted tmp3 = newfile_unsigned[10:nn_size-1-8] EQ 256 ;find where '0100' can be found 10 words shifted tmp4 = newfile_unsigned[15:nn_size-1-3] EQ 43049 ;find where 'a829' can be found 15 words shifted tmp5 = newfile_unsigned[16:nn_size-1-2] EQ 195 ;find where '00c3' can be found 16 words shifted qq = where(tmp1*tmp2*tmp3*tmp4*tmp5 ,nq) ; where is this true qq =qq+19 ; this is where the packet starts and it is from here that we want to keep the packege APID2 = newfile_unsigned(qq) mod 256 ; this will give us values between ~81- ~97 SC_CLK1_gst = double(newfile_unsigned[qq-13]*16.^4)+double(newfile_unsigned[qq-12]) ;ground support time -> gsp SC_CLK2_gst = double(newfile_unsigned[qq-11] ) SC_CLK3_gst = double(newfile_unsigned[qq+3]*16.^4) +double(newfile_unsigned[qq+4]) ;check the other old clock is the same as this place = 0 assumed SC_CLK4_gst = double(newfile_unsigned[qq+5] ) length2 = newfile_unsigned[qq+2]+2 ;packet length tmp = 0*newfile_signed for ii=0,nq-1 do tmp[ qq[ii] : (qq[ii]+length2[ii]/2+2)]=1 qq1 = where(tmp EQ 1,nq1) newfile_unsigned = reform(newfile_unsigned[qq1]) newfile_signed = reform(newfile_signed[qq1]) ;only used for apid 81 ;byte file tmp = 0*newfile_byte ;twice the size for ii=0,nq-1 do tmp[ 2* qq[ii] : 2* (qq[ii]+length2[ii]/2+2) +1 ]=1 qq1 = where(tmp EQ 1,nq1) ; newfile_byte = reform(newfile_byte(qq1)) ;only used in APID 82,85,86,88 t2=systime(1,/seconds) Print,' ## Remove extra information took ',t2-t1,' seconds ##' endif t1=systime(1,/seconds) ;Setting up dummy variables ;counter = 0d ;i = 0L ;length = fltarr(1) ;message_type = fltarr(1) ;counter_all1 = fltarr(1) ;Getting # headers and lengths for allocation ;change this to save the counter, since that is the basic information ;while counter LT n_elements(newfile_unsigned) do begin ; if counter EQ 0 then length = [newfile_unsigned(counter+place+2)] else length = [length,newfile_unsigned(counter+place+2)] ; counter_all1 = [counter_all1,counter] ; counter = double(counter + floor(length(i)+1)/2 + 3) + place ; i = i + 1 ; endwhile ;;print,n_elements(length),n_elements(newfile_unsigned),counter,total(length),length(n_elements(length)-1) ;if counter GE n_elements(newfile_unsigned) then length=length(0:n_elements(length)-2) ;;print,n_elements(length),n_elements(newfile_unsigned),counter,total(length),length(n_elements(length)-1) ;;stanna counter=0d counter_all1=counter while counter LT n_elements(newfile_unsigned) do begin ;if newfile_unsigned[counter+1] EQ 49152+2 then $ ;packet counter 1 ;if newfile_unsigned[counter] EQ 2140 then $ ;apid 0x5c ;if newfile_unsigned[counter] EQ 2130 then $ ;apid 0x52 ;if newfile_unsigned[counter] EQ 2132 then $ ;apid 0x54 ;if newfile_unsigned[counter] EQ 2141 then $ ;apid 0x5d ;if newfile_unsigned[counter] EQ 2134 then $ ;apid 0x56 ;if newfile_unsigned[counter] EQ 2131 then $ ;apid 0x53 ;print,n_elements(counter_all1)-1,counter,newfile_unsigned[counter+place+2],' $$ ',newfile_unsigned[counter],' ',newfile_unsigned[counter+1], $ ;' ',newfile_unsigned[counter+2],' ',newfile_unsigned[counter+3],' ',newfile_unsigned[counter+4],' ',newfile_unsigned[counter+5],format='(2I,I,A4,z,A,z04,A,z04,A,z04,A,z04,A,z04)' str1='(A4,I,A4,'+strcompress(floor(newfile_unsigned[counter+2]+1)/2 + 3,/remove_all)+'z)' ;if newfile_unsigned[counter] EQ 2135 then $ ;apid 0x57 ;if newfile_unsigned[counter] EQ 2130 then $ ;apid 0x51 ;if newfile_unsigned[counter] EQ 2132 then $ ;apid 0x54 ;if newfile_unsigned[counter] EQ 2131 then $ ;apid 0x53 ;print,'$-> ',n_elements(counter_all1)-1,' ## ',newfile_unsigned[counter:double(counter + floor(newfile_unsigned[counter+place+2]+1)/2 + 3) + place], format=str1 ;if counter GE 62616 then stanna ;if counter GE 33296+10 then print,newfile_unsigned[ 8152:33420],format='(25269z)' ;if counter GT 33296+10 then stanna ;print, newfile_unsigned[counter] ,' # ', newfile_unsigned[counter+1] ;if newfile_unsigned[counter] EQ 2141 and newfile_unsigned[counter+1] GT 49152+2 then stanna counter=double(counter + floor(newfile_unsigned[counter+place+2]+1)/2 + 3) + place ;if n_elements(counter_all1) GT 4580 then begin ;PAS_S_LF Sequence Count Skipped. seqIndex = 1 SC(seqIndx-1) = 0.00000 SC(seqIndx) = 2.00000 ;if n_elements(counter_all1) GT 2780 then begin ;if n_elements(counter_all1) GT 850 then begin ;aa1=4460 ;aa2=4580 ;stanna ;endif counter_all1 = [counter_all1,counter] endwhile if counter_all1[n_elements(counter_all1)-1] GE n_elements(newfile_unsigned) then counter_all1=counter_all1[0:n_elements(counter_all1)-2] ; make sure that we have only identified full packets ;if total(length-newfile_unsigned(counter_all1+place+2)) NE 0 then stanna length=newfile_unsigned[counter_all1+place+2] ;stanna ;Preallocating sizelength = size(length) data_fft = fltarr(sizelength(1),max(length)-6) ;message_header = strarr(sizelength(1),16) ;CCSDS_primary = strarr(sizelength(1)) ;CCSDS_secondary = strarr(sizelength(1),16*3) DFB_header = strarr(sizelength(1),16) vers = fltarr(sizelength(1)) type = fltarr(sizelength(1)) SHF = fltarr(sizelength(1)) APID = fltarr(sizelength(1)) GF = fltarr(sizelength(1)) SC = fltarr(sizelength(1)) length2 = fltarr(sizelength(1)) data = fltarr(1) y = fltarr(sizelength(1),30) SC_CLK1 = dblarr(sizelength(1)) SC_CLK2 = fltarr(sizelength(1)) course_clk = fltarr(sizelength(1)) ORB_MD = fltarr(sizelength(1)) ;E12_HF_GB = fltarr(sizelength(1)) re-define below MC_LEN = fltarr(sizelength(1)) SMP_AVG = fltarr(sizelength(1)) wave_config = fltarr(sizelength(1)) EUV_config = fltarr(sizelength(1)) ADR_config = fltarr(sizelength(1)) HSK_config = fltarr(sizelength(1)) ATR_config = fltarr(sizelength(1)) xfer_time = !values.f_nan cap_time = !values.f_nan htime_type = !values.f_nan ;Resetting dummy variables keep these, used to check that data was put into the arrays p1 = 0L p2 = 0L p3 = 0L p4 = 0L p5 = 0L p6 = 0L p7 = 0L p8 = 0L p9 = 0L p10 = 0L p11 = 0L p12 = 0L p13 = 0L p14 = 0L p15 = 0L p16 = 0L p17 = 0L p18 = 0L p19 = 0L p20 = 0L p21 = 0L p22 = 0L p23 = 0L i = 0L iii = 0L ;counter = double(0) ;CLK1_dummy = 1d ;CLK2_dummy = 1d ;These are for HSBM concatenation ;hsbm_lf_1pkt = 0 ;[] ;hsbm_lf = fltarr(1024) ; [] ;hsbm_lf_partpkt = 0. ;hsbm_mf_1pkt = 0 ;[] ;hsbm_mf = fltarr(4096) ; [] ;hsbm_mf_partpkt = 0. ;hsbm_hf_1pkt = 0 ;[] ;hsbm_hf = fltarr(4096) ; [] ;hsbm_hf_partpkt = 0. t2=systime(1,/seconds) Print,' ## First while-loop, it took ',t2-t1,' seconds ##' t1=systime(1,/seconds) ;this is to make quick conversions mvn_lpw_r_mask,mask16,mask8,bin_c,index_arr,flip_8 counter=0d ;Putting data into an array of packets and headers into an arrays of headers ;while counter LT n_elements(newfile_unsigned) do begin for ni=0L, n_elements(length)-1 do begin ; message_header(i,*) = string(newfile_unsigned(counter),format = '(B016)') ; dummy = string(newfile_unsigned(counter+place),format = '(B016)') + string(newfile_unsigned(counter+place+1),format = '(B016)') + string(newfile_unsigned(counter+place+2), format = '(B016)') ; CCSDS_primary(i) = dummy ; reads,dummy, vers_dummy, type_dummy, SHF_dummy, APID_dummy, GF_dummy, SC_dummy, length_dummy, format='(B03, B01, B01, B011, B02, B014, B016)' ; reads,dummy, vers_dummy, type_dummy, SHF_dummy, APID_dummy, GF_dummy, SC_dummy, length_dummy2, format='(B03, B01, B01, B011, B02, B014, B016)' ; vers(i) = vers_dummy ; type(i) = type_dummy ; SHF(i) = SHF_dummy ; APID(i) = APID_dummy ; GF(i) = GF_dummy ; SC(i) = SC_dummy ; length2(i) = length_dummy + 2 tmp = [[mask16(newfile_unsigned(counter+place+0),*)],[mask16(newfile_unsigned(counter+place+1),*)]] vers(i) = total(tmp[0:2] *bin_c[2-index_arr[0:2]] ) type(i) = tmp[3] SHF(i) = tmp[4] APID(i) = total(tmp[5:15] *bin_c[10-index_arr[0:10]] ) GF(i) = tmp[16]*2+tmp[17] SC(i) = total(tmp[18:31] *bin_c[13-index_arr[0:13]] ) tmp = [mask16[newfile_unsigned[counter+place+2],*]] length_dummy = total(tmp[0:15] *bin_c[15-index_arr[0:15]] ) length2(i) = length_dummy + 2 ; if vers_dummy NE vers(i) then stanna ; if type_dummy NE type(i) then stanna ; if SHF_dummy NE SHF(i) then stanna ; if APID_dummy NE APID(i) then stanna ; if GF_dummy NE GF(i) then stanna ; if SC_dummy NE SC(i) then stanna ; if length_dummy NE length_dummy2 then stanna ; dummy2 = string(newfile_unsigned(counter+place+3),format = '(B016)') + string(newfile_unsigned(counter+place+4), format = '(B016)') + string(newfile_unsigned(counter+place+5), format = '(B016)') ; CCSDS_secondary(i) = dummy2 ; reads,dummy2,CLK1_dummy,CLK2_dummy,format = '(B032,B016)' ; SC_CLK1(i) = double(CLK1_dummy) ; SC_CLK2(i) = double(CLK2_dummy) tmp = [[mask16[newfile_unsigned[counter+place+3],*]],[mask16[newfile_unsigned[counter+place+4],*]]] SC_CLK1(i) = total(double(tmp[0:31] *bin_c[31-index_arr[0:31]] )) tmp = [mask16[newfile_unsigned[counter+place+5],*]] SC_CLK2(i) = total(tmp[0:15] *bin_c[15-index_arr[0:15]] ) ;if CLK1_dummy NE SC_CLK1(i) then stanna ;if CLK2_dummy NE SC_CLK2(i) then stanna ;reads,dummy2,nothing,Course_dummy,CLK2_dummy2, format = '(B016, B016, B016)' ;course_clk(i) = double(course_dummy) ; DFB_header(i,*) = newfile_unsigned(counter+place+6) ; counter_specific(i) = long(counter) ; the number used in the routine ; counter_all(i) = counter ; the modified number counter = double(counter + floor(length[i]+1)/2 + 3) + place i = i + 1L ;endwhile endfor ;ni IF total(length2 GT 2048) GT 0 then print,'Warning: the length of ',total(length2 GT 2048),' packet are too long' IF total(length2 GT 2048) GT 0 then stanna ;chrash the program... t2=systime(1,/seconds) Print,' ## Second loop find APID took ',t2-t1,' seconds ##' t1=systime(1,/seconds) ;------------------------------------------------- ;number of pakets and which packets for each APID ;these are all minimum 1 ; use only p1 to p24 to check i there is any packagets in the file pkt_ATR = where(APID EQ 81,nn_ATR) pkt_EUV = where(APID EQ 82,nn_EUV) pkt_ADR = where(APID EQ 83,nn_ADR) pkt_HSK = where(APID EQ 84,nn_HSK) pkt_SWP1 = where(APID EQ 85,nn_SWP1) pkt_SWP2 = where(APID EQ 86,nn_SWP2) pkt_ACT = where(APID EQ 87,nn_ACT) pkt_PAS = where(APID EQ 88,nn_PAS) pkt_ACT_LF = where(APID EQ 89,nn_ACT_LF) pkt_ACT_MF = where(APID EQ 90,nn_ACT_MF) pkt_ACT_HF = where(APID EQ 91,nn_ACT_HF) pkt_PAS_LF = where(APID EQ 92,nn_PAS_LF) pkt_PAS_MF = where(APID EQ 93,nn_PAS_MF) pkt_PAS_HF = where(APID EQ 94,nn_PAS_HF) pkt_HSBM_LF = where(APID EQ 95,nn_HSBM_LF) pkt_HSBM_MF = where(APID EQ 96,nn_HSBM_MF) pkt_HSBM_HF = where(APID EQ 97,nn_HSBM_HF) pkt_w1 = where(APID EQ 98,nn_w1) pkt_w2 = where(APID EQ 99,nn_w2) pkt_w3 = where(APID EQ 100,nn_w3) pkt_w4 = where(APID EQ 101,nn_w4) pkt_w5 = where(APID EQ 102,nn_w5) pkt_htime = where(APID EQ 103,nn_htime) ;------------------------------------------------- E12_HF_GB = fltarr(nn_PAS_HF >1) ; this is just to make sure this is >1 not nessicarly that there are any package HSBM_LF_i = -1. ;pkt_HSBM_LF will this be HSBM_MF_i = -1. ;pkt_HSBM_MF will this be HSBM_HF_i = -1. ;pkt_HSBM_FF will this be length = length + 2 ;Spec preallocations ; I have removed this from output, will it still work?? ;if nn_ACT_LF GT 1 then ACT_S_LF_length = floor(length(where(APID EQ 89))+1)/2+3 else ACT_S_LF_length = 1 ;if nn_ACT_MF GT 1 then ACT_S_MF_length = floor(length(where(APID EQ 90))+1)/2+3 else ACT_S_MF_length = 1 ;if nn_ACT_HF GT 1 then ACT_S_HF_length = floor(length(where(APID EQ 91))+1)/2+3 else ACT_S_HF_length = 1 ;if nn_PAS_LF GT 1 then PAS_S_LF_length = floor(length(where(APID EQ 92))+1)/2+3 else PAS_S_LF_length = 1 ;if nn_PAS_MF GT 1 then PAS_S_MF_length = floor(length(where(APID EQ 93))+1)/2+3 else PAS_S_MF_length = 1 ;if nn_PAS_HF GT 1 then PAS_S_HF_length = floor(length(where(APID EQ 94))+1)/2+3 else PAS_S_HF_length = 1 ;if n_elements(ACT_S_LF0) GT 1 then ACT_LF_array = fltarr(n_elements(ACT_S_LF_length),ACT_S_LF_length(0)-9) else ACT_LF_array = fltarr(1) ;if n_elements(ACT_S_MF0) GT 1 then ACT_MF_array = fltarr(n_elements(ACT_S_MF_length),ACT_S_MF_length(0)-9) else ACT_MF_array = fltarr(1) ;if n_elements(ACT_S_HF0) GT 1 then ACT_HF_array = fltarr(n_elements(ACT_S_HF_length),ACT_S_HF_length(0)-9) else ACT_HF_array = fltarr(1) ;if n_elements(PAS_S_LF0) GT 1 then PAS_LF_array = fltarr(n_elements(PAS_S_LF_length),PAS_S_LF_length(0)-9) else PAS_LF_array = fltarr(1) ;if n_elements(PAS_S_MF0) GT 1 then PAS_MF_array = fltarr(n_elements(PAS_S_MF_length),PAS_S_MF_length(0)-9) else PAS_MF_array = fltarr(1) ;if n_elements(PAS_S_HF0) GT 1 then PAS_HF_array = fltarr(n_elements(PAS_S_HF_length),PAS_S_HF_length(0)-9) else PAS_HF_array = fltarr(1) ;counter_all = fltarr(i) ; the modified counter ;counter_specific = lonarr(i) ; the counter used in the packed ;counter = 0d ;i = 0L ;while counter LT n_elements(newfile_signed) do begin ;can this whiel loop be removed??? to the above loop????? why did it not work last time?? ; counter_specific(i) = long(counter) ; the number used in the routine ; counter = double(counter + floor(length(i)+1)/2 + 3) -1 + place ; counter_all(i) = long(counter) ; the modified number ; i = i + 1 ;endwhile ;print,'&&&&&&&&&&&& ',total(counter_specific-counter_all1) counter_specific=counter_all1 ; to replace this variavle t2=systime(1,/seconds) Print,' ## Third while-loop, it took ',t2-t1,' seconds ##' ;############ Now for each type of packet will data be extracted into the created above structures ################ ;ATR Packet total_ATR_length = 0 if nn_ATR GT 0 and nn_act_ATR GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ;ATR preallocations SWP = fltarr(nn_ATR,128) ATR_W_BIAS1 = fltarr(nn_ATR) ATR_W_GUARD1 = fltarr(nn_ATR) ATR_W_STUB1 = fltarr(nn_ATR) Reserved1 = fltarr(nn_ATR) ATR_LP_BIAS1 = fltarr(nn_ATR) ATR_LP_GUARD1 = fltarr(nn_ATR) ATR_LP_STUB1 = fltarr(nn_ATR) Reserved2 = fltarr(nn_ATR) ATR_W_BIAS2 = fltarr(nn_ATR) ATR_W_GUARD2 = fltarr(nn_ATR) ATR_W_STUB2 = fltarr(nn_ATR) Reserved3 = fltarr(nn_ATR) ATR_LP_BIAS2 = fltarr(nn_ATR) ATR_LP_GUARD2 = fltarr(nn_ATR) ATR_LP_STUB2 = fltarr(nn_ATR) Reserved4 = fltarr(nn_ATR) FOR ni=0L,nn_ATR-1 do begin i = pkt_ATR[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_signed[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,ATRconfig_dummy,format = '(B04,B012)' ORB_MD(i) = orbmode_dummy ATR_config(i) = ATRconfig_dummy SWP(p6,*) = newfile_signed[counter+place+offset1:counter+place+128+offset1+offset2] ATR_W_BIAS1(p6) = newfile_signed[counter+place+offset1+offset2+128+1] ATR_W_GUARD1(p6) = newfile_signed[counter+place+offset1+offset2+128+2] ATR_W_STUB1(p6) = newfile_signed[counter+place+offset1+offset2+128+3] Reserved1(p6) = newfile_signed[counter+place+offset1+offset2+128+4] ATR_LP_BIAS1(p6) = newfile_signed[counter+place+offset1+offset2+128+5] ATR_LP_GUARD1(p6) = newfile_signed[counter+place+offset1+offset2+128+6] ATR_LP_STUB1(p6) = newfile_signed[counter+place+offset1+offset2+128+7] Reserved2(p6) = newfile_signed[counter+place+offset1+offset2+128+8] ATR_W_BIAS2(p6) = newfile_signed[counter+place+offset1+offset2+128+9] ATR_W_GUARD2(p6) = newfile_signed[counter+place+offset1+offset2+128+10] ATR_W_STUB2(p6) = newfile_signed[counter+place+offset1+offset2+128+11] Reserved3(p6) = newfile_signed[counter+place+offset1+offset2+128+12] ATR_LP_BIAS2(p6) = newfile_signed[counter+place+offset1+offset2+128+13] ATR_LP_GUARD2(p6) = newfile_signed[counter+place+offset1+offset2+128+14] ATR_LP_STUB2(p6) = newfile_signed[counter+place+offset1+offset2+128+15] Reserved4(p6) = newfile_signed[counter+place+offset1+offset2+128+16] p6 = p6 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### ATR ',ni,i,' time ', t2-t1 ,' seconds ' ATR_SC = SC[pkt_ATR] for seqIndx = 1, nn_ATR-1 do $ if ATR_SC[seqIndx] NE ATR_SC[seqIndx-1]+1 then print, 'ATR Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', ATR_SC[seqIndx-1], ' SC(seqIndx) =', ATR_SC[seqIndx] if (ATR_SC[nn_ATR-1]-ATR_SC[0]+1) NE p6 then print, 'ATR Sequence Count Failed. Should be', p6, ' Reporting ',(ATR_SC[nn_ATR-1]-ATR_SC[0]+1) total_ATR_length = total(length[pkt_ATR]+7) endif else begin; create defauls values -1 if not packets where found SWP = -1 & ATR_W_BIAS1 = -1 & ATR_W_GUARD1 = -1 & ATR_W_STUB1 = -1 & $ Reserved1 = -1 & ATR_LP_BIAS1 = -1 & ATR_LP_GUARD1 = -1 & ATR_LP_STUB1 = -1 & $ Reserved2 = -1 & ATR_W_BIAS2 = -1 & ATR_W_GUARD2 = -1 & ATR_W_STUB2 = -1 & $ Reserved3 = -1 & ATR_LP_BIAS2 = -1 & ATR_LP_GUARD2 = -1 & ATR_LP_STUB2 = -1 & $ Reserved4 = -1 & ENDELSE ;EUV Packet total_euv_length = 0 if nn_EUV GT 0 and nn_act_EUV GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ;EUV Preallocations THERM = fltarr(nn_EUV,16) DIODE_A = fltarr(nn_EUV,16) DIODE_B = fltarr(nn_EUV,16) DIODE_C = fltarr(nn_EUV,16) DIODE_D = fltarr(nn_EUV,16) FOR ni=0L,nn_EUV-1 do begin i = pkt_EUV[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter EUV_config[i] = newfile_unsigned[counter+place+offset1-1] if compression EQ 'on' then begin ptr=1L*(counter+place+offset1) ; which 16 bit package to start with ptr_end=ptr+(length2[i]-len_offset) ; this has to be checked!!! nn_e=0 therm[ni,*] = mvn_lpw_r_block16(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,16,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,counter,counter_all1[i],' pointer ',ptr,nn_e,' Packet EUV temp' diode_a[ni,*] = mvn_lpw_r_block16(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,16,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,counter,counter_all1[i],' pointer ',ptr,nn_e,' Packet EUV DIODE A' diode_b[ni,*] = mvn_lpw_r_block16(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,16,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,counter,counter_all1[i],' pointer ',ptr,nn_e,' Packet EUV DIODE B' diode_c[ni,*] = mvn_lpw_r_block16(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,16,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,counter,counter_all1[i],' pointer ',ptr,nn_e,' Packet EUV DIODE C' diode_d[ni,*] = mvn_lpw_r_block16(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,16,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,counter,counter_all1[i],' pointer ',ptr,nn_e,' Packet EUV DIODE D' ;Check the amount of data left over - ptr is moved (by mvn_lpw_r_multi_decompress) up to the first bit after the compressed data, so 0 is ok. ; if ptr_end-ptr lt 0 or ptr_end-ptr gt 32 then message,/info,string(ptr_end-ptr,format='(%"Did not decompress the right amount of data, %d bytes left over")') end else begin for z = 0,31,2 do begin dummy = string(newfile_signed[counter+place+offset1+z],format='(B016)')+string(newfile_signed[counter+place+offset1+z+1],format = '(B016)') reads, dummy, THERM_dummy, format = '(B032)' THERM[ni,z/2] = THERM_dummy dummy = string(newfile_signed[counter+place+offset1+z+32],format = '(B016)')+string(newfile_signed[counter+place+offset1+z+1+32],format = '(B016)') reads, dummy, DIODEA_dummy, format = '(B032)' DIODE_A[ni,z/2] = DIODEA_dummy dummy = string(newfile_signed[counter+place+offset1+z+2*32],format = '(B016)')+string(newfile_signed[counter+place+offset1+z+1+2*32], format = '(B016)') reads, dummy, DIODEB_dummy, format = '(B032)' DIODE_B[ni,z/2] = DIODEB_dummy dummy = string(newfile_signed[counter+place+offset1+z+3*32],format = '(B016)')+string(newfile_signed[counter+place+offset1+z+1+3*32], format = '(B016)') reads, dummy, DIODEC_dummy, format = '(B032)' DIODE_C[ni,z/2] = DIODEC_dummy dummy = string(newfile_signed[counter+place+offset1+z+4*32],format = '(B016)')+string(newfile_signed[counter+place+offset1+z+1+4*32], format = '(B016)') reads, dummy, DIODED_dummy, format = '(B032)' DIODE_D[ni,z/2] = DIODED_dummy endfor end p7 = p7 + 1 ; keeps track of how many EUV packets there are ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### EUV ',ni,i,' time ', t2-t1,' seconds' EUV_SC = SC[pkt_EUV] for seqIndx = 1, nn_EUV-1 do $ if EUV_SC[seqIndx] NE EUV_SC[seqIndx-1]+1 then print, 'EUV Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', EUV_SC[seqIndx-1], ' SC(seqIndx) =', EUV_SC[seqIndx] if (EUV_SC[nn_EUV-1]-EUV_SC[0]+1) NE p7 then print, 'EUV Sequence Count Failed. Should be', p7, ' Reporting ',(EUV_SC[nn_EUV-1]-EUV_SC[0]+1) total_euv_length = total(length[pkt_EUV]+7) endif ELSE BEGIN ; if no packet was found THERM = -1 & DIODE_A = -1 & DIODE_B = -1 & DIODE_C = -1 & DIODE_D = -1 & ENDELSE ;ADR Packet total_adr_length = 0 if nn_ADR GT 0 and nn_act_ADR GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ;ADR preallocations ADR_DYN_OFFSET1 = fltarr(nn_ADR) ADR_LP_BIAS1 = fltarr(nn_ADR,127) ADR_DYN_OFFSET2 = fltarr(nn_ADR) ADR_LP_BIAS2 = fltarr(nn_ADR,127) ADR_W_BIAS1 = fltarr(nn_ADR) ADR_W_GUARD1 = fltarr(nn_ADR) ADR_W_STUB1 = fltarr(nn_ADR) ADR_W_V1 = fltarr(nn_ADR) ADR_LP_GUARD1 = fltarr(nn_ADR) ADR_LP_STUB1 = fltarr(nn_ADR) ADR_W_BIAS2 = fltarr(nn_ADR) ADR_W_GUARD2 = fltarr(nn_ADR) ADR_W_STUB2 = fltarr(nn_ADR) ADR_W_V2 = fltarr(nn_ADR) ADR_LP_GUARD2 = fltarr(nn_ADR) ADR_LP_STUB2 = fltarr(nn_ADR) FOR ni=0L,nn_ADR-1 do begin i = pkt_ADR[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_signed[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,ADRconfig_dummy,format = '(B04,B012)' ORB_MD(i) = orbmode_dummy ADR_config(i) = ADRconfig_dummy ADR_DYN_OFFSET1(p8) = newfile_signed[counter+place+offset1] ADR_LP_BIAS1(p8,*) = newfile_signed[counter+place+offset1+1:counter+place+offset1+1+127+offset2] ADR_DYN_OFFSET2(p8) = newfile_signed[counter+place+offset1+2+127+offset2] ADR_LP_BIAS2(p8,*) = newfile_signed[counter+place+offset1+3+127+offset2:counter+place+offset1+3+2*(127+offset2)] ADR_W_BIAS1(p8) = newfile_signed[counter+place+offset1+4+2*(127+offset2)] ADR_W_GUARD1(p8) = newfile_signed[counter+place+offset1+5+2*(127+offset2)] ADR_W_STUB1(p8) = newfile_signed[counter+place+offset1+6+2*(127+offset2)] ADR_W_V1(p8) = newfile_signed[counter+place+offset1+7+2*(127+offset2)] ADR_LP_GUARD1(p8) = newfile_signed[counter+place+offset1+8+2*(127+offset2)] ADR_LP_STUB1(p8) = newfile_signed[counter+place+offset1+9+2*(127+offset2)] ADR_W_BIAS2(p8) = newfile_signed[counter+place+offset1+10+2*(127+offset2)] ADR_W_GUARD2(p8) = newfile_signed[counter+place+offset1+11+2*(127+offset2)] ADR_W_STUB2(p8) = newfile_signed[counter+place+offset1+12+2*(127+offset2)] ADR_W_V2(p8) = newfile_signed[counter+place+offset1+13+2*(127+offset2)] ADR_LP_GUARD2(p8) = newfile_signed[counter+place+offset1+14+2*(127+offset2)] ADR_LP_STUB2(p8) = newfile_signed[counter+place+offset1+15+2*(127+offset2)] p8 = p8 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### ADR ',ni,i,' time ', t2-t1,' seconds' ADR_SC = SC[pkt_ADR] for seqIndx = 1, nn_ADR-1 do $ if ADR_SC[seqIndx] NE ADR_SC[seqIndx-1]+1 then print, 'ADR Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', ADR_SC[seqIndx-1], ' SC(seqIndx) =', ADR_SC[seqIndx] if (ADR_SC[nn_ADR-1]-ADR_SC[0]+1) NE p8 then print, 'ADR Sequence Count Failed. Should be', p8, ' Reporting ',(ADR_SC[nn_ADR-1]-ADR_SC[0]+1) total_adr_length = total(length[pkt_ADR]+7) endif ELSE BEGIN ;created the variables with -1 as values since no data exist for this package ADR_DYN_OFFSET1 = -1 & ADR_LP_BIAS1 = -1 & ADR_DYN_OFFSET2 = -1 & ADR_LP_BIAS2 = -1 & $ ADR_W_BIAS1 = -1 & ADR_W_GUARD1 = -1 & ADR_W_STUB1 = -1 & ADR_W_V1 = -1 & $ ADR_LP_GUARD1 = -1 & ADR_LP_STUB1 = -1 & ADR_W_BIAS2 = -1 & ADR_W_GUARD2 = -1 & $ ADR_W_STUB2 = -1 & ADR_W_V2 = -1 & ADR_LP_GUARD2 = -1 & ADR_LP_STUB2 = -1 & ENDELSE ;HSK Packet total_hsk_length = 0 if nn_HSK GT 0 and nn_act_HSK GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ;HSK preallocations Preamp_Temp1 = fltarr(nn_HSK) Preamp_Temp2 = fltarr(nn_HSK) Beb_Temp = fltarr(nn_HSK) plus12va = fltarr(nn_HSK) minus12va = fltarr(nn_HSK) plus5va = fltarr(nn_HSK) minus5va = fltarr(nn_HSK) plus90va = fltarr(nn_HSK) minus90va = fltarr(nn_HSK) CMD_ACCEPT = fltarr(nn_HSK) CMD_REJECT = fltarr(nn_HSK) MEM_SEU_COUNTER = fltarr(nn_HSK) INT_STAT = fltarr(nn_HSK) CHKSUM = fltarr(nn_HSK) EXT_STAT = fltarr(nn_HSK) DPLY1_CNT = fltarr(nn_HSK) DPLY2_CNT = fltarr(nn_HSK) FOR ni=0L,nn_HSK-1 do begin i = pkt_HSK[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter HSK_config(i) = newfile_unsigned[counter+place+offset1-1] Preamp_Temp1(p9) = newfile_signed[counter+place+offset1] Preamp_Temp2(p9) = newfile_signed[counter+place+offset1+1] Beb_Temp(p9) = newfile_signed[counter+place+offset1+2] plus12va(p9) = newfile_signed[counter+place+offset1+3] minus12va(p9) = newfile_signed[counter+place+offset1+4] plus5va(p9) = newfile_signed[counter+place+offset1+5] minus5va(p9) = newfile_signed[counter+place+offset1+6] plus90va(p9) = newfile_signed[counter+place+offset1+7] minus90va(p9) = newfile_signed[counter+place+offset1+8] CMD_ACCEPT(p9) = newfile_signed[counter+place+offset1+9] CMD_REJECT(p9) = newfile_signed[counter+place+offset1+10] MEM_SEU_COUNTER(p9) = newfile_signed[counter+place+offset1+11] INT_STAT(p9) = newfile_signed[counter+place+offset1+12] CHKSUM(p9) = newfile_signed[counter+place+offset1+13] EXT_STAT(p9) = newfile_signed[counter+place+offset1+14] DPLY1_CNT(p9) = newfile_signed[counter+place+offset1+15] DPLY2_CNT(p9) = newfile_signed[counter+place+offset1+16] p9 = p9 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### HSK ',ni,i,' time ', t2-t1,' seconds' HSK_SC = SC[pkt_HSK] for seqIndx = 1, nn_HSK-1 do $ if HSK_SC[seqIndx] NE HSK_SC[seqIndx-1]+1 then print, 'HSK Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', HSK_SC[seqIndx-1], ' SC(seqIndx) =', HSK_SC[seqIndx] if (HSK_SC[nn_HSK-1]-HSK_SC[0]+1) NE p9 then print, 'HSK Sequence Count Failed. Should be', p9, ' Reporting ',(HSK_SC(nn_HSK-1)-HSK_SC(0)+1) total_hsk_length = total(length[pkt_HSK]+7) endif ELSE BEGIN ; in case of no package Preamp_Temp1 = -1 & Preamp_Temp2 = -1 & Beb_Temp = -1 & plus12va = -1 & minus12va = -1 & $ plus5va = -1 & minus5va = -1 & plus90va = -1 & minus90va = -1 & CMD_ACCEPT = -1 & CMD_REJECT = -1 & $ MEM_SEU_COUNTER = -1 & INT_STAT = -1 & CHKSUM = -1 & EXT_STAT = -1 & $ DPLY1_CNT = -1 & DPLY2_CNT = -1 & ENDELSE ;SWP1_AVG Packet total_swp1_length = 0 if nn_SWP1 GT 0 and nn_act_SWP1 GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ;SWP1_AVG prealloctions SWP1_I1 = fltarr(nn_SWP1,128) SWP1_V2 = fltarr(nn_SWP1,128) I_ZERO1 = fltarr(nn_SWP1) SWP1_DYN_OFFSET1 = fltarr(nn_SWP1) FOR ni=0L,nn_SWP1-1 do begin i = pkt_SWP1[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,MClen_dummy,nothing2,SMPAVG_dummy,format = '(B04,B01,B03,B05,B03)' ORB_MD[i] = orbmode_dummy MC_LEN[i] = MClen_dummy SMP_AVG[i] = SMPAVG_dummy I_ZERO1[ni] = newfile_signed[counter+place+offset1] SWP1_DYN_OFFSET1(ni) = newfile_signed[counter+place+offset1+1] if compression EQ 'on' then begin ptr=1L*(counter+place+offset1+2) ; which 16 bit package to start with ptr_end=ptr+(length2[i]-len_offset-4) ; this has to be checked!!! nn_e=0 ; this is when the data is not eact a factor of 16 SWP1_I1[ni,*] = mvn_lpw_r_block16(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,128,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packat SWP1 I1' SWP1_V2[ni,*] = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,128,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packat SWP1 V2' endif else begin ;no compression for z = 0,128*2-1,2 do begin dummy = string(newfile_signed[counter+place+offset1+z+2],format = '(B016)')+string(newfile_signed[counter+place+offset1+z+3],format = '(B016)') reads, dummy, SWPI1_dummy, format = '(B032)' SWP1_I1[ni,z/2] = double(SWPI1_dummy) endfor SWP1_V2[ni,*] = newfile_signed[counter+place+offset1+128*2+2:counter+place+offset1+128*3+1] endelse p10 = p10 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### SWP1 ',ni,i,' time ', t2-t1 ,' seconds' SWP1_SC = SC[pkt_SWP1] for seqIndx = 1, nn_SWP1-1 do $ if SWP1_SC[seqIndx] NE SWP1_SC[seqIndx-1]+1 then print, 'SWP1 Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', SWP1_SC[seqIndx-1], ' SC(seqIndx) =', SWP1_SC[seqIndx] if (SWP1_SC[nn_SWP1-1]-SWP1_SC[0]+1) NE p10 then print, 'SWP1 Sequence Count Failed. Should be', p10, ' Reporting ',(SWP1_SC(nn_SWP1-1)-SWP1_SC(0)+1) total_swp1_length = total(length[pkt_SWP1]+7) endif ELSE BEGIN ; if no packet was found SWP1_I1 = -1 & SWP1_V2 = -1 & I_ZERO1 = -1 & SWP1_DYN_OFFSET1 = -1 & ENDELSE ;SWP2_AVG Packet total_swp2_length = 0 if nn_SWP2 GT 0 and nn_act_SWP2 GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ;SWP2_AVG prealloctions SWP2_I2 = fltarr(nn_SWP2,128) SWP2_V1 = fltarr(nn_SWP2,128) I_ZERO2 = fltarr(nn_SWP2) SWP2_DYN_OFFSET2 = fltarr(nn_SWP2) FOR ni=0L,nn_SWP2-1 do begin i = pkt_SWP2[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,MClen_dummy,nothing2,SMPAVG_dummy,format = '(B04,B01,B03,B05,B03)' ORB_MD[i] = orbmode_dummy MC_LEN[i] = MClen_dummy SMP_AVG[i] = SMPAVG_dummy I_ZERO2[ni] = newfile_signed[counter+place+offset1] SWP2_DYN_OFFSET2[ni] = newfile_signed[counter+place+offset1+1] if compression EQ 'on' then begin ptr=1L*(counter+place+offset1+2) ; which 16 bit package to start with ptr_end=ptr+(length2[i]-len_offset-4) ; this has to be checked!!! nn_e=0 ; this is when the data is not eact a factor of 16 swp2_I2[ni,*] = mvn_lpw_r_block16(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,128,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packat SWP2 I2' ;print,'##### SWP2 ',ni,i,edac_on,ptr,nn_e,total(swp2_I2[ni,*]),swp2_I2[ni,20],swp2_I2[ni,110] swp2_V1[ni,*] = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,128,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packat SWP2 V1' end else begin for z = 0,128*2-1,2 do begin dummy = string(newfile_signed[counter+place+offset1+z+2],format = '(B016)')+string(newfile_signed[counter+place+offset1+z+3],format = '(B016)') reads, dummy, SWP2I2_dummy, format = '(B032)' SWP2_I2[ni,z/2] = double(SWP2I2_dummy) endfor SWP2_V1[ni,*] = newfile_signed[counter+place+offset1+128*2+2:counter+place+offset1+128*3+1] endelse p11 = p11 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### SWP2 ',ni,i,' time ', t2-t1 ,' seconds' SWP2_SC = SC[pkt_SWP2] for seqIndx = 1, nn_SWP2-1 do $ if SWP2_SC[seqIndx] NE SWP2_SC[seqIndx-1]+1 then print, 'SWP2 Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', SWP2_SC[seqIndx-1], ' SC(seqIndx) =', SWP2_SC[seqIndx] if (SWP2_SC[nn_SWP2-1]-SWP2_SC[0]+1) NE p11 then print, 'SWP2 Sequence Count Failed. Should be', p11, ' Reporting ',(SWP2_SC[nn_SWP2-1]-SWP2_SC[0]+1) total_swp2_length = total(length[pkt_SWP2]+7) endif ELSE BEGIN ; in case no packages SWP2_I2 = -1 & SWP2_V1 = -1 & I_ZERO2 = -1 & SWP2_DYN_OFFSET2 = -1 & ENDELSE ;ACT_AVG Packet total_act_length = 0 if nn_ACT GT 0 and nn_act_ACT GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ;ACT preallocations ACT_V1 = fltarr(nn_ACT,64) ACT_V2 = fltarr(nn_ACT,64) ACT_E12_LF = fltarr(nn_ACT,64) FOR ni=0L,nn_ACT-1 do begin i = pkt_ACT[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,MClen_dummy,nothing2,format = '(B04,B01,B03,B08)' ORB_MD(i) = orbmode_dummy MC_LEN(i) = MClen_dummy if compression EQ 'on' then begin ptr = 1L*(counter+place+offset1) ; which 16 bit package to start with ptr_end = ptr+(length2[i]-len_offset) ; this has to be checked!!! nn_e = 0 ; this is when the data is not eact a factor of 16 act_v1[ni,*] = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,64,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packet ACT V1' act_v2[ni,*] = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,64,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packet ACT V2' act_e12_lf[ni,*]= mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,64,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packet ACT E12' if edac_on EQ 1 then stanna ; ;Check the amount of data left over - ptr is moved (by mvn_lpw_r_multi_decompress) up to the first bit after the compressed data, so 0 is ok. ; if ptr_end-ptr lt 0 or ptr_end-ptr gt 32 then message,/info,string(ptr_end-ptr,format='(%"Did not decompress the right amount of data, %d bytes left over")') end else begin ACT_V1[ni,*] = newfile_signed[counter+place+offset1 :counter+place+offset1+offset2+64] ACT_V2[ni,*] = newfile_signed[counter+place+offset1+offset2+64+1 :counter+place+offset1+2*(offset2+64)+1] ACT_E12_LF[ni,*] = newfile_signed[counter+place+offset1+2*(offset2+64)+2:counter+place+offset1+3*(offset2+64)+2] endelse p12 = p12 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### ACT ',ni,i,' time ', t2-t1,' seconds' ACT_SC = SC[pkt_ACT] ;nn=n_elements(ACT0) for seqIndx = 1, nn_ACT-1 do $ if ACT_SC[seqIndx] NE ACT_SC[seqIndx-1]+1 then print, 'ACT Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', ACT_SC[seqIndx-1], ' SC(seqIndx) =', ACT_SC[seqIndx] if (ACT_SC[nn_ACT-1]-ACT_SC[0]+1) NE p12 then print, 'ACT Sequence Count Failed. Should be', p12, ' Reporting ',(ACT_SC[nn_ACT-1]-ACT_SC[0]+1) total_act_length = total(length[pkt_ACT]+7) endif ELSE BEGIN ; in case no packages ACT_V1 = -1 & ACT_V2 = -1 & ACT_E12_LF = -1 & ENDELSE ;PAS_AVG Packet total_pas_length = 0 if nn_PAS GT 0 and nn_act_PAS GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ;PAS preallocations PAS_V1 = fltarr(nn_PAS,64) PAS_V2 = fltarr(nn_PAS,64) PAS_E12_LF = fltarr(nn_PAS,64) FOR ni=0L,nn_PAS-1 do begin i = pkt_PAS[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,MClen_dummy,nothing2,format = '(B04,B01,B03,B08)' ORB_MD[i] = orbmode_dummy MC_LEN[i] = MClen_dummy if i EQ 452 then begin print,i,' counter ',counter,' ORB MO ', orb_md(i),' MC len ',MC_LEN(i) print,'$$$$$$$$$$$$$$$$$$$$$$' aa=-8 for iii=-8,40 do begin bb=aa+8-1 dummy =string(newfile_unsigned[counter+place+offset1-1+aa:counter+place+offset1-1+bb],format = '(z)') print,dummy aa=bb+1 endfor endif if compression EQ 'on' then begin ptr=1L*(counter+place+offset1) ; which 16 bit package to start with ptr_end=ptr+(length2[i]-len_offset) ; this has to be checked!!! nn_e=0 ; this is when the data is not eact a factor of 16 pas_v1[ni,*] = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,64,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p13,i,ni,' pointer ',ptr,nn_e,' Packet: PAS V1' pas_v2[ni,*] = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,64,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p13,i,ni,' pointer ',ptr,nn_e,' Packet: PAS V2' if edac_on EQ 1 then stanna pas_e12_lf[ni,*] = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,64,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p13,i,ni,' pointer ',ptr,nn_e,' Packet PAS E12' ;Check the amount of data left over - ptr is moved (by mvn_lpw_r_multi_decompress) up to the first bit after the compressed data, so 0 is ok. ;if ptr_end-ptr lt 0 or ptr_end-ptr gt 32 then message,/info,string(ptr_end-ptr,format='(%"Did not decompress the right amount of data, %d bytes left over")') end else begin PAS_V1[ni,*] = newfile_signed[counter+place+offset1 :counter+place+offset1+offset2+64] PAS_V2[ni,*] = newfile_signed[counter+place+offset1+offset2+64+1 :counter+place+offset1+2*(offset2+64)+1] PAS_E12_LF[ni,*] = newfile_signed[counter+place+offset1+2*(offset2+64)+2:counter+place+offset1+3*(offset2+64)+2] end p13 = p13 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### PAS ',ni,i,' time ', t2-t1 ,' seconds' PAS_SC = SC[pkt_PAS] for seqIndx = 1, nn_PAS-1 do $ if PAS_SC[seqIndx] NE PAS_SC[seqIndx-1]+1 then print, 'PAS Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', PAS_SC[seqIndx-1], ' SC(seqIndx) =', PAS_SC[seqIndx] if (PAS_SC[nn_PAS-1]-PAS_SC[0]+1) NE p13 then print, 'PAS Sequence Count Failed. Should be', p13, ' Reporting ',(PAS_SC[nn_PAS-1]-PAS_SC[0]+1) total_pas_length = total(length[pkt_PAS]+7) endif ELSE BEGIN PAS_V1 = -1 & PAS_V2 = -1 & PAS_E12_LF = -1 & ENDELSE ; ACT_S_LF packet total_act_s_lf_length = 0 if nn_ACT_LF GT 0 and nn_act_ACT_LF GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ACT_S_LF = !values.f_nan ;variable length fltarr(nn_ACT_LF*116) ACT_LF_PKTCNT = fltarr(nn_ACT_LF) ACT_LF_PKTARR = fltarr(nn_ACT_LF) FOR ni=0L,nn_ACT_LF-1 do begin i = pkt_ACT_LF[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,SMPAVG_dummy,format = '(B04,B09,B03)' ORB_MD[i] = orbmode_dummy SMP_AVG[i] = SMPAVG_dummy ACT_LF_PKTCNT[ni] = newfile_unsigned[counter+place+offset1] n_packets = floor((((length[i]-1)/2)-4)/29) ACT_LF_pktarr[ni] = n_packets if ni EQ 0 then ACT_S_LF = [newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*29)-1]] else $ ;variable length!! ACT_S_LF = [ACT_S_LF, newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*29)-1]] if concatention EQ 'off' then ACT_LF_array[ni,*] = [newfile_unsigned[counter+place+offset1+1:counter+place+offset1+floor(length[i]+1)/2+2+offset2+1-8]] p14 = p14 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### ACT_LF ',ni,i,' time ', t2-t1 ,' seconds' ACT_LF_SC = SC[pkt_ACT_LF] for seqIndx = 1, nn_ACT_LF-1 do $ if ACT_LF_SC[seqIndx] NE ACT_LF_SC[seqIndx-1]+1 then print, 'ACT_S_LF Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', ACT_LF_SC[seqIndx-1], ' SC(seqIndx) =', ACT_LF_SC[seqIndx] if (ACT_LF_SC[nn_ACT_LF-1]-ACT_LF_SC[0]+1) NE p14 then print, 'ACT_S_LF Sequence Count Failed. Should be', p14, ' Reporting ',(ACT_LF_SC[nn_ACT_LF-1]-ACT_LF_SC[0]+1) total_act_s_lf_length = total(length[pkt_ACT_LF]+7) endif ELSE BEGIN ; case on no pkt ACT_S_LF = -1 & ACT_LF_PKTCNT = -1 & ACT_LF_PKTARR = -1 & ENDELSE ; ACT_S_MF Packet total_act_s_mf_length = 0 if nn_ACT_MF GT 0 and nn_act_ACT_MF GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ACT_S_MF = !values.f_nan ;variable length fltarr(nn_ACT_LF*116) ACT_MF_PKTCNT = fltarr(nn_ACT_MF) ACT_MF_PKTARR = fltarr(nn_ACT_MF) FOR ni=0L,nn_ACT_MF-1 do begin i = pkt_ACT_MF[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,SMPAVG_dummy,format = '(B04,B09,B03)' ORB_MD[i] = orbmode_dummy SMP_AVG[i] = SMPAVG_dummy ACT_MF_PKTCNT[ni] = newfile_unsigned[counter+place+offset1] n_packets = floor((((length[i]-1)/2)-4)/29) ACT_MF_pktarr[ni] = n_packets if ni EQ 0 then ACT_S_MF = [newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*29)-1]] $ ;variable length else ACT_S_MF = [ACT_S_MF, newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*29)-1]] if concatention EQ 'off' then ACT_MF_array[ni,*] = [newfile_unsigned[counter+place+offset1+1:counter+place+offset1+floor(length(i)+1)/2+3+offset2+1-9]] p15 = p15 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### ACT_MF ',ni,i,' time ', t2-t1 ,' seconds' ACT_MF_SC = SC[pkt_ACT_MF] for seqIndx = 1, nn_ACT_MF-1 do $ if ACT_MF_SC[seqIndx] NE ACT_MF_SC[seqIndx-1]+1 then print, 'ACT_S_MF Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', ACT_MF_SC[seqIndx-1], ' SC(seqIndx) =', ACT_MF_SC[seqIndx] if (ACT_MF_SC[nn_ACT_MF-1]-ACT_MF_SC[0]+1) NE p15 then print, 'ACT_S_MF Sequence Count Failed. Should be', p15, ' Reporting ',(ACT_MF_SC[nn_ACT_MF-1]-ACT_MF_SC[0]+1) total_act_s_mf_length = total(length[pkt_ACT_MF]+7) endif ELSE BEGIN ; case on no pkt ACT_S_MF = -1 & ACT_MF_PKTCNT = -1 & ACT_MF_PKTARR = -1 & ENDELSE ;ACT_S_HF Packets total_act_s_hf_length = 0 if nn_ACT_HF GT 0 and nn_act_ACT_HF GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed ACT_S_HF = !values.f_nan ;variable length fltarr(nn_ACT_LF*116) ACT_HF_PKTCNT = fltarr(nn_ACT_HF) ACT_HF_PKTARR = fltarr(nn_ACT_HF) FOR ni=0L,nn_ACT_HF-1 do begin i = pkt_ACT_HF[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,SMPAVG_dummy,format = '(B04,B09,B03)' ORB_MD[i] = orbmode_dummy SMP_AVG[i] = SMPAVG_dummy ACT_HF_PKTCNT[ni] = newfile_unsigned[counter+place+offset1] n_packets = floor((((length[i]-1)/2)-4)/65) ACT_HF_pktarr[ni] = n_packets if ni EQ 0 then ACT_S_HF = [newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*65)-1]] $ ;variable length else ACT_S_HF = [ACT_S_HF, newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*65)-1]] if concatention EQ 'off' then ACT_HF_array(ni,*) = [newfile_unsigned[counter+place+offset1+1:counter+place+offset1+floor(length[i]+1)/2+2+offset2+1-8]] p16 = p16 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### ACT_HF ',ni,i,' time ', t2-t1 ,' seconds' ACT_HF_SC = SC[pkt_ACT_HF] for seqIndx = 1, nn_ACT_HF-1 do $ if ACT_HF_SC[seqIndx] NE ACT_HF_SC[seqIndx-1]+1 then print, 'ACT_S_HF Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', ACT_HF_SC[seqIndx-1], ' SC(seqIndx) =', ACT_HF_SC[seqIndx] if (ACT_HF_SC[nn_ACT_HF-1]-ACT_HF_SC[0]+1) NE p16 then print, 'ACT_S_HF Sequence Count Failed. Should be', p16, ' Reporting ',(ACT_HF_SC[nn_ACT_HF-1]-ACT_HF_SC[0]+1) total_act_s_hf_length = total(length[pkt_ACT_HF]+7) endif ELSE BEGIN ; case on no pkt ACT_S_HF = -1 & ACT_HF_PKTCNT = -1 & ACT_HF_PKTARR = -1 & ENDELSE ; PAS_S_LF Packet total_pas_s_lf_length = 0 if nn_PAS_LF GT 0 and nn_act_PAS_LF GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed PAS_S_LF = !values.f_nan ;variable length fltarr(nn_ACT_LF*116) PAS_LF_PKTCNT = fltarr(nn_PAS_LF) PAS_LF_PKTARR = fltarr(nn_PAS_LF) FOR ni=0L,nn_PAS_LF-1 do begin i = pkt_PAS_LF[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,SMPAVG_dummy,format = '(B04,B09,B03)' ORB_MD[i] = orbmode_dummy SMP_AVG[i] = SMPAVG_dummy PAS_LF_PKTCNT[ni] = newfile_unsigned[counter+place+offset1] n_packets = floor((((length[i]-1)/2)-4)/29) PAS_LF_pktarr[ni] = n_packets if ni EQ 0 then PAS_S_LF = [newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*29)-1]] $ ;variable length else PAS_S_LF = [PAS_S_LF, newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*29)-1]] if concatention EQ 'off' then PAS_LF_array(ni,*) = [newfile_unsigned[counter+place+offset1+1:counter+place+offset1+floor(length[i]+1)/2+2+offset2+1-8]] p17 = p17 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### PAS_LF ',ni,i,' time ', t2-t1 ,' seconds' PAS_LF_SC = SC[pkt_PAS_LF] for seqIndx = 1, nn_PAS_LF-1 do begin if PAS_LF_SC[seqIndx] NE PAS_LF_SC[seqIndx-1]+1 then print, 'PAS_S_LF Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', PAS_LF_SC[seqIndx-1], ' SC(seqIndx) =', PAS_LF_SC[seqIndx] endfor if (PAS_LF_SC[nn_PAS_LF-1]-PAS_LF_SC[0]+1) NE p17 then print, 'PAS_S_LF Sequence Count Failed. Should be', p17, ' Reporting ',(PAS_LF_SC[nn_PAS_LF-1]-PAS_LF_SC[0]+1) total_pas_s_lf_length = total(length[pkt_PAS_LF]+7) endif ELSE BEGIN ; case on no pkt PAS_S_LF = -1 & PAS_LF_PKTCNT = -1 & PAS_LF_PKTARR = -1 & ENDELSE ;PAS_S_MF Packet total_pas_s_mf_length = 0 if nn_PAS_MF GT 0 and nn_act_PAS_MF GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed PAS_S_MF = !values.f_nan ;variable length fltarr(nn_ACT_LF*116) PAS_MF_PKTCNT = fltarr(nn_PAS_MF) PAS_MF_PKTARR = fltarr(nn_PAS_MF) FOR ni=0L,nn_PAS_MF-1 do begin i = pkt_PAS_MF[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,SMPAVG_dummy,format = '(B04,B09,B03)' ORB_MD[i] = orbmode_dummy SMP_AVG[i] = SMPAVG_dummy PAS_MF_PKTCNT[ni] = newfile_unsigned[counter+place+offset1] n_packets = floor((((length[i]-1)/2)-4)/29) PAS_MF_pktarr[ni] = n_packets if ni EQ 0 then PAS_S_MF = [newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*29)-1]] $ ;variable length else PAS_S_MF = [PAS_S_MF, newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*29)-1]] if concatention EQ 'off' then PAS_MF_array[ni,*] = [newfile_unsigned[counter+place+offset1+1:counter+place+offset1+floor(length[i]+1)/2+2+offset2+1-8]] p18 = p18 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### PAS_MF ',ni,i,' time ', t2-t1 ,' seconds' PAS_MF_SC = SC[pkt_PAS_MF] for seqIndx = 1, nn_PAS_MF-1 do $ if PAS_MF_SC[seqIndx] NE PAS_MF_SC[seqIndx-1]+1 then print, 'PAS_S_MF Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', PAS_MF_SC[seqIndx-1], ' SC(seqIndx) =', PAS_MF_SC[seqIndx] if (PAS_MF_SC[nn_PAS_MF-1]-PAS_MF_SC[0]+1) NE p18 then print, 'PAS_S_MF Sequence Count Failed. Should be', p18, ' Reporting ',(PAS_MF_SC(nn_PAS_MF-1)-PAS_MF_SC(0)+1) total_pas_s_mf_length = total(length[pkt_PAS_MF]+7) endif ELSE BEGIN ; case on no pkt PAS_S_MF = -1 & PAS_MF_PKTCNT = -1 & PAS_MF_PKTARR = -1 & ENDELSE ;PAS_S_HF Packet total_pas_s_hf_length = 0 if nn_PAS_HF GT 0 and nn_act_PAS_HF GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed PAS_S_HF = !values.f_nan ;variable length fltarr(nn_ACT_LF*116) PAS_HF_PKTCNT = fltarr(nn_PAS_HF) PAS_HF_PKTARR = fltarr(nn_PAS_HF) FOR ni=0L,nn_PAS_HF-1 do begin i = pkt_PAS_HF[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,E12_HF_gain_boost_dummy,nothing,SMPAVG_dummy,format = '(B04,B01,B08,B03)' ORB_MD[i] = orbmode_dummy SMP_AVG[i] = SMPAVG_dummy E12_HF_GB[ni] = E12_HF_gain_boost_dummy PAS_HF_PKTCNT[ni] = newfile_unsigned[counter+place+offset1] n_packets = floor((((length[i]-1)/2)-4)/65) PAS_HF_pktarr[ni] = n_packets if ni EQ 0 then PAS_S_HF = [newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*65)-1]] $ ;variable length else PAS_S_HF = [PAS_S_HF, newfile_unsigned[counter+place+offset1 :counter+place+offset1+(n_packets*65)-1]] if concatention EQ 'off' then PAS_HF_array(ni,*) = [newfile_unsigned[counter+place+offset1+1:counter+place+offset1+floor(length[i]+1)/2+2+offset2+1-8]] p19 = p19 + 1 ENDFOR ;loop over the packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### PAS_HF ',ni,i,' time ', t2-t1 ,' seconds' PAS_HF_SC = SC[pkt_PAS_HF] for seqIndx = 1, nn_PAS_HF-1 do $ if PAS_HF_SC[seqIndx] NE PAS_HF_SC[seqIndx-1]+1 then print, 'PAS_S_HF Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', PAS_HF_SC[seqIndx-1], ' SC(seqIndx) =', PAS_HF_SC[seqIndx] if (PAS_HF_SC[nn_PAS_HF-1]-PAS_HF_SC[0]+1) NE p19 then print, 'PAS_S_HF Sequence Count Failed. Should be', p19, ' Reporting ',(PAS_HF_SC[nn_PAS_HF-1]-PAS_HF_SC[0]+1) total_pas_s_hf_length = total(length[pkt_PAS_HF]+7) endif ELSE BEGIN ; case on no pkt PAS_S_HF = -1 & PAS_HF_PKTCNT = -1 & PAS_HF_PKTARR = -1 & ENDELSE ;HSBM LF packets total_hsbm_lf_length = 0 if nn_HSBM_LF GT 0 and nn_act_HSBM_LF GT 0 then BEGIN t1=SYSTIME(1,/seconds) ;to check on speed FOR ni=0L,nn_HSBM_LF-1 do begin i = pkt_HSBM_LF[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,format = '(B04,B12)' ORB_MD[i] = orbmode_dummy if compressed EQ 1 then begin ptr = 1L*(counter+place+offset1) ; which 16 bit package to start with (counter+place+offset1:counter+place+floor(length(i)+1)/2+2+offset2) ptr_end = ptr+(floor(length[i]+1)/2+2+offset2-offset1+1) ; this has to be checked!!! nn_e = 0 ; this is when the data is not eact a factor of 16 ;print, counter, ptr, ptr_end, nn_e decomp = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,32,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packat HSBM_LF' while ((ptr_end-ptr)*16-nn_e) ge (16+7+(31*2)) do begin ;print, counter, ptr, ptr_end, nn_e decomp = [decomp,mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,32,edac_on)] ;the rest of the times endwhile ;while ptr_end-2 gt ptr do decomp = [decomp,mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,32,edac_on)] p = ptr_new(decomp) ; if compressed endif else p = ptr_new(d) ; if not compressed if ni EQ 0 then BEGIN hsbm_lf_i = i ; keeps track of where in the file the hsbm_i packets are hsbm_lf_comp_t = sc_clk1[i]+sc_clk2[i]/65536d ;keeps track of the first time stamp since it might be multiple packages hsbm_lf_comp_p = p ;keeps track of the pointer ENDIF ELSE BEGIN hsbm_lf_i = [hsbm_lf_i, i] ; keeps track of where in the file the hsbm_i packets are hsbm_lf_comp_t = [hsbm_lf_comp_t,sc_clk1[i]+sc_clk2[i]/65536d] ;keeps track of the first time stamp since it might be multiple packages hsbm_lf_comp_p = [hsbm_lf_comp_p,p] ;keeps track of the pointer ENDELSE ENDFOR ;loop over nn_HSBM_LF t2=SYSTIME(1,/seconds) ;to check on speed print,'#### HSBM LF ',ni,i,' time ', t2-t1,' seconds' HSBM_LF_SC = SC[HSBM_LF_i] nn=n_elements(HSBM_LF_i) for seqIndx = 1, nn-1 do $ if HSBM_LF_SC[seqIndx] NE HSBM_LF_SC[seqIndx-1]+1 then print, 'HSBM_LF Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', HSBM_LF_SC[seqIndx-1], ' SC(seqIndx) =', HSBM_LF_SC[seqIndx] if (HSBM_LF_SC[nn-1]-HSBM_LF_SC[0]+1) NE nn then print, 'HSBM_LF Sequence Count Failed. Should be', nn, ' Reporting ',(HSBM_LF_SC[nn-1]-HSBM_LF_SC[0]+1) total_hsbm_lf_length = total(length[HSBM_LF_i]+7) endif ;HSBM_LF ;HSBM MF packets total_hsbm_mf_length = 0 if nn_HSBM_MF GT 0 and nn_act_HSBM_MF GT 0 then BEGIN t1=SYSTIME(1,/seconds) ;to check on speed FOR ni=0L,nn_HSBM_MF-1 do begin i = pkt_HSBM_MF[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,format = '(B04,B12)' ORB_MD[i] = orbmode_dummy if compressed EQ 1 then begin ptr = 1L*(counter+place+offset1) ; which 16 bit package to start with (counter+place+offset1:counter+place+floor(length(i)+1)/2+2+offset2) ptr_end = ptr+(floor(length[i]+1)/2+2+offset2-offset1+1) ; this has to be checked!!! nn_e = 0 ; this is when the data is not eact a factor of 16 decomp = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,32,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packat HSBM_MF' while ((ptr_end-ptr)*16-nn_e) ge (16+7+(31*2)) do decomp = [decomp,mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,32,edac_on)] ;the rest of the times p = ptr_new(decomp) ; if compressed endif else p = ptr_new(d) ; if not compressed if ni EQ 0 then BEGIN hsbm_mf_i = i ; keeps track of where in the file the hsbm_i packets are hsbm_mf_comp_t = sc_clk1[i]+sc_clk2[i]/65536d ;keeps track of the first time stamp since it might be multiple packages hsbm_mf_comp_p = p ;keeps track of the pointer ENDIF ELSE BEGIN hsbm_mf_i = [hsbm_mf_i, i] ; keeps track of where in the file the hsbm_i packets are hsbm_mf_comp_t = [hsbm_mf_comp_t,sc_clk1[i]+sc_clk2[i]/65536d] ;keeps track of the first time stamp since it might be multiple packages hsbm_mf_comp_p = [hsbm_mf_comp_p,p] ;keeps track of the pointer ENDELSE ENDFOR ;loop over nn_HSBM_MF t2=SYSTIME(1,/seconds) ;to check on speed print,'#### HSBM MF ',ni,i,' time ', t2-t1 ,' seconds' HSBM_MF_SC = SC[HSBM_MF_i] nn=n_elements(HSBM_MF_i) for seqIndx = 1, nn-1 do $ if HSBM_MF_SC[seqIndx] NE HSBM_MF_SC[seqIndx-1]+1 then print, 'HSBM_MF Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', HSBM_MF_SC[seqIndx-1], ' SC(seqIndx) =', HSBM_MF_SC[seqIndx] if (HSBM_MF_SC[nn-1]-HSBM_MF_SC[0]+1) NE nn then print, 'HSBM_MF Sequence Count Failed. Should be', nn, ' Reporting ',(HSBM_MF_SC[nn-1]-HSBM_MF_SC[0]+1) total_hsbm_mf_length = total(length[HSBM_MF_i]+7) endif ;HSBM_MF ;HSBM HF packets total_hsbm_hf_length = 0 if nn_HSBM_HF GT 0 and nn_act_HSBM_HF GT 0 then BEGIN t1=SYSTIME(1,/seconds) ;to check on speed FOR ni=0L,nn_HSBM_HF-1 do begin i = pkt_HSBM_HF[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter dummy = string(newfile_unsigned[counter+place+offset1-1],format = '(B016)') reads,dummy,orbmode_dummy,nothing,format = '(B04,B12)' ORB_MD[i] = orbmode_dummy if compressed EQ 1 then begin ptr = 1L*(counter+place+offset1) ; which 16 bit package to start with (counter+place+offset1:counter+place+floor(length(i)+1)/2+2+offset2) ptr_end = ptr+(floor(length[i]+1)/2+2+offset2-offset1+1) ; this has to be checked!!! nn_e = 0 ; this is when the data is not eact a factor of 16 decomp = mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,32,edac_on) if edac_on EQ 1 then print,'The compression check EDAC failed in packet no ',p7,i,ni,' pointer ',ptr,nn_e,' Packat HSBM_HF' while ((ptr_end-ptr)*16-nn_e) ge (16+7+(31*2)) do decomp = [decomp,mvn_lpw_r_block32(newfile_unsigned,ptr,nn_e,mask16,bin_c,index_arr,32,edac_on)] ;the rest of the times p = ptr_new(decomp) ; if compressed endif else p = ptr_new(d) ; if not compressed if ni EQ 0 then BEGIN hsbm_hf_i = i ; keeps track of where in the file the hsbm_i packets are hsbm_hf_comp_t = sc_clk1[i]+sc_clk2[i]/65536d ;keeps track of the first time stamp since it might be multiple packages hsbm_hf_comp_p = p ;keeps track of the pointer ENDIF ELSE BEGIN hsbm_hf_i = [hsbm_hf_i, i] ; keeps track of where in the file the hsbm_i packets are hsbm_hf_comp_t = [hsbm_hf_comp_t,sc_clk1[i]+sc_clk2[i]/65536d] ;keeps track of the first time stamp since it might be multiple packages hsbm_hf_comp_p = [hsbm_hf_comp_p,p] ;keeps track of the pointer ENDELSE ENDFOR ;loop over nn_HSBM_HF t2=SYSTIME(1,/seconds) ;to check on speed print,'#### HSBM HF ',ni,i,' time ', t2-t1 ,' seconds' HSBM_HF_SC = SC[HSBM_HF_i] nn=n_elements(HSBM_HF_i) for seqIndx = 1, nn-1 do $ if HSBM_HF_SC[seqIndx] NE HSBM_HF_SC[seqIndx-1]+1 then print, 'HSBM_HF Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', HSBM_HF_SC[seqIndx-1], ' SC(seqIndx) =', HSBM_HF_SC[seqIndx] if (HSBM_HF_SC[nn-1]-HSBM_HF_SC[0]+1) NE nn then print, 'HSBM_HF Sequence Count Failed. Should be', nn, ' Reporting ',(HSBM_HF_SC[nn-1]-HSBM_HF_SC[0]+1) total_hsbm_hf_length = total(length[HSBM_HF_i]+7) endif ;HSBM_HF ; htime packets total_htime_length = 0 if nn_htime GT 0 and nn_act_htime GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed FOR ni=0L,nn_htime-1 do begin i = pkt_htime[ni] ;which paket in the large file counter = counter_specific[i] ;get the right counter for iii = 0,(((length[i]-1)/2)-7)/2 do begin if (p23 EQ 0) AND (iii EQ 0) then cap_time = newfile_signed[counter+place+offset1+2*iii] else cap_time = [cap_time,newfile_signed[counter+place+offset1+2*iii]] dummy = string(newfile_unsigned[counter+place+offset1+2*iii+1],format = '(B016)') reads,dummy,type_dummy,xfertime_dummy,format = '(B02,B014)' if (p23 EQ 0) AND (iii EQ 0) then htime_type = type_dummy else htime_type = [htime_type, type_dummy] if (p23 EQ 0) AND (iii EQ 0) then xfer_time = xfertime_dummy else xfer_time = [xfer_time, xfertime_dummy] endfor p23 = p23 + 1 ENDFOR ;loop over packets t2=SYSTIME(1,/seconds) ;to check on speed print,'#### htime ',ni,i,' time ', t2-t1 ,' seconds' HTIME_SC = SC[pkt_htime] for seqIndx = 1, nn_htime-1 do $ if HTIME_SC[seqIndx] NE HTIME_SC[seqIndx-1]+1 then print, 'HTIME Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', HTIME_SC[seqIndx-1], ' SC(seqIndx) =', HTIME_SC[seqIndx] if (HTIME_SC[nn_htime-1]-HTIME_SC[0]+1) NE p23 then print, 'HTIME Sequence Count Failed. Should be', p23, ' Reporting ',(HTIME_SC[nn_htime-1]-HTIME_SC[0]+1) total_htime_length = total(length[pkt_htime]+7) endif ;htime ;Waveform packets w1 to w5 ; ;Waveform preallocations - if nn_w2 GT 1 then w2_length = floor(length(pkt_w2)+1)/2+3+offset3 else w2_length = 1 if nn_w4 GT 1 then w4_length = floor(length(pkt_w4)+1)/2+3+offset3 else w4_length = 1 if nn_w5 GT 1 then w5_length = floor(length(pkt_w5)+1)/2+3+offset3 else w5_length = 1 if nn_w2 GT 1 then waveform2_array = fltarr(n_elements(w2_length),w2_length(0)-8) else waveform2_array = fltarr(1) if nn_w4 GT 1 then waveform4_array = fltarr(n_elements(w4_length),w4_length(0)-8) else waveform4_array = fltarr(1) if nn_w5 GT 1 then waveform5_array = fltarr(n_elements(w5_length),w5_length(0)-8) else waveform5_array = fltarr(1) ;Waveform Preallocations since this is doublicate the waveform1_array I skip this one ;waveform2 = fltarr(total(w2_length)) ;waveform4 = fltarr(total(w4_length)) ;waveform5 = fltarr(total(w5_length)) ;warning wave_config is not explicit for the packet w1 to w5 it just usest the last defined one total_w1_length = 0 if nn_w1 GT 0 and nn_act_w1 GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed w1_length = floor(length[pkt_w1]+1)/2+3+offset3 waveform1_array = fltarr(nn_w1,w1_length[0]-8) ;waveform1 = fltarr(total(w1_length)) wave_config = newfile_unsigned[counter_all1[pkt_w1]+place+offset1-1] FOR ni=0,nn_w1-1 do begin w_length_ni = floor(length[pkt_w1[ni]]+1)/2-5+offset2+offset3+1 if w_length_ni EQ (w1_length[0]-8) THEN $ waveform1_array[ni,*] = newfile_signed[counter_all1[pkt_w1[ni]] +place+offset1:counter_all1[pkt_w1[ni]] +place+offset1+floor(length[pkt_w1[ni]]+1)/2-5+offset2+offset3] $ ELSE Print,' THIS packet w1 had something strange in it ',APID(pkt_w1(ni)),ni,' this ', w_length_ni,' should be this ',(w1_length(0)-8) ENDFOR p1 = nn_w1 t2=SYSTIME(1,/seconds) ;to check on speed print,'#### w1 ',ni,i,' time ', t2-t1 ,' seconds' W1_SC = SC[pkt_w1] nn=n_elements(pkt_w1) for seqIndx = 1, nn-1 do $ if W1_SC[seqIndx] NE W1_SC[seqIndx-1]+1 then print, 'Waveform 1 Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', W1_SC[seqIndx-1], ' SC(seqIndx) =', W1_SC[seqIndx] if (W1_SC[nn-1]-W1_SC[0]+1) NE p1 then print, 'Waveform 1 Sequence Count Failed. Should be', p1, ' Reporting ',(W1_SC[nn-1]-W1_SC[0]+1) total_w1_length = total(length[pkt_w1]+7) endif else waveform1_array = fltarr(1) ;w1 total_w2_length = 0 if nn_w2 GT 0 and nn_act_w2 GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed w2_length = floor(length[pkt_w2]+1)/2+3+offset3 waveform2_array = fltarr(nn_w2,w2_length[0]-8) ;waveform2 = fltarr(total(w2_length)) wave_config = newfile_unsigned[counter_all1[pkt_w2]+place+offset1-1] FOR ni=0,nn_w2-1 do begin w_length_ni = floor(length[pkt_w2[ni]]+1)/2-5+offset2+offset3+1 if w_length_ni EQ (w2_length[0]-8) THEN $ waveform2_array[ni,*] = newfile_signed[counter_all1[pkt_w2[ni]] +place+offset1:counter_all1[pkt_w2[ni]] +place+offset1+floor(length[pkt_w2[ni]]+1)/2-5+offset2+offset3] $ ELSE Print,' THIS packet w2 had something strange in it ',APID[pkt_w2[ni]],ni,' this ', w_length_ni,' should be this ',(w2_length[0]-8) ENDFOR p2 = nn_w2 t2=SYSTIME(1,/seconds) ;to check on speed print,'#### w2 ',ni,i,' time ', t2-t1 ,' seconds' W2_SC = SC[pkt_w2] nn=n_elements(pkt_w2) for seqIndx = 1, nn-1 do $ if W2_SC[seqIndx] NE W2_SC[seqIndx-1]+1 then print, 'Waveform 2 Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', W2_SC[seqIndx-1], ' SC(seqIndx) =', W2_SC[seqIndx] if (W2_SC[nn-1]-W2_SC[0]+1) NE p2 then print, 'Waveform 2 Sequence Count Failed. Should be', p2, ' Reporting ',(W2_SC[nn-1]-W2_SC[0]+1) total_w2_length = total(length[pkt_w2]+7) endif else waveform2_array = fltarr(1) ;w2 total_w3_length = 0 if nn_w3 GT 0 and nn_act_w3 GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed w3_length = floor(length[pkt_w3]+1)/2+3+offset3 waveform3_array = fltarr(nn_w3,w3_length[0]-8) ;waveform3 = fltarr(total(w3_length)) wave_config = newfile_unsigned[counter_all1[pkt_w3]+place+offset1-1] FOR ni=0,nn_w3-1 do begin w_length_ni = floor(length[pkt_w3[ni]]+1)/2-5+offset2+offset3+1 if w_length_ni EQ (w3_length[0]-8) THEN $ waveform3_array[ni,*] = newfile_signed[counter_all1[pkt_w3[ni]] +place+offset1:counter_all1[pkt_w3[ni]] +place+offset1+floor(length[pkt_w3[ni]]+1)/2-5+offset2+offset3] $ ELSE Print,' THIS packet w3 had something strange in it ',APID[pkt_w3[ni]],ni,' this ', w_length_ni,' should be this ',(w3_length[0]-8) ENDFOR p3 = nn_w3 t2=SYSTIME(1,/seconds) ;to check on speed print,'#### w3 ',ni,i,' time ', t2-t1 ,' seconds' W3_SC = SC[pkt_w3] nn=n_elements(pkt_w3) for seqIndx = 1, nn-1 do $ if W3_SC[seqIndx] NE W3_SC[seqIndx-1]+1 then print, 'Waveform 3 Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', W3_SC[seqIndx-1], ' SC(seqIndx) =', W3_SC[seqIndx] if (W3_SC[nn-1]-W3_SC[0]+1) NE p3 then print, 'Waveform 3 Sequence Count Failed. Should be', p3, ' Reporting ',(W3_SC[nn-1]-W3_SC[0]+1) total_w3_length = total(length[pkt_w3]+7) endif else waveform3_array = fltarr(1) ;w3 total_w4_length = 0 if nn_w4 GT 0 and nn_act_w4 GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed w4_length = floor(length[pkt_w4]+1)/2+3+offset3 waveform4_array = fltarr(nn_w4,w4_length[0]-8) ;waveform4 = fltarr(total(w4_length)) wave_config = newfile_unsigned[counter_all1[pkt_w4]+place+offset1-1] FOR ni=0,nn_w4-1 do begin w_length_ni = floor(length[pkt_w4[ni]]+1)/2-5+offset2+offset3+1 if w_length_ni EQ (w4_length[0]-8) THEN $ waveform4_array[ni,*] = newfile_signed[counter_all1[pkt_w4[ni]] +place+offset1:counter_all1[pkt_w4[ni]] +place+offset1+floor(length[pkt_w4[ni]]+1)/2-5+offset2+offset3] $ ELSE Print,' THIS packet w4 had something strange in it ',APID[pkt_w4[ni]],ni,' this ', w_length_ni,' should be this ',(w4_length[0]-8) ENDFOR p4 = nn_w4 t2=SYSTIME(1,/seconds) ;to check on speed print,'#### w4 ',ni,i,' time ', t2-t1 ,' seconds' W4_SC = SC[pkt_w4] nn=n_elements(pkt_w4) for seqIndx = 1, nn-1 do $ if W4_SC[seqIndx] NE W4_SC[seqIndx-1]+1 then print, 'Waveform 4 Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', W4_SC[seqIndx-1], ' SC(seqIndx) =', W4_SC[seqIndx] if (W4_SC[nn-1]-W4_SC[0]+1) NE p4 then print, 'Waveform 4 Sequence Count Failed. Should be', p4, ' Reporting ',(W4_SC[nn-1]-W4_SC[0]+1) total_w4_length = total(length[pkt_w4]+7) endif else waveform4_array = fltarr(1) ;w4 total_w5_length = 0 if nn_w5 GT 0 and nn_act_w5 GT 0 then begin t1=SYSTIME(1,/seconds) ;to check on speed w5_length = floor(length[pkt_w5]+1)/2+3+offset3 waveform5_array = fltarr(nn_w5,w5_length[0]-8) ;waveform5 = fltarr(total(w5_length)) wave_config = newfile_unsigned[counter_all1[pkt_w5]+place+offset1-1] FOR ni=0,nn_w5-1 do begin w_length_ni = floor(length[pkt_w5[ni]]+1)/2-5+offset2+offset3+1 if w_length_ni EQ (w5_length[0]-8) THEN $ waveform5_array[ni,*] = newfile_signed[counter_all1[pkt_w5[ni]] +place+offset1:counter_all1[pkt_w5[ni]] +place+offset1+floor(length[pkt_w5[ni]]+1)/2-5+offset2+offset3] $ ELSE Print,' THIS packet w5 had something strange in it ',APID[pkt_w5[ni]],ni,' this ', w_length_ni,' should be this ',(w5_length[0]-8) ENDFOR p5 = nn_w5 t2=SYSTIME(1,/seconds) ;to check on speed print,'#### w5 ',ni,i,' time ', t2-t1 ,' seconds' W5_SC = SC[pkt_w5] nn=n_elements(pkt_w5) for seqIndx = 1, nn-1 do $ if W5_SC[seqIndx] NE W5_SC[seqIndx-1]+1 then print, 'Waveform 5 Sequence Count Skipped. seqIndex =', seqIndx, ' SC(seqIndx-1) =', W5_SC[seqIndx-1], ' SC(seqIndx) =', W5_SC[seqIndx] if (W5_SC[nn-1]-W5_SC[0]+1) NE p5 then print, 'Waveform 5 Sequence Count Failed. Should be', p5, ' Reporting ',(W5_SC[nn-1]-W5_SC[0]+1) total_w5_length = total(length[pkt_w5]+7) endif else waveform5_array = fltarr(1) ;w5 ;-------------------------------------- THe different packets read in --------------------------------- t1=SYSTIME(1,/seconds) ;group together the matching hsbm packets ; DM - this code needs to be below the sequence number checking since hsbm_lf_i is used by the sequence number check ; and is modified in this code hsbm_lf = !values.f_nan hsbm_mf = !values.f_nan hsbm_hf = !values.f_nan if n_elements(hsbm_lf_comp_t) gt 0 and nn_act_HSBM_LF GT 0 then mvn_lpw_r_group_hsbm,hsbm_lf_comp_t,hsbm_lf_comp_p,1024,hsbm_lf,p20,hsbm_lf_i if n_elements(hsbm_mf_comp_t) gt 0 and nn_act_HSBM_MF GT 0 then mvn_lpw_r_group_hsbm,hsbm_mf_comp_t,hsbm_mf_comp_p,4096,hsbm_mf,p21,hsbm_mf_i if n_elements(hsbm_hf_comp_t) gt 0 and nn_act_HSBM_HF GT 0 then mvn_lpw_r_group_hsbm,hsbm_hf_comp_t,hsbm_hf_comp_p,4096,hsbm_hf,p22,hsbm_hf_i t2=SYSTIME(1,/seconds) ;to check on speed print,'#### HSBM grouping ',' time ', t2-t1 ,' seconds' ;-------------------------------------- Store it in the output structure -------------------------------- output=create_struct( $ ;To export the data in workable form 'name' , filename ,$ 'counter_all' , counter_all1 ,$ ;the start of each packet 'length' , length ,$ 'p1' , p1 ,$ 'p2' , p2 ,$ 'p3' , p3 ,$ 'p4' , p4 ,$ 'p5' , p5 ,$ 'p6' , p6 ,$ 'p7' , p7 ,$ 'p8' , p8 ,$ 'p9' , p9 ,$ 'p10' , p10 ,$ 'p11' , p11 ,$ 'p12' , p12 ,$ 'p13' , p13 ,$ 'p14' , p14 ,$ 'p15' , p15 ,$ 'p16' , p16 ,$ 'p17' , p17 ,$ 'p18' , p18 ,$ 'p19' , p19 ,$ 'p20' , p20 ,$ 'p21' , p21 ,$ 'p22' , p22 ,$ 'p23' , p23 ,$ 'i' , i ,$ 'ADR_i' , pkt_ADR ,$ 'ATR_i' , pkt_ATR ,$ 'HSK_i' , pkt_HSK ,$ 'EUV_i' , pkt_EUV ,$ 'SWP1_i' , pkt_SWP1 ,$ 'SWP2_i' , pkt_SWP2 ,$ 'PAS_i' , pkt_PAS ,$ 'ACT_i' , pkt_ACT ,$ 'ACT_S_HF_i' , pkt_ACT_HF ,$ 'ACT_S_MF_i' , pkt_ACT_MF ,$ 'ACT_S_LF_i' , pkt_ACT_LF ,$ 'PAS_S_HF_i' , pkt_PAS_HF ,$ 'PAS_S_MF_i' , pkt_PAS_MF ,$ 'PAS_S_LF_i' , pkt_PAS_LF ,$ 'W1_i' , pkt_w1 ,$ 'W2_i' , pkt_w2 ,$ 'W3_i' , pkt_w3 ,$ 'W4_i' , pkt_w4 ,$ 'W5_i' , pkt_w5 ,$ 'HSBM_LF_i' , hsbm_LF_i ,$ 'HSBM_MF_i' , hsbm_MF_i ,$ 'HSBM_HF_i' , hsbm_HF_i ,$ 'HTIME_i' , pkt_htime ,$ ; 'message_header' , message_header ,$ ; 'CCSDS_primary' , CCSDS_primary ,$ 'APID' , APID ,$ ; 'CCSDS_secondary' , CCSDS_secondary ,$ 'SC_CLK1' , SC_CLK1 ,$ 'SC_CLK2' , SC_CLK2 ,$ 'DFB_header' , DFB_header ,$ 'waveform1_array' , waveform1_array ,$ 'waveform2_array' , waveform2_array ,$ 'waveform3_array' , waveform3_array ,$ 'waveform4_array' , waveform4_array ,$ 'waveform5_array' , waveform5_array ,$ ; 'waveform1' , waveform1 ,$ ; 'waveform2' , waveform2 ,$ ; 'waveform3' , waveform3 ,$ ; 'waveform4' , waveform4 ,$ ; 'waveform5' , waveform5 ,$ 'ATR_SWP' , SWP ,$ 'ATR_W_BIAS1' , ATR_W_BIAS1 ,$ 'ATR_W_GUARD1' , ATR_W_GUARD1 ,$ 'ATR_W_STUB1' , ATR_W_STUB1 ,$ 'Reserved1' , Reserved1 ,$ 'ATR_LP_BIAS1' , ATR_LP_BIAS1 ,$ 'ATR_LP_GUARD1' , ATR_LP_GUARD1 ,$ 'ATR_LP_STUB1' , ATR_LP_STUB1 ,$ 'Reserved2' , Reserved2 ,$ 'ATR_W_BIAS2' , ATR_W_BIAS2 ,$ 'ATR_W_GUARD2' , ATR_W_GUARD2 ,$ 'ATR_W_STUB2' , ATR_W_STUB2 ,$ 'Reserved3' , Reserved3 ,$ 'ATR_LP_BIAS2' , ATR_LP_BIAS2 ,$ 'ATR_LP_GUARD2' , ATR_LP_GUARD2 ,$ 'ATR_LP_STUB2' , ATR_LP_STUB2 ,$ 'Reserved4' , Reserved4 ,$ 'THERM' , THERM ,$ 'DIODE_A' , DIODE_A ,$ 'DIODE_B' , DIODE_B ,$ 'DIODE_C' , DIODE_C ,$ 'DIODE_D' , DIODE_D ,$ 'ADR_DYN_OFFSET1' , ADR_DYN_OFFSET1 ,$ 'ADR_LP_BIAS1' , ADR_LP_BIAS1 ,$ 'ADR_DYN_OFFSET2' , ADR_DYN_OFFSET2 ,$ 'ADR_LP_BIAS2' , ADR_LP_BIAS2 ,$ 'ADR_W_BIAS1' , ADR_W_BIAS1 ,$ 'ADR_W_GUARD1' , ADR_W_GUARD1 ,$ 'ADR_W_STUB1' , ADR_W_STUB1 ,$ 'ADR_W_V1' , ADR_W_V1 ,$ 'ADR_LP_GUARD1' , ADR_LP_GUARD1 ,$ 'ADR_LP_STUB1' , ADR_LP_STUB1 ,$ 'ADR_W_BIAS2' , ADR_W_BIAS2 ,$ 'ADR_W_GUARD2' , ADR_W_GUARD2 ,$ 'ADR_W_STUB2' , ADR_W_STUB2 ,$ 'ADR_W_V2' , ADR_W_V2 ,$ 'ADR_LP_GUARD2' , ADR_LP_GUARD2 ,$ 'ADR_LP_STUB2' , ADR_LP_STUB2 ,$ 'Preamp_Temp1' , Preamp_Temp1 ,$ 'Preamp_Temp2' , Preamp_Temp2 ,$ 'Beb_Temp' , Beb_Temp ,$ 'plus12va' , plus12va ,$ 'minus12va' , minus12va ,$ 'plus5va' , plus5va ,$ 'minus5va' , minus5va ,$ 'plus90va' , plus90va ,$ 'minus90va' , minus90va ,$ 'CMD_ACCEPT' , CMD_ACCEPT ,$ 'CMD_REJECT' , CMD_REJECT ,$ 'MEM_SEU_COUNTER' , MEM_SEU_COUNTER ,$ 'INT_STAT' , INT_STAT ,$ 'CHKSUM' , CHKSUM ,$ 'EXT_STAT' , EXT_STAT ,$ 'DPLY1_CNT' , DPLY1_CNT ,$ 'DPLY2_CNT' , DPLY2_CNT ,$ 'SWP1_I1' , SWP1_I1 ,$ 'SWP1_V2' , SWP1_V2 ,$ 'I_ZERO1' , I_ZERO1 ,$ 'SWP1_DYN_OFFSET1', SWP1_DYN_OFFSET1,$ 'SWP2_I2' , SWP2_I2 ,$ 'SWP2_V1' , SWP2_V1 ,$ 'I_ZERO2' , I_ZERO2 ,$ 'SWP2_DYN_OFFSET2', SWP2_DYN_OFFSET2,$ 'ACT_V1' , ACT_V1 ,$ 'ACT_V2' , ACT_V2 ,$ 'ACT_E12_LF' , ACT_E12_LF ,$ 'PAS_V1' , PAS_V1 ,$ 'PAS_V2' , PAS_V2 ,$ 'PAS_E12_LF' , PAS_E12_LF ,$ 'course_clk' , course_clk ,$ 'ACT_S_HF' , ACT_S_HF ,$ 'ACT_S_MF' , ACT_S_MF ,$ 'ACT_S_LF' , ACT_S_LF ,$ 'PAS_S_HF' , PAS_S_HF ,$ 'PAS_S_MF' , PAS_S_MF ,$ 'PAS_S_LF' , PAS_S_LF ,$ 'ORB_MD' , ORB_MD ,$ 'E12_HF_GB' , E12_HF_GB ,$ 'MC_LEN' , MC_LEN ,$ 'SMP_AVG' , SMP_AVG ,$ 'wave_config' , wave_config ,$ ;warning wave_config is not explicit for the packet w1 to w5 it just usest the last defined one 'EUV_config' , EUV_config ,$ 'ADR_config' , ADR_config ,$ 'HSK_config' , HSK_config ,$ 'ATR_config' , ATR_config ,$ 'ACT_LF_PKTCNT' , ACT_LF_PKTCNT ,$ 'ACT_MF_PKTCNT' , ACT_MF_PKTCNT ,$ 'ACT_HF_PKTCNT' , ACT_HF_PKTCNT ,$ 'PAS_LF_PKTCNT' , PAS_LF_PKTCNT ,$ 'PAS_MF_PKTCNT' , PAS_MF_PKTCNT ,$ 'PAS_HF_PKTCNT' , PAS_HF_PKTCNT ,$ 'ACT_LF_PKTARR' , ACT_LF_PKTARR ,$ 'ACT_MF_PKTARR' , ACT_MF_PKTARR ,$ 'ACT_HF_PKTARR' , ACT_HF_PKTARR ,$ 'PAS_LF_PKTARR' , PAS_LF_PKTARR ,$ 'PAS_MF_PKTARR' , PAS_MF_PKTARR ,$ 'PAS_HF_PKTARR' , PAS_HF_PKTARR ,$ ; 'ACT_LF_array' , ACT_LF_array ,$ ; 'ACT_MF_array' , ACT_MF_array ,$ ; 'ACT_HF_array' , ACT_HF_array ,$ ; 'PAS_LF_array' , PAS_LF_array ,$ ; 'PAS_MF_array' , PAS_MF_array ,$ ; 'PAS_HF_array' , PAS_HF_array ,$ 'HSBM_LF' , hsbm_lf ,$ 'HSBM_MF' , hsbm_mf ,$ 'HSBM_HF' , hsbm_hf ,$ 'xfer_time' , xfer_time ,$ 'htime_type' , htime_type ,$ 'cap_time' , cap_time , $ 'SC_CLK1_gst' , SC_CLK1_gst , $ ; time when the gst stampet the packet 'SC_CLK2_gst' , SC_CLK2_gst , $ ; time when the gst stampet the packet 'APID2' , APID2 , $ ;should be the same as apid 'length2' , length2 , $ ;should be the same as packet length 'SC_CLK3_gst' , SC_CLK3_gst , $ ; should be the same as sc_clk1 'SC_CLK4_gst' , SC_CLK4_gst ) ; should be the same as sc_clk2 print,'Waveform 1:', p1, ' packets ',total_w1_length,' bytes' print,'Waveform 2:', p2, ' packets ',total_w2_length,' bytes' print,'Waveform 3:', p3, ' packets ',total_w3_length,' bytes' print,'Waveform 4:', p4, ' packets ',total_w4_length,' bytes' print,'Waveform 5:', p5, ' packets ',total_w5_length,' bytes' print,'ATR: ', p6, ' packets ',total_ATR_length,' bytes' print,'EUV: ', p7, ' packets ',total_euv_length,' bytes' print,'ADR: ', p8, ' packets ',total_adr_length,' bytes' print,'HSK: ', p9, ' packets ',total_hsk_length,' bytes' print,'SWP1_AVG: ', p10, ' packets ',total_swp1_length,' bytes' print,'SWP2_AVG: ', p11, ' packets ',total_swp2_length,' bytes' print,'ACT_AVG: ', p12, ' packets ',total_act_length,' bytes' print,'PAS_AVG: ', p13, ' packets ',total_pas_length,' bytes' print,'ACT_S_LF: ', p14, ' packets ',total_act_s_lf_length,' bytes' print,'ACT_S_MF: ', p15, ' packets ',total_act_s_mf_length,' bytes' print,'ACT_S_HF: ', p16, ' packets ',total_act_s_hf_length,' bytes' print,'PAS_S_LF: ', p17, ' packets ',total_pas_s_lf_length,' bytes' print,'PAS_S_MF: ', p18, ' packets ',total_pas_s_mf_length,' bytes' print,'PAS_S_HF: ', p19, ' packets ',total_pas_s_hf_length,' bytes' print,'HSBM_LF: ', p20, ' buffers ',total_hsbm_lf_length,' bytes' print,'HSBM_MF: ', p21, ' buffers ',total_hsbm_mf_length,' bytes' print,'HSBM_HF: ', p22, ' buffers ',total_hsbm_hf_length,' bytes' print,'HTIME: ', p23, ' packets ',total_htime_length,' bytes' t_end=SYSTIME(1,/seconds) ;to check on speed print,' TOTAL time to read ',t_end-t_start, ' seconds' end