LibDriver HCSR04
Loading...
Searching...
No Matches
driver_hcsr04.h
Go to the documentation of this file.
1
37
38#ifndef DRIVER_HCSR04_H
39#define DRIVER_HCSR04_H
40
41#include <stdlib.h>
42#include <stdint.h>
43#include <stdio.h>
44#include <string.h>
45
46#ifdef __cplusplus
47extern "C"{
48#endif
49
55
60
64#ifndef HCSR04_READ_RETRY_TIMES
65 #define HCSR04_READ_RETRY_TIMES 3
66#endif
67
71typedef struct hcsr04_time_s
72{
73 uint64_t microsecond;
74 uint32_t millisecond;
76
80typedef struct hcsr04_handle_s
81{
82 uint8_t (*trig_init)(void);
83 uint8_t (*trig_deinit)(void);
84 uint8_t (*trig_write)(uint8_t value);
85 uint8_t (*echo_init)(void);
86 uint8_t (*echo_deinit)(void);
87 uint8_t (*echo_read)(uint8_t *value);
88 uint8_t (*timestamp_read)(hcsr04_time_t *time);
89 void (*delay_us)(uint32_t ms);
90 void (*delay_ms)(uint32_t ms);
91 void (*debug_print)(const char *const fmt, ...);
92 uint8_t inited;
94
110
114
121
128#define DRIVER_HCSR04_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
129
136#define DRIVER_HCSR04_LINK_TRIG_INIT(HANDLE, FUC) (HANDLE)->trig_init = FUC
137
144#define DRIVER_HCSR04_LINK_TRIG_DEINIT(HANDLE, FUC) (HANDLE)->trig_deinit = FUC
145
152#define DRIVER_HCSR04_LINK_TRIG_WRITE(HANDLE, FUC) (HANDLE)->trig_write = FUC
153
160#define DRIVER_HCSR04_LINK_ECHO_INIT(HANDLE, FUC) (HANDLE)->echo_init = FUC
161
168#define DRIVER_HCSR04_LINK_ECHO_DEINIT(HANDLE, FUC) (HANDLE)->echo_deinit = FUC
169
176#define DRIVER_HCSR04_LINK_ECHO_WRITE(HANDLE, FUC) (HANDLE)->echo_read = FUC
177
184#define DRIVER_HCSR04_LINK_TIMESTAMP_READ(HANDLE, FUC) (HANDLE)->timestamp_read = FUC
185
192#define DRIVER_HCSR04_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
193
200#define DRIVER_HCSR04_LINK_DELAY_US(HANDLE, FUC) (HANDLE)->delay_us = FUC
201
208#define DRIVER_HCSR04_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
209
213
220
229uint8_t hcsr04_info(hcsr04_info_t *info);
230
241uint8_t hcsr04_init(hcsr04_handle_t *handle);
242
253uint8_t hcsr04_deinit(hcsr04_handle_t *handle);
254
267uint8_t hcsr04_read(hcsr04_handle_t *handle, uint32_t *time_us, float *m);
268
272
276
277#ifdef __cplusplus
278}
279#endif
280
281#endif
uint8_t hcsr04_init(hcsr04_handle_t *handle)
initialize the chip
struct hcsr04_handle_s hcsr04_handle_t
hcsr04 handle structure definition
uint8_t hcsr04_read(hcsr04_handle_t *handle, uint32_t *time_us, float *m)
read the distance
uint8_t hcsr04_info(hcsr04_info_t *info)
get chip's information
uint8_t hcsr04_deinit(hcsr04_handle_t *handle)
close the chip
struct hcsr04_time_s hcsr04_time_t
hcsr04 time structure definition
struct hcsr04_info_s hcsr04_info_t
hcsr04 information structure definition
hcsr04 handle structure definition
void(* delay_ms)(uint32_t ms)
uint8_t(* echo_read)(uint8_t *value)
void(* delay_us)(uint32_t ms)
uint8_t(* echo_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* trig_write)(uint8_t value)
uint8_t(* trig_deinit)(void)
uint8_t(* trig_init)(void)
uint8_t(* timestamp_read)(hcsr04_time_t *time)
uint8_t(* echo_init)(void)
hcsr04 information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]
hcsr04 time structure definition
uint32_t millisecond
uint64_t microsecond