1 // *********************************************************************
    2 //   IQRF HWPIDs                                                       *
    3 // *********************************************************************
    4 // Copyright (c) MICRORISC s.r.o.
    5 //
    6 // File:    $RCSfile: IQRF_HWPID.h,v $
    7 // Version: $Revision: 1.189 $
    8 // Date:    $Date: 2025/10/20 17:00:49 $
    9 //
   10 // Revision history:
   11 //   2025/05/30  Release for DPA 4.33
   12 //   2024/11/05  Release for DPA 4.32
   13 //   2024/04/17  Release for DPA 4.31
   14 //   2023/03/07  Release for DPA 4.30
   15 //   2022/10/05  Release for DPA 4.18
   16 //   2022/02/24  Release for DPA 4.17
   17 //   2021/08/20  Release for DPA 4.16
   18 //   2020/09/03  Release for DPA 4.15
   19 //   2020/04/03  Release for DPA 4.14
   20 //   2020/02/27  Release for DPA 4.13
   21 //   2020/01/09  Release for DPA 4.12
   22 //   2019/12/11  Release for DPA 4.11
   23 //   2019/10/09  Release for DPA 4.10
   24 //   2019/06/12  Release for DPA 4.03
   25 //   2019/06/03  Release for DPA 4.02
   26 //   2019/03/07  Release for DPA 4.01
   27 //   2019/01/20  Release for DPA 4.00
   28 //   2018/10/25  Release for DPA 3.03
   29 //   2017/11/16  Release for DPA 3.02
   30 //   2017/08/14  Release for DPA 3.01
   31 //
   32 // *********************************************************************
   33 
   34 // Online DPA documentation https://doc.iqrf.org/DpaTechGuide/
   35 // IQRF Standards documentation https://doc.iqrf.org/
   36 
   37 #ifndef _IQRFSTD_HWPID_
   38 #define _IQRFSTD_HWPID_
   39 
   40 //# Class #1 #################################################################################
   41 // Manufacturer: bits:0-9, bit.0=0, bit.3-9=[0000000] (even numbers, but not 0x000)
   42 // Product: bits:10-15 (6 bits)
   43 //############################################################################################
   44 #ifdef __CC5X__
   45 #define HWPID_CLS1(prod,man) \
   46 #if prod < 0 || prod > 0x3F \
   47 #error "HWPID_CLS1: invalid product number" \
   48 #endif \
   49 #if man <= 0 || man > 0x007 || ( man & 1 ) != 0 \
   50 #error "HWPID_CLS1: invalid manufacturer number" \
   51 #endif \
   52 ( (uns16)(man) | ( (uns16)(prod) << 10 ) )
   53 #else
   54 #define HWPID_CLS1(prod,man) ( (uns16)(man) | ( (uns16)(prod) << 10 ) )
   55 #endif
   56 
   57 // -------------------------------------------------------------------------------------------
   58 // IQRF Tech s.r.o.
   59 #define HWPID_IQRF_TECH1      0x002
   60 
   61 // DDC-SE-01 sensor example
   62 // (0002_DDC-SE01.c)
   63 #define HWPID_IQRF_TECH__DEMO_DDC_SE01                HWPID_CLS1( 0x00, HWPID_IQRF_TECH1 ) // 0x0002
   64 
   65 // DDC-SE-01 + DDC-RE-01 sensor example
   66 // (0402_DDC-SE+RE.c)
   67 #define HWPID_IQRF_TECH__DEMO_DDC_SE01_RE01           HWPID_CLS1( 0x01, HWPID_IQRF_TECH1 ) // 0x0402
   68 
   69 // TR temperature sensor example
   70 // (0802_TrThermometer.c)
   71 #define HWPID_IQRF_TECH__DEMO_TR_THERMOMETER          HWPID_CLS1( 0x02, HWPID_IQRF_TECH1 ) // 0x0802
   72 
   73 // Binary output example using LEDs and DDC-RE-01
   74 // (0C02_BinaryOutput-Template.c)
   75 #define HWPID_IQRF_TECH__DEMO_BINARY_OUTPUT           HWPID_CLS1( 0x03, HWPID_IQRF_TECH1 ) // 0x0C02
   76 
   77 // Light example
   78 // (1002_Light-Template.c)
   79 #define HWPID_IQRF_TECH__DEMO_LIGHT                   HWPID_CLS1( 0x04, HWPID_IQRF_TECH1 ) // 0x1002
   80 
   81 // Sensor template
   82 // (1402_Sensor-Template.c)
   83 #define HWPID_IQRF_TECH__DEMO_SENSOR_TEMPLATE         HWPID_CLS1( 0x05, HWPID_IQRF_TECH1 ) // 0x1402
   84 
   85 // ToDo Description DK-SW2-01
   86 // ToDo (?.c)
   87 #define HWPID_IQRF_TECH__DK_SW2_01                    HWPID_CLS1( 0x06, HWPID_IQRF_TECH1 ) // 0x1802
   88 
   89 // ToDo Description IQD-SW1-01
   90 // ToDo (?.c)
   91 #define HWPID_IQRF_TECH__IQD_SW1_01                   HWPID_CLS1( 0x07, HWPID_IQRF_TECH1 ) // 0x1C02
   92 
   93 // ToDo Description IQD-SW2-01
   94 // ToDo (?.c)
   95 #define HWPID_IQRF_TECH__IQD_SW2_01                   HWPID_CLS1( 0x08, HWPID_IQRF_TECH1 ) // 0x2002
   96 
   97 // ToDo Description IQD-RC3-01
   98 // ToDo (?.c)
   99 #define HWPID_IQRF_TECH__IQD_RC3_01                   HWPID_CLS1( 0x09, HWPID_IQRF_TECH1 ) // 0x2402
  100 
  101 // ToDo Description IQD-SM1
  102 // ToDo (2802_IQD-SM1.c)
  103 #define HWPID_IQRF_TECH__IQD_SM1                      HWPID_CLS1( 0x0A, HWPID_IQRF_TECH1 ) // 0x2802
  104 
  105 // ToDo Description IQD-RC4-01
  106 // ToDo (?.c)
  107 #define HWPID_IQRF_TECH__RC4_01                       HWPID_CLS1( 0x0B, HWPID_IQRF_TECH1 ) // 0x2C02
  108 
  109 // ToDo Description IQD-RC4-02
  110 // ToDo (?.c)
  111 #define HWPID_IQRF_TECH__RC4_02                       HWPID_CLS1( 0x0C, HWPID_IQRF_TECH1 ) // 0x3002
  112 
  113 // ToDo Description IQD-REP-01
  114 // ToDo (?.c)
  115 #define HWPID_IQRF_TECH__REP_01                       HWPID_CLS1( 0x0D, HWPID_IQRF_TECH1 ) // 0x3402
  116 
  117 // ToDo Description IQD-SW1-02
  118 // ToDo (?.c)
  119 #define HWPID_IQRF_TECH__IQD_SW1_02                   HWPID_CLS1( 0x0F, HWPID_IQRF_TECH1 ) // 0x3C02
  120 
  121 // DDC-SE-01 + DDC-RE-01 sensor + binary output example - LP version
  122 // (4402_DDC-SE+RE_LP.c)
  123 #define HWPID_IQRF_TECH__DEMO_DDC_SE01_RE01_LP        HWPID_CLS1( 0x11, HWPID_IQRF_TECH1 ) // 0x4402
  124 
  125 // DDC-RE-01 binary output example - LP version
  126 // (4802_DDC-RE_LP.c)
  127 #define HWPID_IQRF_TECH__DEMO_DDC_RE01_LP             HWPID_CLS1( 0x12, HWPID_IQRF_TECH1 ) // 0x4802
  128 
  129 // DDC-SE-01 sensor example - LP version
  130 // (4C02_DDC-SE_LP.c)
  131 #define HWPID_IQRF_TECH__DEMO_DDC_SE01_LP             HWPID_CLS1( 0x13, HWPID_IQRF_TECH1 ) // 0x4C02
  132 
  133 // IQRF Standard Light Example using PWM
  134 // (5002_LightExamplePwm.c)
  135 #define HWPID_IQRF_TECH__LIGHT_EXAMPLE_PWM            HWPID_CLS1( 0x14, HWPID_IQRF_TECH1 ) // 0x5002
  136 
  137 //#define   ?             HWPID_CLS1( 0x15, HWPID_IQRF_TECH1 ) // 0x5402
  138 
  139 // LIGHT_TEMPLATE
  140 // (5802_LIGHT_TEMPLATE.c)
  141 #define HWPID_IQRF_TECH__LIGHT_TEMPLATE               HWPID_CLS1( 0x16, HWPID_IQRF_TECH1 ) // 0x5802
  142 
  143 // IQD-REP-03
  144 // (5C02_P-IQD-REP-03.c)
  145 #define HWPID_IQRF_TECH__P_IQD_REP_03                 HWPID_CLS1( 0x17, HWPID_IQRF_TECH1 ) // 0x5C02
  146 
  147 // IQD_REP_02_W2D
  148 // (6002_IQD_REP_02_W2D.c + IQD_REP_02_x1D)
  149 #define HWPID_IQRF_TECH__IQD_REP_02_W2D               HWPID_CLS1( 0x18, HWPID_IQRF_TECH1 ) // 0x6002
  150 
  151 // IQD_REP_02_S2D
  152 // (6402_IQD_REP_02_S2D.c + IQD_REP_02_x1D)
  153 #define HWPID_IQRF_TECH__IQD_REP_02_S2D               HWPID_CLS1( 0x19, HWPID_IQRF_TECH1 ) // 0x6402
  154 
  155 // DDC-SE-01 + DDC-RE-01 sensor example G version
  156 // (6802_DDC-SE+RE-G.c)
  157 #define HWPID_IQRF_TECH__DEMO_DDC_SE01_RE01_G         HWPID_CLS1( 0x1A, HWPID_IQRF_TECH1 ) // 0x6802
  158 
  159 
  160 // -------------------------------------------------------------------------------------------
  161 // MICRORISC s.r.o.
  162 #define HWPID_MICRORISC   0x004
  163 
  164 // IQD_SE04
  165 // (0004_IQD-SE04.c)
  166 #define HWPID_MICRORISC__IQD_SE04                 HWPID_CLS1( 0x00, HWPID_MICRORISC )     // 0x0004
  167 
  168 // IQD-REP-04-1WA.c
  169 // (0404-IQD-REP-04-1WA.c)
  170 #define HWPID_MICRORISC__IQD_REP_04_1WA           HWPID_CLS1( 0x01, HWPID_MICRORISC )     // 0x0404
  171 
  172 // IQD-DB1M-01
  173 // (0804_IQD-DB1M-01.c)
  174 #define HWPID_MICRORISC__IQD_DB1M_01              HWPID_CLS1( 0x02, HWPID_MICRORISC )     // 0x0804
  175 
  176 // IQD-RC11
  177 // (0C04_IQD-RC11.c)
  178 #define HWPID_MICRORISC__IQD_RC11_01              HWPID_CLS1( 0x03, HWPID_MICRORISC )     // 0x0C04
  179 
  180 // IQD-REP05
  181 // (1004_IQD-REP05.c)
  182 #define HWPID_MICRORISC__IQD_REP05                HWPID_CLS1( 0x04, HWPID_MICRORISC )     // 0x1004
  183 
  184 // IQD-CNT-01  -[VFN]
  185 // (1404_IQD-CNT-01.c)
  186 #define HWPID_MICRORISC__IQD_CNT_01               HWPID_CLS1( 0x05, HWPID_MICRORISC )     // 0x1404
  187 
  188 // IQD-LCDB02
  189 // (1804_IQD-LCDB02.c)
  190 #define HWPID_MICRORISC__IQD_LCDB02               HWPID_CLS1( 0x06, HWPID_MICRORISC )     // 0x1804
  191 
  192 // IQD-CNT1-01-T-E-01
  193 // (1C04_IQD-CNT1-01-T-E-01.c)
  194 #define HWPID_MICRORISC_IQD_CNT1_01_T_E_01        HWPID_CLS1( 0x07, HWPID_MICRORISC )     // 0x1C04
  195 
  196 // IQD-CNT1-01-TH-I-01
  197 // (2004_IQD-CNT1-01-TH-I-01.c)
  198 #define HWPID_MICRORISC_IQD_CNT1_01_TH_I_01       HWPID_CLS1( 0x08, HWPID_MICRORISC )     // 0x2004
  199 
  200 // IQD-CNT1-01-TH-F-01
  201 // (2404_IQD-CNT1-01-TH-F-01.c)
  202 #define HWPID_MICRORISC_IQD_CNT1_01_TH_F_01       HWPID_CLS1( 0x09, HWPID_MICRORISC )     // 0x2404
  203 
  204 // IQD-REP-02-W1D
  205 // (2804_IQD-REP-02-W1D.c)
  206 #define HWPID_MICRORISC_IQD_REP_02_W1D            HWPID_CLS1( 0x0A, HWPID_MICRORISC )     // 0x2804
  207 
  208 // IQD-REP-02-S1D
  209 // (2C04_IQD-REP-02-S1D.c)
  210 #define HWPID_MICRORISC_IQD_REP_02_S1D            HWPID_CLS1( 0x0B, HWPID_MICRORISC )     // 0x2C04
  211 
  212 // KON-OPI-02
  213 // (3004_KON-OPI-02.c)
  214 #define HWPID_MICRORISC_KON_OPI_02                HWPID_CLS1( 0x0C, HWPID_MICRORISC )     // 0x3004
  215 
  216 // IQD-REP05-01B
  217 // (3404_IQD-REP05-01B.c)
  218 #define HWPID_MICRORISC_IQD_REP05_01B             HWPID_CLS1( 0x0D, HWPID_MICRORISC )     // 0x3404
  219 
  220 // IQD-SE04-11
  221 // (3804_IQD-SE04-11.c)
  222 #define HWPID_MICRORISC_IQD_SE04_11               HWPID_CLS1( 0x0E, HWPID_MICRORISC )     // 0x3804
  223 
  224 // IQD-SE04-12
  225 // (3C04_IQD-SE04-12.c)
  226 #define HWPID_MICRORISC_IQD_SE04_12               HWPID_CLS1( 0x0F, HWPID_MICRORISC )     // 0x3C04
  227 
  228 // IQD-IQD-SE02-08C
  229 // (4004_IQD-SE02-08C.c)
  230 #define HWPID_MICRORISC_IQD_SE02_08C              HWPID_CLS1( 0x10, HWPID_MICRORISC )     // 0x4004
  231 
  232 // IQD-REP06-01A
  233 // (4404_IQD-REP06-01A.c)
  234 #define HWPID_MICRORISC_IQD_REP06_01A             HWPID_CLS1( 0x11, HWPID_MICRORISC )     // 0x4404
  235 
  236 // IQD-SE03-xxFL
  237 // (4804_IQD-SE03-xxFL.c)
  238 #define HWPID_MICRORISC_IQD_SE03_05FL             HWPID_CLS1( 0x12, HWPID_MICRORISC )     // 0x4804
  239 
  240 // IQD-SE03-xxLUX
  241 // (4C04_IQD-SE03-xxLUX.c)
  242 #define HWPID_MICRORISC_IQD_SE03_06LUX            HWPID_CLS1( 0x13, HWPID_MICRORISC )     // 0x4C04
  243 
  244 // IQD-RC10-01A
  245 // (5004_IQD-RC10-01A.c)
  246 #define HWPID_MICRORISC_IQD_RC10_01A              HWPID_CLS1( 0x14, HWPID_MICRORISC )     // 0x5004
  247 
  248 // IQD-SE06-02A
  249 // (5404_IQD-SE06-02A.c)
  250 #define HWPID_MICRORISC_IQD_SE06_02A              HWPID_CLS1( 0x15, HWPID_MICRORISC )     // 0x5404
  251 
  252 // IQD-REP07
  253 // (5804_IQD-REP-07.c)
  254 #define HWPID_MICRORISC_IQD_REP07                 HWPID_CLS1( 0x16, HWPID_MICRORISC )     // 0x5804
  255 
  256 // IQD-SE04-01PIR, Detekce pohybu, čidlo PIR
  257 // (5C04_IQD-SE04-01PIR.c)
  258 #define HWPID_MICRORISC_IQD_SE04_01PIR            HWPID_CLS1( 0x17, HWPID_MICRORISC )     // 0x5C04
  259 
  260 // IQD-LCZH03-01A
  261 // 6004_IQD-LCZH-03-01A.c
  262 #define HWPID_MICRORISC_IQD_LCZH_03_01A           HWPID_CLS1( 0x18, HWPID_MICRORISC )     // 0x6004
  263 
  264 // IQD-CNT-01-TH  - [VFN]
  265 // (6404_IQD-CNT-01-TH.c)
  266 #define HWPID_MICRORISC__IQD_CNT_01_TH            HWPID_CLS1( 0x19, HWPID_MICRORISC )     // 0x6404
  267 
  268 // P-IQD-SM2-T.c - [for recycling]
  269 // (6804_P_IQD_SM2_T.c)
  270 #define HWPID_MICRORISC__P_IQD_SM2_T              HWPID_CLS1( 0x1A, HWPID_MICRORISC )     // 0x6804
  271 
  272 // IQD-REP-04-1W.c
  273 // (6C04_IQD_REP_04_1W.c)
  274 #define HWPID_MICRORISC__IQD_REP_04_1W            HWPID_CLS1( 0x1B, HWPID_MICRORISC )     // 0x6C04
  275 
  276 // IQD-REP-02-S1D-T
  277 // (7004_IQD-REP-02-S1D-T.c)
  278 #define HWPID_MICRORISC_IQD_REP_02_S1D_T          HWPID_CLS1( 0x1C, HWPID_MICRORISC )     // 0x7004
  279 
  280 // IQD-UPS01
  281 // (7404_IQD_UPS01.c)
  282 #define HWPID_MICRORISC_IQD_UPS01                 HWPID_CLS1( 0x1D, HWPID_MICRORISC )     // 0x7404
  283 
  284 // IQD-LCZH-01 (formerly IQD-SL02)
  285 // (7804_IQD-LCZH-01.c)
  286 #define HWPID_MICRORISC_IQD_LCZH_01               HWPID_CLS1( 0x1E, HWPID_MICRORISC )     // 0x7804
  287 
  288 // IQD-LCNE-01 (formerly IQD-SL01)
  289 // (7C04_IQD-LCNE-01.c)
  290 #define HWPID_MICRORISC_IQD_LCNE_01               HWPID_CLS1( 0x1F, HWPID_MICRORISC )     // 0x7C04
  291 
  292 // IQD-SE01-14RT
  293 // (8004_IQD-SE01-14RT.c)
  294 #define HWPID_MICRORISC_IQD_SE01_14RT             HWPID_CLS1( 0x20, HWPID_MICRORISC )     // 0x8004
  295 
  296 // IQD-SE02-0xRTH
  297 // (8404_IQD-SE02-0xRTH.c)
  298 #define HWPID_MICRORISC_IQD_SE02_0xRTH            HWPID_CLS1( 0x21, HWPID_MICRORISC )     // 0x8404
  299 
  300 // IQD_SW10_01
  301 // (8804_IQD_SW10_00.c)
  302 #define HWPID_MICRORISC_IQD_SW10_00               HWPID_CLS1( 0x22, HWPID_MICRORISC )     // 0x8804
  303 
  304 // IQD-BWF01
  305 // (8C04_IQD-BWF01.c)
  306 #define HWPID_MICRORISC_IQD_BWF01                 HWPID_CLS1( 0x23, HWPID_MICRORISC )     // 0x8C04
  307 
  308 // IQD_SE03_07T
  309 // (9004_IQD_SE03_07T.c)
  310 #define HWPID_MICRORISC_IQD_SE03_07T              HWPID_CLS1( 0x24, HWPID_MICRORISC )     // 0x9004
  311 
  312 // IQD-REP-04-1S.c
  313 // (9404_IQD_REP_04_1S.c)
  314 #define HWPID_MICRORISC__IQD_REP_04_1S            HWPID_CLS1( 0x25, HWPID_MICRORISC )     // 0x9404
  315 
  316 // KONA-UPI-01
  317 // (9804_KONA-UPI-01.c)
  318 #define HWPID_MICRORISC_KONA_UPI_01               HWPID_CLS1( 0x26, HWPID_MICRORISC )     // 0x9804
  319 
  320 // IQD-SE01-10VT
  321 // (9C04_IQD_SE01_10VT.c)
  322 #define HWPID_MICRORISC_IQD_SE01_10VT             HWPID_CLS1( 0x27, HWPID_MICRORISC )     // 0x9C04
  323 
  324 // IQD-SE01-10LT - [for recycling]
  325 // (A004_IQD-SE01-10LT.c)
  326 #define HWPID_MICRORISC_IQD_SE01_10LT             HWPID_CLS1( 0x28, HWPID_MICRORISC )     // 0xA004
  327 
  328 // IQD-GW04
  329 // (A404_IQD-GW04.c)
  330 #define HWPID_MICRORISC_IQD_GW04                  HWPID_CLS1( 0x29, HWPID_MICRORISC )     // 0xA404
  331 
  332 // IQD-PIR02-01 - [for recycling]
  333 // (A804_IQD-PIR02-01.c)
  334 #define HWPID_MICRORISC_IQD_PIR02_01              HWPID_CLS1( 0x2A, HWPID_MICRORISC )     // 0xA804
  335 
  336 // IQD-PIR02-02 - [for recycling]
  337 // (AC04_IQD-PIR02-02.c)
  338 #define HWPID_MICRORISC_IQD_PIR02_02              HWPID_CLS1( 0x2B, HWPID_MICRORISC )     // 0xAC04
  339 
  340 // KONA-RASP04
  341 // (B004_KONA-RASP04.c)
  342 #define HWPID_MICRORISC_KONA_RASP04               HWPID_CLS1( 0x2C, HWPID_MICRORISC )     // 0xB004
  343 
  344 // IQD-PIR01-01 - [for recycling]
  345 // (B404_IQD-PIR01-01.c)
  346 #define HWPID_MICRORISC_IQD_PIR01_01              HWPID_CLS1( 0x2D, HWPID_MICRORISC )     // 0xB404
  347 
  348 // IQD-SE02-04B
  349 // (B804_IQD-SE02-04B.c)
  350 #define HWPID_MICRORISC_IQD_SE02_04B              HWPID_CLS1( 0x2E, HWPID_MICRORISC )     // 0xB804
  351 
  352 // IQD-SE02-05A
  353 // (BC04_IQD-SE02-05A.c)
  354 #define HWPID_MICRORISC_IQD_SE02_05A              HWPID_CLS1( 0x2F, HWPID_MICRORISC )     // 0xBC04
  355 
  356 // IQD-LCZH-02-05A
  357 // (C004_IQD-LCZH-02-05A.c)
  358 #define HWPID_MICRORISC_IQD_LCZH_02_05A           HWPID_CLS1( 0x30, HWPID_MICRORISC )     // 0xC004
  359 
  360 // IQD-LCZH-02-01A
  361 // (C404_IQD-LCZH-02-01A.c)
  362 #define HWPID_MICRORISC_IQD_LCZH_02_01A           HWPID_CLS1( 0x31, HWPID_MICRORISC )     // 0xC404
  363 
  364 // IQD-LCZH-02-02B
  365 // (C804_IQD-LCZH-02-02B.c)
  366 #define HWPID_MICRORISC_IQD_LCZH_02_02B           HWPID_CLS1( 0x32, HWPID_MICRORISC )     // 0xC804
  367 
  368 // IQD-LCZH-02-06B
  369 // (CC04_IQD-LCZH-02-06B.c)
  370 #define HWPID_MICRORISC_IQD_LCZH_02_06B           HWPID_CLS1( 0x33, HWPID_MICRORISC )     // 0xCC04
  371 
  372 // IQHUBS-01
  373 // (D004_IQHUBS-01.c)
  374 #define HWPID_MICRORISC_IQHUBS_01                 HWPID_CLS1( 0x34, HWPID_MICRORISC )     // 0xD004
  375 
  376 // IQD-GW04-02
  377 // (D404_IQD-GW04-02.c)
  378 #define HWPID_MICRORISC_IQD_GW04_02               HWPID_CLS1( 0x35, HWPID_MICRORISC )     // 0xD404
  379 
  380 // IQD-REP-04-1SA.c
  381 // (D804-IQD-REP-04-1SA.c)
  382 #define HWPID_MICRORISC__IQD_REP_04_1SA           HWPID_CLS1( 0x36, HWPID_MICRORISC )     // 0xD804
  383 
  384 // IQD-LCZH-02-03C
  385 // (DC04_IQD-LCZH-02-03C.c)
  386 #define HWPID_MICRORISC_IQD_LCZH_02_03C           HWPID_CLS1( 0x37, HWPID_MICRORISC )     // 0xDC04
  387 
  388 // IQD-LCZH-02-04D
  389 // (E004_IQD-LCZH-02-04D.c)
  390 #define HWPID_MICRORISC_IQD_LCZH_02_04D           HWPID_CLS1( 0x38, HWPID_MICRORISC )     // 0xE004
  391 
  392 // IQD-LCZH-02-07C
  393 // (E404_IQD-LCZH-02-07C.c)
  394 #define HWPID_MICRORISC_IQD_LCZH_02_07C           HWPID_CLS1( 0x39, HWPID_MICRORISC )     // 0xE404
  395 
  396 // IQD-LCZH-02-08D
  397 // (E804_IQD-LCZH-02-08D.c)
  398 #define HWPID_MICRORISC_IQD_LCZH_02_08D           HWPID_CLS1( 0x3A, HWPID_MICRORISC )     // 0xE804
  399 
  400 // IQD-DB1M-02A
  401 // (EC04_IQD-DB1M-02A.c)
  402 #define HWPID_MICRORISC__IQD_DB1M_02A             HWPID_CLS1( 0x3B, HWPID_MICRORISC )     // 0xEC04
  403 
  404 // IQD-RC05-00A
  405 // (F004_IQD-RC05-00A.c)
  406 #define HWPID_MICRORISC__IQD_RC05_00A             HWPID_CLS1( 0x3C, HWPID_MICRORISC )     // 0xF004
  407 
  408 // IQD-SE01-14RT
  409 // (F404_IQD-SE01-14RT_A.c)
  410 #define HWPID_MICRORISC_IQD_SE01_14RT_A           HWPID_CLS1( 0x3D, HWPID_MICRORISC )     // 0xF404
  411 
  412 // GW-OFFGRID01
  413 // (F804_GW-OFFGRID01.c)
  414 #define HWPID_MICRORISC_GW_OFFGRID01              HWPID_CLS1( 0x3E, HWPID_MICRORISC )     // 0xF804
  415 
  416 // IQD-SE02-07C
  417 // (FC04_IQD-SE02-07C.c)
  418 #define HWPID_MICRORISC_IQD_SE02_07C              HWPID_CLS1( 0x3F, HWPID_MICRORISC )     // 0xFC04
  419 
  420 //# Class #2 #################################################################################
  421 // Manufacturer: bits:0-11, bit.0=1, bit.5-11=[0000000] (odd numbers, never value 0x??F)
  422 // Product: bits:12-15 (4 bits)
  423 //############################################################################################
  424 #ifdef __CC5X__
  425 #define HWPID_CLS2(prod,man) \
  426 #if prod < 0 || prod > 0xF \
  427 #error "HWPID_CLS2: invalid product number" \
  428 #endif \
  429 #if man < 0 || man > 0x01F || ( man & 1 ) == 0 || ( man & 0xF ) == 0xF \
  430 #error "HWPID_CLS2: invalid manufacturer number" \
  431 #endif \
  432 ( (uns16)(man) | ( (uns16)(prod) << 12 ) )
  433 #else
  434 #define HWPID_CLS2(prod,man) ( (uns16)(man) | ( (uns16)(prod) << 12 ) )
  435 #endif
  436 // -------------------------------------------------------------------------------------------
  437 // PROTRONIX s.r.o.
  438 #define HWPID_PROTRONIX   0x001
  439 
  440 // Temperature+Humidity+CO2 sensor
  441 // (0001_Protronix-T+RH+CO2.c)
  442 #define HWPID_PROTRONIX__TEMP_HUM_CO2                 HWPID_CLS2( 0x0, HWPID_PROTRONIX ) // 0x0001
  443 
  444 // Temperature+Humidity+VOC sensor
  445 // (1001_Protronix-T+RH+VOC.c)
  446 #define HWPID_PROTRONIX__TEMP_HUM_VOC                 HWPID_CLS2( 0x1, HWPID_PROTRONIX ) // 0x1001
  447 
  448 // 2001_Protronix__IL_PM40
  449 #define HWPID_PROTRONIX__IL_PM40                      HWPID_CLS2( 0x2, HWPID_PROTRONIX ) // 0x2001
  450 
  451 // Temperature+Humidity sensor
  452 // (3001_Protronix-T+RH.c)
  453 #define HWPID_PROTRONIX__TEMP_HUM                     HWPID_CLS2( 0x3, HWPID_PROTRONIX ) // 0x3001
  454 
  455 // Temperature+Humidity+CO2 sensor [LP]
  456 // (4001_Protronix-LP-T+RH+CO2.c)
  457 #define HWPID_PROTRONIX__LP_TEMP_HUM_CO2              HWPID_CLS2( 0x4, HWPID_PROTRONIX ) // 0x4001
  458 
  459 // Temperature+Humidity sensor [LP]
  460 // (5001_Protronix-LP-T+RH.c)
  461 #define HWPID_PROTRONIX__LP_TEMP_HUM                  HWPID_CLS2( 0x5, HWPID_PROTRONIX ) // 0x5001
  462 
  463 // PM 2,5 sensor [LP]
  464 // (6001_Protronix-NLII_PM25.c)
  465 #define HWPID_PROTRONIX__NLII_PM25                    HWPID_CLS2( 0x6, HWPID_PROTRONIX ) // 0x6001
  466 
  467 // Temperature+Humidity+CO2 sensor Beaming
  468 // (7001_Protronix-NLB-CO2+RH+T-Beaming.c)
  469 #define HWPID_PROTRONIX__NLB_CO2_R_T_Beaming          HWPID_CLS2( 0x7, HWPID_PROTRONIX ) // 0x7001
  470 
  471 // TVOX+RH+T
  472 #define HWPID_PROTRONIX__NLII_TVOC_RH_T               HWPID_CLS2( 0x8, HWPID_PROTRONIX ) // 0x8001
  473 
  474 // NOX
  475 #define HWPID_PROTRONIX__NLII_NOX                     HWPID_CLS2( 0x9, HWPID_PROTRONIX ) // 0x9001
  476 
  477 // OL-NOX-IQRF
  478 #define HWPID_PROTRONIX__OL_NOX_IQRF                  HWPID_CLS2( 0xA, HWPID_PROTRONIX ) // 0xA001
  479 
  480 // NLII-CO2+TVOC-5-IQRF
  481 #define HWPID_PROTRONIX__NLII_CO2_TVOC_5_IQRF         HWPID_CLS2( 0xB, HWPID_PROTRONIX ) // 0xB001
  482 
  483 // Temperature+Humidity+TVOC-PC01
  484 // (C001_Protronix-T+RH+TVOC-PC01.c)
  485 #define HWPID_PROTRONIX__TEMP_HUM_TVOC_PC01           HWPID_CLS2( 0xC, HWPID_PROTRONIX ) // 0xC001
  486 
  487 // PM 2,5 sensor-PC01
  488 // (D001_Protronix-NLII_PM25-PC01.c)
  489 #define HWPID_PROTRONIX__NLII_PM25_PC01               HWPID_CLS2( 0xD, HWPID_PROTRONIX ) // 0xD001
  490 
  491 // NLB-RH+T-Beaming
  492 // (E001_Protronix-NLB-RH+T-Beaming.c)
  493 #define HWPID_PROTRONIX__NLB_RH_T_Beaming             HWPID_CLS2( 0xE, HWPID_PROTRONIX ) // 0xE001
  494 
  495 // ADS-RN
  496 #define HWPID_PROTRONIX__ADS_RN                       HWPID_CLS2( 0xF, HWPID_PROTRONIX ) // 0xF001
  497 
  498 // -------------------------------------------------------------------------------------------
  499 // NETIO products a.s.
  500 #define HWPID_NETIO       0x003
  501 
  502 // Cobra 1 - 1x power plug
  503 // (0003_Netio-Cobra1.c)
  504 #define HWPID_NETIO__COBRA1                           HWPID_CLS2( 0x0, HWPID_NETIO )     // 0x0003
  505 
  506 // Cobra 1 - 1x power plug [LP]
  507 // (1003_Netio-LP-Cobra1.c)
  508 #define HWPID_NETIO__LP_COBRA1                        HWPID_CLS2( 0x1, HWPID_NETIO )     // 0x1003
  509 
  510 // -------------------------------------------------------------------------------------------
  511 // DATmoLUX a.s.
  512 #define HWPID_DATMOLUX    0x005
  513 
  514 // DATmoLUX Light
  515 // 0005_DATmoLUX-Light.*
  516 #define HWPID_DATMOLUX__LIGHT                         HWPID_CLS2( 0x0, HWPID_DATMOLUX )  // 0x0005
  517 
  518 // -------------------------------------------------------------------------------------------
  519 // CITIQ s.r.o.
  520 #define HWPID_CITIQ       0x007
  521 
  522 // -------------------------------------------------------------------------------------------
  523 // Austyn International s.r.o.
  524 #define HWPID_AUSTYN      0x009
  525 
  526 // Room temperature controller
  527 // (0009_RoomTemperatureController.c)
  528 #define HWPID_AUSTYN__ROOM_CONTROLLER                 HWPID_CLS2( 0x0, HWPID_AUSTYN )    // 0x0009
  529 
  530 // Austyn repeater for radiator heads
  531 // (1009_RepHlaAust-02.c)
  532 #define HWPID_AUSTYN__RepHlaAust_02                   HWPID_CLS2( 0x1, HWPID_AUSTYN )    // 0x1009
  533 
  534 // Austyn radiator head
  535 // (2009_HlaAust-02.c)
  536 #define HWPID_AUSTYN__HlaAust_02                      HWPID_CLS2( 0x2, HWPID_AUSTYN )    // 0x2009
  537 
  538 // Austyn repeater for radiator heads + SET01
  539 // (3009_RepHlaAust-02-T.c)
  540 #define HWPID_AUSTYN__RepHlaAust_02_T                 HWPID_CLS2( 0x3, HWPID_AUSTYN )    // 0x3009
  541 
  542 // Austyn repeater for radiator heads, new version + TR-G
  543 // (4009_IQD-REP-04-05C.c)
  544 #define HWPID_AUSTYN__IQD_REP_04_05C                  HWPID_CLS2( 0x4, HWPID_AUSTYN )    // 0x4009
  545 
  546 // Austyn repeater for radiator heads, new version + TR-G, no temperature sensor
  547 // (5009_IQD-REP-04-03D.c)
  548 #define HWPID_AUSTYN__IQD_REP_04_03D                  HWPID_CLS2( 0x5, HWPID_AUSTYN )    // 0x5009
  549 
  550 // Austyn radiator head with G module (added by MŠp)
  551 // (6009_HlaAust-02.c)
  552 #define HWPID_AUSTYN__HlaAust_02_02A                  HWPID_CLS2( 0x6, HWPID_AUSTYN )    // 0x6009
  553 
  554 // -------------------------------------------------------------------------------------------
  555 // Aledo s.r.o.
  556 #define HWPID_ALEDO       0x00B
  557 
  558 // Room temperature controller
  559 // (000B_Aledo-Reader_R02A230.c)
  560 #define HWPID_ALEDO__READER_R02A230                   HWPID_CLS2( 0x0, HWPID_ALEDO )     // 0x000B
  561 
  562 // -------------------------------------------------------------------------------------------
  563 // SANELA spol. s r. o.
  564 #define HWPID_SANELA      0x00D
  565 
  566 // Sanela SL626 Person presence sensor
  567 // (000D_Sanela-SL626.c)
  568 #define HWPID_SANELA__SL626                           HWPID_CLS2( 0x0, HWPID_SANELA )    // 0x000D
  569 
  570 // Sanela SL626A sink sensor
  571 // (100D_Sanela-SL626A.c)
  572 #define HWPID_SANELA__SL626A                          HWPID_CLS2( 0x1, HWPID_SANELA )    // 0x100D
  573 
  574 // -------------------------------------------------------------------------------------------
  575 // TESLA Blatná, a.s.
  576 #define HWPID_TESLA_BLATNA  0x011
  577 
  578 // TESLA Blatná Smart City environmental module
  579 // (0011_TESLA_Blatna-EnvironmentalModule.c)
  580 #define HWPID_TESLA_BLATNA__EnvironmentalModule       HWPID_CLS2( 0x0, HWPID_TESLA_BLATNA )  // 0x0011
  581 
  582 // -------------------------------------------------------------------------------------------
  583 // JoTio Tech s.r.o.
  584 #define HWPID_JOTIO_TECH  0x013
  585 
  586 // IRIS
  587 #define HWPID_JOTIO_TECH__IRIS                        HWPID_CLS2( 0x0, HWPID_JOTIO_TECH )    // 0x0013
  588 
  589 // ALTAIR
  590 #define HWPID_JOTIO_TECH__ALTAIR                      HWPID_CLS2( 0x1, HWPID_JOTIO_TECH )    // 0x1013
  591 
  592 // -------------------------------------------------------------------------------------------
  593 // HARDWARIO s.r.o. (BigClown)
  594 #define HWPID_HARDWARIO  0x015
  595 
  596 // Presence sensor
  597 #define HWPID_HARDWARIO_PRESENCE_SENSOR               HWPID_CLS2( 0x0, HWPID_HARDWARIO )     // 0x0015
  598 
  599 // COOPER
  600 // (1015_HARDWARIO-COPPER.c)
  601 #define HWPID_HARDWARIO_COOPER                        HWPID_CLS2( 0x1, HWPID_HARDWARIO )     // 0x1015
  602 
  603 // -------------------------------------------------------------------------------------------
  604 // 4IOTECH s.r.o.
  605 #define HWPID_4IOTECH  0x017
  606 
  607 // 4IOT-SEN-01
  608 #define HWPID_4IOTECH_4IOT_SEN_01                     HWPID_CLS2( 0x0, HWPID_4IOTECH )       // 0x0017
  609 
  610 // -------------------------------------------------------------------------------------------
  611 // Liteplan Ltd.
  612 #define HWPID_LITEPLAN  0x019
  613 
  614 // IQD-DALI-01
  615 #define HWPID_LITEPLAN_IQD_DALI_01                    HWPID_CLS2( 0x0, HWPID_LITEPLAN )      // 0x0019
  616 
  617 // -------------------------------------------------------------------------------------------
  618 // Danlers https://www.danlers.co.uk/
  619 #define HWPID_DANLERS  0x01B
  620 
  621 // DANLERS-PIR
  622 // (001B_DANLERS-PIR.c)
  623 #define HWPID_DANLERS_PIR                             HWPID_CLS2( 0x0, HWPID_DANLERS )       // 0x001B
  624 
  625 //# Class #3 #################################################################################
  626 // Manufacturer: bits:0-11, bit.0=0, bit.3-9 != [0000000] (even numbers, but not 0x000)
  627 // Product: bits:12-15 (4 bits)
  628 //############################################################################################
  629 #ifdef __CC5X__
  630 #define HWPID_CLS3(prod,man) \
  631 #if prod < 0 || prod > 0xF \
  632 #error "HWPID_CLS3: invalid product number" \
  633 #endif \
  634 #if man <= 0 || man > 0xFFF || ( man & 0x3F8 ) == 0 || ( man & 1 ) != 0 \
  635 #error "HWPID_CLS3: invalid manufacturer number" \
  636 #endif \
  637 ( (uns16)(man) | ( (uns16)(prod) << 12 ) )
  638 #else
  639 #define HWPID_CLS3(prod,man) ( (uns16)(man) | ( (uns16)(prod) << 12 ) )
  640 #endif
  641 
  642 // -------------------------------------------------------------------------------------------
  643 // IQRF Tech s.r.o.
  644 #define HWPID_IQRF_TECH3      0x05E
  645 // For the fixed HWPID=C05E used by a special handler
  646 
  647 // (CustomDpaHandler-ChangeIQRFOS.c)
  648 #define HWPID_IQRF_TECH_ChangeIQRFOS                  HWPID_CLS3( 0xC, HWPID_IQRF_TECH3 ) // 0xC05E
  649 
  650 //# Class #4 #################################################################################
  651 // Manufacturer: bits:0-13, bit.0=1, bit.5-11 != [0000000] (odd numbers, never value 0x??F)
  652 // Product: bits:14-15 (2 bits)
  653 //############################################################################################
  654 #ifdef __CC5X__
  655 #define HWPID_CLS4(prod,man) \
  656 #if prod < 0 || prod > 0x3 \
  657 #error "HWPID_CLS4: invalid product number" \
  658 #endif \
  659 #if man < 0 || man > 0x3FFF || ( man & 1 ) == 0  || ( man & 0xFE0 ) == 0 || ( man & 0xF ) == 0xF \
  660 #error "HWPID_CLS4: invalid manufacturer number" \
  661 #endif \
  662 ( (uns16)(man) | ( (uns16)(prod) << 14 ) )
  663 #else
  664 #define HWPID_CLS4(prod,man) ( (uns16)(man) | ( (uns16)(prod) << 14 ) )
  665 #endif
  666 
  667 // -------------------------------------------------------------------------------------------
  668 
  669 //############################################################################################
  670 #endif  // _IQRFSTD_HWPID_
  671 //############################################################################################