39 #define SUBSYSTEM_IO_NONE 0
40 #define SUBSYSTEM_IO_UART 1
41 #define SUBSYSTEM_IO_PRINTF 2
42 #define SUBSYSTEM_IO_CUSTOM 255 // if the user sets this, they are responsible for creating the macro hooks to the IO layer in their project_settings.h file
44 #include "project_settings.h"
59 #define SUBSYSTEM_IO SUBSYSTEM_IO_UART
61 #define SUBSYSTEM_IO SUBSYSTEM_IO_NONE
65 #if SUBSYSTEM_IO != SUBSYSTEM_IO_NONE
66 #ifndef USE_MODULE_SUBSYSTEM
67 #warning "USE_MODULE_SUBSYSTEM not defined in project_settings.h. Other modules won't be able to utilize this module."
71 #if SUBSYSTEM_IO == SUBSYSTEM_IO_NONE
72 #define LogError(sys_id, str, ...)
73 #define LogWarning(sys_id, str, ...)
74 #define LogMsg(sys_id, str, ...)
75 #define LogDebug(sys_id, str, ...)
77 #define LogError(sys_id, str, ...) Subsystem_Write(sys_id, LOG_ERROR, str, ##__VA_ARGS__)
78 #define LogWarning(sys_id, str, ...) Subsystem_Write(sys_id, LOG_WARNING, str, ##__VA_ARGS__)
79 #define LogMsg(sys_id, str, ...) Subsystem_Write(sys_id, LOG_MESSAGE, str, ##__VA_ARGS__)
80 #define LogDebug(sys_id, str, ...) Subsystem_Write(sys_id, LOG_DEBUG, str, ##__VA_ARGS__)
83 #if SUBSYSTEM_IO == SUBSYSTEM_IO_NONE
84 #define Subsystem_printf(str, ...)
85 #define Subsystem_vprintf(str, arg)
86 #define Subsystem_PrintChar(c)
87 #define Subsystem_RegisterReceiver(r)
88 #elif SUBSYSTEM_IO == SUBSYSTEM_IO_UART
90 #ifndef USE_MODULE_BUFFER_PRINTF
91 #error "This module requires optional UART functionality provided by buffer_printf. Please declare USE_MODULE_BUFFER_PRINTF in project_settings.h"
93 #ifndef SUBSYSTEM_UART
94 #error "You must define what UART number the terminal is using in project_settings.h: #define SUBSYS_UART num"
96 #define Subsystem_printf(str, ...) UART_printf(SUBSYSTEM_UART, str, ##__VA_ARGS__)
97 #define Subsystem_vprintf(str, arg) UART_vprintf(SUBSYSTEM_UART, str, arg)
98 #define Subsystem_PrintChar(c) UART_WriteByte(SUBSYSTEM_UART, c)
99 #define Subsystem_RegisterReceiver(r) UART_RegisterReceiver(SUBSYSTEM_UART, r);
100 #elif SUBSYSTEM_IO == SUBSYSTEM_IO_PRINTF
102 #define Subsystem_printf(str, ...) printf(str, ##__VA_ARGS__)
103 #define Subsystem_vprintf(str, args) vprintf(str, args)
104 #define Subsystem_PrintChar(c) printf("%c", c)
105 #define Subsystem_RegisterReceiver(r)
109 #define SYSTEM_VERSION 0x04000000u
111 #ifndef RECEIVE_MAX_LENGTH
112 #define RECEIVE_MAX_LENGTH 64
114 #define RECEIVE_START_CHAR '$'
115 #ifndef RECEIVE_STOP_CHAR
116 #define RECEIVE_STOP_CHAR '\r'
118 #ifndef RECEIVE_MAX_ARGC
119 #define RECEIVE_MAX_ARGC 8
201 #define GetLogTimestamp() TimeNow()
222 void LogStr(
char * str, ...);
log_level
Definition: subsystem.h:46
uint8_t Subsystem_Init(char *name, version_t version, void(*callback)(int argc, char *argv[]))
Definition: subsystem.c:84
uint8_t Log_GetEcho(void)
Definition: subsystem.c:320
Definition: subsystem.h:49
void Subsystem_Write(uint8_t subsystem_id, enum log_level level, char *str,...)
Definition: subsystem.c:205
const firmware_version_t version
Definition: cloud.c:163
void Log_SetLevel(uint8_t sys_id, enum log_level level)
Definition: subsystem.c:325
version union
Definition: library.h:148
uint32_t ArgToU32(char *arg)
Definition: subsystem.c:282
void Log_EchoOff(void)
Definition: subsystem.c:316
void Subsystem_RegisterCallback(uint8_t subsystem_id, void(*callback)(int argc, char *argv[]))
Definition: subsystem.c:99
void Log_MuteSys(uint8_t sys_id)
Definition: subsystem.c:337
uint8_t ArgToU8(char *arg)
Definition: subsystem.c:302
Definition: subsystem.h:51
Definition: subsystem.h:47
void Log_UnmuteAll(void)
Definition: subsystem.c:333
void LogStr(char *str,...)
Definition: subsystem.c:194
void Subsystem_SystemDisable(void)
Definition: subsystem.c:76
char * Subsystem_GetName(uint8_t subsystem_id)
Definition: subsystem.c:54
void(* callback)(struct spi_transaction *)
callback function
Definition: spi.h:57
void Log_EchoOn(void)
Definition: subsystem.c:312
uint16_t ArgToU16(char *arg)
Definition: subsystem.c:292
void Subsystem_SystemEnable(void)
Definition: subsystem.c:80
Definition: subsystem.h:50
void Log_Version(uint8_t subys_id)
Definition: subsystem.h:48
void Log_MuteAll(void)
Definition: subsystem.c:329
void Log_UnmuteSys(uint8_t sys_id)
Definition: subsystem.c:341
void Log_Header(uint8_t subsystem_id, enum log_level level)
Definition: subsystem.c:231