function gseos_cmnblock_pkt,dbuff
clk_sec = dbuff[6]*2ul^16+dbuff[7]
clk_sub = dbuff[8]
t_offset = 978307200d
time = clk_sec + clk_sub/2d^16 + t_offset
data_byteorder = byte(ishft(dbuff[13],-8))
data_type = byte(dbuff[13])
data_size = dbuff[14]
if data_size eq 0 then data = 0 else begin
if data_type eq 2 then begin
message,'Not implemented'
data = dbuff[15:15+data_size/2-1]
endif else begin
data = byte(dbuff[15:15+data_size/2-1],0,data_size)
endelse
endelse
pkt = { time:time, $
valid : 1, $
sync: dbuff[0], $
length : dbuff[1]/2, $
seq_cntr: dbuff[2], $
cc1 : dbuff[3], $
cc2 : dbuff[4], $
cc3 : dbuff[5], $
clk_sec : clk_sec, $
clk_sub : clk_sub, $
mid1 : byte(ishft(dbuff[9],-8)) , $
mid2 : byte(dbuff[9]), $
mid3 : byte(ishft(dbuff[10],-8)), $
mid4 : byte(dbuff[10]), $
user1 : dbuff[11], $
user2 : dbuff[12], $
data_byteorder: data_byteorder, $
data_type: data_type , $
data_size: data_size, $
buffer:data }
dprint,dlevel=3,pkt.time-time
return,pkt
end
pro gseos_cmnblock_handler,buffer,time=time
common cmnblock_com, lastbuff, nn , c1,c2,c3
dbuff = uint(buffer,0,n_elements(buffer)/2)
byteorder,dbuff,/swap_if_little_endian
nb = n_elements(dbuff)
i=0
j=0
while (i lt nb-1) do begin
if dbuff[i] eq 'EB90'x then begin
len = dbuff[i+1] /2
if i+len le nb then begin
dprint,dlevel=3,j++,dbuff[i:i+len-1],format='(i2,":",100(" ",Z04))'
i = i+len
endif else begin
dprint,'Incomplete packet'
return
endelse
endif else begin
dprint,dlevel=1,'Lost Sync'
endelse
endwhile
return
end