LibDriver PMSX003
Loading...
Searching...
No Matches
driver_pmsx003_read_test.c
Go to the documentation of this file.
1
36
38
39static pmsx003_handle_t gs_handle;
40
49uint8_t pmsx003_read_test(uint32_t times)
50{
51 uint8_t res;
52 uint32_t i;
53 pmsx003_info_t info;
54
55 /* link interface function */
70
71 /* get pmsx003 information */
72 res = pmsx003_info(&info);
73 if (res != 0)
74 {
75 pmsx003_interface_debug_print("pmsx003: get info failed.\n");
76
77 return 1;
78 }
79 else
80 {
81 /* print chip information */
82 pmsx003_interface_debug_print("pmsx003: chip is %s.\n", info.chip_name);
83 pmsx003_interface_debug_print("pmsx003: manufacturer is %s.\n", info.manufacturer_name);
84 pmsx003_interface_debug_print("pmsx003: interface is %s.\n", info.interface);
85 pmsx003_interface_debug_print("pmsx003: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
86 pmsx003_interface_debug_print("pmsx003: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
87 pmsx003_interface_debug_print("pmsx003: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
88 pmsx003_interface_debug_print("pmsx003: max current is %0.2fmA.\n", info.max_current_ma);
89 pmsx003_interface_debug_print("pmsx003: max temperature is %0.1fC.\n", info.temperature_max);
90 pmsx003_interface_debug_print("pmsx003: min temperature is %0.1fC.\n", info.temperature_min);
91 }
92
93 /* start read test */
94 pmsx003_interface_debug_print("pmsx003: start read test.\n");
95
96 /* pmsx003 init */
97 res = pmsx003_init(&gs_handle);
98 if (res != 0)
99 {
100 pmsx003_interface_debug_print("pmsx003: init failed.\n");
101
102 return 1;
103 }
104
105 /* set normal mode */
107 if (res != 0)
108 {
109 pmsx003_interface_debug_print("pmsx003: set hard mode failed.\n");
110 (void)pmsx003_deinit(&gs_handle);
111
112 return 1;
113 }
114
115 /* set active mode */
116 res = pmsx003_set_mode(&gs_handle, PMSX003_MODE_ACTIVE);
117 if (res != 0)
118 {
119 pmsx003_interface_debug_print("pmsx003: set mode failed.\n");
120 (void)pmsx003_deinit(&gs_handle);
121
122 return 1;
123 }
124
125 /* active read test */
126 pmsx003_interface_debug_print("pmsx003: active read test.\n");
127
128 for (i = 0; i < times; i++)
129 {
130 pmsx003_data_t data;
131
132 /* delay 2000ms */
134
135 /* read */
136 res = pmsx003_read(&gs_handle, &data);
137 if (res != 0)
138 {
139 pmsx003_interface_debug_print("pmsx003: read failed.\n");
140 (void)pmsx003_deinit(&gs_handle);
141
142 return 1;
143 }
144
145 /* output */
146 pmsx003_interface_debug_print("pmsx003: pm1p0 standard is %d ug/m3.\n", data.pm1p0_standard_ug_m3);
147 pmsx003_interface_debug_print("pmsx003: pm2p5 standard is %d ug/m3.\n", data.pm2p5_standard_ug_m3);
148 pmsx003_interface_debug_print("pmsx003: pm10 standard is %d ug/m3.\n", data.pm10_standard_ug_m3);
149 pmsx003_interface_debug_print("pmsx003: pm1p0 atmospheric is %d ug/m3.\n", data.pm1p0_atmospheric_ug_m3);
150 pmsx003_interface_debug_print("pmsx003: pm2p5 atmospheric is %d ug/m3.\n", data.pm2p5_atmospheric_ug_m3);
151 pmsx003_interface_debug_print("pmsx003: pm10 atmospheric is %d ug/m3.\n", data.pm10_atmospheric_ug_m3);
152 pmsx003_interface_debug_print("pmsx003: beyond 0p3 um is %d.\n", data.beyond_0p3um);
153 pmsx003_interface_debug_print("pmsx003: beyond 0p5 um is %d.\n", data.beyond_0p5um);
154 pmsx003_interface_debug_print("pmsx003: beyond 1p0 um is %d.\n", data.beyond_1p0um);
155 pmsx003_interface_debug_print("pmsx003: beyond 2p5 um is %d.\n", data.beyond_2p5um);
156 pmsx003_interface_debug_print("pmsx003: beyond 5p0 um is %d.\n", data.beyond_5p0um);
157 pmsx003_interface_debug_print("pmsx003: beyond 10 um is %d.\n", data.beyond_10um);
158 pmsx003_interface_debug_print("pmsx003: version is 0x%02X.\n", data.version);
159 pmsx003_interface_debug_print("pmsx003: error code is 0x%02X.\n", data.error_code);
160 }
161
162 /* set passive mode */
163 res = pmsx003_set_mode(&gs_handle, PMSX003_MODE_PASSIVE);
164 if (res != 0)
165 {
166 pmsx003_interface_debug_print("pmsx003: set mode failed.\n");
167 (void)pmsx003_deinit(&gs_handle);
168
169 return 1;
170 }
171
172 /* passive read test */
173 pmsx003_interface_debug_print("pmsx003: passive read test.\n");
174
175 for (i = 0; i < times; i++)
176 {
177 pmsx003_data_t data;
178
179 /* delay 2000ms */
181
182 /* read */
183 res = pmsx003_read(&gs_handle, &data);
184 if (res != 0)
185 {
186 pmsx003_interface_debug_print("pmsx003: read failed.\n");
187 (void)pmsx003_deinit(&gs_handle);
188
189 return 1;
190 }
191
192 /* output */
193 pmsx003_interface_debug_print("pmsx003: pm1p0 standard is %d ug/m3.\n", data.pm1p0_standard_ug_m3);
194 pmsx003_interface_debug_print("pmsx003: pm2p5 standard is %d ug/m3.\n", data.pm2p5_standard_ug_m3);
195 pmsx003_interface_debug_print("pmsx003: pm10 standard is %d ug/m3.\n", data.pm10_standard_ug_m3);
196 pmsx003_interface_debug_print("pmsx003: pm1p0 atmospheric is %d ug/m3.\n", data.pm1p0_atmospheric_ug_m3);
197 pmsx003_interface_debug_print("pmsx003: pm2p5 atmospheric is %d ug/m3.\n", data.pm2p5_atmospheric_ug_m3);
198 pmsx003_interface_debug_print("pmsx003: pm10 atmospheric is %d ug/m3.\n", data.pm10_atmospheric_ug_m3);
199 pmsx003_interface_debug_print("pmsx003: beyond 0p3 um is %d.\n", data.beyond_0p3um);
200 pmsx003_interface_debug_print("pmsx003: beyond 0p5 um is %d.\n", data.beyond_0p5um);
201 pmsx003_interface_debug_print("pmsx003: beyond 1p0 um is %d.\n", data.beyond_1p0um);
202 pmsx003_interface_debug_print("pmsx003: beyond 2p5 um is %d.\n", data.beyond_2p5um);
203 pmsx003_interface_debug_print("pmsx003: beyond 5p0 um is %d.\n", data.beyond_5p0um);
204 pmsx003_interface_debug_print("pmsx003: beyond 10 um is %d.\n", data.beyond_10um);
205 pmsx003_interface_debug_print("pmsx003: version is 0x%02X.\n", data.version);
206 pmsx003_interface_debug_print("pmsx003: error code is 0x%02X.\n", data.error_code);
207 }
208
209 /* sleep */
210 res = pmsx003_sleep(&gs_handle);
211 if (res != 0)
212 {
213 pmsx003_interface_debug_print("pmsx003: sleep failed.\n");
214 (void)pmsx003_deinit(&gs_handle);
215
216 return 1;
217 }
218
219 /* sleep */
220 pmsx003_interface_debug_print("pmsx003: sleep.\n");
221
222 /* delay 1000ms */
224
225 /* wake up */
226 res = pmsx003_wake_up(&gs_handle);
227 if (res != 0)
228 {
229 pmsx003_interface_debug_print("pmsx003: wake up failed.\n");
230 (void)pmsx003_deinit(&gs_handle);
231
232 return 1;
233 }
234
235 /* wake up */
236 pmsx003_interface_debug_print("pmsx003: wake up.\n");
237
238 /* finish read test */
239 pmsx003_interface_debug_print("pmsx003: finish read test.\n");
240 (void)pmsx003_deinit(&gs_handle);
241
242 return 0;
243}
driver pmsx003 read test header file
uint8_t pmsx003_set_hard_mode(pmsx003_handle_t *handle, pmsx003_hard_mode_t mode)
set hard mode
uint8_t pmsx003_sleep(pmsx003_handle_t *handle)
sleep
uint8_t pmsx003_read(pmsx003_handle_t *handle, pmsx003_data_t *data)
read the data
struct pmsx003_info_s pmsx003_info_t
pmsx003 information structure definition
uint8_t pmsx003_info(pmsx003_info_t *info)
get chip's information
struct pmsx003_handle_s pmsx003_handle_t
pmsx003 handle structure definition
uint8_t pmsx003_deinit(pmsx003_handle_t *handle)
close the chip
uint8_t pmsx003_init(pmsx003_handle_t *handle)
initialize the chip
struct pmsx003_data_s pmsx003_data_t
pmsx003 data structure definition
uint8_t pmsx003_wake_up(pmsx003_handle_t *handle)
wake up
uint8_t pmsx003_set_mode(pmsx003_handle_t *handle, pmsx003_mode_t mode)
set mode
@ PMSX003_MODE_PASSIVE
@ PMSX003_MODE_ACTIVE
@ PMSX003_HARD_MODE_NORMAL
uint8_t pmsx003_interface_set_gpio_deinit(void)
interface set gpio deinit
uint16_t pmsx003_interface_uart_read(uint8_t *buf, uint16_t len)
interface uart read
uint8_t pmsx003_interface_uart_flush(void)
interface uart flush
uint8_t pmsx003_interface_uart_deinit(void)
interface uart deinit
uint8_t pmsx003_interface_uart_init(void)
interface uart init
uint8_t pmsx003_interface_reset_gpio_write(uint8_t level)
interface reset gpio write
void pmsx003_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t pmsx003_interface_reset_gpio_init(void)
interface reset gpio init
uint8_t pmsx003_interface_uart_write(uint8_t *buf, uint16_t len)
interface uart write
uint8_t pmsx003_interface_reset_gpio_deinit(void)
interface reset gpio deinit
uint8_t pmsx003_interface_set_gpio_write(uint8_t level)
interface set gpio write
uint8_t pmsx003_interface_set_gpio_init(void)
interface set gpio init
void pmsx003_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t pmsx003_read_test(uint32_t times)
read test
uint16_t beyond_0p5um
uint16_t pm2p5_standard_ug_m3
uint16_t pm10_atmospheric_ug_m3
uint16_t pm1p0_standard_ug_m3
uint16_t pm1p0_atmospheric_ug_m3
uint16_t beyond_10um
uint16_t beyond_0p3um
uint16_t pm2p5_atmospheric_ug_m3
uint16_t beyond_2p5um
uint16_t pm10_standard_ug_m3
uint16_t beyond_1p0um
uint16_t beyond_5p0um
uint32_t driver_version
char manufacturer_name[32]