From 55d723bfd4c207dda3cbee45cd36606aa6d90588 Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 13 Sep 2023 18:09:37 +0200 Subject: [PATCH] pin state --- PSE-firmware | 2 +- stm32f1xx_hal.c | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/PSE-firmware b/PSE-firmware index 654ad8b..7bcb3a7 160000 --- a/PSE-firmware +++ b/PSE-firmware @@ -1 +1 @@ -Subproject commit 654ad8baad7c7d7a66ab52ed2df59b806d3c56a0 +Subproject commit 7bcb3a7afa7bb6ca19d1c33939bd28d2a9db5b98 diff --git a/stm32f1xx_hal.c b/stm32f1xx_hal.c index 6eef2c5..ae85de9 100644 --- a/stm32f1xx_hal.c +++ b/stm32f1xx_hal.c @@ -3,14 +3,28 @@ #include #include +uint8_t gpio_status[4][64]; + +static uint8_t get_1st_pin_from_bitmask(uint16_t bitmask){ + for(int i = 0; i < 16; i++){ + if(bitmask & (1 << i)) return i; + } + return 0; +} + void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin){ + uint8_t pin = get_1st_pin_from_bitmask(GPIO_Pin); + gpio_status[GPIOx->index][pin] = !gpio_status[GPIOx->index][pin]; printf("toggling pin\n"); } GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin){ - printf("reading pin, returning 0\n"); - return GPIO_PIN_RESET; + printf("reading pin\n"); + uint8_t pin = get_1st_pin_from_bitmask(GPIO_Pin); + return gpio_status[GPIOx->index][pin]; } void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState){ + uint8_t pin = get_1st_pin_from_bitmask(GPIO_Pin); + gpio_status[GPIOx->index][pin] = PinState; printf("writing pin\n"); }