55 lines
1.4 KiB
C
55 lines
1.4 KiB
C
#include "encoder_api.h"
|
|
#include "common_pm.h"
|
|
#include "encoder_port.h"
|
|
#include "stdio.h"
|
|
|
|
static void encoder_screen_event_callback(screen_status_t status)
|
|
{
|
|
if (status == PM_STATUS_ON) {
|
|
encoder_resume();
|
|
} else {
|
|
encoder_suspend();
|
|
}
|
|
}
|
|
|
|
static int32_t encoder_dev_open(void)
|
|
{
|
|
uint32_t ret = ENC_SUCC;
|
|
ret = rotary_encoder_init(NULL);
|
|
if (ret != ENC_SUCC) {
|
|
return -1;
|
|
}
|
|
tjd_driver_common_pm_get_ops()->register_screen_on_event(encoder_screen_event_callback);
|
|
return 0;
|
|
}
|
|
|
|
static int32_t encoder_dev_close(void)
|
|
{
|
|
uint32_t ret = ENC_SUCC;
|
|
tjd_driver_common_pm_get_ops()->unregister_screen_on_event(encoder_screen_event_callback);
|
|
ret = rotary_encoder_deinit();
|
|
if (ret != ENC_SUCC) {
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static void register_report_event_cb(void *callback) { encoder_register_report_event_cb(callback); }
|
|
|
|
static int32_t unregister_report_event_cb(void)
|
|
{
|
|
uint32_t ret = encoder_unregister_report_event_cb();
|
|
if (ret != ENC_SUCC) {
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static struct encoder_class_ops g_encoder_ops = {
|
|
.open = encoder_dev_open,
|
|
.close = encoder_dev_close,
|
|
.register_report_event_cb = register_report_event_cb,
|
|
.unregister_report_event_cb = unregister_report_event_cb,
|
|
};
|
|
|
|
struct encoder_class_ops *tjd_driver_encoder_get_ops(void) { return &g_encoder_ops; } |