mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-27 11:31:13 +00:00
Partially implement connection update logic
This commit is contained in:
parent
5bf8248dd3
commit
c9824094c6
@ -29,6 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "debug.h"
|
||||
#include "command.h"
|
||||
#include "util.h"
|
||||
#include "host.h"
|
||||
#include "sendchar.h"
|
||||
#include "eeconfig.h"
|
||||
#include "action_layer.h"
|
||||
@ -471,6 +472,7 @@ void keyboard_init(void) {
|
||||
#ifdef CONNECTION_ENABLE
|
||||
connection_init();
|
||||
#endif
|
||||
host_init();
|
||||
led_init_ports();
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_init_ports();
|
||||
@ -715,6 +717,8 @@ void quantum_task(void) {
|
||||
#ifdef LAYER_LOCK_ENABLE
|
||||
layer_lock_task();
|
||||
#endif
|
||||
|
||||
host_task();
|
||||
}
|
||||
|
||||
/** \brief Main task that is repeatedly called as fast as possible. */
|
||||
|
@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include <stdint.h>
|
||||
#include "keyboard.h"
|
||||
#include "keycode.h"
|
||||
#include "action.h"
|
||||
#include "host.h"
|
||||
#include "util.h"
|
||||
#include "debug.h"
|
||||
@ -78,9 +79,35 @@ host_driver_t *host_get_driver(void) {
|
||||
return driver;
|
||||
}
|
||||
|
||||
#ifdef CONNECTION_ENABLE
|
||||
static connection_host_t active_host = CONNECTION_HOST_NONE;
|
||||
|
||||
static void host_update_active_driver(connection_host_t current, connection_host_t next) {
|
||||
if (current != CONNECTION_HOST_NONE) {
|
||||
// TODO: Additionally have host_driver_t handle swap
|
||||
clear_keyboard();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void host_init(void) {
|
||||
// currently do nothing
|
||||
}
|
||||
|
||||
void host_task(void) {
|
||||
#ifdef CONNECTION_ENABLE
|
||||
connection_host_t next_host = connection_get_host();
|
||||
if (next_host != active_host) {
|
||||
host_update_active_driver(active_host, next_host);
|
||||
|
||||
active_host = next_host;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static host_driver_t *host_get_active_driver(void) {
|
||||
#ifdef CONNECTION_ENABLE
|
||||
switch (connection_get_host()) {
|
||||
switch (active_host) {
|
||||
# ifdef BLUETOOTH_ENABLE
|
||||
case CONNECTION_HOST_BLUETOOTH:
|
||||
return &bt_driver;
|
||||
@ -96,7 +123,7 @@ static host_driver_t *host_get_active_driver(void) {
|
||||
|
||||
bool host_can_send_nkro(void) {
|
||||
#ifdef CONNECTION_ENABLE
|
||||
switch (connection_get_host()) {
|
||||
switch (active_host) {
|
||||
# ifdef BLUETOOTH_ENABLE
|
||||
case CONNECTION_HOST_BLUETOOTH:
|
||||
return bluetooth_can_send_nkro();
|
||||
|
@ -27,6 +27,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void host_init(void);
|
||||
void host_task(void);
|
||||
|
||||
/* host driver */
|
||||
void host_set_driver(host_driver_t *driver);
|
||||
host_driver_t *host_get_driver(void);
|
||||
|
Loading…
Reference in New Issue
Block a user