LibDriver SGP41
Loading...
Searching...
No Matches
driver_sgp41_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static sgp41_handle_t gs_handle;
41
50{
51 uint8_t res;
52 uint16_t reg;
53 uint16_t result;
54 uint16_t id[3];
55 float rh;
56 float temp;
57 sgp41_info_t info;
58
59 /* link functions */
67
68 /* sgp41 info */
69 res = sgp41_info(&info);
70 if (res != 0)
71 {
72 sgp41_interface_debug_print("sgp41: get info failed.\n");
73
74 return 1;
75 }
76 else
77 {
78 /* print chip information */
79 sgp41_interface_debug_print("sgp41: chip is %s.\n", info.chip_name);
80 sgp41_interface_debug_print("sgp41: manufacturer is %s.\n", info.manufacturer_name);
81 sgp41_interface_debug_print("sgp41: interface is %s.\n", info.interface);
82 sgp41_interface_debug_print("sgp41: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
83 sgp41_interface_debug_print("sgp41: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
84 sgp41_interface_debug_print("sgp41: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
85 sgp41_interface_debug_print("sgp41: max current is %0.2fmA.\n", info.max_current_ma);
86 sgp41_interface_debug_print("sgp41: max temperature is %0.1fC.\n", info.temperature_max);
87 sgp41_interface_debug_print("sgp41: min temperature is %0.1fC.\n", info.temperature_min);
88 }
89
90 /* start register test */
91 sgp41_interface_debug_print("sgp41: start register test.\n");
92
93 /* sgp41 init */
94 res = sgp41_init(&gs_handle);
95 if (res != 0)
96 {
97 sgp41_interface_debug_print("sgp41: init failed.\n");
98
99 return 1;
100 }
101
102 /* sgp41 soft reset test */
103 sgp41_interface_debug_print("sgp41: sgp41_soft_reset test.\n");
104
105 /* soft reset */
106 res = sgp41_soft_reset(&gs_handle);
107 if (res != 0)
108 {
109 sgp41_interface_debug_print("sgp41: soft failed.\n");
110 (void)sgp41_deinit(&gs_handle);
111
112 return 1;
113 }
114 sgp41_interface_debug_print("sgp41: check soft reset %s.\n", res == 0 ? "ok" : "error");
115
116 /* sgp41_get_measure_test test */
117 sgp41_interface_debug_print("sgp41: sgp41_get_measure_test test.\n");
118
119 /* get measure test */
120 res = sgp41_get_measure_test(&gs_handle, &result);
121 if (res != 0)
122 {
123 sgp41_interface_debug_print("sgp41: get measure test failed.\n");
124 (void)sgp41_deinit(&gs_handle);
125
126 return 1;
127 }
128
129 /* output */
130 sgp41_interface_debug_print("sgp41: test result is 0x%04X.\n", result);
131
132 /* sgp41_get_serial_id test */
133 sgp41_interface_debug_print("sgp41: sgp41_get_serial_id test.\n");
134
135 /* get serial id */
136 res = sgp41_get_serial_id(&gs_handle, id);
137 if (res != 0)
138 {
139 sgp41_interface_debug_print("sgp41: get serial id failed.\n");
140 (void)sgp41_deinit(&gs_handle);
141
142 return 1;
143 }
144 sgp41_interface_debug_print("sgp41: check get serial id %s.\n", res == 0 ? "ok" : "error");
145 sgp41_interface_debug_print("sgp41: serial id 0x%04X 0x%04X 0x%04X.\n", (uint16_t)(id[0]), (uint16_t)(id[1]), (uint16_t)(id[2]));
146
147 /* sgp41_turn_heater_off test */
148 sgp41_interface_debug_print("sgp41: sgp41_turn_heater_off test.\n");
149
150 /* turn heater off */
151 res = sgp41_turn_heater_off(&gs_handle);
152 if (res != 0)
153 {
154 sgp41_interface_debug_print("sgp41: turn heater off failed.\n");
155 (void)sgp41_deinit(&gs_handle);
156
157 return 1;
158 }
159 sgp41_interface_debug_print("sgp41: check turn heater off %s.\n", res == 0 ? "ok" : "error");
160
161 /* sgp41_humidity_convert_to_register test */
162 sgp41_interface_debug_print("sgp41: sgp41_humidity_convert_to_register test.\n");
163
164 /* humidity convert to register */
165 rh = (float)(rand() % 1000) / 10.0f;
166 res = sgp41_humidity_convert_to_register(&gs_handle, rh, &reg);
167 if (res != 0)
168 {
169 sgp41_interface_debug_print("sgp41: humidity convert to register failed.\n");
170 (void)sgp41_deinit(&gs_handle);
171
172 return 1;
173 }
174 sgp41_interface_debug_print("sgp41: %0.2f%% humidity convert to register 0x%04X.\n", rh, reg);
175
176 /* sgp41_temperature_convert_to_register test */
177 sgp41_interface_debug_print("sgp41: sgp41_temperature_convert_to_register test.\n");
178
179 /* temperature convert to register */
180 temp = (float)(rand() % 500) / 10.0f;
181 res = sgp41_temperature_convert_to_register(&gs_handle, temp, &reg);
182 if (res != 0)
183 {
184 sgp41_interface_debug_print("sgp41: temperature convert to register failed.\n");
185 (void)sgp41_deinit(&gs_handle);
186
187 return 1;
188 }
189 sgp41_interface_debug_print("sgp41: %0.2fC temperature convert to register 0x%04X.\n", temp, reg);
190
191 /* finish register test */
192 sgp41_interface_debug_print("sgp41: finish register test.\n");
193 (void)sgp41_deinit(&gs_handle);
194
195 return 0;
196}
driver sgp41 register test header file
uint8_t sgp41_temperature_convert_to_register(sgp41_handle_t *handle, float temp, uint16_t *reg)
convert the temperature to the register data
uint8_t sgp41_info(sgp41_info_t *info)
get chip information
uint8_t sgp41_deinit(sgp41_handle_t *handle)
close the chip
struct sgp41_info_s sgp41_info_t
sgp41 information structure definition
uint8_t sgp41_get_measure_test(sgp41_handle_t *handle, uint16_t *result)
get the chip measure test
uint8_t sgp41_turn_heater_off(sgp41_handle_t *handle)
turn heater off
uint8_t sgp41_soft_reset(sgp41_handle_t *handle)
soft reset the chip
struct sgp41_handle_s sgp41_handle_t
sgp41 handle structure definition
uint8_t sgp41_get_serial_id(sgp41_handle_t *handle, uint16_t id[3])
get the chip serial id
uint8_t sgp41_init(sgp41_handle_t *handle)
initialize the chip
uint8_t sgp41_humidity_convert_to_register(sgp41_handle_t *handle, float rh, uint16_t *reg)
convert the humidity to the register data
uint8_t sgp41_interface_iic_read_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus read command
void sgp41_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t sgp41_interface_iic_write_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus write command
void sgp41_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t sgp41_interface_iic_deinit(void)
interface iic bus deinit
uint8_t sgp41_interface_iic_init(void)
interface iic bus init
uint8_t sgp41_register_test(void)
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]