| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /*
- * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #pragma once
- #include <stdint.h>
- #include <stdbool.h>
- #include "driver/rmt_encoder.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * @brief Throttle representation in DShot protocol
- */
- typedef struct {
- uint16_t throttle; /*!< Throttle value */
- bool telemetry_req; /*!< Telemetry request */
- } dshot_esc_throttle_t;
- /**
- * @brief Type of Dshot ESC encoder configuration
- */
- typedef struct {
- uint32_t resolution; /*!< Encoder resolution, in Hz */
- uint32_t baud_rate; /*!< Dshot protocol runs at several different baud rates, e.g. DSHOT300 = 300k baud rate */
- uint32_t post_delay_us; /*!< Delay time after one Dshot frame, in microseconds */
- } dshot_esc_encoder_config_t;
- /**
- * @brief Create RMT encoder for encoding Dshot ESC frame into RMT symbols
- *
- * @param[in] config Encoder configuration
- * @param[out] ret_encoder Returned encoder handle
- * @return
- * - ESP_ERR_INVALID_ARG for any invalid arguments
- * - ESP_ERR_NO_MEM out of memory when creating Dshot ESC encoder
- * - ESP_OK if creating encoder successfully
- */
- esp_err_t rmt_new_dshot_esc_encoder(const dshot_esc_encoder_config_t *config, rmt_encoder_handle_t *ret_encoder);
- #ifdef __cplusplus
- }
- #endif
|