/* * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include #include #include "domain.h" #include "esp_err.h" typedef struct { const char *name_cn; const char *name_en; float angle; } domain_direction_entry_t; size_t domain_direction_catalog_count(void); const domain_direction_entry_t *domain_direction_catalog_get(size_t index); bool domain_direction_catalog_find_by_name(const char *input, size_t *out_index); bool domain_direction_catalog_find_by_angle(float angle, size_t *out_index); float domain_angle_normalize(float angle); float domain_angle_shortest_rotation(float current, float target); void domain_calibration_store_set(const domain_direction_calibration_t *config); bool domain_calibration_store_get(domain_direction_calibration_t *out_config); bool domain_direction_lock_state(int timeout_ms); void domain_direction_unlock_state(void); typedef struct { int gpio_num; int active_level; bool pullup_enabled; bool pulldown_enabled; } domain_digital_input_config_t; esp_err_t domain_runtime_platform_init(void); esp_err_t domain_runtime_stepper_rotate_angle_with_accel_timeout(float angle, int target_delay_us, int timeout_ms); void domain_runtime_stepper_power_off(void); esp_err_t domain_runtime_digital_input_configure(const domain_digital_input_config_t *config); bool domain_runtime_digital_input_is_active(const domain_digital_input_config_t *config); esp_err_t domain_runtime_calibration_switch_init(void); bool domain_runtime_calibration_switch_is_active(void);