From 990e1ae9085a23bd795f9153149cf943449e6b68 Mon Sep 17 00:00:00 2001 From: Jan Mrna Date: Fri, 10 Jun 2022 16:11:00 +0200 Subject: [PATCH] Added device identification register --- fw/Core/Src/main.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/fw/Core/Src/main.c b/fw/Core/Src/main.c index 65c85c2..7732ab1 100644 --- a/fw/Core/Src/main.c +++ b/fw/Core/Src/main.c @@ -92,8 +92,8 @@ enum REGISTER_NUM_TYPICAL_PARTICLE_SIZE = 30027, /* nm */ REGISTER_NUM_T_SCD4x = 30028, /* deg C */ REGISTER_NUM_T_SCD4x_F = 30029, /* deg F */ - REGISTER_NUM_RH_SCD4x = 30030 /* % */ - + REGISTER_NUM_RH_SCD4x = 30030, /* % */ + REGISTER_NUM_DEVICE_IDENTIFIER = 30100 /* VOC Index has initial blackout beriod, when the data is not ready. VOC index is 0 during this period */ } data_registers_numbers; @@ -112,13 +112,20 @@ enum enum { - REGISTER_NUM_VENDOR_NAME = 30010, - REGISTER_NUM_PRODUCT_CODE = 30011, - REGISTER_NUM_REVISION = 30012, - REGISTER_NUM_PRODUCT_NAME = 30013, - REGISTER_NUM_SERIAL_NUMBER = 30014 + REGISTER_NUM_VENDOR_NAME = 30050, + REGISTER_NUM_PRODUCT_CODE = 30051, + REGISTER_NUM_REVISION = 30052, + REGISTER_NUM_PRODUCT_NAME = 30033, + REGISTER_NUM_SERIAL_NUMBER = 30054, } identification_registers_numbers; +/* + * Device type specification: TODO improve and move to external library + */ + +#define DEVICE_IDENTIFIER 0xbeef +const uint16_t device_identifier = DEVICE_IDENTIFIER; + /* Variables to store the measured data */ int16_t T_SCD4x, T_SHT4x, TF_SCD4x, TF_SHT4x; uint16_t CO2, RH_SCD4x, RH_SHT4x; @@ -944,6 +951,8 @@ int8_t modbus_slave_callback(modbus_transaction_t *transaction) case REGISTER_NUM_RH_SCD4x: transaction->input_registers[i] = (uint16_t)RH_SCD4x; break; + case REGISTER_NUM_DEVICE_IDENTIFIER: + transaction->input_registers[i] = (uint16_t)device_identifier; default: return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED; }