Trident IoT Z-Wave SDK
 
Loading...
Searching...
No Matches
MultilevelSensor
+ Collaboration diagram for MultilevelSensor:

Data Structures

struct  _sensor_type
 
struct  _sensor_read_result
 
struct  _sensor_interface
 
struct  _sensor_administration
 

Macros

#define MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_SEC   (MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_MIN*60)
 
#define MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_MS   (MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_SEC*1000)
 
#define SENSOR_SCALE_DEFAULT   0x00
 
#define SENSOR_SCALE_CELSIUS   0x00
 
#define SENSOR_SCALE_FAHRENHEIT   0x01
 
#define SENSOR_SCALE_PERCENTAGE   0x00
 
#define SENSOR_SCALE_DIMENSIONLESS   0x01
 
#define SENSOR_SCALE_LUX   0x01
 
#define SENSOR_SCALE_WATT   0x00
 
#define SENSOR_SCALE_BTU_H   0x01 /*Btu/h*/
 
#define SENSOR_SCALE_ABSOLUTE_HUMIDITY   0x01 /*g/m3*/
 
#define SENSOR_SCALE_METER_SQUARE_SECOND   0x00 /*m/s^2*/
 
#define SLI_MAX_RAW_RESULT_BYTES   4
 

Typedefs

typedef enum sensor_name sensor_name_t
 
typedef struct _sensor_type sensor_type_t
 
typedef struct _sensor_read_result sensor_read_result_t
 
typedef struct _sensor_interface sensor_interface_t
 
typedef struct _sensor_interface sensor_interface_iterator_t
 
typedef struct _sensor_administration sensor_administration_t
 

Enumerations

enum  sensor_name {
  SENSOR_NAME_AIR_TEMPERATURE = 0x00 ,
  SENSOR_NAME_GENERAL_PURPOSE ,
  SENSOR_NAME_ILLUMINANCE ,
  SENSOR_NAME_POWER ,
  SENSOR_NAME_HUMIDITY ,
  SENSOR_NAME_ACCELERATION_X ,
  SENSOR_NAME_ACCELERATION_Y ,
  SENSOR_NAME_ACCELERATION_Z ,
  SENSOR_NAME_MAX_COUNT
}
 
enum  sensor_read_result_size_t {
  SENSOR_READ_RESULT_SIZE_1 = 1 ,
  SENSOR_READ_RESULT_SIZE_2 = 2 ,
  SENSOR_READ_RESULT_SIZE_4 = 4 ,
  SENSOR_READ_RESULT_SIZE_END = 5
}
 
enum  sensor_read_result_precision {
  SENSOR_READ_RESULT_PRECISION_1 = 1 ,
  SENSOR_READ_RESULT_PRECISION_2 ,
  SENSOR_READ_RESULT_PRECISION_3 ,
  SENSOR_READ_RESULT_PRECISION_END
}
 
enum  sensor_interface_return_value_t {
  SENSOR_INTERFACE_RETURN_VALUE_OK ,
  SENSOR_INTERFACE_RETURN_VALUE_ALREADY_SET ,
  SENSOR_INTERFACE_RETURN_VALUE_INVALID_SCALE_VALUE ,
  SENSOR_INTERFACE_RETURN_VALUE_ERROR ,
  SENSOR_INTERFACE_RETURN_VALUE_END
}
 
enum  cc_multilevel_sensor_return_value {
  CC_MULTILEVEL_SENSOR_RETURN_VALUE_OK ,
  CC_MULTILEVEL_SENSOR_RETURN_VALUE_ERROR ,
  CC_MULTILEVEL_SENSOR_RETURN_VALUE_NOT_FOUND ,
  CC_MULTILEVEL_SENSOR_RETURN_VALUE_ALREADY_REGISTRATED ,
  CC_MULTILEVEL_SENSOR_RETURN_VALUE_REGISTRATION_LIMIT_REACHED ,
  CC_MULTILEVEL_SENSOR_RETURN_VALUE_END
}
 

Functions

void cc_multilevel_sensor_send_sensor_data (void)
 
void cc_multilevel_sensor_config_register_instances (void)
 
void cc_multilevel_sensor_init_all_sensor (void)
 
uint8_t cc_multilevel_sensor_check_scale (const sensor_interface_t *i_interface, uint8_t i_scale)
 
cc_multilevel_sensor_return_value cc_multilevel_sensor_check_sensor_type_registered (uint8_t sensor_type_value)
 
cc_multilevel_sensor_return_value cc_multilevel_sensor_registration (sensor_interface_t *i_new_sensor)
 
cc_multilevel_sensor_return_value cc_multilevel_sensor_get_supported_sensors (uint8_t *o_supported_sensor_buffer)
 
cc_multilevel_sensor_return_value cc_multilevel_sensor_get_supported_scale (uint8_t sensor_type_value, uint8_t *o_supported_scale)
 
cc_multilevel_sensor_return_value cc_multilevel_sensor_get_interface (uint8_t sensor_type_value, sensor_interface_t **o_interface)
 
cc_multilevel_sensor_return_value cc_multilevel_sensor_get_default_sensor_type (uint8_t *o_default_sensor_type)
 
cc_multilevel_sensor_return_value cc_multilevel_sensor_init_iterator (sensor_interface_iterator_t **i_iterator)
 
void cc_multilevel_sensor_next_iterator (sensor_interface_iterator_t **i_iterator)
 
uint8_t cc_multilevel_sensor_get_number_of_registered_sensors (void)
 
void cc_multilevel_sensor_reset_administration (void)
 
const sensor_type_tcc_multilevel_sensor_get_sensor_type (sensor_name_t i_sensor_name)
 
sensor_interface_return_value_t cc_multilevel_sensor_init_interface (sensor_interface_t *i_instance, sensor_name_t i_name)
 
sensor_interface_return_value_t cc_multilevel_sensor_add_supported_scale_interface (sensor_interface_t *i_instance, uint8_t i_scale)
 

Detailed Description

Macro Definition Documentation

◆ MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_MS

#define MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_MS   (MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_SEC*1000)

◆ MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_SEC

#define MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_SEC   (MULTILEVEL_SENSOR_DEFAULT_AUTOREPORT_PEDIOD_MIN*60)

◆ SENSOR_SCALE_ABSOLUTE_HUMIDITY

#define SENSOR_SCALE_ABSOLUTE_HUMIDITY   0x01 /*g/m3*/

◆ SENSOR_SCALE_BTU_H

#define SENSOR_SCALE_BTU_H   0x01 /*Btu/h*/

◆ SENSOR_SCALE_CELSIUS

#define SENSOR_SCALE_CELSIUS   0x00

◆ SENSOR_SCALE_DEFAULT

#define SENSOR_SCALE_DEFAULT   0x00

◆ SENSOR_SCALE_DIMENSIONLESS

#define SENSOR_SCALE_DIMENSIONLESS   0x01

◆ SENSOR_SCALE_FAHRENHEIT

#define SENSOR_SCALE_FAHRENHEIT   0x01

◆ SENSOR_SCALE_LUX

#define SENSOR_SCALE_LUX   0x01

◆ SENSOR_SCALE_METER_SQUARE_SECOND

#define SENSOR_SCALE_METER_SQUARE_SECOND   0x00 /*m/s^2*/

◆ SENSOR_SCALE_PERCENTAGE

#define SENSOR_SCALE_PERCENTAGE   0x00

◆ SENSOR_SCALE_WATT

#define SENSOR_SCALE_WATT   0x00

◆ SLI_MAX_RAW_RESULT_BYTES

#define SLI_MAX_RAW_RESULT_BYTES   4

Structure that holds a read result from the read interface.

Typedef Documentation

◆ sensor_administration_t

Structure that administrate all of the registered sensors.

◆ sensor_interface_iterator_t

◆ sensor_interface_t

Structure that holds a read result from the read interface.

◆ sensor_name_t

typedef enum sensor_name sensor_name_t

Defined possible sensor types

◆ sensor_read_result_t

◆ sensor_type_t

typedef struct _sensor_type sensor_type_t

Structure that holds the attributes of a sensor type.

Enumeration Type Documentation

◆ cc_multilevel_sensor_return_value

Defined Multilevel Sensor return values

Enumerator
CC_MULTILEVEL_SENSOR_RETURN_VALUE_OK 
CC_MULTILEVEL_SENSOR_RETURN_VALUE_ERROR 
CC_MULTILEVEL_SENSOR_RETURN_VALUE_NOT_FOUND 
CC_MULTILEVEL_SENSOR_RETURN_VALUE_ALREADY_REGISTRATED 
CC_MULTILEVEL_SENSOR_RETURN_VALUE_REGISTRATION_LIMIT_REACHED 
CC_MULTILEVEL_SENSOR_RETURN_VALUE_END 

◆ sensor_interface_return_value_t

Defined sensor interface return values

Enumerator
SENSOR_INTERFACE_RETURN_VALUE_OK 
SENSOR_INTERFACE_RETURN_VALUE_ALREADY_SET 
SENSOR_INTERFACE_RETURN_VALUE_INVALID_SCALE_VALUE 
SENSOR_INTERFACE_RETURN_VALUE_ERROR 
SENSOR_INTERFACE_RETURN_VALUE_END 

◆ sensor_name

Defined possible sensor types

Enumerator
SENSOR_NAME_AIR_TEMPERATURE 
SENSOR_NAME_GENERAL_PURPOSE 
SENSOR_NAME_ILLUMINANCE 
SENSOR_NAME_POWER 
SENSOR_NAME_HUMIDITY 
SENSOR_NAME_ACCELERATION_X 
SENSOR_NAME_ACCELERATION_Y 
SENSOR_NAME_ACCELERATION_Z 
SENSOR_NAME_MAX_COUNT 

◆ sensor_read_result_precision

Defined possible sensor read precision

Enumerator
SENSOR_READ_RESULT_PRECISION_1 
SENSOR_READ_RESULT_PRECISION_2 
SENSOR_READ_RESULT_PRECISION_3 
SENSOR_READ_RESULT_PRECISION_END 

◆ sensor_read_result_size_t

Defined possible sensor read size

Enumerator
SENSOR_READ_RESULT_SIZE_1 
SENSOR_READ_RESULT_SIZE_2 
SENSOR_READ_RESULT_SIZE_4 
SENSOR_READ_RESULT_SIZE_END 

Function Documentation

◆ cc_multilevel_sensor_add_supported_scale_interface()

sensor_interface_return_value_t cc_multilevel_sensor_add_supported_scale_interface ( sensor_interface_t * i_instance,
uint8_t i_scale )

Adds a new scale to an existing interface. Supported scales must be set by this function during initialization.

Parameters
[in]i_instancePointer to an existing sensor interface which the new scale will be registered to
[in]i_scaleThe new scale which will be registered
Returns
Status of the new scale value registration.

◆ cc_multilevel_sensor_check_scale()

uint8_t cc_multilevel_sensor_check_scale ( const sensor_interface_t * i_interface,
uint8_t i_scale )

Checks if the wanted scale is a legal one for an interface. If the scale is not set the function will return with the first available scale. The function will iterate from bit 0 to 7 to look for the first scale which is supported. That will be the default scale.

Parameters
[in]i_interfacePointer to an existing sensor interface
[in]i_scaleScale value to check
Returns
a usable scale value, if the input i_scale is valid that will be return, else the default one.

◆ cc_multilevel_sensor_check_sensor_type_registered()

cc_multilevel_sensor_return_value cc_multilevel_sensor_check_sensor_type_registered ( uint8_t sensor_type_value)

Checks if the wanted sensor type has a registered interface or not.

Parameters
[in]sensor_type_valueSensor type value to check, this is the value in sensor_type_t struct's value
Returns
CC_MULTILEVEL_SENSOR_RETURN_VALUE_OK if interface is registered for a sensor, else CC_MULTILEVEL_SENSOR_RETURN_VALUE_NOT_FOUND.

◆ cc_multilevel_sensor_config_register_instances()

void cc_multilevel_sensor_config_register_instances ( void )

◆ cc_multilevel_sensor_get_default_sensor_type()

cc_multilevel_sensor_return_value cc_multilevel_sensor_get_default_sensor_type ( uint8_t * o_default_sensor_type)

Gets the default sensor type value. Basically the first registered sensor interface' type is the default one.

Parameters
[in]o_default_sensor_typePointer to a byte buffer which will hold the default sensor type value
Returns
CC_MULTILEVEL_SENSOR_RETURN_VALUE_OK if there is any registered interface, else CC_MULTILEVEL_SENSOR_RETURN_VALUE_ERROR.

◆ cc_multilevel_sensor_get_interface()

cc_multilevel_sensor_return_value cc_multilevel_sensor_get_interface ( uint8_t sensor_type_value,
sensor_interface_t ** o_interface )

Getter function for a sensor type's interface

Parameters
[in]sensor_type_valueSensor type value to check, this is the value in sensor_type_t struct's value
[out]o_interfaceThis is a double pointer which will hold an interface reference
Returns
CC_MULTILEVEL_SENSOR_RETURN_VALUE_OK if interface is registered for a sensor, else CC_MULTILEVEL_SENSOR_RETURN_VALUE_NOT_FOUND.

◆ cc_multilevel_sensor_get_number_of_registered_sensors()

uint8_t cc_multilevel_sensor_get_number_of_registered_sensors ( void )

Returns the number of registered sensor interfaces

Returns
Number of registered sensor interfaces.

◆ cc_multilevel_sensor_get_sensor_type()

const sensor_type_t * cc_multilevel_sensor_get_sensor_type ( sensor_name_t i_sensor_name)

Returns a sensor_type_t struct from the sensor_types config table

Parameters
[in]i_sensor_nameThe name of the sensor type, the sensor type attributes' reference will be look for based on this value
Returns
sensor_type_t struct which includes the type attributes.

◆ cc_multilevel_sensor_get_supported_scale()

cc_multilevel_sensor_return_value cc_multilevel_sensor_get_supported_scale ( uint8_t sensor_type_value,
uint8_t * o_supported_scale )

Fills an input buffer with flags where each flag represents a supported scale

Parameters
[in]sensor_type_valueSensor type value to check, this is the value in sensor_type_t struct's value
[out]o_supported_scalePointer to a buffer where the supported scales will be represented for a sensor type
Returns
CC_MULTILEVEL_SENSOR_RETURN_VALUE_OK if interface is registered for a sensor.

◆ cc_multilevel_sensor_get_supported_sensors()

cc_multilevel_sensor_return_value cc_multilevel_sensor_get_supported_sensors ( uint8_t * o_supported_sensor_buffer)

Fills an input buffer with flags where each flag represents a supported sensor.

Parameters
[out]o_supported_sensor_bufferPointer to a buffer where the supported sensors' are represented as flags in a byte array. The position of each flag is calculated based on SDS13812. The buffer must be 11 byte long at least.
Returns
CC_MULTILEVEL_SENSOR_RETURN_VALUE_OK if success, else CC_MULTILEVEL_SENSOR_RETURN_VALUE_ERROR.

◆ cc_multilevel_sensor_init_all_sensor()

void cc_multilevel_sensor_init_all_sensor ( void )

Calls the init function for all of the registered sensor interfaces.

◆ cc_multilevel_sensor_init_interface()

sensor_interface_return_value_t cc_multilevel_sensor_init_interface ( sensor_interface_t * i_instance,
sensor_name_t i_name )

Initialize a sensor interface instance. Sets the whole struct to zero and sets the reference to the appropiate sensor_type_t struct.

Parameters
[in]i_instancePointer to an existing sensor interface to init
[in]i_nameThe name of the sensor type, the sensor type attributes' reference will be look for based on this value
Returns
Status of the initialization.

◆ cc_multilevel_sensor_init_iterator()

cc_multilevel_sensor_return_value cc_multilevel_sensor_init_iterator ( sensor_interface_iterator_t ** i_iterator)

Initialize an iterator struct for the registered sensor interfaces. If there is any registered interface the iterator will be NULL.

Parameters
[out]i_iteratorThis is a double pointer which will hold an interface reference to the first registered interface
Returns
CC_MULTILEVEL_SENSOR_RETURN_VALUE_OK if success, else CC_MULTILEVEL_SENSOR_RETURN_VALUE_ERROR..

◆ cc_multilevel_sensor_next_iterator()

void cc_multilevel_sensor_next_iterator ( sensor_interface_iterator_t ** i_iterator)

Moves the iterator reference forward to the next registered interface, if the current is the last one then NULL If there is any registered interface the iterator will be NULL.

Parameters
[out]i_iteratorThis is a double pointer which will hold an interface reference

◆ cc_multilevel_sensor_registration()

cc_multilevel_sensor_return_value cc_multilevel_sensor_registration ( sensor_interface_t * i_new_sensor)

Registers an interface to a specific sensor type. The number of registered sensor types is maximized with REGISTERED_SENSOR_NUMBER_LIMIT

Parameters
[in]i_new_sensorPointer to a filled sensor interface struct
Returns
CC_MULTILEVEL_SENSOR_RETURN_VALUE_OK if interface is registered for a sensor.

◆ cc_multilevel_sensor_reset_administration()

void cc_multilevel_sensor_reset_administration ( void )

Removes all of the registered sensor interfaces from the administration

◆ cc_multilevel_sensor_send_sensor_data()

void cc_multilevel_sensor_send_sensor_data ( void )

This function will report the registered sensor's measured datas to the Lifeline group.