-
Notifications
You must be signed in to change notification settings - Fork 744
/
humiture_hal.h
134 lines (118 loc) · 3.61 KB
/
humiture_hal.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _HUMITURE_HAL_H_
#define _HUMITURE_HAL_H_
#include "i2c_bus.h"
#include "sensor_type.h"
typedef void *sensor_humiture_handle_t; /*!< humiture sensor handle*/
/**
* @brief humiture sensor id, used for humiture_create
*
*/
typedef enum {
SHT3X_ID = 0x01, /*!< sht3x humiture sensor id*/
HTS221_ID, /*!< hts221 humiture sensor id*/
HUMITURE_MAX_ID, /*!< max humiture sensor id*/
} humiture_id_t;
#ifdef __cplusplus
extern "C"
{
#endif
/**
* @brief Create a humiture/temperature/humidity sensor instance.
* Same series' sensor or sensor with same address can only be created once.
*
* @param bus i2c bus handle the sensor attached to
* @param id id declared in humiture_id_t
* @return sensor_humiture_handle_t return humiture sensor handle if succeed, return NULL if create failed.
*/
sensor_humiture_handle_t humiture_create(bus_handle_t bus, int id);
/**
* @brief Delete and release the sensor resource.
*
* @param sensor point to humiture sensor handle, will set to NULL if delete succeed.
* @return esp_err_t
* - ESP_OK Success
* - ESP_FAIL Fail
*/
esp_err_t humiture_delete(sensor_humiture_handle_t *sensor);
/**
* @brief Test if sensor is active
*
* @param sensor humiture sensor handle to operate
* @return esp_err_t
* - ESP_OK Success
* - ESP_FAIL Fail
*/
esp_err_t humiture_test(sensor_humiture_handle_t sensor);
/**
* @brief Acquire humiture sensor relative humidity result one time.
*
* @param sensor humiture sensor handle to operate.
* @param humidity result data (unit:percentage)
* @return esp_err_t
* - ESP_OK Success
* - ESP_FAIL Fail
* - ESP_ERR_NOT_SUPPORTED Function not supported on this sensor
*/
esp_err_t humiture_acquire_humidity(sensor_humiture_handle_t sensor, float *humidity);
/**
* @brief Acquire humiture sensor temperature result one time.
*
* @param sensor humiture sensor handle to operate.
* @param sensor_data result data (unit:dCelsius)
* @return esp_err_t
* - ESP_OK Success
* - ESP_FAIL Fail
* - ESP_ERR_NOT_SUPPORTED Function not supported on this sensor
*/
esp_err_t humiture_acquire_temperature(sensor_humiture_handle_t sensor, float *sensor_data);
/**
* @brief Set sensor to sleep mode.
*
* @param sensor humiture sensor handle to operate
* @return esp_err_t
* - ESP_OK Success
* - ESP_FAIL Fail
* - ESP_ERR_NOT_SUPPORTED Function not supported on this sensor
*/
esp_err_t humiture_sleep(sensor_humiture_handle_t sensor);
/**
* @brief Wakeup sensor from sleep mode.
*
* @param sensor humiture sensor handle to operate
* @return esp_err_t
* - ESP_OK Success
* - ESP_FAIL Fail
* - ESP_ERR_NOT_SUPPORTED Function not supported on this sensor
*/
esp_err_t humiture_wakeup(sensor_humiture_handle_t sensor);
/**
* @brief acquire a group of sensor data
*
* @param sensor humiture sensor handle to operate
* @param data_group acquired data
* @return esp_err_t
* - ESP_OK Success
* - ESP_FAIL Fail
*/
esp_err_t humiture_acquire(sensor_humiture_handle_t sensor, sensor_data_group_t *data_group);
/**
* @brief control sensor mode with control commands and args
*
* @param sensor humiture sensor handle to operate
* @param cmd control commands detailed in sensor_command_t
* @param args control commands args
* - ESP_OK Success
* - ESP_FAIL Fail
* - ESP_ERR_NOT_SUPPORTED Function not supported on this sensor
*/
esp_err_t humiture_control(sensor_humiture_handle_t sensor, sensor_command_t cmd, void *args);
#ifdef __cplusplus
extern "C"
}
#endif
#endif