LibDriver STS3X
Loading...
Searching...
No Matches
driver_sts3x_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static sts3x_handle_t gs_handle;
41
51{
52 uint8_t res;
53 uint16_t status;
54 sts3x_info_t info;
55 sts3x_address_t address_pin;
56 sts3x_repeatability_t repeatability;
57
58 /* link functions */
66
67 /* sts3x info */
68 res = sts3x_info(&info);
69 if (res != 0)
70 {
71 sts3x_interface_debug_print("sts3x: get info failed.\n");
72
73 return 1;
74 }
75 else
76 {
77 /* print chip information */
78 sts3x_interface_debug_print("sts3x: chip is %s.\n", info.chip_name);
79 sts3x_interface_debug_print("sts3x: manufacturer is %s.\n", info.manufacturer_name);
80 sts3x_interface_debug_print("sts3x: interface is %s.\n", info.interface);
81 sts3x_interface_debug_print("sts3x: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
82 sts3x_interface_debug_print("sts3x: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
83 sts3x_interface_debug_print("sts3x: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
84 sts3x_interface_debug_print("sts3x: max current is %0.2fmA.\n", info.max_current_ma);
85 sts3x_interface_debug_print("sts3x: max temperature is %0.1fC.\n", info.temperature_max);
86 sts3x_interface_debug_print("sts3x: min temperature is %0.1fC.\n", info.temperature_min);
87 }
88
89 /* start register test */
90 sts3x_interface_debug_print("sts3x: start register test.\n");
91
92 /* sts3x_set_addr_pin/sts3x_get_addr_pin test */
93 sts3x_interface_debug_print("sts3x: sts3x_set_addr_pin/sts3x_get_addr_pin test.\n");
94
95 /* set address pin 0 */
96 res = sts3x_set_addr_pin(&gs_handle, STS3X_ADDRESS_0);
97 if (res != 0)
98 {
99 sts3x_interface_debug_print("sts3x: set addr pin failed.\n");
100
101 return 1;
102 }
103 sts3x_interface_debug_print("sts3x: set address pin 0.\n");
104 res = sts3x_get_addr_pin(&gs_handle, &address_pin);
105 if (res != 0)
106 {
107 sts3x_interface_debug_print("sts3x: get addr pin failed.\n");
108
109 return 1;
110 }
111 sts3x_interface_debug_print("sts3x: check addr pin %s.\n", (STS3X_ADDRESS_0==address_pin)?"ok":"error");
112
113 /* set address pin 1 */
114 res = sts3x_set_addr_pin(&gs_handle, STS3X_ADDRESS_1);
115 if (res != 0)
116 {
117 sts3x_interface_debug_print("sts3x: set addr pin failed.\n");
118
119 return 1;
120 }
121 sts3x_interface_debug_print("sts3x: set address pin 1.\n");
122 res = sts3x_get_addr_pin(&gs_handle, &address_pin);
123 if (res != 0)
124 {
125 sts3x_interface_debug_print("sts3x: get addr pin failed.\n");
126
127 return 1;
128 }
129 sts3x_interface_debug_print("sts3x: check addr pin %s.\n", (STS3X_ADDRESS_1==address_pin)?"ok":"error");
130
131 /* set address pin */
132 res = sts3x_set_addr_pin(&gs_handle, addr_pin);
133 if (res != 0)
134 {
135 sts3x_interface_debug_print("sts3x: set addr pin failed.\n");
136
137 return 1;
138 }
139
140 /* sts3x init */
141 res = sts3x_init(&gs_handle);
142 if (res != 0)
143 {
144 sts3x_interface_debug_print("sts3x: init failed.\n");
145
146 return 1;
147 }
148
149 /* sts3x_set_repeatability/sts3x_get_repeatability test */
150 sts3x_interface_debug_print("sts3x: sts3x_set_repeatability/sts3x_get_repeatability test.\n");
151
152 /* set high */
154 if (res != 0)
155 {
156 sts3x_interface_debug_print("sts3x: set repeatability failed.\n");
157 (void)sts3x_deinit(&gs_handle);
158
159 return 1;
160 }
161 sts3x_interface_debug_print("sts3x: set repeatability high.\n");
162 res = sts3x_get_repeatability(&gs_handle, &repeatability);
163 if (res != 0)
164 {
165 sts3x_interface_debug_print("sts3x: get repeatability failed.\n");
166 (void)sts3x_deinit(&gs_handle);
167
168 return 1;
169 }
170 sts3x_interface_debug_print("sts3x: check repeatability pin %s.\n", (STS3X_REPEATABILITY_HIGH==repeatability)?"ok":"error");
171
172 /* set medium */
174 if (res != 0)
175 {
176 sts3x_interface_debug_print("sts3x: set repeatability failed.\n");
177 (void)sts3x_deinit(&gs_handle);
178
179 return 1;
180 }
181 sts3x_interface_debug_print("sts3x: set repeatability medium.\n");
182 res = sts3x_get_repeatability(&gs_handle, &repeatability);
183 if (res != 0)
184 {
185 sts3x_interface_debug_print("sts3x: get repeatability failed.\n");
186 (void)sts3x_deinit(&gs_handle);
187
188 return 1;
189 }
190 sts3x_interface_debug_print("sts3x: check repeatability pin %s.\n", (STS3X_REPEATABILITY_MEDIUM==repeatability)?"ok":"error");
191
192 /* set low */
194 if (res != 0)
195 {
196 sts3x_interface_debug_print("sts3x: set repeatability failed.\n");
197 (void)sts3x_deinit(&gs_handle);
198
199 return 1;
200 }
201 sts3x_interface_debug_print("sts3x: set repeatability low.\n");
202 res = sts3x_get_repeatability(&gs_handle, &repeatability);
203 if (res != 0)
204 {
205 sts3x_interface_debug_print("sts3x: get repeatability failed.\n");
206 (void)sts3x_deinit(&gs_handle);
207
208 return 1;
209 }
210 sts3x_interface_debug_print("sts3x: check repeatability pin %s.\n", (STS3X_REPEATABILITY_LOW==repeatability)?"ok":"error");
211
212 /* sts3x_set_heater test*/
213 sts3x_interface_debug_print("sts3x: set heater test.\n");
214
215 /* enable heater */
216 res = sts3x_set_heater(&gs_handle, STS3X_BOOL_TRUE);
217 if (res != 0)
218 {
219 sts3x_interface_debug_print("sts3x: set heater failed.\n");
220 (void)sts3x_deinit(&gs_handle);
221
222 return 1;
223 }
224
225 /* wait 10 ms */
227 sts3x_interface_debug_print("sts3x: enable heater.\n");
228 sts3x_interface_debug_print("sts3x: check heater %s.\n", (res==0)?"ok":"error");
229
230 /* disable heater */
231 res = sts3x_set_heater(&gs_handle, STS3X_BOOL_FALSE);
232 if (res != 0)
233 {
234 sts3x_interface_debug_print("sts3x: set heater failed.\n");
235 (void)sts3x_deinit(&gs_handle);
236
237 return 1;
238 }
239
240 /* wait 10 ms */
242 sts3x_interface_debug_print("sts3x: disable heater.\n");
243 sts3x_interface_debug_print("sts3x: check heater %s.\n", (res==0)?"ok":"error");
244
245 /* get_status test*/
246 sts3x_interface_debug_print("sts3x: get status test.\n");
247 res = sts3x_get_status(&gs_handle, (uint16_t *)&status);
248 if (res != 0)
249 {
250 sts3x_interface_debug_print("sts3x: get status failed.\n");
251 (void)sts3x_deinit(&gs_handle);
252
253 return 1;
254 }
255
256 /* wait 10 ms */
258 sts3x_interface_debug_print("sts3x: check status 0x%02X.\n", status);
259
260 /* clear_status test*/
261 sts3x_interface_debug_print("sts3x: clear status test.\n");
262 res = sts3x_clear_status(&gs_handle);
263 if (res != 0)
264 {
265 sts3x_interface_debug_print("sts3x: clear status failed.\n");
266 (void)sts3x_deinit(&gs_handle);
267
268 return 1;
269 }
270
271 /* wait 10 ms */
273 sts3x_interface_debug_print("sts3x: check clear status %s.\n", (res==0)?"ok":"error");
274
275 /* finish register test */
276 sts3x_interface_debug_print("sts3x: finish register test.\n");
277 (void)sts3x_deinit(&gs_handle);
278
279 return 0;
280}
driver sts3x register test header file
uint8_t sts3x_set_addr_pin(sts3x_handle_t *handle, sts3x_address_t addr_pin)
set the iic address pin
uint8_t sts3x_get_repeatability(sts3x_handle_t *handle, sts3x_repeatability_t *repeatability)
get the measurement repeatability
uint8_t sts3x_clear_status(sts3x_handle_t *handle)
clear the current status
sts3x_address_t
sts3x address enumeration definition
uint8_t sts3x_set_repeatability(sts3x_handle_t *handle, sts3x_repeatability_t repeatability)
set the measurement repeatability
uint8_t sts3x_info(sts3x_info_t *info)
get chip's information
struct sts3x_handle_s sts3x_handle_t
sts3x handle structure definition
uint8_t sts3x_get_addr_pin(sts3x_handle_t *handle, sts3x_address_t *addr_pin)
get the iic address pin
uint8_t sts3x_init(sts3x_handle_t *handle)
initialize the chip
struct sts3x_info_s sts3x_info_t
sts3x information structure definition
uint8_t sts3x_set_heater(sts3x_handle_t *handle, sts3x_bool_t enable)
enable or disable the chip heater
sts3x_repeatability_t
sts3x repeatability enumeration definition
uint8_t sts3x_get_status(sts3x_handle_t *handle, uint16_t *status)
get the current status
uint8_t sts3x_deinit(sts3x_handle_t *handle)
close the chip
@ STS3X_ADDRESS_1
@ STS3X_ADDRESS_0
@ STS3X_REPEATABILITY_HIGH
@ STS3X_REPEATABILITY_MEDIUM
@ STS3X_REPEATABILITY_LOW
@ STS3X_BOOL_FALSE
@ STS3X_BOOL_TRUE
void sts3x_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t sts3x_interface_iic_write_address16(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
interface iic bus write with 16 bits register address
void sts3x_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t sts3x_interface_iic_deinit(void)
interface iic bus deinit
uint8_t sts3x_interface_iic_init(void)
interface iic bus init
uint8_t sts3x_interface_iic_read_address16(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
interface iic bus read with 16 bits register address
uint8_t sts3x_register_test(sts3x_address_t addr_pin)
register test
float temperature_max
float supply_voltage_max_v
uint32_t driver_version
float temperature_min
float max_current_ma
char manufacturer_name[32]
float supply_voltage_min_v
char interface[8]
char chip_name[32]