From 215aa9092564cabb11cc323e2560e0ae20a11667 Mon Sep 17 00:00:00 2001 From: "leon.bohnwagner" <leon.bohnwagner@informatik.hs-fulda.de> Date: Thu, 13 Feb 2025 01:38:00 +0100 Subject: [PATCH] fix: add send byte control bits --- kernel/kmod.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/kernel/kmod.c b/kernel/kmod.c index 875c2dc..d36d71b 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c @@ -76,13 +76,20 @@ static enum hrtimer_restart timer_callback(struct hrtimer *timer) { return HRTIMER_RESTART; } +static void send_bit(uint8_t bit) { + gpio_set_value(GPIO_PIN, bit); + udelay(1); +} + static void send_byte(uint8_t byte) { + send_bit(0); + for (int i = 0; i < 8; i++) { int bit = (byte >> (7 - i)) & 1; - - gpio_set_value(GPIO_PIN, bit); - udelay(1); + send_bit(bit); } + + send_bit(1); } static void send_data(const void *data, size_t length) { @@ -170,7 +177,7 @@ static int __init lkm_init(void) printk(KERN_ALERT "Failed to request GPIO pin\n"); return -1; } - gpio_direction_output(GPIO_PIN, 0); + gpio_direction_output(GPIO_PIN, 1); timed_thread = kthread_run(timed_thread_fn, NULL, "timed_thread"); if (IS_ERR(timed_thread)) { -- GitLab