/*----------------------------------------------------------------------------*/ void disp_cmd(u8 key) { #if ((monitor == DISP_LCD_12832) || (monitor == DISP_LCD_12864_SER) || (monitor == DISP_LCD_12864_PAR)) { lcd_cmd(key); } #elif(monitor == DISP_LED5X7) { led_cmd(key); } #else { key = key; } #endif }
// TODO: error status (megnetometer etc.) HAL_StatusTypeDef led_loop(state_t current_state) { /// State during previous loop. static state_t last_state = STATE_INVALID; static int32_t cnt = 0; static int32_t dir = 1; if (current_state != last_state) { cnt = 0; dir = 0; } switch (current_state) { case STATE_OK_HIGH_TEMP: led_cmd(LED_FULL_BRIGHTNESS, 0, 0); break; case STATE_OK: led_cmd(0, LED_FULL_BRIGHTNESS, 0); break; case STATE_OK_LOW_TEMP: led_cmd(LED_FULL_BRIGHTNESS * LED_LOW_TEMP_RED_PERCENT / 100, LED_FULL_BRIGHTNESS * (100 - LED_LOW_TEMP_RED_PERCENT) / 100, 0); break; case STATE_STANDBY: cnt += dir; if (cnt >= LED_STANDBY_MAX) { dir = -LED_STANDBY_STEP; } if (cnt <= LED_STANDBY_MIN) { dir = LED_STANDBY_STEP; } led_cmd(0, 0, (uint16_t) cnt); break; case STATE_DISCONNECTED: cnt += dir; if (cnt >= LED_DISCONNECTED_MAX) { dir = -LED_DISCONNECTED_STEP; } if (cnt <= LED_DISCONNECTED_MIN) { dir = LED_DISCONNECTED_STEP; } led_cmd(0, (uint16_t) cnt, 0); break; case STATE_ERROR_OVERLOAD: case STATE_ERROR_OPEN_LOAD: case STATE_INVALID: case STATE_LOW_SUPPLY: case STATE_HIGH_SUPPLY: case STATE_ERROR_HIGH_TEMP: case STATE_ERROR_LOW_TEMP: default: cnt++; if (cnt == LED_ERROR_BLINK_TIME) { led_cmd(LED_FULL_BRIGHTNESS, 0, 0); } if (cnt >= LED_ERROR_CYCLE_TIME) { cnt = 0; led_cmd(0, 0, 0); } break; } last_state = current_state; return HAL_OK; }