Initial en11 exploration.

This commit is contained in:
Pete Johanson
2020-07-17 22:43:19 -04:00
parent f6110a632d
commit 893b99d907
10 changed files with 542 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
zephyr_library()
zephyr_library_sources_ifdef(CONFIG_EN11 en11.c)
zephyr_library_sources_ifdef(CONFIG_EN11_TRIGGER en11_trigger.c)

View File

@@ -0,0 +1,52 @@
# EN11 incremental encoder sensor configuration options
# Copyright (c) 2020 Peter Johanson
# SPDX-License-Identifier: MIT
menuconfig EN11
bool "EN11 Incremental Encoder Sensor"
depends on GPIO
help
Enable driver for EN11 incremental encoder sensors.
if EN11
choice
prompt "Trigger mode"
default EN11_TRIGGER_NONE
help
Specify the type of triggering to be used by the driver.
config EN11_TRIGGER_NONE
bool "No trigger"
config EN11_TRIGGER_GLOBAL_THREAD
bool "Use global thread"
depends on GPIO
select EN11_TRIGGER
config EN11_TRIGGER_OWN_THREAD
bool "Use own thread"
depends on GPIO
select EN11_TRIGGER
endchoice
config EN11_TRIGGER
bool
config EN11_THREAD_PRIORITY
int "Thread priority"
depends on EN11_TRIGGER_OWN_THREAD
default 10
help
Priority of thread used by the driver to handle interrupts.
config EN11_THREAD_STACK_SIZE
int "Thread stack size"
depends on EN11_TRIGGER_OWN_THREAD
default 1024
help
Stack size of thread used by the driver to handle interrupts.
endif # EN11

View File

@@ -8,6 +8,7 @@
#include <device.h>
#include <devicetree.h>
#include <settings/settings.h>
#include <drivers/sensor.h>
#include <logging/log.h>
LOG_MODULE_REGISTER(zmk, CONFIG_ZMK_LOG_LEVEL);
@@ -18,6 +19,27 @@ LOG_MODULE_REGISTER(zmk, CONFIG_ZMK_LOG_LEVEL);
#define ZMK_KSCAN_DEV DT_LABEL(ZMK_MATRIX_NODE_ID)
static struct sensor_trigger trigger;
void encoder_change(struct device *dev, struct sensor_trigger *trigger)
{
LOG_DBG("");
}
void init_sensor()
{
struct device *dev = device_get_binding("Rotary Encoder");
if (!dev) {
LOG_DBG("NO ENCODER!");
return;
}
trigger.type = SENSOR_TRIG_DATA_READY;
trigger.chan = SENSOR_CHAN_ROTATION;
sensor_trigger_set(dev, &trigger, encoder_change);
}
void main(void)
{
printk("Welcome to ZMK!\n");
@@ -31,4 +53,6 @@ void main(void)
#ifdef CONFIG_SETTINGS
settings_load();
#endif
init_sensor();
}