mirror of
https://github.com/espressif/esp-modbus.git
synced 2025-09-26 06:31:01 +02:00
Merge branch 'bugfix/master_dd_allow_arbitrary_descriptor_sizes' into 'main'
master dd allow arbitrary descriptor sizes See merge request idf/esp-modbus!129
This commit is contained in:
@@ -133,10 +133,11 @@ typedef enum {
|
||||
PARAM_SIZE_FLOAT = 0x04, /*!< Float 32 size */
|
||||
PARAM_SIZE_ASCII = 0x08, /*!< ASCII size default*/
|
||||
PARAM_SIZE_ASCII24 = 0x18, /*!< ASCII24 size */
|
||||
PARAM_SIZE_ASCII_MAX = 0xFF, /*!< ASCII maximum size */
|
||||
PARAM_SIZE_I64 = 0x08, /*!< Signed integer 64 size */
|
||||
PARAM_SIZE_U64 = 0x08, /*!< Unsigned integer 64 size */
|
||||
PARAM_SIZE_DOUBLE = 0x08, /*!< Double 64 size */
|
||||
PARAM_MAX_SIZE
|
||||
PARAM_SIZE_MAX = 0x7FFF
|
||||
} mb_descr_size_t;
|
||||
|
||||
/**
|
||||
@@ -169,7 +170,7 @@ typedef struct {
|
||||
uint16_t mb_size; /*!< Size of mb parameter in registers */
|
||||
uint32_t param_offset; /*!< Parameter name (OFFSET in the parameter structure or address of instance) */
|
||||
mb_descr_type_t param_type; /*!< Float, U8, U16, U32, ASCII, etc. */
|
||||
mb_descr_size_t param_size; /*!< Number of bytes in the parameter. */
|
||||
size_t param_size; /*!< Number of bytes in the parameter. */
|
||||
mb_parameter_opt_t param_opts; /*!< Parameter options used to check limits and etc. */
|
||||
mb_param_perms_t access; /*!< Access permissions based on mode */
|
||||
} mb_parameter_descriptor_t;
|
||||
|
@@ -16,7 +16,8 @@ enum {
|
||||
|
||||
// Enumeration of all supported CIDs for device (used in parameter definition table)
|
||||
enum {
|
||||
CID_DEV_REG0 = 0
|
||||
CID_DEV_REG0 = 0,
|
||||
CID_DEV_STRING
|
||||
};
|
||||
|
||||
#define STR(fieldname) ((const char*)( fieldname ))
|
||||
@@ -26,11 +27,13 @@ static void *pmaster_handle = nullptr;
|
||||
static void *pslave_handle = nullptr;
|
||||
|
||||
// Example Data (Object) Dictionary for Modbus parameters
|
||||
const mb_parameter_descriptor_t dummy_dict[] = {
|
||||
constexpr mb_parameter_descriptor_t dummy_dict[] = {
|
||||
// CID, Name, Units, Modbus addr, register type, Modbus Reg Start Addr, Modbus Reg read length,
|
||||
// Instance offset (NA), Instance type, Instance length (bytes), Options (NA), Permissions
|
||||
{ CID_DEV_REG0, STR("MB_hold_reg-0"), STR("Data"), MB_DEVICE_ADDR1, MB_PARAM_HOLDING, 0, 1,
|
||||
0, PARAM_TYPE_U16, PARAM_SIZE_U16, OPTS( 0,0,0 ), PAR_PERMS_READ_WRITE_TRIGGER },
|
||||
{ CID_DEV_STRING, STR("MB_hold_reg string"), STR("String"), MB_DEVICE_ADDR1, MB_PARAM_HOLDING, 2, 30,
|
||||
0, PARAM_TYPE_ASCII, 60, OPTS( 0,0,0 ), PAR_PERMS_READ_WRITE_TRIGGER }
|
||||
};
|
||||
|
||||
// Calculate number of parameters in the table
|
||||
|
Reference in New Issue
Block a user