Difference between revisions of "MCU/SensorBox"
From ESS-WIKI
| Line 174: | Line 174: | ||
== Add new configuration with the model name and sensor data == | == Add new configuration with the model name and sensor data == | ||
<div style="margin-left:0.75cm;margin-right:0cm;"> | <div style="margin-left:0.75cm;margin-right:0cm;"> | ||
| − | + | '''Step01: ''' Define the model name: | |
| − | :Please based on naming rule of | + | :Please define the model name by the macro that is based on naming rule of "SN_MN" + "DRIVER_FOLDER". |
| − | : | + | :*"SB_MN_" is fixed string as prefix. |
| − | : | + | :*"DRIVER_FOLDER" is the name of directory of specified sensor driver and it's located at the directory of sensor driver. |
:For example as below: | :For example as below: | ||
| − | <syntaxhighlight lang="C" style="width: | + | ::<syntaxhighlight lang="C" style="width:60%; border:1px solid lightgrey; "> |
#define SB_MN_HDC1080 Hdc1080 | #define SB_MN_HDC1080 Hdc1080 | ||
| + | </syntaxhighlight> | ||
| + | ::<syntaxhighlight lang="C" style="width:60%; border:1px solid lightgrey; "> | ||
#define SB_MN_DS18B20 Ds18b20 | #define SB_MN_DS18B20 Ds18b20 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | <br/> | ||
| − | + | '''Step02: ''' Define the sensor data: | |
| − | :Please define the macro "SB_" + "DRIVER_FOLDER" + "_DATA" + N + "_NAME". | + | :Please define the name of sensor data by the macro that is based on naming rule of "SB_" + "DRIVER_FOLDER" + "_DATA" + N + "_NAME". |
| − | : | + | :*"SB_" is fixed string as prefix. |
| − | : | + | :*"DRIVER_FOLDER" is the name of directory of specified sensor driver and it's located at the directory of sensor driver. |
| − | : | + | :*"_DATA" is fixed string. |
| − | : | + | :*N is serial number of this sensor. |
| − | : | + | :*"_NAME" is fixed string as postfix.<div style="margin-left:0.75cm;margin-right:0cm;"> |
| + | |||
| + | ::<syntaxhighlight lang="C" style="width:80%; border:1px solid lightgrey; "> | ||
| + | #define SB_HDC1080_DATA1_NAME Temperature | ||
| + | </syntaxhighlight> | ||
| + | ::<syntaxhighlight lang="C" style="width:80%; border:1px solid lightgrey; "> | ||
| + | #define SB_HDC1080_DATA2_NAME Humidity | ||
| + | </syntaxhighlight> | ||
| + | <br/> | ||
| + | |||
| + | '''Step03: ''' Create index with the sensor: | ||
| + | :The user needs to open the file "sensor_index.cfg" located at the folder "sensor_api/" for below steps. | ||
| + | :* Add index into "enum ESensorModelNameList" | ||
| + | ::The index is defined using pre-defined macro "SB_DEFINE_MN(model_name)". The model name is defined above by the user. | ||
| + | <syntaxhighlight lang="C" highlight="4-6" style="width:80%; border:1px solid lightgrey; "> | ||
| + | typedef enum ESensorModelNameList | ||
| + | { | ||
| + | // HDC 1080 | ||
| + | #if defined(SB_MN_HDC1080) | ||
| + | SB_DEFINE_MN(SB_MN_HDC1080), | ||
| + | #endif | ||
| + | |||
| + | SB_DEFINE_MN(Total) | ||
| + | }TSBModelNameList; | ||
| + | </syntaxhighlight> | ||
| + | :* Add index into "enum ESensorDataList" | ||
| + | :content | ||
| + | <br/> | ||
</div> | </div> | ||
| Line 198: | Line 228: | ||
Content. | Content. | ||
</div> | </div> | ||
| + | |||
| + | |||
== Add new sensor driver == | == Add new sensor driver == | ||
Revision as of 09:15, 22 August 2019
Contents
Introduction
Sensor Box has general interface to collect sensor data and it benefits the user easy to use.
Architecture
Content.
Source tree
Content.
| Directory | Description |
| sensor_api | The source code of API of Sensor Box. |
| sensor_driver | The source code of sensor driver. |
| sensor_lib_cfg.sh | The script used to configure which sensor we enable/disable. |
Sensor list
Currently, these sensors are ported into sensor box as default.
- HDC1080 - Digital Temperature/Humidity Sensor
Item Description Vendor Texas Instruments Interface I2C Pin-defined Check
- DS18B20 - 1-Wire Digital Thermometer
Item Description Vendor Maxim Interface GPIO Pin-defined Check
- VL53L0X - Time-of-Flight ranging sensor
Item Description Vendor STMicroelectronics Interface I2C Pin-defined Check
- HPMA215S0-XXX - Particle Sensor
Item Description Vendor Honeywell Interface I2C Pin-defined Check
API
Content.
int SBox_iInit(void);
- Brief
- Initialize sensor box
- Parameters
- None
- Return
- On success, eSErr_None is returned.
- On error, other is returned.
int SBox_iUnInit(void);
- Brief
- Uninitialize sensor box
- Parameters
- None
- Return
- On success, eSErr_None is returned.
- On error, other is returned.
int SBox_iGetAllData(TSBDataFmt *_ptDataSet);
- Brief
- Update all sensors and get all data of sensors
- Parameters
- _ptDataSet: the pointer to data buffer that is used to get sensor data back.
- Return
- On success, eSErr_None is returned.
- On error, other is returned.
int SBox_iGetData(int _iModelName, TSBDataFmt *_ptData);
- Brief
- Update only one sensor and get data
- Parameters
- _iModelName: the index of model name to specify which sensor will be updated.
- _ptData: the pointer to data that is used to get sensor data back.
- Return
- On success, eSErr_None is returned.
- On error, other is returned.
Get sensor box
Content.
Example
Content.
How to porting new sensor into sensor box
When the user intends to add new sensor into sensor box, the user needs to find the configuration file "sensor_box.cfg" located at the folder "sensor_api/", then opens it and follows the below for how to do.
Add new configuration with the model name and sensor data
Step01: Define the model name:
- Please define the model name by the macro that is based on naming rule of "SN_MN" + "DRIVER_FOLDER".
- "SB_MN_" is fixed string as prefix.
- "DRIVER_FOLDER" is the name of directory of specified sensor driver and it's located at the directory of sensor driver.
- For example as below:
#define SB_MN_HDC1080 Hdc1080#define SB_MN_DS18B20 Ds18b20
Step02: Define the sensor data:
- Please define the name of sensor data by the macro that is based on naming rule of "SB_" + "DRIVER_FOLDER" + "_DATA" + N + "_NAME".
- "SB_" is fixed string as prefix.
- "DRIVER_FOLDER" is the name of directory of specified sensor driver and it's located at the directory of sensor driver.
- "_DATA" is fixed string.
- N is serial number of this sensor.
- "_NAME" is fixed string as postfix.
#define SB_HDC1080_DATA1_NAME Temperature#define SB_HDC1080_DATA2_NAME Humidity
Step03: Create index with the sensor:
- The user needs to open the file "sensor_index.cfg" located at the folder "sensor_api/" for below steps.
- Add index into "enum ESensorModelNameList"
- The index is defined using pre-defined macro "SB_DEFINE_MN(model_name)". The model name is defined above by the user.
typedef enum ESensorModelNameList { // HDC 1080 #if defined(SB_MN_HDC1080) SB_DEFINE_MN(SB_MN_HDC1080), #endif SB_DEFINE_MN(Total) }TSBModelNameList;
- Add index into "enum ESensorDataList"
- content
Add new HAL instance
Content.
Add new sensor driver
Content.