LibDriver AS3935
Loading...
Searching...
No Matches
driver_as3935_read_test.c
Go to the documentation of this file.
1
36
38
39static as3935_handle_t gs_handle;
40volatile static uint8_t gs_flag;
41
47static void a_callback(uint8_t type)
48{
49 uint8_t res;
50 uint8_t raw;
51 int8_t km;
52 uint32_t energy;
53
54 switch (type)
55 {
57 {
58 as3935_interface_debug_print("as3935: irq noise level too high.\n");
59
60 break;
61 }
63 {
64 as3935_interface_debug_print("as3935: irq disturber detected.\n");
65
66 break;
67 }
69 {
70 as3935_interface_debug_print("as3935: irq lightning interrupt.\n");
71 gs_flag = 1;
72
73 /* read single lightning energy */
74 res = as3935_read_single_lightning_energy(&gs_handle, &energy);
75 if (res == 0)
76 {
77 as3935_interface_debug_print("as3935: lightning energy is %d.\n", energy);
78 }
79
80 /* read distance */
81 res = as3935_read_distance(&gs_handle, &raw, &km);
82 if (res == 0)
83 {
84 as3935_interface_debug_print("as3935: distance is %dkm.\n", km);
85 }
86
87 break;
88 }
89 default :
90 {
91 as3935_interface_debug_print("as3935: unknown code.\n");
92
93 break;
94 }
95 }
96}
97
106{
107 if (as3935_irq_handler(&gs_handle) != 0)
108 {
109 return 1;
110 }
111
112 return 0;
113}
114
125uint8_t as3935_read_test(as3935_interface_t interface, as3935_address_t addr_pin, uint32_t times)
126{
127 uint8_t res;
128 uint8_t cap;
129 uint32_t i;
130 as3935_info_t info;
131
132 /* link interface function */
144 DRIVER_AS3935_LINK_RECEIVE_CALLBACK(&gs_handle, a_callback);
145
146 /* get information */
147 res = as3935_info(&info);
148 if (res != 0)
149 {
150 as3935_interface_debug_print("as3935: get info failed.\n");
151
152 return 1;
153 }
154 else
155 {
156 /* print chip info */
157 as3935_interface_debug_print("as3935: chip is %s.\n", info.chip_name);
158 as3935_interface_debug_print("as3935: manufacturer is %s.\n", info.manufacturer_name);
159 as3935_interface_debug_print("as3935: interface is %s.\n", info.interface);
160 as3935_interface_debug_print("as3935: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
161 as3935_interface_debug_print("as3935: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
162 as3935_interface_debug_print("as3935: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
163 as3935_interface_debug_print("as3935: max current is %0.2fmA.\n", info.max_current_ma);
164 as3935_interface_debug_print("as3935: max temperature is %0.1fC.\n", info.temperature_max);
165 as3935_interface_debug_print("as3935: min temperature is %0.1fC.\n", info.temperature_min);
166 }
167
168 /* set the interface */
169 res = as3935_set_interface(&gs_handle, interface);
170 if (res != 0)
171 {
172 as3935_interface_debug_print("as3935: set interface failed.\n");
173
174 return 1;
175 }
176
177 /* set the address pin */
178 res = as3935_set_addr_pin(&gs_handle, addr_pin);
179 if (res != 0)
180 {
181 as3935_interface_debug_print("as3935: set addr pin failed.\n");
182
183 return 1;
184 }
185
186 /* start read test */
187 as3935_interface_debug_print("as3935: start read test.\n");
188
189 /* init as3935 */
190 res = as3935_init(&gs_handle);
191 if (res != 0)
192 {
193 as3935_interface_debug_print("as3935: init failed.\n");
194
195 return 1;
196 }
197
198 /* power on */
199 res = as3935_set_power_down(&gs_handle, AS3935_BOOL_FALSE);
200 if (res != 0)
201 {
202 as3935_interface_debug_print("as3935: set power down failed.\n");
203 (void)as3935_deinit(&gs_handle);
204
205 return 1;
206 }
207
208 /* reset default */
209 res = as3935_reset_default(&gs_handle);
210 if (res != 0)
211 {
212 as3935_interface_debug_print("as3935: reset default failed.\n");
213 (void)as3935_deinit(&gs_handle);
214
215 return 1;
216 }
217
218 /* delay 10ms */
220
221 /* set calibrate rc osc */
222 res = as3935_set_calibrate_rc_osc(&gs_handle);
223 if (res != 0)
224 {
225 as3935_interface_debug_print("as3935: set calibrate rc osc failed.\n");
226 (void)as3935_deinit(&gs_handle);
227
228 return 1;
229 }
230
231 /* enable system rc osc display on irq */
233 if (res != 0)
234 {
235 as3935_interface_debug_print("as3935: set system rc osc display on irq failed.\n");
236 (void)as3935_deinit(&gs_handle);
237
238 return 1;
239 }
240
241 /* delay 2ms */
243
244 /* disable system rc osc display on irq */
246 if (res != 0)
247 {
248 as3935_interface_debug_print("as3935: set system rc osc display on irq failed.\n");
249 (void)as3935_deinit(&gs_handle);
250
251 return 1;
252 }
253
254 /* disable lc osc display on irq */
256 if (res != 0)
257 {
258 as3935_interface_debug_print("as3935: set lc osc display on irq failed.\n");
259 (void)as3935_deinit(&gs_handle);
260
261 return 1;
262 }
263
264 /* disable timer rc osc display on irq */
266 if (res != 0)
267 {
268 as3935_interface_debug_print("as3935: set timer rc osc display on irq failed.\n");
269 (void)as3935_deinit(&gs_handle);
270
271 return 1;
272 }
273
274 /* clear statistics */
276 if (res != 0)
277 {
278 as3935_interface_debug_print("as3935: set clear statistics failed.\n");
279 (void)as3935_deinit(&gs_handle);
280
281 return 1;
282 }
283
284 /* clear statistics */
286 if (res != 0)
287 {
288 as3935_interface_debug_print("as3935: set clear statistics failed.\n");
289 (void)as3935_deinit(&gs_handle);
290
291 return 1;
292 }
293
294 /* clear statistics */
296 if (res != 0)
297 {
298 as3935_interface_debug_print("as3935: set clear statistics failed.\n");
299 (void)as3935_deinit(&gs_handle);
300
301 return 1;
302 }
303
304 /* set afe gain indoor */
306 if (res != 0)
307 {
308 as3935_interface_debug_print("as3935: set afe gain boost failed.\n");
309 (void)as3935_deinit(&gs_handle);
310
311 return 1;
312 }
313
314 /* set outdoor 860 μVrms, indoor 62 μVrms */
316 if (res != 0)
317 {
318 as3935_interface_debug_print("as3935: set noise floor level failed.\n");
319 (void)as3935_deinit(&gs_handle);
320
321 return 1;
322 }
323
324 /* set watchdog threshold 2 */
325 res = as3935_set_watchdog_threshold(&gs_handle, 2);
326 if (res != 0)
327 {
328 as3935_interface_debug_print("as3935: set watchdog threshold failed.\n");
329 (void)as3935_deinit(&gs_handle);
330
331 return 1;
332 }
333
334 /* set lightning min number 1 */
336 if (res != 0)
337 {
338 as3935_interface_debug_print("as3935: set lightning min number failed.\n");
339 (void)as3935_deinit(&gs_handle);
340
341 return 1;
342 }
343
344 /* set spike rejection 2 */
345 res = as3935_set_spike_rejection(&gs_handle, 2);
346 if (res != 0)
347 {
348 as3935_interface_debug_print("as3935: set spike rejection failed.\n");
349 (void)as3935_deinit(&gs_handle);
350
351 return 1;
352 }
353
354 /* set frequency division ration 16 */
356 if (res != 0)
357 {
358 as3935_interface_debug_print("as3935: set frequency division ration failed.\n");
359 (void)as3935_deinit(&gs_handle);
360
361 return 1;
362 }
363
364 /* disable mask disturber */
366 if (res != 0)
367 {
368 as3935_interface_debug_print("as3935: set mask disturber failed.\n");
369 (void)as3935_deinit(&gs_handle);
370
371 return 1;
372 }
373
374 /* convert cap */
376 if (res != 0)
377 {
378 as3935_interface_debug_print("as3935: internal tuning capacitor convert to register failed.\n");
379 (void)as3935_deinit(&gs_handle);
380
381 return 1;
382 }
383
384 /* set internal tuning capacitor */
385 res = as3935_set_internal_tuning_capacitor(&gs_handle, cap);
386 if (res != 0)
387 {
388 as3935_interface_debug_print("as3935: set internal tuning capacitor failed.\n");
389 (void)as3935_deinit(&gs_handle);
390
391 return 1;
392 }
393
394 gs_flag = 0;
395 for (i = 0; i < times; i++)
396 {
397 while (1)
398 {
399 if (gs_flag != 0)
400 {
401 as3935_interface_debug_print("as3935: find interrupt.\n");
402 gs_flag = 0;
403
404 break;
405 }
406 }
407 }
408
409 /* finish read test */
410 as3935_interface_debug_print("as3935: finish read test.\n");
411 (void)as3935_deinit(&gs_handle);
412
413 return 0;
414}
driver as3935 read test header file
uint8_t as3935_set_frequency_division_ration(as3935_handle_t *handle, as3935_frequency_division_ration_t division)
set frequency division ration
uint8_t as3935_set_interface(as3935_handle_t *handle, as3935_interface_t interface)
set the chip interface
uint8_t as3935_set_clear_statistics(as3935_handle_t *handle, as3935_bool_t enable)
enable or disable clear statistics
uint8_t as3935_set_power_down(as3935_handle_t *handle, as3935_bool_t enable)
set power down
uint8_t as3935_set_watchdog_threshold(as3935_handle_t *handle, uint8_t threshold)
set watchdog threshold
uint8_t as3935_info(as3935_info_t *info)
get chip's information
uint8_t as3935_set_spike_rejection(as3935_handle_t *handle, uint8_t rejection)
set spike rejection
uint8_t as3935_internal_tuning_capacitor_convert_to_register(as3935_handle_t *handle, float pf, uint8_t *reg)
convert the internal tuning capacitor to the register raw data
uint8_t as3935_set_noise_floor_level(as3935_handle_t *handle, as3935_noise_floor_level_t level)
set noise floor level
uint8_t as3935_set_calibrate_rc_osc(as3935_handle_t *handle)
calibrate rc osc
uint8_t as3935_deinit(as3935_handle_t *handle)
close the chip
uint8_t as3935_set_afe_gain_boost(as3935_handle_t *handle, as3935_afe_gain_t gain)
set afe gain boost
uint8_t as3935_read_single_lightning_energy(as3935_handle_t *handle, uint32_t *energy)
read single lightning energy
as3935_address_t
as3935 address enumeration definition
as3935_interface_t
as3935 interface enumeration definition
uint8_t as3935_set_mask_disturber(as3935_handle_t *handle, as3935_bool_t enable)
enable or disable mask disturber
uint8_t as3935_set_internal_tuning_capacitor(as3935_handle_t *handle, uint8_t cap)
set internal tuning capacitor
struct as3935_info_s as3935_info_t
as3935 information structure definition
uint8_t as3935_init(as3935_handle_t *handle)
initialize the chip
struct as3935_handle_s as3935_handle_t
as3935 handle structure definition
uint8_t as3935_set_lightning_min_number(as3935_handle_t *handle, as3935_lightning_min_number_t number)
set lightning min number
uint8_t as3935_set_addr_pin(as3935_handle_t *handle, as3935_address_t addr_pin)
set the iic address pin
uint8_t as3935_set_system_rc_osc_display_on_irq(as3935_handle_t *handle, as3935_bool_t enable)
enable or disable system rc osc display on irq
uint8_t as3935_read_distance(as3935_handle_t *handle, uint8_t *raw, int8_t *km)
read distance
uint8_t as3935_set_lc_osc_display_on_irq(as3935_handle_t *handle, as3935_bool_t enable)
enable or disable lc osc display on irq
uint8_t as3935_irq_handler(as3935_handle_t *handle)
irq handler
uint8_t as3935_reset_default(as3935_handle_t *handle)
reset to default
uint8_t as3935_set_timer_rc_osc_display_on_irq(as3935_handle_t *handle, as3935_bool_t enable)
enable or disable timer rc osc display on irq
@ AS3935_INTERRUPT_STATUS_DISTURBER_DETECTED
@ AS3935_INTERRUPT_STATUS_LIGHTNING_INTERRUPT
@ AS3935_INTERRUPT_STATUS_NOISE_LEVEL_TOO_HIGH
@ AS3935_FREQUENCY_DIVISION_RATION_16
@ AS3935_NOISE_FLOOR_LEVEL_OUTDOOR_860_INDOOR_62
@ AS3935_BOOL_FALSE
@ AS3935_BOOL_TRUE
@ AS3935_LIGHTNING_MIN_NUMBER_1
@ AS3935_AFE_GAIN_INDOOR
void as3935_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t as3935_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void as3935_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t as3935_interface_iic_deinit(void)
interface iic bus deinit
uint8_t as3935_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t as3935_interface_iic_init(void)
interface iic bus init
uint8_t as3935_interface_spi_init(void)
interface spi bus init
uint8_t as3935_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
uint8_t as3935_interface_spi_deinit(void)
interface spi bus deinit
uint8_t as3935_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t as3935_read_test(as3935_interface_t interface, as3935_address_t addr_pin, uint32_t times)
read test
uint8_t as3935_read_test_irq_handler(void)
read test irq handler
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]