1 // *********************************************************************
    2 //   IQRF HWPIDs                                                       *
    3 // *********************************************************************
    4 // Copyright (c) IQRF Tech s.r.o.
    5 //
    6 // File:    $RCSfile: IQRF_HWPID.h,v $
    7 // Version: $Revision: 1.79 $
    8 // Date:    $Date: 2020/04/03 08:53:55 $
    9 //
   10 // Revision history:
   11 //   2020/04/03  Release for DPA 4.14
   12 //   2020/02/27  Release for DPA 4.13
   13 //   2020/01/09  Release for DPA 4.12
   14 //   2019/12/11  Release for DPA 4.11
   15 //   2019/10/09  Release for DPA 4.10
   16 //   2019/06/12  Release for DPA 4.03
   17 //   2019/06/03  Release for DPA 4.02
   18 //   2019/03/07  Release for DPA 4.01
   19 //   2019/01/20  Release for DPA 4.00
   20 //   2018/10/25  Release for DPA 3.03
   21 //   2017/11/16  Release for DPA 3.02
   22 //   2017/08/14  Release for DPA 3.01
   23 //
   24 // *********************************************************************
   25 
   26 // Online DPA documentation https://doc.iqrf.org/DpaTechGuide/
   27 // IQRF Standards documentation https://www.iqrfalliance.org/iqrf-interoperability/
   28 
   29 #ifndef _IQRFSTD_HWPID_
   30 #define _IQRFSTD_HWPID_
   31 
   32 //# Class #1 #################################################################################
   33 // Manufacturer: bits:0-9, bit.0=0 (even numbers, but not 0x000)
   34 // Product: bits:10-15 (6 bits)
   35 //############################################################################################
   36 #ifdef __CC5X__
   37 #define HWPID_CLS1(prod,man) \
   38 #if prod < 0 || prod > 0b11.1111 \
   39 #error "HWPID_CLS1: invalid product number" \
   40 #endif \
   41 #if man == 0 || man > 0x3FF || ( man & 1 ) != 0 \
   42 #error "HWPID_CLS1: invalid manufacturer number" \
   43 #endif \
   44 ( (uns16)(man) | ( (uns16)(prod) << 10 ) )
   45 #else
   46 #define HWPID_CLS1(prod,man) ( (uns16)(man) | ( (uns16)(prod) << 10 ) )
   47 #endif
   48 
   49 // -------------------------------------------------------------------------------------------
   50 // IQRF Tech s.r.o.
   51 #define HWPID_IQRF_TECH   0x002
   52 
   53 // DDC-SE-01 sensor example
   54 // (0002_DDC-SE01.c)
   55 #define HWPID_IQRF_TECH__DEMO_DDC_SE01                HWPID_CLS1( 0x00, HWPID_IQRF_TECH ) // 0x0002
   56 
   57 // DDC-SE-01 + DDC-RE-01 sensor example
   58 // (0402_DDC-SE+RE.c)
   59 #define HWPID_IQRF_TECH__DEMO_DDC_SE01_RE01           HWPID_CLS1( 0x01, HWPID_IQRF_TECH ) // 0x0402
   60 
   61 // TR temperature sensor example
   62 // (0802_TrThermometer.c)
   63 #define HWPID_IQRF_TECH__DEMO_TR_THERMOMETER          HWPID_CLS1( 0x02, HWPID_IQRF_TECH ) // 0x0802
   64 
   65 // Binary output example using LEDs and DDC-RE-01
   66 // (0C02_BinaryOutput-Template.c)
   67 #define HWPID_IQRF_TECH__DEMO_BINARY_OUTPUT           HWPID_CLS1( 0x03, HWPID_IQRF_TECH ) // 0x0C02
   68 
   69 // Light example
   70 // (1002_Light-Template.c)
   71 #define HWPID_IQRF_TECH__DEMO_LIGHT                   HWPID_CLS1( 0x04, HWPID_IQRF_TECH ) // 0x1002
   72 
   73 // Sensor template
   74 // (1402_Sensor-Template.c)
   75 #define HWPID_IQRF_TECH__DEMO_SENSOR_TEMPLATE         HWPID_CLS1( 0x05, HWPID_IQRF_TECH ) // 0x1402
   76 
   77 // ToDo Description DK-SW2-01
   78 // ToDo (?.c)
   79 #define HWPID_IQRF_TECH__DK_SW2_01                    HWPID_CLS1( 0x06, HWPID_IQRF_TECH ) // 0x1802
   80 
   81 // ToDo Description IQD-SW1-01
   82 // ToDo (?.c)
   83 #define HWPID_IQRF_TECH__IQD_SW1_01                   HWPID_CLS1( 0x07, HWPID_IQRF_TECH ) // 0x1C02
   84 
   85 // ToDo Description IQD-SW2-01
   86 // ToDo (?.c)
   87 #define HWPID_IQRF_TECH__IQD_SW2_01                   HWPID_CLS1( 0x08, HWPID_IQRF_TECH ) // 0x2002
   88 
   89 // ToDo Description IQD-RC3-01
   90 // ToDo (?.c)
   91 #define HWPID_IQRF_TECH__IQD_RC3_01                   HWPID_CLS1( 0x09, HWPID_IQRF_TECH ) // 0x2402
   92 
   93 // ToDo Description IQD-SM1
   94 // ToDo (2802_IQD-SM1.c)
   95 #define HWPID_IQRF_TECH__IQD_SM1                      HWPID_CLS1( 0x0A, HWPID_IQRF_TECH ) // 0x2802
   96 
   97 // ToDo Description IQD-RC4-01
   98 // ToDo (?.c)
   99 #define HWPID_IQRF_TECH__RC4_01                       HWPID_CLS1( 0x0B, HWPID_IQRF_TECH ) // 0x2C02
  100 
  101 // ToDo Description IQD-RC4-02
  102 // ToDo (?.c)
  103 #define HWPID_IQRF_TECH__RC4_02                       HWPID_CLS1( 0x0C, HWPID_IQRF_TECH ) // 0x3002
  104 
  105 // ToDo Description IQD-REP-01
  106 // ToDo (?.c)
  107 #define HWPID_IQRF_TECH__REP_01                       HWPID_CLS1( 0x0D, HWPID_IQRF_TECH ) // 0x3402
  108 
  109 // ToDo Description IQD-SW1-02
  110 // ToDo (?.c)
  111 #define HWPID_IQRF_TECH__IQD_SW1_02                   HWPID_CLS1( 0x0F, HWPID_IQRF_TECH ) // 0x3C02
  112 
  113 // DDC-SE-01 + DDC-RE-01 sensor + binary output example - LP version
  114 // (4402_DDC-SE+RE_LP.c)
  115 #define HWPID_IQRF_TECH__DEMO_DDC_SE01_RE01_LP        HWPID_CLS1( 0x11, HWPID_IQRF_TECH ) // 0x4402
  116 
  117 // DDC-RE-01 binary output example - LP version
  118 // (4802_DDC-RE_LP.c)
  119 #define HWPID_IQRF_TECH__DEMO_DDC_RE01_LP             HWPID_CLS1( 0x12, HWPID_IQRF_TECH ) // 0x4802
  120 
  121 // DDC-SE-01 sensor example - LP version
  122 // (4C02_DDC-SE_LP.c)
  123 #define HWPID_IQRF_TECH__DEMO_DDC_SE01_LP             HWPID_CLS1( 0x13, HWPID_IQRF_TECH ) // 0x4C02
  124 
  125 // IQD_REP_02_W1D
  126 // (5002_IQD_REP_02_W1D.c + IQD_REP_02_x1D)
  127 #define HWPID_IQRF_TECH__IQD_REP_02_W1D               HWPID_CLS1( 0x14, HWPID_IQRF_TECH ) // 0x5002
  128 
  129 // IQD_REP_02_S1D
  130 // (5402_IQD_REP_02_S1D.c + IQD_REP_02_x1D)
  131 #define HWPID_IQRF_TECH__IQD_REP_02_S1D               HWPID_CLS1( 0x15, HWPID_IQRF_TECH ) // 0x5402
  132 
  133 // DALI_TEMPLATE
  134 // (5802_DALI_TEMPLATE.c)
  135 #define HWPID_IQRF_TECH__DALI_TEMPLATE                HWPID_CLS1( 0x16, HWPID_IQRF_TECH ) // 0x5802
  136 
  137 // IQD-REP-03
  138 // (5C02_P-IQD-REP-03.c)
  139 #define HWPID_IQRF_TECH__P_IQD_REP_03                 HWPID_CLS1( 0x17, HWPID_IQRF_TECH ) // 0x5C02
  140 
  141 // IQD_REP_02_W2D
  142 // (6002_IQD_REP_02_W2D.c + IQD_REP_02_x1D)
  143 #define HWPID_IQRF_TECH__IQD_REP_02_W2D               HWPID_CLS1( 0x18, HWPID_IQRF_TECH ) // 0x6002
  144 
  145 // IQD_REP_02_S2D
  146 // (6402_IQD_REP_02_S2D.c + IQD_REP_02_x1D)
  147 #define HWPID_IQRF_TECH__IQD_REP_02_S2D               HWPID_CLS1( 0x19, HWPID_IQRF_TECH ) // 0x6402
  148 
  149 // -------------------------------------------------------------------------------------------
  150 // MICRORISC s.r.o.
  151 #define HWPID_MICRORISC   0x004
  152 
  153 // IQD_REP_02
  154 // (?.c)
  155 #define HWPID_MICRORISC__IQD_REP_02               HWPID_CLS1( 0x00, HWPID_MICRORISC )     // 0x0004
  156 
  157 // Radar Counter
  158 // (0404_RadarCounter.c)
  159 #define HWPID_MICRORISC__RADAR_COUNTER            HWPID_CLS1( 0x01, HWPID_MICRORISC )     // 0x0404
  160 
  161 // IQD-DALI-01
  162 // (0804_IQD-DALI-01.c)
  163 #define HWPID_MICRORISC__IQD_DALI_01              HWPID_CLS1( 0x02, HWPID_MICRORISC )     // 0x0804
  164 
  165 // P-IQD-TEMP-01
  166 // (0C04_P-IQD-TEMP-01.c)
  167 #define HWPID_MICRORISC__P_IQD_TEMP_01            HWPID_CLS1( 0x03, HWPID_MICRORISC )     // 0x0C04
  168 
  169 // IQD-TEMP-02
  170 // (1004_IQD-TEMP-02.c)
  171 #define HWPID_MICRORISC__IQD_TEMP_02              HWPID_CLS1( 0x04, HWPID_MICRORISC )     // 0x1004
  172 
  173 //# Class #2 #################################################################################
  174 // Manufacturer: bits:0-11, bit.0=1 (odd numbers, never value 0x??F)
  175 // Product: bits:12-15 (4 bits)
  176 //############################################################################################
  177 #ifdef __CC5X__
  178 #define HWPID_CLS2(prod,man) \
  179 #if prod < 0 || prod > 0b1111 \
  180 #error "HWPID_CLS2: invalid product number" \
  181 #endif \
  182 #if man > 0xFFF || ( man & 1 ) == 0 || ( max & 0xF ) == 0xF \
  183 #error "HWPID_CLS2: invalid manufacturer number" \
  184 #endif \
  185 ( (uns16)(man) | ( (uns16)(prod) << 12 ) )
  186 #else
  187 #define HWPID_CLS2(prod,man) ( (uns16)(man) | ( (uns16)(prod) << 12 ) )
  188 #endif
  189 // -------------------------------------------------------------------------------------------
  190 // PROTRONIX s.r.o.
  191 #define HWPID_PROTRONIX   0x001
  192 
  193 // Temperature+Humidity+CO2 sensor
  194 // (0001_Protronix-T+RH+CO2.c)
  195 #define HWPID_PROTRONIX__TEMP_HUM_CO2                 HWPID_CLS2( 0x0, HWPID_PROTRONIX ) // 0x0001
  196 
  197 // Temperature+Humidity+VOC sensor
  198 // (1001_Protronix-T+RH+VOC.c)
  199 #define HWPID_PROTRONIX__TEMP_HUM_VOC                 HWPID_CLS2( 0x1, HWPID_PROTRONIX ) // 0x1001
  200 
  201 // Temperature+Humidity+CO2 sensor + Relay
  202 // (2001_Protronix-T+RH+CO2+Relay.c)
  203 #define HWPID_PROTRONIX__TEMP_HUM_CO2_RELAY           HWPID_CLS2( 0x2, HWPID_PROTRONIX ) // 0x2001
  204 
  205 // Temperature+Humidity sensor
  206 // (3001_Protronix-T+RH.c)
  207 #define HWPID_PROTRONIX__TEMP_HUM                     HWPID_CLS2( 0x3, HWPID_PROTRONIX ) // 0x3001
  208 
  209 // Temperature+Humidity+CO2 sensor [LP]
  210 // (4001_Protronix-LP-T+RH+CO2.c)
  211 #define HWPID_PROTRONIX__LP_TEMP_HUM_CO2              HWPID_CLS2( 0x4, HWPID_PROTRONIX ) // 0x4001
  212 
  213 // Temperature+Humidity sensor [LP]
  214 // (5001_Protronix-LP-T+RH.c)
  215 #define HWPID_PROTRONIX__LP_TEMP_HUM                  HWPID_CLS2( 0x5, HWPID_PROTRONIX ) // 0x5001
  216 
  217 // PM 2,5 sensor [LP]
  218 // (6001_Protronix-NLII_PM25.c)
  219 #define HWPID_PROTRONIX__NLII_PM25                    HWPID_CLS2( 0x6, HWPID_PROTRONIX ) // 0x6001
  220 
  221 // -------------------------------------------------------------------------------------------
  222 // NETIO products a.s.
  223 #define HWPID_NETIO       0x003
  224 
  225 // Cobra 1 - 1x power plug
  226 // (0003_Netio-Cobra1.c)
  227 #define HWPID_NETIO__COBRA1                           HWPID_CLS2( 0x0, HWPID_NETIO )     // 0x0003
  228 
  229 // Cobra 1 - 1x power plug [LP]
  230 // (1003_Netio-LP-Cobra1.c)
  231 #define HWPID_NETIO__LP_COBRA1                        HWPID_CLS2( 0x1, HWPID_NETIO )     // 0x1003
  232 
  233 // -------------------------------------------------------------------------------------------
  234 // DATmoLUX a.s.
  235 #define HWPID_DATMOLUX    0x005
  236 
  237 // DATmoLUX Light
  238 // 0005_DATmoLUX-Light.*
  239 #define HWPID_DATMOLUX__LIGHT                         HWPID_CLS2( 0x0, HWPID_DATMOLUX )  // 0x0005
  240 
  241 // -------------------------------------------------------------------------------------------
  242 // CITIQ s.r.o.
  243 #define HWPID_CITIQ       0x007
  244 
  245 // -------------------------------------------------------------------------------------------
  246 // Austyn International s.r.o.
  247 #define HWPID_AUSTYN      0x009
  248 
  249 // Room temperature controller
  250 // (0009_RoomTemperatureController.c)
  251 #define HWPID_AUSTYN__ROOM_CONTROLLER                 HWPID_CLS2( 0x0, HWPID_AUSTYN )    // 0x0009
  252 
  253 // -------------------------------------------------------------------------------------------
  254 // Aledo s.r.o.
  255 #define HWPID_ALEDO       0x00B
  256 
  257 // Room temperature controller
  258 // (000B_Aledo-Reader_R02A230.c)
  259 #define HWPID_ALEDO__READER_R02A230                   HWPID_CLS2( 0x0, HWPID_ALEDO )     // 0x000B
  260 
  261 // -------------------------------------------------------------------------------------------
  262 // SANELA spol. s r. o.
  263 #define HWPID_SANELA      0x00D
  264 
  265 // Sanela SL626 Person presence sensor
  266 // (000D_Sanela-SL626.c)
  267 #define HWPID_SANELA__SL626                           HWPID_CLS2( 0x0, HWPID_SANELA )    // 0x000D
  268 
  269 // Sanela SL626A sink sensor
  270 // (100D_Sanela-SL626A.c)
  271 #define HWPID_SANELA__SL626A                          HWPID_CLS2( 0x1, HWPID_SANELA )    // 0x100D
  272 
  273 // -------------------------------------------------------------------------------------------
  274 // TESLA Blatná, a.s.
  275 #define HWPID_TESLA_BLATNA  0x011
  276 
  277 // TESLA Blatná Smart City environmental module
  278 // (0011_TESLA_Blatna-EnvironmentalModule.c)
  279 #define HWPID_TESLA_BLATNA__EnvironmentalModule       HWPID_CLS2( 0x0, HWPID_TESLA_BLATNA )  // 0x0011
  280 
  281 // -------------------------------------------------------------------------------------------
  282 // JoTio Tech s.r.o.
  283 #define HWPID_JOTIO_TECH  0x013
  284 
  285 // IRIS
  286 #define HWPID_JOTIO_TECH__IRIS                        HWPID_CLS2( 0x0, HWPID_JOTIO_TECH )    // 0x0013
  287 
  288 // ALTAIR
  289 #define HWPID_JOTIO_TECH__ALTAIR                      HWPID_CLS2( 0x1, HWPID_JOTIO_TECH )    // 0x1013
  290 
  291 // -------------------------------------------------------------------------------------------
  292 // HARDWARIO s.r.o. (BigClown)
  293 #define HWPID_HARDWARIO  0x015
  294 
  295 // Presence sensor
  296 #define HWPID_HARDWARIO_PRESENCE_SENSOR               HWPID_CLS2( 0x0, HWPID_HARDWARIO )     // 0x0015
  297 
  298 // COOPER
  299 // (1015_HARDWARIO-COPPER.c)
  300 #define HWPID_HARDWARIO_COOPER                        HWPID_CLS2( 0x1, HWPID_HARDWARIO )     // 0x1015
  301 
  302 // -------------------------------------------------------------------------------------------
  303 // 4IOTECH s.r.o.
  304 #define HWPID_4IOTECH  0x017
  305 
  306 // 4IOT-SEN-01
  307 #define HWPID_4IOTECH_4IOT_SEN_01                     HWPID_CLS2( 0x0, HWPID_4IOTECH )       // 0x0017
  308 
  309 // -------------------------------------------------------------------------------------------
  310 // Liteplan Ltd.
  311 #define HWPID_LITEPLAN  0x019
  312 
  313 // IQD-DALI-01
  314 #define HWPID_LITEPLAN_IQD_DALI_01                    HWPID_CLS2( 0x0, HWPID_LITEPLAN )      // 0x0019
  315 
  316 // -------------------------------------------------------------------------------------------
  317 // IQRF Solutions s.r.o.
  318 #define HWPID_IQRF_SOLUTIONS  0x507
  319 
  320 // Water Quality Sensor
  321 #define HWPID_IQRF_SOLUTIONS_WATER_QUALITY_SENSOR     HWPID_CLS2( 0x0, HWPID_IQRF_SOLUTIONS )    // 0x0507
  322 
  323 // Air Quality Sensor
  324 #define HWPID_IQRF_SOLUTIONS_AIR_QUALITY_SENSOR       HWPID_CLS2( 0x1, HWPID_IQRF_SOLUTIONS )    // 0x1507
  325 
  326 // IQRF RS232 Bridge
  327 #define HWPID_IQRF_SOLUTIONS_IQRF_RE232_BRIDGE        HWPID_CLS2( 0x2, HWPID_IQRF_SOLUTIONS )    // 0x2507
  328 
  329 #endif  // _IQRFSTD_HWPID_
  330 
  331 //############################################################################################