Added device identification register

This commit is contained in:
Jan Mrna 2022-06-10 16:11:00 +02:00
parent 2a31f51494
commit 990e1ae908

View File

@ -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;
}