function mav_gse_cmnblk_pkt,fp,neof=neof
fst = fstat(fp)
neof=0
cur_ptr = fst.cur_ptr
smallest_size = 10
if fst.cur_ptr gt fst.size-smallest_size then return,0
swrd = 0u
time = 0d
valid = 0d
seq_cntr=0u
cc1 = 0u
cc2 = 0u
cc3 = 0u
clk_sec = 0ul
clk_sub = 0u
mid1 = 0b
mid2 = 0b
mid3 = 0b
mid4 = 0b
user1 = 0u
user2 = 0u
data_byteorder = 0b
data_type = 0b
data_size = 0u
readu,fp,swrd
byteorder,swrd, /swap_if_little_endian
nbytes = 0u
nwords = 0u
if swrd eq 'EB90'x || swrd eq 'EB92'x then begin
readu,fp,nwords
byteorder,nwords, /swap_if_little_endian
if swrd eq 'EB90'x then nwords /=2
nbytes = nwords*2L
if nbytes ne 0 then begin
if fst.cur_ptr gt fst.size-nbytes then begin
dprint,'Incomplete packet ignored. found ',fst.size-fst.cur_ptr,' of ',nbytes,' bytes'
point_lun,fp,cur_ptr
endif
readu,fp,seq_cntr,cc1,cc2,cc3,clk_sec,clk_sub,mid1,mid2,mid3,mid4,user1,user2,data_byteorder,data_type,data_size
byteorder,seq_cntr,cc1,cc2,cc3,clk_sub,user1,user2, /swap_if_little_endian
byteorder,/swap_if_little_endian,/NTOHL, clk_sec
byteorder,data_size, /swap_if_little_endian
t_offset = 978307200d
time = clk_sec + clk_sub/2d^16 + t_offset
if data_size eq 0 then data = 0 else begin
if data_type eq 2 then begin
message,'Not implemented'
data = uintarr(data_size/2)
readu,fp,data
endif else begin
data = bytarr(data_size)
readu,fp,data
endelse
endelse
endif else data = 0
pkt = { time:time, valid:valid, sync: swrd, length:nwords, $
seq_cntr:seq_cntr, $
cc1 : cc1, $
cc2 : cc2, $
cc3 : cc3, $
clk_sec : clk_sec, $
clk_sub : clk_sub, $
mid1 : mid1 , $
mid2 : mid2, $
mid3 : mid3, $
mid4 : mid4, $
user1 : user1, $
user2 : user2, $
data_byteorder: data_byteorder, $
data_type: data_type, $
data_size: data_size, $
buffer:data }
endif else begin
pkt=0
endelse
return,pkt
end