elemy-sensortree 1.0.0
Macros | Enumerations | Functions | Variables
el_sensorsnode_blob.c File Reference

Parse blob (blobmsg) and create blob (blobmsg) for el_sensorsnode.h types. More...

#include "stdint.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <errno.h>
#include <unistd.h>
#include <libubox/blobmsg.h>
#include "elsensortree/el_sensorsnode_blob.h"
#include "elsensortree/el_sensorsnode_json.h"
#include "libubox/blobmsg_json.h"
Include dependency graph for el_sensorsnode_blob.c:

Macros

#define _GNU_SOURCE
 
#define NODE_STATUS_AVAILABLE_KEY   "node_status_available"
 
#define NODE_STATUS_DATAERROR_KEY   "node_status_dataerror"
 

Enumerations

enum  {
  NODE_FW_VERSION_SW_PATCH_ENUM , NODE_FW_VERSION_SW_MINOR_ENUM , NODE_FW_VERSION_SW_MAJOR_ENUM , NODE_FW_VERSION_BOOT_ENUM ,
  NODE_FW_VERSION_HW_REVISION_ENUM , NODE_FW_VERSION_PROTOCOL_ENUM , NODE_FW_VERSION_ENUM_MAX
}
 
enum  {
  NODE_ADDR_A0_ENUM , NODE_ADDR_A1_ENUM , NODE_ADDR_A2_ENUM , NODE_ADDR_A3_ENUM ,
  NODE_ADDR_ENUM_MAX
}
 
enum  { NODE_SERIAL_NUM_ENUM , NODE_SERIAL_NUM_ENUM_MAX }
 
enum  {
  NODE_INFO_MODEL_ENUM , NODE_INFO_SERIAL_NUMBER_ENUM , NODE_INFO_FW_VERSION_ENUM , NODE_INFO_ADDR_ENUM ,
  NODE_INFO_CONFIG_CRC_ENUM , NODE_INFO_ENUM_MAX
}
 
enum  { GET_NODE_INFO_ENUM , GET_NODE_INFO_ENUM_MAX }
 
enum  {
  SENSOR_VALUE_STATE_ENUM , SENSOR_VALUE_TYPE_ENUM , SENSOR_VALUE_ANALOG_VALUE_ENUM , SENSOR_VALUE_DISCRETE_VALUE_ENUM ,
  SENSOR_VALUE_DISCRETE_COUNT_ENUM , SENSOR_VALUE_ENUM_MAX
}
 
enum  {
  SENSORS_NODE_NODE_INFO_ENUM , SENSORS_NODE_STATUS_AVAILABLE_ENUM , SENSORS_NODE_STATUS_DATAERROR_ENUM , SENSORS_NODE_VALUES_CNT_ENUM ,
  SENSORS_NODE_VALUES_ENUM , SENSORS_NODE_ENUM_MAX
}
 

Functions

int ps_blobmsg_parse (const struct blobmsg_policy *policy, int policy_len, struct blob_attr **tb, void *data, unsigned int len)
 
void dump_blob_attr (struct blob_attr *attr, char *msg)
 
int ps_parse_blob (const struct blobmsg_policy *policy, int cnt_policy, struct blob_attr **attrs, struct blob_attr *attr, char **err_msg)
 
int get_table_field (struct blob_attr *attr, char *field_name, int type, struct blob_attr **res, char **err_msg)
 
int blob_node_fw_version (struct blob_buf *bb, node_fw_version_t *p, bool named, char **err_msg)
 put into blob_buf node_fw_version_t as table More...
 
int unblob_node_fw_version (node_fw_version_t *p, struct blob_attr *attr, char **err_msg)
 put into blob_buf node_fw_version_t as table More...
 
int unblob_node_addr (node_addr_t *p, struct blob_attr *attr, char **err_msg)
 
int blob_node_addr (struct blob_buf *bb, node_addr_t *p)
 
int unblob_node_serial_num (node_serial_num_t *p, struct blob_attr *attr, char **err_msg)
 
int blob_node_serial_num (struct blob_buf *bb, node_serial_num_t *p)
 
int unblob_node_info (node_info_t *p, struct blob_attr *attr, char **err_msg)
 
int blob_node_info (struct blob_buf *bb, node_info_t *p)
 
int get_node_info (struct blob_attr *attr, struct blob_attr **res, char **err_msg)
 extract ptr to node_info attr from table object by name NODE_INFO_KEY More...
 
int unblob_sensor_value (sensor_value_t *p, struct blob_attr *attr, char **err_msg)
 
int blob_sensor_value (struct blob_buf *bb, sensor_value_t *p, char *name)
 
int unblob_sensors_node (sensors_node_t *p, struct blob_attr *attr, char **err_msg)
 
int blob_sensors_node (struct blob_buf *bb, sensors_node_t *p, int named)
 

Variables

static const struct blobmsg_policy node_fw_version_policy [NODE_FW_VERSION_ENUM_MAX]
 
static const struct blobmsg_policy node_addr_policy [NODE_ADDR_ENUM_MAX]
 
static const struct blobmsg_policy node_serial_num_policy [NODE_SERIAL_NUM_ENUM_MAX]
 
static const struct blobmsg_policy node_info_policy [NODE_INFO_ENUM_MAX]
 
static const struct blobmsg_policy get_node_info_policy [GET_NODE_INFO_ENUM_MAX]
 
static const struct blobmsg_policy sensor_value_policy [SENSOR_VALUE_ENUM_MAX]
 
static const struct blobmsg_policy sensor_node_policy [SENSORS_NODE_ENUM_MAX]
 

Detailed Description

Parse blob (blobmsg) and create blob (blobmsg) for el_sensorsnode.h types.

Created on: 10 апр. 2024 г. Author: ps

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

◆ NODE_STATUS_AVAILABLE_KEY

#define NODE_STATUS_AVAILABLE_KEY   "node_status_available"

◆ NODE_STATUS_DATAERROR_KEY

#define NODE_STATUS_DATAERROR_KEY   "node_status_dataerror"

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
NODE_FW_VERSION_SW_PATCH_ENUM 
NODE_FW_VERSION_SW_MINOR_ENUM 
NODE_FW_VERSION_SW_MAJOR_ENUM 
NODE_FW_VERSION_BOOT_ENUM 
NODE_FW_VERSION_HW_REVISION_ENUM 
NODE_FW_VERSION_PROTOCOL_ENUM 
NODE_FW_VERSION_ENUM_MAX 

◆ anonymous enum

anonymous enum
Enumerator
NODE_ADDR_A0_ENUM 
NODE_ADDR_A1_ENUM 
NODE_ADDR_A2_ENUM 
NODE_ADDR_A3_ENUM 
NODE_ADDR_ENUM_MAX 

◆ anonymous enum

anonymous enum
Enumerator
NODE_SERIAL_NUM_ENUM 
NODE_SERIAL_NUM_ENUM_MAX 

◆ anonymous enum

anonymous enum
Enumerator
NODE_INFO_MODEL_ENUM 
NODE_INFO_SERIAL_NUMBER_ENUM 
NODE_INFO_FW_VERSION_ENUM 
NODE_INFO_ADDR_ENUM 
NODE_INFO_CONFIG_CRC_ENUM 
NODE_INFO_ENUM_MAX 

◆ anonymous enum

anonymous enum
Enumerator
GET_NODE_INFO_ENUM 
GET_NODE_INFO_ENUM_MAX 

◆ anonymous enum

anonymous enum
Enumerator
SENSOR_VALUE_STATE_ENUM 
SENSOR_VALUE_TYPE_ENUM 
SENSOR_VALUE_ANALOG_VALUE_ENUM 
SENSOR_VALUE_DISCRETE_VALUE_ENUM 
SENSOR_VALUE_DISCRETE_COUNT_ENUM 
SENSOR_VALUE_ENUM_MAX 

◆ anonymous enum

anonymous enum
Enumerator
SENSORS_NODE_NODE_INFO_ENUM 
SENSORS_NODE_STATUS_AVAILABLE_ENUM 
SENSORS_NODE_STATUS_DATAERROR_ENUM 
SENSORS_NODE_VALUES_CNT_ENUM 
SENSORS_NODE_VALUES_ENUM 
SENSORS_NODE_ENUM_MAX 

Function Documentation

◆ blob_node_addr()

int blob_node_addr ( struct blob_buf *  bb,
node_addr_t p 
)
Here is the caller graph for this function:

◆ blob_node_fw_version()

int blob_node_fw_version ( struct blob_buf *  bb,
node_fw_version_t *  p,
bool  named,
char **  err_msg 
)

put into blob_buf node_fw_version_t as table

Parameters
bbptr to struct blob_buf to add data to
pptr to source node_fw_version_t
Returns
on success 0
on error error_code from header. In this case into err_msg will put ptr to error message.
Here is the caller graph for this function:

◆ blob_node_info()

int blob_node_info ( struct blob_buf *  bb,
node_info_t p 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ blob_node_serial_num()

int blob_node_serial_num ( struct blob_buf *  bb,
node_serial_num_t *  p 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ blob_sensor_value()

int blob_sensor_value ( struct blob_buf *  bb,
sensor_value_t *  p,
char *  name 
)
Here is the caller graph for this function:

◆ blob_sensors_node()

int blob_sensors_node ( struct blob_buf *  bb,
sensors_node_t *  p,
int  named 
)
Here is the call graph for this function:

◆ dump_blob_attr()

void dump_blob_attr ( struct blob_attr *  attr,
char *  msg 
)
Here is the caller graph for this function:

◆ get_node_info()

int get_node_info ( struct blob_attr *  attr,
struct blob_attr **  res,
char **  err_msg 
)

extract ptr to node_info attr from table object by name NODE_INFO_KEY

Parameters
attrptr to table where search NODE_INFO_KEY field \err_msg holder for error message
Returns
0 on success and *res ptr to NODE_INFO_KEY attr
-1 on error and *err_msg ptr to error message

◆ get_table_field()

int get_table_field ( struct blob_attr *  attr,
char *  field_name,
int  type,
struct blob_attr **  res,
char **  err_msg 
)

◆ ps_blobmsg_parse()

int ps_blobmsg_parse ( const struct blobmsg_policy *  policy,
int  policy_len,
struct blob_attr **  tb,
void *  data,
unsigned int  len 
)
Here is the call graph for this function:

◆ ps_parse_blob()

int ps_parse_blob ( const struct blobmsg_policy *  policy,
int  cnt_policy,
struct blob_attr **  attrs,
struct blob_attr *  attr,
char **  err_msg 
)

◆ unblob_node_addr()

int unblob_node_addr ( node_addr_t p,
struct blob_attr *  attr,
char **  err_msg 
)
Here is the caller graph for this function:

◆ unblob_node_fw_version()

int unblob_node_fw_version ( node_fw_version_t *  p,
struct blob_attr *  attr,
char **  err_msg 
)

put into blob_buf node_fw_version_t as table

Parameters
pptr to node_fw_version_t target to fill
attrptr to blob_attr with object data node_fw_version_t
err_msgif not NULL ptr to return error message if return != 0
Returns
on success 0
on error. error_code from header. In this case into err_msg will put ptr to error message.
Here is the caller graph for this function:

◆ unblob_node_info()

int unblob_node_info ( node_info_t p,
struct blob_attr *  attr,
char **  err_msg 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ unblob_node_serial_num()

int unblob_node_serial_num ( node_serial_num_t *  p,
struct blob_attr *  attr,
char **  err_msg 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ unblob_sensor_value()

int unblob_sensor_value ( sensor_value_t *  p,
struct blob_attr *  attr,
char **  err_msg 
)
Here is the caller graph for this function:

◆ unblob_sensors_node()

int unblob_sensors_node ( sensors_node_t *  p,
struct blob_attr *  attr,
char **  err_msg 
)
Here is the call graph for this function:

Variable Documentation

◆ get_node_info_policy

const struct blobmsg_policy get_node_info_policy[GET_NODE_INFO_ENUM_MAX]
static
Initial value:
= {
[GET_NODE_INFO_ENUM] = { .name = NODE_INFO_KEY, .type = BLOBMSG_TYPE_TABLE },
}
@ GET_NODE_INFO_ENUM
Definition: el_sensorsnode_blob.c:687
#define NODE_INFO_KEY
Definition: el_sensorsnode_json.h:35

◆ node_addr_policy

const struct blobmsg_policy node_addr_policy[NODE_ADDR_ENUM_MAX]
static
Initial value:
= {
[NODE_ADDR_A0_ENUM] = { .name = NODE_ADDR_A0_KEY, .type = BLOBMSG_TYPE_INT16 },
[NODE_ADDR_A1_ENUM] = { .name = NODE_ADDR_A1_KEY, .type = BLOBMSG_TYPE_INT16 },
[NODE_ADDR_A2_ENUM] = { .name = NODE_ADDR_A2_KEY, .type = BLOBMSG_TYPE_INT16 },
[NODE_ADDR_A3_ENUM] = { .name = NODE_ADDR_A3_KEY, .type = BLOBMSG_TYPE_INT16 }
}
@ NODE_ADDR_A1_ENUM
Definition: el_sensorsnode_blob.c:343
@ NODE_ADDR_A2_ENUM
Definition: el_sensorsnode_blob.c:344
@ NODE_ADDR_A0_ENUM
Definition: el_sensorsnode_blob.c:342
@ NODE_ADDR_A3_ENUM
Definition: el_sensorsnode_blob.c:345
#define NODE_ADDR_A3_KEY
Definition: el_sensorsnode_json.h:32
#define NODE_ADDR_A2_KEY
Definition: el_sensorsnode_json.h:31
#define NODE_ADDR_A1_KEY
Definition: el_sensorsnode_json.h:30
#define NODE_ADDR_A0_KEY
Definition: el_sensorsnode_json.h:29

◆ node_fw_version_policy

const struct blobmsg_policy node_fw_version_policy[NODE_FW_VERSION_ENUM_MAX]
static
Initial value:
= {
[NODE_FW_VERSION_SW_PATCH_ENUM] = { .name = NODE_FW_VERSION_SW_PATCH_KEY, .type = BLOBMSG_TYPE_INT16 },
[NODE_FW_VERSION_SW_MINOR_ENUM] = { .name = NODE_FW_VERSION_SW_MINOR_KEY, .type = BLOBMSG_TYPE_INT16 },
[NODE_FW_VERSION_SW_MAJOR_ENUM] = { .name = NODE_FW_VERSION_SW_MAJOR_KEY, .type = BLOBMSG_TYPE_INT16 },
[NODE_FW_VERSION_BOOT_ENUM] = { .name = NODE_FW_VERSION_BOOT_KEY, .type = BLOBMSG_TYPE_INT16 },
[NODE_FW_VERSION_HW_REVISION_ENUM] = { .name = NODE_FW_VERSION_HW_REVISION_KEY, .type = BLOBMSG_TYPE_INT16 },
[NODE_FW_VERSION_PROTOCOL_ENUM] = { .name = NODE_FW_VERSION_PROTOCOL_KEY, .type = BLOBMSG_TYPE_INT16 },
}
@ NODE_FW_VERSION_SW_PATCH_ENUM
Definition: el_sensorsnode_blob.c:160
@ NODE_FW_VERSION_BOOT_ENUM
Definition: el_sensorsnode_blob.c:163
@ NODE_FW_VERSION_SW_MAJOR_ENUM
Definition: el_sensorsnode_blob.c:162
@ NODE_FW_VERSION_PROTOCOL_ENUM
Definition: el_sensorsnode_blob.c:165
@ NODE_FW_VERSION_SW_MINOR_ENUM
Definition: el_sensorsnode_blob.c:161
@ NODE_FW_VERSION_HW_REVISION_ENUM
Definition: el_sensorsnode_blob.c:164
#define NODE_FW_VERSION_SW_PATCH_KEY
Definition: el_sensorsnode_json.h:21
#define NODE_FW_VERSION_PROTOCOL_KEY
Definition: el_sensorsnode_json.h:26
#define NODE_FW_VERSION_HW_REVISION_KEY
Definition: el_sensorsnode_json.h:25
#define NODE_FW_VERSION_SW_MAJOR_KEY
Definition: el_sensorsnode_json.h:23
#define NODE_FW_VERSION_SW_MINOR_KEY
Definition: el_sensorsnode_json.h:22
#define NODE_FW_VERSION_BOOT_KEY
Definition: el_sensorsnode_json.h:24

◆ node_info_policy

const struct blobmsg_policy node_info_policy[NODE_INFO_ENUM_MAX]
static
Initial value:
= {
[NODE_INFO_MODEL_ENUM] = { .name = NODE_INFO_MODEL_KEY, .type = BLOBMSG_TYPE_INT16 },
[NODE_INFO_SERIAL_NUMBER_ENUM] = { .name = NODE_INFO_SERIAL_NUMBER_KEY, .type = BLOBMSG_TYPE_STRING },
[NODE_INFO_FW_VERSION_ENUM] = { .name = NODE_INFO_FW_VERSION_KEY, .type = BLOBMSG_TYPE_TABLE },
[NODE_INFO_ADDR_ENUM] = { .name = NODE_INFO_ADDR_KEY, .type = BLOBMSG_TYPE_TABLE },
[NODE_INFO_CONFIG_CRC_ENUM] = { .name = NODE_INFO_CONFIG_CRC_KEY, .type = BLOBMSG_TYPE_INT16 }
}
@ NODE_INFO_CONFIG_CRC_ENUM
Definition: el_sensorsnode_blob.c:519
@ NODE_INFO_ADDR_ENUM
Definition: el_sensorsnode_blob.c:518
@ NODE_INFO_FW_VERSION_ENUM
Definition: el_sensorsnode_blob.c:517
@ NODE_INFO_MODEL_ENUM
Definition: el_sensorsnode_blob.c:515
@ NODE_INFO_SERIAL_NUMBER_ENUM
Definition: el_sensorsnode_blob.c:516
#define NODE_INFO_ADDR_KEY
Definition: el_sensorsnode_json.h:40
#define NODE_INFO_CONFIG_CRC_KEY
Definition: el_sensorsnode_json.h:41
#define NODE_INFO_MODEL_KEY
Definition: el_sensorsnode_json.h:37
#define NODE_INFO_SERIAL_NUMBER_KEY
Definition: el_sensorsnode_json.h:38
#define NODE_INFO_FW_VERSION_KEY
Definition: el_sensorsnode_json.h:39

◆ node_serial_num_policy

const struct blobmsg_policy node_serial_num_policy[NODE_SERIAL_NUM_ENUM_MAX]
static
Initial value:
= {
[NODE_SERIAL_NUM_ENUM] = { .name = NODE_INFO_SERIAL_NUMBER_KEY, .type = BLOBMSG_TYPE_STRING }
}
@ NODE_SERIAL_NUM_ENUM
Definition: el_sensorsnode_blob.c:459

◆ sensor_node_policy

const struct blobmsg_policy sensor_node_policy[SENSORS_NODE_ENUM_MAX]
static
Initial value:
= {
[SENSORS_NODE_NODE_INFO_ENUM] = { .name = NODE_INFO_KEY, .type = BLOBMSG_TYPE_TABLE },
[SENSORS_NODE_STATUS_AVAILABLE_ENUM] = { .name = NODE_STATUS_AVAILABLE_KEY, .type = BLOBMSG_TYPE_INT16 },
[SENSORS_NODE_STATUS_DATAERROR_ENUM] = { .name = NODE_STATUS_DATAERROR_KEY, .type = BLOBMSG_TYPE_INT16 },
[SENSORS_NODE_VALUES_CNT_ENUM] = { .name = VALUES_COUNT_KEY, .type = BLOBMSG_TYPE_INT16 },
[SENSORS_NODE_VALUES_ENUM] = { .name = SENSOR_VALUES_KEY, .type = BLOBMSG_TYPE_ARRAY },
}
@ SENSORS_NODE_STATUS_DATAERROR_ENUM
Definition: el_sensorsnode_blob.c:893
@ SENSORS_NODE_NODE_INFO_ENUM
Definition: el_sensorsnode_blob.c:891
@ SENSORS_NODE_VALUES_CNT_ENUM
Definition: el_sensorsnode_blob.c:894
@ SENSORS_NODE_STATUS_AVAILABLE_ENUM
Definition: el_sensorsnode_blob.c:892
@ SENSORS_NODE_VALUES_ENUM
Definition: el_sensorsnode_blob.c:895
#define NODE_STATUS_DATAERROR_KEY
Definition: el_sensorsnode_blob.c:899
#define NODE_STATUS_AVAILABLE_KEY
Definition: el_sensorsnode_blob.c:898
#define SENSOR_VALUES_KEY
Definition: el_sensorsnode_json.h:44
#define VALUES_COUNT_KEY
Definition: el_sensorsnode_json.h:74

◆ sensor_value_policy

const struct blobmsg_policy sensor_value_policy[SENSOR_VALUE_ENUM_MAX]
static
Initial value:
= {
[SENSOR_VALUE_STATE_ENUM] = { .name = SENSOR_VALUE_STATE_KEY, .type = BLOBMSG_TYPE_INT16},
[SENSOR_VALUE_TYPE_ENUM] = { .name = IO_VALUE_TYPE_KEY, .type = BLOBMSG_TYPE_INT16},
[SENSOR_VALUE_ANALOG_VALUE_ENUM] = { .name = SENSOR_VALUE_ANALOG_VALUE_2KEY, .type = BLOBMSG_TYPE_INT32},
[SENSOR_VALUE_DISCRETE_VALUE_ENUM] = { .name = SENSOR_VALUE_DISCRETE_VALUE_2KEY, .type = BLOBMSG_TYPE_INT16},
[SENSOR_VALUE_DISCRETE_COUNT_ENUM] = { .name = SENSOR_VALUE_DISCRETE_COUNT_2KEY, .type = BLOBMSG_TYPE_INT16},
}
@ SENSOR_VALUE_TYPE_ENUM
Definition: el_sensorsnode_blob.c:735
@ SENSOR_VALUE_DISCRETE_VALUE_ENUM
Definition: el_sensorsnode_blob.c:737
@ SENSOR_VALUE_ANALOG_VALUE_ENUM
Definition: el_sensorsnode_blob.c:736
@ SENSOR_VALUE_DISCRETE_COUNT_ENUM
Definition: el_sensorsnode_blob.c:738
@ SENSOR_VALUE_STATE_ENUM
Definition: el_sensorsnode_blob.c:734
#define SENSOR_VALUE_DISCRETE_VALUE_2KEY
Definition: el_sensorsnode_blob.h:61
#define SENSOR_VALUE_ANALOG_VALUE_2KEY
Definition: el_sensorsnode_blob.h:60
#define SENSOR_VALUE_DISCRETE_COUNT_2KEY
Definition: el_sensorsnode_blob.h:62
#define SENSOR_VALUE_STATE_KEY
Definition: el_sensorsnode_json.h:46
#define IO_VALUE_TYPE_KEY
Definition: io_type_t.h:43