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