diff --git a/cube/User/Inc/show.h b/cube/User/Inc/show.h index 1aa47e9..7ccfa73 100644 --- a/cube/User/Inc/show.h +++ b/cube/User/Inc/show.h @@ -4,9 +4,16 @@ #include -typedef enum { DEBUG_1, DEBUG_2, LED_RED, LED_GREEN } signalPin_t; -typedef enum { ON, OFF, TOGGLE } signalAction_t; +typedef enum { + DEBUG_1 = 0, + DEBUG_2 = 1, + LED_RED = 2, + LED_GREEN = 3 +} signalPin_t; +typedef enum { ON, OFF, TOGGLE, BLINK } signalAction_t; + +void showInit(); void show(signalPin_t signalPin, signalAction_t action); diff --git a/cube/User/Src/logger.c b/cube/User/Src/logger.c index ac97a39..685f910 100644 --- a/cube/User/Src/logger.c +++ b/cube/User/Src/logger.c @@ -60,10 +60,6 @@ void syslog(char *msg) { } } -static void flashGreenLed(void *handle) { - show(LED_GREEN, TOGGLE); -} - static int innerLogMsg(const char *pre, const char *post, bool syslogToo, const char *format, va_list vl) { const static char SYSLOG_HEADER[] = "<133>1 "; #define MAX_PREFIX_SIZE 20 @@ -99,11 +95,6 @@ static int innerLogMsg(const char *pre, const char *post, bool syslogToo, const res = ringbufferPut(&logBuffer, (uint8_t*) (bufferStart - preSize), strlen(bufferStart - preSize)); HAL_NVIC_EnableIRQ(UART4_IRQn); - if (-1 == res) { - // blink the green light or so - flashGreenLed(NULL); - schAdd(flashGreenLed, NULL, 100, 0); - } debugTxCpltCallback(NULL); } diff --git a/cube/User/Src/main2.c b/cube/User/Src/main2.c index c891ec9..b8422b1 100644 --- a/cube/User/Src/main2.c +++ b/cube/User/Src/main2.c @@ -24,6 +24,7 @@ void my_setup_1() { schInit(); logInit(); + showInit(); } void my_errorHandler() { @@ -186,7 +187,7 @@ void scheduleMBusRequest(void *handle) { void my_setup_2() { show(LED_RED, OFF); - show(LED_GREEN, ON); + show(LED_GREEN, BLINK); logMsg("Application starting"); eepromInit(); diff --git a/cube/User/Src/show.c b/cube/User/Src/show.c index e0b912f..2b99516 100644 --- a/cube/User/Src/show.c +++ b/cube/User/Src/show.c @@ -1,49 +1,46 @@ #include #include +#include + #include #include + #include -void show(signalPin_t signalPin, signalAction_t action) { - GPIO_TypeDef *port = NULL; - uint16_t pin = 0; +typedef struct { + GPIO_TypeDef *port; + uint16_t pin; + signalAction_t currentState; +} showElement_t; - switch (signalPin) { - case DEBUG_1: - port = Debug_Signal_1_GPIO_Port; - pin = Debug_Signal_1_Pin; - break; +showElement_t showElement[] = { + { .port = Debug_Signal_1_GPIO_Port, .pin = Debug_Signal_1_Pin, .currentState = OFF }, + { .port = Debug_Signal_2_GPIO_Port, .pin = Debug_Signal_2_Pin, .currentState = OFF }, + { .port = LED_Red_GPIO_Port, .pin = LED_Red_Pin, .currentState = OFF }, + { .port = LED_Green_GPIO_Port, .pin = LED_Green_Pin, .currentState = OFF }, + { .port = NULL, .pin = 0, .currentState = OFF } +}; - case DEBUG_2: - port = Debug_Signal_2_GPIO_Port; - pin = Debug_Signal_2_Pin; - break; - - case LED_RED: - port = LED_Red_GPIO_Port; - pin = LED_Red_Pin; - break; - - case LED_GREEN: - port = LED_Green_GPIO_Port; - pin = LED_Green_Pin; - break; - } - - if (port != NULL) { - switch (action) { - case ON: - HAL_GPIO_WritePin(port, pin, GPIO_PIN_SET); - break; - - case OFF: - HAL_GPIO_WritePin(port, pin, GPIO_PIN_RESET); - break; - - case TOGGLE: - HAL_GPIO_TogglePin(port, pin); - break; +static void showHandler(void *handle) { + uint8_t idx = 0; + while (showElement[idx].port) { + if (showElement[idx].currentState == BLINK) { + HAL_GPIO_TogglePin(showElement[idx].port, showElement[idx].pin); } + idx++; } } + +void show(signalPin_t signalPin, signalAction_t action) { + showElement[signalPin].currentState = action; + if (action == ON || action == OFF) { + HAL_GPIO_WritePin(showElement[signalPin].port, showElement[signalPin].pin, ((action == ON) ? GPIO_PIN_SET : GPIO_PIN_RESET)); + } else if (action == TOGGLE) { + HAL_GPIO_TogglePin(showElement[signalPin].port, showElement[signalPin].pin); + } +} + +void showInit() { + schAdd(showHandler, NULL, 0, 250); +} \ No newline at end of file diff --git a/cube/User/Src/wizHelper.c b/cube/User/Src/wizHelper.c index ef83a72..b868468 100644 --- a/cube/User/Src/wizHelper.c +++ b/cube/User/Src/wizHelper.c @@ -1,5 +1,4 @@ #include - #include #include #include @@ -10,7 +9,7 @@ #include #include #include - +#include wiz_NetInfo netInfo = { .mac = { 0x00, 0xA0, 0x57, 0x05, 0x3E, 0x0D }, @@ -74,6 +73,7 @@ static void wizDHCPAssign() { coloredMsg(LOG_BLUE, false, "wizda, set netinfo again"); networkAvailable = true; + show(LED_GREEN, ON); coloredMsg(LOG_BLUE, false, "wizda, network is available"); } @@ -127,6 +127,7 @@ static void wizPhyLinkHandler(void *handle) { dhcpInitialized = true; } else { networkAvailable = false; + show(LED_GREEN, BLINK); coloredMsg(LOG_BLUE, false, "wizplh, network is unavailable"); // stop DHCP handler