diff --git a/fw/.cproject b/fw/.cproject index 9b11f6c..f852c90 100644 --- a/fw/.cproject +++ b/fw/.cproject @@ -35,6 +35,7 @@ + @@ -67,6 +68,7 @@ + @@ -97,6 +99,7 @@ + @@ -136,6 +139,7 @@ + @@ -167,6 +171,7 @@ + diff --git a/fw/Core/Inc/rgbled.h b/fw/Core/Inc/rgbled.h deleted file mode 100644 index 1f78d53..0000000 --- a/fw/Core/Inc/rgbled.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * rgbled.h - * - * Created on: Nov 11, 2021 - * Author: dooku - */ - -#ifndef INC_RGBLED_H_ -#define INC_RGBLED_H_ - -#include "stm32l0xx_ll_tim.h" -#include "stddef.h" - -/* - * Return values for I2C functions - */ - -#define RGBLED_OK 0 -#define RGBLED_ERROR -1 // generic error -#define RGBLED_WRONG_CHANNEL -2 // channel number not in {1,2,3,4} - -/* - * Defaults used for LL timer (PWM) initialization - */ - -#define RGBLED_PRESCALER 0 -#define RGBLED_PERIOD 255 -#define RGBLED_MAX_INTENSITY 100 - -/* - * Shorthands for colors - */ - -#define RGBLED_RED 255,0,0 -#define RGBLED_GREEN 0,255,0 -#define RGBLED_BLUE 0,0,255 -#define RGBLED_WHITE 255,255,255 -#define RGBLED_YELLOW 255,255,0 -#define RGBLED_OFF 0,0,0 -#define RGBLED_MAGENTA 255,0,255 - -/* - * Type definitions - */ - -typedef struct { - // tim2 ch1 B - // tim22 ch1 G - // tim22 ch2 R - // TODO union, aby se dalo nastavovat LED v cyklu (set_color) - union { - struct { - TIM_TypeDef *R; - TIM_TypeDef *G; - TIM_TypeDef *B; - } timer; - TIM_TypeDef *timer_array[3]; - }; - union { - struct { - uint8_t R; - uint8_t G; - uint8_t B; - } channel; - uint8_t channel_array[3]; - }; - -} rgbled_context_t; - -/* - * Function declarations - */ - -int8_t rgbled_init(rgbled_context_t *context); -int8_t rgbled_set_color(uint8_t R, uint8_t G, uint8_t B); -int8_t rgbled_set_intensity(uint8_t intensity); -int8_t rgbled_get_intensity(uint8_t *intensity); -int8_t rgbled_off(void); - - -#endif /* INC_RGBLED_H_ */ diff --git a/fw/Core/Src/rgbled.c b/fw/Core/Src/rgbled.c deleted file mode 100644 index af24f58..0000000 --- a/fw/Core/Src/rgbled.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * rgbled.c - * - * Created on: Nov 11, 2021 - * Author: dooku - */ - -#include "rgbled.h" - -static rgbled_context_t *rgbled_context; -static uint8_t rgbled_intensity = RGBLED_MAX_INTENSITY; /* LED intensity from 0 (off) to RGBLED_MAX_INTENSITY (full power) */ - -int8_t rgbled_init(rgbled_context_t *context) -{ - if (context == NULL) { - return RGBLED_ERROR; - } - rgbled_context = context; - - return RGBLED_OK; -} - -int8_t rgbled_set_color(uint8_t R, uint8_t G, uint8_t B) -{ - uint8_t colors[3]; - uint8_t i; - - colors[0] = (uint32_t)R * rgbled_intensity / RGBLED_MAX_INTENSITY; - colors[1] = (uint32_t)G * rgbled_intensity / RGBLED_MAX_INTENSITY; - colors[2] = (uint32_t)B * rgbled_intensity / RGBLED_MAX_INTENSITY; - for (i = 0; i < 3; i++) { - if (colors[i] > RGBLED_PERIOD) { - return RGBLED_ERROR; - } - } - for (i = 0; i < 3; i++) { - switch (rgbled_context->channel_array[i]) { - case 1: - LL_TIM_OC_SetCompareCH1(rgbled_context->timer_array[i], (uint32_t)(RGBLED_PERIOD - colors[i])); - break; - case 2: - LL_TIM_OC_SetCompareCH2(rgbled_context->timer_array[i], (uint32_t)(RGBLED_PERIOD - colors[i])); - break; - case 3: - LL_TIM_OC_SetCompareCH3(rgbled_context->timer_array[i], (uint32_t)(RGBLED_PERIOD - colors[i])); - break; - case 4: - LL_TIM_OC_SetCompareCH4(rgbled_context->timer_array[i], (uint32_t)(RGBLED_PERIOD - colors[i])); - break; - default: - return RGBLED_WRONG_CHANNEL; - } - } - return RGBLED_OK; -} - -int8_t rgbled_set_intensity(uint8_t intensity) -{ - if (intensity > RGBLED_MAX_INTENSITY) { - return RGBLED_ERROR; - } - rgbled_intensity = intensity; -} - -int8_t rgbled_get_intensity(uint8_t *intensity) -{ - if (intensity == NULL) { - return RGBLED_ERROR; - } - *intensity = rgbled_intensity; -} - -int8_t rgbled_off(void) -{ - rgbled_set_color(RGBLED_OFF); -} diff --git a/fw/Libs/rgbled b/fw/Libs/rgbled index 4ab95c1..212249e 160000 --- a/fw/Libs/rgbled +++ b/fw/Libs/rgbled @@ -1 +1 @@ -Subproject commit 4ab95c1da96078adda09aa32f78c7da3a326d2fc +Subproject commit 212249edf6abf7e9ba25a295c6697bd819cc94d4