1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257 |
- function adcs_dissector(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance, queue_id)
-
- if queue_id == 0 then
- require("adcs_dissector")
- adcs_dissector_0(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 1 then
- require("adcs_dissector")
- adcs_dissector_1(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 2 then
- require("adcs_dissector")
- adcs_dissector_2(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 3 then
- require("adcs_dissector")
- adcs_dissector_3(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 4 then
- require("adcs_dissector")
- adcs_dissector_4(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 5 then
- require("adcs_dissector")
- adcs_dissector_5(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 6 then
- require("adcs_dissector")
- adcs_dissector_6(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 7 then
- require("adcs_dissector")
- adcs_dissector_7(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 8 then
- require("adcs_dissector")
- adcs_dissector_8(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 9 then
- require("adcs_dissector")
- adcs_dissector_9(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 10 then
- require("adcs_dissector")
- adcs_dissector_10(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 11 then
- require("adcs_dissector")
- adcs_dissector_11(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 12 then
- require("adcs_dissector")
- adcs_dissector_12(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 13 then
- require("adcs_dissector")
- adcs_dissector_13(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
-
- elseif queue_id == 14 then
- require("adcs_dissector")
- adcs_dissector_14(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 15 then
- require("adcs_dissector")
- adcs_dissector_15(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 16 then
- require("adcs_dissector")
- adcs_dissector_16(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 17 then
- require("adcs_dissector")
- adcs_dissector_17(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 18 then
- require("adcs_dissector")
- adcs_dissector_18(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 19 then
- require("adcs_dissector")
- adcs_dissector_19(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 20 then
- require("adcs_dissector")
- adcs_dissector_20(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 21 then
- require("adcs_dissector")
- adcs_dissector_21(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 22 then
- require("adcs_dissector")
- adcs_dissector_22(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 23 then
- require("adcs_dissector")
- adcs_dissector_23(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 24 then
- require("adcs_dissector")
- adcs_dissector_24(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 25 then
- require("adcs_dissector")
- adcs_dissector_25(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 26 then
- require("adcs_dissector")
- adcs_dissector_26(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 27 then
- require("adcs_dissector")
- adcs_dissector_27(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 28 then
- require("adcs_dissector")
- adcs_dissector_28(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 29 then
- require("adcs_dissector")
- adcs_dissector_29(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 30 then
- require("adcs_dissector")
- adcs_dissector_30(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 31 then
- require("adcs_dissector")
- adcs_dissector_31(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- elseif queue_id == 32 then
- require("adcs_dissector")
- adcs_dissector_32(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- end
-
-
-
- end
-
-
- function adcs_dissector_0(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local status_field = ProtoField.uint32("adcs_protocol.status", "Status", base.DEC)
- local time_field = ProtoField.uint32("adcs_protocol.time", "Time", base.DEC)
- local nadir_3v3_current_field = ProtoField.uint32("adcs_protocol.nadir_3v3_current", "Nadir Sensor 3V3 Current", base.DEC)
- local fss_3v3_current_field = ProtoField.uint32("adcs_protocol.fss_3v3_current", "FSS 3V3 Current", base.DEC)
- local nadir_sram_current_field = ProtoField.uint32("adcs_protocol.nadir_sram_current", "Nadir SRAM Current", base.DEC)
- local fss_sram_current_field = ProtoField.uint32("adcs_protocol.fss_sram_current", "FSS SRAM Current", base.DEC)
- -- Add the fields to the protocol's 'fields' table
- adcs_protocol.fields = {
- status_field,
- time_field,
- nadir_3v3_current_field,
- fss_3v3_current_field,
- nadir_sram_current_field,
- fss_sram_current_field
- }
-
-
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- Dissect status
- local status = buffer(offset, 1):le_uint()
- subtree:add(status_field, status)
- offset = offset + 1
- -- Dissect time (4 bytes, little-endian)
- local time = buffer(offset, 4):le_uint()
- subtree:add(time_field, time)
- offset = offset + 4
- -- Dissect nadir 3V3 current (4 bytes, little-endian)
- local nadir_3v3_raw = buffer(offset, 2):le_uint()
- --local nadir_3v3_current = nadir_3v3_raw * 0.1 -- Apply multiplier
- subtree:add(nadir_3v3_current_field, nadir_3v3_raw)
- offset = offset + 2
- -- Dissect fss 3V3 current (4 bytes, little-endian)
- local fss_3v3_raw = buffer(offset, 2):le_uint()
- --local fss_3v3_current = fss_3v3_raw * 0.1 -- Apply multiplier
- subtree:add(fss_3v3_current_field, fss_3v3_raw)
- offset = offset + 2
- -- Dissect nadir SRAM current (4 bytes, little-endian)
- local nadir_sram_raw = buffer(offset, 2):le_uint()
- --local nadir_sram_current = nadir_sram_raw * 0.1 -- Apply multiplier
- subtree:add(nadir_sram_current_field, nadir_sram_raw)
- offset = offset + 2
- -- Dissect fss SRAM current (4 bytes, little-endian)
- local fss_sram_raw = buffer(offset, 2):le_uint()
- --local fss_sram_current = fss_sram_raw * 0.1 -- Apply multiplier
- subtree:add(fss_sram_current_field, fss_sram_raw)
- offset = offset + 2
-
- end
- end
- function adcs_dissector_1(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint32("adcs_dissector.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_dissector.epoch_time", "Epoch Time", base.DEC)
- local f_3v_current = ProtoField.float("adcs_dissector.3v_current", "Current Value (3.3V)", base.DEC)
- local f_5v_current = ProtoField.float("adcs_dissector.5v_current", "Current Value (5V)", base.DEC)
- local f_vbat_current = ProtoField.float("adcs_dissector.vbat_current", "Vbat Current Value", base.DEC)
- -- Add fields to the protocol's 'fields' table
- adcs_protocol.fields = {
- f_operation_status,
- f_epoch_time,
- f_3v_current,
- f_5v_current,
- f_vbat_current
- }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 1")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- local operation_status = buffer(offset, 1):le_uint()
- subtree:add(f_operation_status, operation_status)
- offset = offset + 1
- -- Dissect epoch time (4 bytes, little-endian)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- Dissect 3.3V current value (4 bytes, little-endian)
- local raw_3v_current = buffer(offset, 2):uint()
- --local formatted_3v_current = raw_3v_current * 0.1 -- Apply multiplier
- subtree:add(f_3v_current, raw_3v_current)
- offset = offset + 2
- -- Dissect 5V current value (4 bytes, little-endian)
- local raw_5v_current = buffer(offset, 2):uint()
- --local formatted_5v_current = raw_5v_current * 0.1 -- Apply multiplier
- subtree:add(f_5v_current, raw_5v_current)
- offset = offset + 2
- -- Dissect Vbat current value (4 bytes, little-endian)
- local raw_vbat_current = buffer(offset, 2):uint()
- --local formatted_vbat_current = raw_vbat_current * 0.1 -- Apply multiplier
- subtree:add(f_vbat_current, raw_vbat_current)
- offset = offset + 2
- end
- end
- function adcs_dissector_2(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint32("adcs_dissector.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_dissector.epoch_time", "Epoch Time", base.DEC)
- local f_num_reaction_wheels = ProtoField.uint32("adcs_dissector.num_reaction_wheels", "Number of Reaction Wheel", base.DEC)
- local f_rw_current_1 = ProtoField.float("adcs_dissector.rw_current_1", "Reaction Wheel Current 1 (A)", base.DEC)
- local f_rw_current_2 = ProtoField.float("adcs_dissector.rw_current_2", "Reaction Wheel Current 2 (A)", base.DEC)
- local f_rw_current_3 = ProtoField.float("adcs_dissector.rw_current_3", "Reaction Wheel Current 3 (A)", base.DEC)
-
- adcs_protocol.fields = {
- f_operation_status,
- f_epoch_time,
- f_num_reaction_wheels,
- f_rw_current_1,
- f_rw_current_2,
- f_rw_current_3
- }
- -- local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 2")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- local operation_status = buffer(offset, 1):le_uint()
- subtree:add(f_operation_status, operation_status)
- offset = offset + 1
- -- Dissect epoch time (4 bytes, little-endian)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- Dissect number of reaction wheels (4 bytes, little-endian)
- local num_reaction_wheels = buffer(offset, 1):le_uint()
- subtree:add(f_num_reaction_wheels, num_reaction_wheels)
- offset = offset + 1
- -- Dissect Reaction Wheel Current 1 (4 bytes, little-endian)
- local rw_current_1_raw = buffer(offset, 2):le_uint()
- local rw_current_1 = rw_current_1_raw * 0.1 -- Apply multiplier
- subtree:add(f_rw_current_1, rw_current_1)
- offset = offset + 2
- -- Dissect Reaction Wheel Current 2 (4 bytes, little-endian)
- local rw_current_2_raw = buffer(offset, 2):le_uint()
- local rw_current_2 = rw_current_2_raw * 0.1 -- Apply multiplier
- subtree:add(f_rw_current_2, rw_current_2)
- offset = offset + 2
- -- Dissect Reaction Wheel Current 3 (4 bytes, little-endian)
- local rw_current_3_raw = buffer(offset, 2):le_uint()
- local rw_current_3 = rw_current_3_raw * 0.1 -- Apply multiplier
- subtree:add(f_rw_current_3, rw_current_3)
- offset = offset + 2
- end
- end
- function adcs_dissector_3(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint8("current_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("current_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_cube_star_current = ProtoField.uint16("current_protocol.cube_star_current", "Cube Star Current ", base.DEC)
- local f_magnetorquer_current = ProtoField.uint16("current_protocol.magnetorquer_current", "Magnetorquer Current ", base.DEC)
- local f_cube_star_mcu_temp = ProtoField.uint16("current_protocol.cube_star_mcu_temp", "Cube Star MCU Temperature ", base.DEC)
- adcs_protocol.fields = {
- f_operation_status,
- f_epoch_time,
- f_cube_star_current,
- f_magnetorquer_current,
- f_cube_star_mcu_temp }
- -- local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 3")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint())
- offset = offset + 1 -- Update offset
- -- Epoch Time (4 bytes, UINT)
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint())
- offset = offset + 4 -- Update offset
- -- Cube Star Current (2 bytes, UINT)
- local cube_star_current = buffer(offset, 2):le_uint() * 0.1 -- Apply the scaling factor (RAWVAL * 0.1)
- subtree:add(f_cube_star_current, cube_star_current)
- offset = offset + 2 -- Update offset
- -- Magnetorquer Current (2 bytes, UINT)
- local magnetorquer_current = buffer(offset, 2):le_uint() * 0.1 -- Apply the scaling factor (RAWVAL * 0.1)
- subtree:add(f_magnetorquer_current, magnetorquer_current)
- offset = offset + 2 -- Update offset
- -- Cube Star MCU Temperature (2 bytes, UINT)
- local cube_star_mcu_temp = buffer(offset, 2):le_uint() * 0.1 -- Apply the scaling factor (RAWVAL * 0.1)
- subtree:add(f_cube_star_mcu_temp, cube_star_mcu_temp)
- offset = offset + 2 -- Update offset
- end
- end
- function adcs_dissector_4(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint32("adcs_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_mcu_temperature = ProtoField.int16("adcs_protocol.mcu_temperature", "MCU Temperature ", base.DEC)
- local f_magnetometer_temperature = ProtoField.int16("adcs_protocol.magnetometer_temperature", "Magnetometer Temperature ", base.DEC)
- local f_redundant_magnetometer_temperature = ProtoField.int16("adcs_protocol.redundant_magnetometer_temperature", "Redundant Magnetometer Temperature ", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = { f_operation_status, f_epoch_time, f_mcu_temperature, f_magnetometer_temperature, f_redundant_magnetometer_temperature }
- -- local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 4")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint()) -- 1 bytes for Operation Status (UINT)
- offset = offset + 1
-
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint()) -- 4 bytes for Epoch Time (UINT)
- offset = offset + 4
-
- -- Extract raw values for the temperatures (2 bytes each for INT)
- local mcu_temp = buffer(offset, 2):le_uint() * 0.01
- offset = offset + 2
-
- local magnetometer_temp = buffer(offset, 2):le_uint() * 0.01
- offset = offset + 2
-
- local redundant_magnetometer_temp = buffer(offset, 2):le_uint() * 0.01
- offset = offset + 2
-
- -- Add the temperature values to the tree with scaling applied
- subtree:add(f_mcu_temperature, mcu_temp)
- subtree:add(f_magnetometer_temperature, magnetometer_temp)
- subtree:add(f_redundant_magnetometer_temperature, redundant_magnetometer_temp)
- end
- end
- function adcs_dissector_5(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint8("adcs_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_raw_mag_x = ProtoField.uint16("adcs_protocol.raw_mag_x", "X Rate Sensor Temperature ", base.DEC)
- local f_raw_mag_y = ProtoField.uint16("adcs_protocol.raw_mag_y", "Y Rate Sensor Temperature ", base.DEC)
- local f_raw_mag_z = ProtoField.uint16("adcs_protocol.raw_mag_z", "Z Rate Sensor Temperature ", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = { f_operation_status, f_epoch_time, f_raw_mag_x, f_raw_mag_y, f_raw_mag_z }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 5")
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- Operation Status (1 bytes, unsigned)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint())
- offset = offset + 1
-
- -- Epoch Time (4 bytes, unsigned)
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint())
- offset = offset + 4
- -- Raw Magnetometer X (2 bytes, signed)
- local raw_mag_x = buffer(offset, 2):le_int()
- subtree:add(f_raw_mag_x, raw_mag_x)
- offset = offset + 2
- -- Raw Magnetometer Y (4 bytes, signed)
- local raw_mag_y = buffer(offset, 2):le_int()
- subtree:add(f_raw_mag_y, raw_mag_y)
- offset = offset + 2
- -- Raw Magnetometer Z (4 bytes, signed)
- local raw_mag_z = buffer(offset, 2):le_int()
- subtree:add(f_raw_mag_z, raw_mag_z)
- offset = offset + 2
- end
- end
- function adcs_dissector_6(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint8("adcs_protocol.operation_status", "Operation Status", base.HEX)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_attitude_estimation_mode = ProtoField.uint8("adcs_protocol.attitude_estimation_mode", "Attitude Estimation Mode", base.DEC)
- local f_control_mode = ProtoField.uint8("adcs_protocol.control_mode", "Control Mode", base.DEC)
- local f_adcs_run_mode = ProtoField.uint8("adcs_protocol.adcs_run_mode", "ADCS Run Mode", base.DEC)
- local f_asgp4_mode = ProtoField.uint8("adcs_protocol.asgp4_mode", "ASGP4 Mode", base.DEC)
- -- Define boolean fields for enabled flags
- local f_cube_control_signal_enabled = ProtoField.bool("adcs_protocol.cube_control_signal_enabled", "Cube Control Signal Enabled")
- local f_cube_control_motor_enabled = ProtoField.bool("adcs_protocol.cube_control_motor_enabled", "Cube Control Motor Enabled")
- local f_cubesense1_enabled = ProtoField.bool("adcs_protocol.cubesense1_enabled", "Cubesense1 Enabled")
- local f_cubesense2_enabled = ProtoField.bool("adcs_protocol.cubesense2_enabled", "Cubesense2 Enabled")
- local f_cube_wheel1_enabled = ProtoField.bool("adcs_protocol.cube_wheel1_enabled", "Cube Wheel 1 Enabled")
- local f_cube_wheel2_enabled = ProtoField.bool("adcs_protocol.cube_wheel2_enabled", "Cube Wheel 2 Enabled")
- local f_cube_wheel3_enabled = ProtoField.bool("adcs_protocol.cube_wheel3_enabled", "Cube Wheel 3 Enabled")
- local f_cube_star_enabled = ProtoField.bool("adcs_protocol.cube_star_enabled", "Cube Star Enabled")
- local f_gps_receiver_enabled = ProtoField.bool("adcs_protocol.gps_receiver_enabled", "GPS Receiver Enabled")
- local f_gps_lna_power_enabled = ProtoField.bool("adcs_protocol.gps_lna_power_enabled", "GPS LNA Power Enabled")
- local f_motor_driver_enabled = ProtoField.bool("adcs_protocol.motor_driver_enabled", "Motor Driver Enabled")
- local f_sun_is_above_local_horizon = ProtoField.bool("adcs_protocol.sun_is_above_local_horizon", "Sun is Above Local Horizon")
- -- Communication error fields
- local f_cubesense1_comm_error = ProtoField.bool("adcs_protocol.cubesense1_comm_error", "Cubesense1 Communications Error")
- local f_cubesense2_comm_error = ProtoField.bool("adcs_protocol.cubesense2_comm_error", "Cubesense2 Communications Error")
- local f_cubcontrol_signal_comm_error = ProtoField.bool("adcs_protocol.cubcontrol_signal_comm_error", "CubeControl Signal Communications Error")
- local f_cubcontrol_motor_comm_error = ProtoField.bool("adcs_protocol.cubcontrol_motor_comm_error", "CubeControl Motor Communications Error")
- local f_cubewheel1_comm_error = ProtoField.bool("adcs_protocol.cubewheel1_comm_error", "Cube Wheel 1 Communications Error")
- local f_cubewheel2_comm_error = ProtoField.bool("adcs_protocol.cubewheel2_comm_error", "Cube Wheel 2 Communications Error")
- local f_cubewheel3_comm_error = ProtoField.bool("adcs_protocol.cubewheel2_comm_error", "Cube Wheel 3 Communications Error")
- local f_cubestar_comm_error = ProtoField.bool("adcs_protocol.cubewheel2_comm_error", "Cube star communications Error")
- local f_magnetometer_range_error = ProtoField.bool("adcs_protocol.magnetometer_range_error", "Magnetometer Range Error")
- local f_cam1_sram_overcurrent = ProtoField.bool("adcs_protocol.cam1_sram_overcurrent", "Cam1 SRAM Overcurrent Detected")
- local f_cam1_3v3_overcurrent = ProtoField.bool("adcs_protocol.cam1_3v3_overcurrent", "Cam1 3v3 Overcurrent Detected")
- local f_cam1_sensor_busy = ProtoField.bool("adcs_protocol.cam1_sensor_busy", "Cam1 Sensor Busy Error")
- local f_cam1_sensor_detection_error = ProtoField.bool("adcs_protocol.cam1_sensor_detection_error", "Cam1 Sensor Detection Error")
- local f_sun_sensor_range_error = ProtoField.bool("adcs_protocol.sun_sensor_range_error", "Sun Sensor Range Error")
- local f_cam2_sram_overcurrent = ProtoField.bool("adcs_protocol.cam2_sram_overcurrent", "Cam2 SRAM Overcurrent Detected")
- local f_cam2_3v3_overcurrent = ProtoField.bool("adcs_protocol.cam2_3v3_overcurrent", "Cam2 3v3 Overcurrent Detected")
- local f_cam2_sensor_busy = ProtoField.bool("adcs_protocol.cam2_sensor_busy", "Cam2 Sensor Busy Error")
- local f_cam2_sensor_detection_error = ProtoField.bool("adcs_protocol.cam2_sensor_detection_error", "Cam2 Sensor Detection Error")
- local f_nadir_sensor_range_error = ProtoField.bool("adcs_protocol.nadir_sensor_range_error", "Nadir Sensor Range Error")
- local f_rate_sensor_range_error = ProtoField.bool("adcs_protocol.rate_sensor_range_error", "Rate Sensor Range Error")
- local f_wheel_speed_range_error = ProtoField.bool("adcs_protocol.wheel_speed_range_error", "Wheel Speed Range Error")
- local f_coarse_sun_sensor_error = ProtoField.bool("adcs_protocol.coarse_sun_sensor_error", "Coarse Sun Sensor Error")
- local f_star_tracker_match_error = ProtoField.bool("adcs_protocol.star_tracker_match_error", "Star Tracker Match Error")
- local f_star_tracker_overcurrent = ProtoField.bool("adcs_protocol.star_tracker_overcurrent", "Star Tracker Overcurrent Detected")
- local f_orbit_parameters_invalid = ProtoField.bool("adcs_protocol.orbit_parameters_invalid", "Orbit Parameters are Invalid")
- local f_configuration_invalid = ProtoField.bool("adcs_protocol.configuration_invalid", "Configuration is Invalid")
- local f_control_mode_change_not_allowed = ProtoField.bool("adcs_protocol.control_mode_change_not_allowed", "Control Mode Change is not allowed")
- local f_estimator_change_not_allowed = ProtoField.bool("adcs_protocol.estimator_change_not_allowed", "Estimator Change is not allowed")
- -- Define Magnetometer Sampling Mode field (2 bytes)
- local f_magnetometer_sampling_mode = ProtoField.uint8("adcs_protocol.magnetometer_sampling_mode", "Magnetometer Sampling Mode", base.DEC)
- -- Define runtime error fields
- local f_cubesense1_runtime_error = ProtoField.bool("adcs_protocol.cubesense1_runtime_error", "CubeSense1 Runtime Error")
- local f_cubesense2_runtime_error = ProtoField.bool("adcs_protocol.cubesense2_runtime_error", "CubeSense2 Runtime Error")
- local f_cubecontrol_signal_runtime_error = ProtoField.bool("adcs_protocol.cubecontrol_signal_runtime_error", "CubeControl Signal Runtime Error")
- local f_cubecontrol_motor_runtime_error = ProtoField.bool("adcs_protocol.cubecontrol_motor_runtime_error", "CubeControl Motor Runtime Error")
- local f_cubewheel1_runtime_error = ProtoField.bool("adcs_protocol.cubewheel1_runtime_error", "CubeWheel1 Runtime Error")
- local f_a = ProtoField.bool("adcs_protocol.cubewheel1_runtime_error", "CubeWheel1 Runtime Error")
- local f_b = ProtoField.bool("adcs_protocol.cubewheel1_runtime_error", "CubeWheel1 Runtime Error")
- local f_cubewheel2_runtime_error = ProtoField.bool("adcs_protocol.cubewheel2_runtime_error", "CubeWheel2 Runtime Error")
- local f_cubewheel3_runtime_error = ProtoField.bool("adcs_protocol.cubewheel3_runtime_error", "CubeWheel3 Runtime Error")
- local f_cubestar_runtime_error = ProtoField.bool("adcs_protocol.cubestar_runtime_error", "CubeStar Runtime Error")
- local f_magnetometer_error = ProtoField.bool("adcs_protocol.magnetometer_error", "Magnetometer Error")
- local f_rate_sensor_failure = ProtoField.bool("adcs_protocol.rate_sensor_failure", "Rate Sensor Failure")
- -- Add all fields to the protocol
- adcs_protocol.fields = {
- f_operation_status,
- f_epoch_time,
- f_attitude_estimation_mode,
- f_control_mode,
- f_adcs_run_mode,
- f_asgp4_mode,
- f_cube_control_signal_enabled,
- f_cube_control_motor_enabled,
- f_cubesense1_enabled,
- f_cubesense2_enabled,
- f_cube_wheel1_enabled,
- f_cube_wheel2_enabled,
- f_cube_wheel3_enabled,
- f_cube_star_enabled,
- f_gps_receiver_enabled,
- f_gps_lna_power_enabled,
- f_motor_driver_enabled,
- f_sun_is_above_local_horizon,
- f_cubesense1_comm_error,
- f_cubesense2_comm_error,
- f_cubcontrol_signal_comm_error,
- f_cubcontrol_motor_comm_error,
- f_cubewheel1_comm_error,
- f_cubewheel2_comm_error,
- f_cubewheel3_comm_error,
- f_cubestar_comm_error,
- f_magnetometer_range_error,
- f_cam1_sram_overcurrent,
- f_cam1_3v3_overcurrent,
- f_cam1_sensor_busy,
- f_cam1_sensor_detection_error,
- f_sun_sensor_range_error,
- f_cam2_sram_overcurrent,
- f_cam2_3v3_overcurrent,
- f_cam2_sensor_busy,
- f_cam2_sensor_detection_error,
- f_nadir_sensor_range_error,
- f_rate_sensor_range_error,
- f_wheel_speed_range_error,
- f_coarse_sun_sensor_error,
- f_star_tracker_match_error,
- f_star_tracker_overcurrent,
- f_orbit_parameters_invalid,
- f_a,
- f_b,
- f_configuration_invalid,
- f_control_mode_change_not_allowed,
- f_estimator_change_not_allowed,
- f_magnetometer_sampling_mode,
- f_cubesense1_runtime_error,
- f_cubesense2_runtime_error,
- f_cubecontrol_signal_runtime_error,
- f_cubecontrol_motor_runtime_error,
- f_cubewheel1_runtime_error,
- f_cubewheel2_runtime_error,
- f_cubewheel3_runtime_error,
- f_cubestar_runtime_error,
- f_magnetometer_error,
- f_rate_sensor_failure
- }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 6")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint())
- offset = offset + 1
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint())
- offset = offset + 4
- -- Parse Attitude Estimation Mode (8 bits)
- subtree:add(f_attitude_estimation_mode, buffer(offset, 1):le_uint())
- offset = offset + 1
- -- Parse Control Mode (8 bits)
- subtree:add(f_control_mode, buffer(offset, 1):le_uint())
- offset = offset + 1
- -- Parse ADCS Run Mode (2 bits / 2 bytes)
- local a=buffer(offset, 1):le_uint()
- subtree:add(f_adcs_run_mode, a & 0x03)
- --offset = offset + 2
- -- Parse ASGP4 Mode (2 bits / 2 bytes)
- subtree:add(f_asgp4_mode, (a >> 2) & 0x03)
-
- subtree:add(f_cube_control_signal_enabled, (a >> 4) & 0x01)
-
- subtree:add(f_cube_control_motor_enabled,(a >> 5) & 0x01 )
-
- subtree:add(f_cubesense1_enabled,(a >> 6) & 0x01 )
-
- subtree:add(f_cubesense2_enabled,(a >> 7) & 0x01 )
-
- offset = offset + 1
- -- Parse CubeWheel Enabled Flags
- a=buffer(offset, 1):le_uint()
-
- subtree:add(f_cube_wheel1_enabled, (a >> 0) & 0x01)
- --offset = offset + 1
- a=buffer(offset, 1):le_uint()
- subtree:add(f_cube_wheel2_enabled, (a >> 1) & 0x01)
-
- a=buffer(offset, 1):le_uint()
- subtree:add(f_cube_wheel3_enabled, (a >> 2) & 0x01)
- --offset = offset + 1
- subtree:add(f_cube_star_enabled, (a >> 3) & 0x01)
- --offset = offset + 1
- -- Parse GPS and Motor Driver enabled flags
- subtree:add(f_gps_receiver_enabled, (a >> 4) & 0x01)
- --offset = offset + 1
- -- Continue adding each field to the subtree with the appropriate offsets and bitfields
- -- Define additional boolean fields for enabled flags and errors
- subtree:add(f_gps_lna_power_enabled, (a >> 5) & 0x01) -- GPS LNA Power Enabled
- subtree:add(f_motor_driver_enabled, (a >> 6) & 0x01) -- Motor Driver Enabled
- subtree:add(f_sun_is_above_local_horizon, (a >> 7) & 0x01) -- Sun is Above Local Horizon
- offset = offset + 1
- a = buffer(offset, 1):le_uint()
- -- Communication error flags
- subtree:add(f_cubesense1_comm_error, (a >> 0) & 0x01) -- Cubesense1 Communications Error
- subtree:add(f_cubesense2_comm_error, (a >> 1) & 0x01) -- Cubesense2 Communications Error
- a=buffer(offset, 1):le_uint()
- subtree:add(f_cubcontrol_signal_comm_error, (a >> 2) & 0x01) -- CubeControl Signal Communications Error
- subtree:add(f_cubcontrol_motor_comm_error, (a >> 3) & 0x01) -- CubeControl Motor Communications Error
- subtree:add(f_cubewheel1_comm_error, (a >> 4) & 0x01) -- Cube Wheel1 Communications Error
- subtree:add(f_cubewheel2_comm_error, (a >> 5) & 0x01) -- Cube Wheel2 Communications Error
- subtree:add(f_cubewheel3_comm_error, (a >> 6) & 0x01)
- subtree:add(f_cubestar_comm_error, (a >> 7) & 0x01)
- offset = offset + 1
- a=buffer(offset, 1):le_uint()
- subtree:add(f_magnetometer_range_error, (a >> 0) & 0x01) -- Magnetometer Range Error
- --offset = offset + 1
- -- Sensor errors
- subtree:add(f_cam1_sram_overcurrent, (a >> 1) & 0x01) -- Cam1 SRAM Overcurrent Detected
- --offset = offset + 1
- --offset = offset + 1
- --a=buffer(offset,1):le_uint()
- subtree:add(f_cam1_3v3_overcurrent, (a >> 2) & 0x01) -- Cam1 3v3 Overcurrent Detected
- subtree:add(f_cam1_sensor_busy, (a >> 3) & 0x01) -- Cam1 Sensor Busy Error
- subtree:add(f_cam1_sensor_detection_error, (a >> 4) & 0x01 ) -- Cam1 Sensor Detection Error
- subtree:add(f_sun_sensor_range_error, (a >> 5) & 0x01) -- Sun Sensor Range Error
- subtree:add(f_cam2_sram_overcurrent, (a >> 6) & 0x01) -- Cam2 SRAM Overcurrent Detected
- subtree:add(f_cam2_3v3_overcurrent, (a >> 7) & 0x01) -- Cam2 3v3 Overcurrent Detected
- offset=offset+1
- local data=buffer(offset, 1):le_uint()
- subtree:add(f_cam2_sensor_busy, (data >> 0) & 0x01) -- Cam2 Sensor Busy Error
- --offset = offset + 1
- subtree:add(f_cam2_sensor_detection_error, (data >> 1) & 0x01) -- Cam2 Sensor Detection Error
- --offset = offset + 1
- --local data = buffer(offset, 1):le_uint()
- subtree:add(f_nadir_sensor_range_error, (data >> 2) & 0x01) -- Nadir Sensor Range Error
- subtree:add(f_rate_sensor_range_error, (data >> 3) & 0x01) -- Rate Sensor Range Error
- subtree:add(f_wheel_speed_range_error,(data >> 4) & 0x01) -- Wheel Speed Range Error
- -- Error flags for sensors and system issues
- subtree:add(f_coarse_sun_sensor_error,(data >> 5) & 0x01) -- Coarse Sun Sensor Error
- subtree:add(f_star_tracker_match_error, (data >> 6) & 0x01) -- Star Tracker Match Error
- subtree:add(f_star_tracker_overcurrent, (data >> 7) & 0x01) -- Star Tracker Overcurrent Detected
- offset = offset + 1
- data = buffer(offset, 1):le_uint()
- subtree:add(f_orbit_parameters_invalid, (data >> 0) & 0x01) -- Orbit Parameters are Invalid
- subtree:add(f_configuration_invalid,(data >> 1) & 0x01) -- Configuration is Invalid
- --offset = offset + 1
- --data = buffer(offset, 1):le_uint()
- subtree:add(f_control_mode_change_not_allowed, (data >> 2) & 0x01) -- Control Mode Change is Not Allowed
- subtree:add(f_estimator_change_not_allowed, (data >> 3) & 0x01) -- Estimator Change is Not Allowed
- -- Magnetometer Sampling Mode (2 bits)
- subtree:add(f_magnetometer_sampling_mode, (data >> 4) & 0x03) -- Current Magnetometer Sampling Mode
- -- Runtime error flags for sensors and systems
- subtree:add(f_a, (data >> 6 ) & 0x01) -- CubeSense1 Runtime Error
- subtree:add(f_b, (data >> 7) & 0x01) -- CubeSense2 Runtime Error
- offset=offset+1
- data = buffer(offset, 1):le_uint()
- subtree:add(f_cubesense1_runtime_error, (data >> 0) & 0x01) -- CubeSense1 Runtime Error
- subtree:add(f_cubesense2_runtime_error, (data >> 1) & 0x01) -- CubeSense2 Runtime Error
- subtree:add(f_cubecontrol_signal_runtime_error, (data >> 2) & 0x01) -- CubeControl Signal Runtime Error
- subtree:add(f_cubecontrol_motor_runtime_error, (data >> 3) & 0x01) -- CubeControl Motor Runtime Error
- subtree:add(f_cubewheel1_runtime_error,(data >> 4) & 0x01) -- CubeWheel1 Runtime Error
- subtree:add(f_cubewheel2_runtime_error, (data >> 5) & 0x01) -- CubeWheel2 Runtime Error
- --offset = offset + 1
- --data = buffer(offset, 1):le_uint()
- subtree:add(f_cubewheel3_runtime_error, (data >> 6) & 0x01) -- CubeWheel3 Runtime Error
- subtree:add(f_cubestar_runtime_error, (data >> 7) & 0x01) -- CubeStar Runtime Error
- offset=offset+1
- data = buffer(offset, 1):le_uint()
- -- Magnetometer and sensor errors
- subtree:add(f_magnetometer_error, (data >> 0) & 0x01) -- Magnetometer Error
- subtree:add(f_rate_sensor_failure, (data >> 1) & 0x01) -- Rate Sensor Failure
- offset = offset + 1
- end
- end
- function adcs_dissector_7(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint8("adcs_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_x_sun_vector = ProtoField.float("adcs_protocol.x_sun_vector", "X Sun Vector", base.DEC)
- local f_y_sun_vector = ProtoField.float("adcs_protocol.y_sun_vector", "Y Sun Vector", base.DEC)
- local f_z_sun_vector = ProtoField.float("adcs_protocol.z_sun_vector", "Z Sun Vector", base.DEC)
- -- Register fields to the protocol
- adcs_protocol.fields = { f_operation_status, f_epoch_time, f_x_sun_vector, f_y_sun_vector, f_z_sun_vector }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 7")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint()) -- 1 byte for Operation Status
- offset = offset + 1 -- Update offset
- -- Epoch Time (4 bytes, UINT)
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint()) -- 4 bytes for Epoch Time
- offset = offset + 4 -- Update offset
- -- X-axis Sun Vector (2 bytes, INT) with scaling factor (RAWVAL * 0.001)
- local x_sun_vector_raw = buffer(offset, 2):le_int() -- Read the 2-byte INT value
- local x_sun_vector = x_sun_vector_raw * 0.001 -- Apply scaling factor
- subtree:add(f_x_sun_vector, x_sun_vector) -- Add to subtree with scaling
- offset = offset + 2 -- Update offset
- -- Y-axis Sun Vector (2 bytes, INT) with scaling factor (RAWVAL * 0.001)
- local y_sun_vector_raw = buffer(offset, 2):le_int() -- Read the 2-byte INT value
- local y_sun_vector = y_sun_vector_raw * 0.001 -- Apply scaling factor
- subtree:add(f_y_sun_vector, y_sun_vector) -- Add to subtree with scaling
- offset = offset + 2 -- Update offset
- -- Z-axis Sun Vector (2 bytes, INT) with scaling factor (RAWVAL * 0.001)
- local z_sun_vector_raw = buffer(offset, 2):le_int() -- Read the 2-byte INT value
- local z_sun_vector = z_sun_vector_raw * 0.001 -- Apply scaling factor
- subtree:add(f_z_sun_vector, z_sun_vector) -- Add to subtree with scaling
- offset = offset + 2 -- Update offset
- end
- end
- function adcs_dissector_8(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint8("adcs_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_css_ad_value_1 = ProtoField.uint8("myprotocol.css_ad_value_1", "Raw css 1 ", base.DEC)
- local f_css_ad_value_2 = ProtoField.uint8("myprotocol.css_ad_value_2", "Raw css 2", base.DEC)
- local f_css_ad_value_3 = ProtoField.uint8("myprotocol.css_ad_value_3", "Raw css 3", base.DEC)
- local f_css_ad_value_4 = ProtoField.uint8("myprotocol.css_ad_value_4", "Raw css 4", base.DEC)
- local f_css_ad_value_5 = ProtoField.uint8("myprotocol.css_ad_value_5", "Raw css 5", base.DEC)
- local f_css_ad_value_6 = ProtoField.uint8("myprotocol.css_ad_value_6", "Raw css 6", base.DEC)
- local f_css_ad_value_7 = ProtoField.uint8("myprotocol.css_ad_value_7", "Raw css 7", base.DEC)
- local f_css_ad_value_8 = ProtoField.uint8("myprotocol.css_ad_value_8", "Raw css 8", base.DEC)
- local f_css_ad_value_9 = ProtoField.uint8("myprotocol.css_ad_value_9", "Raw css 9", base.DEC)
- local f_css_ad_value_10 = ProtoField.uint8("myprotocol.css_ad_value_10", "Raw css 10", base.DEC)
- adcs_protocol.fields = { f_operation_status,
- f_epoch_time, f_css_ad_value_1,
- f_css_ad_value_2,
- f_css_ad_value_3,
- f_css_ad_value_4,
- f_css_ad_value_5,
- f_css_ad_value_6,
- f_css_ad_value_7,
- f_css_ad_value_8,
- f_css_ad_value_9,
- f_css_ad_value_10
- }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 8")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint()) -- 1 byte for Operation Status
- offset = offset + 1 -- Update offset
- -- Epoch Time (4 bytes, UINT)
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint()) -- 4 bytes for Epoch Time
- offset = offset + 4 -- Update offset
- -- CSS A/D Values (10 individual uint8 fields)
- subtree:add(f_css_ad_value_1, buffer(offset, 1))
- offset = offset + 1 -- Update offset
- subtree:add(f_css_ad_value_2, buffer(offset, 1))
- offset = offset + 1 -- Update offset
- subtree:add(f_css_ad_value_3, buffer(offset, 1))
- offset = offset + 1 -- Update offset
- subtree:add(f_css_ad_value_4, buffer(offset, 1))
- offset = offset + 1 -- Update offset
- subtree:add(f_css_ad_value_5, buffer(offset, 1))
- offset = offset + 1 -- Update offset
- subtree:add(f_css_ad_value_6, buffer(offset, 1))
- offset = offset + 1 -- Update offset
- subtree:add(f_css_ad_value_7, buffer(offset, 1))
- offset = offset + 1 -- Update offset
- subtree:add(f_css_ad_value_8, buffer(offset, 1))
- offset = offset + 1 -- Update offset
- subtree:add(f_css_ad_value_9, buffer(offset, 1))
- offset = offset + 1 -- Update offset
- subtree:add(f_css_ad_value_10, buffer(offset, 1))
- offset = offset + 1
- end
- end
- function adcs_dissector_9(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define the fields for the protocol
- local f_operation_status = ProtoField.uint8("adcs_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_sun_x = ProtoField.float("adcs_protocol.sun_x", "FSS X axis vector ", base.DEC)
- local f_sun_y = ProtoField.float("adcs_protocol.sun_y", "FSS y axis vector", base.DEC)
- local f_sun_z = ProtoField.float("adcs_protocol.sun_z", "FSS z axis vector", base.DEC)
- adcs_protocol.fields = {
- f_operation_status, f_epoch_time,
- f_sun_x, f_sun_y, f_sun_z }
-
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 9")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
-
- subtree:add(f_operation_status, buffer(offset, 1):le_uint())
- offset = offset + 1 -- Update offset
- -- Epoch Time (4 bytes, UINT)
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint())
- offset = offset + 4 -- Update offset
- -- Sun X (2 bytes, INT, formatted as RAWVAL * 0.001)
- local raw_sun_x = buffer(offset, 2):le_int()
- local sun_x = raw_sun_x * 0.001
- subtree:add(f_sun_x, sun_x)
- offset = offset + 2 -- Update offset
- -- Sun Y (2 bytes, INT, formatted as RAWVAL * 0.001)
- local raw_sun_y = buffer(offset, 2):le_int()
- local sun_y = raw_sun_y * 0.001
- subtree:add(f_sun_y, sun_y)
- offset = offset + 2 -- Update offset
- -- Sun Z (2 bytes, INT, formatted as RAWVAL * 0.001)
- local raw_sun_z = buffer(offset, 2):le_int()
- local sun_z = raw_sun_z * 0.001
- subtree:add(f_sun_z, sun_z)
- offset = offset + 2 -- Update offs
- end
- end
- function adcs_dissector_10(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint8("adcs_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_fss_raw_x_angle = ProtoField.int16("adcs_protocol.fss_raw_x_angle", "FSS Raw X Angle", base.DEC)
- local f_fss_raw_y_angle = ProtoField.int16("adcs_protocol.fss_raw_y_angle", "FSS Raw Y Angle", base.DEC)
- local f_fss_capture_status = ProtoField.uint8("adcs_protocol.fss_capture_status", "FSS Capture Status", base.DEC)
- local f_fss_detection_result = ProtoField.uint8("adcs_protocol.fss_detection_result", "FSS Detection Result", base.DEC)
- -- Add the protocol fields to the protocol
- adcs_protocol.fields = {
- f_operation_status,
- f_epoch_time,
- f_fss_raw_x_angle,
- f_fss_raw_y_angle,
- f_fss_capture_status,
- f_fss_detection_result
- }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 10")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint())
- offset = offset + 1 -- Update offset
- -- Epoch Time (4 bytes, UINT)
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint())
- offset = offset + 4 -- Update offset
- -- FSS Raw X Angle (2 bytes, INT)
- subtree:add(f_fss_raw_x_angle, buffer(offset, 2):le_int())
- offset = offset + 2 -- Update offset
- -- FSS Raw Y Angle (2 bytes, INT)
- subtree:add(f_fss_raw_y_angle, buffer(offset, 2):le_int())
- offset = offset + 2 -- Update offset
- -- FSS Capture Status (1 byte, ENUM)
- local capture_status = buffer(offset, 1):le_uint()
- subtree:add(f_fss_capture_status, capture_status)
- --subtree:add_expert_info(PI_INFO, PI_WARN, "FSS Capture Status: " .. capture_status_enum[capture_status] or "Unknown")
- offset = offset + 1 -- Update offset
- -- FSS Detection Result (1 byte, ENUM)
- local detection_result = buffer(offset, 1):le_uint()
- subtree:add(f_fss_detection_result, detection_result)
- --subtree:add_expert_info(PI_INFO, PI_WARN, "FSS Detection Result: " .. detection_result_enum[detection_result] or "Unknown")
- offset = offset + 1 -- Update offset
- end
- end
- function adcs_dissector_11(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint8("adcs_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_x_axis_nadir_vector = ProtoField.int16("adcs_protocol.x_axis_nadir_vector", "X axis Nadir Vector ", base.DEC)
- local f_y_axis_nadir_vector = ProtoField.int16("adcs_protocol.y_axis_nadir_vector", "Y axis Nadir Vector ", base.DEC)
- local f_z_axis_nadir_vector = ProtoField.int16("adcs_protocol.z_axis_nadir_vector", "Z axis Nadir Vector ", base.DEC)
- -- Add the protocol fields to the protocol
- adcs_protocol.fields = {
- f_operation_status,
- f_epoch_time,
- f_x_axis_nadir_vector,
- f_y_axis_nadir_vector,
- f_z_axis_nadir_vector
- }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 11")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint())
- offset = offset + 1 -- Update offset
- -- Epoch Time (4 bytes, UINT)
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint())
- offset = offset + 4 -- Update offset
- -- X axis Nadir Vector (2 bytes, INT) *0.001 (formatted value)
- local x_axis_raw = buffer(offset, 2):le_int()
- local x_axis_nadir = x_axis_raw * 0.001 -- Apply the formatting to the raw value
- subtree:add(f_x_axis_nadir_vector, x_axis_raw)
- --subtree:add(PI_INFO, PI_WARN, string.format("X axis Nadir vector: %.3f", x_axis_nadir))
- offset = offset + 2 -- Update offset
- -- Y axis Nadir Vector (2 bytes, INT) *0.001 (formatted value)
- local y_axis_raw = buffer(offset, 2):le_int()
- local y_axis_nadir = y_axis_raw * 0.001 -- Apply the formatting to the raw value
- subtree:add(f_y_axis_nadir_vector, y_axis_raw)
- --subtree:add(PI_INFO, PI_WARN, string.format("Y axis Nadir vector: %.3f", y_axis_nadir))
- offset = offset + 2 -- Update offset
- -- Z axis Nadir Vector (2 bytes, INT) *0.001 (formatted value)
- local z_axis_raw = buffer(offset, 2):le_int()
- local z_axis_nadir = z_axis_raw * 0.001 -- Apply the formatting to the raw value
- subtree:add(f_z_axis_nadir_vector, z_axis_raw)
- --subtree:add(PI_INFO, PI_WARN, string.format("Z axis Nadir vector: %.3f", z_axis_nadir))
- offset = offset + 2 -- Update offset
-
- end
- end
- function adcs_dissector_12(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint8("adcs_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_nadir_x_angle = ProtoField.int16("adcs_protocol.nadir_x_angle", "Nadir Sensor Raw X Angle", base.DEC)
- local f_nadir_y_angle = ProtoField.int16("adcs_protocol.nadir_y_angle", "Nadir Sensor Raw Y Angle", base.DEC)
- local f_nadir_capture_status = ProtoField.uint8("adcs_protocol.nadir_capture_status", "Nadir Sensor Capture Status", base.DEC)
- local f_nadir_detection_result = ProtoField.uint8("adcs_protocol.nadir_detection_result", "Nadir Sensor Detection Result", base.DEC)
- -- Add the protocol fields to the protocol
- adcs_protocol.fields = {
- f_operation_status,
- f_epoch_time,
- f_nadir_x_angle,
- f_nadir_y_angle,
- f_nadir_capture_status,
- f_nadir_detection_result
- }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 12")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint())
- offset = offset + 1 -- Update offset
- -- Epoch Time (4 bytes, UINT)
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint())
- offset = offset + 4 -- Update offset
- -- Nadir Sensor Raw X Angle (2 bytes, INT)
- local x_raw = buffer(offset, 2):le_int()
- subtree:add(f_nadir_x_angle, x_raw)
- offset = offset + 2 -- Update offset
- -- Nadir Sensor Raw Y Angle (2 bytes, INT)
- local y_raw = buffer(offset, 2):le_int()
- subtree:add(f_nadir_y_angle, y_raw)
- offset = offset + 2 -- Update offset
- -- Nadir Sensor Capture Status (1 byte, ENUM)
- local capture_status = buffer(offset, 1):le_uint()
- subtree:add(f_nadir_capture_status, capture_status)
- offset = offset + 1 -- Update offset
- -- Nadir Sensor Detection Result (1 byte, ENUM)
- local detection_result = buffer(offset, 1):le_uint()
- subtree:add(f_nadir_detection_result, detection_result)
- offset = offset + 1
- end
- end
- function adcs_dissector_13(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint8("magnetic_field_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("magnetic_field_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_magnetic_field_x = ProtoField.float("adcs_protocol.magnetic_field_x", "X Axis Magnetic Field Vector", base.DEC)
- local f_magnetic_field_y = ProtoField.float("adcs_protocol.magnetic_field_y", "Y Axis Magnetic Field Vector", base.DEC)
- local f_magnetic_field_z = ProtoField.float("adcs_protocol.magnetic_field_z", "Z Axis Magnetic Field Vector", base.DEC)
- -- Add the protocol fields to the protocol
- adcs_protocol.fields = {
- f_operation_status,
- f_epoch_time,
- f_magnetic_field_x,
- f_magnetic_field_y,
- f_magnetic_field_z
- }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 13")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- subtree:add(f_operation_status, buffer(offset, 1):le_uint())
- offset = offset + 1 -- Update offset
- -- Epoch Time (4 bytes, UINT)
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint())
- offset = offset + 4 -- Update offset
- -- X Axis Magnetic Field Vector (2 bytes, INT)
- local x_field = buffer(offset, 2):le_int() -- Apply the scaling factor (RAWVAL * 0.01)
- local x_field1 = x_field * 0.01
- subtree:add(f_magnetic_field_x, x_field1)
- offset = offset + 2 -- Update offset
- -- Y Axis Magnetic Field Vector (2 bytes, INT)
- local y_field = buffer(offset, 2):le_int() -- Apply the scaling factor (RAWVAL * 0.01)
- local y_field1 = y_field * 0.01
- subtree:add(f_magnetic_field_y, y_field1)
- offset = offset + 2 -- Update offset
- -- Z Axis Magnetic Field Vector (2 bytes, INT)
- local z_field = buffer(offset, 2):le_int() -- Apply the scaling factor (RAWVAL * 0.01)
- local z_field1 = y_field * 0.01
- subtree:add(f_magnetic_field_z, z_field1)
- offset = offset + 2 -- Update offset
- end
-
- end
- function adcs_dissector_32(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for each field in the structure
- local f_op_status = ProtoField.uint8("OperationData.op_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("OperationData.epoch_time", "Epoch Time", base.DEC)
- local f_eci_x_velocity = ProtoField.int16("OperationData.eci_x_velocity", "ECI Referenced X Velocity", base.DEC)
- local f_eci_y_velocity = ProtoField.int16("OperationData.eci_y_velocity", "ECI Referenced Y Velocity", base.DEC)
- local f_eci_z_velocity = ProtoField.int16("OperationData.eci_z_velocity", "ECI Referenced Z Velocity", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_eci_x_velocity, f_eci_y_velocity, f_eci_z_velocity
- }
- for i = 1, num_of_instance do
- -- Add the operation data subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte, UINT)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes, UINT)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect ECI X velocity (2 bytes, INT)
- local eci_x_velocity = buffer(offset, 2):le_int()
- subtree:add(f_eci_x_velocity, eci_x_velocity)
- offset = offset + 2
- -- dissect ECI Y velocity (2 bytes, INT)
- local eci_y_velocity = buffer(offset, 2):le_int()
- subtree:add(f_eci_y_velocity, eci_y_velocity)
- offset = offset + 2
- -- dissect ECI Z velocity (2 bytes, INT)
- local eci_z_velocity = buffer(offset, 2):le_int()
- subtree:add(f_eci_z_velocity, eci_z_velocity)
- offset = offset + 2
- end
- end
- --------------------------------------------------------------------------------------------------------------------------------------
- -- Define the dissector function for the Nadir Sensor Data
- -------------------------------------------------------------------------------------------------------------------------
- ---------------------------------------------------------------------------------------------
- --
- ----------------------------------------------------------------------------------------------------------------
- function adcs_dissector_31(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for each field in the structure
- local f_op_status = ProtoField.uint8("OperationCoordinates.op_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("OperationCoordinates.epoch_time", "Epoch Time", base.DEC)
- local f_eci_x_coord = ProtoField.int16("OperationCoordinates.eci_x_coord", "ECI Referenced X Coordinate", base.DEC)
- local f_eci_y_coord = ProtoField.int16("OperationCoordinates.eci_y_coord", "ECI Referenced Y Coordinate", base.DEC)
- local f_eci_z_coord = ProtoField.int16("OperationCoordinates.eci_z_coord", "ECI Referenced Z Coordinate", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_eci_x_coord, f_eci_y_coord, f_eci_z_coord
- }
- for i = 1, num_of_instance do
- -- Add the operation data coordinates subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte, UINT)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes, UINT)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect ECI X coordinate (2 bytes, INT)
- local eci_x_coord = buffer(offset, 2):le_int()
- subtree:add(f_eci_x_coord, eci_x_coord)
- offset = offset + 2
- -- dissect ECI Y coordinate (2 bytes, INT)
- local eci_y_coord = buffer(offset, 2):le_int()
- subtree:add(f_eci_y_coord, eci_y_coord)
- offset = offset + 2
- -- dissect ECI Z coordinate (2 bytes, INT)
- local eci_z_coord = buffer(offset, 2):le_int()
- subtree:add(f_eci_z_coord, eci_z_coord)
- offset = offset + 2
- end
- end
- -------------------------------------------------------------------------------------------------------------
- -- Define the dissector function for the new structure
- function adcs_dissector_30(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("PowerSystemData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("PowerSystemData.epoch_time", "Epoch Time", base.DES)
- local f_x_coord = ProtoField.int16("PowerSystemData.x_coord", "ECEF X Coordinate", base.DEC)
- local f_y_coord = ProtoField.int16("PowerSystemData.y_coord", "ECEF Y Coordinate", base.DEC)
- local f_z_coord = ProtoField.int16("PowerSystemData.z_coord", "ECEF Z Coordinate", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_x_coord, f_y_coord, f_z_coord
- }
- -- Loop through the data (data3 could represent the number of iterations or packets to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect ECEF X coordinate (2 bytes)
- local x_coord = buffer(offset, 2):le_int()
- subtree:add(f_x_coord, x_coord)
- offset = offset + 2
- -- dissect ECEF Y coordinate (2 bytes)
- local y_coord = buffer(offset, 2):le_int()
- subtree:add(f_y_coord, y_coord)
- offset = offset + 2
- -- dissect ECEF Z coordinate (2 bytes)
- local z_coord = buffer(offset, 2):le_int()
- subtree:add(f_z_coord, z_coord)
- offset = offset + 2
- end
- end
- ----------------------------------------------------------------------------------------------------------------------------------
- -- wrong number 29
- -- Define the dissector function for the new structure
- function adcs_dissector_22(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("PowerSystemData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("PowerSystemData.epoch_time", "Epoch Time", base.DES)
- local f_roll_angle = ProtoField.int16("PowerSystemData.roll_angle", "Commanded Roll Angle (degrees)", base.DEC)
- local f_pitch_angle = ProtoField.int16("PowerSystemData.pitch_angle", "Commanded Pitch Angle (degrees)", base.DEC)
- local f_yaw_angle = ProtoField.int16("PowerSystemData.yaw_angle", "Commanded Yaw Angle (degrees)", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_roll_angle, f_pitch_angle, f_yaw_angle
- }
- -- Loop through the data (data3 could represent the number of iterations or packets to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect commanded roll angle (2 bytes)
- local roll_angle_raw = buffer(offset, 2):le_int()
- local roll_angle = roll_angle_raw -- Apply scaling factor
- subtree:add(f_roll_angle, roll_angle)
- offset = offset + 2
- -- dissect commanded pitch angle (2 bytes)
- local pitch_angle_raw = buffer(offset, 2):le_int()
- local pitch_angle = pitch_angle_raw -- Apply scaling factor
- subtree:add(f_pitch_angle, pitch_angle)
- offset = offset + 2
- -- dissect commanded yaw angle (2 bytes)
- local yaw_angle_raw = buffer(offset, 2):le_int()
- local yaw_angle = yaw_angle_raw -- Apply scaling factor
- subtree:add(f_yaw_angle, yaw_angle)
- offset = offset + 2
- end
- end
- ----------------------------------------------------------------------------------------------------------
- -- Define the dissector function for the new structure
- function adcs_dissector_29(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("PowerSystemData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("PowerSystemData.epoch_time", "Epoch Time", base.DES)
- local f_innovation_x = ProtoField.int16("PowerSystemData.innovation_x", "Innovation Vector X", base.DEC)
- local f_innovation_y = ProtoField.int16("PowerSystemData.innovation_y", "Innovation Vector Y", base.DEC)
- local f_innovation_z = ProtoField.int16("PowerSystemData.innovation_z", "Innovation Vector Z", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_innovation_x, f_innovation_y, f_innovation_z
- }
- -- Loop through the data (data3 could represent the number of iterations or packets to dissect)
- for i = 1,num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect innovation vector X (2 bytes)
- local innovation_x_raw = buffer(offset, 2):le_int()
- local innovation_x = innovation_x_raw -- Apply scaling factor
- subtree:add(f_innovation_x, innovation_x)
- offset = offset + 2
- -- dissect innovation vector Y (2 bytes)
- local innovation_y_raw = buffer(offset, 2):le_int()
- local innovation_y = innovation_y_raw -- Apply scaling factor
- subtree:add(f_innovation_y, innovation_y)
- offset = offset + 2
- -- dissect innovation vector Z (2 bytes)
- local innovation_z_raw = buffer(offset, 2):le_int()
- local innovation_z = innovation_z_raw -- Apply scaling factor
- subtree:add(f_innovation_z, innovation_z)
- offset = offset + 2
- end
- end
- ---------------------------------------------------------------------------------------------------
- -- Define the dissector function for the new structure
- function adcs_dissector_28(buffer, pinfo, tree, adcs_protocol, offset,num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("PowerSystemData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("PowerSystemData.epoch_time", "Epoch Time", base.DES)
- local f_x_gyro_bias = ProtoField.int16("PowerSystemData.x_gyro_bias", "Estimated X-Gyro Bias", base.DEC)
- local f_y_gyro_bias = ProtoField.int16("PowerSystemData.y_gyro_bias", "Estimated Y-Gyro Bias", base.DEC)
- local f_z_gyro_bias = ProtoField.int16("PowerSystemData.z_gyro_bias", "Estimated Z-Gyro Bias", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_x_gyro_bias, f_y_gyro_bias, f_z_gyro_bias
- }
- -- Loop through the data (data3 could represent the number of iterations or packets to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect estimated x-gyro bias (2 bytes)
- local x_gyro_bias_raw = buffer(offset, 2):le_int()
- local x_gyro_bias = x_gyro_bias_raw -- Apply scaling factor
- subtree:add(f_x_gyro_bias, x_gyro_bias)
- offset = offset + 2
- -- dissect estimated y-gyro bias (2 bytes)
- local y_gyro_bias_raw = buffer(offset, 2):le_int()
- local y_gyro_bias = y_gyro_bias_raw -- Apply scaling factor
- subtree:add(f_y_gyro_bias, y_gyro_bias)
- offset = offset + 2
- -- dissect estimated z-gyro bias (2 bytes)
- local z_gyro_bias_raw = buffer(offset, 2):le_int()
- local z_gyro_bias = z_gyro_bias_raw -- Apply scaling factor
- subtree:add(f_z_gyro_bias, z_gyro_bias)
- offset = offset + 2
- end
- end
- ----------------------------------------------------------------------------------------------------------------------
- --2.2.1.2.27 ADCS_HM_QUAT_ERR_VEC 26-27
- -- Define the dissector function for the new structure
- function adcs_dissector_27(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("PowerSystemData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("PowerSystemData.epoch_time", "Epoch Time", base.DES)
- local f_q1_error = ProtoField.int16("PowerSystemData.q1_error", "Quaternion Error - Q1", base.DEC)
- local f_q2_error = ProtoField.int16("PowerSystemData.q2_error", "Quaternion Error - Q2", base.DEC)
- local f_q3_error = ProtoField.int16("PowerSystemData.q3_error", "Quaternion Error - Q3", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_q1_error, f_q2_error, f_q3_error
- }
- -- Loop through the data (data3 could represent the number of iterations or packets to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect quaternion error Q1 (2 bytes)
- local q1_error_raw = buffer(offset, 2):le_int()
- local q1_error = q1_error_raw -- Apply scaling factor
- subtree:add(f_q1_error, q1_error)
- offset = offset + 2
- -- dissect quaternion error Q2 (2 bytes)
- local q2_error_raw = buffer(offset, 2):le_int()
- local q2_error = q2_error_raw -- Apply scaling factor
- subtree:add(f_q2_error, q2_error)
- offset = offset + 2
- -- dissect quaternion error Q3 (2 bytes)
- local q3_error_raw = buffer(offset, 2):le_int()
- local q3_error = q3_error_raw -- Apply scaling factor
- subtree:add(f_q3_error, q3_error)
- offset = offset + 2
- end
- end
- -----------------------------------------------------------------------------------------------------------------------------
- --2.2.1.2.26 ADCS_HM_IGRF_MOD_VEC 25-14
- -- Define the dissector function for the new structure
- function adcs_dissector_14(buffer, pinfo, tree, adcs_protocol, offset,num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("PowerSystemData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("PowerSystemData.epoch_time", "Epoch Time", base.DES)
- local f_x_magnetic_field = ProtoField.int16("PowerSystemData.x_magnetic_field", "X axis Modelled Magnetic Field Vector", base.DEC)
- local f_y_magnetic_field = ProtoField.int16("PowerSystemData.y_magnetic_field", "Y axis Modelled Magnetic Field Vector", base.DEC)
- local f_z_magnetic_field = ProtoField.int16("PowerSystemData.z_magnetic_field", "Z axis Modelled Magnetic Field Vector", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_x_magnetic_field, f_y_magnetic_field, f_z_magnetic_field
- }
- -- Loop through the data (data3 could represent the number of iterations or packets to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect x-axis magnetic field vector (2 bytes)
- local x_magnetic_field_raw = buffer(offset, 2):le_int()
- local x_magnetic_field = x_magnetic_field_raw -- Apply scaling factor
- subtree:add(f_x_magnetic_field, x_magnetic_field)
- offset = offset + 2
- -- dissect y-axis magnetic field vector (2 bytes)
- local y_magnetic_field_raw = buffer(offset, 2):le_int()
- local y_magnetic_field = y_magnetic_field_raw -- Apply scaling factor
- subtree:add(f_y_magnetic_field, y_magnetic_field)
- offset = offset + 2
- -- dissect z-axis magnetic field vector (2 bytes)
- local z_magnetic_field_raw = buffer(offset, 2):le_int()
- local z_magnetic_field = z_magnetic_field_raw -- Apply scaling factor
- subtree:add(f_z_magnetic_field, z_magnetic_field)
- offset = offset + 2
- end
- end
- ---------------------------------------------------------------------------------------------------------------------
- --2.2.1.2.25 ADCS_HM_POS_LLH 24-26
- -- Define the dissector function for the new structure
- function adcs_dissector_26(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("PowerSystemData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("PowerSystemData.epoch_time", "Epoch Time", base.DES)
- local f_geo_longitude = ProtoField.int16("PowerSystemData.geo_longitude", "Geocentric Longitude", base.DEC)
- local f_geo_latitude = ProtoField.int16("PowerSystemData.geo_latitude", "Geocentric Latitude", base.DEC)
- local f_geo_altitude = ProtoField.int16("PowerSystemData.geo_altitude", "Geocentric Altitude", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_geo_longitude, f_geo_latitude, f_geo_altitude
- }
- -- Loop through the data (data3 could represent the number of iterations or packets to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect geocentric longitude (2 bytes)
- local geo_longitude_raw = buffer(offset, 2):le_int()
- local geo_longitude = geo_longitude_raw -- Apply scaling factor
- subtree:add(f_geo_longitude, geo_longitude)
- offset = offset + 2
- -- dissect geocentric latitude (2 bytes)
- local geo_latitude_raw = buffer(offset, 2):le_int()
- local geo_latitude = geo_latitude_raw -- Apply scaling factor
- subtree:add(f_geo_latitude, geo_latitude)
- offset = offset + 2
- -- dissect geocentric altitude (2 bytes)
- local geo_altitude_raw = buffer(offset, 2):le_int()
- local geo_altitude = geo_altitude_raw -- Apply scaling factor
- subtree:add(f_geo_altitude, geo_altitude)
- offset = offset + 2
- end
- end
- ----------------------------------------------------------------------------------------------------------
- --2.2.1.2.24 ADCS_HM_RAW_STAR_TRKR_MEAS 23-20
- function adcs_dissector_20(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the updated structure fields
- local f_op_status = ProtoField.uint8("StarTrackerData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("StarTrackerData.epoch_time", "Epoch Time", base.DES)
- local f_num_stars_detected = ProtoField.uint8("StarTrackerData.num_stars_detected", "Number of Stars Detected", base.DES)
- local f_star_image_noise = ProtoField.uint8("StarTrackerData.star_image_noise", "Star Image Noise", base.DES)
- local f_invalid_star = ProtoField.uint8("StarTrackerData.invalid_star", "Invalid Star", base.DES)
- local f_num_stars_identified = ProtoField.uint8("StarTrackerData.num_stars_identified", "Number of Stars Identified", base.DES)
- local f_ident_mode = ProtoField.uint8("StarTrackerData.ident_mode", "Identification Mode", base.ENUM)
- local f_image_dark_value = ProtoField.uint8("StarTrackerData.image_dark_value", "Image Dark Value", base.DES)
- -- Define ProtoFields for flags (1 byte with individual boolean flags)
- local f_flags = ProtoField.uint8("StarTrackerData.flags", "Flags", base.HEX)
- -- Define ProtoFields for star confidence and magnitudes
- local f_star_conf_1 = ProtoField.uint8("StarTrackerData.star_conf_1", "Star 1 Confidence", base.PERCENT)
- local f_star_conf_2 = ProtoField.uint8("StarTrackerData.star_conf_2", "Star 2 Confidence", base.PERCENT)
- local f_star_conf_3 = ProtoField.uint8("StarTrackerData.star_conf_3", "Star 3 Confidence", base.PERCENT)
- -- Define ProtoFields for instrument magnitudes
- local f_instrument_mag_1 = ProtoField.uint16("StarTrackerData.instrument_mag_1", "Instrument Magnitude Star 1", base.DEC)
- local f_instrument_mag_2 = ProtoField.uint16("StarTrackerData.instrument_mag_2", "Instrument Magnitude Star 2", base.DEC)
- local f_instrument_mag_3 = ProtoField.uint16("StarTrackerData.instrument_mag_3", "Instrument Magnitude Star 3", base.DEC)
- -- Define ProtoFields for capture, detection, and identification
- local f_capture = ProtoField.uint16("StarTrackerData.capture", "Capture", base.DEC)
- local f_detection = ProtoField.uint16("StarTrackerData.detection", "Detection", base.DEC)
- local f_identification = ProtoField.uint16("StarTrackerData.identification", "Identification", base.DEC)
- -- Define ProtoFields for the estimated rates and attitudes (X, Y, Z axes, Q1, Q2, Q3)
- local f_est_rate_x = ProtoField.int16("StarTrackerData.est_rate_x", "Estimated Rate X-axis", base.DEC)
- local f_est_rate_y = ProtoField.int16("StarTrackerData.est_rate_y", "Estimated Rate Y-axis", base.DEC)
- local f_est_rate_z = ProtoField.int16("StarTrackerData.est_rate_z", "Estimated Rate Z-axis", base.DEC)
- local f_est_attitude_q1 = ProtoField.int16("StarTrackerData.est_attitude_q1", "Estimated Attitude Q1", base.DEC)
- local f_est_attitude_q2 = ProtoField.int16("StarTrackerData.est_attitude_q2", "Estimated Attitude Q2", base.DEC)
- local f_est_attitude_q3 = ProtoField.int16("StarTrackerData.est_attitude_q3", "Estimated Attitude Q3", base.DEC)
- -- Define ProtoFields for star catalog and centroid information
- local f_catalogue_number = ProtoField.uint16("StarTrackerData.catalogue_number", "Catalogue Number of Star", base.DEC)
- local f_x_centroid = ProtoField.int16("StarTrackerData.x_centroid", "X Centroid of Star", base.DEC)
- local f_y_centroid = ProtoField.int16("StarTrackerData.y_centroid", "Y Centroid of Star", base.DEC)
- -- Define ProtoField for sample period
- local f_sample_period = ProtoField.uint16("StarTrackerData.sample_period", "Sample Period", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_num_stars_detected, f_star_image_noise, f_invalid_star,
- f_num_stars_identified, f_ident_mode, f_image_dark_value, f_flags,
- f_star_conf_1, f_star_conf_2, f_star_conf_3,
- f_instrument_mag_1, f_instrument_mag_2, f_instrument_mag_3,
- f_capture, f_detection, f_identification,
- f_est_rate_x, f_est_rate_y, f_est_rate_z,
- f_est_attitude_q1, f_est_attitude_q2, f_est_attitude_q3,
- f_catalogue_number, f_x_centroid, f_y_centroid, f_sample_period
- }
- -- Loop through the data (data3 could represent the number of iterations or packets to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect number of stars detected (1 byte)
- local num_stars_detected = buffer(offset, 1):le_uint()
- subtree:add(f_num_stars_detected, num_stars_detected)
- offset = offset + 1
- -- dissect star image noise (1 byte)
- local star_image_noise = buffer(offset, 1):le_uint()
- subtree:add(f_star_image_noise, star_image_noise)
- offset = offset + 1
- -- dissect invalid star (1 byte)
- local invalid_star = buffer(offset, 1):le_uint()
- subtree:add(f_invalid_star, invalid_star)
- offset = offset + 1
- -- dissect number of stars identified (1 byte)
- local num_stars_identified = buffer(offset, 1):le_uint()
- subtree:add(f_num_stars_identified, num_stars_identified)
- offset = offset + 1
- -- dissect identification mode (1 byte, enum)
- local ident_mode = buffer(offset, 1):le_uint()
- subtree:add(f_ident_mode, ident_mode)
- offset = offset + 1
- -- dissect image dark value (1 byte)
- local image_dark_value = buffer(offset, 1):le_uint()
- subtree:add(f_image_dark_value, image_dark_value)
- offset = offset + 1
- -- dissect flags (8 flags, 1 byte)
- local flags = buffer(offset, 1):le_uint()
- subtree:add(f_flags, flags) -- in this each bit represents a value
- offset = offset + 1
- -- dissect star confidences (1 byte each)
- local star_conf_1 = buffer(offset, 1):le_uint()
- subtree:add(f_star_conf_1, star_conf_1)
- offset = offset + 1
- local star_conf_2 = buffer(offset, 1):le_uint()
- subtree:add(f_star_conf_2, star_conf_2)
- offset = offset + 1
- local star_conf_3 = buffer(offset, 1):le_uint()
- subtree:add(f_star_conf_3, star_conf_3)
- offset = offset + 1
- -- dissect instrument magnitudes (2 bytes each)
- local instrument_mag_1 = buffer(offset, 2):le_uint()
- subtree:add(f_instrument_mag_1, instrument_mag_1)
- offset = offset + 2
- local instrument_mag_2 = buffer(offset, 2):le_uint()
- subtree:add(f_instrument_mag_2, instrument_mag_2)
- offset = offset + 2
- local instrument_mag_3 = buffer(offset, 2):le_uint()
- subtree:add(f_instrument_mag_3, instrument_mag_3)
- offset = offset + 2
- -- dissect capture, detection, and identification (2 bytes each)
- local capture = buffer(offset, 2):le_uint()
- subtree:add(f_capture, capture)
- offset = offset + 2
- local detection = buffer(offset, 2):le_uint()
- subtree:add(f_detection, detection)
- offset = offset + 2
- local identification = buffer(offset, 2):le_uint()
- subtree:add(f_identification, identification)
- offset = offset + 2
- -- dissect estimated rate X-axis, Y-axis, Z-axis (2 bytes each)
- local est_rate_x_raw = buffer(offset, 2):le_int()
- local est_rate_x = est_rate_x_raw -- Apply scaling factor
- subtree:add(f_est_rate_x, est_rate_x)
- offset = offset + 2
- local est_rate_y_raw = buffer(offset, 2):le_int()
- local est_rate_y = est_rate_y_raw -- Apply scaling factor
- subtree:add(f_est_rate_y, est_rate_y)
- offset = offset + 2
- local est_rate_z_raw = buffer(offset, 2):le_int()
- local est_rate_z = est_rate_z_raw -- Apply scaling factor
- subtree:add(f_est_rate_z, est_rate_z)
- offset = offset + 2
- -- dissect estimated attitude (Q1, Q2, Q3)
- local est_attitude_q1_raw = buffer(offset, 2):le_int()
- local est_attitude_q1 = est_attitude_q1_raw -- Apply scaling factor
- subtree:add(f_est_attitude_q1, est_attitude_q1)
- offset = offset + 2
- local est_attitude_q2_raw = buffer(offset, 2):le_int()
- local est_attitude_q2 = est_attitude_q2_raw -- Apply scaling factor
- subtree:add(f_est_attitude_q2, est_attitude_q2)
- offset = offset + 2
- local est_attitude_q3_raw = buffer(offset, 2):le_int()
- local est_attitude_q3 = est_attitude_q3_raw -- Apply scaling factor
- subtree:add(f_est_attitude_q3, est_attitude_q3)
- offset = offset + 2
- -- dissect catalogue number (2 bytes)
- local catalogue_number = buffer(offset, 2):le_uint()
- subtree:add(f_catalogue_number, catalogue_number)
- offset = offset + 2
- -- dissect centroids (X, Y)
- local x_centroid = buffer(offset, 2):le_int()
- subtree:add(f_x_centroid, x_centroid)
- offset = offset + 2
- local y_centroid = buffer(offset, 2):le_int()
- subtree:add(f_y_centroid, y_centroid)
- offset = offset + 2
- -- dissect sample period (2 bytes)
- local sample_period = buffer(offset, 2):le_uint()
- subtree:add(f_sample_period, sample_period)
- offset = offset + 2
- end
- end
- -------------------------------------------------------------------------------------------------------------------------------
- ------------------------------------------------------------------------------------------------------------------------------------------
- --2.2.1.2.22 ADCS_HM_MGTRQR_CMD 21-25
- -- Define the dissector function for the Magnetorquer data
- function adcs_dissector_25(buffer, pinfo, tree,adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("MagnetorquerData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("MagnetorquerData.epoch_time", "Epoch Time", base.DES)
- local f_x_magnetorquer_time = ProtoField.int16("MagnetorquerData.x_magnetorquer_time", "X Magnetorquer Commanded On-time (10ms)", base.DEC)
- local f_y_magnetorquer_time = ProtoField.int16("MagnetorquerData.y_magnetorquer_time", "Y Magnetorquer Commanded On-time (10ms)", base.DEC)
- local f_z_magnetorquer_time = ProtoField.int16("MagnetorquerData.z_magnetorquer_time", "Z Magnetorquer Commanded On-time (10ms)", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_x_magnetorquer_time, f_y_magnetorquer_time, f_z_magnetorquer_time
- }
- for i = 1,num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect X Magnetorquer Commanded on-time (2 bytes)
- local x_magnetorquer_time = buffer(offset, 2):le_int()
- subtree:add(f_x_magnetorquer_time, x_magnetorquer_time)
- offset = offset + 2
- -- dissect Y Magnetorquer Commanded on-time (2 bytes)
- local y_magnetorquer_time = buffer(offset, 2):le_int()
- subtree:add(f_y_magnetorquer_time, y_magnetorquer_time)
- offset = offset + 2
- -- dissect Z Magnetorquer Commanded on-time (2 bytes)
- local z_magnetorquer_time = buffer(offset, 2):le_int()
- subtree:add(f_z_magnetorquer_time, z_magnetorquer_time)
- offset = offset + 2
- end
- end
- -----------------------------------------------------------------------------------------
- --2.2.1.2.21 ADCS_HM_RW_SPEED_CMD 20-24
- -- Define the dissector function for the Reaction Wheel data
- function adcs_dissector_24(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("ReactionWheelData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("ReactionWheelData.epoch_time", "Epoch Time", base.DES)
- local f_num_reaction_wheels = ProtoField.uint8("ReactionWheelData.num_reaction_wheels", "Number of Reaction Wheels", base.DES)
- local f_wheel_speed = ProtoField.uint16("ReactionWheelData.wheel_speed_", "Measured Wheel Speed ", base.DEC)
- -- Define the ProtoField for the array of Measured Wheel Speeds (N = 3, each 2 bytes)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_num_reaction_wheels, f_wheel_speed
- }
- for i = 1,num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect number of reaction wheels (1 byte)
- local num_reaction_wheels = buffer(offset, 1):le_uint()
- subtree:add(f_num_reaction_wheels, num_reaction_wheels)
- offset = offset + 1
- -- dissect wheel speeds (array of N * 2 bytes, with N = 3)
- for i = 1, 3 do
- local wheel_speed = buffer(offset, 2):le_uint()
- subtree:add(f_wheel_speed, wheel_speed)
- offset = offset + 2
- end
- end
- end
- -----------------------------------------------------------------------------------------------------------
- --2.2.1.2.20 ADCS_HM_MEAS_RW_SPEED 19-23
- -- Define the dissector function for the Reaction Wheel Commanded Speed data
- function adcs_dissector_23(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the new structure fields
- local f_op_status = ProtoField.uint8("ReactionWheelData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("ReactionWheelData.epoch_time", "Epoch Time", base.DES)
- local f_num_reaction_wheels = ProtoField.uint8("ReactionWheelData.num_reaction_wheels", "Number of Reaction Wheels", base.DES)
- local f_wheel_speed_cmd = ProtoField.uint16("ReactionWheelData.wheel_speed_cmd_","Commanded Wheel Speed ", base.DEC)
- -- Define the ProtoField for the array of Commanded Wheel Speeds (N = 3, each 2 bytes)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_num_reaction_wheels,f_wheel_speed_cmd
- }
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect number of reaction wheels (1 byte)
- local num_reaction_wheels = buffer(offset, 1):le_uint()
- subtree:add(f_num_reaction_wheels, num_reaction_wheels)
- offset = offset + 1
- -- dissect commanded wheel speeds (array of N * 2 bytes, with N = 3)
- for i = 1, 3 do -- value 3 is fixed in structure
- local wheel_speed_cmd = buffer(offset, 2):le_uint()
- subtree:add(f_wheel_speed_cmd, wheel_speed_cmd)
- offset = offset + 2
- end
- end
- end
- -----------------------------------------------------------------------------------------------------------------
- --------------------------------------------------------------------------------------------------------
- --2.2.1.2.15 ADCS_HM_FINE_EST_ANG_RATES 14-19
- -- Define the dissector function for the Fine Estimated Angular Rates Data
- function adcs_dissector_19(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the Fine Estimated Angular Rates structure
- local f_op_status = ProtoField.uint8("AngularRateData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("AngularRateData.epoch_time", "Epoch Time", base.DES)
- local f_x_angular_rate = ProtoField.int16("AngularRateData.x_angular_rate", "Fine Estimated X Angular Rate", base.DEC)
- local f_y_angular_rate = ProtoField.int16("AngularRateData.y_angular_rate", "Fine Estimated Y Angular Rate", base.DEC)
- local f_z_angular_rate = ProtoField.int16("AngularRateData.z_angular_rate", "Fine Estimated Z Angular Rate", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_x_angular_rate, f_y_angular_rate, f_z_angular_rate
- }
- for i = 1, num_of_instance do
- -- Add the Fine Estimated Angular Rates data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect Fine Estimated X Angular Rate (2 bytes, formatted value = RAWVAL*0.001)
- local x_angular_rate = buffer(offset, 2):le_int()
- subtree:add(f_x_angular_rate, x_angular_rate)
- offset = offset + 2
- -- dissect Fine Estimated Y Angular Rate (2 bytes, formatted value = RAWVAL*0.001)
- local y_angular_rate = buffer(offset, 2):le_int()
- subtree:add(f_y_angular_rate, y_angular_rate)
- offset = offset + 2
- -- dissect Fine Estimated Z Angular Rate (2 bytes, formatted value = RAWVAL*0.001)
- local z_angular_rate = buffer(offset, 2):le_int()
- subtree:add(f_z_angular_rate, z_angular_rate)
- offset = offset + 2
- end
- end
- -----------------------------------------------------------------------------------------------------------
- --2.2.1.2.13 ADCS_HM_RATE_SENSOR_TEMPERATURE
- -- Define the dissector function for the Rate Sensor Temperature Data
- function adcs_dissector_12(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the structure (adjust names as per your needs)
- local f_op_status = ProtoField.uint8("RateSensorData.op_status", "Operation Status", base.HEX)
- local f_epoch_time = ProtoField.uint32("RateSensorData.epoch_time", "Epoch Time", base.DEC)
- local f_x_rate_temp = ProtoField.int16("RateSensorData.x_rate_temp", "X Rate Sensor Temperature", base.DEC)
- local f_y_rate_temp = ProtoField.int16("RateSensorData.y_rate_temp", "Y Rate Sensor Temperature", base.DEC)
- local f_z_rate_temp = ProtoField.int16("RateSensorData.z_rate_temp", "Z Rate Sensor Temperature", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_x_rate_temp, f_y_rate_temp, f_z_rate_temp
- }
- -- Loop to process multiple data3 (if needed, as per your structure)
- for i = 1, num_of_instance do
- -- Add the data structure as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect X Rate Sensor Temperature (2 bytes, formatted value = RAWVAL)
- local x_rate_temp = buffer(offset, 2):le_int()
- subtree:add(f_x_rate_temp, x_rate_temp)
- offset = offset + 2
- -- dissect Y Rate Sensor Temperature (2 bytes, formatted value = RAWVAL)
- local y_rate_temp = buffer(offset, 2):le_int()
- subtree:add(f_y_rate_temp, y_rate_temp)
- offset = offset + 2
- -- dissect Z Rate Sensor Temperature (2 bytes, formatted value = RAWVAL)
- local z_rate_temp = buffer(offset, 2):le_int()
- subtree:add(f_z_rate_temp, z_rate_temp)
- offset = offset + 2
- end
- end
- --------------------------------------------------------------------------------------------------------------------
- --2.2.1.2.12 ADCS_HM_TEMPERATURE
- -- Define the dissector function for the Sensor Temperature Data
- function adcs_dissector_11(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the structure (adjust names as needed)
- local f_op_status = ProtoField.uint8("SensorTemperatureData.op_status", "Operation Status", base.HEX)
- local f_epoch_time = ProtoField.uint32("SensorTemperatureData.epoch_time", "Epoch Time", base.DEC)
- local f_mcu_temp = ProtoField.int16("SensorTemperatureData.mcu_temp", "MCU Temperature", base.DEC)
- local f_mag_temp = ProtoField.int16("SensorTemperatureData.mag_temp", "Magnetometer Temperature", base.DEC)
- local f_red_mag_temp = ProtoField.int16("SensorTemperatureData.red_mag_temp", "Redundant Magnetometer Temperature", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_mcu_temp, f_mag_temp, f_red_mag_temp
- }
- -- Loop to process multiple data3 (if needed, as per your structure)
- for i = 1, num_of_instance do
- -- Add the data structure as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect MCU Temperature (2 bytes, formatted value = RAWVAL)
- local mcu_temp = buffer(offset, 2):le_int()
- subtree:add(f_mcu_temp, mcu_temp)
- offset = offset + 2
- -- dissect Magnetometer Temperature (2 bytes, formatted value = RAWVAL*0.1)
- local mag_temp = buffer(offset, 2):le_int()
- local formatted_mag_temp = mag_temp
- subtree:add(f_mag_temp, formatted_mag_temp)
- offset = offset + 2
- -- dissect Redundant Magnetometer Temperature (2 bytes, formatted value = RAWVAL*0.1)
- local red_mag_temp = buffer(offset, 2):le_int()
- local formatted_red_mag_temp = red_mag_temp
- subtree:add(f_red_mag_temp, formatted_red_mag_temp)
- offset = offset + 2
- end
- end
- ----------------------------------------------------------------------------------------------------------------------
- function adcs_dissector_21(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- local f_operation_status = ProtoField.uint32("adcs_protocol.operation_status", "Operation Status", base.DEC)
- local f_epoch_time = ProtoField.uint32("adcs_protocol.epoch_time", "Epoch Time", base.DEC)
- local f_mcu_temperature = ProtoField.int16("adcs_protocol.mcu_temperature", "MCU Temperature ", base.DEC)
- local f_magnetometer_temperature = ProtoField.int16("adcs_protocol.magnetometer_temperature", "Magnetometer Temperature ", base.DEC)
- local f_redundant_magnetometer_temperature = ProtoField.int16("adcs_protocol.redundant_magnetometer_temperature", "Redundant Magnetometer Temperature ", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = { f_operation_status, f_epoch_time, f_mcu_temperature, f_magnetometer_temperature, f_redundant_magnetometer_temperature }
- --local subtree = tree:add(adcs_protocol, buffer(),"ADCS queue id 21")
-
- for i = 0, num_of_instance - 1 do
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
-
- subtree:add(f_operation_status, buffer(offset, 1):le_uint()) -- 1 bytes for Operation Status (UINT)
- offset = offset + 1
-
- subtree:add(f_epoch_time, buffer(offset, 4):le_uint()) -- 4 bytes for Epoch Time (UINT)
- offset = offset + 4
-
- -- Extract raw values for the temperatures (2 bytes each for INT)
- local mcu_temp = buffer(offset, 2):le_uint() * 0.01
- offset = offset + 2
-
- local magnetometer_temp = buffer(offset, 2):le_uint() * 0.01
- offset = offset + 2
-
- local redundant_magnetometer_temp = buffer(offset, 2):le_uint() * 0.01
- offset = offset + 2
-
- -- Add the temperature values to the tree with scaling applied
- subtree:add(f_mcu_temperature, mcu_temp)
- subtree:add(f_magnetometer_temperature, magnetometer_temp)
- subtree:add(f_redundant_magnetometer_temperature, redundant_magnetometer_temp)
- end
- end
- ---------------------------------------------------------------------------------------------------------------------------------------
- function adcs_dissector_18(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the updated structure fields
- local f_op_status = ProtoField.uint8("StarTrackerData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("StarTrackerData.epoch_time", "Epoch Time", base.DES)
- local f_est_rate_x = ProtoField.int16("StarTrackerData.est_rate_x", "Estimated X Angular Rate", base.DEC)
- local f_est_rate_y = ProtoField.int16("StarTrackerData.est_rate_y", "Estimated Y Angular Rate", base.DEC)
- local f_est_rate_z = ProtoField.int16("StarTrackerData.est_rate_z", "Estimated Z Angular Rate", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_est_rate_x, f_est_rate_y, f_est_rate_z
- }
- -- Loop through the data (num_of_instance represents the number of instances to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect estimated X angular rate (2 bytes)
- local est_rate_x_raw = buffer(offset, 2):le_int()
- local est_rate_x = est_rate_x_raw -- Apply scaling factor
- subtree:add(f_est_rate_x, est_rate_x)
- offset = offset + 2
- -- dissect estimated Y angular rate (2 bytes)
- local est_rate_y_raw = buffer(offset, 2):le_int()
- local est_rate_y = est_rate_y_raw -- Apply scaling factor
- subtree:add(f_est_rate_y, est_rate_y)
- offset = offset + 2
- -- dissect estimated Z angular rate (2 bytes)
- local est_rate_z_raw = buffer(offset, 2):le_int()
- local est_rate_z = est_rate_z_raw -- Apply scaling factor
- subtree:add(f_est_rate_z, est_rate_z)
- offset = offset + 2
- end
- end
- ------------------------------------------------------------------------------------------------
- function adcs_dissector_17(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the updated structure fields
- local f_op_status = ProtoField.uint8("StarTrackerData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("StarTrackerData.epoch_time", "Epoch Time", base.DES)
- local f_raw_rate_x = ProtoField.int16("StarTrackerData.raw_rate_x", "X Axis Raw Rate Sensor Measurement", base.DEC)
- local f_raw_rate_y = ProtoField.int16("StarTrackerData.raw_rate_y", "Y Axis Raw Rate Sensor Measurement", base.DEC)
- local f_raw_rate_z = ProtoField.int16("StarTrackerData.raw_rate_z", "Z Axis Raw Rate Sensor Measurement", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_raw_rate_x, f_raw_rate_y, f_raw_rate_z
- }
- -- Loop through the data (num_of_instance represents the number of instances to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect X axis raw rate sensor measurement (2 bytes)
- local raw_rate_x = buffer(offset, 2):le_int()
- subtree:add(f_raw_rate_x, raw_rate_x)
- offset = offset + 2
- -- dissect Y axis raw rate sensor measurement (2 bytes)
- local raw_rate_y = buffer(offset, 2):le_int()
- subtree:add(f_raw_rate_y, raw_rate_y)
- offset = offset + 2
- -- dissect Z axis raw rate sensor measurement (2 bytes)
- local raw_rate_z = buffer(offset, 2):le_int()
- subtree:add(f_raw_rate_z, raw_rate_z)
- offset = offset + 2
- end
- end
- ---------------------------------------------------------------------------------------------------------------
- function adcs_dissector_16(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the updated structure fields
- local f_op_status = ProtoField.uint8("StarTrackerData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("StarTrackerData.epoch_time", "Epoch Time", base.DES)
- local f_measured_rate_x = ProtoField.int16("StarTrackerData.measured_rate_x", "Measured X Axis Rate", base.DEC)
- local f_measured_rate_y = ProtoField.int16("StarTrackerData.measured_rate_y", "Measured Y Axis Rate", base.DEC)
- local f_measured_rate_z = ProtoField.int16("StarTrackerData.measured_rate_z", "Measured Z Axis Rate", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_measured_rate_x, f_measured_rate_y, f_measured_rate_z
- }
- -- Loop through the data (num_of_instance represents the number of instances to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect measured X axis rate (2 bytes), scaled by 0.01
- local measured_rate_x_raw = buffer(offset, 2):le_int()
- local measured_rate_x = measured_rate_x_raw -- Apply scaling factor
- subtree:add(f_measured_rate_x, measured_rate_x)
- offset = offset + 2
- -- dissect measured Y axis rate (2 bytes), scaled by 0.01
- local measured_rate_y_raw = buffer(offset, 2):le_int()
- local measured_rate_y = measured_rate_y_raw -- Apply scaling factor
- subtree:add(f_measured_rate_y, measured_rate_y)
- offset = offset + 2
- -- dissect measured Z axis rate (2 bytes), scaled by 0.01
- local measured_rate_z_raw = buffer(offset, 2):le_int()
- local measured_rate_z = measured_rate_z_raw -- Apply scaling factor
- subtree:add(f_measured_rate_z, measured_rate_z)
- offset = offset + 2
- end
- end
- ------------------------------------------------------------------------------------------------------------------
- function adcs_dissector_15(buffer, pinfo, tree, adcs_protocol, offset, num_of_instance)
- -- Define ProtoFields for the updated structure fields
- local f_op_status = ProtoField.uint8("StarTrackerData.op_status", "Operation Status", base.DES)
- local f_epoch_time = ProtoField.uint32("StarTrackerData.epoch_time", "Epoch Time", base.DES)
- local f_raw_mag_x = ProtoField.int16("StarTrackerData.raw_mag_x", "Raw Magnetometer X Measurement", base.DEC)
- local f_raw_mag_y = ProtoField.int16("StarTrackerData.raw_mag_y", "Raw Magnetometer Y Measurement", base.DEC)
- local f_raw_mag_z = ProtoField.int16("StarTrackerData.raw_mag_z", "Raw Magnetometer Z Measurement", base.DEC)
- -- Add the fields to the protocol
- adcs_protocol.fields = {
- f_op_status, f_epoch_time, f_raw_mag_x, f_raw_mag_y, f_raw_mag_z
- }
- -- Loop through the data (num_of_instance represents the number of instances to dissect)
- for i = 1, num_of_instance do
- -- Add the new structure data as a subtree
- local subtree = tree:add(adcs_protocol, buffer(), "INSTANCE" ..i)
- -- dissect operation status (1 byte)
- local op_status = buffer(offset, 1):le_uint()
- subtree:add(f_op_status, op_status)
- offset = offset + 1
- -- dissect epoch time (4 bytes)
- local epoch_time = buffer(offset, 4):le_uint()
- subtree:add(f_epoch_time, epoch_time)
- offset = offset + 4
- -- dissect raw magnetometer X measurement (2 bytes)
- local raw_mag_x = buffer(offset, 2):le_int()
- subtree:add(f_raw_mag_x, raw_mag_x)
- offset = offset + 2
- -- dissect raw magnetometer Y measurement (2 bytes)
- local raw_mag_y = buffer(offset, 2):le_int()
- subtree:add(f_raw_mag_y, raw_mag_y)
- offset = offset + 2
- -- dissect raw magnetometer Z measurement (2 bytes)
- local raw_mag_z = buffer(offset, 2):le_int()
- subtree:add(f_raw_mag_z, raw_mag_z)
- offset = offset + 2
- end
- end
- --------------------------------------------------------------------------------------------------------
|