diff --git a/chip/chip.cpp b/chip/chip.cpp index c3231de..7ca203b 100644 --- a/chip/chip.cpp +++ b/chip/chip.cpp @@ -4,6 +4,9 @@ extern "C" { static iflytop::ZGPIO g_debuglight; static Pin_t g_debuglight_pin = PinNull; +static bool g_error_state = false; + +void chip_set_error() { g_error_state = true; } void chip_init(chip_cfg_t *cfg) { g_debuglight_pin = cfg->debuglight; @@ -23,10 +26,18 @@ void chip_init(chip_cfg_t *cfg) { iflytop::ChipTimIrqShceduler::instance().regPeriodJob( [](iflytop::ChipTimIrqShceduler::Job *job) { + if (g_error_state) return; if (g_debuglight_pin == PinNull) return; g_debuglight.toggleState(); }, 300); + iflytop::ChipTimIrqShceduler::instance().regPeriodJob( + [](iflytop::ChipTimIrqShceduler::Job *job) { + if (!g_error_state) return; + if (g_debuglight_pin == PinNull) return; + g_debuglight.toggleState(); + }, + 50); ZEARLY_LOGI("SYS", "chip init ok"); ZEARLY_LOGI("SYS", "= manufacturer : %s", MANUFACTURER); diff --git a/chip/chip.hpp b/chip/chip.hpp index 1f4f3af..8228137 100644 --- a/chip/chip.hpp +++ b/chip/chip.hpp @@ -17,4 +17,5 @@ typedef struct { } chip_cfg_t; void chip_init(chip_cfg_t *cfg); +void chip_set_error(); } \ No newline at end of file