zephyr/drivers/gpio/gpio_emul_sdl_bottom.c
Alberto Escolar Piedras 1457b361b6 drivers gpio SDL emul: Split in top and bottom
Split the SDL GPIO emulator driver in a top and bottom
to enable using it with embedded libCs.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2023-07-06 16:04:15 +02:00

34 lines
648 B
C

/*
* Copyright (c) 2022, Basalte bv
* Copyright (c) 2023 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <SDL.h>
#include "gpio_emul_sdl_bottom.h"
static int sdl_filter_bottom(void *arg, SDL_Event *event)
{
struct gpio_sdl_data *data = arg;
/* Only handle keyboard events */
switch (event->type) {
case SDL_KEYDOWN:
case SDL_KEYUP:
break;
default:
return 1;
}
data->event_scan_code = event->key.keysym.scancode;
data->key_down = event->type == SDL_KEYDOWN;
return data->callback(arg);
}
void gpio_sdl_init_bottom(struct gpio_sdl_data *data)
{
SDL_AddEventWatch(sdl_filter_bottom, (void *)data);
}