From e5dc60e3cfc5551c18308dd4d2dad1069c6e5f2f Mon Sep 17 00:00:00 2001 From: tangweikang Date: Sun, 11 Aug 2019 15:34:51 +0800 Subject: [components][drivers] update encoder driven framework --- components/drivers/include/drivers/encoder.h | 32 +++++++++++----------------- 1 file changed, 12 insertions(+), 20 deletions(-) (limited to 'components/drivers/include') diff --git a/components/drivers/include/drivers/encoder.h b/components/drivers/include/drivers/encoder.h index c6c3e4d708..57cb47e6fb 100644 --- a/components/drivers/include/drivers/encoder.h +++ b/components/drivers/include/drivers/encoder.h @@ -19,20 +19,18 @@ extern "C" { #endif /* encoder control command */ -typedef enum -{ - ENCODER_INFO_GET = 0x01, /* get a encoder feature information */ - ENCODER_SWITCH_ON, /* switch on encoder */ - ENCODER_SWITCH_OFF, /* switch off encoder */ - ENCODER_COUNT_CLEAR, /* clear encoder count */ -} rt_encoder_ctrl_t; +#define ENCODER_CMD_GET_TYPE (128 + 0) /* get a encoder type information */ +#define ENCODER_CMD_ENABLE (128 + 1) /* enable encoder */ +#define ENCODER_CMD_DISABLE (128 + 2) /* disable encoder */ +#define ENCODER_CMD_CLEAR_COUNT (128 + 3) /* clear encoder count */ /* encoder type */ -typedef enum +enum rt_encoder_type { - SINGLE_PHASE_ENCODER = 0x01, /* single phase encoder */ + UNKNOWN_ENCODER_TYPE = 0x00, /* Unknown encoder type */ + SINGLE_PHASE_ENCODER, /* single phase encoder */ AB_PHASE_ENCODER /* two phase encoder */ -} rt_encoder_type_t; +}; struct rt_encoder_device; @@ -43,20 +41,14 @@ struct rt_encoder_ops rt_err_t (*control)(struct rt_encoder_device *encoder, rt_uint32_t cmd, void *args); }; -/* Encoder feature information */ -struct rt_encoder_info -{ - rt_encoder_type_t type; /* the type of encoder */ -}; - -typedef struct rt_encoder_device +struct rt_encoder_device { struct rt_device parent; const struct rt_encoder_ops *ops; - const struct rt_encoder_info *info; -} rt_encoder_t; + enum rt_encoder_type type; +}; -rt_err_t rt_device_encoder_register(rt_encoder_t *encoder, const char *name, void *user_data); +rt_err_t rt_device_encoder_register(struct rt_encoder_device *encoder, const char *name, void *user_data); #ifdef __cplusplus } -- cgit v1.3.1