This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 191ecd22f8a72ae750ac2d4e9243655ef5ad5f3a
Author: Christofer Dutz <[email protected]>
AuthorDate: Fri Jan 22 13:56:03 2021 +0100

    - Added stuff for decoding the KNX DeviceDescriptors
---
 .../resources/protocols/knxnetip/knxnetip.mspec    | 89 ++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git 
a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec 
b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
index 55e9882..5686916 100644
--- a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
+++ b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
@@ -1677,4 +1677,93 @@
     ['0x37' RADIO_CONVERTER           
['enables_the_radio_transmission_of_a_meter_without_a_radio_interface',   
'false']]
 ]
 
+// The definition of the constants for medium type in the device descriptor 
differs from that of the other parts
+// 03_05_01 Resources v01.09.03 AS.pdf Page 22
+[enum uint 4 DeviceDescriptorMediumType
+    ['0x0' TP1      ]
+    ['0x1' PL110    ]
+    ['0x2' RF       ]
+    ['0x3' TP0      ]
+    ['0x4' PL132    ]
+    ['0x5' KNX_IP   ]
+]
+
+// 03_05_01 Resources v01.09.03 AS.pdf Page 22
+[enum uint 8 FirmwareType
+    ['0xAF' NONE                      ]
+    ['0x00' BCU_1                     ]
+    ['0x01' BCU_1_SYSTEM_1            ]
+    ['0x02' BCU_2_SYSTEM_2            ]
+    ['0x70' BIM_M112                  ]
+    ['0x7B' SYSTEM_B                  ]
+    ['0x81' IR_DECODER                ]
+    ['0x90' MEDIA_COUPLER_PL_TP       ]
+    ['0x91' COUPLER                   ]
+    ['0x20' RF_BI_DIRECTIONAL_DEVICES ]
+    ['0x21' RF_UNI_DIRECTIONAL_DEVICES]
+    ['0x' SYSTEM_300                  ]
+    ['0x' SYSTEM_7                    ]
+]
+
+// Helper enum that binds the combinations of medium type and firmware
+// type to the pre-defined constants the spec defines
+// 03_05_01 Resources v01.09.03 AS.pdf Page 22
+[enum uint 16 'DeviceDescriptorType0'   [DeviceDescriptorMediumType 
'mediumType',   FirmwareType 'firmwareType'               ]
+    ['0x0010' TP1_BCU_1_SYSTEM_1_0      ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BCU_1_SYSTEM_1'            ]]
+    ['0x0011' TP1_BCU_1_SYSTEM_1_1      ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BCU_1_SYSTEM_1'            ]]
+    ['0x0012' TP1_BCU_1_SYSTEM_1_2      ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BCU_1_SYSTEM_1'            ]]
+    ['0x0013' TP1_BCU_1_SYSTEM_1_3      ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BCU_1_SYSTEM_1'            ]]
+    ['0x0020' TP1_BCU_2_SYSTEM_2_0      ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BCU_2_SYSTEM_2'            ]]
+    ['0x0021' TP1_BCU_2_SYSTEM_2_1      ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BCU_2_SYSTEM_2'            ]]
+    ['0x0025' TP1_BCU_2_SYSTEM_2_5      ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BCU_2_SYSTEM_2'            ]]
+    ['0x0300' TP1_SYSTEM_300            ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.SYSTEM_300'                ]]
+    ['0x0700' TP1_BIM_M112_0            ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BIM_M112'                  ]]
+    ['0x0701' TP1_BIM_M112_1            ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BIM_M112'                  ]]
+    ['0x0705' TP1_BIM_M112_5            ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.BIM_M112'                  ]]
+    ['0x07B0' TP1_SYSTEM_B              ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.SYSTEM_B'                  ]]
+    ['0x0810' TP1_IR_DECODER_0          ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.IR_DECODER'                ]]
+    ['0x0811' TP1_IR_DECODER_1          ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.IR_DECODER'                ]]
+    ['0x0910' TP1_COUPLER_0             ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.COUPLER'                   ]]
+    ['0x0911' TP1_COUPLER_1             ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.COUPLER'                   ]]
+    ['0x0912' TP1_COUPLER_2             ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.COUPLER'                   ]]
+    ['0x091A' TP1_KNXNETIP_ROUTER       ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.COUPLER'                   ]]
+    ['0x0AFD' TP1_NONE_D                ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.NONE'                      ]]
+    ['0x0AFE' TP1_NONE_E                ['DeviceDescriptorMediumType.TP1',     
     'FirmwareType.NONE'                      ]]
+    ['0x1012' PL110_BCU_1_2             ['DeviceDescriptorMediumType.PL110',   
     'FirmwareType.BCU_1_SYSTEM_1'            ]]
+    ['0x1013' PL110_BCU_1_3             ['DeviceDescriptorMediumType.PL110',   
     'FirmwareType.BCU_1_SYSTEM_1'            ]]
+    ['0x17B0' PL110_SYSTEM_B            ['DeviceDescriptorMediumType.PL110',   
     'FirmwareType.SYSTEM_B'                  ]]
+    ['0x1900' PL110_MEDIA_COUPLER_PL_TP ['DeviceDescriptorMediumType.PL110',   
     'FirmwareType.MEDIA_COUPLER_PL_TP'       ]]
+    ['0x2010' RF_BI_DIRECTIONAL_DEVICES ['DeviceDescriptorMediumType.RF',      
     'FirmwareType.RF_BI_DIRECTIONAL_DEVICES' ]]
+    ['0x2110' RF_UNI_DIRECTIONAL_DEVICES['DeviceDescriptorMediumType.RF',      
     'FirmwareType.RF_UNI_DIRECTIONAL_DEVICES']]
+    // This should actually be BCU_1 and not BCU_1_SYSTEM_1, unfortunately the 
code seems to be different in this case
+    ['0x3012' TP0_BCU_1                 ['DeviceDescriptorMediumType.TP0',     
     'FirmwareType.BCU_1_SYSTEM_1'            ]]
+    // This should actually be BCU_1 and not BCU_1_SYSTEM_1, unfortunately the 
code seems to be different in this case
+    ['0x4012' PL132_BCU_1               ['DeviceDescriptorMediumType.PL132',   
     'FirmwareType.BCU_1_SYSTEM_1'            ]]
+    // This should actually be SYSTEM7 and not BIM_M112, unfortunately the 
code seems to be the same in this case
+    ['0x5705' KNX_IP_SYSTEM7            ['DeviceDescriptorMediumType.KNX_IP',  
     'FirmwareType.BIM_M112'                  ]]
+]
+
+// 03_05_01 Resources v01.09.03 AS.pdf Page 23ff
+[type 'DeviceDescriptorType2'
+    // Same manufacturer id as used elsewhere (Assigned by KNX Association)
+    [simple uint 16            'manufacturerId' ]
+    // Manufacturer specific device type id
+    [simple uint 16            'deviceType'     ]
+    // Manufacturer specific device type version
+    [simple uint 8             'version'        ]
+    // Indicates the Network Management procedures based on 
A_Link_Read-service are supported
+    [simple bit                'readSupported'  ]
+    // Indicates the Network Management procedures based on 
A_Link_Write-service are supported
+    [simple bit                'writeSupported' ]
+    [simple uint 6             'logicalTagBase' ]
+    [simple ChannelInformation 'channelInfo1'   ]
+    [simple ChannelInformation 'channelInfo2'   ]
+    [simple ChannelInformation 'channelInfo3'   ]
+    [simple ChannelInformation 'channelInfo4'   ]
+]
 
+// 03_05_01 Resources v01.09.03 AS.pdf Page 24
+[type 'ChannelInformation'
+    [simple uint 3  'numChannels']
+    [simple uint 13 'channelCode']
+]
\ No newline at end of file

Reply via email to