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