123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- function UHF_DISSECTOR(buffer, pinfo, tree, HM_TM_dissector, offset, tm_len,data3)
- -- UHF_DISSECTOR(buffer, pinfo, tree, TC_TM_PROTOCOL, offset, tm_len,data3)
- -- Define ProtoFields for each element of the structure (like in your original example)
- local f_cnt_hk_str = ProtoField.uint8("TC_TM_PROTOCOL.cnt_hk_str", "cnt_hk_str", base.DEC)
- local f_timestamp = ProtoField.uint32("TC_TM_PROTOCOL.timestamp1", "timestamp", base.DEC)
- local f_uptime = ProtoField.uint32("TC_TM_PROTOCOL.uptime", "Uptime", base.DEC)
- local f_uarto_rx_count = ProtoField.uint32("TC_TM_PROTOCOL.uarto_rx_count", "UART0 RX Count", base.DEC)
- local f_uart1_rx_count = ProtoField.uint32("TC_TM_PROTOCOL.uart1_rx_count", "UART1 RX Count", base.DEC)
- local f_rx_mode = ProtoField.uint8("TC_TM_PROTOCOL.rx_mode", "RX Mode", base.DEC)
- local f_tx_mode = ProtoField.uint8("TC_TM_PROTOCOL.tx_mode", "TX Mode", base.DEC)
- local f_adc = ProtoField.uint16("TC_TM_PROTOCOL.adc", "ADC", base.DEC) -- array of int16_t[10]
- local f_last_rssi = ProtoField.uint8("TC_TM_PROTOCOL.last_rssi", "Last RSSI", base.DEC)
- local f_last_lqi = ProtoField.uint8("TC_TM_PROTOCOL.last_lqi", "Last LQI", base.DEC)
- local f_last_freqest = ProtoField.uint8("TC_TM_PROTOCOL.last_freqest", "Last Frequency Estimate", base.DEC)
- local f_pkt_sent = ProtoField.uint32("TC_TM_PROTOCOL.Pkt_sent", "Packets Sent", base.DEC)
- local f_cs_count = ProtoField.uint32("TC_TM_PROTOCOL.cs_count", "CS Count", base.DEC)
- local f_pkt_good = ProtoField.uint32("TC_TM_PROTOCOL.Pkt_good", "Packets Good", base.DEC)
- local f_pkt_rejected_checksum = ProtoField.uint32("TC_TM_PROTOCOL.Pkt_rejected_checksum", "Packets Rejected (Checksum)", base.DEC)
- local f_pkt_rejected_reserved = ProtoField.uint32("TC_TM_PROTOCOL.Pkt_rejected_reserved", "Packets Rejected (Reserved)", base.DEC)
- local f_pkt_rejected_other = ProtoField.uint32("TC_TM_PROTOCOL.Pkt_rejected_other", "Packets Rejected (Other)", base.DEC)
- local f_reserved0 = ProtoField.uint32("TC_TM_PROTOCOL.reserved0", "Reserved0", base.DEC)
- -- local f_reserved1 = ProtoField.uint32("TC_TM_PROTOCOL.reserved1", "Reserved1", base.DEC) -- Uncomment if needed
- local f_customo = ProtoField.uint32("TC_TM_PROTOCOL.customo", "Custom 0", base.DEC)
- local f_custom1 = ProtoField.uint32("TC_TM_PROTOCOL.custom1", "Custom 1", base.DEC)
- -- Add the fields to the protocol
- HM_TM_dissector.fields = {
- f_timestamp,
- f_cnt_hk_str,
- f_uptime,
- f_uarto_rx_count,
- f_uart1_rx_count,
- f_rx_mode,
- f_tx_mode,
- f_adc,
- f_last_rssi,
- f_last_lqi,
- f_last_freqest,
- f_pkt_sent,
- f_cs_count,
- f_pkt_good,
- f_pkt_rejected_checksum,
- f_pkt_rejected_reserved,
- f_pkt_rejected_other,
- f_reserved0,
- -- f_reserved1, -- Uncomment if you want to include reserved1
- f_customo,
- f_custom1
- }
- local subtree = tree:add(TC_TM_PROTOCOL, buffer(), "UHF")
- -- For your dissection function (within a loop structure)
- for i = 0, data3 - 1 do
- --offset = offset + 8
- local subtree1 = subtree:add(TC_TM_PROTOCOL, buffer(), "Instance "..i)
-
- --local a = buffer(offset, 1):le_uint()
- --subtree1:add(f_cnt_hk_str, a)
- --offset = offset + 1
-
- local b = buffer(offset, 4):le_uint()
- subtree1:add(f_timestamp, b)
- offset = offset + 8
- --b = buffer(offset, 4):le_uint()
- --subtree1:add(f_timestamp, b)
- --offset = offset + 4
- -- dissect uptime
- local uptime = buffer(offset, 4):le_uint()
- subtree1:add(f_uptime, uptime)
- offset = offset + 4
- -- dissect uarto_rx_count
- local uarto_rx_count = buffer(offset, 4):le_uint()
- subtree1:add(f_uarto_rx_count, uarto_rx_count)
- offset = offset + 4
- -- dissect uart1_rx_count
- local uart1_rx_count = buffer(offset, 4):le_uint()
- subtree1:add(f_uart1_rx_count, uart1_rx_count)
- offset = offset + 4
- -- dissect rx_mode
- local rx_mode = buffer(offset, 1):le_uint()
- subtree1:add(f_rx_mode, rx_mode)
- offset = offset + 1
- -- dissect tx_mode
- local tx_mode = buffer(offset, 1):le_uint()
- subtree1:add(f_tx_mode, tx_mode)
- offset = offset + 1
- -- dissect adc (array of int16, loop through based on 10 elements)
- for j = 1, 10 do
- local adc_value = buffer(offset, 2):le_int()
- subtree1:add(f_adc, adc_value)
- offset = offset + 2
- end
- -- dissect last_rssi
- local last_rssi = buffer(offset, 1):le_int()
- subtree1:add(f_last_rssi, last_rssi)
- offset = offset + 1
- -- dissect last_lqi
- local last_lqi = buffer(offset, 1):le_uint()
- subtree1:add(f_last_lqi, last_lqi)
- offset = offset + 1
- -- dissect last_freqest
- local last_freqest = buffer(offset, 1):le_int()
- subtree1:add(f_last_freqest, last_freqest)
- offset = offset + 1
- -- dissect Pkt_sent
- local pkt_sent = buffer(offset, 4):le_uint()
- subtree1:add(f_pkt_sent, pkt_sent)
- offset = offset + 4
- -- dissect cs_count
- local cs_count = buffer(offset, 4):le_uint()
- subtree1:add(f_cs_count, cs_count)
- offset = offset + 4
- -- dissect Pkt_good
- local pkt_good = buffer(offset, 4):le_uint()
- subtree1:add(f_pkt_good, pkt_good)
- offset = offset + 4
- -- dissect Pkt_rejected_checksum
- local pkt_rejected_checksum = buffer(offset, 4):le_uint()
- subtree1:add(f_pkt_rejected_checksum, pkt_rejected_checksum)
- offset = offset + 4
- -- dissect Pkt_rejected_reserved
- local pkt_rejected_reserved = buffer(offset, 4):le_uint()
- subtree1:add(f_pkt_rejected_reserved, pkt_rejected_reserved)
- offset = offset + 4
- -- dissect Pkt_rejected_other
- local pkt_rejected_other = buffer(offset, 4):le_uint()
- subtree1:add(f_pkt_rejected_other, pkt_rejected_other)
- offset = offset + 4
- -- dissect reserved0
- local reserved0 = buffer(offset, 4):le_uint()
- subtree1:add(f_reserved0, reserved0)
- offset = offset + 9
- -- dissect customo
- --local customo = buffer(offset, 4):le_uint()
- --subtree1:add(f_customo, customo)
- --offset = offset + 4
- -- dissect custom1
- --local custom1 = buffer(offset, 4):le_uint()
- --subtree1:add(f_custom1, custom1)
- --offset = offset + 4
- -- (continue for any other fields you want to dissect, e.g., reserved1 if needed)
- end
- end
|