57 lines
1.7 KiB
C
57 lines
1.7 KiB
C
#ifndef ENCODER_PORT_H
|
|
#define ENCODER_PORT_H
|
|
|
|
#include <stdint.h>
|
|
#include "input_manager.h"
|
|
|
|
#ifndef ENC_TRUE
|
|
#define ENC_TRUE 1
|
|
#endif
|
|
|
|
#ifndef ENC_FALSE
|
|
#define ENC_FALSE 0
|
|
#endif
|
|
|
|
#define ENC_SUCC 0UL
|
|
#define ENC_FAIL 0xFFFFFFFF
|
|
#define ENC_INVALID_PARAM 0x80000001
|
|
#define ENC_NOT_SUPPORT 0x80000002
|
|
#define ENC_MEMSET 0x80000003
|
|
#define ENC_MEMCPY 0x80000004
|
|
#define ENC_MALLOC 0x80000005
|
|
#define ENC_NOT_INIT 0x80000006
|
|
#define ENC_WAIT_ACK_FAIL 0x80000007
|
|
#define ENC_RECV_DATA_FAIL 0x80000008
|
|
#define ENC_SEND_DATA_FAIL 0x80000009
|
|
|
|
struct rotary_encoder
|
|
{
|
|
#if defined(TJD_PCBA_1)
|
|
uint8_t i2c_bus;
|
|
uint32_t i2c_speed;
|
|
uint32_t i2c_addr;
|
|
uint32_t int_pin;
|
|
#endif
|
|
uint32_t steps; // 步进数
|
|
int16_t pos; // 当前位置
|
|
struct
|
|
{
|
|
uint16_t desc[2];
|
|
unsigned int ndescs;
|
|
} gpio_descs; // GPIO 描述
|
|
};
|
|
|
|
uint32_t rotary_encoder_init(struct rotary_encoder *encoder);
|
|
uint32_t rotary_encoder_deinit(void);
|
|
uint32_t encoder_register_report_event_cb(ReportEventCb callback);
|
|
uint32_t encoder_unregister_report_event_cb(void);
|
|
uint32_t encoder_i2c_cmd_write(uint8_t cmd);
|
|
uint32_t encoder_i2c_package_write(uint8_t *data_buf, uint32_t data_len);
|
|
uint32_t encoder_i2c_reg_write(uint32_t reg_addr, uint8_t reg_len, uint8_t reg_cfg);
|
|
uint32_t encoder_i2c_data_read(uint32_t reg_addr, uint8_t reg_len, uint8_t *data_buf, uint16_t data_len);
|
|
uint32_t encoder_i2c_data_write_read(uint8_t *send_buf, uint16_t data_len, uint8_t *recv_buf, uint16_t recv_len);
|
|
|
|
uint32_t encoder_suspend(void);
|
|
uint32_t encoder_resume(void);
|
|
|
|
#endif |