diff --git a/release/inc/myBase.h b/release/inc/myBase.h index 6c06e24..002e929 100644 --- a/release/inc/myBase.h +++ b/release/inc/myBase.h @@ -1,7 +1,7 @@ /** * @file myBase.h - * @brief 公共基础定义 — 所有模块共享的宏、类型、常量 - * @details 对齐 RTU 原工程功能需求,从零编写 + * @brief Public base definitions — shared macros, types, constants + * @details Written from scratch, functionally aligned with RTU original. */ #ifndef _MY_BASE_H_ @@ -22,7 +22,7 @@ extern "C" { #endif -/* === 终端颜色 === */ +/* === Terminal colors === */ #define COLOR_RESET "\033[0m" #define COLOR_RED "\033[31m" #define COLOR_GREEN "\033[32m" @@ -32,53 +32,60 @@ extern "C" #define COLOR_CYAN "\033[36m" #define COLOR_WHITE "\033[37m" -/* === 文件名缩写(去掉路径前缀,跨平台) === */ +/* === Short filename (strip path prefix, cross-platform) === */ #if defined(__linux__) -#define __SHORT_FILE__ (strrchr(__FILE__,'/') ? strrchr(__FILE__,'/')+1 : __FILE__) +#define __SHORT_FILE__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #else -#define __SHORT_FILE__ (strrchr(__FILE__,'\\') ? strrchr(__FILE__,'\\')+1 : __FILE__) +#define __SHORT_FILE__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) #endif -/* === 控制台日志宏(liblog 加载前可用) === */ +/* === Console log macros (usable before liblog is loaded) === */ #define MY_LOG(color, level, fmt, ...) \ - do { printf("%s[%s] [%s,%u] " fmt COLOR_RESET "\n", \ - color, level, __SHORT_FILE__, __LINE__, ##__VA_ARGS__); } while(0) + do \ + { \ + printf("%s[%s] [%s, %u] " fmt COLOR_RESET "\n", \ + color, level, __SHORT_FILE__, __LINE__, ##__VA_ARGS__); \ + } while (0) + #define MY_LOG_I(fmt, ...) MY_LOG(COLOR_WHITE, "INFO", fmt, ##__VA_ARGS__) #define MY_LOG_E(fmt, ...) MY_LOG(COLOR_RED, "ERROR", fmt, ##__VA_ARGS__) -/* === LOCAL 修饰(表语义:文件内可见) === */ +/* === LOCAL modifier (semantic: file-scope only) === */ #ifndef LOCAL #define LOCAL static #endif -/* === 固定长度字符串类型 === */ +/* === Fixed-length string types === */ #define SHORT_STR_LEN 64 typedef char S_STR[SHORT_STR_LEN]; + #define LONG_STR_LEN 128 typedef char L_STR[LONG_STR_LEN]; -/* === 大小端转换 === */ -#define BE16_GET(p) ((uint16_t)(((uint8_t*)(p))[0]<<8 | ((uint8_t*)(p))[1])) -#define BE16_SET(m,n) ((m)[0]=(uint8_t)((n)>>8),(m)[1]=(uint8_t)(n)) -#define LE16_GET(p) ((uint16_t)(((uint8_t*)(p))[1]<<8 | ((uint8_t*)(p))[0])) -#define LE16_SET(m,n) ((m)[0]=(uint8_t)(n),(m)[1]=(uint8_t)((n)>>8)) +/* === Endian swap: uint16 === */ +#define BE16_GET(p) ((uint16_t)(((uint8_t *)(p))[0] << 8 | ((uint8_t *)(p))[1])) +#define BE16_SET(m, n) ((m)[0] = (uint8_t)((n) >> 8), (m)[1] = (uint8_t)(n)) +#define LE16_GET(p) ((uint16_t)(((uint8_t *)(p))[1] << 8 | ((uint8_t *)(p))[0])) +#define LE16_SET(m, n) ((m)[0] = (uint8_t)(n), (m)[1] = (uint8_t)((n) >> 8)) -#define BE32_GET(p) ((int32_t)(((uint8_t*)(p))[0]<<24|((uint8_t*)(p))[1]<<16|((uint8_t*)(p))[2]<<8|((uint8_t*)(p))[3])) -#define BE32_SET(m,n) ((m)[0]=(uint8_t)((n)>>24),(m)[1]=(uint8_t)((n)>>16),(m)[2]=(uint8_t)((n)>>8),(m)[3]=(uint8_t)(n)) -#define LE32_GET(p) ((int32_t)(((uint8_t*)(p))[3]<<24|((uint8_t*)(p))[2]<<16|((uint8_t*)(p))[1]<<8|((uint8_t*)(p))[0])) -#define LE32_SET(m,n) ((m)[3]=(uint8_t)((n)>>24),(m)[2]=(uint8_t)((n)>>16),(m)[1]=(uint8_t)((n)>>8),(m)[0]=(uint8_t)(n)) +/* === Endian swap: int32 === */ +#define BE32_GET(p) ((int32_t)(((uint8_t *)(p))[0] << 24 | ((uint8_t *)(p))[1] << 16 | ((uint8_t *)(p))[2] << 8 | ((uint8_t *)(p))[3])) +#define BE32_SET(m, n) ((m)[0] = (uint8_t)((n) >> 24), (m)[1] = (uint8_t)((n) >> 16), (m)[2] = (uint8_t)((n) >> 8), (m)[3] = (uint8_t)(n)) +#define LE32_GET(p) ((int32_t)(((uint8_t *)(p))[3] << 24 | ((uint8_t *)(p))[2] << 16 | ((uint8_t *)(p))[1] << 8 | ((uint8_t *)(p))[0])) +#define LE32_SET(m, n) ((m)[3] = (uint8_t)((n) >> 24), (m)[2] = (uint8_t)((n) >> 16), (m)[1] = (uint8_t)((n) >> 8), (m)[0] = (uint8_t)(n)) -#define BE64_GET(p) (((uint64_t)(((uint8_t*)(p))[0])<<56)|((uint64_t)(((uint8_t*)(p))[1])<<48)|((uint64_t)(((uint8_t*)(p))[2])<<40)|((uint64_t)(((uint8_t*)(p))[3])<<32)|((uint64_t)(((uint8_t*)(p))[4])<<24)|((uint64_t)(((uint8_t*)(p))[5])<<16)|((uint64_t)(((uint8_t*)(p))[6])<<8)|((uint64_t)(((uint8_t*)(p))[7]))) -#define LE64_GET(p) (((uint64_t)(((uint8_t*)(p))[7])<<56)|((uint64_t)(((uint8_t*)(p))[6])<<48)|((uint64_t)(((uint8_t*)(p))[5])<<40)|((uint64_t)(((uint8_t*)(p))[4])<<32)|((uint64_t)(((uint8_t*)(p))[3])<<24)|((uint64_t)(((uint8_t*)(p))[2])<<16)|((uint64_t)(((uint8_t*)(p))[1])<<8)|((uint64_t)(((uint8_t*)(p))[0]))) +/* === Endian swap: uint64 === */ +#define BE64_GET(p) (((uint64_t)(((uint8_t *)(p))[0]) << 56) | ((uint64_t)(((uint8_t *)(p))[1]) << 48) | ((uint64_t)(((uint8_t *)(p))[2]) << 40) | ((uint64_t)(((uint8_t *)(p))[3]) << 32) | ((uint64_t)(((uint8_t *)(p))[4]) << 24) | ((uint64_t)(((uint8_t *)(p))[5]) << 16) | ((uint64_t)(((uint8_t *)(p))[6]) << 8) | ((uint64_t)(((uint8_t *)(p))[7]))) +#define LE64_GET(p) (((uint64_t)(((uint8_t *)(p))[7]) << 56) | ((uint64_t)(((uint8_t *)(p))[6]) << 48) | ((uint64_t)(((uint8_t *)(p))[5]) << 40) | ((uint64_t)(((uint8_t *)(p))[4]) << 32) | ((uint64_t)(((uint8_t *)(p))[3]) << 24) | ((uint64_t)(((uint8_t *)(p))[2]) << 16) | ((uint64_t)(((uint8_t *)(p))[1]) << 8) | ((uint64_t)(((uint8_t *)(p))[0]))) -#define BE64_SET(m,n) ((m)[0]=(uint8_t)((n)>>56),(m)[1]=(uint8_t)((n)>>48),(m)[2]=(uint8_t)((n)>>40),(m)[3]=(uint8_t)((n)>>32),(m)[4]=(uint8_t)((n)>>24),(m)[5]=(uint8_t)((n)>>16),(m)[6]=(uint8_t)((n)>>8),(m)[7]=(uint8_t)(n)) -#define LE64_SET(m,n) ((m)[7]=(uint8_t)((n)>>56),(m)[6]=(uint8_t)((n)>>48),(m)[5]=(uint8_t)((n)>>40),(m)[4]=(uint8_t)((n)>>32),(m)[3]=(uint8_t)((n)>>24),(m)[2]=(uint8_t)((n)>>16),(m)[1]=(uint8_t)((n)>>8),(m)[0]=(uint8_t)(n)) +#define BE64_SET(m, n) ((m)[0] = (uint8_t)((n) >> 56), (m)[1] = (uint8_t)((n) >> 48), (m)[2] = (uint8_t)((n) >> 40), (m)[3] = (uint8_t)((n) >> 32), (m)[4] = (uint8_t)((n) >> 24), (m)[5] = (uint8_t)((n) >> 16), (m)[6] = (uint8_t)((n) >> 8), (m)[7] = (uint8_t)(n)) +#define LE64_SET(m, n) ((m)[7] = (uint8_t)((n) >> 56), (m)[6] = (uint8_t)((n) >> 48), (m)[5] = (uint8_t)((n) >> 40), (m)[4] = (uint8_t)((n) >> 32), (m)[3] = (uint8_t)((n) >> 24), (m)[2] = (uint8_t)((n) >> 16), (m)[1] = (uint8_t)((n) >> 8), (m)[0] = (uint8_t)(n)) -/* === 类型存取 === */ -#define GET_BY_TYPE(p,type) (*(type*)(p)) -#define SET_BY_TYPE(p,v,type) (*(type*)(p) = *(type*)(v)) +/* === Typed data access === */ +#define GET_BY_TYPE(p, type) (*(type *)(p)) +#define SET_BY_TYPE(p, v, type) (*(type *)(p) = *(type *)(v)) -/* === 数据类型枚举(用于协议编解码) === */ +/* === Data type constants (for protocol encode/decode) === */ #define DATA_TYPE_B 1 #define DATA_TYPE_S8 43 #define DATA_TYPE_U8 32