Distance Sensor API¶
Brief Description HC-SR04 ultrasonic distance sensor driver with dual-queue, interrupt-driven architecture for real-time, race-condition-safe measurement processing. Provides blocking and non-blocking APIs, queue overflow statistics, and health monitoring. Key features:
Architecture:
|
Lifecycle Functions¶
Initialize the distance sensor, configure GPIO, ISR, and queues. Loads configuration from config_manager. Signature: esp_err_t distance_sensor_init(gpio_num_t trigger_pin, gpio_num_t echo_pin);
Parameters:
Returns:
Note
|
Start distance measurements, create measurement task, trigger sensors, process results. Signature: esp_err_t distance_sensor_start(void);
Parameters:
Returns:
Note
|
Stop distance measurements and measurement task. Signature: esp_err_t distance_sensor_stop(void);
Parameters:
Returns:
Note
|
Data Access Functions¶
Get the latest distance measurement (blocking until new data is available). Signature: esp_err_t distance_sensor_get_latest(distance_measurement_t *measurement);
Parameters:
Returns:
Note
|
Check if a new measurement is available (non-blocking). Signature: bool distance_sensor_has_new_measurement(void);
Parameters:
Returns:
Note
|
Statistics & Monitoring Functions¶
Get the number of queue overflows (discarded measurements). Signature: uint32_t distance_sensor_get_queue_overflows(void);
Parameters:
Returns:
Note
|
Perform lightweight sensor health monitoring (queue overflow, health status). Signature: esp_err_t distance_sensor_monitor(void);
Parameters:
Returns:
Note
|
Check if the sensor task is running. Signature: bool distance_sensor_is_running(void);
Parameters:
Returns:
Note
|
Data Types¶
Error codes for distance sensor measurements. Definition: typedef enum {
DISTANCE_SENSOR_OK = 0,
DISTANCE_SENSOR_TIMEOUT,
DISTANCE_SENSOR_OUT_OF_RANGE,
DISTANCE_SENSOR_NO_ECHO,
DISTANCE_SENSOR_INVALID_READING
} distance_sensor_error_t;
Values:
|
Raw measurement data from ISR (timestamps only). Definition: typedef struct {
uint64_t echo_start_us;
uint64_t echo_end_us;
distance_sensor_error_t status;
} distance_raw_measurement_t;
Fields:
|
Processed distance measurement. Definition: typedef struct {
uint16_t distance_mm;
uint64_t timestamp_us;
distance_sensor_error_t status;
} distance_measurement_t;
Fields:
|