Browse Source

add sensor dissector

priyadharsan 3 months ago
parent
commit
4b81874e03
2 changed files with 573 additions and 1 deletions
  1. 7 1
      Dissector/hm_dissector.lua
  2. 566 0
      Dissector/sensor_dissector.lua

+ 7 - 1
Dissector/hm_dissector.lua

@@ -76,13 +76,19 @@ TC_TM_PROTOCOL.fields = { f_sub_mod_id, f_Queue_id, f_num_of_instance, f_Health_
       	adcs_dissector(buffer, pinfo, subtree1, TC_TM_PROTOCOL, offset, num_of_instance, queue_id)
      elseif submodule_id == 3  then
         require("uhf_dissector")
-      UHF_DISSECTOR(buffer, pinfo, subtree1, TC_TM_PROTOCOL, offset, tm_len, num_of_instance)
+        UHF_DISSECTOR(buffer, pinfo, subtree1, TC_TM_PROTOCOL, offset, tm_len, num_of_instance)
+     elseif submodule_id == 4 then
+         require("sensor_dissector")
+         sensor_dissector(buffer, pinfo, subtree1, TC_TM_PROTOCOL, offset, num_of_instance, queue_id)
      elseif submodule_id == 5 then
         require("obc_dissector")
         obc_dissector(buffer, pinfo, subtree1, TC_TM_PROTOCOL, offset, num_of_instance)     
      elseif submodule_id == 2 then 
        require("sband_dissector")
        sband_dissectors(buffer, pinfo, subtree1, TC_TM_PROTOCOL, offset, num_of_instance)
+     elseif submodule_id == 6 then 
+       require("error_handler_dissector")
+       error_handler_dissector(buffer, pinfo, subtree1, TC_TM_PROTOCOL, offset, num_of_instance)
      else
        
          for i = 0, len - 1 do

+ 566 - 0
Dissector/sensor_dissector.lua

@@ -0,0 +1,566 @@
+function sensor_dissector(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance, queue_id)
+
+    if queue_id == 0 then
+    require("sensor_dissector")
+    sensor_dissector_0(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 1 then
+    require("sensor_dissector")
+    sensor_dissector_1(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 2 then
+    require("sensor_dissector")
+    sensor_dissector_2(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 3 then
+    require("sensor_dissector")
+    sensor_dissector_3(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 4 then
+    require("sensor_dissector")
+    sensor_dissector_4(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 5 then
+    require("sensor_dissector")
+    sensor_dissector_5(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 6 then
+    require("sensor_dissector")
+    sensor_dissector_6(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 7 then
+    require("sensor_dissector")
+    sensor_dissector_7(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 8 then
+    require("sensor_dissector")
+    sensor_dissector_8(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 9 then
+    require("sensor_dissector")
+    sensor_dissector_9(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 10 then
+    require("sensor_dissector")
+    sensor_dissector_10(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 11 then
+    require("sensor_dissector")
+    sensor_dissector_11(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 12 then
+    require("sensor_dissector")
+    sensor_dissector_12(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 13 then
+    require("sensor_dissector")
+    sensor_dissector_13(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 14 then
+    require("sensor_dissector")
+    sensor_dissector_14(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+    elseif queue_id == 15 then
+    require("sensor_dissector")
+    sensor_dissector_15(buffer, pinfo, subtree1, sensor_protocol, offset, num_of_instance)
+    
+  end
+end
+
+---------------------------------------------------------------------------------------
+
+function sensor_dissector_0(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields of the protocol
+local f_vbus_voltage = ProtoField.float("psm.vbus_voltage", "Vbus Voltage")
+local f_vshunt_voltage = ProtoField.float("psm.vshunt_voltage", "Vshunt Voltage")
+local f_current = ProtoField.float("psm.current", "Current")
+local f_power = ProtoField.uint32("psm.power", "Power")
+local f_epoch_time = ProtoField.uint32("psm.epoch_time", "Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_vbus_voltage, f_vshunt_voltage, f_current, f_power, f_epoch_time }
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 0 ")
+    for i = 0,  num_of_instance - 1 do
+    local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+    
+    subtree1:add(f_vbus_voltage, buffer(offset, 4):le_float())  -- 4 bytes for float
+    offset = offset + 4
+    
+    subtree1:add(f_vshunt_voltage, buffer(offset, 4):le_float())  -- 4 bytes for float
+    offset = offset + 4
+    
+    subtree1:add(f_current, buffer(offset, 4):le_float())  -- 4 bytes for float
+    offset = offset + 4
+    
+    subtree1:add(f_power, buffer(offset, 4):le_uint())  -- 4 bytes for uint32
+    offset = offset + 4
+    
+    subtree1:add(f_epoch_time, buffer(offset, 4):le_uint())  -- 4 bytes for uint32
+    offset = offset + 4
+    end
+    
+end
+
+---------------------------------------------------------------------------------------------------
+
+function sensor_dissector_1(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields of the protocol
+local f_vbus_voltage = ProtoField.float("psm.vbus_voltage", "Vbus Voltage")
+local f_vshunt_voltage = ProtoField.float("psm.vshunt_voltage", "Vshunt Voltage")
+local f_current = ProtoField.float("psm.current", "Current")
+local f_power = ProtoField.uint32("psm.power", "Power")
+local f_epoch_time = ProtoField.uint32("psm.epoch_time", "Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_vbus_voltage, f_vshunt_voltage, f_current, f_power, f_epoch_time }
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 1")
+    for i = 0,  num_of_instance - 1 do
+    local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+    
+    subtree1:add(f_vbus_voltage, buffer(offset, 4):le_float())  -- 4 bytes for float
+    offset = offset + 4
+    
+    subtree1:add(f_vshunt_voltage, buffer(offset, 4):le_float())  -- 4 bytes for float
+    offset = offset + 4
+    
+    subtree1:add(f_current, buffer(offset, 4):le_float())  -- 4 bytes for float
+    offset = offset + 4
+    
+    subtree1:add(f_power, buffer(offset, 4):le_uint())  -- 4 bytes for uint32
+    offset = offset + 4
+    
+    subtree1:add(f_epoch_time, buffer(offset, 4):le_uint())  -- 4 bytes for uint32
+    offset = offset + 4
+    end
+    
+end
+
+-----------------------------------------------------------------------------------------------------------------
+function sensor_dissector_2(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields for the protocol
+local f_temperature = ProtoField.float("sensor_protocol.temperature", "Temperature")
+local f_temp_epoch_time = ProtoField.uint32("sensor_protocol.temp_epoch_time", "Temp Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_temperature, f_temp_epoch_time }
+
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 2")
+     -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local temp_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_temp_epoch_time, temp_epoch_time)
+        offset = offset + 4
+    end 
+    
+end
+------------------------------------------------------------------------------------------------------------------------
+
+function sensor_dissector_3(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields for the protocol
+local f_temperature = ProtoField.float("sensor_protocol.temperature", "Temperature")
+local f_temp_epoch_time = ProtoField.uint32("sensor_protocol.temp_epoch_time", "Temp Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_temperature, f_temp_epoch_time }
+
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 3")
+     -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local temp_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_temp_epoch_time, temp_epoch_time)
+        offset = offset + 4
+    end 
+    
+end
+
+-------------------------------------------------------------------------------------------------------------------------
+function sensor_dissector_4(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields for the protocol
+local f_temperature = ProtoField.float("sensor_protocol.temperature", "Temperature")
+local f_temp_epoch_time = ProtoField.uint32("sensor_protocol.temp_epoch_time", "Temp Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_temperature, f_temp_epoch_time }
+
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 4")
+     -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local temp_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_temp_epoch_time, temp_epoch_time)
+        offset = offset + 4
+    end 
+    
+end
+
+-------------------------------------------------------------------------------------------------------------------------
+
+function sensor_dissector_5(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields for the protocol
+local f_temperature = ProtoField.float("sensor_protocol.temperature", "Temperature")
+local f_temp_epoch_time = ProtoField.uint32("sensor_protocol.temp_epoch_time", "Temp Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_temperature, f_temp_epoch_time }
+
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 5")
+     -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local temp_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_temp_epoch_time, temp_epoch_time)
+        offset = offset + 4
+    end 
+    
+end
+
+-------------------------------------------------------------------------------------------------------------------------
+function sensor_dissector_6(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields for the protocol
+local f_temperature = ProtoField.float("sensor_protocol.temperature", "Temperature")
+local f_temp_epoch_time = ProtoField.uint32("sensor_protocol.temp_epoch_time", "Temp Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_temperature, f_temp_epoch_time }
+
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 6")
+     -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local temp_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_temp_epoch_time, temp_epoch_time)
+        offset = offset + 4
+    end 
+    
+end
+
+-------------------------------------------------------------------------------------------------------------------------
+
+function sensor_dissector_7(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields for the protocol
+local f_temperature = ProtoField.float("sensor_protocol.temperature", "Temperature")
+local f_temp_epoch_time = ProtoField.uint32("sensor_protocol.temp_epoch_time", "Temp Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_temperature, f_temp_epoch_time }
+
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 7")
+     -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local temp_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_temp_epoch_time, temp_epoch_time)
+        offset = offset + 4
+    end 
+    
+end
+
+-------------------------------------------------------------------------------------------------------------------------
+function sensor_dissector_8(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields for the protocol
+local f_temperature = ProtoField.float("sensor_protocol.temperature", "Temperature")
+local f_temp_epoch_time = ProtoField.uint32("sensor_protocol.temp_epoch_time", "Temp Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_temperature, f_temp_epoch_time }
+
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 8")
+     -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local temp_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_temp_epoch_time, temp_epoch_time)
+        offset = offset + 4
+    end 
+    
+end
+
+-------------------------------------------------------------------------------------------------------------------------
+function sensor_dissector_9(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields for the protocol
+local f_temperature = ProtoField.float("sensor_protocol.temperature", "Temperature")
+local f_temp_epoch_time = ProtoField.uint32("sensor_protocol.temp_epoch_time", "Temp Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_temperature, f_temp_epoch_time }
+
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 9")
+     -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local temp_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_temp_epoch_time, temp_epoch_time)
+        offset = offset + 4
+    end 
+    
+end
+
+-------------------------------------------------------------------------------------------------------------------------
+
+
+function sensor_dissector_10(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+
+-- Define the fields for the protocol
+local f_temperature = ProtoField.float("sensor_protocol.temperature", "Temperature")
+local f_temp_epoch_time = ProtoField.uint32("sensor_protocol.temp_epoch_time", "Temp Epoch Time")
+
+-- Add the fields to the protocol
+sensor_protocol.fields = { f_temperature, f_temp_epoch_time }
+
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 10")
+     -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE "..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local temp_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_temp_epoch_time, temp_epoch_time)
+        offset = offset + 4
+    end 
+    
+end
+
+-------------------------------------------------------------------------------------------------------------------------
+function sensor_dissector_11(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+    -- Define ProtoFields for the new structure fields
+    local f_voltage = ProtoField.float("SensorData.voltage", "Voltage", base.DEC)
+    local f_current = ProtoField.float("SensorData.current", "Current", base.DEC)
+    local f_adm_epoch_time = ProtoField.uint32("SensorData.adm_epoch_time", "Epoch Time", base.DEC)
+
+    -- Add the fields to the protocol
+    sensor_protocol.fields = { 
+        f_voltage, f_current, f_adm_epoch_time
+    }
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 11")
+    -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_dissector, buffer(), "INSTANCE "..i)
+
+        -- dissect voltage (4 bytes for float)
+        local voltage = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_voltage, voltage)
+        offset = offset + 4
+
+        -- dissect current (4 bytes for float)
+        local current = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_current, current)
+        offset = offset + 4
+
+        -- dissect adm_epoch_time (4 bytes for uint32)
+        local adm_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_adm_epoch_time, adm_epoch_time)
+        offset = offset + 4
+    end
+end
+
+---------------------------------------------------------------------------------------------------------------------------
+
+
+function sensor_dissector_12(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+    -- Define ProtoFields for the new structure fields
+    local f_voltage = ProtoField.float("SensorData.voltage", "Voltage", base.DEC)
+    local f_current = ProtoField.float("SensorData.current", "Current", base.DEC)
+    local f_adm_epoch_time = ProtoField.uint32("SensorData.adm_epoch_time", "Epoch Time", base.DEC)
+
+    -- Add the fields to the protocol
+    sensor_protocol.fields = { 
+        f_voltage, f_current, f_adm_epoch_time
+    }
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 12")
+    -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_dissector, buffer(), "INSTANCE "..i)
+
+        -- dissect voltage (4 bytes for float)
+        local voltage = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_voltage, voltage)
+        offset = offset + 4
+
+        -- dissect current (4 bytes for float)
+        local current = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_current, current)
+        offset = offset + 4
+
+        -- dissect adm_epoch_time (4 bytes for uint32)
+        local adm_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_adm_epoch_time, adm_epoch_time)
+        offset = offset + 4
+    end
+end
+
+---------------------------------------------------------------------------------------------------------------------------------------
+function sensor_dissector_13(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+    -- Define ProtoFields for the new structure fields
+    local f_voltage = ProtoField.float("SensorData.voltage", "Voltage", base.DEC)
+    local f_current = ProtoField.float("SensorData.current", "Current", base.DEC)
+    local f_adm_epoch_time = ProtoField.uint32("SensorData.adm_epoch_time", "Epoch Time", base.DEC)
+
+    -- Add the fields to the protocol
+    sensor_protocol.fields = { 
+        f_voltage, f_current, f_adm_epoch_time
+    }
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 13")
+    -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_dissector, buffer(), "INSTANCE "..i)
+
+        -- dissect voltage (4 bytes for float)
+        local voltage = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_voltage, voltage)
+        offset = offset + 4
+
+        -- dissect current (4 bytes for float)
+        local current = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_current, current)
+        offset = offset + 4
+
+        -- dissect adm_epoch_time (4 bytes for uint32)
+        local adm_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_adm_epoch_time, adm_epoch_time)
+        offset = offset + 4
+    end
+end
+
+----------------------------------------------------------------------------------------------------------------------------------------
+
+function sensor_dissector_14(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+    -- Define ProtoFields for the new structure fields
+    local f_temperature = ProtoField.float("TemperatureData.temperature", "Temperature", base.DEC)
+    local f_dt_epoch_time = ProtoField.uint32("TemperatureData.dt_epoch_time", "Epoch Time", base.DEC)
+
+    -- Add the fields to the protocol
+    sensor_protocol.fields = { 
+        f_temperature, f_dt_epoch_time
+    }
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 14")
+    -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 0, num_of_instance - 1 do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(sensor_protocol, buffer(), "INSTANCE"..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local dt_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_dt_epoch_time, dt_epoch_time)
+        offset = offset + 4
+    end 
+end
+---------------------------------------------------------------------------------------------------------------------------------------
+
+function sensor_dissector_15(buffer, pinfo, tree, sensor_protocol, offset, num_of_instance)
+    -- Define ProtoFields for the new structure fields
+    local f_temperature = ProtoField.float("TemperatureData.temperature", "Temperature", base.DEC)
+    local f_dt_epoch_time = ProtoField.uint32("TemperatureData.dt_epoch_time", "Epoch Time", base.DEC)
+
+    -- Add the fields to the protocol
+    sensor_protocol.fields = { 
+        f_temperature, f_dt_epoch_time
+    }
+local subtree = tree:add(sensor_protocol, buffer(), "SENSOR QUEUE ID 15")
+    -- Loop through the data (num_of_instance could represent the number of instances or packets to dissect)
+    for i = 1, num_of_instance do
+        -- Add the new structure data as a subtree
+        local subtree1 = subtree:add(temp_epoch_protocol, buffer(), "INSTANCE"..i)
+
+        -- dissect temperature (4 bytes for float)
+        local temperature = buffer(offset, 4):le_float()  -- Float type is 4 bytes (32 bits)
+        subtree1:add(f_temperature, temperature)
+        offset = offset + 4
+
+        -- dissect dt_epoch_time (4 bytes for uint32)
+        local dt_epoch_time = buffer(offset, 4):le_uint()  -- uint32 is 4 bytes
+        subtree1:add(f_dt_epoch_time, dt_epoch_time)
+        offset = offset + 4
+    end 
+end
+
+------------------------------------------------------------------------------------------------------------------------------------