pro mav_sep_misg_decom,cmnpkt,time=time ,completed=completed
common MISG_SEP_PROCESS_COM2, $
last_dbuffer, $
last_cmnpkt, $
status, status_ptrs, $
sephkp, sephkp_ptrs, $
sepscience, sepscience_ptrs, $
sepnoise, sepnoise_ptrs, $
sepmemdump, sepmemdump_ptrs, $
sepcommand, sepcommands_ptrs, $
memstate, memstate_ptrs
realtime=1
if keyword_set(completed) then begin
mav_gse_structure_append ,status_ptrs, realtime=realtime, tname = 'MISG_2_STATUS'
mav_gse_structure_append ,sephkp_ptrs, realtime=realtime, tname = 'SEP_2_HKP'
mav_gse_structure_append ,sepnoise_ptrs, realtime=realtime, tname = 'SEP_2_NOISE'
mav_gse_structure_append ,sepscience_ptrs, realtime=realtime, tname = 'SEP_2_SCIENCE'
mav_gse_structure_append ,sepmemdump_ptrs, realtime=realtime, tname = 'SEP_2_MEMDUMP'
mav_gse_structure_append ,memstate_ptrs, realtime=realtime, tname = 'SEP_2_MEMSTATE'
return
endif
if ~keyword_set(cmnpkt) then begin
dprint, 'Clearing common block data'
last_cmnpkt = 0
last_dbuffer =0
status=0 & status_ptrs=0
sephkp=0 & sephkp_ptrs=0
sepscience=0 & sepscience_ptrs=0
sepnoise=0 & sepnoise_ptrs = 0
sepmemdump=0 & sepmemdump_ptrs = 0
memstate=0 & memstate_ptrs = 0
membuff =0
store_data,'MISG_* SEP?_*',/clear
endif
if ~keyword_set(cmnpkt) then return
last_cmnpkt = cmnpkt
if cmnpkt.mid4 eq 1 then begin
mav_gse_command_decom,cmnpkt,memstate,hkp=sephkp,membuff=membuff
mav_gse_structure_append ,memstate_ptrs, memstate, realtime=realtime
return
endif
if not keyword_set(time) then time = cmnpkt.time
if keyword_set(status) then time = status.time
dbuffer = uint(cmnpkt.buffer,0,cmnpkt.data_size/2)
byteorder,dbuffer,/swap_if_little_endian
if size(/n_dimen, last_dbuffer) eq 1 then begin
dbuffer = [last_dbuffer,dbuffer]
endif
last_dbuffer=0
while size(/n_dimen,dbuffer) ne 0 do begin
misgpkt = mav_misg_packet_read_buffer(dbuffer,time=time)
if not keyword_set(misgpkt) then begin
dprint,'MISG packet error',dlevel=2
last_dbuffer = dbuffer
store_data,'CMNBLK_ERROR',cmnpkt.time,1,/append,dlim={psym:1}
break
endif
case misgpkt.ctype of
0: begin
tstr = '0 SYNC ERR '+time_string(systime(1),tformat='hh:mm:ss.fff')
dprint,unit=u, dlevel=1, c,tstr,misgpkt.sync, format='(i6," ",a-24," | ",2Z6,260Z5)'
end
'C1'x: begin
status = mav_misg_status_decom(misgpkt,rec_time=cmnpkt.time,last_status=status)
mav_gse_structure_append ,status_ptrs, status , realtime=realtime, tname='MISG_STATUS'
time = status.time
end
'C2'x: begin
dprint,unit=u, dlevel=1,tstr,misgpkt.sync,misgpkt.ctype,misgpkt.length,misgpkt.buffer, format='(a-24," | ",2Z6,260Z5)'
end
'C3'x: begin
msg = mav_misg_message(misgpkt)
if (msg.valid eq 0) then begin
tstr='Invalid MISG Message'
dprint,dlevel=1,tstr
store_data,'CMNBLK_ERROR',cmnpkt.time,tstr,/append,dlim={tplot_routine:'strplot'}
endif else tstr = ''
id0 = msg.id and '111011'b
sepn = (msg.id and '000100'b) ne 0
SEPname = (['SEP1','SEP2'])[sepn]
case id0 of
'08'x: dprint,dlevel=0,msg.length,' Event'
'09'x: dprint,dlevel=0,msg.length,' Unused'
'18'x: begin
sepscience = mav_sep_science_decom(msg,hkp=sephkp ,last=sepscience, memdump=sepmemdump)
mav_gse_structure_append, sepscience_ptrs, sepscience , realtime=realtime, tname= SEPname+'_SCIENCE'
end
'19'x: begin
sephkp = mav_sep_hkp_decom(msg,last=sephkp,memstate=memstate)
mav_gse_structure_append ,sephkp_ptrs, sephkp , realtime=realtime, tname=SEPname+'_HKP'
end
'1a'x: begin
sepnoise = mav_sep_noise_decom(msg,hkp=sephkp,last=sepnoise)
mav_gse_structure_append, sepnoise_ptrs, sepnoise, realtime=realtime,tname=SEPname+'_NOISE'
end
'1b'x: begin
sepmemdump = mav_sep_memdump_decom(msg,hkp=sephkp,last=sepmemdump)
mav_gse_structure_append, sepmemdump_ptrs, sepmemdump, realtime=realtime,tname= SEPname+'_MEMDUMP'
dprint,unit=u,dlevel=4,msg.length,' MemDump'
end
else: begin
dprint,dlevel=0,msg.length, ' Unknown Packet'
endelse
endcase
end
endcase
endwhile
end