elemy-sensortree 1.0.0
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
el_sensorsnode.h File Reference

header with defines and structs for sensor More...

#include "elsensortree/io_type_t.h"
#include "elutils/c_decls.h"
Include dependency graph for el_sensorsnode.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _node_fw_version_t
 версия прошивки узла More...
 
union  _node_addr_t
 адрес узла a0 - top level More...
 
struct  _node_serial_num_t
 
struct  node_info_t
 
struct  _node_status_t
 
struct  _sensor_value_t
 
struct  _sensors_node_t
 
struct  _sensors_data_t
 

Macros

#define ST_A0_MASK   (0x000f)
 
#define ST_A1_MASK   (0x00ff)
 
#define ST_A2_MASK   (0x0fff)
 
#define ST_A3_MASK   (0xffff)
 
#define SERIAL_NUM_SZ   (12)
 
#define MAX_SENSOR_VALUES_COUNT   (3)
 
#define SENSOR_DATA_CRC_PTR(SENSOR_DATA)   (uint16_t*)&(SENSOR_DATA->data.nodes[SENSOR_DATA->data.nodesСount])
 
#define SENSOR_DATA_TOT_SIZE(SENSORS_NUMBER)   (int)(SENSORS_NUMBER * sizeof(sensors_node_t) + sizeof(sensors_data_t))
 
#define NODE_SERIAL_NUM_LENGTH   (11)
 

Typedefs

typedef union _node_addr_t node_addr_t
 адрес узла a0 - top level More...
 

Enumerations

enum  __attribute__ {
  None = 0u , BusTester = 1u , TH23 , WaterLeak16 ,
  Lum32 , Wind75 , FIRE4 , SN_VAL_UKNOWN = 0 ,
  SN_VAL_INVALID , SN_VAL_VALID
}
 
enum  __attribute__ {
  None = 0u , BusTester = 1u , TH23 , WaterLeak16 ,
  Lum32 , Wind75 , FIRE4 , SN_VAL_UKNOWN = 0 ,
  SN_VAL_INVALID , SN_VAL_VALID
}
 

Functions

node_models_t st_get_node_model (char *node_name)
 translate name to NODE_MODEL_T More...
 
char * st_get_node_model_name (node_models_t nmt)
 get string with nbame of node type More...
 
struct _node_fw_version_t __attribute__ ((packed)) node_fw_version_t
 версия прошивки узла More...
 
int cmp_node_addr (node_addr_t a1, node_addr_t a2)
 compare node address More...
 
void print_node_addr (node_addr_t *node_addr, char *msg)
 
int sn_addr_level (node_addr_t addr)
 cals address level 0.0.0.0 -> 0; 2.1.0.0 - ->1; 2.3.5.0 -> 2; 1.2.3.4 -> 3 More...
 
void sn_print_serialnum (node_serial_num_t *nsn, char *msg)
 
int sn_test_serialnum_valid (const node_serial_num_t *node_serial_num)
 test is SysInfo serial num structure is valid More...
 
int sn_build_serialnum (const node_serial_num_t *node_serial_num, char *sernum)
 build serial number string More...
 
int sn_parse_serialnum (const char *sn, node_serial_num_t *nsn)
 
node_info_tsn_init_node_info (node_info_t *p)
 
sensor_value_t * sn_init_sensor_value (sensor_value_t *p)
 
node_status_t * sn_init_node_status (node_status_t *p)
 
sensors_node_t * sn_init_sensors_node (sensors_node_t *p)
 
sensors_data_t * sn_init_sensors_data (sensors_data_t *p, int sz)
 

Variables

typedef __attribute__
 
uint8_t sw_patch
 
uint8_t sw_minor
 
uint8_t sw_major
 
uint8_t boot
 
uint8_t hw_revision
 
uint8_t protocol
 
uint16_t a0
 
uint16_t a1
 
uint16_t a2
 
uint16_t a3
 
uint8_t code [4]
 
uint8_t year
 
uint8_t partNumber
 
uint16_t devNumber
 
node_models_t model
 
node_serial_num_t serialNumber
 
node_fw_version_t fw_version
 
node_addr_t addr
 
uint16_t configCrc
 
uint8_t available
 
uint8_t dataError
 
sensor_value_state_t state
 
u_io_type_t type
 
union {
   struct {
      int32_t   value
 
   }   analog
 
   struct {
      int16_t   value
 
      int8_t   count
 
      int8_t   reserved
 
   }   discretes
 
}; 
 
node_info_t nodeInfo
 
node_status_t status
 
uint8_t valuesCount
 
sensor_value_t values [MAX_SENSOR_VALUES_COUNT]
 
struct {
   uint8_t   updateCounter
 
   uint8_t   nodesСount
 
   sensors_node_t   nodes [0]
 
data
 
uint16_t crc
 

Detailed Description

header with defines and structs for sensor

Created on: 1 дек. 2023 г. Author: ps

Macro Definition Documentation

◆ MAX_SENSOR_VALUES_COUNT

#define MAX_SENSOR_VALUES_COUNT   (3)

◆ NODE_SERIAL_NUM_LENGTH

#define NODE_SERIAL_NUM_LENGTH   (11)

◆ SENSOR_DATA_CRC_PTR

#define SENSOR_DATA_CRC_PTR (   SENSOR_DATA)    (uint16_t*)&(SENSOR_DATA->data.nodes[SENSOR_DATA->data.nodesСount])

◆ SENSOR_DATA_TOT_SIZE

#define SENSOR_DATA_TOT_SIZE (   SENSORS_NUMBER)    (int)(SENSORS_NUMBER * sizeof(sensors_node_t) + sizeof(sensors_data_t))

◆ SERIAL_NUM_SZ

#define SERIAL_NUM_SZ   (12)

◆ ST_A0_MASK

#define ST_A0_MASK   (0x000f)

◆ ST_A1_MASK

#define ST_A1_MASK   (0x00ff)

◆ ST_A2_MASK

#define ST_A2_MASK   (0x0fff)

◆ ST_A3_MASK

#define ST_A3_MASK   (0xffff)

Typedef Documentation

◆ node_addr_t

typedef union _node_addr_t node_addr_t

адрес узла a0 - top level

Enumeration Type Documentation

◆ __attribute__ [1/2]

Enumerator
None 
BusTester 
TH23 
WaterLeak16 
Lum32 
Wind75 
FIRE4 
SN_VAL_UKNOWN 
SN_VAL_INVALID 
SN_VAL_VALID 

◆ __attribute__ [2/2]

Enumerator
None 
BusTester 
TH23 
WaterLeak16 
Lum32 
Wind75 
FIRE4 
SN_VAL_UKNOWN 
SN_VAL_INVALID 
SN_VAL_VALID 

Function Documentation

◆ __attribute__()

struct _node_fw_version_t __attribute__ ( (packed)  )

версия прошивки узла

Description of node in tree

PACKED because many in shared memory fields follow in optimized flow

◆ cmp_node_addr()

int cmp_node_addr ( node_addr_t  a1,
node_addr_t  a2 
)

compare node address

Parameters
a1first address
a2first address
Returns
-1 if a1 < a2
0 if a1 == a2
1 if a1 > a2

◆ print_node_addr()

void print_node_addr ( node_addr_t node_addr,
char *  msg 
)

◆ sn_addr_level()

int sn_addr_level ( node_addr_t  addr)

cals address level 0.0.0.0 -> 0; 2.1.0.0 - ->1; 2.3.5.0 -> 2; 1.2.3.4 -> 3

Parameters
addrnode address
Returns
levelk of node with address

◆ sn_build_serialnum()

int sn_build_serialnum ( const node_serial_num_t *  node_serial_num,
char *  sernum 
)

build serial number string

Parameters
node_serial_numptr to node info struct
sernumptr to target place at least 12 bytes.
Returns
0 success
-1 on error

SerialNum rules: Code bytes must be alnum printable -> 4 bytes year: 0 - 99 -> 2 bytes partnum: 0 - 99 -> 2 bytes devnum: 0 - 999 -> 3 bytes ------—> 11 bytes,+0x0 -> 12bytes

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sn_init_node_info()

node_info_t * sn_init_node_info ( node_info_t p)

◆ sn_init_node_status()

node_status_t * sn_init_node_status ( node_status_t *  p)

◆ sn_init_sensor_value()

sensor_value_t * sn_init_sensor_value ( sensor_value_t *  p)

◆ sn_init_sensors_data()

sensors_data_t * sn_init_sensors_data ( sensors_data_t *  p,
int  sz 
)
Here is the caller graph for this function:

◆ sn_init_sensors_node()

sensors_node_t * sn_init_sensors_node ( sensors_node_t *  p)
Here is the caller graph for this function:

◆ sn_parse_serialnum()

int sn_parse_serialnum ( const char *  sn,
node_serial_num_t *  nsn 
)

parse serial number from string into node_serial_num_t

Parameters
snptr to serial num string
nsnptr to structure to fill \retun 0 success
Returns
-1 error
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sn_print_serialnum()

void sn_print_serialnum ( node_serial_num_t *  nsn,
char *  msg 
)
Here is the caller graph for this function:

◆ sn_test_serialnum_valid()

int sn_test_serialnum_valid ( const node_serial_num_t *  node_serial_num)

test is SysInfo serial num structure is valid

Parameters
node_serial_numpter to decvice serial num
Returns
0 - invalid
1 - valid
Here is the caller graph for this function:

◆ st_get_node_model()

node_models_t st_get_node_model ( char *  node_name)

translate name to NODE_MODEL_T

Parameters
node_namestring with name of node
Returns
enum type value of this node type

◆ st_get_node_model_name()

char * st_get_node_model_name ( node_models_t  nmt)

get string with nbame of node type

Variable Documentation

◆ 

union { ... }

◆ __attribute__

Description of node in tree

PACKED because many in shared memory fields follow in optimized flow

◆ a0

uint16_t a0

◆ a1

uint16_t a1

◆ a2

uint16_t a2

◆ a3

uint16_t a3

◆ addr

◆ 

struct { ... } analog

◆ available

uint8_t available

◆ boot

uint8_t boot

◆ code

uint8_t code[4]

◆ configCrc

uint16_t configCrc

◆ count

int8_t count

◆ crc

uint16_t crc

◆ 

struct { ... } data

◆ dataError

uint8_t dataError

◆ devNumber

uint16_t devNumber

◆ 

struct { ... } discretes

◆ fw_version

node_fw_version_t fw_version

◆ hw_revision

uint8_t hw_revision

◆ model

node_models_t model

◆ nodeInfo

node_info_t nodeInfo

◆ nodes

sensors_node_t nodes[0]

◆ nodesСount

uint8_t nodesСount

◆ partNumber

uint8_t partNumber

◆ protocol

uint8_t protocol

◆ reserved

int8_t reserved

◆ serialNumber

node_serial_num_t serialNumber

◆ state

sensor_value_state_t state

◆ status

node_status_t status

◆ sw_major

uint8_t sw_major

◆ sw_minor

uint8_t sw_minor

◆ sw_patch

uint8_t sw_patch

◆ type

◆ updateCounter

uint8_t updateCounter

◆ value

int16_t value

◆ values

sensor_value_t values[MAX_SENSOR_VALUES_COUNT]

◆ valuesCount

uint8_t valuesCount

◆ year

uint8_t year