diff --git a/basic/zbase_gstate.c b/basic/zbase_gstate.c new file mode 100644 index 0000000..b9cd221 --- /dev/null +++ b/basic/zbase_gstate.c @@ -0,0 +1,8 @@ +#include "zbase_gstate.h" + +zbase_gstate_t gstate; + +zbase_gstate_t* zbase_gstate_get() { return &gstate; } + +void zbase_gstate_set_fatal_flag() { gstate.fatalFlag = true; } +void zbase_gstate_clear_fatal_flag() { gstate.fatalFlag = false; } \ No newline at end of file diff --git a/basic/zbase_gstate.h b/basic/zbase_gstate.h new file mode 100644 index 0000000..216fb4f --- /dev/null +++ b/basic/zbase_gstate.h @@ -0,0 +1,18 @@ +#pragma once +#include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + bool fatalFlag; +} zbase_gstate_t; + +zbase_gstate_t* zbase_gstate_get(); + +void zbase_gstate_set_fatal_flag(); +void zbase_gstate_clear_fatal_flag(); + +#ifdef __cplusplus +} +#endif diff --git a/basic/zlog.c b/basic/zlog.c index 3f0499e..ab8fb0d 100644 --- a/basic/zlog.c +++ b/basic/zlog.c @@ -1,9 +1,10 @@ #include "zlog.h" -#include "zbase.h" + #include "project_configs.h" +#include "zbase.h" -bool g_xs_enable_log = true; -extern UART_HandleTypeDef DEBUG_UART; +bool g_xs_enable_log = true; +UART_HandleTypeDef* debuguart; /********************************************************************* * @fn _write * @@ -19,12 +20,14 @@ __attribute__((used)) int _write(int fd, char* buf, int size) { for (i = 0; i < size; i++) { uint8_t c = *buf++; - HAL_UART_Transmit(&DEBUG_UART, &c, 1, 100); + if (debuguart) HAL_UART_Transmit(debuguart, &c, 1, 100); } return size; } +void zlog_init(UART_HandleTypeDef* uart) { debuguart = uart; } + void zlog_enable(bool enable) { g_xs_enable_log = enable; } void zlog(const char* fmt, ...) { if (g_xs_enable_log) { @@ -35,7 +38,7 @@ void zlog(const char* fmt, ...) { } } -void zlog_raw(const char* info){ +void zlog_raw(const char* info) { if (g_xs_enable_log) { printf(info); } diff --git a/basic/zlog.h b/basic/zlog.h index 7ec2470..b16cc93 100644 --- a/basic/zlog.h +++ b/basic/zlog.h @@ -1,9 +1,9 @@ #pragma once #include "zbase.h" -extern bool g_xs_enable_log; +extern bool g_xs_enable_log; extern uint32_t zget_ticket(void); -extern void zdelay_ms(int ms) ; +extern void zdelay_ms(int ms); #define ZLOG_RELEASE(TAG, fmt, ...) \ if (g_xs_enable_log) { \ @@ -40,6 +40,7 @@ extern void zdelay_ms(int ms) ; #define ZARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0])) +void zlog_init(UART_HandleTypeDef* uart); void zlog(const char* fmt, ...); void zlog_raw(const char* info); void zlog_enable(bool enable); diff --git a/zbasic.h b/zbasic.h index 2207b12..ed9a8e8 100644 --- a/zbasic.h +++ b/zbasic.h @@ -10,6 +10,8 @@ extern "C" { #include "basic/zgpio.h" #include "basic/zlog.h" #include "basic/sn.h" +// +#include "basic/zbase_gstate.h" #include "cmsis_version.h" #include "cmsis_os.h"