diff --git a/Core/Inc/cmd_parser.h b/Core/Inc/cmd_parser.h index cea9908..b25b33c 100644 --- a/Core/Inc/cmd_parser.h +++ b/Core/Inc/cmd_parser.h @@ -3,13 +3,16 @@ * @file cmd_parser.h * @brief ASCII指令解析模块头文件 * @author Application Layer - * @version 1.0 + * @version 1.2 ****************************************************************************** * @attention * 本模块实现ASCII文本指令的解析和处理 * 指令格式: $CMD,param1,param2*CS\r\n * 支持异或校验,FF为调试特权后门 * 包含完善的安全防护机制 + * + * 修订历史: + * v1.2 - 增加响应回调机制,支持多端口路由 ****************************************************************************** */ @@ -41,67 +44,31 @@ typedef struct { char param2[PARAM_MAX_LEN]; uint8_t received_cs; uint8_t calculated_cs; + uint8_t source_port; bool valid; bool skip_checksum; } cmd_frame_t; -/** - * @brief 初始化指令解析模块 - * @note 重置解析状态机,清空缓冲区 - * @param 无 - * @retval 无 - */ +typedef void (*cmd_response_callback_t)(uint8_t source_port, const char *response); + void CmdParser_Init(void); -/** - * @brief 指令解析任务处理函数 - * @note 在主循环中调用,处理已接收的完整指令帧 - * @param 无 - * @retval 无 - */ void CmdParser_Task(void); -/** - * @brief 喂入单字节数据到解析器 - * @note 通常在UART接收中断中调用 - * @param byte: 接收到的字节数据 - * @param current_tick: 当前系统tick(用于超时检测) - * @retval 无 - */ void CmdParser_FeedByte(uint8_t byte, uint32_t current_tick); -/** - * @brief 检查是否有完整的指令帧 - * @note 用于查询解析状态 - * @param frame: 输出参数,存储解析结果 - * @retval true: 有完整帧, false: 无 - */ bool CmdParser_HasCompleteFrame(cmd_frame_t *frame); -/** - * @brief 确认指令已处理 - * @note 处理完指令后调用,重置解析器 - * @param 无 - * @retval 无 - */ void CmdParser_Acknowledge(void); -/** - * @brief 获取解析错误计数 - * @note 用于调试和诊断 - * @param 无 - * @retval 错误计数 - */ uint32_t CmdParser_GetErrorCount(void); -/** - * @brief 获取接收到的有效指令计数 - * @note 用于调试和诊断 - * @param 无 - * @retval 有效指令计数 - */ uint32_t CmdParser_GetValidCount(void); +void CmdParser_SetResponseCallback(cmd_response_callback_t callback); + +void CmdParser_SetSourcePort(uint8_t port_id); + #ifdef __cplusplus } #endif diff --git a/Core/Inc/cmd_router.h b/Core/Inc/cmd_router.h new file mode 100644 index 0000000..237ca05 --- /dev/null +++ b/Core/Inc/cmd_router.h @@ -0,0 +1,51 @@ +/** + ****************************************************************************** + * @file cmd_router.h + * @brief 指令路由与响应分发模块头文件 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块实现指令路由与响应分发功能 + * 设计依据:多通信接口统一指令处理系统开发计划 第3.2节 + * + * 核心职责: + * - 从各UART端口读取数据并喂入解析器 + * - 根据指令来源端口路由响应 + * - 管理响应路由表 + ****************************************************************************** + */ + +#ifndef __CMD_ROUTER_H +#define __CMD_ROUTER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "multi_uart_router.h" +#include "cmd_parser.h" + +typedef void (*cmd_response_handler_t)(port_id_t port, const char *response, uint16_t len); + +void CmdRouter_Init(void); + +void CmdRouter_Task(void); + +void CmdRouter_SetResponseHandler(cmd_response_handler_t handler); + +void CmdRouter_SendResponse(port_id_t port, const char *response, uint16_t len); + +void CmdRouter_BroadcastResponse(const char *response, uint16_t len); + +uint32_t CmdRouter_GetProcessedCount(void); + +uint32_t CmdRouter_GetRoutedCount(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Core/Inc/debug_log.h b/Core/Inc/debug_log.h new file mode 100644 index 0000000..9266f8e --- /dev/null +++ b/Core/Inc/debug_log.h @@ -0,0 +1,61 @@ +/** + ****************************************************************************** + * @file debug_log.h + * @brief 增强型调试日志系统头文件 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块实现增强型调试日志系统 + * 设计依据:多通信接口统一指令处理系统开发计划 第3.4节 + * + * 日志格式:[LEVEL][MODULE] message + * 示例:[INFO][CMD] Command received: RL + ****************************************************************************** + */ + +#ifndef __DEBUG_LOG_H +#define __DEBUG_LOG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef enum { + LOG_LEVEL_DEBUG = 0, + LOG_LEVEL_INFO = 1, + LOG_LEVEL_WARN = 2, + LOG_LEVEL_ERROR = 3, + LOG_LEVEL_NONE = 4 +} log_level_t; + +void DebugLog_Init(void); + +void DebugLog_SetLevel(log_level_t level); + +log_level_t DebugLog_GetLevel(void); + +void DebugLog_EnableModule(const char *module, bool enable); + +void DebugLog_Output(log_level_t level, const char *module, const char *fmt, ...); + +#define LOG_DEBUG(module, fmt, ...) \ + DebugLog_Output(LOG_LEVEL_DEBUG, module, fmt, ##__VA_ARGS__) + +#define LOG_INFO(module, fmt, ...) \ + DebugLog_Output(LOG_LEVEL_INFO, module, fmt, ##__VA_ARGS__) + +#define LOG_WARN(module, fmt, ...) \ + DebugLog_Output(LOG_LEVEL_WARN, module, fmt, ##__VA_ARGS__) + +#define LOG_ERROR(module, fmt, ...) \ + DebugLog_Output(LOG_LEVEL_ERROR, module, fmt, ##__VA_ARGS__) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Core/Inc/io_monitor.h b/Core/Inc/io_monitor.h index be376fd..7f5a3c4 100644 --- a/Core/Inc/io_monitor.h +++ b/Core/Inc/io_monitor.h @@ -3,12 +3,15 @@ * @file io_monitor.h * @brief IO状态监控模块头文件 * @author Application Layer - * @version 1.0 + * @version 1.1 ****************************************************************************** * @attention * 本模块实现四路数字输入(DI1-DI4)的状态监控 * 采用定时扫描+软件去抖方式检测IO状态变化 - * 状态变化时通过UART2_Print上报 + * 状态变化时通过回调函数上报,支持多端口路由 + * + * 修订历史: + * v1.1 - 增加事件回调机制,支持多端口路由 ****************************************************************************** */ @@ -26,6 +29,15 @@ extern "C" { #define IO_SCAN_PERIOD_MS 10 #define IO_DEBOUNCE_COUNT 3 +/** + * @brief IO事件回调函数类型 + * @note 当IO状态变化时调用,用于事件路由 + * @param channel: 通道号(0-3对应DI1-DI4) + * @param state: 当前状态(0=LOW, 1=HIGH) + * @param event_msg: 事件消息字符串 + */ +typedef void (*io_event_callback_t)(uint8_t channel, uint8_t state, const char *event_msg); + /** * @brief 初始化IO监控模块 * @note 初始化各通道状态,读取初始IO电平 @@ -75,6 +87,14 @@ void IO_Monitor_EnableReport(bool enable); */ uint32_t IO_Monitor_GetChangeCount(uint8_t channel); +/** + * @brief 设置IO事件回调函数 + * @note 设置后,IO状态变化将通过回调函数上报 + * @param callback: 回调函数指针,NULL则使用默认UART2输出 + * @retval 无 + */ +void IO_Monitor_SetEventCallback(io_event_callback_t callback); + #ifdef __cplusplus } #endif diff --git a/Core/Inc/multi_uart_router.h b/Core/Inc/multi_uart_router.h new file mode 100644 index 0000000..740648d --- /dev/null +++ b/Core/Inc/multi_uart_router.h @@ -0,0 +1,97 @@ +/** + ****************************************************************************** + * @file multi_uart_router.h + * @brief 多UART统一路由核心模块头文件 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块实现多UART端口的统一管理,包括: + * - 接收环形缓冲区 + * - 发送环形缓冲区 + * - 端口上下文管理 + * - 响应路由表 + * + * 设计依据:多通信接口统一指令处理系统开发计划 第3.1、3.3、3.5节及附录A + ****************************************************************************** + */ + +#ifndef __MULTI_UART_ROUTER_H +#define __MULTI_UART_ROUTER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "usart.h" + +#define UART_RX_BUFFER_SIZE 128 +#define UART_TX_BUFFER_SIZE 256 + +typedef enum { + PORT_UART1 = 0, + PORT_UART2 = 1, + PORT_UART3 = 2, + PORT_COUNT +} port_id_t; + +typedef struct { + uint8_t buffer[UART_RX_BUFFER_SIZE]; + volatile uint16_t head; + volatile uint16_t tail; + volatile uint16_t count; + volatile uint16_t overflow_count; +} uart_rx_ring_t; + +typedef struct { + uint8_t buffer[UART_TX_BUFFER_SIZE]; + volatile uint16_t head; + volatile uint16_t tail; + volatile uint16_t count; + volatile bool is_sending; + volatile uint16_t overflow_count; +} uart_tx_ring_t; + +typedef struct { + UART_HandleTypeDef *huart; + const char *name; + uart_rx_ring_t rx_ring; + uart_tx_ring_t tx_ring; + uint8_t rx_tmp; + uint32_t rx_count; + uint32_t tx_count; + uint32_t error_count; + bool initialized; +} uart_port_context_t; + +void MultiUART_Init(void); + +void MultiUART_FeedByte(port_id_t port_id, uint8_t byte); + +void MultiUART_Task(void); + +void MultiUART_Send(port_id_t port_id, const uint8_t *data, uint16_t len); + +void MultiUART_SendString(port_id_t port_id, const char *str); + +void MultiUART_SendFmt(port_id_t port_id, const char *fmt, ...); + +void MultiUART_TxCpltCallback(port_id_t port_id); + +const char *MultiUART_GetPortName(port_id_t port_id); + +uint16_t MultiUART_GetRxCount(port_id_t port_id); + +uint16_t MultiUART_ReadByte(port_id_t port_id, uint8_t *byte); + +uint16_t MultiUART_GetTxAvailable(port_id_t port_id); + +uint32_t MultiUART_GetOverflowCount(port_id_t port_id); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Core/Inc/relay_control.h b/Core/Inc/relay_control.h index 11cfa1c..9aff6de 100644 --- a/Core/Inc/relay_control.h +++ b/Core/Inc/relay_control.h @@ -3,11 +3,14 @@ * @file relay_control.h * @brief 继电器控制模块头文件 * @author Application Layer - * @version 1.0 + * @version 2.0 ****************************************************************************** * @attention - * 本模块提供继电器的安全控制接口 - * 当前硬件配置:PA15连接继电器控制端 + * 本模块提供单路继电器的控制接口 + * 硬件配置:PA15连接继电器控制端 + * + * 修订历史: + * v2.0 - 精简为单路继电器控制,移除冗余功能 ****************************************************************************** */ @@ -21,7 +24,6 @@ extern "C" { #include #include -#define RELAY_COUNT 1 #define RELAY_MIN_INTERVAL 100 /** @@ -35,35 +37,18 @@ void Relay_Init(void); /** * @brief 设置继电器状态 * @note 带最小间隔保护,防止频繁切换损坏继电器 - * @param relay_id: 继电器编号(1-4),当前硬件只有1 * @param state: true=打开, false=关闭 * @retval 无 */ -void Relay_SetState(uint8_t relay_id, bool state); +void Relay_SetState(bool state); /** * @brief 获取继电器当前状态 - * @note 读取GPIO输出状态 - * @param relay_id: 继电器编号(1-4) + * @note 读取软件记录的状态 + * @param 无 * @retval true=打开, false=关闭 */ -bool Relay_GetState(uint8_t relay_id); - -/** - * @brief 翻转继电器状态 - * @note 带最小间隔保护 - * @param relay_id: 继电器编号(1-4) - * @retval 无 - */ -void Relay_Toggle(uint8_t relay_id); - -/** - * @brief 获取继电器切换次数 - * @note 用于调试和诊断 - * @param 无 - * @retval 切换次数 - */ -uint32_t Relay_GetToggleCount(void); +bool Relay_GetState(void); #ifdef __cplusplus } diff --git a/Core/Src/cmd_parser.c b/Core/Src/cmd_parser.c index e0e2cc8..dfa029e 100644 --- a/Core/Src/cmd_parser.c +++ b/Core/Src/cmd_parser.c @@ -12,7 +12,7 @@ * 2. 完善的安全防护(缓冲区边界检查、超时重置、字符过滤) * 3. 异或校验,FF特权后门 * 4. 支持RL、DI、ECHO指令 - * + * * 修订历史: * v1.1 - 修复审查报告高危-6、中危-7/8 ****************************************************************************** @@ -27,37 +27,148 @@ #include // snprintf #include // atoi +/*============================================================================== + * 调试宏定义 + *============================================================================*/ +/* DEBUG_CMD_PARSER: 调试日志开关,置1时启用解析过程日志输出 */ #define DEBUG_CMD_PARSER 1 #if DEBUG_CMD_PARSER +/* 调试日志宏,带模块前缀"[CMD]"方便过滤 */ #define DEBUG_LOG(fmt, ...) UART2_Print_Printf("[CMD] " fmt "\r\n", ##__VA_ARGS__) #else #define DEBUG_LOG(fmt, ...) #endif +/*============================================================================== + * 解析器状态机定义 + *============================================================================*/ +/** + * @brief 指令解析器状态枚举 + * @note 状态机各状态定义,描述指令解析的完整生命周期 + * + * 状态转换图: + * + * [空闲] ---'$'---> [解析命令] + * [解析命令] ---','---> [解析参数1] + * [解析命令] ---'*'---> [解析校验和] + * [解析参数1] ---','---> [解析参数2] + * [解析参数1] ---'*'---> [解析校验和] + * [解析参数2] ---'*'---> [解析校验和] + * [解析校验和] ---'\n'---> [完成] + * [完成] ---'$'---> [解析命令] + * 任何状态 ---超时---> [空闲] + * + * 各状态说明: + * - PARSE_IDLE: 等待帧起始符'$',处于空闲状态 + * - PARSE_CMD: 正在解析命令字段(直到遇到','或'*') + * - PARSE_PARAM1: 正在解析第一个参数(直到遇到','或'*') + * - PARSE_PARAM2: 正在解析第二个参数(直到遇到'*') + * - PARSE_CHECKSUM: 正在解析校验和(两个十六进制字符直到'\n') + * - PARSE_COMPLETE: 完整帧已解析完成,等待处理 + */ typedef enum { - PARSE_IDLE, - PARSE_CMD, - PARSE_PARAM1, - PARSE_PARAM2, - PARSE_CHECKSUM, - PARSE_COMPLETE + PARSE_IDLE = 0, /**< 空闲状态,等待帧起始 */ + PARSE_CMD, /**< 正在解析命令字段 */ + PARSE_PARAM1, /**< 正在解析第一个参数 */ + PARSE_PARAM2, /**< 正在解析第二个参数 */ + PARSE_CHECKSUM, /**< 正在解析校验和 */ + PARSE_COMPLETE /**< 解析完成,可处理 */ } parse_state_t; +/*============================================================================== + * 数据结构定义 + *============================================================================*/ +/** + * @brief 解析器上下文数据结构 + * @note 保存指令解析的完整状态信息,包括当前状态、已解析字段和统计计数 + * + * 设计目的: + * 解析器需要记忆多个中间状态:当前解析状态、已接收的各字段内容、 + * 校验和累加值、上下文字符索引等。这些信息集中保存在此结构体中, + * 实现无状态的逐字节处理(Stateless Byte-by-Byte Processing)模式。 + * + * 字段说明: + * - state: 当前解析状态机的状态 + * - frame: 已解析完成的指令帧结构(cmd_frame_t类型) + * - field_index: 当前字段的字符写入位置索引 + * - checksum_acc: 校验和累加器,逐字节异或得到 + * - cs_buffer: 接收的校验和字符缓存(两个HEX字符) + * - cs_index: 校验和字符缓存的当前写入位置 + * - last_rx_tick: 上次接收到数据的时间戳(用于超时检测) + * - error_count: 解析错误累计次数 + * - valid_count: 有效指令帧累计次数 + */ typedef struct { - parse_state_t state; - cmd_frame_t frame; - uint8_t field_index; - uint8_t checksum_acc; - uint8_t cs_buffer[2]; - uint8_t cs_index; - uint32_t last_rx_tick; - uint32_t error_count; - uint32_t valid_count; + parse_state_t state; /**< 解析状态机当前状态 */ + cmd_frame_t frame; /**< 已解析指令帧数据 */ + uint8_t field_index; /**< 当前字段的字符写入位置 */ + uint8_t checksum_acc; /**< 校验和累加器(异或运算) */ + uint8_t cs_buffer[2]; /**< 接收的校验和字符缓存 */ + uint8_t cs_index; /**< 校验和字符缓存写入位置 */ + uint32_t last_rx_tick; /**< 上次接收时间戳(毫秒) */ + uint32_t error_count; /**< 解析错误累计次数 */ + uint32_t valid_count; /**< 有效帧累计次数 */ } parser_context_t; +/*============================================================================== + * 全局变量定义 + *============================================================================*/ +/** + * @brief 解析器上下文实例 + * @note static修饰确保仅本文件内可访问,保存解析过程全部状态 + */ static parser_context_t ctx; +/** + * @brief 响应回调函数指针 + * @note 用于将响应发送到正确的源端口 + */ +static cmd_response_callback_t g_response_callback = NULL; + +/** + * @brief 当前源端口ID + * @note 记录当前正在解析的指令来自哪个端口 + */ +static uint8_t g_current_source_port = 0; + +/*============================================================================== + * 内部静态函数声明 + *============================================================================*/ +static void reset_parser(void); +static bool is_valid_cmd_char(char c); +static bool is_valid_param_char(char c); +static uint8_t hex_char_to_val(char c); +static uint8_t hex_to_byte(char high, char low); +static uint8_t calc_checksum(const char *data, uint8_t len); +static void send_response_ok(const char *content); +static void send_response_err(const char *err_code); +static bool is_str_empty(const char *str); +static bool is_str_numeric(const char *str); +static void process_cmd_frame(const cmd_frame_t *frame); + +/*============================================================================== + * 内部辅助函数实现 + *============================================================================*/ +/** + * @brief 重置解析器到初始状态 + * @note 清除所有上下文信息,准备接收新指令帧 + * + * @param 无 + * @return 无 + * + * 重置内容: + * - 状态恢复为PARSE_IDLE + * - 字段索引清零 + * - 校验和累加器清零 + * - 校验和缓存索引清零 + * - cmd_frame结构体全部清零 + * + * 调用时机: + * - 解析出错时 + * - 解析完成处理后 + * - 接收到完整帧后的空闲期 + */ static void reset_parser(void) { ctx.state = PARSE_IDLE; @@ -67,16 +178,59 @@ static void reset_parser(void) memset(&ctx.frame, 0, sizeof(ctx.frame)); } +/** + * @brief 验证命令字符合法性 + * @note 命令字段只能包含大写字母和数字 + * + * @param c: 待验证的字符(输入) + * @return bool: true=合法,false=非法 + * + * 过滤规则: + * - 允许: 'A'-'Z', '0'-'9' + * - 禁止: 小写字母、标点符号、控制字符等 + * + * 安全意义: + * - 限制命令字符集可防止注入攻击 + * - 简化解析逻辑,避免处理边界情况 + */ static bool is_valid_cmd_char(char c) { return isupper((unsigned char)c) || isdigit((unsigned char)c); } +/** + * @brief 验证参数字符合法性 + * @note 参数字段可包含大部分可打印字符,但排除特殊分隔符 + * + * @param c: 待验证的字符(输入) + * @return bool: true=合法,false=非法 + * + * 过滤规则: + * - 允许: isprint()返回true的字符,但不包括'*' + * - 禁止: '*'、'\r'、'\n'及其他不可打印字符 + * + * 特殊说明: + * - '*'是校验和起始分隔符,不能出现在参数中 + * - '\r'和'\n'是帧结束符 + */ static bool is_valid_param_char(char c) { return isprint((unsigned char)c) && c != '*' && c != '\r' && c != '\n'; } +/** + * @brief 十六进制字符转换为数值 + * @note 将单个十六进制字符('0'-'9','A'-'F')转换为对应的4位数值 + * + * @param c: 十六进制字符(输入) + * @return uint8_t: 转换后的数值(0-15),非法字符返回0 + * + * 转换规则: + * '0'-'9' -> 0-9 + * 'A'-'F' -> 10-15 + * 'a'-'f' -> 10-15 (小写也支持) + * 其他字符 -> 0 (默认处理) + */ static uint8_t hex_char_to_val(char c) { if (c >= '0' && c <= '9') return c - '0'; @@ -85,11 +239,37 @@ static uint8_t hex_char_to_val(char c) return 0; } +/** + * @brief 将两个十六进制字符转换为一个字节 + * @note 高位字符在前,地位字符在后,组合成完整的字节值 + * + * @param high: 高位十六进制字符(输入) + * @param low: 低位十六进制字符(输入) + * @return uint8_t: 组合后的字节值(0-255) + * + * 计算公式:result = (high_nibble << 4) | low_nibble + * + * 示例: + * hex_to_byte('A', 'F') 返回 0xAF (十进制175) + */ static uint8_t hex_to_byte(char high, char low) { return (hex_char_to_val(high) << 4) | hex_char_to_val(low); } +/** + * @brief 计算异或校验和 + * @note 对输入数据的每个字节执行异或运算,生成校验码 + * + * @param data: 待计算校验和的数据缓冲区(输入) + * @param len: 数据长度,以字节为单位(输入) + * @return uint8_t: 校验和(异或结果) + * + * 算法原理: + * 遍历数据缓冲区,将每个字节与累加器进行异或操作。 + * 初始累加器为0,最终结果为所有字节的异或和。 + * XOR的特性:a^a=0, a^0=a, 具有可逆性,适合简单校验 + */ static uint8_t calc_checksum(const char *data, uint8_t len) { uint8_t cs = 0; @@ -99,40 +279,99 @@ static uint8_t calc_checksum(const char *data, uint8_t len) return cs; } +/** + * @brief 发送成功响应消息 + * @note 构造并发送指令执行成功的响应帧 + * + * @param content: 响应内容字符串指针(输入) + * @return 无 + * + * 响应帧格式: + * $OK,*\r\n + * + * 校验和计算范围: + * 从'$'之后到'*'之前的全部内容(不含$和*) + * + * 使用示例: + * send_response_ok("RL,1") -> $OK,RL,1*XX\r\n + */ static void send_response_ok(const char *content) { char msg[64]; uint8_t cs; - + int len = snprintf(msg, sizeof(msg), "$OK,%s*", content); cs = calc_checksum(msg + 1, len - 1); snprintf(msg + len, sizeof(msg) - len, "%02X\r\n", cs); - - UART2_Print_String(msg); + + if (g_response_callback != NULL) { + g_response_callback(g_current_source_port, msg); + } else { + UART2_Print_String(msg); + } } +/** + * @brief 发送错误响应消息 + * @note 构造并发送指令执行失败的响应帧 + * + * @param err_code: 错误代码字符串(输入),如"PARAM"、"CS"、"CMD" + * @return 无 + * + * 响应帧格式: + * $ERR,*\r\n + * + * 错误代码含义: + * - "PARAM": 参数格式或值非法 + * - "CS": 校验和不匹配 + * - "CMD": 命令无法识别 + */ static void send_response_err(const char *err_code) { char msg[32]; uint8_t cs; - + int len = snprintf(msg, sizeof(msg), "$ERR,%s*", err_code); cs = calc_checksum(msg + 1, len - 1); snprintf(msg + len, sizeof(msg) - len, "%02X\r\n", cs); - - UART2_Print_String(msg); + + if (g_response_callback != NULL) { + g_response_callback(g_current_source_port, msg); + } else { + UART2_Print_String(msg); + } } +/** + * @brief 判断字符串是否为空 + * @note 检查指针是否为NULL或首字符是否为'\0' + * + * @param str: 待检查的字符串指针(输入) + * @return bool: true=空字符串或NULL,false=非空 + */ static bool is_str_empty(const char *str) { return (str == NULL || str[0] == '\0'); } +/** + * @brief 判断字符串是否全为数字 + * @note 验证字符串中的所有字符是否都是十进制数字 + * + * @param str: 待检查的字符串指针(输入) + * @return bool: true=全为数字,false=包含非数字字符或为空 + * + * 实现逻辑: + * 从字符串开头遍历到'\0',检查每个字符是否满足isdigit()。 + * 一旦遇到非数字字符立即返回false。 + */ static bool is_str_numeric(const char *str) { + /* 空字符串检查 */ if (is_str_empty(str)) { return false; } + /* 逐字符检查是否为数字 */ while (*str) { if (!isdigit((unsigned char)*str)) { return false; @@ -142,160 +381,322 @@ static bool is_str_numeric(const char *str) return true; } +/** + * @brief 指令帧处理函数 + * @note 根据解析出的命令类型分发到相应的处理函数 + * + * @param frame: 已解析完成的指令帧结构指针(输入) + * @return 无 + * + * 支持的指令列表: + * - RL : 控制继电器开关 + * - DI [channel]: 查询数字输入状态 + * - ECHO: 回显测试指令 + * + * 处理流程: + * 1. 调试日志输出指令详情 + * 2. 根据cmd字段分发到对应处理分支 + * 3. 参数合法性校验 + * 4. 调用业务层函数执行操作 + * 5. 发送成功/失败响应 + */ static void process_cmd_frame(const cmd_frame_t *frame) { - DEBUG_LOG("CMD=%s P1=%s P2=%s CS=%02X/%02X %s", + /*---------------------------------------------------------- + * 调试日志:打印完整指令信息 + *----------------------------------------------------------*/ + DEBUG_LOG("CMD=%s P1=%s P2=%s CS=%02X/%02X %s", frame->cmd, frame->param1, frame->param2, frame->received_cs, frame->calculated_cs, frame->skip_checksum ? "(skip)" : ""); - + + /*---------------------------------------------------------- + * 继电器控制指令: RL + * 格式: $RL,* + * 说明: 单路继电器,state为0(关)或1(开) + *----------------------------------------------------------*/ if (strcmp(frame->cmd, "RL") == 0) { - if (!is_str_numeric(frame->param1) || !is_str_numeric(frame->param2)) { + /* 参数合法性检查:param1必须为数字 */ + if (!is_str_numeric(frame->param1)) { send_response_err("PARAM"); - DEBUG_LOG("Invalid RL params: not numeric"); + DEBUG_LOG("Invalid RL param: not numeric"); return; } - - int relay_id = atoi(frame->param1); - int state = atoi(frame->param2); - - if (relay_id >= 1 && relay_id <= 4 && (state == 0 || state == 1)) { - Relay_SetState(relay_id, state ? true : false); - + + /* 将参数字符串转换为整数 */ + int state = atoi(frame->param1); + + /* 状态值范围检查: 0或1 */ + if (state == 0 || state == 1) { + /* 调用业务层函数设置继电器状态 */ + Relay_SetState(state ? true : false); + + /* 构造并发送成功响应 */ char resp[32]; - snprintf(resp, sizeof(resp), "RL,%d,%d", relay_id, state); + snprintf(resp, sizeof(resp), "RL,%d", state); send_response_ok(resp); - - DEBUG_LOG("Relay %d -> %s", relay_id, state ? "ON" : "OFF"); + + DEBUG_LOG("Relay -> %s", state ? "ON" : "OFF"); } else { + /* 参数值超出有效范围 */ send_response_err("PARAM"); - DEBUG_LOG("Invalid RL params: id=%d state=%d", relay_id, state); + DEBUG_LOG("Invalid RL param: state=%d", state); } } + /*---------------------------------------------------------- + * 数字输入查询指令: DI [channel] + * 格式1(查询全部): $DI* 或 $DI,0* + * 格式2(查询单通道): $DI,* + *----------------------------------------------------------*/ else if (strcmp(frame->cmd, "DI") == 0) { + /*---------------------------------------------------------- + * 分支1: 查询全部通道状态 + * param1为空或为"0"时触发 + *----------------------------------------------------------*/ if (is_str_empty(frame->param1) || strcmp(frame->param1, "0") == 0) { + /* 获取所有通道状态的组合掩码 */ uint8_t states = IO_Monitor_GetAllStates(); + /* 构造响应消息,将四路状态按位展开为ASCII字符 */ char resp[32]; - snprintf(resp, sizeof(resp), "DI,%d%d%d%d", + snprintf(resp, sizeof(resp), "DI,%d%d%d%d", (states >> 0) & 1, (states >> 1) & 1, (states >> 2) & 1, (states >> 3) & 1); send_response_ok(resp); DEBUG_LOG("DI all states: 0x%02X", states); } + /*---------------------------------------------------------- + * 分支2: 查询指定单通道状态 + * param1为数字时触发 + *----------------------------------------------------------*/ else if (is_str_numeric(frame->param1)) { int channel = atoi(frame->param1); + /* 通道编号范围检查: 1-4 */ if (channel >= 1 && channel <= 4) { + /* 获取该通道的当前状态(内部使用0-base索引) */ uint8_t state = IO_Monitor_GetState(channel - 1); char resp[32]; snprintf(resp, sizeof(resp), "DI,%d,%d", channel, state); send_response_ok(resp); DEBUG_LOG("DI%d = %d", channel, state); } else { + /* 通道编号超出范围 */ send_response_err("PARAM"); DEBUG_LOG("Invalid DI channel: %d", channel); } } + /*---------------------------------------------------------- + * 分支3: 参数格式非法 + *----------------------------------------------------------*/ else { send_response_err("PARAM"); DEBUG_LOG("Invalid DI param: not numeric"); } } + /*---------------------------------------------------------- + * 回显测试指令: ECHO + * 格式: $ECHO* + * 用途: 测试通信链路是否正常 + *----------------------------------------------------------*/ else if (strcmp(frame->cmd, "ECHO") == 0) { send_response_ok("ECHO"); DEBUG_LOG("ECHO response sent"); } + /*---------------------------------------------------------- + * 未知命令处理 + *----------------------------------------------------------*/ else { send_response_err("CMD"); DEBUG_LOG("Unknown command: %s", frame->cmd); } } +/*============================================================================== + * 公共函数实现 + *============================================================================*/ +/** + * @brief 指令解析器初始化 + * @note 在系统启动时调用,初始化解析器上下文 + * + * @param 无 + * @return 无 + * + * 初始化内容: + * - 使用memset将整个上下文结构清零 + * - 将状态显式设置为PARSE_IDLE + * + * 注意: + * 全局变量ctx本身是static且初始化为{0}, + * 此函数调用memset是确保明确初始化, + * 防止未来新增字段时出现未初始化问题 + */ void CmdParser_Init(void) { memset(&ctx, 0, sizeof(ctx)); ctx.state = PARSE_IDLE; - + DEBUG_LOG("Init OK"); } +/** + * @brief 向解析器输入一个字节 + * @note 核心解析函数,实现状态机逻辑,应对每个接收字节调用一次 + * + * @param byte: 待解析的接收字节(输入) + * @param current_tick: 当前系统时间戳,毫秒单位(输入) + * @return 无 + * + * 算法说明 - 状态机核心逻辑: + * 本函数是整个解析器的核心,实现了有限状态机(FSM)。 + * 每次调用处理一个字节,根据当前状态(ctx.state)和输入字节 + * 决定状态转换和动作。 + * + * 状态转换详细说明: + * + * [PARSE_IDLE]: + * - byte='$' -> reset_parser(), state=PARSE_CMD + * - 其他字节 -> 忽略,保持IDLE + * + * [PARSE_CMD]: + * - byte=',' -> 字段结束,state=PARSE_PARAM1,field_index=0 + * - byte='*' -> 字段结束,state=PARSE_CHECKSUM,cs_index=0 + * - is_valid_cmd_char(byte) -> 写入cmd缓冲区,checksum_acc^=byte + * - 其他情况 -> error_count++, reset_parser() + * + * [PARSE_PARAM1]: + * - byte=',' -> 字段结束,state=PARSE_PARAM2,field_index=0 + * - byte='*' -> 字段结束,state=PARSE_CHECKSUM,cs_index=0 + * - is_valid_param_char(byte) -> 写入param1缓冲区,checksum_acc^=byte + * - 其他情况 -> error_count++, reset_parser() + * + * [PARSE_PARAM2]: + * - byte='*' -> 字段结束,state=PARSE_CHECKSUM,cs_index=0 + * - is_valid_param_char(byte) -> 写入param2缓冲区,checksum_acc^=byte + * - 其他情况 -> error_count++, reset_parser() + * + * [PARSE_CHECKSUM]: + * - byte='\n' -> 校验和接收完成,验证并设置state=PARSE_COMPLETE + * - byte='\r' -> 忽略(回车符) + * - 其他情况 -> 写入cs_buffer[cs_index++],最多2个字符 + * + * [PARSE_COMPLETE]: + * - reset_parser() + * - byte='$' -> state=PARSE_CMD (允许连续帧) + * + * 超时处理: + * 如果当前状态不是IDLE且距离上次接收超过PARSE_TIMEOUT_MS, + * 则判定为接收超时,重置解析器到IDLE状态 + */ void CmdParser_FeedByte(uint8_t byte, uint32_t current_tick) { + /*---------------------------------------------------------- + * 超时检测 + * 如果接收到新字节且距离上次接收已超时,则重置解析器 + *----------------------------------------------------------*/ if (ctx.state != PARSE_IDLE && ctx.state != PARSE_COMPLETE) { if (current_tick - ctx.last_rx_tick >= PARSE_TIMEOUT_MS) { ctx.error_count++; DEBUG_LOG("Timeout, reset parser"); reset_parser(); + /* 超时后如果收到'$',立即开始解析新帧 */ if (byte == '$') { ctx.state = PARSE_CMD; } return; } } + /* 更新最后接收时间戳 */ ctx.last_rx_tick = current_tick; - + + /*---------------------------------------------------------- + * 状态机主分支:根据当前状态处理输入字节 + *----------------------------------------------------------*/ switch (ctx.state) { + /*---------------------------------------------------------- + * PARSE_IDLE: 等待帧起始符'$' + *----------------------------------------------------------*/ case PARSE_IDLE: if (byte == '$') { reset_parser(); ctx.state = PARSE_CMD; } break; - + + /*---------------------------------------------------------- + * PARSE_CMD: 解析命令字段 + *----------------------------------------------------------*/ case PARSE_CMD: if (byte == ',') { + /* 命令字段结束符,遇到逗号转入参数1解析 */ ctx.frame.cmd[ctx.field_index] = '\0'; ctx.state = PARSE_PARAM1; ctx.field_index = 0; } else if (byte == '*') { + /* 无参数命令,遇到'*'直接转入校验和解析 */ ctx.frame.cmd[ctx.field_index] = '\0'; ctx.state = PARSE_CHECKSUM; ctx.field_index = 0; ctx.cs_index = 0; } else if (is_valid_cmd_char(byte)) { + /* 有效的命令字符,写入缓冲区 */ if (ctx.field_index < CMD_MAX_LEN - 1) { ctx.frame.cmd[ctx.field_index++] = byte; - ctx.checksum_acc ^= byte; + ctx.checksum_acc ^= byte; /* 累加到校验和 */ } else { + /* 缓冲区溢出,命令过长 */ ctx.error_count++; reset_parser(); } } else { + /* 无效字符,命令只能包含大写字母和数字 */ ctx.error_count++; reset_parser(); } break; - + + /*---------------------------------------------------------- + * PARSE_PARAM1: 解析第一个参数 + *----------------------------------------------------------*/ case PARSE_PARAM1: if (byte == ',') { + /* 参数1结束符,遇到逗号转入参数2解析 */ ctx.frame.param1[ctx.field_index] = '\0'; ctx.state = PARSE_PARAM2; ctx.field_index = 0; } else if (byte == '*') { + /* 参数1结束符,遇到'*'直接转入校验和解析 */ ctx.frame.param1[ctx.field_index] = '\0'; ctx.state = PARSE_CHECKSUM; ctx.field_index = 0; ctx.cs_index = 0; } else if (is_valid_param_char(byte)) { + /* 有效参数字符,写入缓冲区 */ if (ctx.field_index < PARAM_MAX_LEN - 1) { ctx.frame.param1[ctx.field_index++] = byte; ctx.checksum_acc ^= byte; } else { + /* 缓冲区溢出,参数过长 */ ctx.error_count++; reset_parser(); } } else { + /* 无效字符 */ ctx.error_count++; reset_parser(); } break; - + + /*---------------------------------------------------------- + * PARSE_PARAM2: 解析第二个参数 + *----------------------------------------------------------*/ case PARSE_PARAM2: if (byte == '*') { + /* 参数2结束符,遇到'*'转入校验和解析 */ ctx.frame.param2[ctx.field_index] = '\0'; ctx.state = PARSE_CHECKSUM; ctx.field_index = 0; ctx.cs_index = 0; } else if (is_valid_param_char(byte)) { + /* 有效参数字符,写入缓冲区 */ if (ctx.field_index < PARAM_MAX_LEN - 1) { ctx.frame.param2[ctx.field_index++] = byte; ctx.checksum_acc ^= byte; @@ -308,34 +709,51 @@ void CmdParser_FeedByte(uint8_t byte, uint32_t current_tick) reset_parser(); } break; - + + /*---------------------------------------------------------- + * PARSE_CHECKSUM: 解析校验和 + *----------------------------------------------------------*/ case PARSE_CHECKSUM: if (byte == '\n') { + /* 帧结束符'\n'到达,校验和解析完成 */ + /* 将两个十六进制字符转换为字节 */ ctx.frame.received_cs = hex_to_byte(ctx.cs_buffer[0], ctx.cs_buffer[1]); ctx.frame.calculated_cs = ctx.checksum_acc; + /* 0xFF作为特殊值,跳过校验和验证(后门) */ ctx.frame.skip_checksum = (ctx.frame.received_cs == 0xFF); - - if (ctx.frame.skip_checksum || + + /*---------------------------------------------------------- + * 校验和验证 + *----------------------------------------------------------*/ + if (ctx.frame.skip_checksum || ctx.frame.received_cs == ctx.frame.calculated_cs) { + /* 校验通过,设置帧有效标志 */ ctx.frame.valid = true; ctx.state = PARSE_COMPLETE; ctx.valid_count++; } else { + /* 校验失败,发送错误响应 */ ctx.error_count++; - DEBUG_LOG("Checksum error: recv=%02X calc=%02X", + DEBUG_LOG("Checksum error: recv=%02X calc=%02X", ctx.frame.received_cs, ctx.frame.calculated_cs); send_response_err("CS"); reset_parser(); } } else if (byte != '\r') { + /* 忽略回车符'\r',接收校验和字符(最多2个HEX) */ if (ctx.cs_index < 2) { ctx.cs_buffer[ctx.cs_index++] = byte; } } break; - + + /*---------------------------------------------------------- + * PARSE_COMPLETE: 解析完成状态 + *----------------------------------------------------------*/ case PARSE_COMPLETE: + /* 重置解析器,准备接收下一帧 */ reset_parser(); + /* 如果立即收到'$',允许连续帧解析 */ if (byte == '$') { ctx.state = PARSE_CMD; } @@ -343,6 +761,27 @@ void CmdParser_FeedByte(uint8_t byte, uint32_t current_tick) } } +/** + * @brief 指令解析器任务函数 + * @note 在主循环中周期性调用,处理已解析完成的指令帧 + * + * @param 无 + * @return 无 + * + * 工作模式: + * CmdParser_FeedByte()负责接收字节并解析, + * 此函数负责在帧解析完成后执行相应的业务处理。 + * + * 处理流程: + * 1. 检查是否处于PARSE_COMPLETE状态 + * 2. 检查帧是否valid + * 3. 调用process_cmd_frame()执行指令 + * 4. 重置解析器到IDLE状态 + * + * 注意: + * 此设计将"接收解析"与"业务处理"分离, + * 避免了中断处理函数中执行复杂业务逻辑 + */ void CmdParser_Task(void) { if (ctx.state == PARSE_COMPLETE && ctx.frame.valid) { @@ -351,6 +790,21 @@ void CmdParser_Task(void) } } +/** + * @brief 查询是否存在已完成的指令帧 + * @note 非阻塞查询接口,供外部模块检查是否有待处理帧 + * + * @param frame: 帧数据输出指针,如果不为NULL则复制帧数据(输出) + * @return bool: true=存在有效帧,false=无有效帧 + * + * 使用场景: + * 外部模块(如主循环)可轮询此函数, + * 当返回true时获取帧数据进行处理 + * + * 注意: + * 此函数只是查询,不自动清除帧数据。 + * 帧数据的清除需要调用CmdParser_Acknowledge() + */ bool CmdParser_HasCompleteFrame(cmd_frame_t *frame) { if (ctx.state == PARSE_COMPLETE && ctx.frame.valid) { @@ -362,17 +816,81 @@ bool CmdParser_HasCompleteFrame(cmd_frame_t *frame) return false; } +/** + * @brief 确认并清除已完成的指令帧 + * @note 在处理完一帧后调用,重置解析器到初始状态 + * + * @param 无 + * @return 无 + * + * 使用说明: + * 当外部模块通过CmdParser_HasCompleteFrame获取帧数据后, + * 处理完毕应调用此函数清除状态,防止重复处理 + */ void CmdParser_Acknowledge(void) { reset_parser(); } +/** + * @brief 获取解析错误累计次数 + * @note 用于诊断通信质量或协议错误统计 + * + * @param 无 + * @return uint32_t: 错误帧累计次数 + * + * 错误类型包括: + * - 字符验证失败 + * - 缓冲区溢出 + * - 校验和不匹配 + * - 接收超时 + */ uint32_t CmdParser_GetErrorCount(void) { return ctx.error_count; } +/** + * @brief 获取有效帧累计次数 + * @note 用于诊断通信成功率统计 + * + * @param 无 + * @return uint32_t: 有效帧累计次数 + * + * 计算公式:成功率 = valid_count / (valid_count + error_count) + */ uint32_t CmdParser_GetValidCount(void) { return ctx.valid_count; } + +/** + * @brief 设置响应回调函数 + * @note 用于将响应路由到正确的源端口 + * + * @param callback: 回调函数指针 + * @return 无 + * + * 回调函数原型: + * void callback(uint8_t source_port, const char *response) + * + * 参数说明: + * - source_port: 指令来源端口ID + * - response: 待发送的响应字符串 + */ +void CmdParser_SetResponseCallback(cmd_response_callback_t callback) +{ + g_response_callback = callback; +} + +/** + * @brief 设置当前源端口 + * @note 在开始解析新指令前调用,记录指令来源 + * + * @param port_id: 端口ID + * @return 无 + */ +void CmdParser_SetSourcePort(uint8_t port_id) +{ + g_current_source_port = port_id; +} diff --git a/Core/Src/cmd_router.c b/Core/Src/cmd_router.c new file mode 100644 index 0000000..ecb27e2 --- /dev/null +++ b/Core/Src/cmd_router.c @@ -0,0 +1,222 @@ +/** + ****************************************************************************** + * @file cmd_router.c + * @brief 指令路由与响应分发模块实现 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块实现指令路由与响应分发功能 + * 设计依据:多通信接口统一指令处理系统开发计划 第3.2节 + * + * 核心职责: + * - 从各UART端口读取数据并喂入解析器 + * - 根据指令来源端口路由响应 + * - 管理响应路由表 + * + * 工作流程: + * 1. 中断中将接收字节写入对应端口的环形缓冲区 + * 2. 主循环中CmdRouter_Task轮询各端口缓冲区 + * 3. 读取字节喂入CmdParser解析器 + * 4. 解析完成后通过回调发送响应到源端口 + ****************************************************************************** + */ + +#include "cmd_router.h" +#include "multi_uart_router.h" +#include "cmd_parser.h" +#include "uart2_print.h" +#include "debug_log.h" +#include + +#define DEBUG_CMD_ROUTER 1 + +#if DEBUG_CMD_ROUTER +#define ROUTER_LOG(fmt, ...) UART2_Print_Printf("[ROUTER] " fmt "\r\n", ##__VA_ARGS__) +#else +#define ROUTER_LOG(fmt, ...) +#endif + +#define RX_LOG_BUFFER_SIZE 128 + +typedef struct { + uint8_t source_port; + uint32_t last_feed_tick; + uint32_t rx_count; + bool active; +} port_parser_state_t; + +static port_parser_state_t g_port_states[PORT_COUNT]; + +static cmd_response_handler_t g_response_handler = NULL; + +static uint32_t g_processed_count = 0; +static uint32_t g_routed_count = 0; + +static uint8_t g_current_parsing_port = PORT_UART2; + +static uint8_t g_rx_log_buffer[PORT_COUNT][RX_LOG_BUFFER_SIZE]; +static uint16_t g_rx_log_len[PORT_COUNT]; +static uint32_t g_rx_log_last_tick[PORT_COUNT]; +#define RX_LOG_TIMEOUT_MS 50 + +static void flush_rx_log(port_id_t port_id) +{ + if (g_rx_log_len[port_id] == 0) { + return; + } + + UART2_Print_Printf("[ROUTER] %s RX: \"", MultiUART_GetPortName(port_id)); + + for (uint16_t i = 0; i < g_rx_log_len[port_id]; i++) { + uint8_t c = g_rx_log_buffer[port_id][i]; + if (c >= 0x20 && c < 0x7F) { + UART2_Print_Send(&c, 1); + } else if (c == '\r') { + UART2_Print_Send((const uint8_t *)"\\r", 2); + } else if (c == '\n') { + UART2_Print_Send((const uint8_t *)"\\n", 2); + } else { + char hex[4]; + snprintf(hex, sizeof(hex), "\\x%02X", c); + UART2_Print_Send((const uint8_t *)hex, 4); + } + } + + UART2_Print_String("\"\r\n"); + + g_rx_log_len[port_id] = 0; +} + +static void append_rx_log(port_id_t port_id, uint8_t byte) +{ + if (g_rx_log_len[port_id] < RX_LOG_BUFFER_SIZE) { + g_rx_log_buffer[port_id][g_rx_log_len[port_id]++] = byte; + } + g_rx_log_last_tick[port_id] = HAL_GetTick(); +} + +static void cmd_parser_response_callback(uint8_t source_port, const char *response) +{ + if (g_response_handler != NULL) { + g_response_handler((port_id_t)source_port, response, strlen(response)); + g_routed_count++; + } else { + MultiUART_SendString((port_id_t)source_port, response); + g_routed_count++; + } + + LOG_INFO("ROUTER", "TX[%s]: %s", + MultiUART_GetPortName((port_id_t)source_port), response); +} + +void CmdRouter_Init(void) +{ + for (port_id_t i = 0; i < PORT_COUNT; i++) { + g_port_states[i].source_port = i; + g_port_states[i].last_feed_tick = 0; + g_port_states[i].rx_count = 0; + g_port_states[i].active = false; + + g_rx_log_len[i] = 0; + g_rx_log_last_tick[i] = 0; + } + + g_response_handler = NULL; + g_processed_count = 0; + g_routed_count = 0; + g_current_parsing_port = PORT_UART2; + + CmdParser_SetResponseCallback(cmd_parser_response_callback); + + ROUTER_LOG("Init OK, %d ports registered", PORT_COUNT); +} + +void CmdRouter_Task(void) +{ + uint32_t current_tick = HAL_GetTick(); + + for (port_id_t port_id = 0; port_id < PORT_COUNT; port_id++) { + if (port_id == PORT_UART2) { + continue; + } + + if (g_rx_log_len[port_id] > 0 && + (current_tick - g_rx_log_last_tick[port_id]) >= RX_LOG_TIMEOUT_MS) { + flush_rx_log(port_id); + } + } + + for (port_id_t port_id = 0; port_id < PORT_COUNT; port_id++) { + if (port_id == PORT_UART2) { + continue; + } + + uint16_t rx_count = MultiUART_GetRxCount(port_id); + + if (rx_count == 0) { + continue; + } + + g_current_parsing_port = port_id; + CmdParser_SetSourcePort(port_id); + + uint8_t byte; + while (MultiUART_ReadByte(port_id, &byte) > 0) { + append_rx_log(port_id, byte); + CmdParser_FeedByte(byte, HAL_GetTick()); + g_port_states[port_id].rx_count++; + } + + if (CmdParser_HasCompleteFrame(NULL)) { + flush_rx_log(port_id); + g_processed_count++; + g_port_states[port_id].active = true; + } + } + + CmdParser_Task(); +} + +void CmdRouter_SetResponseHandler(cmd_response_handler_t handler) +{ + g_response_handler = handler; + ROUTER_LOG("Response handler %s", handler ? "set" : "cleared"); +} + +void CmdRouter_SendResponse(port_id_t port, const char *response, uint16_t len) +{ + if (port >= PORT_COUNT || response == NULL || len == 0) { + return; + } + + MultiUART_Send(port, (const uint8_t *)response, len); + g_routed_count++; + + LOG_INFO("ROUTER", "SendResponse[%s]: %.*s", + MultiUART_GetPortName(port), len, response); +} + +void CmdRouter_BroadcastResponse(const char *response, uint16_t len) +{ + if (response == NULL || len == 0) { + return; + } + + for (port_id_t port = 0; port < PORT_COUNT; port++) { + MultiUART_Send(port, (const uint8_t *)response, len); + g_routed_count++; + } + + LOG_INFO("ROUTER", "Broadcast: %.*s", len, response); +} + +uint32_t CmdRouter_GetProcessedCount(void) +{ + return g_processed_count; +} + +uint32_t CmdRouter_GetRoutedCount(void) +{ + return g_routed_count; +} diff --git a/Core/Src/debug_log.c b/Core/Src/debug_log.c new file mode 100644 index 0000000..3307360 --- /dev/null +++ b/Core/Src/debug_log.c @@ -0,0 +1,148 @@ +/** + ****************************************************************************** + * @file debug_log.c + * @brief 增强型调试日志系统实现 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块实现增强型调试日志系统 + * 设计依据:多通信接口统一指令处理系统开发计划 第3.4节 + * + * 日志格式:[LEVEL][MODULE] message + * 示例:[INFO][CMD] Command received: RL + ****************************************************************************** + */ + +#include "debug_log.h" +#include "uart2_print.h" +#include +#include +#include + +#define MAX_MODULES 16 +#define MODULE_NAME_LEN 16 + +typedef struct { + char name[MODULE_NAME_LEN]; + bool enabled; +} module_config_t; + +static log_level_t g_current_level = LOG_LEVEL_DEBUG; +static module_config_t g_modules[MAX_MODULES]; +static bool g_modules_initialized = false; + +static const char *const g_level_str[] = { + [LOG_LEVEL_DEBUG] = "DEBUG", + [LOG_LEVEL_INFO] = "INFO ", + [LOG_LEVEL_WARN] = "WARN ", + [LOG_LEVEL_ERROR] = "ERROR", +}; + +static void init_modules(void) +{ + if (g_modules_initialized) { + return; + } + + for (int i = 0; i < MAX_MODULES; i++) { + g_modules[i].name[0] = '\0'; + g_modules[i].enabled = false; + } + + g_modules_initialized = true; +} + +static bool is_module_enabled(const char *module) +{ + if (module == NULL || module[0] == '\0') { + return true; + } + + init_modules(); + + for (int i = 0; i < MAX_MODULES; i++) { + if (g_modules[i].name[0] != '\0' && + strncmp(g_modules[i].name, module, MODULE_NAME_LEN - 1) == 0) { + return g_modules[i].enabled; + } + } + + return true; +} + +void DebugLog_Init(void) +{ + g_current_level = LOG_LEVEL_DEBUG; + init_modules(); + + UART2_Print_String("[LOG] Debug log system initialized\r\n"); +} + +void DebugLog_SetLevel(log_level_t level) +{ + g_current_level = level; +} + +log_level_t DebugLog_GetLevel(void) +{ + return g_current_level; +} + +void DebugLog_EnableModule(const char *module, bool enable) +{ + if (module == NULL || module[0] == '\0') { + return; + } + + init_modules(); + + for (int i = 0; i < MAX_MODULES; i++) { + if (g_modules[i].name[0] == '\0') { + strncpy(g_modules[i].name, module, MODULE_NAME_LEN - 1); + g_modules[i].name[MODULE_NAME_LEN - 1] = '\0'; + g_modules[i].enabled = enable; + return; + } + + if (strncmp(g_modules[i].name, module, MODULE_NAME_LEN - 1) == 0) { + g_modules[i].enabled = enable; + return; + } + } +} + +void DebugLog_Output(log_level_t level, const char *module, const char *fmt, ...) +{ + if (level < g_current_level) { + return; + } + + if (!is_module_enabled(module)) { + return; + } + + char buffer[256]; + int len = 0; + + len += snprintf(buffer + len, sizeof(buffer) - len, "[%s][%s] ", + g_level_str[level], module ? module : "MAIN"); + + if (len < (int)sizeof(buffer) - 1) { + va_list args; + va_start(args, fmt); + len += vsnprintf(buffer + len, sizeof(buffer) - len, fmt, args); + va_end(args); + } + + if (len > 0 && len < (int)sizeof(buffer)) { + buffer[len++] = '\r'; + if (len < (int)sizeof(buffer)) { + buffer[len++] = '\n'; + } + } + + if (len > 0) { + UART2_Print_Send((const uint8_t *)buffer, len); + } +} diff --git a/Core/Src/io_monitor.c b/Core/Src/io_monitor.c index 4dd3388..6ae6ccf 100644 --- a/Core/Src/io_monitor.c +++ b/Core/Src/io_monitor.c @@ -3,16 +3,17 @@ * @file io_monitor.c * @brief IO状态监控模块实现 * @author Application Layer - * @version 1.1 + * @version 1.2 ****************************************************************************** * @attention * 本模块实现四路数字输入的状态监控 * 关键特性: * 1. 10ms定时扫描,平衡响应速度和CPU占用 * 2. 软件去抖,连续3次相同状态才确认变化 - * 3. 状态变化时自动上报ASCII格式消息 - * + * 3. 状态变化时通过回调函数上报,支持多端口路由 + * * 修订历史: + * v1.2 - 增加事件回调机制,支持多端口路由 * v1.1 - 修复审查报告中危-5:去抖计数器初始化优化 ****************************************************************************** */ @@ -22,23 +23,64 @@ #include "main.h" #include +/*============================================================================== + * 调试宏定义 + *============================================================================*/ +/* DEBUG_IO_MONITOR: 调试日志开关,置1时启用调试输出,置0时禁用 */ #define DEBUG_IO_MONITOR 1 #if DEBUG_IO_MONITOR +/* 调试日志宏,带模块前缀"[IO]"方便在串口调试终端中过滤日志 */ #define DEBUG_LOG(fmt, ...) UART2_Print_Printf("[IO] " fmt "\r\n", ##__VA_ARGS__) #else +/* 禁用调试日志时,将宏定义为空,避免生成无用代码 */ #define DEBUG_LOG(fmt, ...) #endif +/*============================================================================== + * 数据结构定义 + *============================================================================*/ +/** + * @brief IO通道数据结构 + * @note 用于描述一个数字输入通道的完整状态信息 + * + * 设计目的: + * 该结构体封装了监控单个数字输入(DI)通道所需的全部状态信息,包括 + * 硬件连接参数(GPIO端口和引脚)、当前稳定状态、去抖计数器、原始采样状态 + * 以及状态变化统计。这使得多通道扫描逻辑能够以统一的结构处理每个通道。 + * + * 字段说明: + * - port: GPIO端口指针,指向硬件寄存器(如GPIOB) + * - pin: GPIO引脚编号(如GPIO_PIN_4),用于HAL库读取函数 + * - current_state: 经过去抖处理后的稳定状态,0=低电平,1=高电平 + * - debounce_counter: 去抖计数器,累加相同采样值的次数,达到阈值才确认状态变化 + * - last_raw_state: 上一次采样的原始电平状态,用于检测电平变化 + * - change_count: 状态变化总次数统计,用于诊断和监控 + */ typedef struct { - GPIO_TypeDef *port; - uint16_t pin; - uint8_t current_state; - uint8_t debounce_counter; - uint8_t last_raw_state; - uint32_t change_count; + GPIO_TypeDef *port; /**< GPIO端口指针,指向外设寄存器基地址 */ + uint16_t pin; /**< GPIO引脚编号,对应HAL库的引脚定义 */ + uint8_t current_state; /**< 经去抖处理后的稳定状态,0=低电平,1=高电平 */ + uint8_t debounce_counter; /**< 去抖计数器,连续采样到相同值的次数 */ + uint8_t last_raw_state; /**< 上一次采样的原始电平,用于变化检测 */ + uint32_t change_count; /**< 状态变化累计次数,用于性能监控 */ } io_channel_t; +/*============================================================================== + * 全局变量定义 + *============================================================================*/ +/** + * @brief 四路数字输入通道配置表 + * @note 静态初始化表,定义四个监控通道的GPIO硬件连接 + * + * 各通道映射关系: + * - 通道0: GPIOB, GPIO_PIN_4 + * - 通道1: GPIOB, GPIO_PIN_5 + * - 通道2: GPIOB, GPIO_PIN_6 + * - 通道3: GPIOB, GPIO_PIN_7 + * + * 初始化值说明:所有状态和计数器均初始化为0,表示上电初始状态未知 + */ static io_channel_t di_channels[IO_CHANNEL_COUNT] = { {GPIOB, GPIO_PIN_4, 0, 0, 0, 0}, {GPIOB, GPIO_PIN_5, 0, 0, 0, 0}, @@ -46,9 +88,75 @@ static io_channel_t di_channels[IO_CHANNEL_COUNT] = { {GPIOB, GPIO_PIN_7, 0, 0, 0, 0} }; +/** + * @brief 上一次扫描时刻的时间戳 + * @note 用于实现10ms固定间隔扫描,避免每次都执行扫描操作 + * HAL_GetTick()返回系统运行毫秒数 + */ static uint32_t last_scan_tick = 0; + +/** + * @brief 事件上报使能标志 + * @note 置true时允许状态变化自动上报,置false时禁止上报 + * 可用于批量操作时临时抑制不必要的事件通知 + */ static bool report_enabled = true; +/** + * @brief IO事件回调函数指针 + * @note 设置后,IO状态变化将通过回调函数上报 + * 为NULL时使用默认的UART2_Print_String输出 + */ +static io_event_callback_t g_event_callback = NULL; + +/*============================================================================== + * 内部静态函数声明 + *============================================================================*/ +/** + * @brief 计算异或校验和 + * @note 对输入数据的每个字节执行异或运算,生成校验码 + * 用于DI_EVENT消息的校验和计算 + * + * @param data: 待计算校验和的数据缓冲区(输入) + * @param len: 数据长度,以字节为单位(输入) + * @return 校验和: uint8_t类型的异或结果 + * + * 算法原理:遍历数据缓冲区,将每个字节与累加器进行异或操作 + * 初始值为0,最终结果为所有字节的异或和 + */ +static uint8_t calc_checksum(const char *data, uint8_t len); + +/** + * @brief 发送DI状态变化事件 + * @note 构造并发送ASCII格式的状态变化消息至UART2 + * 消息格式: $DI_EVENT,,*\r\n + * + * @param channel: 通道编号,从0开始计数(输入) + * @param state: 通道状态,0=低电平,1=高电平(输入) + * @return 无返回值 + * + * 调用说明: + * - 此函数在状态变化被确认后调用,用于通知上位机或日志系统 + * - 内部会调用calc_checksum计算校验和 + * - 通过UART2_Print_String发送原始字符串 + */ +static void send_di_event(uint8_t channel, uint8_t state); + +/*============================================================================== + * 内部静态函数实现 + *============================================================================*/ +/** + * @brief 计算异或校验和 + * @note 对输入数据的每个字节执行异或运算,生成校验码 + * 用于DI_EVENT消息的校验和计算 + * + * @param data: 待计算校验和的数据缓冲区(输入) + * @param len: 数据长度,以字节为单位(输入) + * @return 校验和: uint8_t类型的异或结果 + * + * 算法原理:遍历数据缓冲区,将每个字节与累加器进行异或操作 + * 初始值为0,最终结果为所有字节的异或和 + */ static uint8_t calc_checksum(const char *data, uint8_t len) { uint8_t cs = 0; @@ -58,63 +166,156 @@ static uint8_t calc_checksum(const char *data, uint8_t len) return cs; } +/** + * @brief 发送DI状态变化事件 + * @note 构造并发送ASCII格式的状态变化消息 + * 消息格式: $DI_EVENT,,*\r\n + * 如果设置了回调函数,则通过回调发送;否则发送到UART2 + * + * @param channel: 通道编号,从0开始计数(输入) + * @param state: 通道状态,0=低电平,1=高电平(输入) + * @return 无返回值 + * + * 调用说明: + * - 此函数在状态变化被确认后调用,用于通知上位机或日志系统 + * - 内部会调用calc_checksum计算校验和 + * - 如果设置了回调函数,则通过回调发送;否则通过UART2_Print_String发送 + */ static void send_di_event(uint8_t channel, uint8_t state) { char msg[32]; uint8_t cs; - + + /* 构造消息主体,channel+1将0-base转换为1-base的用户可见编号 */ int len = snprintf(msg, sizeof(msg), "$DI_EVENT,%d,%d*", channel + 1, state); - + + /* 计算异或校验和,跳过'$'符号只对正文部分计算 */ cs = calc_checksum(msg + 1, len - 1); - + + /* 将校验和追加到消息末尾,格式为两位十六进制数 */ snprintf(msg + len, sizeof(msg) - len, "%02X\r\n", cs); - - UART2_Print_String(msg); - + + /* 根据是否设置回调函数选择发送方式 */ + if (g_event_callback != NULL) { + /* 通过回调函数发送,支持多端口路由 */ + g_event_callback(channel, state, msg); + } else { + /* 默认发送到UART2 */ + UART2_Print_String(msg); + } + + /* 输出调试日志,记录状态变化 */ DEBUG_LOG("CH%d -> %s", channel + 1, state ? "HIGH" : "LOW"); } +/*============================================================================== + * 公共函数实现 + *============================================================================*/ +/** + * @brief IO监控模块初始化 + * @note 在系统启动时调用,初始化所有数字输入通道的默认状态 + * + * @param 无 + * @return 无 + * + * 功能说明: + * 1. 读取各通道GPIO引脚的当前电平状态 + * 2. 初始化去抖计数器为1(已稳定采样一次) + * 3. 重置变化计数器和扫描时间戳 + * 4. 使能事件上报功能 + * + * 初始化策略: + * - 去抖计数器初始化为1而非0,这样首次采样时只需再连续采样2次 + * 即可确认状态,相比初始化为0可加快首次状态确认速度 + */ void IO_Monitor_Init(void) { + /* 遍历所有IO通道进行初始化 */ for (int i = 0; i < IO_CHANNEL_COUNT; i++) { io_channel_t *ch = &di_channels[i]; - + + /* 读取GPIO当前电平,HAL_GPIO_ReadPin返回GPIO_PinState类型 */ ch->current_state = HAL_GPIO_ReadPin(ch->port, ch->pin) ? 1 : 0; + /* 记录原始状态作为上次采样值 */ ch->last_raw_state = ch->current_state; + /* 去抖计数器初始化为1,已完成首次稳定采样 */ ch->debounce_counter = 1; + /* 变化计数清零 */ ch->change_count = 0; } - + + /* 初始化扫描时间戳为0,确保首次扫描立即执行 */ last_scan_tick = 0; + /* 使能自动上报功能 */ report_enabled = true; - + + /* 输出初始化完成日志,显示初始各通道状态掩码 */ DEBUG_LOG("Init OK, initial states: 0x%02X", IO_Monitor_GetAllStates()); } +/** + * @brief IO监控定时任务 + * @note 应在主循环或定时器中断中周期性调用,执行扫描和去抖处理 + * + * @param 无 + * @return 无 + * + * 算法说明 - 软件去抖三段式状态机: + * 阶段1: 采样值与上次相同 -> 计数器累加 + * 阶段2: 采样值与上次不同 -> 重置计数器并更新上次值 + * 阶段3: 计数器达到阈值(IO_DEBOUNCE_COUNT)且与当前稳定状态不同 + * -> 确认状态变化,更新current_state,触发事件上报 + * + * 去抖阈值说明: + * - IO_DEBOUNCE_COUNT通常定义为3,表示连续3次采样相同才确认 + * - 结合IO_SCAN_PERIOD_MS(10ms),去抖确认时间为20-30ms + * - 可有效滤除机械开关的抖动噪声 + */ void IO_Monitor_Task(void) { + /* 获取当前系统时间戳(毫秒) */ uint32_t current_tick = HAL_GetTick(); - + + /*---------------------------------------------------------- + * 扫描周期控制 + * 仅当距上次扫描超过IO_SCAN_PERIOD_MS时才执行新扫描 + * 这种节流机制可避免高频调用时CPU资源浪费 + *----------------------------------------------------------*/ if (current_tick - last_scan_tick < IO_SCAN_PERIOD_MS) { return; } + /* 更新扫描时间戳 */ last_scan_tick = current_tick; - + + /*---------------------------------------------------------- + * 遍历所有通道执行去抖扫描 + *----------------------------------------------------------*/ for (int i = 0; i < IO_CHANNEL_COUNT; i++) { io_channel_t *ch = &di_channels[i]; - + + /* 读取GPIO引脚当前电平,转换为0/1表示 */ uint8_t raw_state = HAL_GPIO_ReadPin(ch->port, ch->pin) ? 1 : 0; - + + /*---------------------------------------------------------- + * 去抖逻辑分支 + *----------------------------------------------------------*/ if (raw_state != ch->last_raw_state) { + /* 分支1: 采样值发生变化 -> 重置去抖计数器 */ ch->debounce_counter = 0; ch->last_raw_state = raw_state; } else { + /* 分支2: 采样值与上次相同 -> 累加去抖计数器 */ if (ch->debounce_counter < IO_DEBOUNCE_COUNT) { ch->debounce_counter++; - } else if (ch->current_state != raw_state) { + } + /* 分支3: 计数器达到阈值且与稳定状态不一致 -> 确认状态变化 */ + else if (ch->current_state != raw_state) { + /* 更新为新确认的稳定状态 */ ch->current_state = raw_state; + /* 增加变化统计计数 */ ch->change_count++; - + + /* 事件上报(已使能情况下) */ if (report_enabled) { send_di_event(i, raw_state); } @@ -123,18 +324,46 @@ void IO_Monitor_Task(void) } } +/** + * @brief 获取指定通道的当前状态 + * @note 返回经过去抖处理后的稳定状态值 + * + * @param channel: 通道编号,从0开始计数(输入) + * @return 通道状态: 0=低电平,1=高电平,通道无效时返回0 + * + * 使用说明: + * - 通道编号超出有效范围(0-3)时静默返回0,不报错 + * - 返回的是已去抖的稳定状态,非原始采样值 + */ uint8_t IO_Monitor_GetState(uint8_t channel) { + /* 参数边界检查,超出范围的通道返回0 */ if (channel >= IO_CHANNEL_COUNT) { return 0; } return di_channels[channel].current_state; } +/** + * @brief 获取所有通道状态的组合掩码 + * @note 将四路通道状态打包为一个字节返回,方便批量读取和显示 + * + * @param 无 + * @return 通道状态掩码: uint8_t类型,每位对应一个通道状态 + * + * 位域定义: + * - bit0: 通道0状态 + * - bit1: 通道1状态 + * - bit2: 通道2状态 + * - bit3: 通道3状态 + * + * 示例:返回0x05(0101b)表示通道0=高、通道1=低、通道2=高、通道3=低 + */ uint8_t IO_Monitor_GetAllStates(void) { uint8_t states = 0; - + + /* 遍历所有通道,将各通道状态按位组合成掩码 */ for (int i = 0; i < IO_CHANNEL_COUNT; i++) { if (di_channels[i].current_state) { states |= (1 << i); @@ -143,16 +372,57 @@ uint8_t IO_Monitor_GetAllStates(void) return states; } +/** + * @brief 设置事件上报使能状态 + * @note 可用于在批量操作或初始化过程中临时抑制事件上报 + * + * @param enable: true=使能上报,false=禁用上报(输入) + * @return 无 + * + * 使用场景: + * - 系统初始化期间不希望产生大量事件,可先禁用再恢复 + * - 批量设置多个通道状态时,可先禁用避免中间状态触发事件 + */ void IO_Monitor_EnableReport(bool enable) { report_enabled = enable; DEBUG_LOG("Report %s", enable ? "enabled" : "disabled"); } +/** + * @brief 获取指定通道的状态变化次数 + * @note 用于诊断和性能监控,统计各通道状态变化频率 + * + * @param channel: 通道编号,从0开始计数(输入) + * @return 变化次数: uint32_t类型,通道无效时返回0 + * + * 使用说明: + * - 变化次数从模块初始化后开始累计 + * - 可用于检测某通道是否频繁触发或存在故障(如开关抖动) + */ uint32_t IO_Monitor_GetChangeCount(uint8_t channel) { + /* 参数边界检查,超出范围返回0 */ if (channel >= IO_CHANNEL_COUNT) { return 0; } return di_channels[channel].change_count; } + +/** + * @brief 设置IO事件回调函数 + * @note 设置后,IO状态变化将通过回调函数上报 + * + * @param callback: 回调函数指针,NULL则使用默认UART2输出(输入) + * @return 无 + * + * 使用说明: + * - 设置回调后,send_di_event()将通过回调发送事件 + * - 传入NULL恢复默认UART2输出方式 + * - 回调函数原型: void callback(uint8_t channel, uint8_t state, const char *event_msg) + */ +void IO_Monitor_SetEventCallback(io_event_callback_t callback) +{ + g_event_callback = callback; + DEBUG_LOG("Event callback %s", callback ? "set" : "cleared"); +} diff --git a/Core/Src/main.c b/Core/Src/main.c index 4ca7d10..454d7ec 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -34,6 +34,11 @@ #include "cmd_parser.h" #include "relay_control.h" +/* 多通信接口统一指令处理系统模块 */ +#include "multi_uart_router.h" +#include "cmd_router.h" +#include "debug_log.h" + #if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) #include "rf433_tx_app.h" #endif @@ -62,6 +67,7 @@ /* USER CODE BEGIN PV */ static uint8_t uart2_rx_byte = 0; +static uint8_t uart3_rx_byte = 0; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ @@ -112,9 +118,17 @@ int main(void) CmdParser_Init(); Relay_Init(); + /* 初始化多通信接口统一指令处理系统 */ + MultiUART_Init(); + CmdRouter_Init(); + DebugLog_Init(); + /* 启动UART2接收中断 */ HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); + /* 启动UART3接收中断 - RS485接口 */ + HAL_UART_Receive_IT(&huart3, &uart3_rx_byte, 1); + /* 初始化RF433模块 - 使用默认配置 */ rf433_init(NULL); @@ -155,6 +169,10 @@ int main(void) IO_Monitor_Task(); CmdParser_Task(); + /* 多通信接口统一指令处理系统任务 */ + MultiUART_Task(); + CmdRouter_Task(); + #if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) /* TX任务 */ rf433_tx_app_task(); @@ -212,7 +230,7 @@ void SystemClock_Config(void) /** * @brief UART接收完成中断回调函数 - * @note 处理UART1(RF433)和UART2(调试口)的接收数据 + * @note 处理UART1(RF433)、UART2(调试口)和UART3(RS485)的接收数据 * @param huart: UART句柄指针 * @retval 无 */ @@ -220,31 +238,56 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart->Instance == USART1) { - /* 调用RF433模块的UART接收回调 */ + /* 先保存接收到的字节,避免被rf433_hal回调覆盖 */ + uint8_t rx_byte = rf433_uart_rx_tmp; + + /* 调用RF433模块的UART接收回调(内部会重启接收) */ rf433_hal_uart_rxcplt_callback(); + + /* 喂入多UART路由器,支持RF433指令接收 */ + MultiUART_FeedByte(PORT_UART1, rx_byte); } else if (huart->Instance == USART2) { - /* 喂入指令解析器 */ + /* 喂入指令解析器 - UART2保持原有处理方式 */ CmdParser_FeedByte(uart2_rx_byte, HAL_GetTick()); + /* 重新启动接收 */ HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); } + else if (huart->Instance == USART3) + { + /* 喂入多UART路由器 - RS485接口 */ + MultiUART_FeedByte(PORT_UART3, uart3_rx_byte); + + /* 重新启动接收 */ + HAL_UART_Receive_IT(&huart3, &uart3_rx_byte, 1); + } } /** * @brief UART发送完成中断回调函数 - * @note 处理UART2发送完成,触发下一次发送 + * @note 处理UART1/UART2/UART3发送完成,触发下一次发送 * @param huart: UART句柄指针 * @retval 无 */ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { - if (huart->Instance == USART2) + if (huart->Instance == USART1) + { + /* 调用多UART路由器的UART1发送完成回调 */ + MultiUART_TxCpltCallback(PORT_UART1); + } + else if (huart->Instance == USART2) { /* 调用UART2打印模块的发送完成回调 */ UART2_Print_TxCpltCallback(); } + else if (huart->Instance == USART3) + { + /* 调用多UART路由器的UART3发送完成回调 */ + MultiUART_TxCpltCallback(PORT_UART3); + } } /* USER CODE END 4 */ diff --git a/Core/Src/multi_uart_router.c b/Core/Src/multi_uart_router.c new file mode 100644 index 0000000..8385c91 --- /dev/null +++ b/Core/Src/multi_uart_router.c @@ -0,0 +1,351 @@ +/** + ****************************************************************************** + * @file multi_uart_router.c + * @brief 多UART统一路由核心模块实现 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块实现多UART端口的统一管理 + * 设计依据:多通信接口统一指令处理系统开发计划 第3.1、3.3、3.5节及附录A + * + * 关键特性: + * 1. 中断+环形缓冲区接收机制 + * 2. 非阻塞发送机制 + * 3. 端口上下文表管理 + * 4. 响应路由表 + ****************************************************************************** + */ + +#include "multi_uart_router.h" +#include "uart2_print.h" +#include +#include +#include + +#define DEBUG_MULTI_UART 1 + +#if DEBUG_MULTI_UART +#define DEBUG_LOG(fmt, ...) UART2_Print_Printf("[MUART] " fmt "\r\n", ##__VA_ARGS__) +#else +#define DEBUG_LOG(fmt, ...) +#endif + +static uart_port_context_t g_port_ctx[PORT_COUNT]; + +static UART_HandleTypeDef *const g_port_uart_map[PORT_COUNT] = { + [PORT_UART1] = &huart1, + [PORT_UART2] = &huart2, + [PORT_UART3] = &huart3, +}; + +static const char *const g_port_name_map[PORT_COUNT] = { + [PORT_UART1] = "UART1", + [PORT_UART2] = "UART2", + [PORT_UART3] = "UART3", +}; + +static void rx_ring_init(uart_rx_ring_t *ring) +{ + ring->head = 0; + ring->tail = 0; + ring->count = 0; + ring->overflow_count = 0; +} + +static void tx_ring_init(uart_tx_ring_t *ring) +{ + ring->head = 0; + ring->tail = 0; + ring->count = 0; + ring->is_sending = false; + ring->overflow_count = 0; +} + +static bool rx_ring_push(uart_rx_ring_t *ring, uint8_t byte) +{ + bool success = true; + + __disable_irq(); + if (ring->count >= UART_RX_BUFFER_SIZE) { + ring->overflow_count++; + success = false; + } else { + ring->buffer[ring->head] = byte; + ring->head = (ring->head + 1) % UART_RX_BUFFER_SIZE; + ring->count++; + } + __enable_irq(); + + return success; +} + +static uint16_t rx_ring_pop(uart_rx_ring_t *ring, uint8_t *byte) +{ + uint16_t result = 0; + + __disable_irq(); + if (ring->count > 0) { + *byte = ring->buffer[ring->tail]; + ring->tail = (ring->tail + 1) % UART_RX_BUFFER_SIZE; + ring->count--; + result = 1; + } + __enable_irq(); + + return result; +} + +static uint16_t tx_ring_push(uart_tx_ring_t *ring, const uint8_t *data, uint16_t len) +{ + uint16_t written = 0; + + __disable_irq(); + for (uint16_t i = 0; i < len; i++) { + if (ring->count >= UART_TX_BUFFER_SIZE) { + ring->overflow_count++; + break; + } + ring->buffer[ring->head] = data[i]; + ring->head = (ring->head + 1) % UART_TX_BUFFER_SIZE; + ring->count++; + written++; + } + __enable_irq(); + + return written; +} + +static void tx_kickoff(port_id_t port_id) +{ + uart_port_context_t *ctx = &g_port_ctx[port_id]; + uart_tx_ring_t *ring = &ctx->tx_ring; + uint8_t byte; + bool has_data = false; + + __disable_irq(); + if (!ring->is_sending && ring->count > 0) { + byte = ring->buffer[ring->tail]; + ring->tail = (ring->tail + 1) % UART_TX_BUFFER_SIZE; + ring->count--; + ring->is_sending = true; + has_data = true; + } + __enable_irq(); + + if (has_data) { + HAL_UART_Transmit_IT(ctx->huart, &byte, 1); + } +} + +void MultiUART_Init(void) +{ + for (port_id_t i = 0; i < PORT_COUNT; i++) { + uart_port_context_t *ctx = &g_port_ctx[i]; + + ctx->huart = g_port_uart_map[i]; + ctx->name = g_port_name_map[i]; + + rx_ring_init(&ctx->rx_ring); + tx_ring_init(&ctx->tx_ring); + + ctx->rx_tmp = 0; + ctx->rx_count = 0; + ctx->tx_count = 0; + ctx->error_count = 0; + ctx->initialized = true; + } + + DEBUG_LOG("Init OK, %d ports configured", PORT_COUNT); +} + +void MultiUART_FeedByte(port_id_t port_id, uint8_t byte) +{ + // DEBUG_LOG("FeedByte: %02X", byte); + if (port_id >= PORT_COUNT) { + return; + } + + uart_port_context_t *ctx = &g_port_ctx[port_id]; + + if (!ctx->initialized) { + return; + } + + if (!rx_ring_push(&ctx->rx_ring, byte)) { + ctx->error_count++; + DEBUG_LOG("%s RX overflow", ctx->name); + } + + ctx->rx_count++; +} + +void MultiUART_Task(void) +{ + for (port_id_t i = 0; i < PORT_COUNT; i++) { + uart_port_context_t *ctx = &g_port_ctx[i]; + + if (!ctx->initialized) { + continue; + } + + if (i == PORT_UART2) { + continue; + } + + tx_kickoff(i); + } +} + +void MultiUART_Send(port_id_t port_id, const uint8_t *data, uint16_t len) +{ + if (port_id >= PORT_COUNT || data == NULL || len == 0) { + return; + } + + if (port_id == PORT_UART2) { + UART2_Print_Send(data, len); + return; + } + + uart_port_context_t *ctx = &g_port_ctx[port_id]; + + if (!ctx->initialized) { + return; + } + + uint16_t written = tx_ring_push(&ctx->tx_ring, data, len); + + if (written > 0) { + ctx->tx_count += written; + tx_kickoff(port_id); + } +} + +void MultiUART_SendString(port_id_t port_id, const char *str) +{ + if (str == NULL) { + return; + } + MultiUART_Send(port_id, (const uint8_t *)str, strlen(str)); +} + +void MultiUART_SendFmt(port_id_t port_id, const char *fmt, ...) +{ + if (fmt == NULL) { + return; + } + + char buffer[128]; + va_list args; + + va_start(args, fmt); + int len = vsnprintf(buffer, sizeof(buffer), fmt, args); + va_end(args); + + if (len > 0) { + if (len >= (int)sizeof(buffer)) { + len = sizeof(buffer) - 1; + } + MultiUART_Send(port_id, (const uint8_t *)buffer, len); + } +} + +void MultiUART_TxCpltCallback(port_id_t port_id) +{ + if (port_id >= PORT_COUNT) { + return; + } + + if (port_id == PORT_UART2) { + UART2_Print_TxCpltCallback(); + return; + } + + uart_port_context_t *ctx = &g_port_ctx[port_id]; + uart_tx_ring_t *ring = &ctx->tx_ring; + uint8_t byte; + bool has_more = false; + + __disable_irq(); + ring->is_sending = false; + + if (ring->count > 0) { + byte = ring->buffer[ring->tail]; + ring->tail = (ring->tail + 1) % UART_TX_BUFFER_SIZE; + ring->count--; + ring->is_sending = true; + has_more = true; + } + __enable_irq(); + + if (has_more) { + HAL_UART_Transmit_IT(ctx->huart, &byte, 1); + } +} + +const char *MultiUART_GetPortName(port_id_t port_id) +{ + if (port_id >= PORT_COUNT) { + return "UNKNOWN"; + } + return g_port_name_map[port_id]; +} + +uint16_t MultiUART_GetRxCount(port_id_t port_id) +{ + if (port_id >= PORT_COUNT) { + return 0; + } + + uint16_t count; + __disable_irq(); + count = g_port_ctx[port_id].rx_ring.count; + __enable_irq(); + return count; +} + +uint16_t MultiUART_ReadByte(port_id_t port_id, uint8_t *byte) +{ + if (port_id >= PORT_COUNT || byte == NULL) { + return 0; + } + + uart_rx_ring_t *ring = &g_port_ctx[port_id].rx_ring; + + __disable_irq(); + if (ring->count == 0) { + __enable_irq(); + return 0; + } + + *byte = ring->buffer[ring->tail]; + ring->tail = (ring->tail + 1) % UART_RX_BUFFER_SIZE; + ring->count--; + __enable_irq(); + + return 1; +} + +uint16_t MultiUART_GetTxAvailable(port_id_t port_id) +{ + if (port_id >= PORT_COUNT) { + return 0; + } + + uint16_t available; + __disable_irq(); + available = UART_TX_BUFFER_SIZE - g_port_ctx[port_id].tx_ring.count; + __enable_irq(); + return available; +} + +uint32_t MultiUART_GetOverflowCount(port_id_t port_id) +{ + if (port_id >= PORT_COUNT) { + return 0; + } + + return g_port_ctx[port_id].rx_ring.overflow_count + + g_port_ctx[port_id].tx_ring.overflow_count; +} diff --git a/Core/Src/relay_control.c b/Core/Src/relay_control.c index 2dcb20f..431d042 100644 --- a/Core/Src/relay_control.c +++ b/Core/Src/relay_control.c @@ -3,17 +3,17 @@ * @file relay_control.c * @brief 继电器控制模块实现 * @author Application Layer - * @version 1.1 + * @version 2.0 ****************************************************************************** * @attention - * 本模块实现继电器的安全控制 + * 本模块实现单路继电器的安全控制 * 关键特性: * 1. 最小切换间隔保护,防止频繁切换损坏继电器 - * 2. 状态记录,支持诊断 + * 2. 状态记录 * 3. 调试日志输出 * * 修订历史: - * v1.1 - 修复审查报告中危-9/10:对齐RELAY_COUNT与参数校验逻辑 + * v2.0 - 精简为单路继电器控制,移除冗余功能 ****************************************************************************** */ @@ -29,74 +29,42 @@ #define DEBUG_LOG(fmt, ...) #endif -#define MAX_RELAY_ID 4 - -static bool current_states[MAX_RELAY_ID] = {false, false, false, false}; +static bool current_state = false; static uint32_t last_toggle_tick = 0; -static uint32_t toggle_count = 0; void Relay_Init(void) { HAL_GPIO_WritePin(RL_Control_GPIO_Port, RL_Control_Pin, GPIO_PIN_RESET); - - for (int i = 0; i < MAX_RELAY_ID; i++) { - current_states[i] = false; - } + current_state = false; last_toggle_tick = 0; - toggle_count = 0; DEBUG_LOG("Init OK, state=OFF"); } -void Relay_SetState(uint8_t relay_id, bool state) +void Relay_SetState(bool state) { - if (relay_id < 1 || relay_id > MAX_RELAY_ID) { - DEBUG_LOG("Invalid relay ID: %d", relay_id); - return; - } - uint32_t current_tick = HAL_GetTick(); + if (current_tick - last_toggle_tick < RELAY_MIN_INTERVAL) { DEBUG_LOG("Toggle too fast, ignored"); return; } - uint8_t idx = relay_id - 1; - - if (current_states[idx] == state) { + if (current_state == state) { DEBUG_LOG("State unchanged: %s", state ? "ON" : "OFF"); return; } - if (relay_id == 1) { - HAL_GPIO_WritePin(RL_Control_GPIO_Port, RL_Control_Pin, - state ? GPIO_PIN_SET : GPIO_PIN_RESET); - } + HAL_GPIO_WritePin(RL_Control_GPIO_Port, RL_Control_Pin, + state ? GPIO_PIN_SET : GPIO_PIN_RESET); - current_states[idx] = state; + current_state = state; last_toggle_tick = current_tick; - toggle_count++; - DEBUG_LOG("Relay %d -> %s (count=%lu)", relay_id, state ? "ON" : "OFF", toggle_count); + DEBUG_LOG("Relay -> %s", state ? "ON" : "OFF"); } -bool Relay_GetState(uint8_t relay_id) +bool Relay_GetState(void) { - if (relay_id < 1 || relay_id > MAX_RELAY_ID) { - return false; - } - return current_states[relay_id - 1]; -} - -void Relay_Toggle(uint8_t relay_id) -{ - if (relay_id < 1 || relay_id > MAX_RELAY_ID) { - return; - } - Relay_SetState(relay_id, !current_states[relay_id - 1]); -} - -uint32_t Relay_GetToggleCount(void) -{ - return toggle_count; + return current_state; } diff --git a/Core/Src/uart2_print.c b/Core/Src/uart2_print.c index 08b8a7d..3f2a2a2 100644 --- a/Core/Src/uart2_print.c +++ b/Core/Src/uart2_print.c @@ -11,7 +11,7 @@ * 1. 环形缓冲区避免数据丢失 * 2. 中断安全,支持ISR中调用 * 3. 非阻塞发送,不影响实时性 - * + * * 修订历史: * v1.1 - 修复审查报告高危-1/2/3,中危-4 ****************************************************************************** @@ -22,95 +22,243 @@ #include #include +/*============================================================================== + * 调试宏定义 + *============================================================================*/ +/* DEBUG_PRINT_ENABLED: 调试日志开关,置1时启用模块自测日志输出 */ #define DEBUG_PRINT_ENABLED 1 #if DEBUG_PRINT_ENABLED +/* 调试日志宏,带模块前缀"[UART2]"方便过滤日志 */ #define DEBUG_LOG(fmt, ...) UART2_Print_Printf("[UART2] " fmt "\r\n", ##__VA_ARGS__) #else +/* 禁用时为空宏,避免无用代码生成 */ #define DEBUG_LOG(fmt, ...) #endif +/*============================================================================== + * 数据结构定义 + *============================================================================*/ +/** + * @brief 环形发送缓冲区数据结构 + * @note 采用Ring Buffer(环形缓冲区)设计,实现FIFO队列管理 + * + * 设计目的: + * 解决UART发送与CPU执行速度不匹配的问题。当UART正在发送数据时, + * 后续数据先存入缓冲区,待发送完成后再取出发送,实现异步非阻塞打印。 + * 环形缓冲区相比线性缓冲区的优势是无需数据搬移,head和tail指针 + * 循环递增,到达末尾后自动回绕到开头。 + * + * 字段说明: + * - buffer: 存放数据的字节数组,大小由UART2_TX_BUFFER_SIZE定义 + * - head: 写入位置指针,指向下一个待写入位置(生产者指针) + * - tail: 读取位置指针,指向下一个待读取位置(消费者指针) + * - count: 当前缓冲区中有效数据字节数 + * - is_sending: 发送忙标志,表示UART硬件是否正在发送数据 + * - overflow_count: 溢出错误计数,缓冲区满时丢弃数据的次数 + * + * 索引计算规则: + * head和tail均采用模运算实现回绕: new_index = (old_index + 1) % buffer_size + * 这确保了指针在达到缓冲区末尾时自动回到开头,形成"环形"效果 + * + * 线程安全说明: + * 所有修改共享资源的代码段均使用__disable_irq/__enable_irq暂时禁用中断, + * 防止在临界区内被ISR打断导致数据竞争(race condition) + */ typedef struct { - uint8_t buffer[UART2_TX_BUFFER_SIZE]; - volatile uint16_t head; - volatile uint16_t tail; - volatile uint16_t count; - volatile bool is_sending; - volatile uint16_t overflow_count; + uint8_t buffer[UART2_TX_BUFFER_SIZE]; /**< 发送数据缓冲区,静态分配避免动态内存 */ + volatile uint16_t head; /**< 写指针,下一个数据写入位置 */ + volatile uint16_t tail; /**< 读指针,下一个数据读取位置 */ + volatile uint16_t count; /**< 缓冲区中有效数据字节计数 */ + volatile bool is_sending; /**< UART发送忙标志,防止重复启动发送 */ + volatile uint16_t overflow_count; /**< 溢出错误计数,统计因缓冲区满丢弃的数据 */ } ring_buffer_t; +/*============================================================================== + * 全局变量定义 + *============================================================================*/ +/** + * @brief 环形发送缓冲区实例 + * @note static修饰确保仅本文件内可访问,初始化为全零 + */ static ring_buffer_t tx_ring = {0}; +/*============================================================================== + * 公共函数实现 + *============================================================================*/ +/** + * @brief UART2打印模块初始化 + * @note 在系统启动或UART外设初始化后调用,重置环形缓冲区状态 + * + * @param 无 + * @return 无 + * + * 功能说明: + * 1. 重置所有指针(head/tail/count)为初始状态 + * 2. 清除发送忙标志 + * 3. 清零溢出错误计数器 + * + * 初始化安全: + * 此函数应在UART硬件初始化完成之后调用,确保huart2已正确配置 + */ void UART2_Print_Init(void) { + /* 重置环形缓冲区各状态变量 */ tx_ring.head = 0; tx_ring.tail = 0; tx_ring.count = 0; tx_ring.is_sending = false; tx_ring.overflow_count = 0; - + + /* 输出模块初始化完成日志 */ DEBUG_LOG("Init OK, buffer size: %d", UART2_TX_BUFFER_SIZE); } +/** + * @brief 发送数据到UART2(核心写入函数) + * @note 将数据写入环形缓冲区,若UART空闲则自动启动首次发送 + * 此函数是线程安全的,可从ISR或主线程调用 + * + * @param data: 待发送数据缓冲区的指针(输入) + * @param len: 待发送数据字节数(输入) + * @return 无返回值 + * + * 算法说明 - 生产者逻辑: + * 1. 遍历待发送数据的每个字节 + * 2. 检查缓冲区是否有空间(count < buffer_size) + * 3. 如有空间,将数据写入buffer[head],head递增并回绕 + * 4. 如缓冲区满,放弃剩余数据并增加overflow_count + * + * 发送触发机制: + * - 如果缓冲区有数据且UART当前空闲(is_sending=false), + * 设置is_sending=true并立即触发首次发送(Kickoff) + * - 后续发送由TxCpltCallback中断回调驱动,形成连续发送直到缓冲区清空 + * + * 中断安全: + * - 使用__disable_irq/__enable_irq保护临界区 + * - 防止在检查count和写入buffer之间被ISR打断 + */ void UART2_Print_Send(const uint8_t *data, uint16_t len) { + /* 参数合法性检查,防止空指针或零长度 */ if (len == 0 || data == NULL) { return; } - + uint16_t written = 0; bool needs_kickoff = false; - + + /*---------------------------------------------------------- + * 临界区:禁用中断,保护共享缓冲区的写入操作 + *----------------------------------------------------------*/ __disable_irq(); for (uint16_t i = 0; i < len; i++) { + /* 检查缓冲区是否有空间 */ if (tx_ring.count >= UART2_TX_BUFFER_SIZE) { + /* 缓冲区已满,丢弃数据并计数 */ tx_ring.overflow_count++; break; } - + + /* 将数据写入环形缓冲区,更新写指针(模缓冲区大小回绕) */ tx_ring.buffer[tx_ring.head] = data[i]; tx_ring.head = (tx_ring.head + 1) % UART2_TX_BUFFER_SIZE; tx_ring.count++; written++; } - + + /*---------------------------------------------------------- + * 判断是否需要触发首次发送 + * 条件:成功写入数据 AND UART当前处于空闲状态 + *----------------------------------------------------------*/ if (written > 0 && !tx_ring.is_sending) { tx_ring.is_sending = true; needs_kickoff = true; } - __enable_irq(); - + __enable_irq(); /* 退出临界区 */ + + /*---------------------------------------------------------- + * 启动首次发送(Kickoff) + * 从缓冲区取出第一个字节通过DMA/中断方式发送 + *----------------------------------------------------------*/ if (needs_kickoff) { uint8_t byte; + /* 再次禁用中断以读取尾指针(消费者操作) */ __disable_irq(); byte = tx_ring.buffer[tx_ring.tail]; __enable_irq(); + /* 启动UART中断发送,发送完成后会触发TxCpltCallback */ HAL_UART_Transmit_IT(&huart2, &byte, 1); } } +/** + * @brief 发送字符串到UART2 + * @note 封装UART2_Print_Send,自动计算字符串长度 + * + * @param str: 待发送的以'\0'结尾的字符串指针(输入) + * @return 无返回值 + * + * 使用说明: + * - str必须为有效指针且以'\0'结尾 + * - strlen计算长度时不包括终止符,所以实际发送的也不包括 + */ void UART2_Print_String(const char *str) { + /* 空指针保护 */ if (str == NULL) { return; } + /* 使用strlen获取字符串长度并发送 */ UART2_Print_Send((const uint8_t *)str, strlen(str)); } +/** + * @brief 格式化打印到UART2 + * @note 仿printf风格,支持可变参数格式化输出 + * + * @param fmt: 格式化字符串,与printf语法兼容(输入) + * @param ...: 可变参数列表,对应格式化字符串中的占位符(输入) + * @return 无返回值 + * + * 实现说明: + * 1. 使用va_list/va_start/va_end处理可变参数 + * 2. vsnprintf将格式化参数写入临时缓冲区(128字节) + * 3. 将格式化后的字符串通过UART2_Print_Send发送 + * + * 缓冲区限制: + * - 最大格式化输出为127字节(128-1留作字符串终止符) + * - 超出部分会被截断,不报错 + * + * 线程安全: + * 此函数本身是中断安全的,但内部调用UART2_Print_Send, + * 多线程并发调用时输出可能交叉 + */ void UART2_Print_Printf(const char *fmt, ...) { + /* 格式化字符串合法性检查 */ if (fmt == NULL) { return; } - - char buffer[128]; - va_list args; - + + char buffer[128]; /* 临时格式化缓冲区,大小固定 */ + va_list args; /* 可变参数列表变量 */ + + /*---------------------------------------------------------- + * 可变参数处理:初始化va_list并执行格式化 + *----------------------------------------------------------*/ va_start(args, fmt); int len = vsnprintf(buffer, sizeof(buffer), fmt, args); va_end(args); - + + /*---------------------------------------------------------- + * 发送格式化后的字符串 + * vsnprintf返回值len: + * - >=0: 成功格式化,需要发送的字符数(不含终止符) + * - <0: 格式化失败,不发送任何数据 + *----------------------------------------------------------*/ if (len >= 0) { + /* 边界检查:若len超过缓冲区实际容量则截断 */ if (len >= (int)sizeof(buffer)) { len = sizeof(buffer) - 1; } @@ -118,51 +266,127 @@ void UART2_Print_Printf(const char *fmt, ...) } } +/** + * @brief UART2打印任务(轮询模式驱动) + * @note 在主循环或定时器中调用,驱动环形缓冲区数据发送 + * 与TxCpltCallback配合形成轮询+中断混合发送模式 + * + * @param 无 + * @return 无 + * + * 工作原理: + * 正常发送流程依赖TxCpltCallback中断回调驱动。但若某些平台 + * 或情况下中断被屏蔽,此函数作为备用发送机制,从缓冲区取出 + * 数据启动新的发送。 + * + * 调用时机: + * 建议在主循环中周期性调用(如每次循环或10ms定时), + * 配合UART空闲中断或DMA完成中断实现高效发送 + * + * 中断安全: + * - 使用__disable_irq/__enable_irq保护临界区 + */ void UART2_Print_Task(void) { uint8_t byte; uint16_t current_tail; - + + /*---------------------------------------------------------- + * 临界区:检查是否可以发送 + *----------------------------------------------------------*/ __disable_irq(); + /* 条件:不正在发送 且 缓冲区有数据 */ if (tx_ring.is_sending || tx_ring.count == 0) { __enable_irq(); - return; + return; /* 条件不满足,不执行发送 */ } - + + /*---------------------------------------------------------- + * 从缓冲区取出数据,更新读指针 + *----------------------------------------------------------*/ current_tail = tx_ring.tail; - tx_ring.tail = (tx_ring.tail + 1) % UART2_TX_BUFFER_SIZE; + tx_ring.tail = (tx_ring.tail + 1) % UART2_TX_BUFFER_SIZE; /* 环形回绕 */ tx_ring.count--; - tx_ring.is_sending = true; + tx_ring.is_sending = true; /* 标记为发送中,防止重复启动 */ byte = tx_ring.buffer[current_tail]; - __enable_irq(); - + __enable_irq(); /* 退出临界区 */ + + /*---------------------------------------------------------- + * 启动UART中断发送 + *----------------------------------------------------------*/ HAL_UART_Transmit_IT(&huart2, &byte, 1); } +/** + * @brief UART发送完成回调函数 + * @note 应在UART TX完成中断中调用,负责驱动环形缓冲区连续发送 + * 此函数是发送流程的核心驱动引擎 + * + * @param 无 + * @return 无 + * + * 工作原理 - 消费者逻辑: + * 1. 清除is_sending标志,表示UART硬件已空闲 + * 2. 检查环形缓冲区是否还有待发送数据 + * 3. 如有,取出下一字节并启动新的发送 + * 4. 重复上述过程直到缓冲区清空 + * + * 中断安全: + * - 使用__disable_irq/__enable_irq保护共享数据访问 + * - 在中断上下文调用,必须确保操作原子性 + * + * 调用约定: + * 此函数需要与HAL库中断处理正确关联,通常在 + * HAL_UART_TxCpltCallback中断回调中调用 + */ void UART2_Print_TxCpltCallback(void) { uint8_t byte; uint16_t current_tail; bool has_more = false; - + + /*---------------------------------------------------------- + * 第一步:标记UART为空闲状态 + *----------------------------------------------------------*/ __disable_irq(); tx_ring.is_sending = false; - + + /*---------------------------------------------------------- + * 第二步:检查缓冲区是否有更多数据待发送 + *----------------------------------------------------------*/ if (tx_ring.count > 0) { + /* 取出下一字节,更新读指针(环形回绕) */ current_tail = tx_ring.tail; tx_ring.tail = (tx_ring.tail + 1) % UART2_TX_BUFFER_SIZE; tx_ring.count--; - tx_ring.is_sending = true; + tx_ring.is_sending = true; /* 立即标记为发送中 */ byte = tx_ring.buffer[current_tail]; - has_more = true; + has_more = true; /* 标记有待发送数据 */ } __enable_irq(); - + + /*---------------------------------------------------------- + * 第三步:如有待发送数据,立即启动下一次发送 + *----------------------------------------------------------*/ if (has_more) { HAL_UART_Transmit_IT(&huart2, &byte, 1); } } +/** + * @brief 查询发送模块忙状态 + * @note 用于判断是否有数据正在发送或缓冲区中是否有待发数据 + * + * @param 无 + * @return bool: true=忙(正在发送或缓冲区有数据),false=空闲 + * + * 使用场景: + * - 在进入低功耗模式前检查是否有数据待发送 + * - 在系统关机前确认所有调试日志已发送完毕 + * + * 中断安全: + * - 使用临界区保护,确保检查到返回之间数据不被修改 + */ bool UART2_Print_IsBusy(void) { bool busy; @@ -172,6 +396,22 @@ bool UART2_Print_IsBusy(void) return busy; } +/** + * @brief 查询发送缓冲区可用空间 + * @note 返回环形缓冲区当前剩余可写入的空间大小 + * + * @param 无 + * @return uint16_t: 可用字节数 + * + * 计算公式:available = buffer_size - count + * + * 使用场景: + * - 在发送大数据块前检查缓冲区是否足够容纳 + * - 实现流量控制逻辑 + * + * 中断安全: + * - 使用临界区保护 + */ uint16_t UART2_Print_Available(void) { uint16_t available; @@ -181,32 +421,64 @@ uint16_t UART2_Print_Available(void) return available; } +/** + * @brief 获取溢出错误计数 + * @note 统计因缓冲区满导致数据丢弃的次数,用于诊断 + * + * @param 无 + * @return uint16_t: 溢出错误累计次数 + * + * 使用说明: + * - 此计数器仅在缓冲区满时递增 + * - 若计数持续增长,说明UART发送速度跟不上数据产生速度 + * - 可通过增大UART2_TX_BUFFER_SIZE或降低打印频率解决 + */ uint16_t UART2_Print_GetOverflowCount(void) { return tx_ring.overflow_count; } +/*============================================================================== + * 标准库printf重定向实现 + *============================================================================*/ /** - * @brief printf重定向函数 (Keil MDK) - * @note 重定向标准库printf到UART2 - * @param ch: 待发送字符 - * @param f: 文件指针(未使用) - * @retval 发送的字符 + * @brief printf重定向函数 (Keil MDK编译器) + * @note 将标准库printf输出重定向到UART2 + * + * @param ch: 待发送字符(输入) + * @param f: 文件指针(未使用,Keil MDK参数要求) + * @return int: 发送的字符 + * + * 编译器条件编译: + * 此函数仅在__CC_ARM(或__ARMCC_VERSION)定义时编译, + * 即Keil MDK-ARM/ARMCC编译器环境下生效 + * + * 实现说明: + * 标准库printf最终会调用fputc输出每个字符, + * 此处重定向到UART2_Print_Send实现串口打印 */ #if defined(__CC_ARM) || defined(__ARMCC_VERSION) int fputc(int ch, FILE *f) { - (void)f; + (void)f; /* 未使用参数,避免编译器警告 */ UART2_Print_Send((uint8_t *)&ch, 1); return ch; } #endif /** - * @brief printf重定向函数 (GCC) - * @note 重定向标准库printf到UART2 - * @param ch: 待发送字符 - * @retval 发送的字符 + * @brief printf重定向函数 (GCC编译器 - 单字符版本) + * @note 将标准库printf输出重定向到UART2 + * + * @param ch: 待发送字符(输入) + * @return int: 发送的字符 + * + * 编译器条件编译: + * 此函数仅在__GNUC__定义时编译,即GCC/Clang编译器环境下生效 + * + * 实现说明: + * 新一代ARM GCC使用__io_putchar作为printf输出目标, + * 此处将其重定向到UART2_Print_Send */ #if defined(__GNUC__) int __io_putchar(int ch) @@ -215,9 +487,22 @@ int __io_putchar(int ch) return ch; } +/** + * @brief write系统调用重定向 (GCC编译器) + * @note 将文件系统write调用重定向到UART2 + * + * @param file: 文件描述符(未使用,仅为兼容标准接口) + * @param ptr: 数据缓冲区指针(输入) + * @param len: 数据长度(输入) + * @return int: 已发送的字节数 + * + * 实现说明: + * 有些GCC配置下printf会调用_write而非__io_putchar, + * 此函数提供完整的write接口兼容 + */ int _write(int file, char *ptr, int len) { - (void)file; + (void)file; /* 忽略文件描述符,只处理标准输出 */ UART2_Print_Send((uint8_t *)ptr, len); return len; } diff --git a/Driver_RF433/Inc/rf433_config.h b/Driver_RF433/Inc/rf433_config.h index ebd84a0..54d1334 100644 --- a/Driver_RF433/Inc/rf433_config.h +++ b/Driver_RF433/Inc/rf433_config.h @@ -28,7 +28,7 @@ extern "C" { #define RF433_MODE_BOTH 3 #ifndef RF433_MODE -#define RF433_MODE RF433_MODE_TX +#define RF433_MODE RF433_MODE_BOTH #endif /* ============================================================================ diff --git a/Driver_RF433/Src/rf433.c b/Driver_RF433/Src/rf433.c index 3fda59c..278a28f 100644 --- a/Driver_RF433/Src/rf433.c +++ b/Driver_RF433/Src/rf433.c @@ -363,7 +363,6 @@ rf433_error_t rf433_transmit(uint8_t *buffer, uint16_t length) { return RF433_ERROR_TIMEOUT; } - printf("Sent: %s", (char*)buffer); // DEBUG_LOG未定义,使用printf替代 return RF433_OK; } diff --git a/MDK-ARM/project.uvguix.xtell b/MDK-ARM/project.uvguix.xtell index a1e3d2f..995b4e4 100644 --- a/MDK-ARM/project.uvguix.xtell +++ b/MDK-ARM/project.uvguix.xtell @@ -110,8 +110,8 @@ 0 - 1379 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000C0000000B000000010000003A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF4A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F636F6E6669672E68000000000E72663433335F636F6E6669672E6800000000FFDC7800FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F72785F6170702E63000000000E72663433335F72785F6170702E6300000000BECEA100FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F74785F6170702E63000000000E72663433335F74785F6170702E6300000000F0A0A100FFFFFFFF3B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C75736172742E63000000000775736172742E6300000000BCA8E100FFFFFFFF48433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E73000000009CC1B600FFFFFFFF5B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C2E63000000000F73746D3332663178785F68616C2E6300000000F7B88600FFFFFFFF3A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000D9ADC200FFFFFFFF60433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E6300000000A5C2D700FFFFFFFF47433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F68616C2E68000000000B72663433335F68616C2E6800000000B3A6BE00FFFFFFFF41433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C75617274325F7072696E742E63000000000D75617274325F7072696E742E6300000000EAD6A300FFFFFFFF43433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C5372635C72663433332E63000000000772663433332E6300000000F6FA7D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000B3020000 + 1513 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000D00000000000000010000003A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF4A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F636F6E6669672E68000000000E72663433335F636F6E6669672E6800000000FFDC7800FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F72785F6170702E63000000000E72663433335F72785F6170702E6300000000BECEA100FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F74785F6170702E63000000000E72663433335F74785F6170702E6300000000F0A0A100FFFFFFFF3B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C75736172742E63000000000775736172742E6300000000BCA8E100FFFFFFFF48433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E73000000009CC1B600FFFFFFFF5B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C2E63000000000F73746D3332663178785F68616C2E6300000000F7B88600FFFFFFFF3A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000D9ADC200FFFFFFFF60433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E6300000000A5C2D700FFFFFFFF47433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F68616C2E68000000000B72663433335F68616C2E6800000000B3A6BE00FFFFFFFF41433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C75617274325F7072696E742E63000000000D75617274325F7072696E742E6300000000EAD6A300FFFFFFFF43433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C5372635C72663433332E63000000000772663433332E6300000000F6FA7D00FFFFFFFF60433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F756172742E63000000001473746D3332663178785F68616C5F756172742E6300000000B5E99D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F400000066000000800700000C030000 @@ -134,7 +134,7 @@ 16 - F40000006600000090050000F6000000 + F200000009010000BA03000099010000 @@ -150,11 +150,11 @@ 0 16 - 0300000066000000ED00000083020000 + 0300000066000000ED000000DC020000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -170,11 +170,11 @@ 0 16 - 0300000066000000ED00000083020000 + 0300000066000000ED000000DC020000 16 - 22000000390000003E01000079020000 + F2000000090100000E02000049030000 @@ -190,11 +190,11 @@ 0 16 - 03000000300200008D050000A4020000 + 000000002D02000090050000BD020000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -210,11 +210,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -230,11 +230,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -250,11 +250,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -270,11 +270,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D05000001010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -294,7 +294,7 @@ 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -314,7 +314,7 @@ 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -330,11 +330,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -350,11 +350,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -370,11 +370,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -390,11 +390,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -410,11 +410,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -430,11 +430,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -450,11 +450,11 @@ 0 16 - 0300000066000000ED00000083020000 + 0300000066000000ED000000DC020000 16 - 22000000390000003E01000079020000 + F2000000090100000E02000049030000 @@ -470,11 +470,11 @@ 0 16 - 0300000066000000ED00000083020000 + 0300000066000000ED000000DC020000 16 - 22000000390000003E01000079020000 + F2000000090100000E02000049030000 @@ -490,11 +490,11 @@ 0 16 - 00000000B402000080070000E6030000 + 000000000D03000080070000E6030000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -514,7 +514,7 @@ 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -530,11 +530,11 @@ 0 16 - 03000000B70200007D070000CD030000 + 03000000100300008D05000070030000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -550,11 +550,11 @@ 0 16 - F7000000660000008D050000C6000000 + F40000006300000090050000DF000000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -574,7 +574,7 @@ 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -610,11 +610,11 @@ 0 16 - A3040000660000008D05000010020000 + A0040000630000009005000029020000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -630,11 +630,11 @@ 0 16 - 03000000300200008D050000A4020000 + 000000002D02000090050000A9020000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -654,7 +654,7 @@ 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -674,7 +674,7 @@ 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -690,11 +690,11 @@ 0 16 - F7000000660000008D050000C6000000 + F40000006300000090050000DF000000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -714,7 +714,7 @@ 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -730,11 +730,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -750,11 +750,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -770,11 +770,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -790,11 +790,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -810,11 +810,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -830,11 +830,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -850,11 +850,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -870,11 +870,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -890,11 +890,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -910,11 +910,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -930,11 +930,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -950,11 +950,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -970,11 +970,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -990,11 +990,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1010,11 +1010,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1030,11 +1030,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1050,11 +1050,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1070,11 +1070,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1090,11 +1090,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1110,11 +1110,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1130,11 +1130,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1150,11 +1150,11 @@ 0 16 - 0300000066000000ED00000083020000 + 0300000066000000ED000000A4020000 16 - 22000000390000003E01000079020000 + F2000000090100000E02000049030000 @@ -1170,11 +1170,11 @@ 0 16 - 03000000B70200007D070000CD030000 + 000000000D0300009005000089030000 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -1190,11 +1190,11 @@ 0 16 - 03000000B70200007D070000CD030000 + 03000000100300008D05000070030000 16 - 22000000390000003E01000079020000 + F2000000090100000E02000049030000 @@ -1210,11 +1210,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1230,11 +1230,11 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1250,11 +1250,11 @@ 0 16 - 03000000B70200007D070000CD030000 + 03000000100300008D05000070030000 16 - 22000000390000003E01000079020000 + F2000000090100000E02000049030000 @@ -1270,11 +1270,11 @@ 0 16 - 03000000B70200007D070000CD030000 + 03000000100300008D05000070030000 16 - 22000000390000003E01000079020000 + F2000000090100000E02000049030000 @@ -1294,7 +1294,7 @@ 16 - 2200000039000000EA020000C9000000 + F200000009010000BA03000099010000 @@ -1310,11 +1310,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1330,11 +1330,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1350,17 +1350,17 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 50003 50003 - 1 + 0 0 0 0 @@ -1370,11 +1370,11 @@ 0 16 - F7000000660000008D05000081000000 + A3040000660000008D0500007C010000 16 - 0A0000000A0000006E0000006E000000 + F200000009010000E2010000D4010000 @@ -1390,11 +1390,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1410,11 +1410,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1430,11 +1430,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1450,11 +1450,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1470,11 +1470,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1490,11 +1490,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1510,11 +1510,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1530,11 +1530,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1550,11 +1550,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1570,11 +1570,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1590,11 +1590,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1610,11 +1610,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1630,11 +1630,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1650,11 +1650,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1670,11 +1670,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1690,11 +1690,11 @@ 0 16 - A3040000660000008D05000010020000 + A3040000660000008D0500007C010000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 @@ -1704,7 +1704,7 @@ 0 0 0 - 966 + 32767 0 8192 0 @@ -1744,7 +1744,7 @@ 0 0 0 - 476 + 32767 0 8192 1 @@ -1764,7 +1764,7 @@ 0 0 0 - 612 + 32767 0 8192 2 @@ -1790,23 +1790,23 @@ 0 16 - 03000000300200008D050000A4020000 + 03000000300200008D05000090020000 16 - 22000000390000001201000004010000 + F200000009010000E2010000D4010000 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000009C020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F0000000B3020000000000004F000000F00000009C0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000009C02000080070000A0020000010000000100001004000000010000008CFDFFFF18010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000B702000080070000FD03000000000000A002000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F200000009010000BA03000099010000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000F200000009010000E2010000D4010000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000F5020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000F200000009010000E2010000D4010000000000004F000000F0000000F50200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000F200000009010000E2010000D4010000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F502000080070000F90200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000F200000009010000BA0300009901000000000000F902000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File 2608 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B6574960000000000000001002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B657400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B6574960000000000000001002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B657400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 1423 @@ -1822,7 +1822,7 @@ Build 974 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000770726F6A656374960000000000000001000770726F6A656374000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000770726F6A656374960000000000000001000770726F6A656374000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 583 @@ -1838,7 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 898 @@ -3603,21 +3603,21 @@ 0 100 - 11 + 0 ../Core/Src/main.c - 29 - 122 - 149 + 0 + 1 + 30 1 0 ..\Driver_RF433\Inc\rf433_config.h - 23 + 16 16 - 39 + 41 1 0 @@ -3625,7 +3625,7 @@ ..\Core\Src\rf433_rx_app.c 0 - 184 + 7 211 1 @@ -3706,12 +3706,21 @@ ..\Driver_RF433\Src\rf433.c 5 - 345 + 326 363 1 0 + + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c + 0 + 1329 + 1344 + 1 + + 0 + diff --git a/MDK-ARM/project.uvoptx b/MDK-ARM/project.uvoptx index 906f41b..1a57d77 100644 --- a/MDK-ARM/project.uvoptx +++ b/MDK-ARM/project.uvoptx @@ -405,6 +405,42 @@ 0 0 + + 2 + 15 + 1 + 0 + 0 + 0 + ..\Core\Src\cmd_router.c + cmd_router.c + 0 + 0 + + + 2 + 16 + 1 + 0 + 0 + 0 + ..\Core\Src\debug_log.c + debug_log.c + 0 + 0 + + + 2 + 17 + 1 + 0 + 0 + 0 + ..\Core\Src\multi_uart_router.c + multi_uart_router.c + 0 + 0 + @@ -415,7 +451,7 @@ 0 3 - 15 + 18 1 0 0 @@ -427,7 +463,7 @@ 3 - 16 + 19 1 0 0 @@ -439,7 +475,7 @@ 3 - 17 + 20 1 0 0 @@ -451,7 +487,7 @@ 3 - 18 + 21 1 0 0 @@ -463,7 +499,7 @@ 3 - 19 + 22 1 0 0 @@ -475,7 +511,7 @@ 3 - 20 + 23 1 0 0 @@ -487,7 +523,7 @@ 3 - 21 + 24 1 0 0 @@ -499,7 +535,7 @@ 3 - 22 + 25 1 0 0 @@ -511,7 +547,7 @@ 3 - 23 + 26 1 0 0 @@ -523,7 +559,7 @@ 3 - 24 + 27 1 0 0 @@ -535,7 +571,7 @@ 3 - 25 + 28 1 0 0 @@ -547,7 +583,7 @@ 3 - 26 + 29 1 0 0 @@ -559,7 +595,7 @@ 3 - 27 + 30 1 0 0 @@ -571,7 +607,7 @@ 3 - 28 + 31 1 0 0 @@ -583,7 +619,7 @@ 3 - 29 + 32 1 0 0 @@ -603,7 +639,7 @@ 0 4 - 30 + 33 1 0 0 @@ -623,7 +659,7 @@ 0 5 - 31 + 34 1 0 0 @@ -635,7 +671,7 @@ 5 - 32 + 35 1 0 0 @@ -647,7 +683,7 @@ 5 - 33 + 36 5 0 0 @@ -659,7 +695,7 @@ 5 - 34 + 37 5 0 0 @@ -671,7 +707,7 @@ 5 - 35 + 38 5 0 0 diff --git a/MDK-ARM/project.uvprojx b/MDK-ARM/project.uvprojx index 966f3c7..6dd1de9 100644 --- a/MDK-ARM/project.uvprojx +++ b/MDK-ARM/project.uvprojx @@ -510,6 +510,21 @@ 1 ..\Core\Src\uart2_print.c + + cmd_router.c + 1 + ..\Core\Src\cmd_router.c + + + debug_log.c + 1 + ..\Core\Src\debug_log.c + + + multi_uart_router.c + 1 + ..\Core\Src\multi_uart_router.c + diff --git a/MDK-ARM/project/cmd_parser.crf b/MDK-ARM/project/cmd_parser.crf index e4e91bb..b9ad255 100644 Binary files a/MDK-ARM/project/cmd_parser.crf and b/MDK-ARM/project/cmd_parser.crf differ diff --git a/MDK-ARM/project/cmd_parser.o b/MDK-ARM/project/cmd_parser.o index b891226..904cc88 100644 Binary files a/MDK-ARM/project/cmd_parser.o and b/MDK-ARM/project/cmd_parser.o differ diff --git a/MDK-ARM/project/cmd_router.crf b/MDK-ARM/project/cmd_router.crf new file mode 100644 index 0000000..6b1b1b7 Binary files /dev/null and b/MDK-ARM/project/cmd_router.crf differ diff --git a/MDK-ARM/project/cmd_router.d b/MDK-ARM/project/cmd_router.d new file mode 100644 index 0000000..5e32650 --- /dev/null +++ b/MDK-ARM/project/cmd_router.d @@ -0,0 +1,39 @@ +project\cmd_router.o: ..\Core\Src\cmd_router.c +project\cmd_router.o: ../Core/Inc/cmd_router.h +project\cmd_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\cmd_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\cmd_router.o: ../Core/Inc/multi_uart_router.h +project\cmd_router.o: ../Core/Inc/usart.h +project\cmd_router.o: ../Core/Inc/main.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\cmd_router.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\cmd_router.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\cmd_router.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\cmd_router.o: ../Drivers/CMSIS/Include/core_cm3.h +project\cmd_router.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\cmd_router.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\cmd_router.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\cmd_router.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\cmd_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h +project\cmd_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\cmd_router.o: ../Core/Inc/cmd_parser.h +project\cmd_router.o: ../Core/Inc/uart2_print.h +project\cmd_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +project\cmd_router.o: ../Core/Inc/debug_log.h +project\cmd_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h diff --git a/MDK-ARM/project/cmd_router.o b/MDK-ARM/project/cmd_router.o new file mode 100644 index 0000000..acaa336 Binary files /dev/null and b/MDK-ARM/project/cmd_router.o differ diff --git a/MDK-ARM/project/debug_log.crf b/MDK-ARM/project/debug_log.crf new file mode 100644 index 0000000..c3b6aa9 Binary files /dev/null and b/MDK-ARM/project/debug_log.crf differ diff --git a/MDK-ARM/project/debug_log.d b/MDK-ARM/project/debug_log.d new file mode 100644 index 0000000..1d0f143 --- /dev/null +++ b/MDK-ARM/project/debug_log.d @@ -0,0 +1,8 @@ +project\debug_log.o: ..\Core\Src\debug_log.c +project\debug_log.o: ../Core/Inc/debug_log.h +project\debug_log.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\debug_log.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\debug_log.o: ../Core/Inc/uart2_print.h +project\debug_log.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +project\debug_log.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +project\debug_log.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/debug_log.o b/MDK-ARM/project/debug_log.o new file mode 100644 index 0000000..54cfead Binary files /dev/null and b/MDK-ARM/project/debug_log.o differ diff --git a/MDK-ARM/project/gpio.o b/MDK-ARM/project/gpio.o index 87163d4..85c54d8 100644 Binary files a/MDK-ARM/project/gpio.o and b/MDK-ARM/project/gpio.o differ diff --git a/MDK-ARM/project/io_monitor.crf b/MDK-ARM/project/io_monitor.crf index 6d97bee..ecdc8c3 100644 Binary files a/MDK-ARM/project/io_monitor.crf and b/MDK-ARM/project/io_monitor.crf differ diff --git a/MDK-ARM/project/io_monitor.o b/MDK-ARM/project/io_monitor.o index 303e5bf..3631b20 100644 Binary files a/MDK-ARM/project/io_monitor.o and b/MDK-ARM/project/io_monitor.o differ diff --git a/MDK-ARM/project/main.crf b/MDK-ARM/project/main.crf index 3b6db2f..8655cf9 100644 Binary files a/MDK-ARM/project/main.crf and b/MDK-ARM/project/main.crf differ diff --git a/MDK-ARM/project/main.d b/MDK-ARM/project/main.d index 01856e0..0543785 100644 --- a/MDK-ARM/project/main.d +++ b/MDK-ARM/project/main.d @@ -40,4 +40,8 @@ project\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h project\main.o: ../Core/Inc/io_monitor.h project\main.o: ../Core/Inc/cmd_parser.h project\main.o: ../Core/Inc/relay_control.h +project\main.o: ../Core/Inc/multi_uart_router.h +project\main.o: ../Core/Inc/cmd_router.h +project\main.o: ../Core/Inc/debug_log.h project\main.o: ../Core/Inc/rf433_tx_app.h +project\main.o: ../Core/Inc/rf433_rx_app.h diff --git a/MDK-ARM/project/main.o b/MDK-ARM/project/main.o index 8a4653e..a4e584d 100644 Binary files a/MDK-ARM/project/main.o and b/MDK-ARM/project/main.o differ diff --git a/MDK-ARM/project/multi_uart_router.crf b/MDK-ARM/project/multi_uart_router.crf new file mode 100644 index 0000000..47ef750 Binary files /dev/null and b/MDK-ARM/project/multi_uart_router.crf differ diff --git a/MDK-ARM/project/multi_uart_router.d b/MDK-ARM/project/multi_uart_router.d new file mode 100644 index 0000000..725332f --- /dev/null +++ b/MDK-ARM/project/multi_uart_router.d @@ -0,0 +1,36 @@ +project\multi_uart_router.o: ..\Core\Src\multi_uart_router.c +project\multi_uart_router.o: ../Core/Inc/multi_uart_router.h +project\multi_uart_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\multi_uart_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\multi_uart_router.o: ../Core/Inc/usart.h +project\multi_uart_router.o: ../Core/Inc/main.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\multi_uart_router.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\multi_uart_router.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\multi_uart_router.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\multi_uart_router.o: ../Drivers/CMSIS/Include/core_cm3.h +project\multi_uart_router.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\multi_uart_router.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\multi_uart_router.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\multi_uart_router.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\multi_uart_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h +project\multi_uart_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\multi_uart_router.o: ../Core/Inc/uart2_print.h +project\multi_uart_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +project\multi_uart_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h diff --git a/MDK-ARM/project/multi_uart_router.o b/MDK-ARM/project/multi_uart_router.o new file mode 100644 index 0000000..532b6bb Binary files /dev/null and b/MDK-ARM/project/multi_uart_router.o differ diff --git a/MDK-ARM/project/project.axf b/MDK-ARM/project/project.axf index d596b33..a3f5ffd 100644 Binary files a/MDK-ARM/project/project.axf and b/MDK-ARM/project/project.axf differ diff --git a/MDK-ARM/project/project.build_log.htm b/MDK-ARM/project/project.build_log.htm index 296b5b3..e955428 100644 --- a/MDK-ARM/project/project.build_log.htm +++ b/MDK-ARM/project/project.build_log.htm @@ -22,40 +22,68 @@ Dialog DLL: TCM.DLL V1.56.6.0

Project:

C:\workfile\E32-433\software\E32-433TBH-SC\MDK-ARM\project.uvprojx -Project File Date: 03/26/2026 +Project File Date: 03/27/2026

Output:

*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Rebuild target 'project' assembling startup_stm32f103xb.s... -compiling rf433_rx_app.c... -compiling main.c... -compiling spi.c... compiling gpio.c... -compiling cmd_parser.c... -compiling systick.c... -compiling stm32f1xx_it.c... -compiling usart.c... compiling rf433_tx_app.c... ..\Core\Src\rf433_tx_app.c(28): warning: #188-D: enumerated type mixed with another type static rf433_tx_app_t g_tx_app = {0}; ..\Core\Src\rf433_tx_app.c: 1 warning, 0 errors -compiling stm32f1xx_hal_gpio_ex.c... -compiling relay_control.c... -compiling stm32f1xx_hal_msp.c... -compiling io_monitor.c... -compiling stm32f1xx_hal.c... +compiling rf433_rx_app.c... +..\Core\Src\rf433_rx_app.c(23): warning: #188-D: enumerated type mixed with another type + static rf433_rx_app_t g_rx_app = {0}; +..\Core\Src\rf433_rx_app.c: 1 warning, 0 errors +compiling cmd_parser.c... +compiling main.c... +compiling spi.c... +compiling usart.c... +compiling systick.c... +compiling debug_log.c... +compiling stm32f1xx_it.c... compiling uart2_print.c... -compiling stm32f1xx_hal_spi.c... -compiling stm32f1xx_hal_pwr.c... +compiling cmd_router.c... +..\Core\Src\cmd_router.c(115): warning: #188-D: enumerated type mixed with another type + for (port_id_t i = 0; i < PORT_COUNT; i++) { +..\Core\Src\cmd_router.c(139): warning: #188-D: enumerated type mixed with another type + for (port_id_t port_id = 0; port_id < PORT_COUNT; port_id++) { +..\Core\Src\cmd_router.c(150): warning: #188-D: enumerated type mixed with another type + for (port_id_t port_id = 0; port_id < PORT_COUNT; port_id++) { +..\Core\Src\cmd_router.c(206): warning: #188-D: enumerated type mixed with another type + for (port_id_t port = 0; port < PORT_COUNT; port++) { +..\Core\Src\cmd_router.c(56): warning: #550-D: variable "g_current_parsing_port" was set but never used + static uint8_t g_current_parsing_port = PORT_UART2; +..\Core\Src\cmd_router.c: 5 warnings, 0 errors +compiling io_monitor.c... +compiling multi_uart_router.c... +..\Core\Src\multi_uart_router.c(143): warning: #188-D: enumerated type mixed with another type + for (port_id_t i = 0; i < PORT_COUNT; i++) { +..\Core\Src\multi_uart_router.c(185): warning: #188-D: enumerated type mixed with another type + for (port_id_t i = 0; i < PORT_COUNT; i++) { +..\Core\Src\multi_uart_router.c(83): warning: #177-D: function "rx_ring_pop" was declared but never referenced + static uint16_t rx_ring_pop(uart_rx_ring_t *ring, uint8_t *byte) +..\Core\Src\multi_uart_router.c: 3 warnings, 0 errors +compiling stm32f1xx_hal_msp.c... +compiling relay_control.c... +compiling stm32f1xx_hal_gpio_ex.c... compiling stm32f1xx_hal_cortex.c... -compiling stm32f1xx_hal_gpio.c... -compiling stm32f1xx_hal_rcc.c... -compiling stm32f1xx_hal_flash.c... +compiling stm32f1xx_hal_spi.c... compiling stm32f1xx_hal_rcc_ex.c... compiling stm32f1xx_hal_dma.c... +compiling stm32f1xx_hal_gpio.c... +compiling stm32f1xx_hal.c... +compiling stm32f1xx_hal_rcc.c... +compiling stm32f1xx_hal_pwr.c... +compiling stm32f1xx_hal_exti.c... compiling stm32f1xx_hal_tim.c... +compiling stm32f1xx_hal_tim_ex.c... compiling stm32f1xx_hal_flash_ex.c... +compiling stm32f1xx_hal_flash.c... +compiling stm32f1xx_hal_uart.c... +compiling system_stm32f1xx.c... compiling rf433.c... ..\Driver_RF433\Src\rf433.c(209): warning: #188-D: enumerated type mixed with another type ret = rf433_set_config(&rf433_current_config); @@ -66,15 +94,11 @@ compiling rf433.c... ..\Driver_RF433\Src\rf433.c(132): warning: #177-D: function "rf433_response_command_check" was declared but never referenced static bool rf433_response_command_check(rf433_request_cmd_t cmd, uint8_t *buffer, uint8_t length) ..\Driver_RF433\Src\rf433.c: 4 warnings, 0 errors -compiling stm32f1xx_hal_exti.c... -compiling system_stm32f1xx.c... -compiling stm32f1xx_hal_tim_ex.c... -compiling stm32f1xx_hal_uart.c... compiling rf433_hal.c... linking... -Program Size: Code=16622 RO-data=478 RW-data=152 ZI-data=3768 +Program Size: Code=21112 RO-data=572 RW-data=192 ZI-data=5808 FromELF: creating hex file... -"project\project.axf" - 0 Error(s), 5 Warning(s). +"project\project.axf" - 0 Error(s), 14 Warning(s).

Software Packages used:

@@ -98,7 +122,7 @@ Package Vendor: Keil * Component: ARM::CMSIS:CORE@6.1.1 Include file: CMSIS/Core/Include/tz_context.h -Build Time Elapsed: 00:00:20 +Build Time Elapsed: 00:00:16 diff --git a/MDK-ARM/project/project.hex b/MDK-ARM/project/project.hex index faf6a4d..b2b5ac2 100644 --- a/MDK-ARM/project/project.hex +++ b/MDK-ARM/project/project.hex @@ -1,8 +1,8 @@ :020000040800F2 -:10000000500F002005010008892300083D2000084A -:100010008523000803080008F52B000800000000F5 -:10002000000000000000000000000000492500085A -:10003000890B0008000000008D2300084B250008F4 +:100000007017002005010008D92E0008C528000837 +:100010000D2C0008750D0008D13600080000000006 +:100020000000000000000000000000002530000873 +:10003000B113000800000000DD2E00082730000882 :100040001F0100081F0100081F0100081F01000810 :100050001F0100081F0100081F0100081F01000800 :100060001F0100081F0100081F0100081F010008F0 @@ -12,1071 +12,1360 @@ :1000A0001F0100081F0100081F0100081F010008B0 :1000B0001F0100081F0100081F0100081F010008A0 :1000C0001F0100081F0100081F0100081F01000890 -:1000D0001F010008C52B0008D52B0008E52B0008E0 +:1000D0001F010008A1360008B1360008C13600082B :1000E0001F0100081F0100081F010008DFF810D0E1 -:1000F00000F09AFA00480047CD360008AFF30080C0 -:10010000500F00200648804706480047FEE7FEE7FC +:1000F00000F0C8FB00480047E1430008AFF3008070 +:10010000701700200648804706480047FEE7FEE7D4 :10011000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B7 -:10012000BD250008ED000008202A04DB203A21FA52 +:1001200099300008ED000008202A04DB203A21FA6B :1001300002F00021704721FA02F3D040C2F1200200 -:10014000914008431946704700487047A84200088C -:10015000D2B201E000F8012B491EFBD27047002209 -:10016000F6E710B513460A4604461946FFF7F0FFB6 -:10017000204610BD421C10F8011B0029FBD1801A3B -:10018000704710B5002200E0521C835C8C5CA342D7 -:1001900001D1002BF8D1D8B2E1B2401A10BD70B530 -:1001A000064602F089FD046805460A220021304611 -:1001B00000F049F82C6070BD30B50B4601460020B8 -:1001C0002022012409E021FA02F59D4205D303FA19 -:1001D00002F5491B04FA02F52844151EA2F101029A -:1001E000F1DC30BD2DE9F05F0546002092469B46CC -:1001F00088460646814640241BE02846414647463D -:100200002246FFF791FF53465A46C01A914110D338 -:1002100011461846224600F019FA2D1A67EB01081C -:100220004F4622460120002100F010FA17EB00098A -:100230004E41201EA4F10104DFDC484631462A4627 -:100240004346BDE8F09F2DE9F04791460F468046B2 -:100250000446002614F8015B2DB1FFF775FF006816 -:10026000405DC007F6D12B2D02D02D2D18D0641E75 -:100270004A463946204600F00AFA27B13968A142B9 -:1002800001D1C7F8008071054FF002040BD5404240 -:10029000002803DD02F010FD0460A007BDE8F08730 -:1002A00046F48066E4E70028F8DA02F005FD046011 -:1002B0006FF00040F2E72DE9FE4F804681EA03002F -:1002C000C00F0C46009021F0004123F00045B8EB30 -:1002D0000200A94105D24046214690461C460B46E5 -:1002E000024623F00040104347D0270DC7F30A0011 -:1002F000C3F30A510290401A019040286BDAC3F30D -:10030000130040F4801B0098924620B10023D2EBEA -:10031000030A63EB0B0B01985946C0F140025046AB -:1003200000F094F906460D4650465946019A00F0F1 -:100330009CF910EB08006141002487EA115284EA1D -:10034000E7731A4340D0009A62B3019A012A4FEA38 -:10035000075215DC001B61EB02014FF0004202EA7C -:100360000752CDE90042001C41F5801132462B4670 -:1003700000F0EBF903B0BDE8F08F40462146F9E705 -:10038000001B61EB0201001C41F5801300185B416A -:100390002018A2F5001747EB030140EAD570B61903 -:1003A0006D4111E06D084FEA360645EAC0754FEA27 -:1003B0000752001B61EB0201001C41F58011490846 -:1003C0004FEA30000019514132462B4603B0BDE8D8 -:1003D000F04F00F0ABB90098012240000023D0EBB1 -:1003E000020263EBE073009821464FEAE074B8EB39 -:1003F000000061EB0401E9E783F000435BE781F073 -:10040000004158E72DE9FE4F81EA030404F000445F -:1004100021F0004100944FF0000B23F0004350EA1C -:1004200001045ED052EA03045BD0C3F30A54C1F363 -:100430000A552C44A4F2F3340194A0FB0254C1F3F6 -:10044000130141F48011C3F3130343F4801301FB40 -:10045000024400FB034E840A970A44EA815447EAA7 -:100460008357A4FB076802958D0A05FB07854FEAB1 -:10047000932C04FB0C542705029D4FEA065847EACB -:100480001637B5EB08056EEB070C870E920E47EAA0 -:10049000811742EA8312A7FB0201B6EB0B0164EB62 -:1004A00000042B0D43EA0C335E1844EB1C50DA4673 -:1004B0005146E7FB0201C5F313044FEA0B3343EA4D -:1004C00014534FEA0432019C43EA0603A4F10C04DE -:1004D0000294009CCDE900B400F037F903B0BDE808 -:1004E000F08F00200146F9E72DE9F04D81EA030481 -:1004F00004F0004B21F0004514464FF0000A23F0B1 -:10050000004150EA050220D054EA01021DD0C5F393 -:100510000A570246C5F31303C1F31300C1F30A5689 -:1005200040F4801543F48013A7EB0608101BD64651 -:1005300008F2FD3873EB050002D308F1010801E071 -:1005400092185B41B8F1000F03DA00200146BDE8C4 -:10055000F08D00204FF48011064684460EE0171BF4 -:1005600073EB050705D3121B63EB050306434CEA47 -:10057000010C49084FEA300092185B4150EA01072C -:10058000EDD152EA030012D082EA040083EA0501A9 -:10059000084305D0101BAB4106D20122002306E020 -:1005A00000224FF0004302E06FF0010253101AEBFB -:1005B00006004CEB085110EB0A0041EB0B01BDE8C3 -:1005C000F04D00F0B3B8C1F30A52C1F3130140F289 -:1005D000FF3341F480119A4202DA0020014670474D -:1005E00040F233439A42A2F2334202DC5242FFF716 -:1005F0009BBD00F02BB8000030B5041E71F1000463 -:1006000004DB4FF00044404264EB0101141E73F11F -:10061000000405DB1C464FF00043524263EB040329 -:10062000994208BF904230BD064C074D06E0E06895 -:1006300040F0010394E8070098471034AC42F6D329 -:10064000FFF758FDAC420008CC420008202A04DB2A -:10065000203A00FA02F1002070479140C2F12003D5 -:1006600020FA03F3194390407047202A06DBCB178A -:10067000203A41FA02F043EAE07306E041FA02F35D -:10068000D040C2F1200291400843194670472DE93D -:10069000F05F82460078002715468B460AF1010478 -:1006A000B946302801D09DB113E014F8010B0127A1 -:1006B000782803D0582801D045B10AE00DB1102D9B -:1006C00007D10027102514F8010B02E0082500E0EF -:1006D0000A250026B0460EE005FB080005FB06F1E2 -:1006E000012701EB10461FFA80F8B6F5803F00D3D2 -:1006F000B94614F8010B294600F075F80028EBDA2A -:10070000BBF1000F05D00FB1641E00E05446CBF8DA -:100710000040B9F1000F06D002F0CEFA02210160CC -:10072000C81EBDE8F09F48EA0640FAE710B5141E5F -:1007300073F1000408DA401C41F1000192185B419A -:100740001A4301D120F0010010BD2DE9F04D924671 -:100750009B4611B1B1FA81F202E0B0FA80F2203288 -:100760009046FFF773FF04460F4640EA0A0041EA4D -:100770000B0153465A46084313D0114653EA010071 -:1007800019D0C8F140025046FFF7CEFC05460E4690 -:10079000504659464246FFF759FF084305D001200D -:1007A00004E020463946BDE8F08D0020054346EAC6 -:1007B000E0762C4337430A986305E40AA0EB08006F -:1007C0000022FD0A44EA47540A3002D500200146BF -:1007D000E9E7010510196941DDE90845001969419A -:1007E000BDE8F04DA2E73A2800D2303820F02002D0 -:1007F000412A01D3A2F13700884201D34FF0FF30E4 -:10080000704700BFFEE7000070B504460D46B548CE -:100810000078C8B1B3480078052815D0B148406DBC -:10082000281AB0F57A7F0FD3AE48806D401CAD49D1 -:100830008865ADA001F0ECFE03F094F9242C02D100 -:100840000120A849087070BDA648456500780628B3 -:100850000BD2DFE800F0030B57A4E2F9242C04D1FB -:1008600003F080F901209F49087037E12C2C0CD14E -:1008700000219C4890F84D20401C81540220994949 -:100880000870002081F84D003BE02A2C0ED1002199 -:10089000944890F84D20401C8154042091490870E0 -:1008A000002081F84D0081F851002AE0204602F036 -:1008B000E6FEF8B18B4890F84D00072812DA894817 -:1008C00090F84D1090F84D00401C864A82F84D007B -:1008D000501C4454401E90F84E006040114681F870 -:1008E0004E000EE07F48806D401C7E49886503F015 -:1008F00039F906E07B48806D401C7A49886503F031 -:1009000031F9EBE02C2C0CD10021764890F84D20E9 -:1009100009308154032073490870002081F84D008C -:100920003CE02A2C0ED100216E4890F84D20093071 -:10093000815404206B490870002081F84D0081F833 -:1009400051002BE0204602F0ADFE00B3654890F860 -:100950004D001F2813DA634890F84D1090F84D00B1 -:10096000401C604A82F84D0002F1090044540938E5 -:1009700090F84E006040114681F84E000EE0594854 -:10098000806D401C5749886503F0ECF806E0554837 -:10099000806D401C5349886503F0E4F89EE02A2CE2 -:1009A0000ED100214F4890F84D2029308154042069 -:1009B0004C490870002081F84D0081F851002BE06F -:1009C000204602F06FFE00B3464890F84D001F2805 -:1009D00013DA444890F84D1090F84D00401C414AFD -:1009E00082F84D0002F129004454293890F84E0055 -:1009F0006040114681F84E000EE03A48806D401C80 -:100A00003849886503F0AEF806E03648806D401C32 -:100A10003449886503F0A6F860E00A2C42D1314AD7 -:100A200092F8501092F84F0002F0FBFD2D4981F82A -:100A30004900084690F84E1080F84A1090F8490096 -:100A4000FF2802D1012101E040E00021254880F883 -:100A50004C1090F84C0030B9224890F8491090F8AA -:100A60004A0081420BD101211E4880F84B1005201D -:100A70001C4908700846C06D401CC86525E019482F -:100A8000806D401C17498865084690F84A2090F808 -:100A900049101DA001F0BCFD26A003F011FB03F0DE -:100AA00061F812E00D2C10D00E4890F85100022889 -:100AB0000BDA0C4890F8511090F85100401C094A8C -:100AC00082F8510002F14F00445407E003F04AF865 -:100AD000242C02D101200349087000BF00BF00BFD1 -:100AE000B1E60000E40100205B434D445D20546901 -:100AF0006D656F75742C20726573657420706172FA -:100B00007365720D0A0000005B434D445D2043682D -:100B100065636B73756D206572726F723A207265D2 -:100B200063763D253032582063616C633D25303259 -:100B3000580D0A004353000010B560210448FFF728 -:100B40000EFB00200249087002A001F061FD10BDFB -:100B5000E40100205B434D445D20496E6974204FE1 -:100B60004B0D0A0010B507480078052809D1054843 -:100B700090F84B0028B10348401C02F047FE02F0F9 -:100B8000F1FF10BDE4010020704772B600BFFEE720 -:100B90000146002291F82100022808D00420886331 -:100BA00000BF002081F8200000BF012070470868C6 -:100BB000006820F00E000B6818600868006820F0DC -:100BC00001000B68186091F8403001209840CB6B11 -:100BD0005860012081F8210000BF002081F820002A -:100BE00000BF1046E2E7000070B50446002594F807 -:100BF0002100022803D00420A063012548E02068DA -:100C0000006820F00E00216808602068006820F06D -:100C10000100216808601F492068884201D1012035 -:100C200026E01C4914312068884201D110201FE0C1 -:100C3000184928312068884201D1801518E01549EB -:100C40003C312068884201D1801411E011495031B3 -:100C50002068884202D14FF4803009E00D496431A8 -:100C60002068884202D14FF4801001E04FF080707C -:100C7000084908394860012084F8210000BF00209D -:100C800084F8200000BF606B10B12046616B88477C -:100C9000284670BD0800024070B5044600F0AEF969 -:100CA00006462546681C10B104480078054400BF7C -:100CB00000F0A4F9801BA842FAD370BD64000020A4 -:100CC0002DE9F8470346002294466EE14FF00108F3 -:100CD00008FA02F4D1F8008008EA0400A0427DD1AD -:100CE000DFF8DCA2D1F80480A8EB0A09D0453AD09D -:100CF00014DCB8F1030F50D009DCB8F1000F31D08B -:100D0000B8F1010F1CD0B8F1020F49D120E0B8F1C1 -:100D1000110F18D0B8F1120F42D11EE0B9F5881F9B -:100D200025D006DCB9F5803F20D0B9F5801F37D13A -:100D30001AE0B9F5001F18D0B9F5041F30D117E03B -:100D4000D1F80CC02DE0D1F80C8008F1040C28E09B -:100D5000D1F80C8008F1080C23E0D1F80C8008F1E0 -:100D60000C0C1EE000BF00BF00BF00BF00BF00BFF3 -:100D7000D1F80880B8F1000F02D14FF0040C0BE05D -:100D8000D1F80880B8F1010F03D14FF0080C1C61B5 -:100D900002E04FF0080C5C6103E04FF0000C00E053 -:100DA00000BF00BFFF2801D8984601E003F1040806 -:100DB0004646FF2802D84FEA820803E0A2F108085D -:100DC0004FEA88084746D6F800804FF00F0909FA25 -:100DD00007F928EA09080CFA07F900E088E048EA70 -:100DE0000908C6F80080D1F8048008F08058B8F1EE -:100DF000805F7DD100BFDFF8CC81D8F8188048F043 -:100E00000108DFF8C091C9F81880C846D8F81880E2 -:100E100008F00108CDF8008000BF00BF4FEAB938E4 -:100E20004FEA920958F829504FEA82784FEA187928 -:100E30004FF00F0808FA09F825EA0805DFF888815D -:100E4000434502D14FF0000816E0DFF880814345AA -:100E500002D14FF001080FE0DFF87481434502D161 -:100E60004FF0020808E0DFF86C81434502D14FF0F3 -:100E7000030801E04FF004084FEA82794FEA19793C -:100E800008FA09F848EA0505DFF84C814FEA9209AB -:100E900048F82950D1F8048008F48018B8F5801F6C -:100EA0000AD1DFF83881D8F8008048EA0008DFF876 -:100EB0002C91C9F8008009E0DFF82081D8F8008083 -:100EC00028EA0008DFF81491C9F80080D1F80480FE -:100ED00008F40018B8F5001F10D1DFF8008108F100 -:100EE0000408D8F8008048EA0008DFF8F09000E035 -:100EF0005AE009F10409C9F800800DE0DFF8DC8050 -:100F000008F10408D8F8008028EA0008DFF8CC903F -:100F100009F10409C9F80080D1F8048008F4003808 -:100F2000B8F5003F0ED1DFF8B480A8F10408D8F876 -:100F3000008048EA0008DFF8A490A9F10409C9F884 -:100F400000800DE0DFF89480A8F10408D8F8008054 -:100F500028EA0008DFF88490A9F10409C9F80080A4 -:100F6000D1F8048008F48038B8F5803F0ED1DFF85E -:100F70006C80A8F10808D8F8008048EA0008DFF87B -:100F80005C90A9F10809C9F800800DE0DFF84C80F9 -:100F9000A8F10808D8F8008028EA0008DFF83C909B -:100FA000A9F10809C9F80080521CD1F8008028FA7C -:100FB00002F8B8F1000F7FF489AEBDE8F8870000B1 -:100FC000000011100010024000080140000C014018 -:100FD00000100140001401400800014008040140D5 -:100FE000024693680B400BB1012000E000207047DF -:100FF0000AB1016101E00B04036170470148006818 -:10100000704700005C00002003480068034909782D -:1010100008440149086070475C000020640000201B -:1010200010B50848006840F0100006490860032029 -:1010300000F0A8F80F2000F007F800F02BF80020CF -:1010400010BD00000020024070B504460E48007834 -:101050004FF47A71B1FBF0F00C490968B1FBF0F57F -:10106000284600F09DFC08B1012070BD102C07D26D -:1010700000222146501E00F047F80548046001E0B8 -:101080000120F2E70020F0E7640000206800002063 -:101090006000002008B500BF1148806940F00100E1 -:1010A0000F4988610846806900F00100009000BF88 -:1010B00000BF00BF0846C06940F08050C8610846C4 -:1010C000C06900F08050009000BF00BF00BF05491C -:1010D000486820F0E06040F00070486000BF08BD44 -:1010E000001002400000014001460846002809DBCC -:1010F00000F01F0301229A4043099B0003F1E02303 -:10110000C3F8002100BF70472DE9F05F80460D460F -:101110001646002701F0B4FD074639462A463346F5 -:1011200001F00700C0F1070ABAF1040F02D94FF02D -:10113000040A01E0C0F1070AD14600F1040ABAF13D -:10114000070F02D24FF0000A01E0A0F1030AD446D3 -:101150004FF0010A0AFA09FAAAF1010A0AEA020A98 -:101160000AFA0CFA4FF0010B0BFA0CFBABF1010B76 -:101170000BEA030B4AEA0B042146404601F088FDC6 -:10118000BDE8F09F00BF00F00702064B19684FF65C -:10119000FF031940044B0B4343EA0221014B196042 -:1011A00000BF70470CED00E00000FA0570B5044682 -:1011B0000D460CB9012070BD5A48006800F00700C8 -:1011C000A8420ED25748006820F00700284355492E -:1011D00008600846006800F00700A84201D001201E -:1011E000E9E7207800F0020002281DD1207800F005 -:1011F0000400042805D14C48406840F4E0604A49A6 -:101200004860207800F00800082805D1464840686A -:1012100040F46050444948604348406820F0F00082 -:10122000A168084340494860207800F0010078B385 -:101230006068012806D13C48006800F4003090B98D -:101240000120B8E76068022806D13748006800F03E -:10125000007040B90120AEE73348006800F002009A -:1012600008B90120A7E73048406820F00300616812 -:1012700008432D494860FFF7C1FE064609E0FFF725 -:10128000BDFE801B41F28831884202D9032092E7DB -:1012900007E02548406800F00C006168B0EB810F62 -:1012A000EDD12048006800F00700A8420ED91D4883 -:1012B000006820F0070028431A49086008460068C3 -:1012C00000F00700A84201D0012074E7207800F068 -:1012D0000400042807D11448406820F4E060E16865 -:1012E000084311494860207800F00800082808D118 -:1012F0000D48406820F46050216940EAC1000A4965 -:10130000486000F03FF808494968C1F30311074AF3 -:10131000515CC8400649086006480068FFF794FE23 -:10132000002048E70020024000100240EC41000885 -:10133000680000206000002001480068704700003D -:101340006800002000B5FFF7F7FF04494968C1F3C2 -:101350000221034A515CC84000BD00000010024059 -:10136000FC41000800B5FFF7E7FF04494968C1F3F5 -:10137000C221034A515CC84000BD00000010024079 -:10138000FC41000870B50021002200240023002049 -:10139000134D696801F00C05F5B1042D02D0082D3C -:1013A00019D101E00F4819E00F4DC1F38346AB5D41 -:1013B00001F4803555B10A4D6D68C5F340450B4EBB -:1013C000725D084D5D43B5FBF2F402E0084D03FB8E -:1013D00005F4204602E000BF024800BF00BF70BD18 -:1013E0000010024000127A00DA410008EA410008C9 -:1013F00000093D00F8B504460CB90120F8BD20787D -:1014000000F00100002878D0F848406800F00C0097 -:1014100004280CD0F548406800F00C00082811D1D1 -:10142000F248406800F48030B0F5803F0AD1EF48C0 -:10143000006800F4003000285FD0606800285CD1AC -:101440000120DBE700BF6068B0F5803F06D1E748C8 -:10145000006840F48030E549086028E0606858B9C9 -:10146000E248006820F48030E049086008460068DF -:1014700020F4802008601AE06068B0F5A02F0BD13E -:10148000DA48006840F48020D849086008460068BF -:1014900040F4803008600AE0D448006820F48030CE -:1014A000D24908600846006820F48020086000BF28 -:1014B000606888B1FFF7A2FD054606E0FFF79EFDD4 -:1014C000401B642801D9032098E7C848006800F44D -:1014D00000300028F2D010E0FFF790FD054606E04E -:1014E000FFF78CFD401B642801D9032086E7BF4825 -:1014F000006800F400300028F2D1207800F00200EB -:10150000022857D1B948406800F00C0050B1B748E4 -:10151000406800F00C00082818D1B448406800F476 -:10152000803098B9B148006800F0020020B120690D -:10153000012801D0012061E7AC48006820F0F800E4 -:10154000616940EAC100A949086033E02069E8B157 -:101550000120A7490860FFF751FD054606E0FFF7A7 -:101560004DFD401B022801D9032047E79F48006832 -:1015700000F002000028F2D09C48006820F0F8003B -:10158000616940EAC1009949086013E00020984968 -:101590000860FFF733FD054606E0FFF72FFD401B0F -:1015A000022801D9032029E79048006800F00200D2 -:1015B0000028F2D1207800F0080008282DD1A06979 -:1015C000B8B101208B490860FFF718FD054606E019 -:1015D000FFF714FD401B022801D903200EE78348C2 -:1015E000406A00F002000028F2D0012000F0D0FE96 -:1015F00013E000207F490860FFF700FD054606E084 -:10160000FFF7FCFC401B022801D90320F6E67748CF -:10161000406A00F002000028F2D1207800F00400B7 -:10162000042873D100277148C06900F0805070B958 -:1016300000BF6E48C06940F080506C49C8610846E0 -:10164000C06900F08050009000BF00BF01276A48C9 -:10165000006800F48070B0B96748006840F480709A -:1016600065490860FFF7CAFC054606E0FFF7C6FCBF -:10167000401B642801D90320C0E65F48006800F4DD -:1016800080700028F2D000BFE068012806D15748DA -:10169000006A40F001005549086227E0E06858B947 -:1016A0005248006A20F00100504908620846006A6A -:1016B00020F00400086219E0E06805280BD14B48CF -:1016C000006A40F00400494908620846006A40F098 -:1016D000010008620AE04548006A20F00100434921 -:1016E00008620846006A20F00400086200BFE06853 -:1016F000A0B1FFF783FC054609E0FFF77FFC401B24 -:1017000041F28831884202D9032077E622E0374847 -:10171000006A00F002000028EFD012E0FFF76EFC34 -:10172000054608E0FFF76AFC401B41F28831884219 -:1017300001D9032062E62D48006A00F0020000286B -:10174000F0D1012F05D12948C06920F080502749E8 -:10175000C86100BFE069C8B32448406800F00C00CD -:10176000082860D0E069022848D100202049086696 -:10177000FFF744FC054606E0FFF740FC401B02284B -:1017800001D903203AE61948006800F000700028EB -:10179000F2D1206AB0F5803F07D11448406820F4A8 -:1017A0000030A168084311494860D4E908010843A2 -:1017B0000E49496821F4741108430C49486001201E -:1017C0000B490866FFF71AFC054607E03DE0FFF706 -:1017D00015FC401B022801D903200FE603480068CE -:1017E00000F000700028F2D02FE00000001002404E -:1017F0000000424280044242007000400020144930 -:101800000866FFF7FBFB054606E0FFF7F7FB401B0A -:10181000022801D90320F1E50E48006800F00070AD -:101820000028F2D111E0E069012800D1E6E509487D -:10183000466806F48031206A814204D106F47011B2 -:10184000606A814201D00120D8E50020D6E5000081 -:10185000000042420010024010B504460CB90120BD -:1018600010BD606A38B96068B0F5827F00D105E0CC -:101870000021E16102E00021216161610021A1629A -:1018800094F8510028B9002084F85000204600F058 -:1018900043F8022084F851002068006820F04000DE -:1018A00021680860A08800F48270218901F4044155 -:1018B0000843A18901F400610843217C01F0020181 -:1018C0000843217D01F001010843218B01F40071DF -:1018D0000843217F01F0380108432021095D01F010 -:1018E00080010843218D01F40051084321680860FC -:1018F0000421A06901EA1040216848602068C0699D -:1019000020F400602168C86100206065012084F82F -:1019100051000020A4E7000010B586B00446002066 -:1019200002900390049005901A49206888422FD1B4 -:1019300000BF1948C06940F480401749C861084693 -:10194000C06900F48040019000BF00BF00BF08469E -:10195000806940F0080088610846806900F008004E -:10196000019000BF00BF4FF420400290022003907E -:101970000320059002A90948FFF7A2F94FF480401F -:10198000029000200390049002A90448FFF798F900 -:1019900006B010BD0038004000100240000C0140AD -:1019A00070B504462546681EB0F1807F01D3012042 -:1019B0000FE0681E4FF0E02148610F214FF0FF302B -:1019C00001F066F900204FF0E021886107200861EE -:1019D000002070BD704770472DE9F84F044620681D -:1019E00005682068C668206847694FF00009CA4644 -:1019F00005F00F09B9F1000F0AD105F0200038B148 -:101A000006F0200020B1204600F046FFBDE8F88F28 -:101A1000B9F1000F7BD007F0010018B906F49070FF -:101A2000002874D005F0010030B106F4807018B1C0 -:101A3000606C40F00100606405F0040030B107F014 -:101A4000010018B1606C40F00200606405F0020013 -:101A500030B107F0010018B1606C40F00400606420 -:101A600005F0080048B106F0200010B907F00100A9 -:101A700018B1606C40F008006064606C002845D0CC -:101A800005F0200028B106F0200010B1204600F03B -:101A900003FF20684069C0F3801A606C00F0080002 -:101AA00010B9BAF1000F2CD0204600F0AFFE20682C -:101AB000406900F0400000B300BF00BF216814314E -:101AC00051E8001F21F040002168143141E8000274 -:101AD000002AF3D100BFE06B50B17748E16B486357 -:101AE000E06BFFF781F888B1E06B416B88470DE050 -:101AF0002046FFF770FF09E009E02046FFF76BFF83 -:101B000004E02046FFF767FF002060647EE7206B5B -:101B1000012877D105F01000002873D006F01000DE -:101B20000028FAD000BF00200090206800680090D4 -:101B300020684068009000BF00BF2068406900F046 -:101B4000400000285FD0E06B006840681FFA80F812 -:101B5000B8F1000F55D0A08D404552DDA4F82E807D -:101B6000E06B8069202843D000BF00BF21680C31A2 -:101B700051E8001F21F4807021680C3141E8000217 -:101B8000002AF3D100BF00BF00BF2168143151E823 -:101B9000001F21F001002168143141E80002002AF1 -:101BA000F3D100BF00BF00BF2168143151E8001F0E -:101BB00021F040002168143141E80002002AF3D1ED -:101BC00000BF202084F842000020206300BF00BF37 -:101BD00021680C3151E8001F21F0100021680C3100 -:101BE00041E80002002AF3D100BFE06BFEF7D0FF0E -:101BF00002206063A08DE28D801A81B22046FFF73B -:101C0000E9FE03E742E0A08DE18D401A1FFA80F85B -:101C1000E08DD0B3B8F1000F37D000BF00BF21680E -:101C20000C3151E8001F21F4907021680C3141E81B -:101C30000002002AF3D100BF00BF00BF21681431A9 -:101C400051E8001F21F001002168143141E8000231 -:101C5000002AF3D100BF202084F842000020206336 -:101C600000BF00BF21680C3151E8001F21F01000B7 -:101C700021680C3141E80002002AF3D100BF0220A4 -:101C8000606341462046FFF7A5FEBFE605F08000F1 -:101C900030B106F0800018B1204600F019FFB5E61B -:101CA00005F0400030B106F0400018B1204600F0C9 -:101CB000E3FDABE600BFA9E6F927000810B504462E -:101CC0000CB9012010BDA06900B100E000BF94F87C -:101CD000410028B9002084F84000204600F02AF88E -:101CE000242084F841002068C06820F40050216856 -:101CF000C860204600F04EFE2068006920F4904045 -:101D0000216808612068406920F02A002168486144 -:101D10002068C06840F400502168C86000206064FA -:101D2000202084F8410084F842000020606300BF56 -:101D3000C8E7000010B586B004460020029003906A -:101D40000490059059492068884237D100BF58480F -:101D5000806940F48040564988610846806900F4F3 -:101D60008040019000BF00BF00BF0846806940F07E -:101D7000040088610846806900F00400019000BFFB -:101D800000BF48150290022003900320059002A98D -:101D90004848FEF795FF4FF48060029000200390C2 -:101DA000049002A94348FEF78BFF0022114625202C -:101DB000FFF7AAF92520FFF797F975E03E4920685B -:101DC000884236D100BF3A48C06940F400303849F3 -:101DD000C8610846C06900F40030019000BF00BF30 -:101DE00000BF0846806940F00400886108468069A9 -:101DF00000F00400019000BF00BF04200290022008 -:101E000003900320059002A92A48FEF759FF0820F5 -:101E1000029000200390049002A92648FEF750FF8C -:101E2000002201212620FFF76FF92620FFF75CF939 -:101E30003AE022492068884236D100BF1C48C06978 -:101E400040F480201A49C8610846C06900F4802027 -:101E5000019000BF00BF00BF0846806940F0080045 -:101E600088610846806900F00800019000BF00BF4B -:101E700008150290022003900320059002A9104843 -:101E8000FEF71EFF4FF400600290002003900490C4 -:101E900002A90B48FEF714FF002202212720FFF7BA -:101EA00033F92720FFF720F906B010BD00380140B4 -:101EB000001002400008014000440040004800407B -:101EC000000C014070B504460D46164694F84200D9 -:101ED00020280BD105B10EB9012070BD0020206370 -:101EE00032462946204600F0D3FDF6E70220F4E70B -:101EF00070B504460C492068884202D101F020FFE9 -:101F000010E00A49206888420CD1FFF777F80546AF -:101F1000294607480078FEF777FC01220449054866 -:101F2000FFF7D0FF70BD00000038014000440040C2 -:101F300004000020540100202DE9F84F04460E460D -:101F4000174699464FF0000A94F8410020284AD1DC -:101F500006B117B90120BDE8F88F00206064212088 -:101F600084F84100FFF74AF88246A784E784A06816 -:101F7000B0F5805F04D1206910B90025B04602E0B9 -:101F800035464FF000081BE05346002280212046D2 -:101F9000CDF8009000F0CCFD08B10320DBE745B997 -:101FA000B8F80000C0F308002168486008F1020892 -:101FB00003E02878216848606D1CE08C401EE084B6 -:101FC000E08C0028E0D15346002240212046CDF885 -:101FD000009000F0ADFD08B10320BCE7202084F89C -:101FE00041000020B7E70220B5E710B5034693F89B -:101FF0004100202813D101B10AB9012010BD196296 -:102000009A84DA8400205864212083F841001868FB -:10201000C06840F080001C68E0600020EEE702200D -:10202000ECE7000010B5044603492068884201D15E -:1020300000F0ACFB10BD00000044004000BFFEE714 -:102040000021002009E0074A02EB001292791AB140 -:10205000012282400A43D1B2401C0428F3DB084627 -:1020600070470000080000200146042901DB002021 -:102070007047024800EB01108079F9E70800002062 -:1020800070B5002512E0114800EB0514A188206806 -:10209000FEF7A6FF08B1012000E00020A071A079A2 -:1020A00020720120E0710020E0606D1C042DEADB4D -:1020B000002007490860012006490870FFF7C0FFAB -:1020C0000446214604A000F0A3FA70BD08000020D9 -:1020D000480000204C0000205B494F5D20496E699C -:1020E00074204F4B2C20696E697469616C20737485 -:1020F000617465733A203078253032580D0A00003B -:102100002DE9F041FEF77AFF07461C480068381AAF -:102110000A2801D2BDE8F08118480760002628E0AF -:10212000174800EB0614A1882068FEF759FF08B194 -:10213000012000E000200546207AA84203D00020BC -:10214000E071257214E0E079032803DAE079401C9D -:10215000E0710DE0A079A8420AD0A571E068401CAA -:10216000E0600848007818B1F0B2294601F060FF3D -:10217000761C042ED4DB00BFCCE700004800002012 -:10218000080000204C00002000B585B00020019020 -:1021900002900390049000BF3C48806940F010001A -:1021A0003A4988610846806900F01000009000BF3D -:1021B00000BF00BF0846806940F0200088610846E3 -:1021C000806900F02000009000BF00BF00BF0846FB -:1021D000806940F0040088610846806900F00400CE -:1021E000009000BF00BF00BF0846806940F00800B3 -:1021F00088610846806900F00800009000BF00BFB9 -:10220000012280212248FEF7F3FE01220521214808 -:10221000FEF7EEFE002241F208211E48FEF7E8FE1E -:1022200000224FF401411A48FEF7E2FE48F2801006 -:10223000019001200290002003900220049001A947 -:102240001348FEF73DFD41F20D2001900120029060 -:10225000002003900220049001A90E48FEF730FDF3 -:1022600002200190002002900120039001A909485A -:10227000FEF726FDF020019000200290039001A9B6 -:102280000448FEF71DFD05B000BD0000001002402F -:1022900000080140000C014010B50E480E490860CE -:1022A0004FF48270486000210B488160C160016179 -:1022B00041614FF4007181610021C161016241629D -:1022C00081620A21C162FFF7C7FA08B1FEF75DFC1F -:1022D00010BD000000380040B400002010B50B48CD -:1022E0000B4908604FF4165048600021084881608F -:1022F000C16001610C21416100218161C161FFF771 -:10230000DDFC08B1FEF741FC10BD000000380140C3 -:102310000C01002010B50B480B4908604FF4E13068 -:102320004860002108488160C16001610C21416161 -:1023300000218161C161FFF7C1FC08B1FEF725FCF6 -:1023400010BD0000004400405401002010B50B48AF -:102350000B4908604FF4165048600021084881601E -:10236000C16001610C21416100218161C161FFF700 -:10237000A5FC08B1FEF709FC10BD000000480040B4 -:102380009C01002000BFFEE700BFFEE77047000091 -:1023900008B508490968C9084FF47A72B1FBF2F12F -:1023A0004143009100BF00BF00994A1E00920029DE -:1023B000F9D108BD6800002010B500224FF400419B -:1023C0000948FEF715FE002003E00021074A1154DA -:1023D000401C0428F9DB0020054908600549086015 -:1023E00005A000F015F910BD0008014050000020C4 -:1023F00054000020580000205B52454C41595D209C -:10240000496E6974204F4B2C2073746174653D4F85 -:1024100046460D0A000000002DE9F04104460D4635 -:10242000012C01DB042C05DD21461EA000F0F0F894 -:10243000BDE8F081FEF7E2FD064622480068301A4A -:10244000642803D220A000F0E3F8F1E7601EC7B2D1 -:102450002648C05DA84208D10DB125A000E025A006 -:10246000014625A000F0D4F8E2E7012C04D12A4669 -:10247000E1032948FEF7BCFD1C48C555114806601C -:1024800026480068401C254908600DB118A000E0EE -:1024900018A0024621482146036821A000F0B8F8A0 -:1024A00000BFC5E75B52454C41595D20496E7661DE -:1024B0006C69642072656C61792049443A20256416 -:1024C0000D0A0000540000205B52454C41595D202C -:1024D000546F67676C6520746F6F20666173742C2E -:1024E0002069676E6F7265640D0A0000500000205D -:1024F0004F4E00004F4646005B52454C41595D200F -:10250000537461746520756E6368616E6765643AC3 -:102510002025730D0A00000000080140580000202B -:102520005B52454C41595D2052656C6179202564B0 -:10253000202D3E2025732028636F756E743D256C19 -:1025400075290D0A00000000704710B501F006FE65 -:10255000FEF75AFD10BD00B58FB0282105A8FDF784 -:10256000FEFD14216846FDF7FAFD012005900004E8 -:102570000690002007900120099002200C90C103D2 -:102580000D914FF4E0110E9105A8FEF733FF08B14D -:10259000FEF7FBFA0F20009002200190002002902D -:1025A0004FF4806003900020049002216846FEF7FB -:1025B000FDFD08B1FEF7E9FA0FB000BD704700005D -:1025C00010B500200849A1F80001A1F80201A1F806 -:1025D000040181F80601A1F808014FF4807103A0FD -:1025E00000F016F810BD0000440200205B55415277 -:1025F00054325D20496E6974204F4B2C2062756601 -:102600006665722073697A653A2025640D0A0000B8 -:102610000FB410B5A2B0249818B922B010BC5DF860 -:1026200014FB25A80190802102A8019B249A00F0A8 -:102630000DFB044600200190002C06DB802C00DB03 -:102640007F24A1B202A800F003F800BFE5E7000074 -:10265000F8B504460D4605B104B9F8BD00260027BB -:1026600072B6002029E02549B1F80411FF2907DDE1 -:102670002249B1F80811491C204AA2F808111EE0AD -:10268000215C1E4AB2F800211C4B99541A46B2F83C -:102690000021511CCA1701EB12621212A1EB022297 -:1026A000A3F800211946B1F80411491C1A46A2F8F2 -:1026B0000411711C8EB2411C88B2A842D3DB00BF4A -:1026C000002E08DD0D4890F8060120B901200B49C5 -:1026D00081F80601012762B66FB172B60748B0F8FB -:1026E00002010649085C009062B60122694604486E -:1026F000FFF77BFC00BF00BFAFE7000044020020F3 -:102700005401002070B5044604B970BD2046FDF7A1 -:1027100031FD85B229462046FFF79AFF00BFF4E756 -:1027200038B572B6174890F8060118B91548B0F8D0 -:10273000040108B962B638BD1248B0F8024101463A -:10274000B1F80211481CC11700EB11610912A0EB8E -:1027500001210C4AA2F802111046B0F80401401EF3 -:102760001146A1F80401012081F806010846005D28 -:10277000009062B6012269460348FFF736FC00BFAD -:10278000D9E70000440200205401002038B500259C -:1027900072B60020164981F806010846B0F8040117 -:1027A00000281CDD0846B0F80241B1F80211481CAF -:1027B000C11700EB11610912A0EB01210C4AA2F82C -:1027C00002111046B0F80401401E1146A1F80401A0 -:1027D000012081F806010846005D0090012562B6DF -:1027E00025B1012269460348FFF7FFFB38BD000011 -:1027F000440200205401002070B505466C6A002098 -:10280000E085E0842046FFF7E6F870BD00BF00BF1A -:1028100002680C3252E8002F22F4907102680C32E8 -:1028200042E80013002BF3D100BF00BF00BF0268D5 -:10283000143252E8002F22F001010268143242E8FB -:102840000013002BF3D100BF016B01290ED100BF93 -:1028500000BF02680C3252E8002F22F0100102681B -:102860000C3242E80013002BF3D100BF202180F886 -:10287000421000210163704710B504462068C0680B -:1028800020F040002168C860202084F841002046E4 -:10289000FFF7C8FB002010BDF8B5044694F84200CD -:1028A000222875D1A068B0F5805F0CD1206950B99D -:1028B0000025A66A20684068C0F308003080A06A3E -:1028C000801CA06215E0A56A0026A068B0F5805FB4 -:1028D00003D0A06828B9206918B92068406828701A -:1028E00004E02068406800F07F002870A06A401C67 -:1028F000A062E08D401E80B2E085002846D12068AD -:10290000C06820F020002168C8602068C06820F4FA -:1029100080702168C8602068406920F0010021684B -:102920004861202084F8420000206063206B012869 -:1029300026D10020206300BF00BF21680C3151E880 -:10294000001F21F0100021680C3141E80002002A2C -:10295000F3D100BF2068006800F0100010280AD1F1 -:1029600000BF002000902068006800902068406848 -:10297000009000BF00BFA18D2046FFF72BF802E0BA -:102980002046FFF7B5FA0020F8BD01E00020FBE784 -:102990000220F9E770B504462168096921F4405125 -:1029A000E2681143226811612269A16811436269DA -:1029B00041EA02052168C96841F20C62914329434A -:1029C0002268D1602168496921F44071A2691143EC -:1029D000226851612D4A2168914202D1FEF7C2FC62 -:1029E00001E0FEF7AFFC00EBC00101EB00116268F3 -:1029F0009200B1FBF2F100EBC00202EB001263683F -:102A00009B00B2FBF3F26423B2FBF3F202EBC203CE -:102A100003EB0212A1EB8201322202EB01116422CC -:102A2000B1FBF2F101F0F00100EBC00202EB001289 -:102A300063689B00B2FBF3F26423B2FBF3F201EB99 -:102A4000021200EBC00101EB001163689B00B1FBB7 -:102A5000F3F100EBC00303EB00136668B600B3FBB1 -:102A6000F6F36426B3FBF6F303EBC30606EB03139E -:102A7000A1EB8301322303EB01116423B1FBF3F1DA -:102A800001F00F0111442268916070BD00380140CF -:102A900010B5034699629A85DA8500205864222091 -:102AA00083F84200186928B11868C06840F4807043 -:102AB0001C68E0601868406940F001001C686061B3 -:102AC0001868C06840F020001C68E060002010BD5D -:102AD000014691F84100212828D18868B0F5805F2F -:102AE0000BD1086948B90A6A1088C0F308000B685E -:102AF0005860086A801C086205E00B6A581C08626E -:102B000018780B685860C88C401E80B2C88458B9C9 -:102B10000868C06820F080000B68D8600868C0684A -:102B200040F040000B68D860002070470220FCE7AE -:102B30002DE9F04104460D4617469846069E34E0BE -:102B4000701C88B32EB1FEF759FAA0EB0800B04212 -:102B50002BD900BF00BF21680C3151E8001F21F4C0 -:102B6000D07021680C3141E80002002AF3D100BF87 -:102B700000BF00BF2168143151E8001F21F001009F -:102B80002168143141E80002002AF3D100BF20205F -:102B900084F8410084F8420000BF002084F840001F -:102BA00000BF0320BDE8F081FFE7206800682840EF -:102BB000A84201D1012000E00020B842C0D000208E -:102BC000F0E7000010B50248FEF706FF10BD000058 -:102BD0000C01002010B50248FEF7FEFE10BD0000FB -:102BE0005401002010B50248FEF7F6FE10BD0000AB -:102BF0009C01002000BFFEE70FB4054B10B503A9F0 -:102C0000044A029800F02EF910BC5DF814FB000095 -:102C1000B5350008900000200FB47CB50C0009AD5C -:102C200001D0611E00E00021CDE90001064B6A469B -:102C30002946089800F016F9002C02D0009A0021CD -:102C400011707CBC5DF814FB6B3500087CB50C0082 -:102C50001D461646014601D0601E00E00020CDE969 -:102C60000010064B6A462946304600F0FBF8002C5F -:102C700002D0009A002111707CBD00006B35000865 -:102C800002480068C0F30220704700000CED00E02D -:102C900010B5002804DB0A07130E054A135406E09A -:102CA0000A07140E034A00F00F031B1FD45410BD73 -:102CB00000E400E018ED00E00048704794000020B8 -:102CC00002E008C8121F08C1002AFAD170477047F5 -:102CD000002001E001C1121F002AFBD17047000053 -:102CE0002DE9FF5F82B00021DDE90430020DDDF83F -:102CF00040B0034318D044F61050A2F2FF324243D2 -:102D00001514119801281FD0A5EB0B00401C5FEA99 -:102D1000000A4FF000064E4FDFF83891B04650469B -:102D200015D5CAF1000413E0119801244AA3012823 -:102D300001D16FEA0B010298119AC0E90031C0E994 -:102D4000024206B0BDE8F09FCBF10000DFE7044689 -:102D50000021404A491842EB0450CDE9001012E02E -:102D6000E00707D032463B4640464946FDF74AFB5E -:102D70008046894632463B4610461946FDF742FBDF -:102D800006460F466410002CEAD1DDE90401DDE9B6 -:102D90000023BAF1000F06DAFDF734FB42464B463A -:102DA000FDF730FB05E0FDF79FFB42464B46FDF784 -:102DB0009BFB04460E460022284BFDF71DFC03D862 -:102DC0004FF0FF30014607E00022254B20463146F8 -:102DD000FDF771FAFDF7F7FB102409E0002C0ADB80 -:102DE0000A220023FDF7FEF9039B30321A55641EB8 -:102DF00050EA0102F2D1641C039AC4F11103144495 -:102E0000119A012A03D0012208430DD10AE0084398 -:102E100004D000204FF0110B119072E7A3EB0B05CB -:102E20006D1E0DE05B4504DD4FF0000205F101056C -:102E300004E003DA4FF00002A5F10105002AECD00E -:102E400002981199C0E90231C0E9004579E7000014 -:102E5000000014400000F03F300000000000F0438C -:102E60000000E03F2DE9FF4F95B09A4688460646A0 -:102E70000025EEE1252877D100242746F94A0121D3 -:102E8000039400E0044316F8013F203B01FA03F0ED -:102E90001042F7D130782A2811D06FF02F03307804 -:102EA000A0F13002092A16D8039A44F0020402EB7A -:102EB000820203EB42021044761C0390EFE758F8BD -:102EC000042B0392002A03DA504244F40054039086 -:102ED00044F00204761C30782E2816D116F8010F23 -:102EE00044F004042A280DD06FF02F023078A0F1AE -:102EF0003003092B09D807EB870302EB4303C718FC -:102F0000761CF3E758F8047B761C30786C280FD0D9 -:102F100006DC4C2817D068280DD06A2814D104E0AC -:102F2000742810D07A280FD10DE044F400140AE080 -:102F300044F4801401E044F440147278824202D1D7 -:102F400004F58014761C761C307866280BD013DCD0 -:102F5000582877D009DC002875D04528F6D04628B7 -:102F6000F4D047281AD193E118E0632835D06428BB -:102F700079D0652812D18BE1702873D008DC6728DE -:102F8000F1D069286FD06E280DD06F2806D1ACE043 -:102F900073282CD0752874D0782853D052461799AE -:102FA00090476D1C54E1C4F30250022809D0032855 -:102FB0000DD0D8F8001004280DD00D6008F10408D9 -:102FC00046E1D8F80010EA17C1E90052F6E7D8F850 -:102FD00000100D80F2E70D70F0E718F8041B8DF873 -:102FE000001000208DF80100EB46012003E058F8A6 -:102FF00004BB4FF0FF3061074FF0000102D40DE039 -:1030000009F101018946B9420FDA8145F8DB1BF865 -:1030100009100029F4D108E009F101018946814233 -:10302000FADB1BF809100029F6D103985346A0EBF0 -:10303000090721463846179A00F080FA284400EB29 -:10304000090507E044E008E10DE01BF8010B5246DA -:1030500017999047B9F10109F7D2534621463846EE -:10306000179AF2E039E00A21C4F302524FF0000B44 -:103070000091022A06D058F8040BC117032A09D080 -:103080000AE023E008F1070020F00702F2E802015D -:10309000904605E000B2C117042A01D140B2C11721 -:1030A000002906DA0A460021404261EB02012D2286 -:1030B00002E0220504D52B228DF80420012203E032 -:1030C000E20701D02022F7E7914657E00A2100E00D -:1030D00010214FF0000B00910BE010214FF0000B7E -:1030E00044F004040827009103E008204FF0000B8F -:1030F0000090C4F30252022A05D058F8040B0021B4 -:10310000032A08D008E008F1070020F00702F2E8DF -:103110000201904603E080B2042A00D1C0B24FF011 -:10312000000922072AD53278702A07D0DDF800C0BE -:103130008CF0100C5CEA0B0C05D00EE040228DF8F0 -:103140000420012208E050EA010306D030238DF864 -:1031500004308DF8052002229146009B83F008037D -:1031600053EA0B030AD150EA010201D1620705D5E7 -:1031700030228DF804204FF001097F1E3278582A42 -:1031800004D039A20C920CAA02920BE03BA2F9E700 -:103190005B46009AFDF726F80C9B9B5C029A521E38 -:1031A0000292137050EA0102F2D1029804A9081A9F -:1031B00000F1200B600702D524F4803400E00127E1 -:1031C0005F4502DDA7EB0B0000E0002000EB0B01E8 -:1031D000009003984944401A0390E00306D45346F4 -:1031E0002146179A039800F0A9F90544002706E044 -:1031F00001A85246C05D179990476D1C7F1C4F4532 -:10320000F6DBE0030CD553462146179A039800F0ED -:1032100095F9054404E030205246179990476D1CFB -:103220000099481E00900029F5DC08E002980299F8 -:1032300052460078491C0291179990476D1CBBF1CA -:103240000001ABF1010BF1DC5BE100F065F9054435 -:10325000761C307800287FF40DAE19B02846BDE802 -:10326000F08F000009280100303132333435363711 -:1032700038396162636465660000000030313233C2 -:103280003435363738394142434445460000000062 -:10329000600700D4062708F1070020F00700F0E8D7 -:1032A0000223804603F0004C5FEA0C0001D097A097 -:1032B00009E0200501D596A005E0E00701D095A022 -:1032C00001E0AFF24C001390307823F00043652802 -:1032D0000CD006DC452809D046281DD047287FD1D0 -:1032E0003BE0662818D067287AD136E00021112FFC -:1032F00001DB112000E0781CCDE9000104A90CA835 -:10330000FFF7EEFCDDE90D010C9A4FF0000B07F121 -:103310000109109200914EE04FF000400097CDE976 -:10332000011004A90CA8FFF7DBFCDDE90D020C9BE2 -:103330000F994FF0000B91461093009211B9791C30 -:1033400000EB0109B7EB090003D4C0F1FF3B07F123 -:103350000109A9EB0700019042E0012F00DA0127E3 -:103360000021112F01DD112000E03846CDE90001D8 -:1033700004A90CA8FFF7B4FCDDE90D010C9A00913B -:103380004FF0000BB946109221070FD4009A4A451E -:1033900003DA914601E0A9F10109B9F1010F05DD58 -:1033A000109AA9F10101515C3029F4D0B84202DA37 -:1033B00010F1040F03DA0121CDE9011010E000281B -:1033C00003DC8344A9EB000102E0411C494500DD18 -:1033D0008946A0EB0B00401C01904FF0004002908A -:1033E000200705D40198484502DB4FF0FF300190DB -:1033F00000208DF84B0002980DF14B07B0F1004F03 -:1034000025D002200C902B200D90029800280CDA79 -:10341000404202902D200D9007E00A210298FCF70F -:10342000CBFE3031029007F8011D0C99481E0C901C -:103430000029F2DC02980028EFD1791E0D9808705F -:10344000307800F0200040F0450007F8020D11A888 -:10345000C01BC01D02901398007800B1012000EB42 -:103460000901019801EBE071029801440398401AA8 -:10347000401E0390E00306D453462146179A039852 -:1034800000F05CF805441398007818B1524617997B -:1034900090476D1CE00323D553462146179A0398A5 -:1034A00000F04CF805441BE0BBF1000F07DB00986F -:1034B000584504DD1098179910F80B0001E0179992 -:1034C00030205246904701980BF1010B401E05F148 -:1034D0000105019004D12E205246179990476D1C8A -:1034E000B9F10001A9F10109DEDC05E017F8010BD3 -:1034F0005246179990476D1C0299481E0290002968 -:10350000F4DC53462146179A03989EE62D000000EE -:103510002B000000200000002DE9F04104460025AA -:103520001E461746880404D405E039462020B047DB -:103530006D1C641EF9D52846BDE8F0812DE9F041E7 -:10354000044600251E469046C80301D5302700E0FA -:103550002027880404D505E041463846B0476D1C55 -:10356000641EF9D52846BDE8F0814A68002A06D0D5 -:103570000A68531C0B6010704868401E4860704712 -:1035800010B502460023002003E0145C6340441C95 -:10359000E0B28842F9DB184610BD10B502460023A0 -:1035A000002003E0145C6340441CE0B28842F9DB75 -:1035B000184610BD13B50C4601216846FFF748F8C0 -:1035C00000981CBD10B500224FF400710148FDF7B2 -:1035D0000FFD10BD000C014010B501225102024840 -:1035E000FDF706FD10BD0000000C0140014630292A -:1035F00005DB392903DCA1F13000C0B27047412955 -:1036000005DB462903DCA1F13700C0B2F6E76129EA -:1036100005DB662903DCA1F15700C0B2EEE700200C -:10362000ECE770B505460C462046FFF7DFFF06467F -:103630002846FFF7DBFF46EA0010C0B270BD014626 -:1036400009B1087808B9012070470020FCE710B5DF -:1036500004462046FFF7F3FF08B1002010BD09E043 -:10366000FCF772FD00682178405C202801D0002022 -:10367000F4E7641C20780028F2D10120EEE710B5B1 -:103680000446FCF761FD0068005D00F0100028B9F9 -:10369000FCF75AFD0068005D202801D1012010BD13 -:1036A0000020FCE710B50446FCF74EFD0068005D05 -:1036B00000F03E0038B12A2C05D00D2C03D00A2C86 -:1036C00001D0012010BD0020FCE70000FDF7A8FCA0 -:1036D000FEF741FFFEF758FDFEF700FEFEF7DCFDAA -:1036E000FEF718FEFEF732FEFEF76AFFFEF7C8FC93 -:1036F000FDF722FAFEF760FE012218491848FEF78E -:10370000E1FB002000F04EFB012216491648FEF7AF -:10371000D9FB002000F0E6FB4FF47A710A2000F09C -:1037200007FC12A0FFF768FA1CA0FFF765FA24480F -:1037300000682449B0FBF1F4214623A0FFF75CFAAE -:1037400027A0FFF759FA07E0FEF7EAFFFEF7D8FCDB -:10375000FDF708FA00F002FCF6E700000400002084 -:1037600054010020840000200C0100200D0A3D3D82 -:103770003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D79 -:103780003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D69 -:103790003D3D3D3D3D3D0D0A000000004533322DCD -:1037A0003433335442482D5343204170706C696365 -:1037B0006174696F6E20537461727465640D0A00E0 -:1037C0006800002040420F0053797374656D2043F8 -:1037D0006C6F636B3A202564204D487A0D0A000017 -:1037E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D09 -:1037F0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DF9 -:103800003D3D3D3D3D3D3D3D0D0A000070B58CB058 -:10381000044694F84B0008B169A200E06AA294F84B -:10382000490094F8481004F12803CDE90102009101 -:1038300004F10802214665A0FEF7EAFE6EA12046CB -:10384000FCF79FFC002847D104F10800FFF7FFFEBA -:1038500020B104F12800FFF7FAFE38B967A000F0A4 -:103860002FFC68A0FEF7D4FE0CB070BD04F1080078 -:10387000FCF795FC064604F12800FCF790FC054691 -:10388000012E20DB042E1EDC0DB1012D1BD10DB14C -:10389000012200E000221146F0B2FEF7BDFD3346E2 -:1038A00062A2202104A80095FFF7B6F904A800F051 -:1038B0002FFC0DB160A000E060A00246314660A080 -:1038C000FEF7A6FE07E04DA000F0FAFB2A463146BF -:1038D00061A0FEF79DFE70E06AA12046FCF751FC56 -:1038E000002857D104F10800FFF7A9FE28B966A106 -:1038F00004F10800FCF745FCD0B9FEF7A1FB054632 -:10390000C5F3C000C5F38001C5F3400205F0010313 -:10391000CDE9002102905DA2202104A8FFF77CF9E7 -:1039200004A800F0F5FB29465BA0FEF771FE44E019 -:1039300004F10800FFF78BFE28B304F10800FCF740 -:103940002EFC0546012D16DB042D14DC691EC8B2C1 -:10395000FEF78AFB06462B4657A2202104A80096B4 -:10396000FFF75AF904A800F0D3FB3246294655A0C8 -:10397000FEF74EFE06E021A000F0A2FB294656A06D -:10398000FEF746FE19E01DA000F09AFB5AA0FEF7D4 -:103990003FFE12E062A12046FCF7F3FB30B960A0C5 -:1039A00000F0B6FB60A0FEF733FE06E065A000F075 -:1039B00087FB214664A0FEF72BFE00BF54E7000002 -:1039C00028736B6970290000000000005B434D44C0 -:1039D0005D20434D443D25732050313D25732050DB -:1039E000323D25732043533D253032582F25303248 -:1039F000582025730D0A0000524C000050415241DE -:103A00004D0000005B434D445D20496E76616C695A -:103A10006420524C20706172616D733A206E6F7435 -:103A2000206E756D657269630D0A0000524C2C257D -:103A3000642C2564000000004F4E00004F464600F5 -:103A40005B434D445D2052656C6179202564202DD7 -:103A50003E2025730D0A00005B434D445D20496EF6 -:103A600076616C696420524C20706172616D733AAA -:103A70002069643D25642073746174653D25640D7F -:103A80000A000000444900003000000044492C2591 -:103A900064256425642564005B434D445D204449EE -:103AA00020616C6C207374617465733A20307825E2 -:103AB0003032580D0A00000044492C25642C25643E -:103AC000000000005B434D445D2044492564203DD7 -:103AD0002025640D0A0000005B434D445D20496EC3 -:103AE00076616C6964204449206368616E6E656C20 -:103AF0003A2025640D0A00005B434D445D20496E69 -:103B000076616C696420444920706172616D3A206D -:103B10006E6F74206E756D657269630D0A0000002A -:103B20004543484F000000005B434D445D20454342 -:103B3000484F20726573706F6E73652073656E7485 -:103B40000D0A0000434D44005B434D445D20556E1B -:103B50006B6E6F776E20636F6D6D616E643A2025BA -:103B6000730D0A0010B500200649087081F84D0059 -:103B700081F84E0081F851004C210248401CFCF7AE -:103B8000EEFA10BDE401002030B502460B4602B14A -:103B900013B96FF0020030BD00211AE00F48006831 -:103BA000B0F5806F02D34FF0FF30F4E7505C0C4C5F -:103BB0000C4D2D6860550B480068401CC0F309008F -:103BC000084C206005480068401C044C2060481CDC -:103BD00081B29942E2DB0020DDE700008000002096 -:103BE0004E070020780000200748006850B10648C2 -:103BF0000068401E044908600846006810B90120AA -:103C00000249087070470000880000208C000020E6 -:103C100010B502210D48FDF7E3F9A0B9FDF7EEF963 -:103C2000044607E0FDF7EAF9001B642802D36FF0B1 -:103C3000010010BD02210548FDF7D2F90028F1D09E -:103C40000220FDF729F80020F3E70000000C0140F6 -:103C50000548007810B94FF0FF3070470020024946 -:103C6000087000BFF9E700007400002008480078E1 -:103C700010B14FF0FF307047002006490860064938 -:103C80000860064908600120014908700020F2E739 -:103C900074000020780000207C00002080000020BC -:103CA00070B50546FFF7B4FF04460CB1204670BD61 -:103CB00035B1012D0FD0022D18D0032D2CD120E0CD -:103CC000002280211C48FDF793F9002201211B48A6 -:103CD000FDF78EF923E0012280211748FDF788F9CE -:103CE000002201211548FDF783F918E00022802108 -:103CF0001148FDF77DF9012211461048FDF778F9CA -:103D00000DE0012280210C48FDF772F901221146D5 -:103D10000A48FDF76DF902E06FF00200C7E700BF47 -:103D20000520FCF7B9FFFFF773FF04460CB12046EE -:103D3000BDE70020BBE7000000080140000C014087 -:103D400008B5094800684068C0B200900121684683 -:103D5000FFF71AFF0A2005490860012204490248BA -:103D6000FEF7B0F808BD00000C010020880000201C -:103D70008400002070B504460D4604B115B96FF0FB -:103D8000020070BD4FF6FF732A4621460448FEF735 -:103D9000D3F8064616B16FF00100F2E70020F0E715 -:103DA0000C01002070B505461348007810B14FF0A3 -:103DB000FF3070BDFFF75AFF044614B14FF0FF30DB -:103DC000F7E735B90D480E490A68026009790171B3 -:103DD00004E00A482968016029790171074800F068 -:103DE00023F804461CB1FFF733FF2046E1E701202A -:103DF000014908700020DCE76C0000206D00002005 -:103E00000442000810B50446C02006490870084660 -:103E10002168C0F80110217941710621FFF7AAFF3E -:103E200010BD00004E03002070B5054615B96FF0B7 -:103E3000030070BDFFF7ECFE044614B16FF0020002 -:103E4000F7E70320FFF72CFF044614B16FF00200E0 -:103E5000EFE72846FFF7D6FF6420FCF71DFF0020A0 -:103E6000FFF71EFF044614B16FF00200E1E70348BC -:103E700029680160297901710020DAE76D000020CE -:103E800070B504462046FFF70BFF054615B16FF0ED -:103E9000020070BD0020FCE770B504460E4604B178 -:103EA00016B96FF0030070BD0A48007810B96FF0C2 -:103EB0000500F8E731462046FFF75CFF054615B1DF -:103EC0006FF00200EFE7214603A0FEF795FE002009 -:103ED000E9E700006C00002053656E743A202573FA -:103EE0000000000070B5054615B94FF0FF3070BDF9 -:103EF0001C210E48FCF733F900200C490870487665 -:103F0000084629684161297901761430FFF78CFF52 -:103F100004460CB12046EAE70020FFF7B1FF044653 -:103F20000CB12046E3E70020E1E700009800002004 -:103F3000024602B111B94FF0FF3070470648826067 -:103F40000020054B58601846C160002018611870A9 -:103F5000012058760020F0E79800002070B588B066 -:103F60003248407E08B908B070BDFDF747F80446F6 -:103F70002E48007830B1012808D0022842D003280A -:103F80004CD14AE00120294908704BE0274840689D -:103F900026498968884206D30320244908700020F6 -:103FA00000F00EF93EE021480069201A1F49C96857 -:103FB000884226D31D484068431C1C482021826843 -:103FC000684600F0D9F80546002D16DD29466846FA -:103FD000FFF762FF06467EB914484068401C13494B -:103FE000486008460461012000F0EAF83220FCF73E -:103FF00053FE002000F0E4F800BF02200B490870D7 -:1040000000BF0FE009480069201A0849C9688842C2 -:1040100002D301200549087004E003E003200349AE -:10402000087000BF00BF00BF9DE70000980000209F -:10403000F0B589B004460D46631C12A2202101A8E8 -:104040000095FEF7E9FD0646701EC1B20DF10500B0 -:10405000FFF7A3FA0746C6F1200101AA90193B46D3 -:104060000DA2FEF7D9FD01A8FEF74CFB0DB10CA087 -:1040700000E00DA00246611C0CA0FEF7C9FA09B0D1 -:10408000F0BD00002444495F4556454E542C25643C -:104090002C25642A00000000253032580D0A00004B -:1040A00048494748000000004C4F57005B494F5DAE -:1040B0002043482564202D3E2025730D0A00000072 -:1040C00070B588B005462B460CA220216846FEF745 -:1040D000A3FD0446601EC1B20DF10100FFF750FAC6 -:1040E0000646C4F120010DEB0400334606A2FEF79C -:1040F00093FD6846FEF706FB08B070BD244552529A -:104100002C25732A00000000253032580D0A0000CB -:1041100070B590B005462B460CA240216846FEF7CC -:104120007BFD0446601EC1B20DF10100FFF728FAC5 -:104130000646C4F140010DEB0400334605A2FEF72C -:104140006BFD6846FEF7DEFA10B070BD244F4B2CB5 -:1041500025732A00253032580D0A000010B500F0F2 -:1041600038F80448006820B102480068401E014940 -:10417000086010BD000000202DE9F84305460E46FA -:10418000174698460DB1102E02DA0020BDE8F883DC -:104190003B4607A231462846CDF80080FEF73CFD9D -:1041A0000446002C01DDA0B2F0E70020EEE700009D -:1041B00054582E2530336C752E2530336C752E00F7 -:1041C00010B5044614B1FFF707FA01E0FFF7FAF95A -:1041D00010BD00B5FFF708FD00BD0203040506078A -:1041E00008090A0B0C0D0E0F101001020000000050 -:1041F0000000000001020304060708090000000097 -:104200000102030400001A1704C1C1C141542B4428 -:104210004556545950453D3F0041542B4657434F56 -:1042200044453D3F00004040404040404040404108 -:10423000414141414040404040404040404040407A -:1042400040404040404005020202020202020202D7 -:104250000202020202022020202020202020202012 -:1042600002020202020202909090909090101010B0 -:10427000101010101010101010101010101010103E -:1042800010020202020202888888888888080808CA -:10429000080808080808080808080808080808089E -:1042A000080202020240000026420008CC42000838 -:1042B0000000002098000000C02C000864430008A3 -:1042C00098000020B80E0000D02C0008000000006C -:1042D00000000000000C0140100000000000000081 -:1042E00000000000000C0140200000000000000061 -:1042F00000000000000C0140400000000000000031 -:1043000000000000000C01408000000000000000E0 -:10431000000000000000000001000000000000009C -:10432000000000000000000000000000100000007D -:10433000010000000024F400000000000000000064 -:10434000000000000000000000000000000000006D -:10435000000000000000000000000000000000005D -:044360000000000059 +:1001400091400843194670470048704758540008CA +:1001500010B50446FFF7F8FF0068005D00F00100ED +:1001600010BD40EA01039B0703D009E008C9121F34 +:1001700008C0042AFAD203E011F8013B00F8013B61 +:10018000521EF9D27047D2B201E000F8012B491E8D +:10019000FBD270470022F6E710B513460A46044624 +:1001A0001946FFF7F0FF204610BD421C10F8011B56 +:1001B0000029FBD1801A704710B5002200E0521CC4 +:1001C000835C8C5CA34201D1002BF8D1D8B2E1B2A0 +:1001D000401A10BD30B505460020034600E05B1C08 +:1001E000934205D2EC5CC85C201A01D1002CF6D1F8 +:1001F00030BD00000FB400B58DB010A909900B9070 +:1002000000914FF0FF300A9000200C9005480690B6 +:10021000054807906A4609A80F9900F015F90DB036 +:100220005DF814FB65040008830400082DE9FF5FF6 +:100230001D464FF0FF3BD5E9014691465F464FF022 +:100240000008A9697F1C01988847296A8246884767 +:100250000028F6D1BAF1FF3F0CD024F4C064002E80 +:1002600019DD600614D5BAF12B0F09D0BAF12D0FA4 +:100270000ED103E0584604B0BDE8F09F44F480641A +:10028000A9697F1C01988847761E8246002E02DDF0 +:10029000BAF1300F03D0B9F1000F26D032E0A969CE +:1002A000761E44F400747F1C019888478246002E15 +:1002B00005DDBAF1780F06D0BAF1580F03D0B9F1C5 +:1002C000000F10D01EE0B9F1000F02D0B9F1100FED +:1002D00018D1A969761E24F400747F1C0198884700 +:1002E0008246102002E0082000E00A20814609E052 +:1002F00008FB0908A969761E44F400747F1C019864 +:1003000088478246002E05DD4946504600F088F8B1 +:100310000028EDDAE96901988847A00502D46FF05A +:100320000100A8E7E00725D1600613D5600502D5D6 +:10033000C8F1000000E0404629680A1D2A600968EB +:10034000220501D5087015E0220701D5088011E0CB +:1003500008600FE02868011D29600068210502D5AA +:1003600080F8008006E0210702D5A0F8008001E0B7 +:10037000C0F8008038467EE770B5064603F00AFAFA +:10038000046805460A220021304600F08BF82C60F4 +:1003900070BD30B50B46014600202022012409E043 +:1003A00021FA02F59D4205D303FA02F5491B04FA2E +:1003B00002F52844151EA2F10102F1DC30BD2DE941 +:1003C000F05F0546002092469B46884606468146D9 +:1003D00040241BE02846414647462246FFF7A4FE3C +:1003E00053465A46C01A914110D311461846224628 +:1003F00000F05AFA2D1A67EB01084F4622460120F9 +:10040000002100F051FA17EB00094E41201EA4F123 +:100410000104DFDC484631462A464346BDE8F09FEA +:100420003A2800D2303820F02002412A01D3A2F12C +:100430003700884201D34FF0FF3070470268114403 +:100440001378016018467047D1600449516104492E +:10045000116200211161114600F048BA3D04000804 +:1004600051010008426842B1016811F8013B23B113 +:10047000521EC0E90012184670470121C160881E53 +:10048000704742685AB1C368016843B983688B42B8 +:1004900005D0491E521CC0E90012002070474FF0E1 +:1004A000FF3070472DE9F04791460F4680460446DD +:1004B000002614F8015B2DB1FFF746FE0068405D91 +:1004C000C007F6D12B2D02D02D2D18D0641E4A4620 +:1004D0003946204600F0A2FB27B13968A14201D17C +:1004E000C7F8008071054FF002040BD54042002888 +:1004F00003DD03F04FF90460A007BDE8F08746F480 +:100500008066E4E70028F8DA03F044F904606FF04D +:100510000040F2E72DE9FE4F804681EA0300C00F5C +:100520000C46009021F0004123F00045B8EB02009A +:10053000A94105D24046214690461C460B4602463C +:1005400023F00040104347D0270DC7F30A00C3F340 +:100550000A510290401A019040286BDAC3F313004D +:1005600040F4801B0098924620B10023D2EB030A8E +:1005700063EB0B0B01985946C0F14002504600F066 +:1005800093F906460D4650465946019A00F09BF9EC +:1005900010EB08006141002487EA115284EAE773F6 +:1005A0001A4340D0009A62B3019A012A4FEA0752D7 +:1005B00015DC001B61EB02014FF0004202EA07521A +:1005C000CDE90042001C41F5801132462B4600F077 +:1005D00083FB03B0BDE8F08F40462146F9E7001BDE +:1005E00061EB0201001C41F5801300185B412018EB +:1005F000A2F5001747EB030140EAD570B6196D412B +:1006000011E06D084FEA360645EAC0754FEA075219 +:10061000001B61EB0201001C41F5801149084FEA03 +:1006200030000019514132462B4603B0BDE8F04F6F +:1006300000F043BB0098012240000023D0EB0202EF +:1006400063EBE073009821464FEAE074B8EB0000DA +:1006500061EB0401E9E783F000435BE781F00041CF +:1006600058E72DE9FE4F81EA030404F0004421F02D +:10067000004100944FF0000B23F0004350EA0104C6 +:100680005ED052EA03045BD0C3F30A54C1F30A55A7 +:100690002C44A4F2F3340194A0FB0254C1F31301DF +:1006A00041F48011C3F3130343F4801301FB0244AC +:1006B00000FB034E840A970A44EA815447EA8357B1 +:1006C000A4FB076802958D0A05FB07854FEA932C6A +:1006D00004FB0C542705029D4FEA065847EA1637DB +:1006E000B5EB08056EEB070C870E920E47EA8117F3 +:1006F00042EA8312A7FB0201B6EB0B0164EB000494 +:100700002B0D43EA0C335E1844EB1C50DA4651467D +:10071000E7FB0201C5F313044FEA0B3343EA14531A +:100720004FEA0432019C43EA0603A4F10C0402944C +:10073000009CCDE900B400F0CFFA03B0BDE8F08F23 +:1007400000200146F9E72DE9F04D81EA030404F0A9 +:10075000004B21F0004514464FF0000A23F0004101 +:1007600050EA050220D054EA01021DD0C5F30A5711 +:100770000246C5F31303C1F31300C1F30A5640F454 +:10078000801543F48013A7EB0608101BD64608F229 +:10079000FD3873EB050002D308F1010801E092185F +:1007A0005B41B8F1000F03DA00200146BDE8F08D8F +:1007B00000204FF48011064684460EE0171B73EBB1 +:1007C000050705D3121B63EB050306434CEA010C36 +:1007D00049084FEA300092185B4150EA0107EDD119 +:1007E00052EA030012D082EA040083EA05010843BA +:1007F00005D0101BAB4106D20122002306E00022E7 +:100800004FF0004302E06FF0010253101AEB0600B4 +:100810004CEB085110EB0A0041EB0B01BDE8F04D29 +:1008200000F04BBAC1F30A52C1F3130140F2FF3397 +:1008300041F480119A4202DA00200146704740F2EA +:1008400033439A42A2F2334202DC5242FFF76CBCBD +:1008500000F02AB830B5041E71F1000404DB4FF03B +:100860000044404264EB0101141E73F1000405DBF7 +:100870001C464FF00043524263EB0403994208BF09 +:10088000904230BD064C074D06E0E06840F00103A1 +:1008900094E8070098471034AC42F6D3FFF72AFCDF +:1008A00094540008B4540008202A04DB203A00FACB +:1008B00002F1002070479140C2F1200320FA03F3B7 +:1008C000194390407047202A06DBCB17203A41FAA3 +:1008D00002F043EAE07306E041FA02F3D040C2F1CD +:1008E0002002914008431946704700002DE9F34F5C +:1008F0008BB04FF0000801F10C000C464FF0010BDB +:1009000046460DF1080A019062690121019890475D +:10091000051E2DD0252D2CD0216A8847C0B16269D3 +:10092000012101989047216A88470028F7D1411E8C +:1009300062690198904700E0761CA1690B9888478E +:10094000216A88470028F7D1E1690B988847DBE7DF +:10095000A1690B9888470746A84201D1761CD3E7C6 +:10096000E1690B9888477F1C02D1B8F1000F6FD066 +:1009700047E1002762693D463946019890472A2899 +:1009800004D162690121019890470125DFF888921E +:100990006269012101989047A0F130010A290AD229 +:1009A0004F45E5DC07EB870100EB4107303FDFD423 +:1009B00045F01005ECE7E90601D46FF000476C281C +:1009C0000AD04C2814D0682815D06A280DD0742875 +:1009D0001CD07A281AD01DE0626901210198904745 +:1009E0006C2802D045F0040514E045F002050DE046 +:1009F00045F020050AE062690121019890476828C6 +:100A000002D045F0080505E045F400656269012162 +:100A100001989047C4E9015765283DD019DC582852 +:100A20007AD00CDC452837D004DC252826D0412894 +:100A300031D131E046282FD047282CD12CE05B283B +:100A400077D0612828D063287CD0642823D15AE04D +:100A5000D1E06F2848D008DC66281DD067281BD05D +:100A6000692821D06E2816D127E0702845D0732838 +:100A700068D0752847D078280DD14DE0A1690B9832 +:100A80008847054625283FF469AFE1690B988847F8 +:100A90006D1C3FF46AAFB4E023466A466FF0010074 +:100AA0000B99AFF300809FE045F040006060A8071D +:100AB00023464FF0000236D43EE0E8077FF447AF0C +:100AC0002068011D21600068290501D506701BE71B +:100AD000290701D5068017E7A90703D5F117C0E953 +:100AE000006111E706600FE745F040006060A8076D +:100AF00023464FF0080216D41EE040F60E0125EA08 +:100B00000100606016E045F040006060A8072346E1 +:100B10004FF00A0207D40FE045F040006060A807DC +:100B200008D5234610226FF001000B99AFF3008027 +:100B30005AE007E0234610226FF001000B99FFF7FF +:100B400075FB51E04FF000094F464B46632802D039 +:100B50005B2807D041E02079C00601D40120A060C5 +:100B600001273AE062690121019890475E2805D18A +:100B70004FF001096269494601989047216939B9E6 +:100B800000210A46534643F82120491C0829FADB74 +:100B9000B0B3216969B9C11700EBD16253110AEBF7 +:100BA000830122F01F02821A01200B689040034348 +:100BB0000B6062690121019890475D28E8D1B9F185 +:100BC000000F09D00020514651F82020D24341F8AF +:100BD0002020401C0828F7DB02AB224600976FF06C +:100BE00001000B99AFF3008000280CDA401C08D1FB +:100BF000BBF1000F05D04FF0FF300DB0BDE8F08F16 +:100C0000FFE74046F9E7E90701D108F1010806448A +:100C10004FF0000B78E60000CCCCCC0C2DE9F05F57 +:100C200082460078002715468B460AF10104B94632 +:100C3000302801D09DB113E014F8010B012778286A +:100C400003D0582801D045B10AE00DB1102D07D1CD +:100C50000027102514F8010B02E0082500E00A2502 +:100C60000026B0460EE005FB080005FB06F1012753 +:100C700001EB10461FFA80F8B6F5803F00D3B94665 +:100C800014F8010B2946FFF7CBFB0028EBDABBF188 +:100C9000000F05D00FB1641E00E05446CBF80040B1 +:100CA000B9F1000F06D002F075FD02210160C81EE7 +:100CB000BDE8F09F48EA0640FAE710B5141E73F14C +:100CC000000408DA401C41F1000192185B411A430C +:100CD00001D120F0010010BD2DE9F04D92469B4658 +:100CE00011B1B1FA81F202E0B0FA80F220329046FE +:100CF000FFF7DAFD04460F4640EA0A0041EA0B011D +:100D000053465A46084313D0114653EA010019D0FE +:100D1000C8F140025046FFF707FA05460E46504616 +:100D200059464246FFF7C0FD084305D0012004E0C4 +:100D300020463946BDE8F08D0020054346EAE076BE +:100D40002C4337430A986305E40AA0EB080000220D +:100D5000FD0A44EA47540A3002D500200146E9E77B +:100D6000010510196941DDE9084500196941BDE82F +:100D7000F04DA2E700BFFEE770B504460D46B5484A +:100D80000078C8B1B3480078052815D0B148406D47 +:100D9000281AB0F57A7F0FD3AE48806D401CAD495C +:100DA0008865ADA002F0A2F903F066FD242C02D103 +:100DB0000120A849087070BDA6484565007806283E +:100DC0000BD2DFE800F0030B57A4E2F9242C04D186 +:100DD00003F052FD01209F49087037E12C2C0CD103 +:100DE00000219C4890F84E20401C815402209949D3 +:100DF0000870002081F84E003BE02A2C0ED1002123 +:100E0000944890F84E20401C815404209149087069 +:100E1000002081F84E0081F852002AE0204603F0BD +:100E2000B9FAF8B18B4890F84E00072812DA8948D1 +:100E300090F84E1090F84E00401C864A82F84E0002 +:100E4000501C4454401E90F84F006040114681F8F9 +:100E50004F000EE07F48806D401C7E49886503F09E +:100E60000BFD06E07B48806D401C7A49886503F0E5 +:100E700003FDEBE02C2C0CD10021764890F84E209D +:100E800009308154032073490870002081F84E0016 +:100E90003CE02A2C0ED100216E4890F84E200930FB +:100EA000815404206B490870002081F84E0081F8BD +:100EB00052002BE0204603F080FA00B3654890F81A +:100EC0004E001F2813DA634890F84E1090F84E0039 +:100ED000401C604A82F84E0002F10900445409386F +:100EE00090F84F006040114681F84F000EE05948DD +:100EF000806D401C5749886503F0BEFC06E05548EC +:100F0000806D401C5349886503F0B6FC9EE02A2C96 +:100F10000ED100214F4890F84E20293081540420F2 +:100F20004C490870002081F84E0081F852002BE0F7 +:100F3000204603F042FA00B3464890F84E001F28BE +:100F400013DA444890F84E1090F84E00401C414A85 +:100F500082F84E0002F129004454293890F84F00DD +:100F60006040114681F84F000EE03A48806D401C09 +:100F70003849886503F080FC06E03648806D401CE7 +:100F80003449886503F078FC60E00A2C42D1314A8C +:100F900092F8511092F8500003F08BF92D4981F826 +:100FA0004900084690F84F1080F84A1090F8490020 +:100FB000FF2802D1012101E040E00021254880F80E +:100FC0004D1090F84D0030B9224890F8491090F833 +:100FD0004A0081420BD101211E4880F84C100520A7 +:100FE0001C4908700846C06D401CC86525E01948BA +:100FF000806D401C17498865084690F84A2090F893 +:1010000049101DA002F072F826A004F06BF803F05E +:1010100033FC12E00D2C10D00E4890F8520002283C +:101020000BDA0C4890F8521090F85200401C094A14 +:1010300082F8520002F15000445407E003F01CFC17 +:10104000242C02D101200349087000BF00BF00BF5B +:10105000B1E60000340200205B434D445D2054693A +:101060006D656F75742C2072657365742070617284 +:101070007365720D0A0000005B434D445D204368B8 +:1010800065636B73756D206572726F723A2072655D +:1010900063763D253032582063616C633D253032E4 +:1010A000580D0A004353000010B504460948007863 +:1010B00005280CD1074890F84C0040B12CB14D22C6 +:1010C0000449491C2046FFF74CF8012010BD0020C0 +:1010D000FCE700003402002010B560210448FFF74F +:1010E00059F800200249087002A001F0FFFF10BD6E +:1010F000340200205B434D445D20496E6974204FEB +:101100004B0D0A00014908607047000008000020EC +:1011100001490870704700000C00002010B5074816 +:101120000078052809D1054890F84C0028B10348FB +:10113000401C03F00FFA03F09FFB10BD34020020A7 +:1011400010B5002018E0164901EB001108700021CD +:10115000134A02EB00125160114A02EB0012916037 +:101160000F4A02EB001211730E4A22F810100E4AB9 +:1011700042F82010411CC8B20328E4DB00200B49D0 +:1011800008600B4908600B49086001200A49087093 +:101190000A48FFF7B7FF032109A001F0A7FF10BD20 +:1011A000A0030020720000205005002064000020F1 +:1011B000680000206C00002070000020D54000086E +:1011C0005B524F555445525D20496E6974204F4B18 +:1011D0002C20256420706F727473207265676973A8 +:1011E00074657265640D0A00F8B500F01BFB0646D5 +:1011F000002413E0012C00D10EE02C4830F814003C +:10120000002808DD2A4850F82400301A322802D37A +:10121000204602F099FF00BF601CC4B2032CE9DB3A +:1012200000243EE0012C00D139E0204601F036FDDB +:10123000054605B933E01F4804702046FFF768FFF4 +:1012400015E09DF80010204602F008FF00F0EAFAD1 +:10125000074639469DF80000FFF78EFD164800EB63 +:1012600004108068401C144901EB04118860694631 +:10127000204601F06BFD0028E3DC0020FFF714FF9F +:1012800060B1204602F060FF0C480068401C0B492A +:1012900008600120084901EB0411087300BF601CBD +:1012A000C4B2032CBEDBFFF739FFF8BD720000208B +:1012B0005005002070000020A003002068000020DE +:1012C00010B500200349087003F002F802A001F0F5 +:1012D00087FF10BD780000205B4C4F475D204465C0 +:1012E000627567206C6F672073797374656D206910 +:1012F0006E697469616C697A65640D0A00000000AA +:101300000FB470B5C2B005460E462248007885423B +:1013100003DA42B070BC5DF814FB304602F0F4FF13 +:1013200000B9F6E700240EB1304600E01AA01C4ACE +:10133000009052F82530C4F5807102AA101919A244 +:1013400002F0D8F90444FF2C0DDA49A80190C4F545 +:10135000807102AA1019019B489A02F0E5F9044431 +:101360000020019000BF002C0CDDFF2C0ADC0D22B8 +:101370002046641C02A90A54FF2C03DC0A222046E2 +:10138000641C0A54002C03DDA1B202A801F0CEFEB9 +:1013900000BFBEE7780000204D41494E000000002C +:1013A000645300085B25735D5B25735D20000000BE +:1013B000704772B600BFFEE70146002291F8210097 +:1013C000022808D00420886300BF002081F8200094 +:1013D00000BF012070470868006820F00E000B680D +:1013E00018600868006820F001000B68186091F828 +:1013F000403001209840CB6B5860012081F82100DB +:1014000000BF002081F8200000BF1046E2E7000086 +:1014100070B50446002594F82100022803D004206A +:10142000A063012548E02068006820F00E002168D4 +:1014300008602068006820F00100216808601F49EA +:101440002068884201D1012026E01C49143120681F +:10145000884201D110201FE01849283120688842B5 +:1014600001D1801518E015493C312068884201D12E +:10147000801411E0114950312068884202D14FF4A4 +:10148000803009E00D4964312068884202D14FF470 +:10149000801001E04FF08070084908394860012051 +:1014A00084F8210000BF002084F8200000BF606B9A +:1014B00010B12046616B8847284670BD0800024085 +:1014C00070B5044600F0AEF906462546681C10B11A +:1014D00004480078054400BF00F0A4F9801BA8422E +:1014E000FAD370BD840000202DE9F847034600229E +:1014F00094466EE14FF0010808FA02F4D1F800803A +:1015000008EA0400A0427DD1DFF8DCA2D1F8048013 +:10151000A8EB0A09D0453AD014DCB8F1030F50D03B +:1015200009DCB8F1000F31D0B8F1010F1CD0B8F1CF +:10153000020F49D120E0B8F1110F18D0B8F1120F05 +:1015400042D11EE0B9F5881F25D006DCB9F5803FF1 +:1015500020D0B9F5801F37D11AE0B9F5001F18D097 +:10156000B9F5041F30D117E0D1F80CC02DE0D1F847 +:101570000C8008F1040C28E0D1F80C8008F1080C6C +:1015800023E0D1F80C8008F10C0C1EE000BF00BF76 +:1015900000BF00BF00BF00BFD1F80880B8F1000F46 +:1015A00002D14FF0040C0BE0D1F80880B8F1010F24 +:1015B00003D14FF0080C1C6102E04FF0080C5C6195 +:1015C00003E04FF0000C00E000BF00BFFF2801D88F +:1015D000984601E003F104084646FF2802D84FEA86 +:1015E000820803E0A2F108084FEA88084746D6F8C7 +:1015F00000804FF00F0909FA07F928EA09080CFAE8 +:1016000007F900E088E048EA0908C6F80080D1F848 +:10161000048008F08058B8F1805F7DD100BFDFF80A +:10162000CC81D8F8188048F00108DFF8C091C9F8DB +:101630001880C846D8F8188008F00108CDF8008056 +:1016400000BF00BF4FEAB9384FEA920958F8295055 +:101650004FEA82784FEA18794FF00F0808FA09F834 +:1016600025EA0805DFF88881434502D14FF00008DC +:1016700016E0DFF88081434502D14FF001080FE00A +:10168000DFF87481434502D14FF0020808E0DFF82B +:101690006C81434502D14FF0030801E04FF004088C +:1016A0004FEA82794FEA197908FA09F848EA0505FC +:1016B000DFF84C814FEA920948F82950D1F80480AC +:1016C00008F48018B8F5801F0AD1DFF83881D8F8FF +:1016D000008048EA0008DFF82C91C9F8008009E092 +:1016E000DFF82081D8F8008028EA0008DFF814919C +:1016F000C9F80080D1F8048008F40018B8F5001F7C +:1017000010D1DFF8008108F10408D8F8008048EA19 +:101710000008DFF8F09000E05AE009F10409C9F888 +:1017200000800DE0DFF8DC8008F10408D8F80080C4 +:1017300028EA0008DFF8CC9009F10409C9F8008014 +:10174000D1F8048008F40038B8F5003F0ED1DFF876 +:10175000B480A8F10408D8F8008048EA0008DFF84F +:10176000A490A9F10409C9F800800DE0DFF8948085 +:10177000A8F10408D8F8008028EA0008DFF884906F +:10178000A9F10409C9F80080D1F8048008F4803870 +:10179000B8F5803F0ED1DFF86C80A8F10808D8F8C2 +:1017A000008048EA0008DFF85C90A9F10809C9F850 +:1017B00000800DE0DFF84C80A8F10808D8F8008020 +:1017C00028EA0008DFF83C90A9F10809C9F8008070 +:1017D000521CD1F8008028FA02F8B8F1000F7FF40B +:1017E00089AEBDE8F887000000001110001002402B +:1017F00000080140000C01400010014000140140AD +:101800000800014008040140024693680B400BB1F8 +:10181000012000E0002070470AB1016101E00B04E3 +:101820000361704701480068704700007C00002099 +:101830000348006803490978084401490860704773 +:101840007C0000208400002010B50848006840F0AB +:10185000100006490860032000F0A8F80F2000F0EF +:1018600007F800F02BF8002010BD00000020024017 +:1018700070B504460E4800784FF47A71B1FBF0F071 +:101880000C490968B1FBF0F5284600F09DFC08B151 +:10189000012070BD102C07D200222146501E00F0FE +:1018A00047F80548046001E00120F2E70020F0E776 +:1018B00084000020880000208000002008B500BFC0 +:1018C0001148806940F001000F498861084680692D +:1018D00000F00100009000BF00BF00BF0846C069D3 +:1018E00040F08050C8610846C06900F08050009008 +:1018F00000BF00BF00BF0549486820F0E06040F02D +:101900000070486000BF08BD0010024000000140A8 +:1019100001460846002809DB00F01F0301229A4017 +:1019200043099B0003F1E023C3F8002100BF704787 +:101930002DE9F05F80460D461646002701F00EFFA8 +:10194000074639462A46334601F00700C0F1070A28 +:10195000BAF1040F02D94FF0040A01E0C0F1070AFE +:10196000D14600F1040ABAF1070F02D24FF0000A83 +:1019700001E0A0F1030AD4464FF0010A0AFA09FA7D +:10198000AAF1010A0AEA020A0AFA0CFA4FF0010B5C +:101990000BFA0CFBABF1010B0BEA030B4AEA0B044D +:1019A0002146404601F0E2FEBDE8F09F00BF00F096 +:1019B0000702064B19684FF6FF031940044B0B430F +:1019C00043EA0221014B196000BF70470CED00E0B3 +:1019D0000000FA0570B504460D460CB9012070BD33 +:1019E0005A48006800F00700A8420ED25748006825 +:1019F00020F007002843554908600846006800F0B9 +:101A00000700A84201D00120E9E7207800F0020099 +:101A100002281DD1207800F00400042805D14C488C +:101A2000406840F4E0604A494860207800F00800CF +:101A3000082805D14648406840F460504449486051 +:101A40004348406820F0F000A168084340494860DE +:101A5000207800F0010078B36068012806D13C4886 +:101A6000006800F4003090B90120B8E760680228EF +:101A700006D13748006800F0007040B90120AEE799 +:101A80003348006800F0020008B90120A7E7304899 +:101A9000406820F00300616808432D494860FFF763 +:101AA000C1FE064609E0FFF7BDFE801B41F288310A +:101AB000884202D9032092E707E02548406800F0F9 +:101AC0000C006168B0EB810FEDD12048006800F098 +:101AD0000700A8420ED91D48006820F007002843DF +:101AE0001A4908600846006800F00700A84201D0C3 +:101AF000012074E7207800F00400042807D114487E +:101B0000406820F4E060E1680843114948602078AB +:101B100000F00800082808D10D48406820F4605003 +:101B2000216940EAC1000A49486000F03FF80849CD +:101B30004968C1F30311074A515CC840064908606F +:101B400006480068FFF794FE002048E700200240A6 +:101B5000001002409E5300088800002080000020F2 +:101B600001480068704700008800002000B5FFF7BA +:101B7000F7FF04494968C1F30221034A515CC84098 +:101B800000BD000000100240AE53000800B5FFF792 +:101B9000E7FF04494968C1F3C221034A515CC840C8 +:101BA00000BD000000100240AE53000870B50021D7 +:101BB0000022002400230020134D696801F00C0569 +:101BC000F5B1042D02D0082D19D101E00F4819E01C +:101BD0000F4DC1F38346AB5D01F4803555B10A4D1D +:101BE0006D68C5F340450B4E725D084D5D43B5FB16 +:101BF000F2F402E0084D03FB05F4204602E000BFCA +:101C0000024800BF00BF70BD0010024000127A0001 +:101C10008C5300089C53000800093D00F8B50446A9 +:101C20000CB90120F8BD207800F00100002878D020 +:101C3000F848406800F00C0004280CD0F5484068D3 +:101C400000F00C00082811D1F248406800F4803000 +:101C5000B0F5803F0AD1EF48006800F4003000285A +:101C60005FD0606800285CD10120DBE700BF6068BE +:101C7000B0F5803F06D1E748006840F48030E54980 +:101C8000086028E0606858B9E248006820F48030B5 +:101C9000E04908600846006820F4802008601AE0E7 +:101CA0006068B0F5A02F0BD1DA48006840F48020BE +:101CB000D84908600846006840F4803008600AE0AF +:101CC000D448006820F48030D24908600846006893 +:101CD00020F48020086000BF606888B1FFF7A2FD93 +:101CE000054606E0FFF79EFD401B642801D903204E +:101CF00098E7C848006800F400300028F2D010E0EF +:101D0000FFF790FD054606E0FFF78CFD401B6428B9 +:101D100001D9032086E7BF48006800F4003000289E +:101D2000F2D1207800F00200022857D1B94840686B +:101D300000F00C0050B1B748406800F00C000828D3 +:101D400018D1B448406800F4803098B9B1480068B0 +:101D500000F0020020B12069012801D0012061E7D4 +:101D6000AC48006820F0F800616940EAC100A94968 +:101D7000086033E02069E8B10120A7490860FFF757 +:101D800051FD054606E0FFF74DFD401B022801D935 +:101D9000032047E79F48006800F002000028F2D0C7 +:101DA0009C48006820F0F800616940EAC100994948 +:101DB000086013E0002098490860FFF733FD0546EE +:101DC00006E0FFF72FFD401B022801D9032029E779 +:101DD0009048006800F002000028F2D1207800F05E +:101DE000080008282DD1A069B8B101208B490860EE +:101DF000FFF718FD054606E0FFF714FD401B02281B +:101E000001D903200EE78348406A00F00200002851 +:101E1000F2D0012001F064F813E000207F4908604F +:101E2000FFF700FD054606E0FFF7FCFC401B02281B +:101E300001D90320F6E67748406A00F00200002846 +:101E4000F2D1207800F00400042873D100277148F3 +:101E5000C06900F0805070B900BF6E48C06940F0A2 +:101E600080506C49C8610846C06900F080500090FD +:101E700000BF00BF01276A48006800F48070B0B955 +:101E80006748006840F4807065490860FFF7CAFC45 +:101E9000054606E0FFF7C6FC401B642801D9032075 +:101EA000C0E65F48006800F480700028F2D000BFF0 +:101EB000E068012806D15748006A40F00100554902 +:101EC000086227E0E06858B95248006A20F0010033 +:101ED000504908620846006A20F00400086219E0D0 +:101EE000E06805280BD14B48006A40F004004949DE +:101EF00008620846006A40F0010008620AE04548AE +:101F0000006A20F00100434908620846006A20F098 +:101F10000400086200BFE068A0B1FFF783FC05463B +:101F200009E0FFF77FFC401B41F28831884202D96B +:101F3000032077E622E03748006A00F0020000281C +:101F4000EFD012E0FFF76EFC054608E0FFF76AFCF1 +:101F5000401B41F28831884201D9032062E62D48B6 +:101F6000006A00F002000028F0D1012F05D12948B5 +:101F7000C06920F080502749C86100BFE069C8B33C +:101F80002448406800F00C00082860D0E06902286E +:101F900048D1002020490866FFF744FC054606E0CA +:101FA000FFF740FC401B022801D903203AE61948FC +:101FB000006800F000700028F2D1206AB0F5803F80 +:101FC00007D11448406820F40030A1680843114943 +:101FD0004860D4E9080108430E49496821F47411A6 +:101FE00008430C49486001200B490866FFF71AFCBA +:101FF000054607E03DE0FFF715FC401B022801D92C +:1020000003200FE60348006800F000700028F2D0BB +:102010002FE00000001002400000424280044242D3 +:1020200000700040002014490866FFF7FBFB0546DE +:1020300006E0FFF7F7FB401B022801D90320F1E57A +:102040000E48006800F000700028F2D111E0E0694D +:10205000012800D1E6E50948466806F48031206A87 +:10206000814204D106F47011606A814201D00120DE +:10207000D8E50020D6E500000000424200100240F2 +:1020800010B504460CB9012010BD606A38B960680B +:10209000B0F5827F00D105E00021E16102E000217E +:1020A000216161610021A16294F8510028B90020EA +:1020B00084F85000204600F043F8022084F85100D4 +:1020C0002068006820F0400021680860A08800F4C3 +:1020D0008270218901F404410843A18901F400615F +:1020E0000843217C01F002010843217D01F0010138 +:1020F0000843218B01F400710843217F01F038016E +:1021000008432021095D01F080010843218D01F47D +:1021100000510843216808600421A06901EA1040C9 +:10212000216848602068C06920F400602168C861A7 +:1021300000206065012084F851000020A4E7000021 +:1021400010B586B0044600200290039004900590DC +:102150001A49206888422FD100BF1948C06940F44D +:1021600080401749C8610846C06900F4804001906A +:1021700000BF00BF00BF0846806940F008008861CA +:102180000846806900F00800019000BF00BF4FF4CE +:1021900020400290022003900320059002A90948E4 +:1021A000FFF7A2F94FF480400290002003900490C2 +:1021B00002A90448FFF798F906B010BD00380040A6 +:1021C00000100240000C014070B504462546681E10 +:1021D000B0F1807F01D301200FE0681E4FF0E021B5 +:1021E00048610F214FF0FF3001F0C0FA00204FF09E +:1021F000E021886107200861002070BD70477047AA +:102200002DE9F84F0446206805682068C6682068F4 +:1022100047694FF00009CA4605F00F09B9F1000FF0 +:102220000AD105F0200038B106F0200020B1204688 +:1022300001F0A0F8BDE8F88FB9F1000F7BD007F0EE +:10224000010018B906F49070002874D005F0010060 +:1022500030B106F4807018B1606C40F00100606429 +:1022600005F0040030B107F0010018B1606C40F0D7 +:102270000200606405F0020030B107F0010018B1FF +:10228000606C40F00400606405F0080048B106F09E +:10229000200010B907F0010018B1606C40F0080090 +:1022A0006064606C002845D005F0200028B106F07D +:1022B000200010B1204601F05DF820684069C0F3AD +:1022C000801A606C00F0080010B9BAF1000F2CD031 +:1022D000204601F009F82068406900F0400000B392 +:1022E00000BF00BF2168143151E8001F21F04000F9 +:1022F0002168143141E80002002AF3D100BFE06BED +:1023000050B17748E16B4863E06BFFF781F888B123 +:10231000E06B416B88470DE02046FFF770FF09E056 +:1023200009E02046FFF76BFF04E02046FFF767FF58 +:10233000002060647EE7206B012877D105F0100053 +:10234000002873D006F010000028FAD000BF00204B +:10235000009020680068009020684068009000BFEE +:1023600000BF2068406900F0400000285FD0E06BAB +:10237000006840681FFA80F8B8F1000F55D0A08DB2 +:10238000404552DDA4F82E80E06B8069202843D0C0 +:1023900000BF00BF21680C3151E8001F21F480709C +:1023A00021680C3141E80002002AF3D100BF00BFD0 +:1023B00000BF2168143151E8001F21F0010021689D +:1023C000143141E80002002AF3D100BF00BF00BF72 +:1023D0002168143151E8001F21F0400021681431B8 +:1023E00041E80002002AF3D100BF202084F8420017 +:1023F0000020206300BF00BF21680C3151E8001F9E +:1024000021F0100021680C3141E80002002AF3D1CC +:1024100000BFE06BFEF7D0FF02206063A08DE28D6D +:10242000801A81B22046FFF7E9FE03E742E0A08D63 +:10243000E18D401A1FFA80F8E08DD0B3B8F1000F9B +:1024400037D000BF00BF21680C3151E8001F21F4D4 +:10245000907021680C3141E80002002AF3D100BFDE +:1024600000BF00BF2168143151E8001F21F00100B6 +:102470002168143141E80002002AF3D100BF202076 +:1024800084F842000020206300BF00BF21680C31A7 +:1024900051E8001F21F0100021680C3141E80002D2 +:1024A000002AF3D100BF0220606341462046FFF7B7 +:1024B000A5FEBFE605F0800030B106F0800018B13F +:1024C000204601F073F8B5E605F0400030B106F0A3 +:1024D000400018B1204600F03DFFABE600BFA9E682 +:1024E000D532000810B504460CB9012010BDA06912 +:1024F00000B100E000BF94F8410028B9002084F842 +:102500004000204600F02AF8242084F8410020688A +:10251000C06820F400502168C860204600F0A8FF81 +:102520002068006920F490402168086120684069B3 +:1025300020F02A00216848612068C06840F40050FB +:102540002168C86000206064202084F8410084F87D +:1025500042000020606300BFC8E7000010B586B0ED +:102560000446002002900390049005905949206889 +:10257000884237D100BF5848806940F480405649AE +:1025800088610846806900F48040019000BF00BF68 +:1025900000BF0846806940F00400886108468069F1 +:1025A00000F00400019000BF00BF48150290022017 +:1025B00003900320059002A94848FEF795FF4FF4C9 +:1025C0008060029000200390049002A94348FEF727 +:1025D0008BFF002211462520FFF7AAF92520FFF7DF +:1025E00097F975E03E492068884236D100BF3A48E5 +:1025F000C06940F400303849C8610846C06900F439 +:102600000030019000BF00BF00BF0846806940F065 +:10261000040088610846806900F00400019000BF52 +:1026200000BF04200290022003900320059002A91D +:102630002A48FEF759FF08200290002003900490DA +:1026400002A92648FEF750FF002201212620FFF7AD +:102650006FF92620FFF75CF93AE0224920688842AA +:1026600036D100BF1C48C06940F480201A49C861B7 +:102670000846C06900F48020019000BF00BF00BF81 +:102680000846806940F0080088610846806900F0CB +:102690000800019000BF00BF0815029002200390BF +:1026A0000320059002A91048FEF71EFF4FF40060BA +:1026B000029000200390049002A90B48FEF714FF3B +:1026C000002202212720FFF733F92720FFF720F906 +:1026D00006B010BD00380140001002400008014063 +:1026E0000044004000480040000C014070B5044622 +:1026F0000D46164694F8420020280BD105B10EB9BC +:10270000012070BD0020206332462946204600F09B +:102710002DFFF6E70220F4E770B50446164920685D +:10272000884208D11548057802F0FAF929460020B8 +:1027300000F06EFA1FE01249206888420DD1FFF7C1 +:1027400071F8054629460F480078FEF715FB01226F +:102750000C490D48FFF7CAFF0DE00C49206888427C +:1027600009D10B480178022000F052FA01220849F1 +:102770000848FFF7BBFF70BD00380140AC000020E7 +:102780000044004004000020A40100200048004054 +:1027900005000020EC0100202DE9F84F04460E460C +:1027A000174699464FF0000A94F8410020284AD174 +:1027B00006B117B90120BDE8F88F00206064212020 +:1027C00084F84100FFF72EF88246A784E784A068CA +:1027D000B0F5805F04D1206910B90025B04602E051 +:1027E00035464FF000081BE053460022802120466A +:1027F000CDF8009000F00AFF08B10320DBE745B9EF +:10280000B8F80000C0F308002168486008F1020829 +:1028100003E02878216848606D1CE08C401EE0844D +:10282000E08C0028E0D15346002240212046CDF81C +:10283000009000F0EBFE08B10320BCE7202084F8F4 +:1028400041000020B7E70220B5E710B5034693F832 +:102850004100202813D101B10AB9012010BD19622D +:102860009A84DA8400205864212083F84100186893 +:10287000C06840F080001C68E0600020EEE70220A5 +:10288000ECE7000010B504460B492068884203D1EC +:10289000002000F0E5FA0DE008492068884202D1E6 +:1028A00000F0E2FC06E006492068884202D10220DE +:1028B00000F0D6FA10BD000000380140004400408E +:1028C0000048004000BFFEE70021002009E0074A61 +:1028D00002EB001292791AB1012282400A43D1B26E +:1028E000401C0428F3DB084670470000100000205D +:1028F0000146042901DB00207047024800EB01106B +:102900008079F9E71000002070B5002512E0114829 +:1029100000EB0514A1882068FEF776FF08B10120BE +:1029200000E00020A071A07920720120E071002059 +:10293000E0606D1C042DEADB0020074908600120DF +:1029400006490870FFF7C0FF0446214604A000F0C6 +:10295000CDFB70BD1000002050000020540000206E +:102960005B494F5D20496E6974204F4B2C20696E86 +:10297000697469616C207374617465733A2030788E +:10298000253032580D0A00002DE9F041FEF74AFFCC +:1029900007461C480068381A0A2801D2BDE8F081B1 +:1029A00018480760002628E0174800EB0614A188A5 +:1029B0002068FEF729FF08B1012000E0002005464D +:1029C000207AA84203D00020E071257214E0E0795B +:1029D000032803DAE079401CE0710DE0A079A842F9 +:1029E0000AD0A571E068401CE0600848007818B182 +:1029F000F0B2294602F022FB761C042ED4DB00BF85 +:102A0000CCE70000500000201000002054000020FF +:102A100000B585B00020019002900390049000BFA3 +:102A20003C48806940F010003A4988610846806956 +:102A300000F01000009000BF00BF00BF0846806992 +:102A400040F0200088610846806900F02000009076 +:102A500000BF00BF00BF0846806940F004008861E5 +:102A60000846806900F00400009000BF00BF00BF6E +:102A70000846806940F0080088610846806900F0D7 +:102A80000800009000BF00BF012280212248FEF70D +:102A9000C3FE012205212148FEF7BEFE002241F2BD +:102AA00008211E48FEF7B8FE00224FF401411A48E3 +:102AB000FEF7B2FE48F28010019001200290002043 +:102AC00003900220049001A91348FEF70DFD41F286 +:102AD0000D2001900120029000200390022004901C +:102AE00001A90E48FEF700FD02200190002002908F +:102AF0000120039001A90948FEF7F6FCF02001909F +:102B000000200290039001A90448FEF7EDFC05B0F7 +:102B100000BD00000010024000080140000C014010 +:102B200010B50E480E4908604FF4827048600021CD +:102B30000B488160C160016141614FF400718161A6 +:102B40000021C1610162416281620A21C162FFF715 +:102B500097FA08B1FEF72DFC10BD000000380040C8 +:102B60000401002010B50B480B4908604FF41650C3 +:102B70004860002108488160C16001610C21416109 +:102B800000218161C161FFF7ADFC08B1FEF711FCC6 +:102B900010BD0000003801405C01002010B50B485A +:102BA0000B4908604FF4E13048600021084881601B +:102BB000C16001610C21416100218161C161FFF7A8 +:102BC00091FC08B1FEF7F5FB10BD00000044004089 +:102BD000A401002010B50B480B4908604FF41650B3 +:102BE0004860002108488160C16001610C21416199 +:102BF00000218161C161FFF775FC08B1FEF7D9FBC7 +:102C000010BD000000480040EC01002000BFFEE7BE +:102C100070B505460E46032D00DB70BD6B20684382 +:102C20000E4901EB800494F8A80100B9F5E731469C +:102C300004F1080002F0C1F940B9D4F8A401401C25 +:102C4000C4F8A40106A0616800F050FAD4F89C0111 +:102C5000401CC4F89C0100BFDFE700006C060020A8 +:102C60005B4D554152545D202573205258206F769C +:102C70006572666C6F770D0A00000000014603293B +:102C800001DB03A07047044850F82100FAE7000078 +:102C9000554E4B4E4F574E008053000801460329B6 +:102CA00001DB0020704772B66B204843034B03EBF7 +:102CB0008000B0F88C2062B61046F3E76C06002066 +:102CC00070B5002520E06B206843134901EB8004B8 +:102CD000124850F825002060114850F82500606027 +:102CE00004F1080002F061F904F1900002F0D3FA57 +:102CF000002004F5CE7404F8020C20606060A0602F +:102D000001202073681CC5B2032DDCDB032105A064 +:102D100000F0ECF970BD00006C0600207453000850 +:102D2000805300085B4D554152545D20496E6974D3 +:102D3000204F4B2C20256420706F72747320636FBA +:102D40006E666967757265640D0A000010B502460B +:102D50000B46032A00DA0BB9002010BD6B2050434C +:102D6000104C04EB800000F1080172B6B1F8840049 +:102D700010B962B60020F0E7B1F88200085C187064 +:102D800031F8824F601CC41700EB5464E411A0EBCF +:102D9000C4140C804888401E4880823962B60120E5 +:102DA000DBE700006C0600202DE9F04105460F46E8 +:102DB0009046032D03DA17B1B8F1000F01D1BDE839 +:102DC000F081012D04D14146384600F0AFF9F6E715 +:102DD0006B2068430C4901EB800494F8A80100B90A +:102DE000EDE74246394604F1900002F05FFA0646EC +:102DF000002E07DDD4F8A0013044C4F8A001284615 +:102E000002F00CFA00BFDAE76C06002070B5054648 +:102E10000C4604B970BD2046FDF7C7F986B23246AC +:102E200021462846FFF7C0FF00BFF3E770B5002436 +:102E300011E06B206043094901EB800595F8A8017A +:102E400000B906E0012C00D103E0204602F0E6F9CB +:102E500000BF601CC4B2032CEBDB70BD6C0600200D +:102E6000F8B50546032D00DBF8BD012D02D100F0B9 +:102E7000FBF9F9E76B206843164901EB800606F180 +:102E80009004002772B6002084F80601B4F804010B +:102E9000002816DDB4F80201205C009004F581746E +:102EA0002188481CC11700EB11610912A0EB012118 +:102EB00021806088401E608001202071A4F581740B +:102EC000012762B627B1012269463068FFF7BDFCD1 +:102ED00000BFC9E76C06002000BFFEE77047000096 +:102EE00008B508490968C9084FF47A72B1FBF2F1D4 +:102EF0004143009100BF00BF00994A1E0092002983 +:102F0000F9D108BD8800002010B500224FF400411F +:102F10000548FEF781FC0020044908700449086058 +:102F200004A000F0E3F810BD000801405C000020A0 +:102F3000600000205B52454C41595D20496E697428 +:102F4000204F4B2C2073746174653D4F46460D0A2B +:102F50000000000070B50446FEF764FC0546154805 +:102F60000068281A642803D213A000F0BFF870BDCF +:102F70001A480078A04208D10CB119A000E019A0AD +:102F8000014619A000F0B2F8F1E722464FF40041E3 +:102F90001D48FEF741FC11480470064805600CB15D +:102FA0000FA000E00FA0014618A000F09FF800BF9E +:102FB000DDE70000600000205B52454C41595D2078 +:102FC000546F67676C6520746F6F20666173742C33 +:102FD0002069676E6F7265640D0A00005C00002056 +:102FE0004F4E00004F4646005B52454C41595D2014 +:102FF000537461746520756E6368616E6765643AC9 +:103000002025730D0A000000000801405B52454C6A +:1030100041595D2052656C6179202D3E2025730D4C +:103020000A000000704710B502F0C6F8FEF700FC79 +:1030300010BD00B58FB0282105A8FDF7ABF814210D +:103040006846FDF7A7F801200590000406900020CF +:1030500007900120099002200C90C1030D914FF4BC +:10306000E0110E9105A8FEF7D9FD08B1FEF7A1F910 +:103070000F20009002200190002002904FF4806009 +:1030800003900020049002216846FEF7A3FC08B1DB +:10309000FEF78FF90FB000BD7047000010B500209B +:1030A0000849A1F80001A1F80201A1F8040181F882 +:1030B0000601A1F808014FF4807103A000F016F892 +:1030C00010BD0000940200205B55415254325D2037 +:1030D000496E6974204F4B2C2062756666657220BC +:1030E00073697A653A2025640D0A00000FB410B5A3 +:1030F000A2B0249818B922B010BC5DF814FB25A822 +:103100000190802102A8019B249A00F00DFB044647 +:1031100000200190002C06DB802C00DB7F24A1B274 +:1031200002A800F003F800BFE5E70000F8B5044688 +:103130000D4605B104B9F8BD0026002772B600207F +:1031400029E02549B1F80411FF2907DD2249B1F82A +:103150000811491C204AA2F808111EE0215C1E4AF1 +:10316000B2F800211C4B99541A46B2F80021511CA8 +:10317000CA1701EB12621212A1EB0222A3F800217E +:103180001946B1F80411491C1A46A2F80411711C21 +:103190008EB2411C88B2A842D3DB00BF002E08DDEE +:1031A0000D4890F8060120B901200B4981F806016D +:1031B000012762B66FB172B60748B0F8020106493E +:1031C000085C009062B6012269460448FFF73DFBA7 +:1031D00000BF00BFAFE7000094020020A401002060 +:1031E00070B5044604B970BD2046FCF7DEFF85B219 +:1031F00029462046FFF79AFF00BFF4E738B572B6BC +:10320000174890F8060118B91548B0F8040108B934 +:1032100062B638BD1248B0F802410146B1F8021159 +:10322000481CC11700EB11610912A0EB01210C4AE7 +:10323000A2F802111046B0F80401401E1146A1F890 +:103240000401012081F806010846005D009062B685 +:10325000012269460348FFF7F8FA00BFD9E70000EA +:1032600094020020A401002038B5002572B6002089 +:10327000164981F806010846B0F8040100281CDD53 +:103280000846B0F80241B1F80211481CC11700EB22 +:1032900011610912A0EB01210C4AA2F8021110469B +:1032A000B0F80401401E1146A1F80401012081F884 +:1032B00006010846005D0090012562B625B1012295 +:1032C00069460348FFF7C1FA38BD000094020020A8 +:1032D000A401002070B505466C6A0020E085E084FA +:1032E0002046FEF78CFF70BD00BF00BF02680C32A5 +:1032F00052E8002F22F4907102680C3242E8001369 +:10330000002BF3D100BF00BF00BF0268143252E8A7 +:10331000002F22F001010268143242E80013002B52 +:10332000F3D100BF016B01290ED100BF00BF0268BD +:103330000C3252E8002F22F0100102680C3242E8F1 +:103340000013002BF3D100BF202180F84210002190 +:103350000163704710B504462068C06820F0400043 +:103360002168C860202084F841002046FFF78AFACF +:10337000002010BDF8B5044694F84200222875D10B +:10338000A068B0F5805F0CD1206950B90025A66A0D +:1033900020684068C0F308003080A06A801CA062EA +:1033A00015E0A56A0026A068B0F5805F03D0A0688C +:1033B00028B9206918B920684068287004E020689E +:1033C000406800F07F002870A06A401CA062E08D79 +:1033D000401E80B2E085002846D12068C06820F0F9 +:1033E00020002168C8602068C06820F480702168CF +:1033F000C8602068406920F00100216848612020F1 +:1034000084F8420000206063206B012826D1002050 +:10341000206300BF00BF21680C3151E8001F21F07C +:10342000100021680C3141E80002002AF3D100BFEE +:103430002068006800F0100010280AD100BF0020AA +:10344000009020680068009020684068009000BFED +:1034500000BFA18D2046FEF7D1FE02E02046FFF717 +:103460005BF90020F8BD01E00020FBE70220F9E74E +:1034700070B504462168096921F44051E26811439E +:10348000226811612269A1681143626941EA02055B +:103490002168C96841F20C62914329432268D160D6 +:1034A0002168496921F44071A26911432268516180 +:1034B0002D4A2168914202D1FEF768FB01E0FEF738 +:1034C00055FB00EBC00101EB001162689200B1FBFB +:1034D000F2F100EBC00202EB001263689B00B2FB4A +:1034E000F3F26423B2FBF3F202EBC20303EB02122A +:1034F000A1EB8201322202EB01116422B1FBF2F155 +:1035000001F0F00100EBC00202EB001263689B00C7 +:10351000B2FBF3F26423B2FBF3F201EB021200EB15 +:10352000C00101EB001163689B00B1FBF3F100EBFC +:10353000C00303EB00136668B600B3FBF6F3642622 +:10354000B3FBF6F303EBC30606EB0313A1EB830116 +:10355000322303EB01116423B1FBF3F101F00F01FE +:1035600011442268916070BD0038014010B50346D7 +:1035700099629A85DA8500205864222083F84200F7 +:10358000186928B11868C06840F480701C68E06051 +:103590001868406940F001001C6860611868C068E4 +:1035A00040F020001C68E060002010BD014691F84A +:1035B0004100212828D18868B0F5805F0BD10869C7 +:1035C00048B90A6A1088C0F308000B685860086A96 +:1035D000801C086205E00B6A581C086218780B68AA +:1035E0005860C88C401E80B2C88458B90868C0684A +:1035F00020F080000B68D8600868C06840F0400088 +:103600000B68D860002070470220FCE72DE9F041EC +:1036100004460D4617469846069E34E0701C88B353 +:103620002EB1FEF7FFF8A0EB0800B0422BD900BF87 +:1036300000BF21680C3151E8001F21F4D0702168CF +:103640000C3141E80002002AF3D100BF00BF00BFE7 +:103650002168143151E8001F21F001002168143164 +:1036600041E80002002AF3D100BF202084F8410085 +:1036700084F8420000BF002084F8400000BF03200F +:10368000BDE8F081FFE7206800682840A84201D12A +:10369000012000E00020B842C0D00020F0E7000088 +:1036A00010B50248FEF7ACFD10BD00005C01002023 +:1036B00010B50248FEF7A4FD10BD0000A4010020D3 +:1036C00010B50248FEF79CFD10BD0000EC01002083 +:1036D00000BFFEE70FB4054B10B503A9044A0298DA +:1036E00000F02EF910BC5DF814FB00001D4200082C +:1036F000B80000200FB47CB50C0009AD01D0611EEC +:1037000000E00021CDE90001064B6A4629460898F1 +:1037100000F016F9002C02D0009A002111707CBC38 +:103720005DF814FB474000087CB50C001D461646AA +:10373000014601D0601E00E00020CDE90010064BDC +:103740006A462946304600F0FBF8002C02D0009A69 +:10375000002111707CBD000047400008024800684D +:10376000C0F30220704700000CED00E010B5002807 +:1037700004DB0A07130E054A135406E00A07140E69 +:10378000034A00F00F031B1FD45410BD00E400E0F7 +:1037900018ED00E000487047BC00002002E008C8B7 +:1037A000121F08C1002AFAD170477047002001E0BB +:1037B00001C1121F002AFBD1704700002DE9FF5FF5 +:1037C00082B00021DDE90430020DDDF840B0034392 +:1037D00018D044F61050A2F2FF324243151411984B +:1037E00001281FD0A5EB0B00401C5FEA000A4FF038 +:1037F00000064E4FDFF83891B046504615D5CAF155 +:10380000000413E0119801244AA3012801D16FEAB2 +:103810000B010298119AC0E90031C0E9024206B0DA +:10382000BDE8F09FCBF10000DFE704460021404AED +:10383000491842EB0450CDE9001012E0E00707D030 +:1038400032463B4640464946FCF70BFF80468946D8 +:1038500032463B4610461946FCF703FF06460F4624 +:103860006410002CEAD1DDE90401DDE90023BAF19E +:10387000000F06DAFCF7F5FE42464B46FCF7F1FE78 +:1038800005E0FCF760FF42464B46FCF75CFF044650 +:103890000E460022284BFCF7DDFF03D84FF0FF3027 +:1038A000014607E00022254B20463146FCF732FE58 +:1038B000FCF7B8FF102409E0002C0ADB0A220023E1 +:1038C000FCF77DFD039B30321A55641E50EA01025D +:1038D000F2D1641C039AC4F111031444119A012A11 +:1038E00003D0012208430DD10AE0084304D0002090 +:1038F0004FF0110B119072E7A3EB0B056D1E0DE05D +:103900005B4504DD4FF0000205F1010504E003DA38 +:103910004FF00002A5F10105002AECD002981199A0 +:10392000C0E90231C0E9004579E700000000144019 +:103930000000F03F300000000000F0430000E03FD6 +:103940002DE9FF4F95B09A46884606460025EEE1E0 +:10395000252877D100242746F94A0121039400E065 +:10396000044316F8013F203B01FA03F01042F7D15F +:1039700030782A2811D06FF02F033078A0F1300270 +:10398000092A16D8039A44F0020402EB820203EBE0 +:1039900042021044761C0390EFE758F8042B039280 +:1039A000002A03DA504244F40054039044F0020425 +:1039B000761C30782E2816D116F8010F44F0040436 +:1039C0002A280DD06FF02F023078A0F13003092B98 +:1039D00009D807EB870302EB4303C718761CF3E70C +:1039E00058F8047B761C30786C280FD006DC4C2805 +:1039F00017D068280DD06A2814D104E0742810D09C +:103A00007A280FD10DE044F400140AE044F4801445 +:103A100001E044F440147278824202D104F580142B +:103A2000761C761C307866280BD013DC582877D0AB +:103A300009DC002875D04528F6D04628F4D0472860 +:103A40001AD193E118E0632835D0642879D065282D +:103A500012D18BE1702873D008DC6728F1D0692877 +:103A60006FD06E280DD06F2806D1ACE073282CD013 +:103A7000752874D0782853D05246179990476D1CFA +:103A800054E1C4F30250022809D003280DD0D8F81D +:103A9000001004280DD00D6008F1040846E1D8F8A4 +:103AA0000010EA17C1E90052F6E7D8F800100D80BF +:103AB000F2E70D70F0E718F8041B8DF800100020F5 +:103AC0008DF80100EB46012003E058F804BB4FF0ED +:103AD000FF3061074FF0000102D40DE009F1010150 +:103AE0008946B9420FDA8145F8DB1BF80910002935 +:103AF000F4D108E009F1010189468142FADB1BF8A3 +:103B000009100029F6D103985346A0EB0907214676 +:103B10003846179A00F080FA284400EB090507E0C0 +:103B200044E008E10DE01BF8010B5246179990475D +:103B3000B9F10109F7D2534621463846179AF2E007 +:103B400039E00A21C4F302524FF0000B0091022A1F +:103B500006D058F8040BC117032A09D00AE023E065 +:103B600008F1070020F00702F2E80201904605E0A4 +:103B700000B2C117042A01D140B2C117002906DAE8 +:103B80000A460021404261EB02012D2202E022059B +:103B900004D52B228DF80420012203E0E20701D096 +:103BA0002022F7E7914657E00A2100E010214FF06C +:103BB000000B00910BE010214FF0000B44F00404C7 +:103BC0000827009103E008204FF0000B0090C4F399 +:103BD0000252022A05D058F8040B0021032A08D00B +:103BE00008E008F1070020F00702F2E80201904621 +:103BF00003E080B2042A00D1C0B24FF000092207CE +:103C00002AD53278702A07D0DDF800C08CF0100C6D +:103C10005CEA0B0C05D00EE040228DF80420012256 +:103C200008E050EA010306D030238DF804308DF807 +:103C3000052002229146009B83F0080353EA0B0300 +:103C40000AD150EA010201D1620705D530228DF870 +:103C500004204FF001097F1E3278582A04D039A27F +:103C60000C920CAA02920BE03BA2F9E75B46009A89 +:103C7000FCF7A5FB0C9B9B5C029A521E02921370F0 +:103C800050EA0102F2D1029804A9081A00F1200BAF +:103C9000600702D524F4803400E001275F4502DD8F +:103CA000A7EB0B0000E0002000EB0B010090039855 +:103CB0004944401A0390E00306D453462146179A1C +:103CC000039800F0A9F90544002706E001A8524630 +:103CD000C05D179990476D1C7F1C4F45F6DBE003D4 +:103CE0000CD553462146179A039800F095F90544E0 +:103CF00004E030205246179990476D1C0099481EE9 +:103D000000900029F5DC08E00298029952460078FC +:103D1000491C0291179990476D1CBBF10001ABF152 +:103D2000010BF1DC5BE100F065F90544761C3078AD +:103D300000287FF40DAE19B02846BDE8F08F0000D2 +:103D40000928010030313233343536373839616271 +:103D50006364656600000000303132333435363735 +:103D6000383941424344454600000000600700D412 +:103D7000062708F1070020F00700F0E8022380463C +:103D800003F0004C5FEA0C0001D097A009E0200589 +:103D900001D596A005E0E00701D095A001E0AFF2C3 +:103DA0004C001390307823F0004365280CD006DCDB +:103DB000452809D046281DD047287FD13BE06628FA +:103DC00018D067287AD136E00021112F01DB1120AD +:103DD00000E0781CCDE9000104A90CA8FFF7EEFC77 +:103DE000DDE90D010C9A4FF0000B07F1010910926B +:103DF00000914EE04FF000400097CDE9011004A97A +:103E00000CA8FFF7DBFCDDE90D020C9B0F994FF0CE +:103E1000000B91461093009211B9791C00EB010937 +:103E2000B7EB090003D4C0F1FF3B07F10109A9EB8F +:103E30000700019042E0012F00DA01270021112F35 +:103E400001DD112000E03846CDE9000104A90CA8ED +:103E5000FFF7B4FCDDE90D010C9A00914FF0000B67 +:103E6000B946109221070FD4009A4A4503DA9146C9 +:103E700001E0A9F10109B9F1010F05DD109AA9F1DD +:103E80000101515C3029F4D0B84202DA10F1040F7C +:103E900003DA0121CDE9011010E0002803DC83449E +:103EA000A9EB000102E0411C494500DD8946A0EB79 +:103EB0000B00401C01904FF000400290200705D4F9 +:103EC0000198484502DB4FF0FF30019000208DF84B +:103ED0004B0002980DF14B07B0F1004F25D00220A6 +:103EE0000C902B200D90029800280CDA4042029092 +:103EF0002D200D9007E00A210298FCF74AFA303194 +:103F0000029007F8011D0C99481E0C900029F2DC64 +:103F100002980028EFD1791E0D980870307800F0D3 +:103F2000200040F0450007F8020D11A8C01BC01D7D +:103F300002901398007800B1012000EB090101986C +:103F400001EBE071029801440398401A401E03906F +:103F5000E00306D453462146179A039800F05CF814 +:103F600005441398007818B15246179990476D1C74 +:103F7000E00323D553462146179A039800F04CF8E6 +:103F800005441BE0BBF1000F07DB0098584504DD3A +:103F90001098179910F80B0001E01799302052463D +:103FA000904701980BF1010B401E05F101050190AE +:103FB00004D12E205246179990476D1CB9F100018B +:103FC000A9F10109DEDC05E017F8010B524617994B +:103FD00090476D1C0299481E02900029F4DC53465C +:103FE0002146179A03989EE62D0000002B00000042 +:103FF000200000002DE9F041044600251E4617462A +:10400000880404D405E039462020B0476D1C641EA6 +:10401000F9D52846BDE8F0812DE9F0410446002598 +:104020001E469046C80301D5302700E020278804AB +:1040300004D505E041463846B0476D1C641EF9D5ED +:104040002846BDE8F0814A68002A06D00A68531C59 +:104050000B6010704868401E4860704770B5044699 +:104060000D460C4830F8140080280CDA094830F866 +:10407000141030F81400401C064A22F814000648B8 +:1040800000EBC4104554FDF7CDFB044941F8240072 +:1040900070BD000072000020D003002050050020F9 +:1040A00010B502460023002003E0145C6340441C6A +:1040B000E0B28842F9DB184610BD10B50246002375 +:1040C000002003E0145C6340441CE0B28842F9DB4A +:1040D000184610BDF8B505460C461448006878B17E +:1040E0002046FCF762F886B23246214628460F4B3E +:1040F0001B6898470E480068401C0D49086008E09E +:1041000021462846FEF782FE09480068401C0849FF +:1041100008602846FEF7B2FD0646334605A208A110 +:1041200001200094FDF7ECF8F8BD000064000020C9 +:104130006C00002054585B25735D3A202573000005 +:10414000524F5554455200007CB50446274830F87C +:10415000140000B97CBD2046FEF790FD05462946B7 +:1041600023A0FEF7C3FF002531E0264800EBC41072 +:10417000405D01909DF80400202808DB9DF80400B4 +:104180007F2804DA012101A8FEF7D0FF1DE09DF889 +:1041900004000D2804D102211BA0FEF7C7FF14E084 +:1041A0009DF804000A2804D1022118A0FEF7BEFFE2 +:1041B0000BE09DF8043016A204216846FFF79AFA36 +:1041C00004216846FEF7B2FF00BF681C85B20748AD +:1041D00030F81400A842C8DC0FA0FFF701F8002057 +:1041E000024921F8140000BFB4E70000720000206B +:1041F0005B524F555445525D2025732052583A204A +:1042000022000000D00300205C7200005C6E000001 +:104210005C78253032580000220D0A0013B50C4698 +:1042200001216846FEF782FF00981CBD10B50022F0 +:1042300008210248FDF7F0FA10BD0000000C014013 +:1042400010B5012208210248FDF7E6FA10BD000072 +:10425000000C014010B500224FF400710148FDF739 +:10426000DBFA10BD000C014010B5012251020248DA +:10427000FDF7D2FA10BD0000000C014001463029C4 +:1042800005DB392903DCA1F13000C0B270474129B8 +:1042900005DB462903DCA1F13700C0B2F6E761294E +:1042A00005DB662903DCA1F15700C0B2EEE7002070 +:1042B000ECE770B505460C462046FFF7DFFF0646E3 +:1042C0002846FFF7DBFF46EA0010C0B270BD0000D1 +:1042D0000B48007800B17047002009E0002100EB96 +:1042E0000012084B995400EB00121A441174401C40 +:1042F0001028F3DB01200249087000BFEBE7000043 +:10430000790000205C05002070B505460DB12878C5 +:1043100008B9012070BDFFF7DBFF002414E004EBB7 +:1043200004100B49085C70B104EB0411084A8818AA +:104330000F222946FBF74EFF28B904EB041004496D +:104340000844007CE6E7641C102CE8DB0120E1E770 +:104350005C050020014609B1087808B901207047C2 +:104360000020FCE710B504462046FFF7F3FF08B134 +:10437000002010BD09E0FBF7E7FE00682178405CF3 +:10438000202801D00020F4E7641C20780028F2D116 +:104390000120EEE710B50446FBF7D6FE0068005D8D +:1043A00000F0100028B9FBF7CFFE0068005D202860 +:1043B00001D1012010BD0020FCE710B50446FBF739 +:1043C000C3FE0068005D00F03E0038B12A2C05D025 +:1043D0000D2C03D00A2C01D0012010BD0020FCE7D9 +:1043E000FDF732FAFEF725FEFEF712FBFEF7BAFBE9 +:1043F000FEF796FBFEF7D2FBFEF7ECFBFEF74EFE58 +:10440000FEF782FAFCF768FEFEF77EFDFEF758FC29 +:10441000FCF796FEFCF754FF012220492048FEF7E6 +:1044200065F901221F492048FEF760F9002000F0DD +:10443000A9FB01221D491E48FEF758F9002000F093 +:1044400005FD4FF47A710A2000F026FD002000F0EF +:10445000C9FB00F017FC17A0FFF73CF921A0FFF7FC +:1044600039F9294800682949B0FBF1F4214628A010 +:10447000FFF730F92CA0FFF72DF90DE0FEF7BEFE97 +:10448000FEF782FAFCF74AFEFEF7D0FCFCF7ACFE22 +:1044900000F018FD00F006FCF0E70000040000202A +:1044A000A401002005000020EC010020AC00002049 +:1044B0005C0100200D0A3D3D3D3D3D3D3D3D3D3D06 +:1044C0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D1C +:1044D0003D3D3D3D3D3D3D3D3D3D3D3D3D3D0D0A6F +:1044E000000000004533322D3433335442482D53FD +:1044F00043204170706C69636174696F6E205374FE +:1045000061727465640D0A008800002040420F004B +:1045100053797374656D20436C6F636B3A20256427 +:10452000204D487A0D0A00003D3D3D3D3D3D3D3D5D +:104530003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DAB +:104540003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D9B +:104550000D0A000070B58CB0044694F84C0008B108 +:1045600060A200E061A294F8490094F8481004F1B8 +:104570002803CDE90102009104F1080221465CA064 +:10458000FEF7B4FD65A12046FBF716FE002835D1E5 +:1045900004F10800FFF7E6FE38B961A000F0A2FDC3 +:1045A00061A0FEF7A3FD0CB070BD04F10800FBF79D +:1045B000E3FE05460DB1012D18D10DB1012100E03A +:1045C00000210846FEF7C6FC2B4661A2202104A864 +:1045D000FFF790F804A800F0BBFD0DB15EA000E06D +:1045E0005EA001465EA0FEF781FD06E04CA000F053 +:1045F00079FD29465FA0FEF779FD71E066A12046AE +:10460000FBF7DAFD002858D104F10800FFF7A2FEFD +:1046100028B962A104F10800FBF7CEFDD0B9FEF77E +:1046200053F90546C5F3C000C5F38001C5F3400248 +:1046300005F00103CDE90021029059A2202104A830 +:10464000FFF758F804A800F083FD294657A0FEF7AD +:104650004DFD45E004F10800FFF784FE002825D059 +:1046600004F10800FBF788FE0546012D16DB042D3A +:1046700014DC691EC8B2FEF73BF906462B4653A26E +:10468000202104A80096FFF735F804A800F060FD8B +:104690003246294650A0FEF729FD06E020A000F092 +:1046A00021FD294651A0FEF721FD19E01CA000F0D4 +:1046B00019FD56A0FEF71AFD12E05EA12046FBF799 +:1046C0007BFD30B95BA000F043FD5CA0FEF70EFD62 +:1046D00006E061A000F006FD214660A0FEF706FDA1 +:1046E00000BF60E728736B697029000000000000BC +:1046F0005B434D445D20434D443D25732050313D87 +:1047000025732050323D25732043533D25303258C8 +:104710002F253032582025730D0A0000524C00001E +:10472000504152414D0000005B434D445D20496EB5 +:1047300076616C696420524C20706172616D3A2020 +:104740006E6F74206E756D657269630D0A000000EE +:10475000524C2C25640000004F4E00004F4646008E +:104760005B434D445D2052656C6179202D3E2025D0 +:10477000730D0A005B434D445D20496E76616C69A0 +:104780006420524C20706172616D3A2073746174C0 +:10479000653D25640D0A000044490000300000001A +:1047A00044492C2564256425642564005B434D44FD +:1047B0005D20444920616C6C207374617465733AA8 +:1047C000203078253032580D0A00000044492C254D +:1047D000642C2564000000005B434D445D20444987 +:1047E0002564203D2025640D0A0000005B434D44F4 +:1047F0005D20496E76616C6964204449206368617C +:104800006E6E656C3A2025640D0A00005B434D44D2 +:104810005D20496E76616C69642044492070617244 +:10482000616D3A206E6F74206E756D657269630DEF +:104830000A0000004543484F000000005B434D4420 +:104840005D204543484F20726573706F6E7365201D +:1048500073656E740D0A0000434D44005B434D4484 +:104860005D20556E6B6E6F776E20636F6D6D616E40 +:10487000643A2025730D0A0010B50020064908701F +:1048800081F84E0081F84F0081F852004D21024816 +:10489000401CFBF77FFC10BD3402002000200349C0 +:1048A000086003490860034908607047A0000020C1 +:1048B000A4000020A8000020014611B96FF00200FA +:1048C00070470248006808800020F9E7A80000202F +:1048D00030B503460C460BB104B112B96FF00200BB +:1048E00030BD1448006818B900201080401EF7E75A +:1048F00000201080002115E00F48104D2D68405D0C +:1049000058540E480068401CC0F309000B4D286045 +:1049100008480068401E074D28601088401C108021 +:10492000481C81B2A14203DA024800680028E3D1A2 +:104930000020D5E7A8000020700F0020A400002070 +:1049400030B502460B4602B113B96FF0020030BD1C +:1049500000211AE00F480068B0F5806F02D34FF0D5 +:10496000FF30F4E7505C0C4C0C4D2D6860550B4843 +:104970000068401CC0F30900084C2060054800682E +:10498000401C044C2060481C81B29942E2DB0020AC +:10499000DDE70000A8000020700F0020A00000202C +:1049A0000748006850B106480068401E0449086086 +:1049B0000846006810B901200249087070470000DD +:1049C000B0000020B400002010B502210D48FCF713 +:1049D0001BFFA0B9FCF726FF044607E0FCF722FF07 +:1049E000001B642802D36FF0010010BD02210548AE +:1049F000FCF70AFF0028F1D00220FCF761FD00203F +:104A0000F3E70000000C01400548007810B94FF0B2 +:104A1000FF30704700200249087000BFF9E700002E +:104A20009C00002010B5FFF739FF10BD10B50446FB +:104A30002046FFF741FF10BD70B504460D461646EF +:104A4000324629462046FFF743FF70BD08480078EC +:104A500010B14FF0FF30704700200649086006494A +:104A60000860064908600120014908700020F2E74B +:104A70009C000020A0000020A4000020A80000202E +:104A800070B50546FFF7A0FF04460CB1204670BD87 +:104A900035B1012D0FD0022D18D0032D2CD120E0DF +:104AA000002280211C48FCF7B7FE002201211B4890 +:104AB000FCF7B2FE23E0012280211748FCF7ACFE90 +:104AC000002201211548FCF7A7FE18E000228021F2 +:104AD0001148FCF7A1FE012211461048FCF79CFE8C +:104AE0000DE0012280210C48FCF796FE01221146C0 +:104AF0000A48FCF791FE02E06FF00200C7E700BF32 +:104B00000520FCF7DDFCFFF75FFF04460CB12046F3 +:104B1000BDE70020BBE7000000080140000C014099 +:104B200008B5094800684068C0B200900121684695 +:104B3000FFF706FF0A2005490860012204490248E0 +:104B4000FDF7D4FD08BD00005C010020B00000208E +:104B5000AC00002070B504460D4604B115B96FF0E5 +:104B6000020070BD4FF6FF732A4621460448FDF748 +:104B700013FE064616B16FF00100F2E70020F0E7E1 +:104B80005C01002070B505461348007810B14FF065 +:104B9000FF3070BDFFF75AFF044614B14FF0FF30ED +:104BA000F7E735B90D480E490A68026009790171C5 +:104BB00004E00A482968016029790171074800F07A +:104BC000F1F804461CB1FFF71FFF2046E1E7012082 +:104BD000014908700020DCE78C0000208D000020D7 +:104BE000B653000870B5054615B94FF0FF3070BDDB +:104BF00028210F48FBF7CEFA00200D49087081F8F4 +:104C00002500084629680162297980F8241020309F +:104C100000F0C8F804460CB12046E8E7002000F098 +:104C2000EDF804460CB12046E1E70020DFE7000084 +:104C3000C00000202DE9F04104460D4616461F46EF +:104C400014B10DB106B11FB94FF0FF30BDE8F081CE +:104C50000A2D02DA4FF0FF30F8E72078542802D10D +:104C60006078582802D04FF0FF30EFE73B463246DD +:104C700002A1E01CFBF7BEFA0020E7E725642E2521 +:104C8000642E000010B500F05DF804460CB120461B +:104C900010BD01200249087081F825000020F7E7C7 +:104CA000C000002010B594B0254890F8250008B940 +:104CB00014B010BD2248007820B1012806D0022887 +:104CC00036D134E001201E49087035E00020039001 +:104CD00003A904A800F01AFB40B300200290019041 +:104CE000039881B201AB02AA04A8FFF7A3FF044610 +:104CF000DCB913484068401C11494860029888613B +:104D0000019848610846C0690199884202D20C495D +:104D10000198C86100F074F9012000F03DF93220DB +:104D2000FCF7CEFB002000F037F900BF04E003E001 +:104D300002200349087000BF00BF00BFB8E70000B1 +:104D4000C000002010B50C48007810B96FF00500C5 +:104D500010BD0A48007810B16FF00100F8E7FFF7C6 +:104D600061FE044614B14FF0FF30F1E70120034922 +:104D700008700020ECE700008C000020920000206A +:104D800010B50446C0200649087008462168C0F8DE +:104D90000110217941710621FFF7DCFE10BD0000F2 +:104DA000700B002070B5054615B96FF0030070BD9B +:104DB000FFF70AFE044614B16FF00200F7E7032084 +:104DC000FFF75EFE044614B16FF00200EFE72846DD +:104DD000FFF7D6FF6420FCF773FB0020FFF750FEBF +:104DE000044614B16FF00200E1E70348296801604E +:104DF000297901710020DAE78D00002070B50446A2 +:104E00002046FFF73DFE054615B16FF0020070BD6C +:104E10000020FCE770B505460E4605B116B96FF0E7 +:104E2000030070BD0848007810B96FF00500F8E77E +:104E300031462846FFF78EFE044614B16FF002009B +:104E4000EFE70020EDE700008C00002070B505467C +:104E500015B94FF0FF3070BD1C210E48FBF79AF9D1 +:104E600000200C4908704876084629684161297974 +:104E700001761430FFF796FF04460CB12046EAE7AE +:104E80000020FFF7BBFF04460CB12046E3E70020FB +:104E9000E1E70000E8000020024602B111B94FF03E +:104EA000FF307047064882600020054B5860184666 +:104EB000C160002018611870012058760020F0E7CA +:104EC000E800002070B588B03248407E08B908B0CC +:104ED00070BDFCF7A7FC04462E48007830B10128CD +:104EE00008D0022842D003284CD14AE001202949A9 +:104EF00008704BE02748406826498968884206D3F5 +:104F0000032024490870002000F0BCF93EE021484D +:104F10000069201A1F49C968884226D31D48406885 +:104F2000431C1C4820218268684600F053F905465E +:104F3000002D16DD29466846FFF76CFF06467EB950 +:104F400014484068401C1349486008460461012029 +:104F500000F098F93220FCF7B3FA002000F092F943 +:104F600000BF02200B49087000BF0FE0094800692C +:104F7000201A0849C968884202D3012005490870EF +:104F800004E003E003200349087000BF00BF00BF36 +:104F90009DE70000E800002010B5044614B1FFF7BB +:104FA0004FF901E0FFF742F910BD002120F8801F02 +:104FB00041808180C1808038704710B5024601234E +:104FC00072B6B2F88400802806DBB2F88600401C76 +:104FD000A2F88600002310E0B2F88000115432F8E5 +:104FE000804F601CC41700EB5464E411A0EBC414A0 +:104FF00014809088401C9080803A62B6184610BD9C +:105000000D48C069B8B10C48C0690B494968411ADC +:105010000948C160C06958B10748C0686421484365 +:105020000549C969B0FBF1F0C1B20348017402E05F +:105030000021014801747047C0000020F0B589B01C +:1050400004460D46631C17A2202101A80095FEF717 +:1050500051FB0646701EC1B20DF10500FFF72DF899 +:105060000746C6F1200101AA90193B4612A2FEF79D +:1050700041FB1348006830B101AA29462046104B75 +:105080001B68984702E001A8FEF7AAF80DB10DA031 +:1050900000E00EA00246611C0DA0FEF727F809B043 +:1050A000F0BD00002444495F4556454E542C25640C +:1050B0002C25642A00000000253032580D0A00001B +:1050C0005800002048494748000000004C4F570056 +:1050D0005B494F5D2043482564202D3E2025730DFC +:1050E0000A00000070B588B005462B4611A22021A9 +:1050F0006846FEF7FFFA0446601EC1B20DF10100DA +:10510000FEF7CEFF0646C4F120010DEB0400334646 +:105110000BA2FEF7EFFA0C48006830B169460B4865 +:105120000078094A1268904702E06846FEF758F88E +:1051300008B070BD244552522C25732A000000008F +:10514000253032580D0A0000080000200C00002015 +:1051500070B590B005462B4611A240216846FEF777 +:10516000C9FA0446601EC1B20DF10100FEF798FFB6 +:105170000646C4F140010DEB040033460AA2FEF7D7 +:10518000B9FA0B48006830B169460A480078084A05 +:105190001268904702E06846FEF722F810B070BD32 +:1051A000244F4B2C25732A00253032580D0A00005D +:1051B000080000200C00002010B500F0CFF80448D3 +:1051C000006820B102480068401E0149086010BD17 +:1051D000000000202DE9F84305460E461746984684 +:1051E0000DB1102E02DA0020BDE8F8833B4607A27D +:1051F00031462846CDF80080FEF77CFA0446002CA4 +:1052000001DDA0B2F0E70020EEE7000054582E25A3 +:1052100030336C752E2530336C752E00F8B505468D +:105220006B206843164901EB800606F190040027C5 +:1052300072B694F80601D0B9B4F80401002816DD5E +:10524000B4F80201205C009004F581742188481CA8 +:10525000C11700EB11610912A0EB012121806088C8 +:10526000401E608001202071A4F58174012762B680 +:1052700027B1012269463068FDF7E7FAF8BD000062 +:105280006C06002010B5044614B1FEF7EDFF01E0F6 +:10529000FEF7E0FF10BD002100F580700180418025 +:1052A000818081710181A0F58070704770B50346DF +:1052B0000C46002572B6002021E0B3F80411FF2946 +:1052C00005DDB3F80811491CA3F8081119E0215CA9 +:1052D000B3F800619955B3F80061711CCE1701EB6A +:1052E00016663612A1EB0626A3F80061B3F8041186 +:1052F000491CA3F80411691C8DB2411C88B290426C +:10530000DBDB00BF62B6284670BD0000F8B506467C +:105310000D4606B10DB90020F8BD0F48007808B958 +:105320000020F9E76846FFF781FB04460CB1002036 +:10533000F2E7BDF8000008B90020EDE72A46FF219A +:105340003046FFF779FB04460CB10020E4E700206B +:10535000014908700120DFE7B400002000B5FFF725 +:105360001FFB00BD6C540008645400085C54000826 +:10537000745400085C010020A4010020EC0100200E +:105380007C540008845400088C540008020304056F +:10539000060708090A0B0C0D0E0F10100102000081 +:1053A00000000000000001020304060708090000D5 +:1053B00000000102030400001A1704C1C1C14154D6 +:1053C0002B444556545950453D3F0041542B4657B8 +:1053D000434F44453D3F0000404040404040404036 +:1053E00040414141414140404040404040404040B8 +:1053F000404040404040404005020202020202029A +:10540000020202020202020220202020202020208C +:1054100020200202020202020290909090909010CE +:10542000101010101010101010101010101010107C +:1054300010101002020202020288888888888808F8 +:1054400008080808080808080808080808080808DC +:105450000808080202020240D85300085741524E81 +:1054600020000000494E464F2000000044454255B0 +:10547000470000004552524F52000000554152541F +:105480003100000055415254320000005541525441 +:1054900033000000B454000800000020C0000000E9 +:1054A0009C37000874550008C0000020B0160000AA +:1054B000AC37000800000000000000000000000001 +:1054C00000000000000C014010000000000000007F +:1054D00000000000000C014020000000000000005F +:1054E00000000000000C014040000000000000002F +:1054F00000000000000C01408000000000000000DF +:10550000000000000000000001000000000000009A +:10551000000000000000000000000000000000008B +:10552000000000000100000000000000000000007A +:105530000000000010000000010000000024F40042 +:10554000000000000000000000000000000000005B +:10555000000000000000000000000000000000004B +:10556000000000000000000000000000000000003B +:045570000000000037 :04000005080000ED02 :00000001FF diff --git a/MDK-ARM/project/project.htm b/MDK-ARM/project/project.htm index 106dbf2..25b00ca 100644 --- a/MDK-ARM/project/project.htm +++ b/MDK-ARM/project/project.htm @@ -3,11 +3,11 @@ Static Call Graph - [project\project.axf]

Static Call Graph for image project\project.axf


-

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Thu Mar 26 19:33:59 2026 +

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Fri Mar 27 15:51:47 2026

-

Maximum Stack Usage = 296 bytes + Unknown(Cycles, Untraceable Function Pointers)

+

Maximum Stack Usage = 360 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

-USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +cmd_parser_response_callback ⇒ DebugLog_Output ⇒ __2snprintf

Mutually Recursive functions @@ -63,7 +63,7 @@ Function Pointers
  • TIM2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET)
  • TIM3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET)
  • TIM4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
  • UART_DMAAbortOnError from stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) +
  • UART_DMAAbortOnError from stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)
  • USART1_IRQHandler from stm32f1xx_it.o(i.USART1_IRQHandler) referenced from startup_stm32f103xb.o(RESET)
  • USART2_IRQHandler from stm32f1xx_it.o(i.USART2_IRQHandler) referenced from startup_stm32f103xb.o(RESET)
  • USART3_IRQHandler from stm32f1xx_it.o(i.USART3_IRQHandler) referenced from startup_stm32f103xb.o(RESET) @@ -73,9 +73,14 @@ Function Pointers
  • UsageFault_Handler from stm32f1xx_it.o(i.UsageFault_Handler) referenced from startup_stm32f103xb.o(RESET)
  • WWDG_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET)
  • __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f103xb.o(.text) -
  • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0snprintf) -
  • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0vsnprintf) -
  • fputc from uart2_print.o(i.fputc) referenced from printfa.o(i.__0printf) +
  • _sbackspace from _sgetc.o(.text) referenced from __0sscanf.o(.text) +
  • _scanf_char_input from scanf_char.o(.text) referenced from scanf_char.o(.text) +
  • _sgetc from _sgetc.o(.text) referenced from __0sscanf.o(.text) +
  • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0snprintf) +
  • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0vsnprintf) +
  • cmd_parser_response_callback from cmd_router.o(i.cmd_parser_response_callback) referenced from cmd_router.o(i.CmdRouter_Init) +
  • fputc from uart2_print.o(i.fputc) referenced from printfa.o(i.__0printf) +
  • isspace from isspace_o.o(.text) referenced from scanf_char.o(.text)
  • main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)

    @@ -85,27 +90,27 @@ Global Symbols

    __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(.text)
    -

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) +

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) -

    _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

    [Calls]

    • >>   __scatterload +

      _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

      [Calls]

      • >>   __scatterload
      -

      __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

      [Called By]

      • >>   __scatterload +

        __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

        [Called By]

        • >>   __scatterload
        -

        _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) +

        _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) -

        _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) +

        _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) -

        _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) +

        _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) -

        __rt_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E)) +

        __rt_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E)) -

        __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F)) +

        __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F)) -

        __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011)) +

        __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011))

        Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
        [Address Reference Count : 1]

        • startup_stm32f103xb.o(RESET) @@ -234,573 +239,709 @@ Global Symbols

          WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
          [Address Reference Count : 1]

          • startup_stm32f103xb.o(RESET)
          -

          __aeabi_llsr (Thumb, 32 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) -

          [Called By]

          • >>   _double_epilogue -
          • >>   __aeabi_uldivmod -
          • >>   __aeabi_d2ulz +

            __aeabi_llsr (Thumb, 32 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) +

            [Called By]

            • >>   __aeabi_d2ulz +
            • >>   _double_epilogue +
            • >>   __aeabi_uldivmod
            -

            _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) +

            _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) -

            __rt_ctype_table (Thumb, 4 bytes, Stack size 0 bytes, ctype_o.o(.text)) -

            [Called By]

            • >>   is_valid_param_char -
            • >>   is_valid_cmd_char -
            • >>   is_str_numeric -
            • >>   strtol +

              __rt_ctype_table (Thumb, 4 bytes, Stack size 0 bytes, ctype_o.o(.text)) +

              [Called By]

              • >>   is_valid_param_char +
              • >>   is_valid_cmd_char +
              • >>   is_str_numeric +
              • >>   isspace +
              • >>   strtol
              -

              __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text)) -

              [Called By]

              • >>   _memset$wrapper -
              • >>   __aeabi_memclr +

                isspace (Thumb, 18 bytes, Stack size 8 bytes, isspace_o.o(.text)) +

                [Stack]

                • Max Depth = 8
                • Call Chain = isspace +
                +
                [Calls]
                • >>   __rt_ctype_table +
                +
                [Address Reference Count : 1]
                • scanf_char.o(.text) +
                +

                __aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text)) +

                [Called By]

                • >>   CmdParser_HasCompleteFrame
                -

                __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) -

                __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) -

                __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text)) -

                [Calls]

                • >>   __aeabi_memset -
                -
                [Called By]
                • >>   reset_parser +

                  __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text)) +

                  [Called By]

                  • >>   _memset$wrapper +
                  • >>   __aeabi_memclr
                  -

                  __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) -

                  [Called By]

                  • >>   CmdParser_Init -
                  • >>   SystemClock_Config -
                  • >>   rf433_tx_app_init +

                    __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

                    __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

                    __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text)) +

                    [Calls]

                    • >>   __aeabi_memset +
                    +
                    [Called By]
                    • >>   reset_parser
                    -

                    __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) - -

                    _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) -

                    [Calls]

                    • >>   __aeabi_memset +

                      __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) +

                      [Called By]

                      • >>   CmdParser_Init +
                      • >>   SystemClock_Config +
                      • >>   rf433_tx_app_init +
                      • >>   rf433_rx_app_init
                      -

                      strlen (Thumb, 14 bytes, Stack size 0 bytes, strlen.o(.text)) -

                      [Called By]

                      • >>   UART2_Print_String +

                        __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

                        _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) +

                        [Calls]

                        • >>   __aeabi_memset
                        -

                        strcmp (Thumb, 28 bytes, Stack size 8 bytes, strcmp.o(.text)) +

                        strlen (Thumb, 14 bytes, Stack size 0 bytes, strlen.o(.text)) +

                        [Called By]

                        • >>   MultiUART_SendString +
                        • >>   cmd_parser_response_callback +
                        • >>   UART2_Print_String +
                        + +

                        strcmp (Thumb, 28 bytes, Stack size 8 bytes, strcmp.o(.text))

                        [Stack]

                        • Max Depth = 8
                        • Call Chain = strcmp
                        -
                        [Called By]
                        • >>   process_cmd_frame +
                          [Called By]
                          • >>   process_cmd_frame
                          -

                          atoi (Thumb, 26 bytes, Stack size 16 bytes, atoi.o(.text)) +

                          strncmp (Thumb, 30 bytes, Stack size 12 bytes, strncmp.o(.text)) +

                          [Stack]

                          • Max Depth = 12
                          • Call Chain = strncmp +
                          +
                          [Called By]
                          • >>   is_module_enabled +
                          + +

                          __0sscanf (Thumb, 48 bytes, Stack size 72 bytes, __0sscanf.o(.text)) +

                          [Stack]

                          • Max Depth = 216
                          • Call Chain = __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int +
                          +
                          [Calls]
                          • >>   __vfscanf_char +
                          +
                          [Called By]
                          • >>   rf433_rx_app_parse_packet +
                          + +

                          _scanf_int (Thumb, 332 bytes, Stack size 56 bytes, _scanf_int.o(.text)) +

                          [Stack]

                          • Max Depth = 56
                          • Call Chain = _scanf_int +
                          +
                          [Calls]
                          • >>   _chval +
                          +
                          [Called By]
                          • >>   __vfscanf +
                          + +

                          atoi (Thumb, 26 bytes, Stack size 16 bytes, atoi.o(.text))

                          [Stack]

                          • Max Depth = 88
                          • Call Chain = atoi ⇒ strtol ⇒ _strtoul
                          -
                          [Calls]
                          • >>   strtol -
                          • >>   __aeabi_errno_addr +
                            [Calls]
                            • >>   strtol +
                            • >>   __aeabi_errno_addr
                            -
                            [Called By]
                            • >>   process_cmd_frame +
                              [Called By]
                              • >>   process_cmd_frame
                              -

                              __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) +

                              __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) -

                              __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) -

                              [Called By]

                              • >>   _printf_core +

                                __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) +

                                [Called By]

                                • >>   _printf_core
                                -

                                __aeabi_uldivmod (Thumb, 98 bytes, Stack size 40 bytes, uldiv.o(.text), UNUSED) -

                                [Calls]

                                • >>   __aeabi_llsr -
                                • >>   __aeabi_llsl +

                                  __aeabi_uldivmod (Thumb, 98 bytes, Stack size 40 bytes, uldiv.o(.text), UNUSED) +

                                  [Calls]

                                  • >>   __aeabi_llsr +
                                  • >>   __aeabi_llsl
                                  -
                                  [Called By]
                                  • >>   _printf_core -
                                  • >>   _fp_digits +
                                    [Called By]
                                    • >>   _printf_core +
                                    • >>   _fp_digits
                                    -

                                    strtol (Thumb, 112 bytes, Stack size 32 bytes, strtol.o(.text)) +

                                    _chval (Thumb, 28 bytes, Stack size 0 bytes, _chval.o(.text)) +

                                    [Called By]

                                    • >>   _scanf_int +
                                    • >>   _strtoul +
                                    + +

                                    __vfscanf_char (Thumb, 20 bytes, Stack size 0 bytes, scanf_char.o(.text)) +

                                    [Stack]

                                    • Max Depth = 144
                                    • Call Chain = __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int +
                                    +
                                    [Calls]
                                    • >>   __vfscanf +
                                    +
                                    [Called By]
                                    • >>   __0sscanf +
                                    + +

                                    _sgetc (Thumb, 30 bytes, Stack size 0 bytes, _sgetc.o(.text)) +
                                    [Address Reference Count : 1]

                                    • __0sscanf.o(.text) +
                                    +

                                    _sbackspace (Thumb, 34 bytes, Stack size 0 bytes, _sgetc.o(.text)) +
                                    [Address Reference Count : 1]

                                    • __0sscanf.o(.text) +
                                    +

                                    strtol (Thumb, 112 bytes, Stack size 32 bytes, strtol.o(.text))

                                    [Stack]

                                    • Max Depth = 72
                                    • Call Chain = strtol ⇒ _strtoul
                                    -
                                    [Calls]
                                    • >>   __rt_ctype_table -
                                    • >>   _strtoul -
                                    • >>   __aeabi_errno_addr +
                                      [Calls]
                                      • >>   __rt_ctype_table +
                                      • >>   _strtoul +
                                      • >>   __aeabi_errno_addr
                                      -
                                      [Called By]
                                      • >>   atoi +
                                        [Called By]
                                        • >>   atoi
                                        -

                                        __I$use$fp (Thumb, 0 bytes, Stack size 48 bytes, iusefp.o(.text), UNUSED) +

                                        __I$use$fp (Thumb, 0 bytes, Stack size 48 bytes, iusefp.o(.text), UNUSED) -

                                        __aeabi_dadd (Thumb, 322 bytes, Stack size 48 bytes, dadd.o(.text), UNUSED) -

                                        [Calls]

                                        • >>   __aeabi_lasr -
                                        • >>   __aeabi_llsl -
                                        • >>   _double_round -
                                        • >>   _double_epilogue +

                                          __aeabi_dadd (Thumb, 322 bytes, Stack size 48 bytes, dadd.o(.text), UNUSED) +

                                          [Calls]

                                          • >>   __aeabi_lasr +
                                          • >>   __aeabi_llsl +
                                          • >>   _double_round +
                                          • >>   _double_epilogue
                                          -
                                          [Called By]
                                          • >>   __aeabi_drsub -
                                          • >>   __aeabi_dsub -
                                          • >>   _fp_digits +
                                            [Called By]
                                            • >>   _fp_digits +
                                            • >>   __aeabi_drsub +
                                            • >>   __aeabi_dsub
                                            -

                                            __aeabi_dsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) -

                                            [Calls]

                                            • >>   __aeabi_dadd +

                                              __aeabi_dsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) +

                                              [Calls]

                                              • >>   __aeabi_dadd
                                              -

                                              __aeabi_drsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) -

                                              [Calls]

                                              • >>   __aeabi_dadd +

                                                __aeabi_drsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) +

                                                [Calls]

                                                • >>   __aeabi_dadd
                                                -

                                                __aeabi_dmul (Thumb, 228 bytes, Stack size 48 bytes, dmul.o(.text), UNUSED) -

                                                [Calls]

                                                • >>   _double_epilogue +

                                                  __aeabi_dmul (Thumb, 228 bytes, Stack size 48 bytes, dmul.o(.text), UNUSED) +

                                                  [Calls]

                                                  • >>   _double_epilogue
                                                  -
                                                  [Called By]
                                                  • >>   _fp_digits +
                                                    [Called By]
                                                    • >>   _fp_digits
                                                    -

                                                    __aeabi_ddiv (Thumb, 222 bytes, Stack size 32 bytes, ddiv.o(.text), UNUSED) -

                                                    [Calls]

                                                    • >>   _double_round +

                                                      __aeabi_ddiv (Thumb, 222 bytes, Stack size 32 bytes, ddiv.o(.text), UNUSED) +

                                                      [Calls]

                                                      • >>   _double_round
                                                      -
                                                      [Called By]
                                                      • >>   _fp_digits +
                                                        [Called By]
                                                        • >>   _fp_digits
                                                        -

                                                        __aeabi_d2ulz (Thumb, 48 bytes, Stack size 0 bytes, dfixul.o(.text), UNUSED) -

                                                        [Calls]

                                                        • >>   __aeabi_llsr -
                                                        • >>   __aeabi_llsl +

                                                          __aeabi_d2ulz (Thumb, 48 bytes, Stack size 0 bytes, dfixul.o(.text), UNUSED) +

                                                          [Calls]

                                                          • >>   __aeabi_llsr +
                                                          • >>   __aeabi_llsl
                                                          -
                                                          [Called By]
                                                          • >>   _fp_digits +
                                                            [Called By]
                                                            • >>   _fp_digits
                                                            -

                                                            __aeabi_cdrcmple (Thumb, 48 bytes, Stack size 0 bytes, cdrcmple.o(.text), UNUSED) -

                                                            [Called By]

                                                            • >>   _fp_digits +

                                                              __aeabi_cdrcmple (Thumb, 48 bytes, Stack size 0 bytes, cdrcmple.o(.text), UNUSED) +

                                                              [Called By]

                                                              • >>   _fp_digits
                                                              -

                                                              __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) -

                                                              [Calls]

                                                              • >>   __main_after_scatterload +

                                                                __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) +

                                                                [Calls]

                                                                • >>   __main_after_scatterload
                                                                -
                                                                [Called By]
                                                                • >>   _main_scatterload +
                                                                  [Called By]
                                                                  • >>   _main_scatterload
                                                                  -

                                                                  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) +

                                                                  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) -

                                                                  __aeabi_llsl (Thumb, 30 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) -

                                                                  [Called By]

                                                                  • >>   _double_epilogue -
                                                                  • >>   __aeabi_uldivmod -
                                                                  • >>   __aeabi_dadd -
                                                                  • >>   __aeabi_d2ulz +

                                                                    __aeabi_llsl (Thumb, 30 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) +

                                                                    [Called By]

                                                                    • >>   __aeabi_dadd +
                                                                    • >>   __aeabi_d2ulz +
                                                                    • >>   _double_epilogue +
                                                                    • >>   __aeabi_uldivmod
                                                                    -

                                                                    _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) +

                                                                    _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) -

                                                                    __aeabi_lasr (Thumb, 36 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) -

                                                                    [Called By]

                                                                    • >>   __aeabi_dadd +

                                                                      __aeabi_lasr (Thumb, 36 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) +

                                                                      [Called By]

                                                                      • >>   __aeabi_dadd
                                                                      -

                                                                      _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) +

                                                                      _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) -

                                                                      _strtoul (Thumb, 158 bytes, Stack size 40 bytes, _strtoul.o(.text)) +

                                                                      __vfscanf (Thumb, 810 bytes, Stack size 88 bytes, _scanf.o(.text)) +

                                                                      [Stack]

                                                                      • Max Depth = 144
                                                                      • Call Chain = __vfscanf ⇒ _scanf_int +
                                                                      +
                                                                      [Calls]
                                                                      • >>   _scanf_int +
                                                                      +
                                                                      [Called By]
                                                                      • >>   __vfscanf_char +
                                                                      + +

                                                                      _strtoul (Thumb, 158 bytes, Stack size 40 bytes, _strtoul.o(.text))

                                                                      [Stack]

                                                                      • Max Depth = 40
                                                                      • Call Chain = _strtoul
                                                                      -
                                                                      [Calls]
                                                                      • >>   _chval -
                                                                      • >>   __aeabi_errno_addr +
                                                                        [Calls]
                                                                        • >>   _chval +
                                                                        • >>   __aeabi_errno_addr
                                                                        -
                                                                        [Called By]
                                                                        • >>   strtol +
                                                                          [Called By]
                                                                          • >>   strtol
                                                                          -

                                                                          _double_round (Thumb, 30 bytes, Stack size 8 bytes, depilogue.o(.text), UNUSED) -

                                                                          [Called By]

                                                                          • >>   _double_epilogue -
                                                                          • >>   __aeabi_ddiv -
                                                                          • >>   __aeabi_dadd +

                                                                            _double_round (Thumb, 30 bytes, Stack size 8 bytes, depilogue.o(.text), UNUSED) +

                                                                            [Called By]

                                                                            • >>   __aeabi_ddiv +
                                                                            • >>   __aeabi_dadd +
                                                                            • >>   _double_epilogue
                                                                            -

                                                                            _double_epilogue (Thumb, 156 bytes, Stack size 32 bytes, depilogue.o(.text), UNUSED) -

                                                                            [Calls]

                                                                            • >>   __aeabi_llsr -
                                                                            • >>   __aeabi_llsl -
                                                                            • >>   _double_round +

                                                                              _double_epilogue (Thumb, 156 bytes, Stack size 32 bytes, depilogue.o(.text), UNUSED) +

                                                                              [Calls]

                                                                              • >>   __aeabi_llsr +
                                                                              • >>   __aeabi_llsl +
                                                                              • >>   _double_round
                                                                              -
                                                                              [Called By]
                                                                              • >>   __aeabi_dmul -
                                                                              • >>   __aeabi_dadd -
                                                                              - -

                                                                              _chval (Thumb, 28 bytes, Stack size 0 bytes, _chval.o(.text)) -

                                                                              [Called By]

                                                                              • >>   _strtoul +
                                                                                [Called By]
                                                                                • >>   __aeabi_dmul +
                                                                                • >>   __aeabi_dadd

                                                                                BusFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.BusFault_Handler))
                                                                                [Address Reference Count : 1]

                                                                                • startup_stm32f103xb.o(RESET)
                                                                                -

                                                                                CmdParser_FeedByte (Thumb, 730 bytes, Stack size 16 bytes, cmd_parser.o(i.CmdParser_FeedByte)) +

                                                                                CmdParser_FeedByte (Thumb, 730 bytes, Stack size 16 bytes, cmd_parser.o(i.CmdParser_FeedByte))

                                                                                [Stack]

                                                                                • Max Depth = 208
                                                                                • Call Chain = CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                -
                                                                                [Calls]
                                                                                • >>   UART2_Print_Printf -
                                                                                • >>   send_response_err -
                                                                                • >>   reset_parser -
                                                                                • >>   is_valid_param_char -
                                                                                • >>   is_valid_cmd_char -
                                                                                • >>   hex_to_byte +
                                                                                  [Calls]
                                                                                  • >>   UART2_Print_Printf +
                                                                                  • >>   send_response_err +
                                                                                  • >>   reset_parser +
                                                                                  • >>   is_valid_param_char +
                                                                                  • >>   is_valid_cmd_char +
                                                                                  • >>   hex_to_byte
                                                                                  -
                                                                                  [Called By]
                                                                                  • >>   HAL_UART_RxCpltCallback +
                                                                                    [Called By]
                                                                                    • >>   CmdRouter_Task +
                                                                                    • >>   HAL_UART_RxCpltCallback
                                                                                    -

                                                                                    CmdParser_Init (Thumb, 24 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_Init)) +

                                                                                    CmdParser_HasCompleteFrame (Thumb, 42 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_HasCompleteFrame)) +

                                                                                    [Stack]

                                                                                    • Max Depth = 8
                                                                                    • Call Chain = CmdParser_HasCompleteFrame +
                                                                                    +
                                                                                    [Calls]
                                                                                    • >>   __aeabi_memcpy +
                                                                                    +
                                                                                    [Called By]
                                                                                    • >>   CmdRouter_Task +
                                                                                    + +

                                                                                    CmdParser_Init (Thumb, 24 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_Init))

                                                                                    [Stack]

                                                                                    • Max Depth = 200
                                                                                    • Call Chain = CmdParser_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                    -
                                                                                    [Calls]
                                                                                    • >>   UART2_Print_Printf -
                                                                                    • >>   __aeabi_memclr4 +
                                                                                      [Calls]
                                                                                      • >>   UART2_Print_Printf +
                                                                                      • >>   __aeabi_memclr4

                                                                                      [Called By]
                                                                                      • >>   main
                                                                                      -

                                                                                      CmdParser_Task (Thumb, 32 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_Task)) -

                                                                                      [Stack]

                                                                                      • Max Depth = 288
                                                                                      • Call Chain = CmdParser_Task ⇒ process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                        CmdParser_SetResponseCallback (Thumb, 6 bytes, Stack size 0 bytes, cmd_parser.o(i.CmdParser_SetResponseCallback)) +

                                                                                        [Called By]

                                                                                        • >>   CmdRouter_Init
                                                                                        -
                                                                                        [Calls]
                                                                                        • >>   reset_parser -
                                                                                        • >>   process_cmd_frame + +

                                                                                          CmdParser_SetSourcePort (Thumb, 6 bytes, Stack size 0 bytes, cmd_parser.o(i.CmdParser_SetSourcePort)) +

                                                                                          [Called By]

                                                                                          • >>   CmdRouter_Task +
                                                                                          + +

                                                                                          CmdParser_Task (Thumb, 32 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_Task)) +

                                                                                          [Stack]

                                                                                          • Max Depth = 280
                                                                                          • Call Chain = CmdParser_Task ⇒ process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                          +
                                                                                          [Calls]
                                                                                          • >>   reset_parser +
                                                                                          • >>   process_cmd_frame +
                                                                                          +
                                                                                          [Called By]
                                                                                          • >>   CmdRouter_Task +
                                                                                          • >>   main +
                                                                                          + +

                                                                                          CmdRouter_Init (Thumb, 96 bytes, Stack size 8 bytes, cmd_router.o(i.CmdRouter_Init)) +

                                                                                          [Stack]

                                                                                          • Max Depth = 200
                                                                                          • Call Chain = CmdRouter_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                          +
                                                                                          [Calls]
                                                                                          • >>   UART2_Print_Printf +
                                                                                          • >>   CmdParser_SetResponseCallback

                                                                                          [Called By]
                                                                                          • >>   main
                                                                                          +

                                                                                          CmdRouter_Task (Thumb, 196 bytes, Stack size 24 bytes, cmd_router.o(i.CmdRouter_Task)) +

                                                                                          [Stack]

                                                                                          • Max Depth = 304
                                                                                          • Call Chain = CmdRouter_Task ⇒ CmdParser_Task ⇒ process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                          +
                                                                                          [Calls]
                                                                                          • >>   CmdParser_Task +
                                                                                          • >>   CmdParser_FeedByte +
                                                                                          • >>   HAL_GetTick +
                                                                                          • >>   MultiUART_ReadByte +
                                                                                          • >>   MultiUART_GetRxCount +
                                                                                          • >>   flush_rx_log +
                                                                                          • >>   append_rx_log +
                                                                                          • >>   CmdParser_SetSourcePort +
                                                                                          • >>   CmdParser_HasCompleteFrame +
                                                                                          +
                                                                                          [Called By]
                                                                                          • >>   main +
                                                                                          + +

                                                                                          DebugLog_Init (Thumb, 20 bytes, Stack size 8 bytes, debug_log.o(i.DebugLog_Init)) +

                                                                                          [Stack]

                                                                                          • Max Depth = 56
                                                                                          • Call Chain = DebugLog_Init ⇒ UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                          +
                                                                                          [Calls]
                                                                                          • >>   init_modules +
                                                                                          • >>   UART2_Print_String +
                                                                                          +
                                                                                          [Called By]
                                                                                          • >>   main +
                                                                                          + +

                                                                                          DebugLog_Output (Thumb, 148 bytes, Stack size 296 bytes, debug_log.o(i.DebugLog_Output)) +

                                                                                          [Stack]

                                                                                          • Max Depth = 336
                                                                                          • Call Chain = DebugLog_Output ⇒ __2snprintf +
                                                                                          +
                                                                                          [Calls]
                                                                                          • >>   is_module_enabled +
                                                                                          • >>   UART2_Print_Send +
                                                                                          • >>   vsnprintf +
                                                                                          • >>   __2snprintf +
                                                                                          +
                                                                                          [Called By]
                                                                                          • >>   cmd_parser_response_callback +
                                                                                          +

                                                                                          DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DebugMon_Handler))
                                                                                          [Address Reference Count : 1]

                                                                                          • startup_stm32f103xb.o(RESET)
                                                                                          -

                                                                                          Error_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.Error_Handler)) -

                                                                                          [Called By]

                                                                                          • >>   MX_USART3_UART_Init -
                                                                                          • >>   MX_USART2_UART_Init -
                                                                                          • >>   MX_USART1_UART_Init -
                                                                                          • >>   MX_SPI2_Init -
                                                                                          • >>   SystemClock_Config +

                                                                                            Error_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.Error_Handler)) +

                                                                                            [Called By]

                                                                                            • >>   MX_USART3_UART_Init +
                                                                                            • >>   MX_USART2_UART_Init +
                                                                                            • >>   MX_USART1_UART_Init +
                                                                                            • >>   MX_SPI2_Init +
                                                                                            • >>   SystemClock_Config
                                                                                            -

                                                                                            HAL_DMA_Abort (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort)) -

                                                                                            [Called By]

                                                                                            • >>   HAL_UART_IRQHandler +

                                                                                              HAL_DMA_Abort (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort)) +

                                                                                              [Called By]

                                                                                              • >>   HAL_UART_IRQHandler
                                                                                              -

                                                                                              HAL_DMA_Abort_IT (Thumb, 172 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT)) +

                                                                                              HAL_DMA_Abort_IT (Thumb, 172 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT))

                                                                                              [Stack]

                                                                                              • Max Depth = 16
                                                                                              • Call Chain = HAL_DMA_Abort_IT
                                                                                              -
                                                                                              [Called By]
                                                                                              • >>   HAL_UART_IRQHandler +
                                                                                                [Called By]
                                                                                                • >>   HAL_UART_IRQHandler
                                                                                                -

                                                                                                HAL_Delay (Thumb, 36 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_Delay)) +

                                                                                                HAL_Delay (Thumb, 36 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_Delay))

                                                                                                [Stack]

                                                                                                • Max Depth = 16
                                                                                                • Call Chain = HAL_Delay
                                                                                                -
                                                                                                [Calls]
                                                                                                • >>   HAL_GetTick +
                                                                                                  [Calls]
                                                                                                  • >>   HAL_GetTick
                                                                                                  -
                                                                                                  [Called By]
                                                                                                  • >>   rf433_set_config -
                                                                                                  • >>   rf433_tx_app_task -
                                                                                                  • >>   rf433_hal_set_work_mode -
                                                                                                  • >>   rf433_hal_aux_wait +
                                                                                                    [Called By]
                                                                                                    • >>   rf433_tx_app_task +
                                                                                                    • >>   rf433_set_config +
                                                                                                    • >>   rf433_rx_app_task +
                                                                                                    • >>   rf433_hal_set_work_mode +
                                                                                                    • >>   rf433_hal_aux_wait
                                                                                                    -

                                                                                                    HAL_GPIO_Init (Thumb, 766 bytes, Stack size 36 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init)) +

                                                                                                    HAL_GPIO_Init (Thumb, 766 bytes, Stack size 36 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init))

                                                                                                    [Stack]

                                                                                                    • Max Depth = 36
                                                                                                    • Call Chain = HAL_GPIO_Init
                                                                                                    -
                                                                                                    [Called By]
                                                                                                    • >>   HAL_UART_MspInit -
                                                                                                    • >>   HAL_SPI_MspInit -
                                                                                                    • >>   MX_GPIO_Init +
                                                                                                      [Called By]
                                                                                                      • >>   HAL_UART_MspInit +
                                                                                                      • >>   HAL_SPI_MspInit +
                                                                                                      • >>   MX_GPIO_Init
                                                                                                      -

                                                                                                      HAL_GPIO_ReadPin (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin)) -

                                                                                                      [Called By]

                                                                                                      • >>   IO_Monitor_Task -
                                                                                                      • >>   IO_Monitor_Init -
                                                                                                      • >>   rf433_hal_aux_wait +

                                                                                                        HAL_GPIO_ReadPin (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin)) +

                                                                                                        [Called By]

                                                                                                        • >>   IO_Monitor_Task +
                                                                                                        • >>   IO_Monitor_Init +
                                                                                                        • >>   rf433_hal_aux_wait
                                                                                                        -

                                                                                                        HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin)) -

                                                                                                        [Called By]

                                                                                                        • >>   Relay_SetState -
                                                                                                        • >>   Relay_Init -
                                                                                                        • >>   MX_GPIO_Init -
                                                                                                        • >>   gpio_led_tx_on -
                                                                                                        • >>   gpio_led_tx_off -
                                                                                                        • >>   rf433_hal_set_work_mode +

                                                                                                          HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin)) +

                                                                                                          [Called By]

                                                                                                          • >>   Relay_Init +
                                                                                                          • >>   MX_GPIO_Init +
                                                                                                          • >>   gpio_led_tx_on +
                                                                                                          • >>   gpio_led_tx_off +
                                                                                                          • >>   gpio_led_rx_on +
                                                                                                          • >>   gpio_led_rx_off +
                                                                                                          • >>   Relay_SetState +
                                                                                                          • >>   rf433_hal_set_work_mode
                                                                                                          -

                                                                                                          HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_GetTick)) -

                                                                                                          [Called By]

                                                                                                          • >>   Relay_SetState -
                                                                                                          • >>   IO_Monitor_Task -
                                                                                                          • >>   HAL_RCC_OscConfig -
                                                                                                          • >>   HAL_RCC_ClockConfig -
                                                                                                          • >>   HAL_UART_RxCpltCallback -
                                                                                                          • >>   HAL_Delay -
                                                                                                          • >>   rf433_tx_app_task -
                                                                                                          • >>   rf433_hal_aux_wait -
                                                                                                          • >>   HAL_UART_Transmit -
                                                                                                          • >>   UART_WaitOnFlagUntilTimeout +

                                                                                                            HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_GetTick)) +

                                                                                                            [Called By]

                                                                                                            • >>   IO_Monitor_Task +
                                                                                                            • >>   HAL_RCC_OscConfig +
                                                                                                            • >>   HAL_RCC_ClockConfig +
                                                                                                            • >>   CmdRouter_Task +
                                                                                                            • >>   HAL_UART_RxCpltCallback +
                                                                                                            • >>   rf433_tx_app_task +
                                                                                                            • >>   HAL_Delay +
                                                                                                            • >>   append_rx_log +
                                                                                                            • >>   Relay_SetState +
                                                                                                            • >>   HAL_UART_Transmit +
                                                                                                            • >>   UART_WaitOnFlagUntilTimeout +
                                                                                                            • >>   rf433_hal_aux_wait
                                                                                                            -

                                                                                                            HAL_IncTick (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_IncTick)) +

                                                                                                            HAL_IncTick (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_IncTick))

                                                                                                            [Called By]

                                                                                                            • >>   SysTick_Handler
                                                                                                            -

                                                                                                            HAL_Init (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal.o(i.HAL_Init)) +

                                                                                                            HAL_Init (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal.o(i.HAL_Init))

                                                                                                            [Stack]

                                                                                                            • Max Depth = 72
                                                                                                            • Call Chain = HAL_Init ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                            -
                                                                                                            [Calls]
                                                                                                            • >>   HAL_MspInit -
                                                                                                            • >>   HAL_InitTick -
                                                                                                            • >>   HAL_NVIC_SetPriorityGrouping +
                                                                                                              [Calls]
                                                                                                              • >>   HAL_MspInit +
                                                                                                              • >>   HAL_InitTick +
                                                                                                              • >>   HAL_NVIC_SetPriorityGrouping

                                                                                                              [Called By]
                                                                                                              • >>   main
                                                                                                              -

                                                                                                              HAL_InitTick (Thumb, 64 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_InitTick)) +

                                                                                                              HAL_InitTick (Thumb, 64 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_InitTick))

                                                                                                              [Stack]

                                                                                                              • Max Depth = 64
                                                                                                              • Call Chain = HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                              -
                                                                                                              [Calls]
                                                                                                              • >>   HAL_NVIC_SetPriority -
                                                                                                              • >>   HAL_SYSTICK_Config +
                                                                                                                [Calls]
                                                                                                                • >>   HAL_NVIC_SetPriority +
                                                                                                                • >>   HAL_SYSTICK_Config
                                                                                                                -
                                                                                                                [Called By]
                                                                                                                • >>   HAL_RCC_ClockConfig -
                                                                                                                • >>   HAL_Init +
                                                                                                                  [Called By]
                                                                                                                  • >>   HAL_RCC_ClockConfig +
                                                                                                                  • >>   HAL_Init
                                                                                                                  -

                                                                                                                  HAL_MspInit (Thumb, 76 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(i.HAL_MspInit)) +

                                                                                                                  HAL_MspInit (Thumb, 76 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(i.HAL_MspInit))

                                                                                                                  [Stack]

                                                                                                                  • Max Depth = 8
                                                                                                                  • Call Chain = HAL_MspInit
                                                                                                                  -
                                                                                                                  [Called By]
                                                                                                                  • >>   HAL_Init +
                                                                                                                    [Called By]
                                                                                                                    • >>   HAL_Init
                                                                                                                    -

                                                                                                                    HAL_NVIC_EnableIRQ (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ)) -

                                                                                                                    [Called By]

                                                                                                                    • >>   HAL_UART_MspInit +

                                                                                                                      HAL_NVIC_EnableIRQ (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ)) +

                                                                                                                      [Called By]

                                                                                                                      • >>   HAL_UART_MspInit
                                                                                                                      -

                                                                                                                      HAL_NVIC_SetPriority (Thumb, 124 bytes, Stack size 40 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority)) +

                                                                                                                      HAL_NVIC_SetPriority (Thumb, 124 bytes, Stack size 40 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority))

                                                                                                                      [Stack]

                                                                                                                      • Max Depth = 48
                                                                                                                      • Call Chain = HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                      -
                                                                                                                      [Calls]
                                                                                                                      • >>   __NVIC_SetPriority -
                                                                                                                      • >>   __NVIC_GetPriorityGrouping +
                                                                                                                        [Calls]
                                                                                                                        • >>   __NVIC_SetPriority +
                                                                                                                        • >>   __NVIC_GetPriorityGrouping
                                                                                                                        -
                                                                                                                        [Called By]
                                                                                                                        • >>   HAL_UART_MspInit -
                                                                                                                        • >>   HAL_InitTick +
                                                                                                                          [Called By]
                                                                                                                          • >>   HAL_UART_MspInit +
                                                                                                                          • >>   HAL_InitTick
                                                                                                                          -

                                                                                                                          HAL_NVIC_SetPriorityGrouping (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping)) -

                                                                                                                          [Called By]

                                                                                                                          • >>   HAL_Init +

                                                                                                                            HAL_NVIC_SetPriorityGrouping (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping)) +

                                                                                                                            [Called By]

                                                                                                                            • >>   HAL_Init
                                                                                                                            -

                                                                                                                            HAL_RCC_ClockConfig (Thumb, 376 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig)) +

                                                                                                                            HAL_RCC_ClockConfig (Thumb, 376 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig))

                                                                                                                            [Stack]

                                                                                                                            • Max Depth = 80
                                                                                                                            • Call Chain = HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                            -
                                                                                                                            [Calls]
                                                                                                                            • >>   HAL_GetTick -
                                                                                                                            • >>   HAL_InitTick -
                                                                                                                            • >>   HAL_RCC_GetSysClockFreq +
                                                                                                                              [Calls]
                                                                                                                              • >>   HAL_GetTick +
                                                                                                                              • >>   HAL_RCC_GetSysClockFreq +
                                                                                                                              • >>   HAL_InitTick
                                                                                                                              -
                                                                                                                              [Called By]
                                                                                                                              • >>   SystemClock_Config +
                                                                                                                                [Called By]
                                                                                                                                • >>   SystemClock_Config
                                                                                                                                -

                                                                                                                                HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq)) -

                                                                                                                                [Called By]

                                                                                                                                • >>   HAL_RCC_GetPCLK2Freq -
                                                                                                                                • >>   HAL_RCC_GetPCLK1Freq +

                                                                                                                                  HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq)) +

                                                                                                                                  [Called By]

                                                                                                                                  • >>   HAL_RCC_GetPCLK2Freq +
                                                                                                                                  • >>   HAL_RCC_GetPCLK1Freq
                                                                                                                                  -

                                                                                                                                  HAL_RCC_GetPCLK1Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq)) +

                                                                                                                                  HAL_RCC_GetPCLK1Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))

                                                                                                                                  [Stack]

                                                                                                                                  • Max Depth = 4
                                                                                                                                  • Call Chain = HAL_RCC_GetPCLK1Freq
                                                                                                                                  -
                                                                                                                                  [Calls]
                                                                                                                                  • >>   HAL_RCC_GetHCLKFreq +
                                                                                                                                    [Calls]
                                                                                                                                    • >>   HAL_RCC_GetHCLKFreq
                                                                                                                                    -
                                                                                                                                    [Called By]
                                                                                                                                    • >>   UART_SetConfig +
                                                                                                                                      [Called By]
                                                                                                                                      • >>   UART_SetConfig
                                                                                                                                      -

                                                                                                                                      HAL_RCC_GetPCLK2Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq)) +

                                                                                                                                      HAL_RCC_GetPCLK2Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq))

                                                                                                                                      [Stack]

                                                                                                                                      • Max Depth = 4
                                                                                                                                      • Call Chain = HAL_RCC_GetPCLK2Freq
                                                                                                                                      -
                                                                                                                                      [Calls]
                                                                                                                                      • >>   HAL_RCC_GetHCLKFreq +
                                                                                                                                        [Calls]
                                                                                                                                        • >>   HAL_RCC_GetHCLKFreq
                                                                                                                                        -
                                                                                                                                        [Called By]
                                                                                                                                        • >>   UART_SetConfig +
                                                                                                                                          [Called By]
                                                                                                                                          • >>   UART_SetConfig
                                                                                                                                          -

                                                                                                                                          HAL_RCC_GetSysClockFreq (Thumb, 92 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq)) +

                                                                                                                                          HAL_RCC_GetSysClockFreq (Thumb, 92 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))

                                                                                                                                          [Stack]

                                                                                                                                          • Max Depth = 16
                                                                                                                                          • Call Chain = HAL_RCC_GetSysClockFreq
                                                                                                                                          -
                                                                                                                                          [Called By]
                                                                                                                                          • >>   HAL_RCC_ClockConfig +
                                                                                                                                            [Called By]
                                                                                                                                            • >>   HAL_RCC_ClockConfig
                                                                                                                                            -

                                                                                                                                            HAL_RCC_OscConfig (Thumb, 1114 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig)) +

                                                                                                                                            HAL_RCC_OscConfig (Thumb, 1114 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig))

                                                                                                                                            [Stack]

                                                                                                                                            • Max Depth = 32
                                                                                                                                            • Call Chain = HAL_RCC_OscConfig ⇒ RCC_Delay
                                                                                                                                            -
                                                                                                                                            [Calls]
                                                                                                                                            • >>   HAL_GetTick -
                                                                                                                                            • >>   RCC_Delay +
                                                                                                                                              [Calls]
                                                                                                                                              • >>   HAL_GetTick +
                                                                                                                                              • >>   RCC_Delay
                                                                                                                                              -
                                                                                                                                              [Called By]
                                                                                                                                              • >>   SystemClock_Config +
                                                                                                                                                [Called By]
                                                                                                                                                • >>   SystemClock_Config
                                                                                                                                                -

                                                                                                                                                HAL_SPI_Init (Thumb, 190 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(i.HAL_SPI_Init)) +

                                                                                                                                                HAL_SPI_Init (Thumb, 190 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(i.HAL_SPI_Init))

                                                                                                                                                [Stack]

                                                                                                                                                • Max Depth = 76
                                                                                                                                                • Call Chain = HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                                                                                -
                                                                                                                                                [Calls]
                                                                                                                                                • >>   HAL_SPI_MspInit +
                                                                                                                                                  [Calls]
                                                                                                                                                  • >>   HAL_SPI_MspInit
                                                                                                                                                  -
                                                                                                                                                  [Called By]
                                                                                                                                                  • >>   MX_SPI2_Init +
                                                                                                                                                    [Called By]
                                                                                                                                                    • >>   MX_SPI2_Init
                                                                                                                                                    -

                                                                                                                                                    HAL_SPI_MspInit (Thumb, 124 bytes, Stack size 32 bytes, spi.o(i.HAL_SPI_MspInit)) +

                                                                                                                                                    HAL_SPI_MspInit (Thumb, 124 bytes, Stack size 32 bytes, spi.o(i.HAL_SPI_MspInit))

                                                                                                                                                    [Stack]

                                                                                                                                                    • Max Depth = 68
                                                                                                                                                    • Call Chain = HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                                                                                    -
                                                                                                                                                    [Calls]
                                                                                                                                                    • >>   HAL_GPIO_Init +
                                                                                                                                                      [Calls]
                                                                                                                                                      • >>   HAL_GPIO_Init
                                                                                                                                                      -
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   HAL_SPI_Init +
                                                                                                                                                        [Called By]
                                                                                                                                                        • >>   HAL_SPI_Init
                                                                                                                                                        -

                                                                                                                                                        HAL_SYSTICK_Config (Thumb, 52 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config)) +

                                                                                                                                                        HAL_SYSTICK_Config (Thumb, 52 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config))

                                                                                                                                                        [Stack]

                                                                                                                                                        • Max Depth = 24
                                                                                                                                                        • Call Chain = HAL_SYSTICK_Config ⇒ __NVIC_SetPriority
                                                                                                                                                        -
                                                                                                                                                        [Calls]
                                                                                                                                                        • >>   __NVIC_SetPriority +
                                                                                                                                                          [Calls]
                                                                                                                                                          • >>   __NVIC_SetPriority
                                                                                                                                                          -
                                                                                                                                                          [Called By]
                                                                                                                                                          • >>   HAL_InitTick +
                                                                                                                                                            [Called By]
                                                                                                                                                            • >>   HAL_InitTick
                                                                                                                                                            -

                                                                                                                                                            HAL_UARTEx_RxEventCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback)) -

                                                                                                                                                            [Called By]

                                                                                                                                                            • >>   HAL_UART_IRQHandler -
                                                                                                                                                            • >>   UART_Receive_IT +

                                                                                                                                                              HAL_UARTEx_RxEventCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback)) +

                                                                                                                                                              [Called By]

                                                                                                                                                              • >>   HAL_UART_IRQHandler +
                                                                                                                                                              • >>   UART_Receive_IT
                                                                                                                                                              -

                                                                                                                                                              HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback)) -

                                                                                                                                                              [Called By]

                                                                                                                                                              • >>   HAL_UART_IRQHandler -
                                                                                                                                                              • >>   UART_DMAAbortOnError +

                                                                                                                                                                HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback)) +

                                                                                                                                                                [Called By]

                                                                                                                                                                • >>   HAL_UART_IRQHandler +
                                                                                                                                                                • >>   UART_DMAAbortOnError
                                                                                                                                                                -

                                                                                                                                                                HAL_UART_IRQHandler (Thumb, 736 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)) -

                                                                                                                                                                [Stack]

                                                                                                                                                                • Max Depth = 288
                                                                                                                                                                • Call Chain = HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                  HAL_UART_IRQHandler (Thumb, 736 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)) +

                                                                                                                                                                  [Stack]

                                                                                                                                                                  • Max Depth = 288
                                                                                                                                                                  • Call Chain = HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                  -
                                                                                                                                                                  [Calls]
                                                                                                                                                                  • >>   HAL_DMA_Abort_IT -
                                                                                                                                                                  • >>   HAL_DMA_Abort -
                                                                                                                                                                  • >>   HAL_UART_ErrorCallback -
                                                                                                                                                                  • >>   HAL_UARTEx_RxEventCallback -
                                                                                                                                                                  • >>   UART_Transmit_IT -
                                                                                                                                                                  • >>   UART_Receive_IT -
                                                                                                                                                                  • >>   UART_EndTransmit_IT -
                                                                                                                                                                  • >>   UART_EndRxTransfer +
                                                                                                                                                                    [Calls]
                                                                                                                                                                    • >>   HAL_DMA_Abort_IT +
                                                                                                                                                                    • >>   HAL_DMA_Abort +
                                                                                                                                                                    • >>   HAL_UART_ErrorCallback +
                                                                                                                                                                    • >>   HAL_UARTEx_RxEventCallback +
                                                                                                                                                                    • >>   UART_Transmit_IT +
                                                                                                                                                                    • >>   UART_Receive_IT +
                                                                                                                                                                    • >>   UART_EndTransmit_IT +
                                                                                                                                                                    • >>   UART_EndRxTransfer

                                                                                                                                                                    [Called By]
                                                                                                                                                                    • >>   USART3_IRQHandler
                                                                                                                                                                    • >>   USART2_IRQHandler
                                                                                                                                                                    • >>   USART1_IRQHandler
                                                                                                                                                                    -

                                                                                                                                                                    HAL_UART_Init (Thumb, 118 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Init)) +

                                                                                                                                                                    HAL_UART_Init (Thumb, 118 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Init))

                                                                                                                                                                    [Stack]

                                                                                                                                                                    • Max Depth = 88
                                                                                                                                                                    • Call Chain = HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                    -
                                                                                                                                                                    [Calls]
                                                                                                                                                                    • >>   HAL_UART_MspInit -
                                                                                                                                                                    • >>   UART_SetConfig +
                                                                                                                                                                      [Calls]
                                                                                                                                                                      • >>   HAL_UART_MspInit +
                                                                                                                                                                      • >>   UART_SetConfig
                                                                                                                                                                      -
                                                                                                                                                                      [Called By]
                                                                                                                                                                      • >>   MX_USART3_UART_Init -
                                                                                                                                                                      • >>   MX_USART2_UART_Init -
                                                                                                                                                                      • >>   MX_USART1_UART_Init +
                                                                                                                                                                        [Called By]
                                                                                                                                                                        • >>   MX_USART3_UART_Init +
                                                                                                                                                                        • >>   MX_USART2_UART_Init +
                                                                                                                                                                        • >>   MX_USART1_UART_Init
                                                                                                                                                                        -

                                                                                                                                                                        HAL_UART_MspInit (Thumb, 376 bytes, Stack size 32 bytes, usart.o(i.HAL_UART_MspInit)) +

                                                                                                                                                                        HAL_UART_MspInit (Thumb, 376 bytes, Stack size 32 bytes, usart.o(i.HAL_UART_MspInit))

                                                                                                                                                                        [Stack]

                                                                                                                                                                        • Max Depth = 80
                                                                                                                                                                        • Call Chain = HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                        -
                                                                                                                                                                        [Calls]
                                                                                                                                                                        • >>   HAL_NVIC_SetPriority -
                                                                                                                                                                        • >>   HAL_NVIC_EnableIRQ -
                                                                                                                                                                        • >>   HAL_GPIO_Init +
                                                                                                                                                                          [Calls]
                                                                                                                                                                          • >>   HAL_NVIC_SetPriority +
                                                                                                                                                                          • >>   HAL_NVIC_EnableIRQ +
                                                                                                                                                                          • >>   HAL_GPIO_Init
                                                                                                                                                                          -
                                                                                                                                                                          [Called By]
                                                                                                                                                                          • >>   HAL_UART_Init +
                                                                                                                                                                            [Called By]
                                                                                                                                                                            • >>   HAL_UART_Init
                                                                                                                                                                            -

                                                                                                                                                                            HAL_UART_Receive_IT (Thumb, 44 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT)) +

                                                                                                                                                                            HAL_UART_Receive_IT (Thumb, 44 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT))

                                                                                                                                                                            [Stack]

                                                                                                                                                                            • Max Depth = 24
                                                                                                                                                                            • Call Chain = HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT
                                                                                                                                                                            -
                                                                                                                                                                            [Calls]
                                                                                                                                                                            • >>   UART_Start_Receive_IT +
                                                                                                                                                                              [Calls]
                                                                                                                                                                              • >>   UART_Start_Receive_IT
                                                                                                                                                                              -
                                                                                                                                                                              [Called By]
                                                                                                                                                                              • >>   rf433_hal_uart_rxcplt_callback +
                                                                                                                                                                                [Called By]
                                                                                                                                                                                • >>   rf433_hal_uart_rxcplt_callback
                                                                                                                                                                                • >>   main -
                                                                                                                                                                                • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                • >>   HAL_UART_RxCpltCallback
                                                                                                                                                                                -

                                                                                                                                                                                HAL_UART_RxCpltCallback (Thumb, 54 bytes, Stack size 16 bytes, main.o(i.HAL_UART_RxCpltCallback)) -

                                                                                                                                                                                [Stack]

                                                                                                                                                                                • Max Depth = 224
                                                                                                                                                                                • Call Chain = HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                  HAL_UART_RxCpltCallback (Thumb, 96 bytes, Stack size 16 bytes, main.o(i.HAL_UART_RxCpltCallback)) +

                                                                                                                                                                                  [Stack]

                                                                                                                                                                                  • Max Depth = 224
                                                                                                                                                                                  • Call Chain = HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                  -
                                                                                                                                                                                  [Calls]
                                                                                                                                                                                  • >>   rf433_hal_uart_rxcplt_callback -
                                                                                                                                                                                  • >>   HAL_UART_Receive_IT -
                                                                                                                                                                                  • >>   CmdParser_FeedByte -
                                                                                                                                                                                  • >>   HAL_GetTick +
                                                                                                                                                                                    [Calls]
                                                                                                                                                                                    • >>   rf433_hal_uart_rxcplt_callback +
                                                                                                                                                                                    • >>   MultiUART_FeedByte +
                                                                                                                                                                                    • >>   HAL_UART_Receive_IT +
                                                                                                                                                                                    • >>   CmdParser_FeedByte +
                                                                                                                                                                                    • >>   HAL_GetTick
                                                                                                                                                                                    -
                                                                                                                                                                                    [Called By]
                                                                                                                                                                                    • >>   UART_Receive_IT +
                                                                                                                                                                                      [Called By]
                                                                                                                                                                                      • >>   UART_Receive_IT
                                                                                                                                                                                      -

                                                                                                                                                                                      HAL_UART_Transmit (Thumb, 178 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit)) +

                                                                                                                                                                                      HAL_UART_Transmit (Thumb, 178 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit))

                                                                                                                                                                                      [Stack]

                                                                                                                                                                                      • Max Depth = 64
                                                                                                                                                                                      • Call Chain = HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                      -
                                                                                                                                                                                      [Calls]
                                                                                                                                                                                      • >>   HAL_GetTick -
                                                                                                                                                                                      • >>   UART_WaitOnFlagUntilTimeout +
                                                                                                                                                                                        [Calls]
                                                                                                                                                                                        • >>   HAL_GetTick +
                                                                                                                                                                                        • >>   UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                        -
                                                                                                                                                                                        [Called By]
                                                                                                                                                                                        • >>   rf433_hal_uart_tx +
                                                                                                                                                                                          [Called By]
                                                                                                                                                                                          • >>   rf433_hal_uart_tx
                                                                                                                                                                                          -

                                                                                                                                                                                          HAL_UART_Transmit_IT (Thumb, 56 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT)) +

                                                                                                                                                                                          HAL_UART_Transmit_IT (Thumb, 56 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT))

                                                                                                                                                                                          [Stack]

                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                          • Call Chain = HAL_UART_Transmit_IT
                                                                                                                                                                                          -
                                                                                                                                                                                          [Called By]
                                                                                                                                                                                          • >>   UART2_Print_TxCpltCallback -
                                                                                                                                                                                          • >>   UART2_Print_Task -
                                                                                                                                                                                          • >>   UART2_Print_Send +
                                                                                                                                                                                            [Called By]
                                                                                                                                                                                            • >>   UART2_Print_TxCpltCallback +
                                                                                                                                                                                            • >>   UART2_Print_Task +
                                                                                                                                                                                            • >>   MultiUART_TxCpltCallback +
                                                                                                                                                                                            • >>   tx_kickoff +
                                                                                                                                                                                            • >>   UART2_Print_Send
                                                                                                                                                                                            -

                                                                                                                                                                                            HAL_UART_TxCpltCallback (Thumb, 18 bytes, Stack size 8 bytes, main.o(i.HAL_UART_TxCpltCallback)) -

                                                                                                                                                                                            [Stack]

                                                                                                                                                                                            • Max Depth = 32
                                                                                                                                                                                            • Call Chain = HAL_UART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                              HAL_UART_TxCpltCallback (Thumb, 50 bytes, Stack size 8 bytes, main.o(i.HAL_UART_TxCpltCallback)) +

                                                                                                                                                                                              [Stack]

                                                                                                                                                                                              • Max Depth = 56
                                                                                                                                                                                              • Call Chain = HAL_UART_TxCpltCallback ⇒ MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                              -
                                                                                                                                                                                              [Calls]
                                                                                                                                                                                              • >>   UART2_Print_TxCpltCallback +
                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                • >>   UART2_Print_TxCpltCallback +
                                                                                                                                                                                                • >>   MultiUART_TxCpltCallback
                                                                                                                                                                                                -
                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                • >>   UART_EndTransmit_IT +
                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                  • >>   UART_EndTransmit_IT

                                                                                                                                                                                                  HardFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.HardFault_Handler))
                                                                                                                                                                                                  [Address Reference Count : 1]

                                                                                                                                                                                                  • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                  -

                                                                                                                                                                                                  IO_Monitor_GetAllStates (Thumb, 34 bytes, Stack size 0 bytes, io_monitor.o(i.IO_Monitor_GetAllStates)) -

                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                  • >>   process_cmd_frame -
                                                                                                                                                                                                  • >>   IO_Monitor_Init +

                                                                                                                                                                                                    IO_Monitor_GetAllStates (Thumb, 34 bytes, Stack size 0 bytes, io_monitor.o(i.IO_Monitor_GetAllStates)) +

                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                    • >>   IO_Monitor_Init +
                                                                                                                                                                                                    • >>   process_cmd_frame
                                                                                                                                                                                                    -

                                                                                                                                                                                                    IO_Monitor_GetState (Thumb, 20 bytes, Stack size 0 bytes, io_monitor.o(i.IO_Monitor_GetState)) -

                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                    • >>   process_cmd_frame +

                                                                                                                                                                                                      IO_Monitor_GetState (Thumb, 20 bytes, Stack size 0 bytes, io_monitor.o(i.IO_Monitor_GetState)) +

                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                      • >>   process_cmd_frame
                                                                                                                                                                                                      -

                                                                                                                                                                                                      IO_Monitor_Init (Thumb, 76 bytes, Stack size 16 bytes, io_monitor.o(i.IO_Monitor_Init)) +

                                                                                                                                                                                                      IO_Monitor_Init (Thumb, 76 bytes, Stack size 16 bytes, io_monitor.o(i.IO_Monitor_Init))

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 208
                                                                                                                                                                                                      • Call Chain = IO_Monitor_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   UART2_Print_Printf -
                                                                                                                                                                                                      • >>   IO_Monitor_GetAllStates -
                                                                                                                                                                                                      • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                        • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                        • >>   UART2_Print_Printf +
                                                                                                                                                                                                        • >>   IO_Monitor_GetAllStates

                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                        • >>   main
                                                                                                                                                                                                        -

                                                                                                                                                                                                        IO_Monitor_Task (Thumb, 122 bytes, Stack size 24 bytes, io_monitor.o(i.IO_Monitor_Task)) +

                                                                                                                                                                                                        IO_Monitor_Task (Thumb, 122 bytes, Stack size 24 bytes, io_monitor.o(i.IO_Monitor_Task))

                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                        • Max Depth = 272
                                                                                                                                                                                                        • Call Chain = IO_Monitor_Task ⇒ send_di_event ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                        -
                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                        • >>   HAL_GetTick -
                                                                                                                                                                                                        • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                                        • >>   send_di_event +
                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                          • >>   HAL_GetTick +
                                                                                                                                                                                                          • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                          • >>   send_di_event

                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                          • >>   main
                                                                                                                                                                                                          -

                                                                                                                                                                                                          MX_GPIO_Init (Thumb, 258 bytes, Stack size 24 bytes, gpio.o(i.MX_GPIO_Init)) +

                                                                                                                                                                                                          MX_GPIO_Init (Thumb, 258 bytes, Stack size 24 bytes, gpio.o(i.MX_GPIO_Init))

                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                          • Max Depth = 60
                                                                                                                                                                                                          • Call Chain = MX_GPIO_Init ⇒ HAL_GPIO_Init
                                                                                                                                                                                                          -
                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                          • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                          • >>   HAL_GPIO_Init +
                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                            • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                            • >>   HAL_GPIO_Init

                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                            • >>   main
                                                                                                                                                                                                            -

                                                                                                                                                                                                            MX_SPI2_Init (Thumb, 58 bytes, Stack size 8 bytes, spi.o(i.MX_SPI2_Init)) +

                                                                                                                                                                                                            MX_SPI2_Init (Thumb, 58 bytes, Stack size 8 bytes, spi.o(i.MX_SPI2_Init))

                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                            • Max Depth = 84
                                                                                                                                                                                                            • Call Chain = MX_SPI2_Init ⇒ HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                                                                                                                                            -
                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                            • >>   HAL_SPI_Init -
                                                                                                                                                                                                            • >>   Error_Handler +
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   HAL_SPI_Init +
                                                                                                                                                                                                              • >>   Error_Handler

                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                              • >>   main
                                                                                                                                                                                                              -

                                                                                                                                                                                                              MX_USART1_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART1_UART_Init)) +

                                                                                                                                                                                                              MX_USART1_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART1_UART_Init))

                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                              • Max Depth = 96
                                                                                                                                                                                                              • Call Chain = MX_USART1_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                              -
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   HAL_UART_Init -
                                                                                                                                                                                                              • >>   Error_Handler +
                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                • >>   HAL_UART_Init +
                                                                                                                                                                                                                • >>   Error_Handler

                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                • >>   main
                                                                                                                                                                                                                -

                                                                                                                                                                                                                MX_USART2_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART2_UART_Init)) +

                                                                                                                                                                                                                MX_USART2_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART2_UART_Init))

                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                • Max Depth = 96
                                                                                                                                                                                                                • Call Chain = MX_USART2_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                                -
                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                • >>   HAL_UART_Init -
                                                                                                                                                                                                                • >>   Error_Handler +
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   HAL_UART_Init +
                                                                                                                                                                                                                  • >>   Error_Handler

                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                                  -

                                                                                                                                                                                                                  MX_USART3_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART3_UART_Init)) +

                                                                                                                                                                                                                  MX_USART3_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART3_UART_Init))

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 96
                                                                                                                                                                                                                  • Call Chain = MX_USART3_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                                  -
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   HAL_UART_Init -
                                                                                                                                                                                                                  • >>   Error_Handler +
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   HAL_UART_Init +
                                                                                                                                                                                                                    • >>   Error_Handler

                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   main
                                                                                                                                                                                                                    @@ -808,29 +949,99 @@ Global Symbols

                                                                                                                                                                                                                    MemManage_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.MemManage_Handler))
                                                                                                                                                                                                                    [Address Reference Count : 1]

                                                                                                                                                                                                                    • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                    +

                                                                                                                                                                                                                    MultiUART_FeedByte (Thumb, 74 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_FeedByte)) +

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 208
                                                                                                                                                                                                                    • Call Chain = MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   rx_ring_push +
                                                                                                                                                                                                                    • >>   UART2_Print_Printf +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                    MultiUART_GetPortName (Thumb, 18 bytes, Stack size 0 bytes, multi_uart_router.o(i.MultiUART_GetPortName)) +

                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                    • >>   flush_rx_log +
                                                                                                                                                                                                                    • >>   cmd_parser_response_callback +
                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                    MultiUART_GetRxCount (Thumb, 32 bytes, Stack size 0 bytes, multi_uart_router.o(i.MultiUART_GetRxCount)) +

                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                    • >>   CmdRouter_Task +
                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                    MultiUART_Init (Thumb, 86 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_Init)) +

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 208
                                                                                                                                                                                                                    • Call Chain = MultiUART_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   tx_ring_init +
                                                                                                                                                                                                                    • >>   rx_ring_init +
                                                                                                                                                                                                                    • >>   UART2_Print_Printf +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   main +
                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                    MultiUART_ReadByte (Thumb, 86 bytes, Stack size 8 bytes, multi_uart_router.o(i.MultiUART_ReadByte)) +

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                                                                    • Call Chain = MultiUART_ReadByte +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   CmdRouter_Task +
                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                    MultiUART_Send (Thumb, 96 bytes, Stack size 24 bytes, multi_uart_router.o(i.MultiUART_Send)) +

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 56
                                                                                                                                                                                                                    • Call Chain = MultiUART_Send ⇒ tx_kickoff ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   tx_ring_push +
                                                                                                                                                                                                                    • >>   tx_kickoff +
                                                                                                                                                                                                                    • >>   UART2_Print_Send +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   MultiUART_SendString +
                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                    MultiUART_SendString (Thumb, 32 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_SendString)) +

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 72
                                                                                                                                                                                                                    • Call Chain = MultiUART_SendString ⇒ MultiUART_Send ⇒ tx_kickoff ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   MultiUART_Send +
                                                                                                                                                                                                                    • >>   strlen +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   cmd_parser_response_callback +
                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                    MultiUART_Task (Thumb, 48 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_Task)) +

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 48
                                                                                                                                                                                                                    • Call Chain = MultiUART_Task ⇒ tx_kickoff ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   tx_kickoff +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   main +
                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                    MultiUART_TxCpltCallback (Thumb, 116 bytes, Stack size 24 bytes, multi_uart_router.o(i.MultiUART_TxCpltCallback)) +

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 48
                                                                                                                                                                                                                    • Call Chain = MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   UART2_Print_TxCpltCallback +
                                                                                                                                                                                                                    • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                    +
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   HAL_UART_TxCpltCallback +
                                                                                                                                                                                                                    +

                                                                                                                                                                                                                    NMI_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.NMI_Handler))
                                                                                                                                                                                                                    [Address Reference Count : 1]

                                                                                                                                                                                                                    • startup_stm32f103xb.o(RESET)

                                                                                                                                                                                                                    PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.PendSV_Handler))
                                                                                                                                                                                                                    [Address Reference Count : 1]

                                                                                                                                                                                                                    • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                    -

                                                                                                                                                                                                                    Relay_Init (Thumb, 48 bytes, Stack size 8 bytes, relay_control.o(i.Relay_Init)) +

                                                                                                                                                                                                                    Relay_Init (Thumb, 32 bytes, Stack size 8 bytes, relay_control.o(i.Relay_Init))

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 200
                                                                                                                                                                                                                    • Call Chain = Relay_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                    -
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   UART2_Print_Printf -
                                                                                                                                                                                                                    • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                      • >>   UART2_Print_Printf

                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                      • >>   main
                                                                                                                                                                                                                      -

                                                                                                                                                                                                                      Relay_SetState (Thumb, 140 bytes, Stack size 24 bytes, relay_control.o(i.Relay_SetState)) -

                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                      • Max Depth = 216
                                                                                                                                                                                                                      • Call Chain = Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                        Relay_SetState (Thumb, 94 bytes, Stack size 16 bytes, relay_control.o(i.Relay_SetState)) +

                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                        • Max Depth = 208
                                                                                                                                                                                                                        • Call Chain = Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                        -
                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                        • >>   UART2_Print_Printf -
                                                                                                                                                                                                                        • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                        • >>   HAL_GetTick +
                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                          • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                          • >>   HAL_GetTick +
                                                                                                                                                                                                                          • >>   UART2_Print_Printf
                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                          • >>   process_cmd_frame +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   process_cmd_frame

                                                                                                                                                                                                                            SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.SVC_Handler)) @@ -839,18 +1050,18 @@ Global Symbols

                                                                                                                                                                                                                            SysTick_Handler (Thumb, 12 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.SysTick_Handler))

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 20
                                                                                                                                                                                                                            • Call Chain = SysTick_Handler ⇒ systick_interrupt_1ms_callback ⇒ uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                                            -
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   HAL_IncTick -
                                                                                                                                                                                                                            • >>   systick_interrupt_1ms_callback +
                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                              • >>   HAL_IncTick +
                                                                                                                                                                                                                              • >>   systick_interrupt_1ms_callback

                                                                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                                                                              • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                              -

                                                                                                                                                                                                                              SystemClock_Config (Thumb, 102 bytes, Stack size 64 bytes, main.o(i.SystemClock_Config)) +

                                                                                                                                                                                                                              SystemClock_Config (Thumb, 102 bytes, Stack size 64 bytes, main.o(i.SystemClock_Config))

                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                              • Max Depth = 144
                                                                                                                                                                                                                              • Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                                              -
                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                              • >>   HAL_RCC_OscConfig -
                                                                                                                                                                                                                              • >>   HAL_RCC_ClockConfig -
                                                                                                                                                                                                                              • >>   Error_Handler -
                                                                                                                                                                                                                              • >>   __aeabi_memclr4 +
                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                • >>   HAL_RCC_OscConfig +
                                                                                                                                                                                                                                • >>   HAL_RCC_ClockConfig +
                                                                                                                                                                                                                                • >>   Error_Handler +
                                                                                                                                                                                                                                • >>   __aeabi_memclr4

                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                • >>   main
                                                                                                                                                                                                                                @@ -858,594 +1069,813 @@ Global Symbols

                                                                                                                                                                                                                                SystemInit (Thumb, 2 bytes, Stack size 0 bytes, system_stm32f1xx.o(i.SystemInit))
                                                                                                                                                                                                                                [Address Reference Count : 1]

                                                                                                                                                                                                                                • startup_stm32f103xb.o(.text)
                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                UART2_Print_Init (Thumb, 38 bytes, Stack size 8 bytes, uart2_print.o(i.UART2_Print_Init)) +

                                                                                                                                                                                                                                UART2_Print_Init (Thumb, 38 bytes, Stack size 8 bytes, uart2_print.o(i.UART2_Print_Init))

                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                • Max Depth = 200
                                                                                                                                                                                                                                • Call Chain = UART2_Print_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                  • >>   UART2_Print_Printf

                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                  UART2_Print_Printf (Thumb, 62 bytes, Stack size 160 bytes, uart2_print.o(i.UART2_Print_Printf)) +

                                                                                                                                                                                                                                  UART2_Print_Printf (Thumb, 62 bytes, Stack size 160 bytes, uart2_print.o(i.UART2_Print_Printf))

                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                  • Max Depth = 192
                                                                                                                                                                                                                                  • Call Chain = UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                  • >>   UART2_Print_Send -
                                                                                                                                                                                                                                  • >>   vsnprintf +
                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                    • >>   UART2_Print_Send +
                                                                                                                                                                                                                                    • >>   vsnprintf
                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                    • >>   Relay_SetState -
                                                                                                                                                                                                                                    • >>   process_cmd_frame -
                                                                                                                                                                                                                                    • >>   UART2_Print_Init -
                                                                                                                                                                                                                                    • >>   Relay_Init -
                                                                                                                                                                                                                                    • >>   IO_Monitor_Init -
                                                                                                                                                                                                                                    • >>   CmdParser_Init -
                                                                                                                                                                                                                                    • >>   CmdParser_FeedByte -
                                                                                                                                                                                                                                    • >>   send_di_event +
                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                      • >>   UART2_Print_Init +
                                                                                                                                                                                                                                      • >>   Relay_Init +
                                                                                                                                                                                                                                      • >>   MultiUART_Init +
                                                                                                                                                                                                                                      • >>   MultiUART_FeedByte +
                                                                                                                                                                                                                                      • >>   IO_Monitor_Init +
                                                                                                                                                                                                                                      • >>   CmdRouter_Init +
                                                                                                                                                                                                                                      • >>   CmdParser_Init +
                                                                                                                                                                                                                                      • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                                      • >>   flush_rx_log +
                                                                                                                                                                                                                                      • >>   send_di_event +
                                                                                                                                                                                                                                      • >>   Relay_SetState +
                                                                                                                                                                                                                                      • >>   process_cmd_frame
                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                      UART2_Print_Send (Thumb, 170 bytes, Stack size 24 bytes, uart2_print.o(i.UART2_Print_Send)) +

                                                                                                                                                                                                                                      UART2_Print_Send (Thumb, 170 bytes, Stack size 24 bytes, uart2_print.o(i.UART2_Print_Send))

                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                      • Max Depth = 32
                                                                                                                                                                                                                                      • Call Chain = UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                      • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                        • >>   HAL_UART_Transmit_IT
                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                        • >>   UART2_Print_String -
                                                                                                                                                                                                                                        • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                        • >>   fputc +
                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                          • >>   MultiUART_Send +
                                                                                                                                                                                                                                          • >>   DebugLog_Output +
                                                                                                                                                                                                                                          • >>   flush_rx_log +
                                                                                                                                                                                                                                          • >>   fputc +
                                                                                                                                                                                                                                          • >>   UART2_Print_String +
                                                                                                                                                                                                                                          • >>   UART2_Print_Printf
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          UART2_Print_String (Thumb, 28 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_String)) +

                                                                                                                                                                                                                                          UART2_Print_String (Thumb, 28 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_String))

                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                          • Max Depth = 48
                                                                                                                                                                                                                                          • Call Chain = UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                          • >>   UART2_Print_Send -
                                                                                                                                                                                                                                          • >>   strlen +
                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                            • >>   UART2_Print_Send +
                                                                                                                                                                                                                                            • >>   strlen
                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                            • >>   send_response_ok -
                                                                                                                                                                                                                                            • >>   send_response_err -
                                                                                                                                                                                                                                            • >>   send_di_event +
                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                              • >>   DebugLog_Init +
                                                                                                                                                                                                                                              • >>   flush_rx_log +
                                                                                                                                                                                                                                              • >>   send_di_event +
                                                                                                                                                                                                                                              • >>   send_response_ok +
                                                                                                                                                                                                                                              • >>   send_response_err
                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                              UART2_Print_Task (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_Task)) +

                                                                                                                                                                                                                                              UART2_Print_Task (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_Task))

                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                              • Max Depth = 24
                                                                                                                                                                                                                                              • Call Chain = UART2_Print_Task ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                              • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                • >>   HAL_UART_Transmit_IT

                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                • >>   main
                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                UART2_Print_TxCpltCallback (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_TxCpltCallback)) +

                                                                                                                                                                                                                                                UART2_Print_TxCpltCallback (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_TxCpltCallback))

                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                • Max Depth = 24
                                                                                                                                                                                                                                                • Call Chain = UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                  • >>   HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                  • >>   HAL_UART_TxCpltCallback +
                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                    • >>   MultiUART_TxCpltCallback +
                                                                                                                                                                                                                                                    • >>   HAL_UART_TxCpltCallback
                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                    UART_Start_Receive_IT (Thumb, 64 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT)) +

                                                                                                                                                                                                                                                    UART_Start_Receive_IT (Thumb, 64 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT))

                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                                                                                                    • Call Chain = UART_Start_Receive_IT
                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                    • >>   HAL_UART_Receive_IT +
                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                      • >>   HAL_UART_Receive_IT

                                                                                                                                                                                                                                                      USART1_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART1_IRQHandler)) -

                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                      • Max Depth = 296
                                                                                                                                                                                                                                                      • Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                        [Stack]
                                                                                                                                                                                                                                                        • Max Depth = 296
                                                                                                                                                                                                                                                        • Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                        • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                          • >>   HAL_UART_IRQHandler

                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                          • startup_stm32f103xb.o(RESET)

                                                                                                                                                                                                                                                          USART2_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART2_IRQHandler)) -

                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                          • Max Depth = 296
                                                                                                                                                                                                                                                          • Call Chain = USART2_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                            [Stack]
                                                                                                                                                                                                                                                            • Max Depth = 296
                                                                                                                                                                                                                                                            • Call Chain = USART2_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                            • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                              • >>   HAL_UART_IRQHandler

                                                                                                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                                                                                                              • startup_stm32f103xb.o(RESET)

                                                                                                                                                                                                                                                              USART3_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART3_IRQHandler)) -

                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                              • Max Depth = 296
                                                                                                                                                                                                                                                              • Call Chain = USART3_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                [Stack]
                                                                                                                                                                                                                                                                • Max Depth = 296
                                                                                                                                                                                                                                                                • Call Chain = USART3_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                  • >>   HAL_UART_IRQHandler

                                                                                                                                                                                                                                                                  [Address Reference Count : 1]
                                                                                                                                                                                                                                                                  • startup_stm32f103xb.o(RESET)

                                                                                                                                                                                                                                                                  UsageFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.UsageFault_Handler))
                                                                                                                                                                                                                                                                  [Address Reference Count : 1]

                                                                                                                                                                                                                                                                  • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                  __0printf (Thumb, 22 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) -

                                                                                                                                                                                                                                                                  [Calls]

                                                                                                                                                                                                                                                                  • >>   _printf_core +

                                                                                                                                                                                                                                                                    __0printf (Thumb, 22 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

                                                                                                                                                                                                                                                                    [Calls]

                                                                                                                                                                                                                                                                    • >>   _printf_core
                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                    __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

                                                                                                                                                                                                                                                                    __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) -

                                                                                                                                                                                                                                                                    __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf)) +

                                                                                                                                                                                                                                                                    __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf))

                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                    • Max Depth = 24
                                                                                                                                                                                                                                                                    • Call Chain = __2printf

                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                    • >>   main -
                                                                                                                                                                                                                                                                    • >>   rf433_transmit
                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                    __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

                                                                                                                                                                                                                                                                    __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) -

                                                                                                                                                                                                                                                                    printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

                                                                                                                                                                                                                                                                    printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) -

                                                                                                                                                                                                                                                                    __0snprintf (Thumb, 48 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) -

                                                                                                                                                                                                                                                                    [Calls]

                                                                                                                                                                                                                                                                    • >>   _printf_core +

                                                                                                                                                                                                                                                                      __0snprintf (Thumb, 48 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) +

                                                                                                                                                                                                                                                                      [Calls]

                                                                                                                                                                                                                                                                      • >>   _printf_core
                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                      __1snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) +

                                                                                                                                                                                                                                                                      __1snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) -

                                                                                                                                                                                                                                                                      __2snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf)) +

                                                                                                                                                                                                                                                                      __2snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf))

                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                      • Max Depth = 40
                                                                                                                                                                                                                                                                      • Call Chain = __2snprintf
                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                      • >>   send_response_ok -
                                                                                                                                                                                                                                                                      • >>   send_response_err -
                                                                                                                                                                                                                                                                      • >>   process_cmd_frame -
                                                                                                                                                                                                                                                                      • >>   tx_build_packet -
                                                                                                                                                                                                                                                                      • >>   send_di_event +
                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                        • >>   tx_build_packet +
                                                                                                                                                                                                                                                                        • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                        • >>   flush_rx_log +
                                                                                                                                                                                                                                                                        • >>   send_di_event +
                                                                                                                                                                                                                                                                        • >>   send_response_ok +
                                                                                                                                                                                                                                                                        • >>   send_response_err +
                                                                                                                                                                                                                                                                        • >>   process_cmd_frame
                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                        __c89snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) +

                                                                                                                                                                                                                                                                        __c89snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) -

                                                                                                                                                                                                                                                                        snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) +

                                                                                                                                                                                                                                                                        snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) -

                                                                                                                                                                                                                                                                        __0vsnprintf (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) -

                                                                                                                                                                                                                                                                        [Calls]

                                                                                                                                                                                                                                                                        • >>   _printf_core +

                                                                                                                                                                                                                                                                          __0vsnprintf (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) +

                                                                                                                                                                                                                                                                          [Calls]

                                                                                                                                                                                                                                                                          • >>   _printf_core
                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                          __1vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) +

                                                                                                                                                                                                                                                                          __1vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) -

                                                                                                                                                                                                                                                                          __2vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) +

                                                                                                                                                                                                                                                                          __2vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) -

                                                                                                                                                                                                                                                                          __c89vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) +

                                                                                                                                                                                                                                                                          __c89vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) -

                                                                                                                                                                                                                                                                          vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf)) +

                                                                                                                                                                                                                                                                          vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf))

                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                          • Max Depth = 24
                                                                                                                                                                                                                                                                          • Call Chain = vsnprintf
                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                          • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                            • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                            • >>   UART2_Print_Printf
                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                            __aeabi_errno_addr (Thumb, 4 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr)) -

                                                                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                                                                            • >>   _strtoul -
                                                                                                                                                                                                                                                                            • >>   strtol -
                                                                                                                                                                                                                                                                            • >>   atoi +

                                                                                                                                                                                                                                                                              __aeabi_errno_addr (Thumb, 4 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr)) +

                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                              • >>   atoi +
                                                                                                                                                                                                                                                                              • >>   _strtoul +
                                                                                                                                                                                                                                                                              • >>   strtol
                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                              __rt_errno_addr (Thumb, 0 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr), UNUSED) +

                                                                                                                                                                                                                                                                              __rt_errno_addr (Thumb, 0 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr), UNUSED) -

                                                                                                                                                                                                                                                                              __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) +

                                                                                                                                                                                                                                                                              __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) -

                                                                                                                                                                                                                                                                              __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) +

                                                                                                                                                                                                                                                                              __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) -

                                                                                                                                                                                                                                                                              __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) +

                                                                                                                                                                                                                                                                              __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) -

                                                                                                                                                                                                                                                                              fputc (Thumb, 16 bytes, Stack size 16 bytes, uart2_print.o(i.fputc)) +

                                                                                                                                                                                                                                                                              fputc (Thumb, 16 bytes, Stack size 16 bytes, uart2_print.o(i.fputc))

                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                              • Max Depth = 48
                                                                                                                                                                                                                                                                              • Call Chain = fputc ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                              • >>   UART2_Print_Send +
                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                • >>   UART2_Print_Send

                                                                                                                                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                • printfa.o(i.__0printf)
                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                gpio_led_tx_off (Thumb, 16 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_off)) +

                                                                                                                                                                                                                                                                                gpio_led_rx_off (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_rx_off)) +

                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                • Call Chain = gpio_led_rx_off +
                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                • >>   rx_led_control +
                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                gpio_led_rx_on (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_rx_on)) +

                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                • Call Chain = gpio_led_rx_on +
                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                • >>   rx_led_control +
                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                gpio_led_tx_off (Thumb, 16 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_off))

                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                • Call Chain = gpio_led_tx_off
                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                  • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                  • >>   tx_led_control +
                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                    • >>   tx_led_control
                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                    gpio_led_tx_on (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_on)) +

                                                                                                                                                                                                                                                                                    gpio_led_tx_on (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_on))

                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                                                                                                                                    • Call Chain = gpio_led_tx_on
                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                    • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                      • >>   tx_led_control +
                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                        • >>   tx_led_control
                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                        main (Thumb, 142 bytes, Stack size 0 bytes, main.o(i.main)) -

                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                        • Max Depth = 288
                                                                                                                                                                                                                                                                                        • Call Chain = main ⇒ CmdParser_Task ⇒ process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                                          main (Thumb, 186 bytes, Stack size 0 bytes, main.o(i.main)) +

                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                          • Max Depth = 328
                                                                                                                                                                                                                                                                                          • Call Chain = main ⇒ rf433_rx_app_task ⇒ rf433_rx_app_parse_packet ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                          • >>   rf433_init -
                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Task -
                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Init -
                                                                                                                                                                                                                                                                                          • >>   Relay_Init -
                                                                                                                                                                                                                                                                                          • >>   MX_USART3_UART_Init -
                                                                                                                                                                                                                                                                                          • >>   MX_USART2_UART_Init -
                                                                                                                                                                                                                                                                                          • >>   MX_USART1_UART_Init -
                                                                                                                                                                                                                                                                                          • >>   MX_SPI2_Init -
                                                                                                                                                                                                                                                                                          • >>   MX_GPIO_Init -
                                                                                                                                                                                                                                                                                          • >>   IO_Monitor_Task -
                                                                                                                                                                                                                                                                                          • >>   IO_Monitor_Init -
                                                                                                                                                                                                                                                                                          • >>   HAL_UART_Receive_IT -
                                                                                                                                                                                                                                                                                          • >>   HAL_Init -
                                                                                                                                                                                                                                                                                          • >>   CmdParser_Task -
                                                                                                                                                                                                                                                                                          • >>   CmdParser_Init -
                                                                                                                                                                                                                                                                                          • >>   SystemClock_Config -
                                                                                                                                                                                                                                                                                          • >>   rf433_tx_app_task -
                                                                                                                                                                                                                                                                                          • >>   rf433_tx_app_start -
                                                                                                                                                                                                                                                                                          • >>   rf433_tx_app_init -
                                                                                                                                                                                                                                                                                          • >>   __2printf +
                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                            • >>   rf433_init +
                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Task +
                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Init +
                                                                                                                                                                                                                                                                                            • >>   Relay_Init +
                                                                                                                                                                                                                                                                                            • >>   MultiUART_Task +
                                                                                                                                                                                                                                                                                            • >>   MultiUART_Init +
                                                                                                                                                                                                                                                                                            • >>   MX_USART3_UART_Init +
                                                                                                                                                                                                                                                                                            • >>   MX_USART2_UART_Init +
                                                                                                                                                                                                                                                                                            • >>   MX_USART1_UART_Init +
                                                                                                                                                                                                                                                                                            • >>   MX_SPI2_Init +
                                                                                                                                                                                                                                                                                            • >>   MX_GPIO_Init +
                                                                                                                                                                                                                                                                                            • >>   IO_Monitor_Task +
                                                                                                                                                                                                                                                                                            • >>   IO_Monitor_Init +
                                                                                                                                                                                                                                                                                            • >>   HAL_UART_Receive_IT +
                                                                                                                                                                                                                                                                                            • >>   HAL_Init +
                                                                                                                                                                                                                                                                                            • >>   DebugLog_Init +
                                                                                                                                                                                                                                                                                            • >>   CmdRouter_Task +
                                                                                                                                                                                                                                                                                            • >>   CmdRouter_Init +
                                                                                                                                                                                                                                                                                            • >>   CmdParser_Task +
                                                                                                                                                                                                                                                                                            • >>   CmdParser_Init +
                                                                                                                                                                                                                                                                                            • >>   SystemClock_Config +
                                                                                                                                                                                                                                                                                            • >>   rf433_tx_app_task +
                                                                                                                                                                                                                                                                                            • >>   rf433_tx_app_start +
                                                                                                                                                                                                                                                                                            • >>   rf433_tx_app_init +
                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_task +
                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_start +
                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_init +
                                                                                                                                                                                                                                                                                            • >>   __2printf

                                                                                                                                                                                                                                                                                            [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                            • entry9a.o(.ARM.Collect$$$$0000000B)
                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                            rf433_hal_1ms_callback (Thumb, 30 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_1ms_callback)) -

                                                                                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                                                                                            • >>   uart1_rx_timeout_1ms_callback +

                                                                                                                                                                                                                                                                                              rf433_hal_1ms_callback (Thumb, 30 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_1ms_callback)) +

                                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                                              • >>   uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                              rf433_hal_aux_wait (Thumb, 58 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_aux_wait)) +

                                                                                                                                                                                                                                                                                              rf433_hal_aux_wait (Thumb, 58 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_aux_wait))

                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                              • Max Depth = 24
                                                                                                                                                                                                                                                                                              • Call Chain = rf433_hal_aux_wait ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                              • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                              • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                                • >>   HAL_Delay +
                                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_ReadPin
                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                • >>   rf433_set_config -
                                                                                                                                                                                                                                                                                                • >>   rf433_hal_set_work_mode +
                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                  • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                  • >>   rf433_hal_set_work_mode
                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                  rf433_hal_deinit (Thumb, 22 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_deinit)) -

                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                  • >>   rf433_init +

                                                                                                                                                                                                                                                                                                    rf433_hal_deinit (Thumb, 22 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_deinit)) +

                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                    • >>   rf433_init
                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                    rf433_hal_init (Thumb, 36 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_init)) -

                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                    • >>   rf433_init +

                                                                                                                                                                                                                                                                                                      rf433_hal_fifo_clear (Thumb, 8 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_fifo_clear)) +

                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                      • Call Chain = rf433_hal_fifo_clear +
                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                      • >>   rf433_fifo_clear +
                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                      • >>   rf433_rx_start
                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                      rf433_hal_set_work_mode (Thumb, 150 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_set_work_mode)) +

                                                                                                                                                                                                                                                                                                      rf433_hal_fifo_get_length (Thumb, 12 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_fifo_get_length)) +

                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                      • Call Chain = rf433_hal_fifo_get_length +
                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                      • >>   rf433_fifo_get_length +
                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                      • >>   uart1_check_rx_done +
                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                      rf433_hal_fifo_read (Thumb, 20 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_fifo_read)) +

                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                      • Max Depth = 28
                                                                                                                                                                                                                                                                                                      • Call Chain = rf433_hal_fifo_read ⇒ rf433_fifo_read +
                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                      • >>   rf433_fifo_read +
                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                      • >>   uart1_check_rx_done +
                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                      rf433_hal_init (Thumb, 36 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_init)) +

                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                      • >>   rf433_init +
                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                      rf433_hal_set_work_mode (Thumb, 150 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_set_work_mode))

                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                      • Max Depth = 40
                                                                                                                                                                                                                                                                                                      • Call Chain = rf433_hal_set_work_mode ⇒ rf433_hal_aux_wait ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                                      • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_aux_wait +
                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                        • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                        • >>   HAL_Delay +
                                                                                                                                                                                                                                                                                                        • >>   rf433_hal_aux_wait
                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                        • >>   rf433_set_work_mode -
                                                                                                                                                                                                                                                                                                        • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                          • >>   rf433_set_work_mode +
                                                                                                                                                                                                                                                                                                          • >>   rf433_set_config
                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                          rf433_hal_uart_rxcplt_callback (Thumb, 38 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_uart_rxcplt_callback)) +

                                                                                                                                                                                                                                                                                                          rf433_hal_uart_rxcplt_callback (Thumb, 38 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_uart_rxcplt_callback))

                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                          • Max Depth = 32
                                                                                                                                                                                                                                                                                                          • Call Chain = rf433_hal_uart_rxcplt_callback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT
                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_Receive_IT -
                                                                                                                                                                                                                                                                                                          • >>   rf433_fifo_write +
                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_Receive_IT +
                                                                                                                                                                                                                                                                                                            • >>   rf433_fifo_write
                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_RxCpltCallback
                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                              rf433_hal_uart_tx (Thumb, 44 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_uart_tx)) +

                                                                                                                                                                                                                                                                                                              rf433_hal_uart_tx (Thumb, 44 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_uart_tx))

                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                              • Max Depth = 80
                                                                                                                                                                                                                                                                                                              • Call Chain = rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_Transmit +
                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_Transmit
                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                • >>   rf433_transmit -
                                                                                                                                                                                                                                                                                                                • >>   rf433_send_config_command +
                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                  • >>   rf433_transmit +
                                                                                                                                                                                                                                                                                                                  • >>   rf433_send_config_command
                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                  rf433_init (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_init)) +

                                                                                                                                                                                                                                                                                                                  rf433_init (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_init))

                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                  • Max Depth = 120
                                                                                                                                                                                                                                                                                                                  • Call Chain = rf433_init ⇒ rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                  • >>   rf433_set_config -
                                                                                                                                                                                                                                                                                                                  • >>   rf433_hal_init -
                                                                                                                                                                                                                                                                                                                  • >>   rf433_hal_deinit +
                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                    • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_init +
                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_deinit

                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                    • >>   main
                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                    rf433_set_config (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_config)) +

                                                                                                                                                                                                                                                                                                                    rf433_rx_app_init (Thumb, 74 bytes, Stack size 16 bytes, rf433_rx_app.o(i.rf433_rx_app_init)) +

                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                    • Max Depth = 120
                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_rx_app_init ⇒ rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                    • >>   rf433_set_work_mode +
                                                                                                                                                                                                                                                                                                                    • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                    • >>   __aeabi_memclr4 +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                    • >>   main +
                                                                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                                                                    rf433_rx_app_parse_packet (Thumb, 72 bytes, Stack size 24 bytes, rf433_rx_app.o(i.rf433_rx_app_parse_packet)) +

                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                    • Max Depth = 240
                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_rx_app_parse_packet ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                    • >>   __0sscanf +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                    • >>   rf433_rx_app_task +
                                                                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                                                                    rf433_rx_app_start (Thumb, 28 bytes, Stack size 8 bytes, rf433_rx_app.o(i.rf433_rx_app_start)) +

                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                    • Max Depth = 24
                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_rx_app_start ⇒ rf433_rx_start ⇒ rf433_hal_fifo_clear +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                    • >>   rf433_rx_start +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                    • >>   main +
                                                                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                                                                    rf433_rx_app_task (Thumb, 154 bytes, Stack size 88 bytes, rf433_rx_app.o(i.rf433_rx_app_task)) +

                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                    • Max Depth = 328
                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_rx_app_task ⇒ rf433_rx_app_parse_packet ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                    • >>   uart1_check_rx_done +
                                                                                                                                                                                                                                                                                                                    • >>   HAL_Delay +
                                                                                                                                                                                                                                                                                                                    • >>   rf433_rx_app_parse_packet +
                                                                                                                                                                                                                                                                                                                    • >>   rx_update_stats +
                                                                                                                                                                                                                                                                                                                    • >>   rx_led_control +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                    • >>   main +
                                                                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                                                                    rf433_rx_start (Thumb, 50 bytes, Stack size 8 bytes, rf433.o(i.rf433_rx_start)) +

                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                    • Max Depth = 16
                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_rx_start ⇒ rf433_hal_fifo_clear +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_fifo_clear +
                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                    • >>   rf433_rx_app_start +
                                                                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                                                                    rf433_set_config (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_config))

                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                    • Max Depth = 104
                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                    • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_set_work_mode -
                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_aux_wait -
                                                                                                                                                                                                                                                                                                                    • >>   rf433_send_config_command +
                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                      • >>   HAL_Delay +
                                                                                                                                                                                                                                                                                                                      • >>   rf433_send_config_command +
                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_set_work_mode +
                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_aux_wait
                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                      • >>   rf433_init -
                                                                                                                                                                                                                                                                                                                      • >>   rf433_tx_app_init +
                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                        • >>   rf433_init +
                                                                                                                                                                                                                                                                                                                        • >>   rf433_tx_app_init +
                                                                                                                                                                                                                                                                                                                        • >>   rf433_rx_app_init
                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                        rf433_set_work_mode (Thumb, 24 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_work_mode)) +

                                                                                                                                                                                                                                                                                                                        rf433_set_work_mode (Thumb, 24 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_work_mode))

                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                        • Max Depth = 56
                                                                                                                                                                                                                                                                                                                        • Call Chain = rf433_set_work_mode ⇒ rf433_hal_set_work_mode ⇒ rf433_hal_aux_wait ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                        • >>   rf433_hal_set_work_mode +
                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                          • >>   rf433_hal_set_work_mode
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                          • >>   rf433_tx_app_init +
                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                            • >>   rf433_tx_app_init +
                                                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_init
                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                            rf433_transmit (Thumb, 58 bytes, Stack size 16 bytes, rf433.o(i.rf433_transmit)) +

                                                                                                                                                                                                                                                                                                                            rf433_transmit (Thumb, 50 bytes, Stack size 16 bytes, rf433.o(i.rf433_transmit))

                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                            • Max Depth = 96
                                                                                                                                                                                                                                                                                                                            • Call Chain = rf433_transmit ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                            • >>   rf433_hal_uart_tx -
                                                                                                                                                                                                                                                                                                                            • >>   __2printf +
                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                              • >>   rf433_hal_uart_tx
                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                              • >>   rf433_tx_app_task +
                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                • >>   rf433_tx_app_task
                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                rf433_tx_app_init (Thumb, 70 bytes, Stack size 16 bytes, rf433_tx_app.o(i.rf433_tx_app_init)) +

                                                                                                                                                                                                                                                                                                                                rf433_tx_app_init (Thumb, 70 bytes, Stack size 16 bytes, rf433_tx_app.o(i.rf433_tx_app_init))

                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                • Max Depth = 120
                                                                                                                                                                                                                                                                                                                                • Call Chain = rf433_tx_app_init ⇒ rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                • >>   rf433_set_work_mode -
                                                                                                                                                                                                                                                                                                                                • >>   rf433_set_config -
                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_memclr4 +
                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                  • >>   rf433_set_work_mode +
                                                                                                                                                                                                                                                                                                                                  • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                                  • >>   __aeabi_memclr4

                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                  rf433_tx_app_start (Thumb, 40 bytes, Stack size 0 bytes, rf433_tx_app.o(i.rf433_tx_app_start)) +

                                                                                                                                                                                                                                                                                                                                  rf433_tx_app_start (Thumb, 40 bytes, Stack size 0 bytes, rf433_tx_app.o(i.rf433_tx_app_start))

                                                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                  rf433_tx_app_task (Thumb, 206 bytes, Stack size 48 bytes, rf433_tx_app.o(i.rf433_tx_app_task)) +

                                                                                                                                                                                                                                                                                                                                  rf433_tx_app_task (Thumb, 206 bytes, Stack size 48 bytes, rf433_tx_app.o(i.rf433_tx_app_task))

                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                  • Max Depth = 144
                                                                                                                                                                                                                                                                                                                                  • Call Chain = rf433_tx_app_task ⇒ rf433_transmit ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                  • >>   rf433_transmit -
                                                                                                                                                                                                                                                                                                                                  • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                  • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                                                                  • >>   tx_led_control -
                                                                                                                                                                                                                                                                                                                                  • >>   tx_build_packet +
                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                    • >>   rf433_transmit +
                                                                                                                                                                                                                                                                                                                                    • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                                                                    • >>   tx_led_control +
                                                                                                                                                                                                                                                                                                                                    • >>   tx_build_packet +
                                                                                                                                                                                                                                                                                                                                    • >>   HAL_Delay

                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                    • >>   main
                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                    systick_interrupt_1ms_callback (Thumb, 24 bytes, Stack size 8 bytes, systick.o(i.systick_interrupt_1ms_callback)) +

                                                                                                                                                                                                                                                                                                                                    systick_interrupt_1ms_callback (Thumb, 24 bytes, Stack size 8 bytes, systick.o(i.systick_interrupt_1ms_callback))

                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                    • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                    • Call Chain = systick_interrupt_1ms_callback ⇒ uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                    • >>   uart1_rx_timeout_1ms_callback +
                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                      • >>   uart1_rx_timeout_1ms_callback

                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                      • >>   SysTick_Handler
                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                      uart1_rx_timeout_1ms_callback (Thumb, 8 bytes, Stack size 4 bytes, rf433_hal.o(i.uart1_rx_timeout_1ms_callback)) +

                                                                                                                                                                                                                                                                                                                                      uart1_check_rx_done (Thumb, 76 bytes, Stack size 24 bytes, rf433_hal.o(i.uart1_check_rx_done)) +

                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                      • Max Depth = 52
                                                                                                                                                                                                                                                                                                                                      • Call Chain = uart1_check_rx_done ⇒ rf433_hal_fifo_read ⇒ rf433_fifo_read +
                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_fifo_read +
                                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_fifo_get_length +
                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                      • >>   rf433_rx_app_task +
                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                      uart1_rx_timeout_1ms_callback (Thumb, 8 bytes, Stack size 4 bytes, rf433_hal.o(i.uart1_rx_timeout_1ms_callback))

                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                      • Max Depth = 4
                                                                                                                                                                                                                                                                                                                                      • Call Chain = uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_1ms_callback +
                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                        • >>   rf433_hal_1ms_callback
                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                        • >>   systick_interrupt_1ms_callback +
                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                          • >>   systick_interrupt_1ms_callback

                                                                                                                                                                                                                                                                                                                                          Local Symbols

                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                          tx_build_packet (Thumb, 54 bytes, Stack size 32 bytes, rf433_tx_app.o(i.tx_build_packet)) +

                                                                                                                                                                                                                                                                                                                                          rx_led_control (Thumb, 18 bytes, Stack size 8 bytes, rf433_rx_app.o(i.rx_led_control)) +

                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                          • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                          • Call Chain = rx_led_control ⇒ gpio_led_rx_on +
                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                          • >>   gpio_led_rx_on +
                                                                                                                                                                                                                                                                                                                                          • >>   gpio_led_rx_off +
                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                          • >>   rf433_rx_app_task +
                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                          rx_update_stats (Thumb, 56 bytes, Stack size 0 bytes, rf433_rx_app.o(i.rx_update_stats)) +

                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                          • >>   rf433_rx_app_task +
                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                          tx_build_packet (Thumb, 54 bytes, Stack size 32 bytes, rf433_tx_app.o(i.tx_build_packet))

                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                          • Max Depth = 72
                                                                                                                                                                                                                                                                                                                                          • Call Chain = tx_build_packet ⇒ __2snprintf
                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                          • >>   __2snprintf +
                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                            • >>   __2snprintf
                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                            • >>   rf433_tx_app_task +
                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                              • >>   rf433_tx_app_task
                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                              tx_led_control (Thumb, 18 bytes, Stack size 8 bytes, rf433_tx_app.o(i.tx_led_control)) +

                                                                                                                                                                                                                                                                                                                                              tx_led_control (Thumb, 18 bytes, Stack size 8 bytes, rf433_tx_app.o(i.tx_led_control))

                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                              • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                              • Call Chain = tx_led_control ⇒ gpio_led_tx_on
                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                              • >>   gpio_led_tx_on -
                                                                                                                                                                                                                                                                                                                                              • >>   gpio_led_tx_off +
                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                • >>   gpio_led_tx_on +
                                                                                                                                                                                                                                                                                                                                                • >>   gpio_led_tx_off
                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                • >>   rf433_tx_app_task +
                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_tx_app_task
                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                  calc_checksum (Thumb, 26 bytes, Stack size 8 bytes, cmd_parser.o(i.calc_checksum)) +

                                                                                                                                                                                                                                                                                                                                                  calc_checksum (Thumb, 26 bytes, Stack size 8 bytes, cmd_parser.o(i.calc_checksum))

                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                  • Call Chain = calc_checksum
                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                  • >>   send_response_ok -
                                                                                                                                                                                                                                                                                                                                                  • >>   send_response_err +
                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                    • >>   send_response_ok +
                                                                                                                                                                                                                                                                                                                                                    • >>   send_response_err
                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                    hex_char_to_val (Thumb, 54 bytes, Stack size 0 bytes, cmd_parser.o(i.hex_char_to_val)) -

                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                    • >>   hex_to_byte +

                                                                                                                                                                                                                                                                                                                                                      hex_char_to_val (Thumb, 54 bytes, Stack size 0 bytes, cmd_parser.o(i.hex_char_to_val)) +

                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                      • >>   hex_to_byte
                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                      hex_to_byte (Thumb, 28 bytes, Stack size 16 bytes, cmd_parser.o(i.hex_to_byte)) +

                                                                                                                                                                                                                                                                                                                                                      hex_to_byte (Thumb, 28 bytes, Stack size 16 bytes, cmd_parser.o(i.hex_to_byte))

                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                      • Call Chain = hex_to_byte
                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                      • >>   hex_char_to_val +
                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                        • >>   hex_char_to_val
                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                        • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                          • >>   CmdParser_FeedByte
                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                          is_str_empty (Thumb, 16 bytes, Stack size 0 bytes, cmd_parser.o(i.is_str_empty)) -

                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                          • >>   process_cmd_frame -
                                                                                                                                                                                                                                                                                                                                                          • >>   is_str_numeric +

                                                                                                                                                                                                                                                                                                                                                            is_str_empty (Thumb, 16 bytes, Stack size 0 bytes, cmd_parser.o(i.is_str_empty)) +

                                                                                                                                                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                                                                                                                                                            • >>   process_cmd_frame +
                                                                                                                                                                                                                                                                                                                                                            • >>   is_str_numeric
                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                            is_str_numeric (Thumb, 48 bytes, Stack size 8 bytes, cmd_parser.o(i.is_str_numeric)) +

                                                                                                                                                                                                                                                                                                                                                            is_str_numeric (Thumb, 48 bytes, Stack size 8 bytes, cmd_parser.o(i.is_str_numeric))

                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                            • Call Chain = is_str_numeric
                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                            • >>   is_str_empty -
                                                                                                                                                                                                                                                                                                                                                            • >>   __rt_ctype_table +
                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                              • >>   is_str_empty +
                                                                                                                                                                                                                                                                                                                                                              • >>   __rt_ctype_table
                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                              • >>   process_cmd_frame +
                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                • >>   process_cmd_frame
                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                is_valid_cmd_char (Thumb, 38 bytes, Stack size 8 bytes, cmd_parser.o(i.is_valid_cmd_char)) +

                                                                                                                                                                                                                                                                                                                                                                is_valid_cmd_char (Thumb, 38 bytes, Stack size 8 bytes, cmd_parser.o(i.is_valid_cmd_char))

                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                • Call Chain = is_valid_cmd_char
                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                • >>   __rt_ctype_table +
                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                  • >>   __rt_ctype_table
                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                  • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                    • >>   CmdParser_FeedByte
                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                    is_valid_param_char (Thumb, 38 bytes, Stack size 8 bytes, cmd_parser.o(i.is_valid_param_char)) +

                                                                                                                                                                                                                                                                                                                                                                    is_valid_param_char (Thumb, 38 bytes, Stack size 8 bytes, cmd_parser.o(i.is_valid_param_char))

                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = is_valid_param_char
                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                    • >>   __rt_ctype_table +
                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                      • >>   __rt_ctype_table
                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                      • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                        • >>   CmdParser_FeedByte
                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                        process_cmd_frame (Thumb, 434 bytes, Stack size 64 bytes, cmd_parser.o(i.process_cmd_frame)) -

                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 280
                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                                                                                                                          process_cmd_frame (Thumb, 400 bytes, Stack size 64 bytes, cmd_parser.o(i.process_cmd_frame)) +

                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 272
                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                                                                                                          • >>   Relay_SetState -
                                                                                                                                                                                                                                                                                                                                                                          • >>   IO_Monitor_GetState -
                                                                                                                                                                                                                                                                                                                                                                          • >>   IO_Monitor_GetAllStates -
                                                                                                                                                                                                                                                                                                                                                                          • >>   send_response_ok -
                                                                                                                                                                                                                                                                                                                                                                          • >>   send_response_err -
                                                                                                                                                                                                                                                                                                                                                                          • >>   is_str_numeric -
                                                                                                                                                                                                                                                                                                                                                                          • >>   is_str_empty -
                                                                                                                                                                                                                                                                                                                                                                          • >>   strcmp -
                                                                                                                                                                                                                                                                                                                                                                          • >>   atoi -
                                                                                                                                                                                                                                                                                                                                                                          • >>   __2snprintf +
                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                                                                                                                            • >>   Relay_SetState +
                                                                                                                                                                                                                                                                                                                                                                            • >>   IO_Monitor_GetState +
                                                                                                                                                                                                                                                                                                                                                                            • >>   IO_Monitor_GetAllStates +
                                                                                                                                                                                                                                                                                                                                                                            • >>   send_response_ok +
                                                                                                                                                                                                                                                                                                                                                                            • >>   send_response_err +
                                                                                                                                                                                                                                                                                                                                                                            • >>   is_str_numeric +
                                                                                                                                                                                                                                                                                                                                                                            • >>   is_str_empty +
                                                                                                                                                                                                                                                                                                                                                                            • >>   atoi +
                                                                                                                                                                                                                                                                                                                                                                            • >>   __2snprintf +
                                                                                                                                                                                                                                                                                                                                                                            • >>   strcmp
                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                            • >>   CmdParser_Task +
                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                              • >>   CmdParser_Task
                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                              reset_parser (Thumb, 32 bytes, Stack size 8 bytes, cmd_parser.o(i.reset_parser)) +

                                                                                                                                                                                                                                                                                                                                                                              reset_parser (Thumb, 32 bytes, Stack size 8 bytes, cmd_parser.o(i.reset_parser))

                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = reset_parser
                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                              • >>   __aeabi_memclr +
                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_memclr
                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                • >>   CmdParser_Task -
                                                                                                                                                                                                                                                                                                                                                                                • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                  • >>   CmdParser_Task +
                                                                                                                                                                                                                                                                                                                                                                                  • >>   CmdParser_FeedByte
                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                  send_response_err (Thumb, 60 bytes, Stack size 48 bytes, cmd_parser.o(i.send_response_err)) +

                                                                                                                                                                                                                                                                                                                                                                                  send_response_err (Thumb, 80 bytes, Stack size 48 bytes, cmd_parser.o(i.send_response_err))

                                                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 96
                                                                                                                                                                                                                                                                                                                                                                                  • Call Chain = send_response_err ⇒ UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                  • >>   UART2_Print_String -
                                                                                                                                                                                                                                                                                                                                                                                  • >>   calc_checksum -
                                                                                                                                                                                                                                                                                                                                                                                  • >>   __2snprintf +
                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                    • >>   UART2_Print_String +
                                                                                                                                                                                                                                                                                                                                                                                    • >>   calc_checksum +
                                                                                                                                                                                                                                                                                                                                                                                    • >>   __2snprintf
                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                    • >>   process_cmd_frame -
                                                                                                                                                                                                                                                                                                                                                                                    • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                      • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                                                                                                                                                                                      • >>   process_cmd_frame
                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                      send_response_ok (Thumb, 60 bytes, Stack size 80 bytes, cmd_parser.o(i.send_response_ok)) +

                                                                                                                                                                                                                                                                                                                                                                                      send_response_ok (Thumb, 80 bytes, Stack size 80 bytes, cmd_parser.o(i.send_response_ok))

                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 128
                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = send_response_ok ⇒ UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                      • >>   UART2_Print_String -
                                                                                                                                                                                                                                                                                                                                                                                      • >>   calc_checksum -
                                                                                                                                                                                                                                                                                                                                                                                      • >>   __2snprintf +
                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                        • >>   UART2_Print_String +
                                                                                                                                                                                                                                                                                                                                                                                        • >>   calc_checksum +
                                                                                                                                                                                                                                                                                                                                                                                        • >>   __2snprintf
                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                        • >>   process_cmd_frame +
                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                          • >>   process_cmd_frame
                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                          calc_checksum (Thumb, 26 bytes, Stack size 8 bytes, io_monitor.o(i.calc_checksum)) +

                                                                                                                                                                                                                                                                                                                                                                                          calc_checksum (Thumb, 26 bytes, Stack size 8 bytes, io_monitor.o(i.calc_checksum))

                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = calc_checksum
                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                          • >>   send_di_event +
                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                            • >>   send_di_event
                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                            send_di_event (Thumb, 82 bytes, Stack size 56 bytes, io_monitor.o(i.send_di_event)) +

                                                                                                                                                                                                                                                                                                                                                                                            send_di_event (Thumb, 102 bytes, Stack size 56 bytes, io_monitor.o(i.send_di_event))

                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 248
                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = send_di_event ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_String -
                                                                                                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                                                                                                                            • >>   calc_checksum -
                                                                                                                                                                                                                                                                                                                                                                                            • >>   __2snprintf +
                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                              • >>   calc_checksum +
                                                                                                                                                                                                                                                                                                                                                                                              • >>   UART2_Print_String +
                                                                                                                                                                                                                                                                                                                                                                                              • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                                                                                                                                              • >>   __2snprintf
                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                              • >>   IO_Monitor_Task +
                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   IO_Monitor_Task
                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                RCC_Delay (Thumb, 36 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(i.RCC_Delay)) +

                                                                                                                                                                                                                                                                                                                                                                                                append_rx_log (Thumb, 54 bytes, Stack size 16 bytes, cmd_router.o(i.append_rx_log)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = append_rx_log +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   CmdRouter_Task +
                                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                                cmd_parser_response_callback (Thumb, 86 bytes, Stack size 24 bytes, cmd_router.o(i.cmd_parser_response_callback)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 360
                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = cmd_parser_response_callback ⇒ DebugLog_Output ⇒ __2snprintf +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   MultiUART_SendString +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   MultiUART_GetPortName +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   strlen +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                • cmd_router.o(i.CmdRouter_Init) +
                                                                                                                                                                                                                                                                                                                                                                                                +

                                                                                                                                                                                                                                                                                                                                                                                                flush_rx_log (Thumb, 162 bytes, Stack size 24 bytes, cmd_router.o(i.flush_rx_log)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 216
                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = flush_rx_log ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   MultiUART_GetPortName +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   UART2_Print_Send +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   UART2_Print_String +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   __2snprintf +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   CmdRouter_Task +
                                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                                init_modules (Thumb, 46 bytes, Stack size 0 bytes, debug_log.o(i.init_modules)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                • >>   DebugLog_Init +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   is_module_enabled +
                                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                                is_module_enabled (Thumb, 72 bytes, Stack size 16 bytes, debug_log.o(i.is_module_enabled)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 28
                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = is_module_enabled ⇒ strncmp +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   init_modules +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   strncmp +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                                rx_ring_init (Thumb, 16 bytes, Stack size 0 bytes, multi_uart_router.o(i.rx_ring_init)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                • >>   MultiUART_Init +
                                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                                rx_ring_push (Thumb, 70 bytes, Stack size 8 bytes, multi_uart_router.o(i.rx_ring_push)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = rx_ring_push +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   MultiUART_FeedByte +
                                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                                tx_kickoff (Thumb, 98 bytes, Stack size 24 bytes, multi_uart_router.o(i.tx_kickoff)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = tx_kickoff ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   MultiUART_Task +
                                                                                                                                                                                                                                                                                                                                                                                                • >>   MultiUART_Send +
                                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                                tx_ring_init (Thumb, 22 bytes, Stack size 0 bytes, multi_uart_router.o(i.tx_ring_init)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                • >>   MultiUART_Init +
                                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                                tx_ring_push (Thumb, 94 bytes, Stack size 16 bytes, multi_uart_router.o(i.tx_ring_push)) +

                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = tx_ring_push +
                                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   MultiUART_Send +
                                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                                RCC_Delay (Thumb, 36 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(i.RCC_Delay))

                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = RCC_Delay
                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_RCC_OscConfig +
                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_RCC_OscConfig
                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                  __NVIC_GetPriorityGrouping (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping)) -

                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_NVIC_SetPriority +

                                                                                                                                                                                                                                                                                                                                                                                                    __NVIC_GetPriorityGrouping (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping)) +

                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_NVIC_SetPriority
                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                    __NVIC_SetPriority (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority)) +

                                                                                                                                                                                                                                                                                                                                                                                                    __NVIC_SetPriority (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority))

                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = __NVIC_SetPriority
                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_NVIC_SetPriority -
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_SYSTICK_Config +
                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_NVIC_SetPriority +
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_SYSTICK_Config
                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                      UART_DMAAbortOnError (Thumb, 20 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError)) +

                                                                                                                                                                                                                                                                                                                                                                                                      UART_DMAAbortOnError (Thumb, 20 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError))

                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = UART_DMAAbortOnError
                                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_ErrorCallback +
                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_ErrorCallback

                                                                                                                                                                                                                                                                                                                                                                                                        [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                        • stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)
                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                        UART_EndRxTransfer (Thumb, 108 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_EndRxTransfer)) -

                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_IRQHandler +

                                                                                                                                                                                                                                                                                                                                                                                                          UART_EndRxTransfer (Thumb, 108 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_EndRxTransfer)) +

                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                                          UART_EndTransmit_IT (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT)) -

                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                                                                                                                                                            UART_EndTransmit_IT (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT)) +

                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 64
                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_TxCpltCallback +
                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_TxCpltCallback
                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                UART_Receive_IT (Thumb, 252 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_Receive_IT)) -

                                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 248
                                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                                                                                                                                                                  UART_Receive_IT (Thumb, 252 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_Receive_IT)) +

                                                                                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 248
                                                                                                                                                                                                                                                                                                                                                                                                                  • Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_RxCpltCallback -
                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_UARTEx_RxEventCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_UARTEx_RxEventCallback
                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                      UART_SetConfig (Thumb, 248 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_SetConfig)) +

                                                                                                                                                                                                                                                                                                                                                                                                                      UART_SetConfig (Thumb, 248 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_SetConfig))

                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 20
                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = UART_SetConfig ⇒ HAL_RCC_GetPCLK2Freq
                                                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_RCC_GetPCLK2Freq -
                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_RCC_GetPCLK1Freq +
                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_RCC_GetPCLK2Freq +
                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_RCC_GetPCLK1Freq
                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_Init +
                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_Init
                                                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                                                          UART_Transmit_IT (Thumb, 96 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_Transmit_IT)) -

                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_IRQHandler +

                                                                                                                                                                                                                                                                                                                                                                                                                            UART_Transmit_IT (Thumb, 96 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_Transmit_IT)) +

                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                                            UART_WaitOnFlagUntilTimeout (Thumb, 146 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout)) +

                                                                                                                                                                                                                                                                                                                                                                                                                            UART_WaitOnFlagUntilTimeout (Thumb, 146 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout))

                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_GetTick
                                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_Transmit +
                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_Transmit
                                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                                rf433_send_config_command (Thumb, 30 bytes, Stack size 8 bytes, rf433.o(i.rf433_send_config_command)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                rf433_send_config_command (Thumb, 30 bytes, Stack size 8 bytes, rf433.o(i.rf433_send_config_command))

                                                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 88
                                                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_hal_uart_tx +
                                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_hal_uart_tx
                                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_set_config
                                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_fifo_write (Thumb, 82 bytes, Stack size 12 bytes, rf433_hal.o(i.rf433_fifo_write)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_fifo_clear (Thumb, 16 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_fifo_clear)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_fifo_clear +
                                                                                                                                                                                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_fifo_get_length (Thumb, 20 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_fifo_get_length)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_fifo_get_length +
                                                                                                                                                                                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_fifo_read (Thumb, 100 bytes, Stack size 12 bytes, rf433_hal.o(i.rf433_fifo_read)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_fifo_read +
                                                                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_fifo_read +
                                                                                                                                                                                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_fifo_write (Thumb, 82 bytes, Stack size 12 bytes, rf433_hal.o(i.rf433_fifo_write))

                                                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_fifo_write
                                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_uart_rxcplt_callback +
                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_uart_rxcplt_callback
                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                      _fp_digits (Thumb, 366 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __aeabi_uldivmod -
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __aeabi_dmul -
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __aeabi_ddiv -
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __aeabi_dadd -
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __aeabi_d2ulz -
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __aeabi_cdrcmple +

                                                                                                                                                                                                                                                                                                                                                                                                                                        _fp_digits (Thumb, 366 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   __aeabi_dmul +
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   __aeabi_ddiv +
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   __aeabi_dadd +
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   __aeabi_d2ulz +
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   __aeabi_cdrcmple +
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   __aeabi_uldivmod
                                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   _printf_core +
                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   _printf_core
                                                                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                                                                          _printf_core (Thumb, 1704 bytes, Stack size 136 bytes, printfa.o(i._printf_core), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_uldivmod -
                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_uidivmod -
                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   _printf_pre_padding -
                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   _printf_post_padding -
                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   _fp_digits +

                                                                                                                                                                                                                                                                                                                                                                                                                                            _printf_core (Thumb, 1704 bytes, Stack size 136 bytes, printfa.o(i._printf_core), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   _printf_pre_padding +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   _printf_post_padding +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   _fp_digits +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   __aeabi_uldivmod +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   __aeabi_uidivmod
                                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   __0vsnprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   __0snprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   __0printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   __0vsnprintf +
                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   __0snprintf +
                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   __0printf
                                                                                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                                                                                              _printf_post_padding (Thumb, 36 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   _printf_core +

                                                                                                                                                                                                                                                                                                                                                                                                                                                _printf_post_padding (Thumb, 36 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   _printf_core
                                                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                                                _printf_pre_padding (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i._printf_pre_padding), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   _printf_core +

                                                                                                                                                                                                                                                                                                                                                                                                                                                  _printf_pre_padding (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i._printf_pre_padding), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   _printf_core
                                                                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                                                                  _snputc (Thumb, 22 bytes, Stack size 0 bytes, printfa.o(i._snputc)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                  _snputc (Thumb, 22 bytes, Stack size 0 bytes, printfa.o(i._snputc))
                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Address Reference Count : 2]

                                                                                                                                                                                                                                                                                                                                                                                                                                                  • printfa.o(i.__0vsnprintf)
                                                                                                                                                                                                                                                                                                                                                                                                                                                  • printfa.o(i.__0snprintf) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                  _scanf_char_input (Thumb, 12 bytes, Stack size 0 bytes, scanf_char.o(.text)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                  • scanf_char.o(.text)

                                                                                                                                                                                                                                                                                                                                                                                                                                                  Undefined Global Symbols diff --git a/MDK-ARM/project/project.lnp b/MDK-ARM/project/project.lnp index 6ee4cf2..7301f70 100644 --- a/MDK-ARM/project/project.lnp +++ b/MDK-ARM/project/project.lnp @@ -13,6 +13,9 @@ "project\io_monitor.o" "project\relay_control.o" "project\uart2_print.o" +"project\cmd_router.o" +"project\debug_log.o" +"project\multi_uart_router.o" "project\stm32f1xx_hal_gpio_ex.o" "project\stm32f1xx_hal_spi.o" "project\stm32f1xx_hal.o" diff --git a/MDK-ARM/project/project.map b/MDK-ARM/project/project.map index 76a1093..5d71459 100644 --- a/MDK-ARM/project/project.map +++ b/MDK-ARM/project/project.map @@ -24,6 +24,29 @@ Section Cross References systick.o(i.systick_interrupt_1ms_callback) refers to rf433_hal.o(i.uart1_rx_timeout_1ms_callback) for uart1_rx_timeout_1ms_callback systick.o(i.systick_interrupt_1ms_callback) refers to systick.o(.data) for user_timerout_ms systick.o(i.systick_set_user_timeout) refers to systick.o(.data) for user_timerout_ms + rf433_rx_app.o(i.rf433_rx_app_get_state) refers to rf433_rx_app.o(.bss) for g_rx_app + rf433_rx_app.o(i.rf433_rx_app_get_stats) refers to rf433_rx_app.o(.bss) for g_rx_app + rf433_rx_app.o(i.rf433_rx_app_init) refers to memseta.o(.text) for __aeabi_memclr4 + rf433_rx_app.o(i.rf433_rx_app_init) refers to rf433.o(i.rf433_set_config) for rf433_set_config + rf433_rx_app.o(i.rf433_rx_app_init) refers to rf433.o(i.rf433_set_work_mode) for rf433_set_work_mode + rf433_rx_app.o(i.rf433_rx_app_init) refers to rf433_rx_app.o(.bss) for g_rx_app + rf433_rx_app.o(i.rf433_rx_app_parse_packet) refers to _scanf_int.o(.text) for _scanf_int + rf433_rx_app.o(i.rf433_rx_app_parse_packet) refers to __0sscanf.o(.text) for __0sscanf + rf433_rx_app.o(i.rf433_rx_app_reset_stats) refers to rf433_rx_app.o(.bss) for g_rx_app + rf433_rx_app.o(i.rf433_rx_app_start) refers to rf433.o(i.rf433_rx_start) for rf433_rx_start + rf433_rx_app.o(i.rf433_rx_app_start) refers to rf433_rx_app.o(.bss) for g_rx_app + rf433_rx_app.o(i.rf433_rx_app_stop) refers to rf433.o(i.rf433_rx_stop) for rf433_rx_stop + rf433_rx_app.o(i.rf433_rx_app_stop) refers to rf433_rx_app.o(i.rx_led_control) for rx_led_control + rf433_rx_app.o(i.rf433_rx_app_stop) refers to rf433_rx_app.o(.bss) for g_rx_app + rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_hal.o(i.uart1_check_rx_done) for uart1_check_rx_done + rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_rx_app.o(i.rf433_rx_app_parse_packet) for rf433_rx_app_parse_packet + rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_rx_app.o(i.rx_update_stats) for rx_update_stats + rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_rx_app.o(i.rx_led_control) for rx_led_control + rf433_rx_app.o(i.rf433_rx_app_task) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay + rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_rx_app.o(.bss) for g_rx_app + rf433_rx_app.o(i.rx_led_control) refers to gpio.o(i.gpio_led_rx_on) for gpio_led_rx_on + rf433_rx_app.o(i.rx_led_control) refers to gpio.o(i.gpio_led_rx_off) for gpio_led_rx_off + rf433_rx_app.o(i.rx_update_stats) refers to rf433_rx_app.o(.bss) for g_rx_app rf433_tx_app.o(i.rf433_tx_app_get_send_count) refers to rf433_tx_app.o(.bss) for g_tx_app rf433_tx_app.o(i.rf433_tx_app_get_state) refers to rf433_tx_app.o(.bss) for g_tx_app rf433_tx_app.o(i.rf433_tx_app_get_total_count) refers to rf433_tx_app.o(.bss) for g_tx_app @@ -48,11 +71,14 @@ Section Cross References rf433_tx_app.o(i.tx_led_control) refers to gpio.o(i.gpio_led_tx_on) for gpio_led_tx_on rf433_tx_app.o(i.tx_led_control) refers to gpio.o(i.gpio_led_tx_off) for gpio_led_tx_off main.o(i.HAL_UART_RxCpltCallback) refers to rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) for rf433_hal_uart_rxcplt_callback + main.o(i.HAL_UART_RxCpltCallback) refers to multi_uart_router.o(i.MultiUART_FeedByte) for MultiUART_FeedByte main.o(i.HAL_UART_RxCpltCallback) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick main.o(i.HAL_UART_RxCpltCallback) refers to cmd_parser.o(i.CmdParser_FeedByte) for CmdParser_FeedByte main.o(i.HAL_UART_RxCpltCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) for HAL_UART_Receive_IT + main.o(i.HAL_UART_RxCpltCallback) refers to rf433_hal.o(.data) for rf433_uart_rx_tmp main.o(i.HAL_UART_RxCpltCallback) refers to main.o(.data) for uart2_rx_byte main.o(i.HAL_UART_RxCpltCallback) refers to usart.o(.bss) for huart2 + main.o(i.HAL_UART_TxCpltCallback) refers to multi_uart_router.o(i.MultiUART_TxCpltCallback) for MultiUART_TxCpltCallback main.o(i.HAL_UART_TxCpltCallback) refers to uart2_print.o(i.UART2_Print_TxCpltCallback) for UART2_Print_TxCpltCallback main.o(i.SystemClock_Config) refers to memseta.o(.text) for __aeabi_memclr4 main.o(i.SystemClock_Config) refers to stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) for HAL_RCC_OscConfig @@ -69,15 +95,23 @@ Section Cross References main.o(i.main) refers to io_monitor.o(i.IO_Monitor_Init) for IO_Monitor_Init main.o(i.main) refers to cmd_parser.o(i.CmdParser_Init) for CmdParser_Init main.o(i.main) refers to relay_control.o(i.Relay_Init) for Relay_Init + main.o(i.main) refers to multi_uart_router.o(i.MultiUART_Init) for MultiUART_Init + main.o(i.main) refers to cmd_router.o(i.CmdRouter_Init) for CmdRouter_Init + main.o(i.main) refers to debug_log.o(i.DebugLog_Init) for DebugLog_Init main.o(i.main) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) for HAL_UART_Receive_IT main.o(i.main) refers to rf433.o(i.rf433_init) for rf433_init main.o(i.main) refers to rf433_tx_app.o(i.rf433_tx_app_init) for rf433_tx_app_init main.o(i.main) refers to rf433_tx_app.o(i.rf433_tx_app_start) for rf433_tx_app_start + main.o(i.main) refers to rf433_rx_app.o(i.rf433_rx_app_init) for rf433_rx_app_init + main.o(i.main) refers to rf433_rx_app.o(i.rf433_rx_app_start) for rf433_rx_app_start main.o(i.main) refers to printfa.o(i.__0printf) for __2printf main.o(i.main) refers to uart2_print.o(i.UART2_Print_Task) for UART2_Print_Task main.o(i.main) refers to io_monitor.o(i.IO_Monitor_Task) for IO_Monitor_Task main.o(i.main) refers to cmd_parser.o(i.CmdParser_Task) for CmdParser_Task + main.o(i.main) refers to multi_uart_router.o(i.MultiUART_Task) for MultiUART_Task + main.o(i.main) refers to cmd_router.o(i.CmdRouter_Task) for CmdRouter_Task main.o(i.main) refers to rf433_tx_app.o(i.rf433_tx_app_task) for rf433_tx_app_task + main.o(i.main) refers to rf433_rx_app.o(i.rf433_rx_app_task) for rf433_rx_app_task main.o(i.main) refers to main.o(.data) for uart2_rx_byte main.o(i.main) refers to usart.o(.bss) for huart2 main.o(i.main) refers to rf433_hal.o(.data) for rf433_uart_rx_tmp @@ -133,6 +167,8 @@ Section Cross References cmd_parser.o(i.CmdParser_Init) refers to memseta.o(.text) for __aeabi_memclr4 cmd_parser.o(i.CmdParser_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf cmd_parser.o(i.CmdParser_Init) refers to cmd_parser.o(.bss) for ctx + cmd_parser.o(i.CmdParser_SetResponseCallback) refers to cmd_parser.o(.data) for g_response_callback + cmd_parser.o(i.CmdParser_SetSourcePort) refers to cmd_parser.o(.data) for g_current_source_port cmd_parser.o(i.CmdParser_Task) refers to cmd_parser.o(i.process_cmd_frame) for process_cmd_frame cmd_parser.o(i.CmdParser_Task) refers to cmd_parser.o(i.reset_parser) for reset_parser cmd_parser.o(i.CmdParser_Task) refers to cmd_parser.o(.bss) for ctx @@ -157,9 +193,11 @@ Section Cross References cmd_parser.o(i.send_response_err) refers to printfa.o(i.__0snprintf) for __2snprintf cmd_parser.o(i.send_response_err) refers to cmd_parser.o(i.calc_checksum) for calc_checksum cmd_parser.o(i.send_response_err) refers to uart2_print.o(i.UART2_Print_String) for UART2_Print_String + cmd_parser.o(i.send_response_err) refers to cmd_parser.o(.data) for g_response_callback cmd_parser.o(i.send_response_ok) refers to printfa.o(i.__0snprintf) for __2snprintf cmd_parser.o(i.send_response_ok) refers to cmd_parser.o(i.calc_checksum) for calc_checksum cmd_parser.o(i.send_response_ok) refers to uart2_print.o(i.UART2_Print_String) for UART2_Print_String + cmd_parser.o(i.send_response_ok) refers to cmd_parser.o(.data) for g_response_callback io_monitor.o(i.IO_Monitor_EnableReport) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf io_monitor.o(i.IO_Monitor_EnableReport) refers to io_monitor.o(.data) for report_enabled io_monitor.o(i.IO_Monitor_GetAllStates) refers to io_monitor.o(.data) for di_channels @@ -169,6 +207,8 @@ Section Cross References io_monitor.o(i.IO_Monitor_Init) refers to io_monitor.o(i.IO_Monitor_GetAllStates) for IO_Monitor_GetAllStates io_monitor.o(i.IO_Monitor_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf io_monitor.o(i.IO_Monitor_Init) refers to io_monitor.o(.data) for di_channels + io_monitor.o(i.IO_Monitor_SetEventCallback) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + io_monitor.o(i.IO_Monitor_SetEventCallback) refers to io_monitor.o(.data) for g_event_callback io_monitor.o(i.IO_Monitor_Task) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick io_monitor.o(i.IO_Monitor_Task) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin io_monitor.o(i.IO_Monitor_Task) refers to io_monitor.o(i.send_di_event) for send_di_event @@ -177,17 +217,15 @@ Section Cross References io_monitor.o(i.send_di_event) refers to io_monitor.o(i.calc_checksum) for calc_checksum io_monitor.o(i.send_di_event) refers to uart2_print.o(i.UART2_Print_String) for UART2_Print_String io_monitor.o(i.send_di_event) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf - relay_control.o(i.Relay_GetState) refers to relay_control.o(.data) for current_states - relay_control.o(i.Relay_GetToggleCount) refers to relay_control.o(.data) for toggle_count + io_monitor.o(i.send_di_event) refers to io_monitor.o(.data) for g_event_callback + relay_control.o(i.Relay_GetState) refers to relay_control.o(.data) for current_state relay_control.o(i.Relay_Init) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin relay_control.o(i.Relay_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf - relay_control.o(i.Relay_Init) refers to relay_control.o(.data) for current_states - relay_control.o(i.Relay_SetState) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + relay_control.o(i.Relay_Init) refers to relay_control.o(.data) for current_state relay_control.o(i.Relay_SetState) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick + relay_control.o(i.Relay_SetState) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf relay_control.o(i.Relay_SetState) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin relay_control.o(i.Relay_SetState) refers to relay_control.o(.data) for last_toggle_tick - relay_control.o(i.Relay_Toggle) refers to relay_control.o(i.Relay_SetState) for Relay_SetState - relay_control.o(i.Relay_Toggle) refers to relay_control.o(.data) for current_states uart2_print.o(i.UART2_Print_Available) refers to uart2_print.o(.bss) for tx_ring uart2_print.o(i.UART2_Print_GetOverflowCount) refers to uart2_print.o(.bss) for tx_ring uart2_print.o(i.UART2_Print_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf @@ -207,6 +245,99 @@ Section Cross References uart2_print.o(i.UART2_Print_TxCpltCallback) refers to uart2_print.o(.bss) for tx_ring uart2_print.o(i.UART2_Print_TxCpltCallback) refers to usart.o(.bss) for huart2 uart2_print.o(i.fputc) refers to uart2_print.o(i.UART2_Print_Send) for UART2_Print_Send + cmd_router.o(i.CmdRouter_BroadcastResponse) refers to multi_uart_router.o(i.MultiUART_Send) for MultiUART_Send + cmd_router.o(i.CmdRouter_BroadcastResponse) refers to debug_log.o(i.DebugLog_Output) for DebugLog_Output + cmd_router.o(i.CmdRouter_BroadcastResponse) refers to cmd_router.o(.data) for g_routed_count + cmd_router.o(i.CmdRouter_GetProcessedCount) refers to cmd_router.o(.data) for g_processed_count + cmd_router.o(i.CmdRouter_GetRoutedCount) refers to cmd_router.o(.data) for g_routed_count + cmd_router.o(i.CmdRouter_Init) refers to cmd_parser.o(i.CmdParser_SetResponseCallback) for CmdParser_SetResponseCallback + cmd_router.o(i.CmdRouter_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + cmd_router.o(i.CmdRouter_Init) refers to cmd_router.o(.bss) for g_port_states + cmd_router.o(i.CmdRouter_Init) refers to cmd_router.o(.data) for g_rx_log_len + cmd_router.o(i.CmdRouter_Init) refers to cmd_router.o(i.cmd_parser_response_callback) for cmd_parser_response_callback + cmd_router.o(i.CmdRouter_SendResponse) refers to multi_uart_router.o(i.MultiUART_Send) for MultiUART_Send + cmd_router.o(i.CmdRouter_SendResponse) refers to multi_uart_router.o(i.MultiUART_GetPortName) for MultiUART_GetPortName + cmd_router.o(i.CmdRouter_SendResponse) refers to debug_log.o(i.DebugLog_Output) for DebugLog_Output + cmd_router.o(i.CmdRouter_SendResponse) refers to cmd_router.o(.data) for g_routed_count + cmd_router.o(i.CmdRouter_SetResponseHandler) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + cmd_router.o(i.CmdRouter_SetResponseHandler) refers to cmd_router.o(.data) for g_response_handler + cmd_router.o(i.CmdRouter_Task) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick + cmd_router.o(i.CmdRouter_Task) refers to cmd_router.o(i.flush_rx_log) for flush_rx_log + cmd_router.o(i.CmdRouter_Task) refers to multi_uart_router.o(i.MultiUART_GetRxCount) for MultiUART_GetRxCount + cmd_router.o(i.CmdRouter_Task) refers to cmd_parser.o(i.CmdParser_SetSourcePort) for CmdParser_SetSourcePort + cmd_router.o(i.CmdRouter_Task) refers to cmd_router.o(i.append_rx_log) for append_rx_log + cmd_router.o(i.CmdRouter_Task) refers to cmd_parser.o(i.CmdParser_FeedByte) for CmdParser_FeedByte + cmd_router.o(i.CmdRouter_Task) refers to multi_uart_router.o(i.MultiUART_ReadByte) for MultiUART_ReadByte + cmd_router.o(i.CmdRouter_Task) refers to cmd_parser.o(i.CmdParser_HasCompleteFrame) for CmdParser_HasCompleteFrame + cmd_router.o(i.CmdRouter_Task) refers to cmd_parser.o(i.CmdParser_Task) for CmdParser_Task + cmd_router.o(i.CmdRouter_Task) refers to cmd_router.o(.data) for g_rx_log_len + cmd_router.o(i.CmdRouter_Task) refers to cmd_router.o(.bss) for g_rx_log_last_tick + cmd_router.o(i.append_rx_log) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick + cmd_router.o(i.append_rx_log) refers to cmd_router.o(.data) for g_rx_log_len + cmd_router.o(i.append_rx_log) refers to cmd_router.o(.bss) for g_rx_log_buffer + cmd_router.o(i.cmd_parser_response_callback) refers to strlen.o(.text) for strlen + cmd_router.o(i.cmd_parser_response_callback) refers to multi_uart_router.o(i.MultiUART_SendString) for MultiUART_SendString + cmd_router.o(i.cmd_parser_response_callback) refers to multi_uart_router.o(i.MultiUART_GetPortName) for MultiUART_GetPortName + cmd_router.o(i.cmd_parser_response_callback) refers to debug_log.o(i.DebugLog_Output) for DebugLog_Output + cmd_router.o(i.cmd_parser_response_callback) refers to cmd_router.o(.data) for g_response_handler + cmd_router.o(i.flush_rx_log) refers to multi_uart_router.o(i.MultiUART_GetPortName) for MultiUART_GetPortName + cmd_router.o(i.flush_rx_log) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + cmd_router.o(i.flush_rx_log) refers to uart2_print.o(i.UART2_Print_Send) for UART2_Print_Send + cmd_router.o(i.flush_rx_log) refers to printfa.o(i.__0snprintf) for __2snprintf + cmd_router.o(i.flush_rx_log) refers to uart2_print.o(i.UART2_Print_String) for UART2_Print_String + cmd_router.o(i.flush_rx_log) refers to cmd_router.o(.data) for g_rx_log_len + cmd_router.o(i.flush_rx_log) refers to cmd_router.o(.bss) for g_rx_log_buffer + debug_log.o(i.DebugLog_EnableModule) refers to debug_log.o(i.init_modules) for init_modules + debug_log.o(i.DebugLog_EnableModule) refers to strncpy.o(.text) for strncpy + debug_log.o(i.DebugLog_EnableModule) refers to strncmp.o(.text) for strncmp + debug_log.o(i.DebugLog_EnableModule) refers to debug_log.o(.bss) for g_modules + debug_log.o(i.DebugLog_GetLevel) refers to debug_log.o(.data) for g_current_level + debug_log.o(i.DebugLog_Init) refers to debug_log.o(i.init_modules) for init_modules + debug_log.o(i.DebugLog_Init) refers to uart2_print.o(i.UART2_Print_String) for UART2_Print_String + debug_log.o(i.DebugLog_Init) refers to debug_log.o(.data) for g_current_level + debug_log.o(i.DebugLog_Output) refers to debug_log.o(i.is_module_enabled) for is_module_enabled + debug_log.o(i.DebugLog_Output) refers to printfa.o(i.__0snprintf) for __2snprintf + debug_log.o(i.DebugLog_Output) refers to printfa.o(i.__0vsnprintf) for vsnprintf + debug_log.o(i.DebugLog_Output) refers to uart2_print.o(i.UART2_Print_Send) for UART2_Print_Send + debug_log.o(i.DebugLog_Output) refers to debug_log.o(.data) for g_current_level + debug_log.o(i.DebugLog_Output) refers to debug_log.o(.constdata) for g_level_str + debug_log.o(i.DebugLog_SetLevel) refers to debug_log.o(.data) for g_current_level + debug_log.o(i.init_modules) refers to debug_log.o(.data) for g_modules_initialized + debug_log.o(i.init_modules) refers to debug_log.o(.bss) for g_modules + debug_log.o(i.is_module_enabled) refers to debug_log.o(i.init_modules) for init_modules + debug_log.o(i.is_module_enabled) refers to strncmp.o(.text) for strncmp + debug_log.o(i.is_module_enabled) refers to debug_log.o(.bss) for g_modules + debug_log.o(.constdata) refers to debug_log.o(.conststring) for .conststring + multi_uart_router.o(i.MultiUART_FeedByte) refers to multi_uart_router.o(i.rx_ring_push) for rx_ring_push + multi_uart_router.o(i.MultiUART_FeedByte) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + multi_uart_router.o(i.MultiUART_FeedByte) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(i.MultiUART_GetOverflowCount) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(i.MultiUART_GetPortName) refers to multi_uart_router.o(.constdata) for g_port_name_map + multi_uart_router.o(i.MultiUART_GetRxCount) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(i.MultiUART_GetTxAvailable) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(i.MultiUART_Init) refers to multi_uart_router.o(i.rx_ring_init) for rx_ring_init + multi_uart_router.o(i.MultiUART_Init) refers to multi_uart_router.o(i.tx_ring_init) for tx_ring_init + multi_uart_router.o(i.MultiUART_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + multi_uart_router.o(i.MultiUART_Init) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(i.MultiUART_Init) refers to multi_uart_router.o(.constdata) for g_port_uart_map + multi_uart_router.o(i.MultiUART_ReadByte) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(i.MultiUART_Send) refers to uart2_print.o(i.UART2_Print_Send) for UART2_Print_Send + multi_uart_router.o(i.MultiUART_Send) refers to multi_uart_router.o(i.tx_ring_push) for tx_ring_push + multi_uart_router.o(i.MultiUART_Send) refers to multi_uart_router.o(i.tx_kickoff) for tx_kickoff + multi_uart_router.o(i.MultiUART_Send) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(i.MultiUART_SendFmt) refers to printfa.o(i.__0vsnprintf) for vsnprintf + multi_uart_router.o(i.MultiUART_SendFmt) refers to multi_uart_router.o(i.MultiUART_Send) for MultiUART_Send + multi_uart_router.o(i.MultiUART_SendString) refers to strlen.o(.text) for strlen + multi_uart_router.o(i.MultiUART_SendString) refers to multi_uart_router.o(i.MultiUART_Send) for MultiUART_Send + multi_uart_router.o(i.MultiUART_Task) refers to multi_uart_router.o(i.tx_kickoff) for tx_kickoff + multi_uart_router.o(i.MultiUART_Task) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(i.MultiUART_TxCpltCallback) refers to uart2_print.o(i.UART2_Print_TxCpltCallback) for UART2_Print_TxCpltCallback + multi_uart_router.o(i.MultiUART_TxCpltCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) for HAL_UART_Transmit_IT + multi_uart_router.o(i.MultiUART_TxCpltCallback) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(i.tx_kickoff) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) for HAL_UART_Transmit_IT + multi_uart_router.o(i.tx_kickoff) refers to multi_uart_router.o(.bss) for g_port_ctx + multi_uart_router.o(.constdata) refers to usart.o(.bss) for huart1 + multi_uart_router.o(.constdata) refers to multi_uart_router.o(.conststring) for .conststring stm32f1xx_hal_spi.o(i.HAL_SPI_Abort) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) for HAL_DMA_Abort stm32f1xx_hal_spi.o(i.HAL_SPI_Abort) refers to system_stm32f1xx.o(.data) for SystemCoreClock stm32f1xx_hal_spi.o(i.HAL_SPI_Abort) refers to stm32f1xx_hal_spi.o(i.SPI_AbortTx_ISR) for SPI_AbortTx_ISR @@ -494,8 +625,24 @@ Section Cross References rf433.o(i.rf433_init) refers to rf433_hal.o(i.rf433_hal_deinit) for rf433_hal_deinit rf433.o(i.rf433_init) refers to rf433.o(.data) for rf433_initialized rf433.o(i.rf433_init) refers to rf433.o(.constdata) for rf433_default_config + rf433.o(i.rf433_receive) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick + rf433.o(i.rf433_receive) refers to rf433_hal.o(i.rf433_hal_fifo_get_length) for rf433_hal_fifo_get_length + rf433.o(i.rf433_receive) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay + rf433.o(i.rf433_receive) refers to rf433_hal.o(i.rf433_hal_fifo_read) for rf433_hal_fifo_read + rf433.o(i.rf433_receive) refers to rf433.o(.data) for rf433_initialized rf433.o(i.rf433_reset) refers to rf433_hal.o(i.rf433_hal_reset) for rf433_hal_reset rf433.o(i.rf433_response_command_check) refers to strncmp.o(.text) for strncmp + rf433.o(i.rf433_rx_check_data) refers to rf433_hal.o(i.rf433_hal_fifo_get_length) for rf433_hal_fifo_get_length + rf433.o(i.rf433_rx_check_data) refers to rf433.o(.data) for rf433_initialized + rf433.o(i.rf433_rx_read) refers to rf433_hal.o(i.rf433_hal_fifo_get_length) for rf433_hal_fifo_get_length + rf433.o(i.rf433_rx_read) refers to rf433_hal.o(i.rf433_hal_fifo_read) for rf433_hal_fifo_read + rf433.o(i.rf433_rx_read) refers to rf433.o(.data) for rf433_initialized + rf433.o(i.rf433_rx_register_callback) refers to rf433.o(.data) for rf433_initialized + rf433.o(i.rf433_rx_start) refers to rf433_hal.o(i.rf433_hal_fifo_clear) for rf433_hal_fifo_clear + rf433.o(i.rf433_rx_start) refers to rf433.o(.data) for rf433_initialized + rf433.o(i.rf433_rx_stop) refers to rf433.o(.data) for rf433_initialized + rf433.o(i.rf433_rx_uart_callback_internal) refers to rf433.o(.data) for rf433_rx_started + rf433.o(i.rf433_rx_unregister_callback) refers to rf433.o(.data) for rf433_rx_callback rf433.o(i.rf433_send_config_command) refers to rf433_hal.o(i.rf433_hal_uart_tx) for rf433_hal_uart_tx rf433.o(i.rf433_send_config_command) refers to rf433.o(.bss) for rf433_buffer rf433.o(i.rf433_send_request_command) refers to rf433_hal.o(i.rf433_hal_uart_tx) for rf433_hal_uart_tx @@ -508,7 +655,6 @@ Section Cross References rf433.o(i.rf433_set_config) refers to rf433.o(.data) for rf433_current_config rf433.o(i.rf433_set_work_mode) refers to rf433_hal.o(i.rf433_hal_set_work_mode) for rf433_hal_set_work_mode rf433.o(i.rf433_transmit) refers to rf433_hal.o(i.rf433_hal_uart_tx) for rf433_hal_uart_tx - rf433.o(i.rf433_transmit) refers to printfa.o(i.__0printf) for __2printf rf433.o(i.rf433_transmit) refers to rf433.o(.data) for rf433_initialized rf433.o(i.rf433_transmit_packet) refers to rf433_hal.o(i.rf433_hal_uart_tx) for rf433_hal_uart_tx rf433.o(i.rf433_transmit_packet) refers to rf433.o(.data) for rf433_initialized @@ -809,6 +955,9 @@ Section Cross References printfa.o(i._printf_pre_padding) refers (Special) to iusefp.o(.text) for __I$use$fp printfa.o(i._snputc) refers (Special) to iusefp.o(.text) for __I$use$fp printfa.o(i._sputc) refers (Special) to iusefp.o(.text) for __I$use$fp + __0sscanf.o(.text) refers to scanf_char.o(.text) for __vfscanf_char + __0sscanf.o(.text) refers to _sgetc.o(.text) for _sgetc + _scanf_int.o(.text) refers to _chval.o(.text) for _chval atoi.o(.text) refers to errno.o(i.__aeabi_errno_addr) for __aeabi_errno_addr atoi.o(.text) refers to strtol.o(.text) for strtol entry2.o(.ARM.Collect$$$$00000001) refers to entry2.o(.ARM.Collect$$$$00002712) for __lit__00000000 @@ -823,6 +972,8 @@ Section Cross References errno.o(i.__aeabi_errno_addr) refers to errno.o(.data) for .data errno.o(i.__read_errno) refers to errno.o(.data) for .data errno.o(i.__set_errno) refers to errno.o(.data) for .data + scanf_char.o(.text) refers to _scanf.o(.text) for __vfscanf + scanf_char.o(.text) refers to isspace_o.o(.text) for isspace strtol.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table strtol.o(.text) refers to _strtoul.o(.text) for _strtoul strtol.o(.text) refers to errno.o(i.__aeabi_errno_addr) for __aeabi_errno_addr @@ -834,10 +985,13 @@ Section Cross References dfixul.o(.text) refers to llushr.o(.text) for __aeabi_llsr dfixul.o(.text) refers to llshl.o(.text) for __aeabi_llsl init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload + isspace_c.o(.text) refers to ctype_c.o(.text) for __ctype_lookup + _scanf.o(.text) refers (Weak) to _scanf_int.o(.text) for _scanf_int _strtoul.o(.text) refers to _chval.o(.text) for _chval _strtoul.o(.text) refers to errno.o(i.__aeabi_errno_addr) for __aeabi_errno_addr depilogue.o(.text) refers to llshl.o(.text) for __aeabi_llsl depilogue.o(.text) refers to llushr.o(.text) for __aeabi_llsr + ctype_c.o(.text) refers to ctype_c.o(.constdata) for .constdata ============================================================================== @@ -850,6 +1004,13 @@ Removing Unused input sections from the image. Removing systick.o(.rrx_text), (6 bytes). Removing systick.o(i.systick_get_user_timeout), (12 bytes). Removing systick.o(i.systick_set_user_timeout), (12 bytes). + Removing rf433_rx_app.o(.rev16_text), (4 bytes). + Removing rf433_rx_app.o(.revsh_text), (4 bytes). + Removing rf433_rx_app.o(.rrx_text), (6 bytes). + Removing rf433_rx_app.o(i.rf433_rx_app_get_state), (12 bytes). + Removing rf433_rx_app.o(i.rf433_rx_app_get_stats), (32 bytes). + Removing rf433_rx_app.o(i.rf433_rx_app_reset_stats), (28 bytes). + Removing rf433_rx_app.o(i.rf433_rx_app_stop), (32 bytes). Removing rf433_tx_app.o(.rev16_text), (4 bytes). Removing rf433_tx_app.o(.revsh_text), (4 bytes). Removing rf433_tx_app.o(.rrx_text), (6 bytes). @@ -865,8 +1026,6 @@ Removing Unused input sections from the image. Removing gpio.o(.rev16_text), (4 bytes). Removing gpio.o(.revsh_text), (4 bytes). Removing gpio.o(.rrx_text), (6 bytes). - Removing gpio.o(i.gpio_led_rx_off), (20 bytes). - Removing gpio.o(i.gpio_led_rx_on), (20 bytes). Removing spi.o(.rev16_text), (4 bytes). Removing spi.o(.revsh_text), (4 bytes). Removing spi.o(.rrx_text), (6 bytes). @@ -885,24 +1044,40 @@ Removing Unused input sections from the image. Removing cmd_parser.o(i.CmdParser_Acknowledge), (8 bytes). Removing cmd_parser.o(i.CmdParser_GetErrorCount), (12 bytes). Removing cmd_parser.o(i.CmdParser_GetValidCount), (12 bytes). - Removing cmd_parser.o(i.CmdParser_HasCompleteFrame), (48 bytes). Removing io_monitor.o(.rev16_text), (4 bytes). Removing io_monitor.o(.revsh_text), (4 bytes). Removing io_monitor.o(.rrx_text), (6 bytes). Removing io_monitor.o(i.IO_Monitor_EnableReport), (72 bytes). Removing io_monitor.o(i.IO_Monitor_GetChangeCount), (24 bytes). + Removing io_monitor.o(i.IO_Monitor_SetEventCallback), (72 bytes). Removing relay_control.o(.rev16_text), (4 bytes). Removing relay_control.o(.revsh_text), (4 bytes). Removing relay_control.o(.rrx_text), (6 bytes). - Removing relay_control.o(i.Relay_GetState), (28 bytes). - Removing relay_control.o(i.Relay_GetToggleCount), (12 bytes). - Removing relay_control.o(i.Relay_Toggle), (44 bytes). + Removing relay_control.o(i.Relay_GetState), (12 bytes). Removing uart2_print.o(.rev16_text), (4 bytes). Removing uart2_print.o(.revsh_text), (4 bytes). Removing uart2_print.o(.rrx_text), (6 bytes). Removing uart2_print.o(i.UART2_Print_Available), (24 bytes). Removing uart2_print.o(i.UART2_Print_GetOverflowCount), (12 bytes). Removing uart2_print.o(i.UART2_Print_IsBusy), (36 bytes). + Removing cmd_router.o(.rev16_text), (4 bytes). + Removing cmd_router.o(.revsh_text), (4 bytes). + Removing cmd_router.o(.rrx_text), (6 bytes). + Removing cmd_router.o(i.CmdRouter_BroadcastResponse), (92 bytes). + Removing cmd_router.o(i.CmdRouter_GetProcessedCount), (12 bytes). + Removing cmd_router.o(i.CmdRouter_GetRoutedCount), (12 bytes). + Removing cmd_router.o(i.CmdRouter_SendResponse), (108 bytes). + Removing cmd_router.o(i.CmdRouter_SetResponseHandler), (76 bytes). + Removing debug_log.o(i.DebugLog_EnableModule), (116 bytes). + Removing debug_log.o(i.DebugLog_GetLevel), (12 bytes). + Removing debug_log.o(i.DebugLog_SetLevel), (12 bytes). + Removing multi_uart_router.o(.rev16_text), (4 bytes). + Removing multi_uart_router.o(.revsh_text), (4 bytes). + Removing multi_uart_router.o(.rrx_text), (6 bytes). + Removing multi_uart_router.o(i.MultiUART_GetOverflowCount), (48 bytes). + Removing multi_uart_router.o(i.MultiUART_GetTxAvailable), (44 bytes). + Removing multi_uart_router.o(i.MultiUART_SendFmt), (66 bytes). + Removing multi_uart_router.o(i.rx_ring_pop), (60 bytes). Removing stm32f1xx_hal_gpio_ex.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_gpio_ex.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_gpio_ex.o(.rrx_text), (6 bytes). @@ -1178,27 +1353,27 @@ Removing Unused input sections from the image. Removing rf433.o(.rrx_text), (6 bytes). Removing rf433.o(i.rf433_deinit), (32 bytes). Removing rf433.o(i.rf433_get_config), (28 bytes). + Removing rf433.o(i.rf433_receive), (148 bytes). Removing rf433.o(i.rf433_reset), (20 bytes). Removing rf433.o(i.rf433_response_command_check), (100 bytes). + Removing rf433.o(i.rf433_rx_check_data), (64 bytes). + Removing rf433.o(i.rf433_rx_read), (100 bytes). + Removing rf433.o(i.rf433_rx_register_callback), (48 bytes). + Removing rf433.o(i.rf433_rx_stop), (32 bytes). + Removing rf433.o(i.rf433_rx_uart_callback_internal), (52 bytes). + Removing rf433.o(i.rf433_rx_unregister_callback), (20 bytes). Removing rf433.o(i.rf433_send_request_command), (80 bytes). Removing rf433.o(i.rf433_transmit_packet), (52 bytes). Removing rf433_hal.o(.rev16_text), (4 bytes). Removing rf433_hal.o(.revsh_text), (4 bytes). Removing rf433_hal.o(.rrx_text), (6 bytes). - Removing rf433_hal.o(i.rf433_fifo_clear), (28 bytes). - Removing rf433_hal.o(i.rf433_fifo_get_length), (24 bytes). - Removing rf433_hal.o(i.rf433_fifo_read), (112 bytes). Removing rf433_hal.o(i.rf433_hal_check_rx_done), (12 bytes). - Removing rf433_hal.o(i.rf433_hal_fifo_clear), (8 bytes). - Removing rf433_hal.o(i.rf433_hal_fifo_get_length), (12 bytes). - Removing rf433_hal.o(i.rf433_hal_fifo_read), (20 bytes). Removing rf433_hal.o(i.rf433_hal_fifo_write), (16 bytes). Removing rf433_hal.o(i.rf433_hal_reset), (44 bytes). Removing rf433_hal.o(i.rf433_hal_uart_rx_callback), (28 bytes). - Removing rf433_hal.o(i.uart1_check_rx_done), (80 bytes). Removing rf433_hal.o(i.uart1_wait_response_blocked), (86 bytes). -353 unused section(s) (total 21638 bytes) removed from the image. +374 unused section(s) (total 22534 bytes) removed from the image. ============================================================================== @@ -1230,73 +1405,84 @@ Image Symbol Table ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_c.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_c.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE - ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE ../clib/microlib/errno.c 0x00000000 Number 0 errno.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE ../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE - ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.o ABSOLUTE ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE ../clib/microlib/string/strncmp.c 0x00000000 Number 0 strncmp.o ABSOLUTE + ../clib/microlib/string/strncpy.c 0x00000000 Number 0 strncpy.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 strtol.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 __0sscanf.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 atoi.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _scanf.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _scanf_int.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 scanf_char.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 atoi.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _sgetc.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 strtol.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE ../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE ../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.o ABSOLUTE ../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE ..\Core\Src\cmd_parser.c 0x00000000 Number 0 cmd_parser.o ABSOLUTE + ..\Core\Src\cmd_router.c 0x00000000 Number 0 cmd_router.o ABSOLUTE + ..\Core\Src\debug_log.c 0x00000000 Number 0 debug_log.o ABSOLUTE ..\Core\Src\gpio.c 0x00000000 Number 0 gpio.o ABSOLUTE ..\Core\Src\io_monitor.c 0x00000000 Number 0 io_monitor.o ABSOLUTE ..\Core\Src\main.c 0x00000000 Number 0 main.o ABSOLUTE + ..\Core\Src\multi_uart_router.c 0x00000000 Number 0 multi_uart_router.o ABSOLUTE ..\Core\Src\relay_control.c 0x00000000 Number 0 relay_control.o ABSOLUTE ..\Core\Src\rf433_rx_app.c 0x00000000 Number 0 rf433_rx_app.o ABSOLUTE ..\Core\Src\rf433_tx_app.c 0x00000000 Number 0 rf433_tx_app.o ABSOLUTE @@ -1324,8 +1510,11 @@ Image Symbol Table ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE + ..\\Core\\Src\\cmd_router.c 0x00000000 Number 0 cmd_router.o ABSOLUTE ..\\Core\\Src\\io_monitor.c 0x00000000 Number 0 io_monitor.o ABSOLUTE + ..\\Core\\Src\\multi_uart_router.c 0x00000000 Number 0 multi_uart_router.o ABSOLUTE ..\\Core\\Src\\relay_control.c 0x00000000 Number 0 relay_control.o ABSOLUTE + ..\\Core\\Src\\rf433_rx_app.c 0x00000000 Number 0 rf433_rx_app.o ABSOLUTE ..\\Core\\Src\\rf433_tx_app.c 0x00000000 Number 0 rf433_tx_app.o ABSOLUTE ..\\Core\\Src\\systick.c 0x00000000 Number 0 systick.o ABSOLUTE ..\\Core\\Src\\uart2_print.c 0x00000000 Number 0 uart2_print.o ABSOLUTE @@ -1351,237 +1540,336 @@ Image Symbol Table .text 0x08000104 Section 36 startup_stm32f103xb.o(.text) .text 0x08000128 Section 0 llushr.o(.text) .text 0x08000148 Section 0 ctype_o.o(.text) - .text 0x08000150 Section 0 memseta.o(.text) - .text 0x08000174 Section 0 strlen.o(.text) - .text 0x08000182 Section 0 strcmp.o(.text) - .text 0x0800019e Section 0 atoi.o(.text) - .text 0x080001b8 Section 0 uidiv.o(.text) - .text 0x080001e4 Section 0 uldiv.o(.text) - .text 0x08000246 Section 0 strtol.o(.text) - .text 0x080002b6 Section 0 dadd.o(.text) - .text 0x080002b6 Section 0 iusefp.o(.text) - .text 0x08000404 Section 0 dmul.o(.text) - .text 0x080004e8 Section 0 ddiv.o(.text) - .text 0x080005c6 Section 0 dfixul.o(.text) - .text 0x080005f8 Section 48 cdrcmple.o(.text) - .text 0x08000628 Section 36 init.o(.text) - .text 0x0800064c Section 0 llshl.o(.text) - .text 0x0800066a Section 0 llsshr.o(.text) - .text 0x0800068e Section 0 _strtoul.o(.text) - .text 0x0800072c Section 0 depilogue.o(.text) - .text 0x080007e6 Section 0 _chval.o(.text) - i.BusFault_Handler 0x08000802 Section 0 stm32f1xx_it.o(i.BusFault_Handler) - i.CmdParser_FeedByte 0x08000808 Section 0 cmd_parser.o(i.CmdParser_FeedByte) - i.CmdParser_Init 0x08000b38 Section 0 cmd_parser.o(i.CmdParser_Init) - i.CmdParser_Task 0x08000b64 Section 0 cmd_parser.o(i.CmdParser_Task) - i.DebugMon_Handler 0x08000b88 Section 0 stm32f1xx_it.o(i.DebugMon_Handler) - i.Error_Handler 0x08000b8a Section 0 main.o(i.Error_Handler) - i.HAL_DMA_Abort 0x08000b90 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) - i.HAL_DMA_Abort_IT 0x08000be8 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) - i.HAL_Delay 0x08000c98 Section 0 stm32f1xx_hal.o(i.HAL_Delay) - i.HAL_GPIO_Init 0x08000cc0 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) - i.HAL_GPIO_ReadPin 0x08000fe0 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) - i.HAL_GPIO_WritePin 0x08000ff0 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) - i.HAL_GetTick 0x08000ffc Section 0 stm32f1xx_hal.o(i.HAL_GetTick) - i.HAL_IncTick 0x08001008 Section 0 stm32f1xx_hal.o(i.HAL_IncTick) - i.HAL_Init 0x08001020 Section 0 stm32f1xx_hal.o(i.HAL_Init) - i.HAL_InitTick 0x08001048 Section 0 stm32f1xx_hal.o(i.HAL_InitTick) - i.HAL_MspInit 0x08001094 Section 0 stm32f1xx_hal_msp.o(i.HAL_MspInit) - i.HAL_NVIC_EnableIRQ 0x080010e8 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - i.HAL_NVIC_SetPriority 0x08001108 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - i.HAL_NVIC_SetPriorityGrouping 0x08001184 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) - i.HAL_RCC_ClockConfig 0x080011ac Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - i.HAL_RCC_GetHCLKFreq 0x08001338 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - i.HAL_RCC_GetPCLK1Freq 0x08001344 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - i.HAL_RCC_GetPCLK2Freq 0x08001364 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) - i.HAL_RCC_GetSysClockFreq 0x08001384 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - i.HAL_RCC_OscConfig 0x080013f4 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) - i.HAL_SPI_Init 0x08001858 Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) - i.HAL_SPI_MspInit 0x08001918 Section 0 spi.o(i.HAL_SPI_MspInit) - i.HAL_SYSTICK_Config 0x080019a0 Section 0 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) - i.HAL_UARTEx_RxEventCallback 0x080019d4 Section 0 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) - i.HAL_UART_ErrorCallback 0x080019d6 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) - i.HAL_UART_IRQHandler 0x080019d8 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) - i.HAL_UART_Init 0x08001cbc Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Init) - i.HAL_UART_MspInit 0x08001d34 Section 0 usart.o(i.HAL_UART_MspInit) - i.HAL_UART_Receive_IT 0x08001ec4 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) - i.HAL_UART_RxCpltCallback 0x08001ef0 Section 0 main.o(i.HAL_UART_RxCpltCallback) - i.HAL_UART_Transmit 0x08001f38 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) - i.HAL_UART_Transmit_IT 0x08001fea Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) - i.HAL_UART_TxCpltCallback 0x08002024 Section 0 main.o(i.HAL_UART_TxCpltCallback) - i.HardFault_Handler 0x0800203c Section 0 stm32f1xx_it.o(i.HardFault_Handler) - i.IO_Monitor_GetAllStates 0x08002040 Section 0 io_monitor.o(i.IO_Monitor_GetAllStates) - i.IO_Monitor_GetState 0x08002068 Section 0 io_monitor.o(i.IO_Monitor_GetState) - i.IO_Monitor_Init 0x08002080 Section 0 io_monitor.o(i.IO_Monitor_Init) - i.IO_Monitor_Task 0x08002100 Section 0 io_monitor.o(i.IO_Monitor_Task) - i.MX_GPIO_Init 0x08002188 Section 0 gpio.o(i.MX_GPIO_Init) - i.MX_SPI2_Init 0x08002298 Section 0 spi.o(i.MX_SPI2_Init) - i.MX_USART1_UART_Init 0x080022dc Section 0 usart.o(i.MX_USART1_UART_Init) - i.MX_USART2_UART_Init 0x08002314 Section 0 usart.o(i.MX_USART2_UART_Init) - i.MX_USART3_UART_Init 0x0800234c Section 0 usart.o(i.MX_USART3_UART_Init) - i.MemManage_Handler 0x08002384 Section 0 stm32f1xx_it.o(i.MemManage_Handler) - i.NMI_Handler 0x08002388 Section 0 stm32f1xx_it.o(i.NMI_Handler) - i.PendSV_Handler 0x0800238c Section 0 stm32f1xx_it.o(i.PendSV_Handler) - i.RCC_Delay 0x08002390 Section 0 stm32f1xx_hal_rcc.o(i.RCC_Delay) - RCC_Delay 0x08002391 Thumb Code 36 stm32f1xx_hal_rcc.o(i.RCC_Delay) - i.Relay_Init 0x080023b8 Section 0 relay_control.o(i.Relay_Init) - i.Relay_SetState 0x08002418 Section 0 relay_control.o(i.Relay_SetState) - i.SVC_Handler 0x08002548 Section 0 stm32f1xx_it.o(i.SVC_Handler) - i.SysTick_Handler 0x0800254a Section 0 stm32f1xx_it.o(i.SysTick_Handler) - i.SystemClock_Config 0x08002556 Section 0 main.o(i.SystemClock_Config) - i.SystemInit 0x080025bc Section 0 system_stm32f1xx.o(i.SystemInit) - i.UART2_Print_Init 0x080025c0 Section 0 uart2_print.o(i.UART2_Print_Init) - i.UART2_Print_Printf 0x08002610 Section 0 uart2_print.o(i.UART2_Print_Printf) - i.UART2_Print_Send 0x08002650 Section 0 uart2_print.o(i.UART2_Print_Send) - i.UART2_Print_String 0x08002704 Section 0 uart2_print.o(i.UART2_Print_String) - i.UART2_Print_Task 0x08002720 Section 0 uart2_print.o(i.UART2_Print_Task) - i.UART2_Print_TxCpltCallback 0x0800278c Section 0 uart2_print.o(i.UART2_Print_TxCpltCallback) - i.UART_DMAAbortOnError 0x080027f8 Section 0 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) - UART_DMAAbortOnError 0x080027f9 Thumb Code 20 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) - i.UART_EndRxTransfer 0x0800280c Section 0 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) - UART_EndRxTransfer 0x0800280d Thumb Code 108 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) - i.UART_EndTransmit_IT 0x08002878 Section 0 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) - UART_EndTransmit_IT 0x08002879 Thumb Code 32 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) - i.UART_Receive_IT 0x08002898 Section 0 stm32f1xx_hal_uart.o(i.UART_Receive_IT) - UART_Receive_IT 0x08002899 Thumb Code 252 stm32f1xx_hal_uart.o(i.UART_Receive_IT) - i.UART_SetConfig 0x08002994 Section 0 stm32f1xx_hal_uart.o(i.UART_SetConfig) - UART_SetConfig 0x08002995 Thumb Code 248 stm32f1xx_hal_uart.o(i.UART_SetConfig) - i.UART_Start_Receive_IT 0x08002a90 Section 0 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) - i.UART_Transmit_IT 0x08002ad0 Section 0 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) - UART_Transmit_IT 0x08002ad1 Thumb Code 96 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) - i.UART_WaitOnFlagUntilTimeout 0x08002b30 Section 0 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - UART_WaitOnFlagUntilTimeout 0x08002b31 Thumb Code 146 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - i.USART1_IRQHandler 0x08002bc4 Section 0 stm32f1xx_it.o(i.USART1_IRQHandler) - i.USART2_IRQHandler 0x08002bd4 Section 0 stm32f1xx_it.o(i.USART2_IRQHandler) - i.USART3_IRQHandler 0x08002be4 Section 0 stm32f1xx_it.o(i.USART3_IRQHandler) - i.UsageFault_Handler 0x08002bf4 Section 0 stm32f1xx_it.o(i.UsageFault_Handler) - i.__0printf 0x08002bf8 Section 0 printfa.o(i.__0printf) - i.__0snprintf 0x08002c18 Section 0 printfa.o(i.__0snprintf) - i.__0vsnprintf 0x08002c4c Section 0 printfa.o(i.__0vsnprintf) - i.__NVIC_GetPriorityGrouping 0x08002c80 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) - __NVIC_GetPriorityGrouping 0x08002c81 Thumb Code 10 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) - i.__NVIC_SetPriority 0x08002c90 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - __NVIC_SetPriority 0x08002c91 Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - i.__aeabi_errno_addr 0x08002cb8 Section 0 errno.o(i.__aeabi_errno_addr) - i.__scatterload_copy 0x08002cc0 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x08002cce Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x08002cd0 Section 14 handlers.o(i.__scatterload_zeroinit) - i._fp_digits 0x08002ce0 Section 0 printfa.o(i._fp_digits) - _fp_digits 0x08002ce1 Thumb Code 366 printfa.o(i._fp_digits) - i._printf_core 0x08002e64 Section 0 printfa.o(i._printf_core) - _printf_core 0x08002e65 Thumb Code 1704 printfa.o(i._printf_core) - i._printf_post_padding 0x08003518 Section 0 printfa.o(i._printf_post_padding) - _printf_post_padding 0x08003519 Thumb Code 36 printfa.o(i._printf_post_padding) - i._printf_pre_padding 0x0800353c Section 0 printfa.o(i._printf_pre_padding) - _printf_pre_padding 0x0800353d Thumb Code 46 printfa.o(i._printf_pre_padding) - i._snputc 0x0800356a Section 0 printfa.o(i._snputc) - _snputc 0x0800356b Thumb Code 22 printfa.o(i._snputc) - i.calc_checksum 0x08003580 Section 0 cmd_parser.o(i.calc_checksum) - calc_checksum 0x08003581 Thumb Code 26 cmd_parser.o(i.calc_checksum) - i.calc_checksum 0x0800359a Section 0 io_monitor.o(i.calc_checksum) - calc_checksum 0x0800359b Thumb Code 26 io_monitor.o(i.calc_checksum) - i.fputc 0x080035b4 Section 0 uart2_print.o(i.fputc) - i.gpio_led_tx_off 0x080035c4 Section 0 gpio.o(i.gpio_led_tx_off) - i.gpio_led_tx_on 0x080035d8 Section 0 gpio.o(i.gpio_led_tx_on) - i.hex_char_to_val 0x080035ec Section 0 cmd_parser.o(i.hex_char_to_val) - hex_char_to_val 0x080035ed Thumb Code 54 cmd_parser.o(i.hex_char_to_val) - i.hex_to_byte 0x08003622 Section 0 cmd_parser.o(i.hex_to_byte) - hex_to_byte 0x08003623 Thumb Code 28 cmd_parser.o(i.hex_to_byte) - i.is_str_empty 0x0800363e Section 0 cmd_parser.o(i.is_str_empty) - is_str_empty 0x0800363f Thumb Code 16 cmd_parser.o(i.is_str_empty) - i.is_str_numeric 0x0800364e Section 0 cmd_parser.o(i.is_str_numeric) - is_str_numeric 0x0800364f Thumb Code 48 cmd_parser.o(i.is_str_numeric) - i.is_valid_cmd_char 0x0800367e Section 0 cmd_parser.o(i.is_valid_cmd_char) - is_valid_cmd_char 0x0800367f Thumb Code 38 cmd_parser.o(i.is_valid_cmd_char) - i.is_valid_param_char 0x080036a4 Section 0 cmd_parser.o(i.is_valid_param_char) - is_valid_param_char 0x080036a5 Thumb Code 38 cmd_parser.o(i.is_valid_param_char) - i.main 0x080036cc Section 0 main.o(i.main) - i.process_cmd_frame 0x0800380c Section 0 cmd_parser.o(i.process_cmd_frame) - process_cmd_frame 0x0800380d Thumb Code 434 cmd_parser.o(i.process_cmd_frame) - i.reset_parser 0x08003b64 Section 0 cmd_parser.o(i.reset_parser) - reset_parser 0x08003b65 Thumb Code 32 cmd_parser.o(i.reset_parser) - i.rf433_fifo_write 0x08003b88 Section 0 rf433_hal.o(i.rf433_fifo_write) - rf433_fifo_write 0x08003b89 Thumb Code 82 rf433_hal.o(i.rf433_fifo_write) - i.rf433_hal_1ms_callback 0x08003be8 Section 0 rf433_hal.o(i.rf433_hal_1ms_callback) - i.rf433_hal_aux_wait 0x08003c10 Section 0 rf433_hal.o(i.rf433_hal_aux_wait) - i.rf433_hal_deinit 0x08003c50 Section 0 rf433_hal.o(i.rf433_hal_deinit) - i.rf433_hal_init 0x08003c6c Section 0 rf433_hal.o(i.rf433_hal_init) - i.rf433_hal_set_work_mode 0x08003ca0 Section 0 rf433_hal.o(i.rf433_hal_set_work_mode) - i.rf433_hal_uart_rxcplt_callback 0x08003d40 Section 0 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) - i.rf433_hal_uart_tx 0x08003d74 Section 0 rf433_hal.o(i.rf433_hal_uart_tx) - i.rf433_init 0x08003da4 Section 0 rf433.o(i.rf433_init) - i.rf433_send_config_command 0x08003e04 Section 0 rf433.o(i.rf433_send_config_command) - rf433_send_config_command 0x08003e05 Thumb Code 30 rf433.o(i.rf433_send_config_command) - i.rf433_set_config 0x08003e28 Section 0 rf433.o(i.rf433_set_config) - i.rf433_set_work_mode 0x08003e80 Section 0 rf433.o(i.rf433_set_work_mode) - i.rf433_transmit 0x08003e98 Section 0 rf433.o(i.rf433_transmit) - i.rf433_tx_app_init 0x08003ee4 Section 0 rf433_tx_app.o(i.rf433_tx_app_init) - i.rf433_tx_app_start 0x08003f30 Section 0 rf433_tx_app.o(i.rf433_tx_app_start) - i.rf433_tx_app_task 0x08003f5c Section 0 rf433_tx_app.o(i.rf433_tx_app_task) - i.send_di_event 0x08004030 Section 0 io_monitor.o(i.send_di_event) - send_di_event 0x08004031 Thumb Code 82 io_monitor.o(i.send_di_event) - i.send_response_err 0x080040c0 Section 0 cmd_parser.o(i.send_response_err) - send_response_err 0x080040c1 Thumb Code 60 cmd_parser.o(i.send_response_err) - i.send_response_ok 0x08004110 Section 0 cmd_parser.o(i.send_response_ok) - send_response_ok 0x08004111 Thumb Code 60 cmd_parser.o(i.send_response_ok) - i.systick_interrupt_1ms_callback 0x0800415c Section 0 systick.o(i.systick_interrupt_1ms_callback) - i.tx_build_packet 0x08004178 Section 0 rf433_tx_app.o(i.tx_build_packet) - tx_build_packet 0x08004179 Thumb Code 54 rf433_tx_app.o(i.tx_build_packet) - i.tx_led_control 0x080041c0 Section 0 rf433_tx_app.o(i.tx_led_control) - tx_led_control 0x080041c1 Thumb Code 18 rf433_tx_app.o(i.tx_led_control) - i.uart1_rx_timeout_1ms_callback 0x080041d2 Section 0 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) - .constdata 0x080041da Section 18 stm32f1xx_hal_rcc.o(.constdata) - aPLLMULFactorTable 0x080041da Data 16 stm32f1xx_hal_rcc.o(.constdata) - aPredivFactorTable 0x080041ea Data 2 stm32f1xx_hal_rcc.o(.constdata) - .constdata 0x080041ec Section 24 system_stm32f1xx.o(.constdata) - .constdata 0x08004204 Section 33 rf433.o(.constdata) - rf433_default_config 0x08004204 Data 5 rf433.o(.constdata) - request_config 0x08004209 Data 3 rf433.o(.constdata) - request_name 0x0800420c Data 13 rf433.o(.constdata) - request_version 0x08004219 Data 12 rf433.o(.constdata) - .constdata 0x08004225 Section 129 ctype_o.o(.constdata) - .constdata 0x080042a8 Section 4 ctype_o.o(.constdata) - table 0x080042a8 Data 4 ctype_o.o(.constdata) + .text 0x08000150 Section 0 isspace_o.o(.text) + .text 0x08000162 Section 0 memcpya.o(.text) + .text 0x08000186 Section 0 memseta.o(.text) + .text 0x080001aa Section 0 strlen.o(.text) + .text 0x080001b8 Section 0 strcmp.o(.text) + .text 0x080001d4 Section 0 strncmp.o(.text) + .text 0x080001f4 Section 0 __0sscanf.o(.text) + .text 0x0800022c Section 0 _scanf_int.o(.text) + .text 0x08000378 Section 0 atoi.o(.text) + .text 0x08000392 Section 0 uidiv.o(.text) + .text 0x080003be Section 0 uldiv.o(.text) + .text 0x08000420 Section 0 _chval.o(.text) + .text 0x0800043c Section 0 scanf_char.o(.text) + _scanf_char_input 0x0800043d Thumb Code 12 scanf_char.o(.text) + .text 0x08000464 Section 0 _sgetc.o(.text) + .text 0x080004a4 Section 0 strtol.o(.text) + .text 0x08000514 Section 0 iusefp.o(.text) + .text 0x08000514 Section 0 dadd.o(.text) + .text 0x08000662 Section 0 dmul.o(.text) + .text 0x08000746 Section 0 ddiv.o(.text) + .text 0x08000824 Section 0 dfixul.o(.text) + .text 0x08000854 Section 48 cdrcmple.o(.text) + .text 0x08000884 Section 36 init.o(.text) + .text 0x080008a8 Section 0 llshl.o(.text) + .text 0x080008c6 Section 0 llsshr.o(.text) + .text 0x080008ec Section 0 _scanf.o(.text) + .text 0x08000c1c Section 0 _strtoul.o(.text) + .text 0x08000cba Section 0 depilogue.o(.text) + i.BusFault_Handler 0x08000d74 Section 0 stm32f1xx_it.o(i.BusFault_Handler) + i.CmdParser_FeedByte 0x08000d78 Section 0 cmd_parser.o(i.CmdParser_FeedByte) + i.CmdParser_HasCompleteFrame 0x080010a8 Section 0 cmd_parser.o(i.CmdParser_HasCompleteFrame) + i.CmdParser_Init 0x080010d8 Section 0 cmd_parser.o(i.CmdParser_Init) + i.CmdParser_SetResponseCallback 0x08001104 Section 0 cmd_parser.o(i.CmdParser_SetResponseCallback) + i.CmdParser_SetSourcePort 0x08001110 Section 0 cmd_parser.o(i.CmdParser_SetSourcePort) + i.CmdParser_Task 0x0800111c Section 0 cmd_parser.o(i.CmdParser_Task) + i.CmdRouter_Init 0x08001140 Section 0 cmd_router.o(i.CmdRouter_Init) + i.CmdRouter_Task 0x080011e8 Section 0 cmd_router.o(i.CmdRouter_Task) + i.DebugLog_Init 0x080012c0 Section 0 debug_log.o(i.DebugLog_Init) + i.DebugLog_Output 0x08001300 Section 0 debug_log.o(i.DebugLog_Output) + i.DebugMon_Handler 0x080013b0 Section 0 stm32f1xx_it.o(i.DebugMon_Handler) + i.Error_Handler 0x080013b2 Section 0 main.o(i.Error_Handler) + i.HAL_DMA_Abort 0x080013b8 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) + i.HAL_DMA_Abort_IT 0x08001410 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) + i.HAL_Delay 0x080014c0 Section 0 stm32f1xx_hal.o(i.HAL_Delay) + i.HAL_GPIO_Init 0x080014e8 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) + i.HAL_GPIO_ReadPin 0x08001808 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) + i.HAL_GPIO_WritePin 0x08001818 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) + i.HAL_GetTick 0x08001824 Section 0 stm32f1xx_hal.o(i.HAL_GetTick) + i.HAL_IncTick 0x08001830 Section 0 stm32f1xx_hal.o(i.HAL_IncTick) + i.HAL_Init 0x08001848 Section 0 stm32f1xx_hal.o(i.HAL_Init) + i.HAL_InitTick 0x08001870 Section 0 stm32f1xx_hal.o(i.HAL_InitTick) + i.HAL_MspInit 0x080018bc Section 0 stm32f1xx_hal_msp.o(i.HAL_MspInit) + i.HAL_NVIC_EnableIRQ 0x08001910 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + i.HAL_NVIC_SetPriority 0x08001930 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + i.HAL_NVIC_SetPriorityGrouping 0x080019ac Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) + i.HAL_RCC_ClockConfig 0x080019d4 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + i.HAL_RCC_GetHCLKFreq 0x08001b60 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + i.HAL_RCC_GetPCLK1Freq 0x08001b6c Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + i.HAL_RCC_GetPCLK2Freq 0x08001b8c Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) + i.HAL_RCC_GetSysClockFreq 0x08001bac Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + i.HAL_RCC_OscConfig 0x08001c1c Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) + i.HAL_SPI_Init 0x08002080 Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) + i.HAL_SPI_MspInit 0x08002140 Section 0 spi.o(i.HAL_SPI_MspInit) + i.HAL_SYSTICK_Config 0x080021c8 Section 0 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) + i.HAL_UARTEx_RxEventCallback 0x080021fc Section 0 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) + i.HAL_UART_ErrorCallback 0x080021fe Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) + i.HAL_UART_IRQHandler 0x08002200 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) + i.HAL_UART_Init 0x080024e4 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Init) + i.HAL_UART_MspInit 0x0800255c Section 0 usart.o(i.HAL_UART_MspInit) + i.HAL_UART_Receive_IT 0x080026ec Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) + i.HAL_UART_RxCpltCallback 0x08002718 Section 0 main.o(i.HAL_UART_RxCpltCallback) + i.HAL_UART_Transmit 0x08002798 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) + i.HAL_UART_Transmit_IT 0x0800284a Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) + i.HAL_UART_TxCpltCallback 0x08002884 Section 0 main.o(i.HAL_UART_TxCpltCallback) + i.HardFault_Handler 0x080028c4 Section 0 stm32f1xx_it.o(i.HardFault_Handler) + i.IO_Monitor_GetAllStates 0x080028c8 Section 0 io_monitor.o(i.IO_Monitor_GetAllStates) + i.IO_Monitor_GetState 0x080028f0 Section 0 io_monitor.o(i.IO_Monitor_GetState) + i.IO_Monitor_Init 0x08002908 Section 0 io_monitor.o(i.IO_Monitor_Init) + i.IO_Monitor_Task 0x08002988 Section 0 io_monitor.o(i.IO_Monitor_Task) + i.MX_GPIO_Init 0x08002a10 Section 0 gpio.o(i.MX_GPIO_Init) + i.MX_SPI2_Init 0x08002b20 Section 0 spi.o(i.MX_SPI2_Init) + i.MX_USART1_UART_Init 0x08002b64 Section 0 usart.o(i.MX_USART1_UART_Init) + i.MX_USART2_UART_Init 0x08002b9c Section 0 usart.o(i.MX_USART2_UART_Init) + i.MX_USART3_UART_Init 0x08002bd4 Section 0 usart.o(i.MX_USART3_UART_Init) + i.MemManage_Handler 0x08002c0c Section 0 stm32f1xx_it.o(i.MemManage_Handler) + i.MultiUART_FeedByte 0x08002c10 Section 0 multi_uart_router.o(i.MultiUART_FeedByte) + i.MultiUART_GetPortName 0x08002c7c Section 0 multi_uart_router.o(i.MultiUART_GetPortName) + i.MultiUART_GetRxCount 0x08002c9c Section 0 multi_uart_router.o(i.MultiUART_GetRxCount) + i.MultiUART_Init 0x08002cc0 Section 0 multi_uart_router.o(i.MultiUART_Init) + i.MultiUART_ReadByte 0x08002d4c Section 0 multi_uart_router.o(i.MultiUART_ReadByte) + i.MultiUART_Send 0x08002da8 Section 0 multi_uart_router.o(i.MultiUART_Send) + i.MultiUART_SendString 0x08002e0c Section 0 multi_uart_router.o(i.MultiUART_SendString) + i.MultiUART_Task 0x08002e2c Section 0 multi_uart_router.o(i.MultiUART_Task) + i.MultiUART_TxCpltCallback 0x08002e60 Section 0 multi_uart_router.o(i.MultiUART_TxCpltCallback) + i.NMI_Handler 0x08002ed8 Section 0 stm32f1xx_it.o(i.NMI_Handler) + i.PendSV_Handler 0x08002edc Section 0 stm32f1xx_it.o(i.PendSV_Handler) + i.RCC_Delay 0x08002ee0 Section 0 stm32f1xx_hal_rcc.o(i.RCC_Delay) + RCC_Delay 0x08002ee1 Thumb Code 36 stm32f1xx_hal_rcc.o(i.RCC_Delay) + i.Relay_Init 0x08002f08 Section 0 relay_control.o(i.Relay_Init) + i.Relay_SetState 0x08002f54 Section 0 relay_control.o(i.Relay_SetState) + i.SVC_Handler 0x08003024 Section 0 stm32f1xx_it.o(i.SVC_Handler) + i.SysTick_Handler 0x08003026 Section 0 stm32f1xx_it.o(i.SysTick_Handler) + i.SystemClock_Config 0x08003032 Section 0 main.o(i.SystemClock_Config) + i.SystemInit 0x08003098 Section 0 system_stm32f1xx.o(i.SystemInit) + i.UART2_Print_Init 0x0800309c Section 0 uart2_print.o(i.UART2_Print_Init) + i.UART2_Print_Printf 0x080030ec Section 0 uart2_print.o(i.UART2_Print_Printf) + i.UART2_Print_Send 0x0800312c Section 0 uart2_print.o(i.UART2_Print_Send) + i.UART2_Print_String 0x080031e0 Section 0 uart2_print.o(i.UART2_Print_String) + i.UART2_Print_Task 0x080031fc Section 0 uart2_print.o(i.UART2_Print_Task) + i.UART2_Print_TxCpltCallback 0x08003268 Section 0 uart2_print.o(i.UART2_Print_TxCpltCallback) + i.UART_DMAAbortOnError 0x080032d4 Section 0 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) + UART_DMAAbortOnError 0x080032d5 Thumb Code 20 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) + i.UART_EndRxTransfer 0x080032e8 Section 0 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) + UART_EndRxTransfer 0x080032e9 Thumb Code 108 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) + i.UART_EndTransmit_IT 0x08003354 Section 0 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) + UART_EndTransmit_IT 0x08003355 Thumb Code 32 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) + i.UART_Receive_IT 0x08003374 Section 0 stm32f1xx_hal_uart.o(i.UART_Receive_IT) + UART_Receive_IT 0x08003375 Thumb Code 252 stm32f1xx_hal_uart.o(i.UART_Receive_IT) + i.UART_SetConfig 0x08003470 Section 0 stm32f1xx_hal_uart.o(i.UART_SetConfig) + UART_SetConfig 0x08003471 Thumb Code 248 stm32f1xx_hal_uart.o(i.UART_SetConfig) + i.UART_Start_Receive_IT 0x0800356c Section 0 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) + i.UART_Transmit_IT 0x080035ac Section 0 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) + UART_Transmit_IT 0x080035ad Thumb Code 96 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) + i.UART_WaitOnFlagUntilTimeout 0x0800360c Section 0 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + UART_WaitOnFlagUntilTimeout 0x0800360d Thumb Code 146 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + i.USART1_IRQHandler 0x080036a0 Section 0 stm32f1xx_it.o(i.USART1_IRQHandler) + i.USART2_IRQHandler 0x080036b0 Section 0 stm32f1xx_it.o(i.USART2_IRQHandler) + i.USART3_IRQHandler 0x080036c0 Section 0 stm32f1xx_it.o(i.USART3_IRQHandler) + i.UsageFault_Handler 0x080036d0 Section 0 stm32f1xx_it.o(i.UsageFault_Handler) + i.__0printf 0x080036d4 Section 0 printfa.o(i.__0printf) + i.__0snprintf 0x080036f4 Section 0 printfa.o(i.__0snprintf) + i.__0vsnprintf 0x08003728 Section 0 printfa.o(i.__0vsnprintf) + i.__NVIC_GetPriorityGrouping 0x0800375c Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) + __NVIC_GetPriorityGrouping 0x0800375d Thumb Code 10 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) + i.__NVIC_SetPriority 0x0800376c Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + __NVIC_SetPriority 0x0800376d Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + i.__aeabi_errno_addr 0x08003794 Section 0 errno.o(i.__aeabi_errno_addr) + i.__scatterload_copy 0x0800379c Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x080037aa Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x080037ac Section 14 handlers.o(i.__scatterload_zeroinit) + i._fp_digits 0x080037bc Section 0 printfa.o(i._fp_digits) + _fp_digits 0x080037bd Thumb Code 366 printfa.o(i._fp_digits) + i._printf_core 0x08003940 Section 0 printfa.o(i._printf_core) + _printf_core 0x08003941 Thumb Code 1704 printfa.o(i._printf_core) + i._printf_post_padding 0x08003ff4 Section 0 printfa.o(i._printf_post_padding) + _printf_post_padding 0x08003ff5 Thumb Code 36 printfa.o(i._printf_post_padding) + i._printf_pre_padding 0x08004018 Section 0 printfa.o(i._printf_pre_padding) + _printf_pre_padding 0x08004019 Thumb Code 46 printfa.o(i._printf_pre_padding) + i._snputc 0x08004046 Section 0 printfa.o(i._snputc) + _snputc 0x08004047 Thumb Code 22 printfa.o(i._snputc) + i.append_rx_log 0x0800405c Section 0 cmd_router.o(i.append_rx_log) + append_rx_log 0x0800405d Thumb Code 54 cmd_router.o(i.append_rx_log) + i.calc_checksum 0x080040a0 Section 0 cmd_parser.o(i.calc_checksum) + calc_checksum 0x080040a1 Thumb Code 26 cmd_parser.o(i.calc_checksum) + i.calc_checksum 0x080040ba Section 0 io_monitor.o(i.calc_checksum) + calc_checksum 0x080040bb Thumb Code 26 io_monitor.o(i.calc_checksum) + i.cmd_parser_response_callback 0x080040d4 Section 0 cmd_router.o(i.cmd_parser_response_callback) + cmd_parser_response_callback 0x080040d5 Thumb Code 86 cmd_router.o(i.cmd_parser_response_callback) + i.flush_rx_log 0x08004148 Section 0 cmd_router.o(i.flush_rx_log) + flush_rx_log 0x08004149 Thumb Code 162 cmd_router.o(i.flush_rx_log) + i.fputc 0x0800421c Section 0 uart2_print.o(i.fputc) + i.gpio_led_rx_off 0x0800422c Section 0 gpio.o(i.gpio_led_rx_off) + i.gpio_led_rx_on 0x08004240 Section 0 gpio.o(i.gpio_led_rx_on) + i.gpio_led_tx_off 0x08004254 Section 0 gpio.o(i.gpio_led_tx_off) + i.gpio_led_tx_on 0x08004268 Section 0 gpio.o(i.gpio_led_tx_on) + i.hex_char_to_val 0x0800427c Section 0 cmd_parser.o(i.hex_char_to_val) + hex_char_to_val 0x0800427d Thumb Code 54 cmd_parser.o(i.hex_char_to_val) + i.hex_to_byte 0x080042b2 Section 0 cmd_parser.o(i.hex_to_byte) + hex_to_byte 0x080042b3 Thumb Code 28 cmd_parser.o(i.hex_to_byte) + i.init_modules 0x080042d0 Section 0 debug_log.o(i.init_modules) + init_modules 0x080042d1 Thumb Code 46 debug_log.o(i.init_modules) + i.is_module_enabled 0x08004308 Section 0 debug_log.o(i.is_module_enabled) + is_module_enabled 0x08004309 Thumb Code 72 debug_log.o(i.is_module_enabled) + i.is_str_empty 0x08004354 Section 0 cmd_parser.o(i.is_str_empty) + is_str_empty 0x08004355 Thumb Code 16 cmd_parser.o(i.is_str_empty) + i.is_str_numeric 0x08004364 Section 0 cmd_parser.o(i.is_str_numeric) + is_str_numeric 0x08004365 Thumb Code 48 cmd_parser.o(i.is_str_numeric) + i.is_valid_cmd_char 0x08004394 Section 0 cmd_parser.o(i.is_valid_cmd_char) + is_valid_cmd_char 0x08004395 Thumb Code 38 cmd_parser.o(i.is_valid_cmd_char) + i.is_valid_param_char 0x080043ba Section 0 cmd_parser.o(i.is_valid_param_char) + is_valid_param_char 0x080043bb Thumb Code 38 cmd_parser.o(i.is_valid_param_char) + i.main 0x080043e0 Section 0 main.o(i.main) + i.process_cmd_frame 0x08004554 Section 0 cmd_parser.o(i.process_cmd_frame) + process_cmd_frame 0x08004555 Thumb Code 400 cmd_parser.o(i.process_cmd_frame) + i.reset_parser 0x08004878 Section 0 cmd_parser.o(i.reset_parser) + reset_parser 0x08004879 Thumb Code 32 cmd_parser.o(i.reset_parser) + i.rf433_fifo_clear 0x0800489c Section 0 rf433_hal.o(i.rf433_fifo_clear) + rf433_fifo_clear 0x0800489d Thumb Code 16 rf433_hal.o(i.rf433_fifo_clear) + i.rf433_fifo_get_length 0x080048b8 Section 0 rf433_hal.o(i.rf433_fifo_get_length) + rf433_fifo_get_length 0x080048b9 Thumb Code 20 rf433_hal.o(i.rf433_fifo_get_length) + i.rf433_fifo_read 0x080048d0 Section 0 rf433_hal.o(i.rf433_fifo_read) + rf433_fifo_read 0x080048d1 Thumb Code 100 rf433_hal.o(i.rf433_fifo_read) + i.rf433_fifo_write 0x08004940 Section 0 rf433_hal.o(i.rf433_fifo_write) + rf433_fifo_write 0x08004941 Thumb Code 82 rf433_hal.o(i.rf433_fifo_write) + i.rf433_hal_1ms_callback 0x080049a0 Section 0 rf433_hal.o(i.rf433_hal_1ms_callback) + i.rf433_hal_aux_wait 0x080049c8 Section 0 rf433_hal.o(i.rf433_hal_aux_wait) + i.rf433_hal_deinit 0x08004a08 Section 0 rf433_hal.o(i.rf433_hal_deinit) + i.rf433_hal_fifo_clear 0x08004a24 Section 0 rf433_hal.o(i.rf433_hal_fifo_clear) + i.rf433_hal_fifo_get_length 0x08004a2c Section 0 rf433_hal.o(i.rf433_hal_fifo_get_length) + i.rf433_hal_fifo_read 0x08004a38 Section 0 rf433_hal.o(i.rf433_hal_fifo_read) + i.rf433_hal_init 0x08004a4c Section 0 rf433_hal.o(i.rf433_hal_init) + i.rf433_hal_set_work_mode 0x08004a80 Section 0 rf433_hal.o(i.rf433_hal_set_work_mode) + i.rf433_hal_uart_rxcplt_callback 0x08004b20 Section 0 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) + i.rf433_hal_uart_tx 0x08004b54 Section 0 rf433_hal.o(i.rf433_hal_uart_tx) + i.rf433_init 0x08004b84 Section 0 rf433.o(i.rf433_init) + i.rf433_rx_app_init 0x08004be4 Section 0 rf433_rx_app.o(i.rf433_rx_app_init) + i.rf433_rx_app_parse_packet 0x08004c34 Section 0 rf433_rx_app.o(i.rf433_rx_app_parse_packet) + i.rf433_rx_app_start 0x08004c84 Section 0 rf433_rx_app.o(i.rf433_rx_app_start) + i.rf433_rx_app_task 0x08004ca4 Section 0 rf433_rx_app.o(i.rf433_rx_app_task) + i.rf433_rx_start 0x08004d44 Section 0 rf433.o(i.rf433_rx_start) + i.rf433_send_config_command 0x08004d80 Section 0 rf433.o(i.rf433_send_config_command) + rf433_send_config_command 0x08004d81 Thumb Code 30 rf433.o(i.rf433_send_config_command) + i.rf433_set_config 0x08004da4 Section 0 rf433.o(i.rf433_set_config) + i.rf433_set_work_mode 0x08004dfc Section 0 rf433.o(i.rf433_set_work_mode) + i.rf433_transmit 0x08004e14 Section 0 rf433.o(i.rf433_transmit) + i.rf433_tx_app_init 0x08004e4c Section 0 rf433_tx_app.o(i.rf433_tx_app_init) + i.rf433_tx_app_start 0x08004e98 Section 0 rf433_tx_app.o(i.rf433_tx_app_start) + i.rf433_tx_app_task 0x08004ec4 Section 0 rf433_tx_app.o(i.rf433_tx_app_task) + i.rx_led_control 0x08004f98 Section 0 rf433_rx_app.o(i.rx_led_control) + rx_led_control 0x08004f99 Thumb Code 18 rf433_rx_app.o(i.rx_led_control) + i.rx_ring_init 0x08004faa Section 0 multi_uart_router.o(i.rx_ring_init) + rx_ring_init 0x08004fab Thumb Code 16 multi_uart_router.o(i.rx_ring_init) + i.rx_ring_push 0x08004fba Section 0 multi_uart_router.o(i.rx_ring_push) + rx_ring_push 0x08004fbb Thumb Code 70 multi_uart_router.o(i.rx_ring_push) + i.rx_update_stats 0x08005000 Section 0 rf433_rx_app.o(i.rx_update_stats) + rx_update_stats 0x08005001 Thumb Code 56 rf433_rx_app.o(i.rx_update_stats) + i.send_di_event 0x0800503c Section 0 io_monitor.o(i.send_di_event) + send_di_event 0x0800503d Thumb Code 102 io_monitor.o(i.send_di_event) + i.send_response_err 0x080050e4 Section 0 cmd_parser.o(i.send_response_err) + send_response_err 0x080050e5 Thumb Code 80 cmd_parser.o(i.send_response_err) + i.send_response_ok 0x08005150 Section 0 cmd_parser.o(i.send_response_ok) + send_response_ok 0x08005151 Thumb Code 80 cmd_parser.o(i.send_response_ok) + i.systick_interrupt_1ms_callback 0x080051b8 Section 0 systick.o(i.systick_interrupt_1ms_callback) + i.tx_build_packet 0x080051d4 Section 0 rf433_tx_app.o(i.tx_build_packet) + tx_build_packet 0x080051d5 Thumb Code 54 rf433_tx_app.o(i.tx_build_packet) + i.tx_kickoff 0x0800521c Section 0 multi_uart_router.o(i.tx_kickoff) + tx_kickoff 0x0800521d Thumb Code 98 multi_uart_router.o(i.tx_kickoff) + i.tx_led_control 0x08005284 Section 0 rf433_tx_app.o(i.tx_led_control) + tx_led_control 0x08005285 Thumb Code 18 rf433_tx_app.o(i.tx_led_control) + i.tx_ring_init 0x08005296 Section 0 multi_uart_router.o(i.tx_ring_init) + tx_ring_init 0x08005297 Thumb Code 22 multi_uart_router.o(i.tx_ring_init) + i.tx_ring_push 0x080052ac Section 0 multi_uart_router.o(i.tx_ring_push) + tx_ring_push 0x080052ad Thumb Code 94 multi_uart_router.o(i.tx_ring_push) + i.uart1_check_rx_done 0x0800530c Section 0 rf433_hal.o(i.uart1_check_rx_done) + i.uart1_rx_timeout_1ms_callback 0x0800535c Section 0 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) + .constdata 0x08005364 Section 16 debug_log.o(.constdata) + g_level_str 0x08005364 Data 16 debug_log.o(.constdata) + .constdata 0x08005374 Section 24 multi_uart_router.o(.constdata) + g_port_uart_map 0x08005374 Data 12 multi_uart_router.o(.constdata) + g_port_name_map 0x08005380 Data 12 multi_uart_router.o(.constdata) + .constdata 0x0800538c Section 18 stm32f1xx_hal_rcc.o(.constdata) + aPLLMULFactorTable 0x0800538c Data 16 stm32f1xx_hal_rcc.o(.constdata) + aPredivFactorTable 0x0800539c Data 2 stm32f1xx_hal_rcc.o(.constdata) + .constdata 0x0800539e Section 24 system_stm32f1xx.o(.constdata) + .constdata 0x080053b6 Section 33 rf433.o(.constdata) + rf433_default_config 0x080053b6 Data 5 rf433.o(.constdata) + request_config 0x080053bb Data 3 rf433.o(.constdata) + request_name 0x080053be Data 13 rf433.o(.constdata) + request_version 0x080053cb Data 12 rf433.o(.constdata) + .constdata 0x080053d7 Section 129 ctype_o.o(.constdata) + .constdata 0x08005458 Section 4 ctype_o.o(.constdata) + table 0x08005458 Data 4 ctype_o.o(.constdata) + .conststring 0x0800545c Section 30 debug_log.o(.conststring) + .conststring 0x0800547c Section 22 multi_uart_router.o(.conststring) .data 0x20000000 Section 4 systick.o(.data) user_timerout_ms 0x20000000 Data 4 systick.o(.data) - .data 0x20000004 Section 1 main.o(.data) + .data 0x20000004 Section 2 main.o(.data) uart2_rx_byte 0x20000004 Data 1 main.o(.data) - .data 0x20000008 Section 69 io_monitor.o(.data) - di_channels 0x20000008 Data 64 io_monitor.o(.data) - last_scan_tick 0x20000048 Data 4 io_monitor.o(.data) - report_enabled 0x2000004c Data 1 io_monitor.o(.data) - .data 0x20000050 Section 12 relay_control.o(.data) - current_states 0x20000050 Data 4 relay_control.o(.data) - last_toggle_tick 0x20000054 Data 4 relay_control.o(.data) - toggle_count 0x20000058 Data 4 relay_control.o(.data) - .data 0x2000005c Section 9 stm32f1xx_hal.o(.data) - .data 0x20000068 Section 4 system_stm32f1xx.o(.data) - .data 0x2000006c Section 6 rf433.o(.data) - rf433_initialized 0x2000006c Data 1 rf433.o(.data) - rf433_current_config 0x2000006d Data 5 rf433.o(.data) - .data 0x20000074 Section 25 rf433_hal.o(.data) - rf433_hal_initialized 0x20000074 Data 1 rf433_hal.o(.data) - rf433_fifo_head 0x20000078 Data 4 rf433_hal.o(.data) - rf433_fifo_tail 0x2000007c Data 4 rf433_hal.o(.data) - rf433_fifo_count 0x20000080 Data 4 rf433_hal.o(.data) - rf433_uart_rx_timeout 0x20000088 Data 4 rf433_hal.o(.data) - rf433_uart_rx_done 0x2000008c Data 1 rf433_hal.o(.data) - .data 0x20000090 Section 4 stdout.o(.data) - .data 0x20000094 Section 4 errno.o(.data) - _errno 0x20000094 Data 4 errno.o(.data) - .bss 0x20000098 Section 28 rf433_tx_app.o(.bss) - g_tx_app 0x20000098 Data 28 rf433_tx_app.o(.bss) - .bss 0x200000b4 Section 88 spi.o(.bss) - .bss 0x2000010c Section 216 usart.o(.bss) - .bss 0x200001e4 Section 96 cmd_parser.o(.bss) - ctx 0x200001e4 Data 96 cmd_parser.o(.bss) - .bss 0x20000244 Section 266 uart2_print.o(.bss) - tx_ring 0x20000244 Data 266 uart2_print.o(.bss) - .bss 0x2000034e Section 1024 rf433.o(.bss) - rf433_buffer 0x2000034e Data 1024 rf433.o(.bss) - .bss 0x2000074e Section 1024 rf433_hal.o(.bss) - rf433_fifo_buffer 0x2000074e Data 1024 rf433_hal.o(.bss) - STACK 0x20000b50 Section 1024 startup_stm32f103xb.o(STACK) + uart3_rx_byte 0x20000005 Data 1 main.o(.data) + .data 0x20000008 Section 5 cmd_parser.o(.data) + g_response_callback 0x20000008 Data 4 cmd_parser.o(.data) + g_current_source_port 0x2000000c Data 1 cmd_parser.o(.data) + .data 0x20000010 Section 76 io_monitor.o(.data) + di_channels 0x20000010 Data 64 io_monitor.o(.data) + last_scan_tick 0x20000050 Data 4 io_monitor.o(.data) + report_enabled 0x20000054 Data 1 io_monitor.o(.data) + g_event_callback 0x20000058 Data 4 io_monitor.o(.data) + .data 0x2000005c Section 8 relay_control.o(.data) + current_state 0x2000005c Data 1 relay_control.o(.data) + last_toggle_tick 0x20000060 Data 4 relay_control.o(.data) + .data 0x20000064 Section 20 cmd_router.o(.data) + g_response_handler 0x20000064 Data 4 cmd_router.o(.data) + g_processed_count 0x20000068 Data 4 cmd_router.o(.data) + g_routed_count 0x2000006c Data 4 cmd_router.o(.data) + g_current_parsing_port 0x20000070 Data 1 cmd_router.o(.data) + g_rx_log_len 0x20000072 Data 6 cmd_router.o(.data) + .data 0x20000078 Section 2 debug_log.o(.data) + g_current_level 0x20000078 Data 1 debug_log.o(.data) + g_modules_initialized 0x20000079 Data 1 debug_log.o(.data) + .data 0x2000007c Section 9 stm32f1xx_hal.o(.data) + .data 0x20000088 Section 4 system_stm32f1xx.o(.data) + .data 0x2000008c Section 16 rf433.o(.data) + rf433_initialized 0x2000008c Data 1 rf433.o(.data) + rf433_current_config 0x2000008d Data 5 rf433.o(.data) + rf433_rx_started 0x20000092 Data 1 rf433.o(.data) + rf433_rx_callback 0x20000094 Data 4 rf433.o(.data) + rf433_rx_user_data 0x20000098 Data 4 rf433.o(.data) + .data 0x2000009c Section 25 rf433_hal.o(.data) + rf433_hal_initialized 0x2000009c Data 1 rf433_hal.o(.data) + rf433_fifo_head 0x200000a0 Data 4 rf433_hal.o(.data) + rf433_fifo_tail 0x200000a4 Data 4 rf433_hal.o(.data) + rf433_fifo_count 0x200000a8 Data 4 rf433_hal.o(.data) + rf433_uart_rx_timeout 0x200000b0 Data 4 rf433_hal.o(.data) + rf433_uart_rx_done 0x200000b4 Data 1 rf433_hal.o(.data) + .data 0x200000b8 Section 4 stdout.o(.data) + .data 0x200000bc Section 4 errno.o(.data) + _errno 0x200000bc Data 4 errno.o(.data) + .bss 0x200000c0 Section 40 rf433_rx_app.o(.bss) + g_rx_app 0x200000c0 Data 40 rf433_rx_app.o(.bss) + .bss 0x200000e8 Section 28 rf433_tx_app.o(.bss) + g_tx_app 0x200000e8 Data 28 rf433_tx_app.o(.bss) + .bss 0x20000104 Section 88 spi.o(.bss) + .bss 0x2000015c Section 216 usart.o(.bss) + .bss 0x20000234 Section 96 cmd_parser.o(.bss) + ctx 0x20000234 Data 96 cmd_parser.o(.bss) + .bss 0x20000294 Section 266 uart2_print.o(.bss) + tx_ring 0x20000294 Data 266 uart2_print.o(.bss) + .bss 0x200003a0 Section 444 cmd_router.o(.bss) + g_port_states 0x200003a0 Data 48 cmd_router.o(.bss) + g_rx_log_buffer 0x200003d0 Data 384 cmd_router.o(.bss) + g_rx_log_last_tick 0x20000550 Data 12 cmd_router.o(.bss) + .bss 0x2000055c Section 272 debug_log.o(.bss) + g_modules 0x2000055c Data 272 debug_log.o(.bss) + .bss 0x2000066c Section 1284 multi_uart_router.o(.bss) + g_port_ctx 0x2000066c Data 1284 multi_uart_router.o(.bss) + .bss 0x20000b70 Section 1024 rf433.o(.bss) + rf433_buffer 0x20000b70 Data 1024 rf433.o(.bss) + .bss 0x20000f70 Section 1024 rf433_hal.o(.bss) + rf433_fifo_buffer 0x20000f70 Data 1024 rf433_hal.o(.bss) + STACK 0x20001370 Section 1024 startup_stm32f103xb.o(STACK) Global Symbols @@ -1636,6 +1924,9 @@ Image Symbol Table __decompress - Undefined Weak Reference _clock_init - Undefined Weak Reference _microlib_exit - Undefined Weak Reference + _scanf_longlong - Undefined Weak Reference + _scanf_real - Undefined Weak Reference + _scanf_string - Undefined Weak Reference __Vectors_Size 0x000000ec Number 0 startup_stm32f103xb.o ABSOLUTE __Vectors 0x08000000 Data 4 startup_stm32f103xb.o(RESET) __Vectors_End 0x080000ec Data 0 startup_stm32f103xb.o(RESET) @@ -1693,163 +1984,201 @@ Image Symbol Table __aeabi_llsr 0x08000129 Thumb Code 32 llushr.o(.text) _ll_ushift_r 0x08000129 Thumb Code 0 llushr.o(.text) __rt_ctype_table 0x08000149 Thumb Code 4 ctype_o.o(.text) - __aeabi_memset 0x08000151 Thumb Code 14 memseta.o(.text) - __aeabi_memset4 0x08000151 Thumb Code 0 memseta.o(.text) - __aeabi_memset8 0x08000151 Thumb Code 0 memseta.o(.text) - __aeabi_memclr 0x0800015f Thumb Code 4 memseta.o(.text) - __aeabi_memclr4 0x0800015f Thumb Code 0 memseta.o(.text) - __aeabi_memclr8 0x0800015f Thumb Code 0 memseta.o(.text) - _memset$wrapper 0x08000163 Thumb Code 18 memseta.o(.text) - strlen 0x08000175 Thumb Code 14 strlen.o(.text) - strcmp 0x08000183 Thumb Code 28 strcmp.o(.text) - atoi 0x0800019f Thumb Code 26 atoi.o(.text) - __aeabi_uidiv 0x080001b9 Thumb Code 0 uidiv.o(.text) - __aeabi_uidivmod 0x080001b9 Thumb Code 44 uidiv.o(.text) - __aeabi_uldivmod 0x080001e5 Thumb Code 98 uldiv.o(.text) - strtol 0x08000247 Thumb Code 112 strtol.o(.text) - __I$use$fp 0x080002b7 Thumb Code 0 iusefp.o(.text) - __aeabi_dadd 0x080002b7 Thumb Code 322 dadd.o(.text) - __aeabi_dsub 0x080003f9 Thumb Code 6 dadd.o(.text) - __aeabi_drsub 0x080003ff Thumb Code 6 dadd.o(.text) - __aeabi_dmul 0x08000405 Thumb Code 228 dmul.o(.text) - __aeabi_ddiv 0x080004e9 Thumb Code 222 ddiv.o(.text) - __aeabi_d2ulz 0x080005c7 Thumb Code 48 dfixul.o(.text) - __aeabi_cdrcmple 0x080005f9 Thumb Code 48 cdrcmple.o(.text) - __scatterload 0x08000629 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x08000629 Thumb Code 0 init.o(.text) - __aeabi_llsl 0x0800064d Thumb Code 30 llshl.o(.text) - _ll_shift_l 0x0800064d Thumb Code 0 llshl.o(.text) - __aeabi_lasr 0x0800066b Thumb Code 36 llsshr.o(.text) - _ll_sshift_r 0x0800066b Thumb Code 0 llsshr.o(.text) - _strtoul 0x0800068f Thumb Code 158 _strtoul.o(.text) - _double_round 0x0800072d Thumb Code 30 depilogue.o(.text) - _double_epilogue 0x0800074b Thumb Code 156 depilogue.o(.text) - _chval 0x080007e7 Thumb Code 28 _chval.o(.text) - BusFault_Handler 0x08000803 Thumb Code 4 stm32f1xx_it.o(i.BusFault_Handler) - CmdParser_FeedByte 0x08000809 Thumb Code 730 cmd_parser.o(i.CmdParser_FeedByte) - CmdParser_Init 0x08000b39 Thumb Code 24 cmd_parser.o(i.CmdParser_Init) - CmdParser_Task 0x08000b65 Thumb Code 32 cmd_parser.o(i.CmdParser_Task) - DebugMon_Handler 0x08000b89 Thumb Code 2 stm32f1xx_it.o(i.DebugMon_Handler) - Error_Handler 0x08000b8b Thumb Code 6 main.o(i.Error_Handler) - HAL_DMA_Abort 0x08000b91 Thumb Code 86 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) - HAL_DMA_Abort_IT 0x08000be9 Thumb Code 172 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) - HAL_Delay 0x08000c99 Thumb Code 36 stm32f1xx_hal.o(i.HAL_Delay) - HAL_GPIO_Init 0x08000cc1 Thumb Code 766 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) - HAL_GPIO_ReadPin 0x08000fe1 Thumb Code 16 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) - HAL_GPIO_WritePin 0x08000ff1 Thumb Code 12 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) - HAL_GetTick 0x08000ffd Thumb Code 6 stm32f1xx_hal.o(i.HAL_GetTick) - HAL_IncTick 0x08001009 Thumb Code 16 stm32f1xx_hal.o(i.HAL_IncTick) - HAL_Init 0x08001021 Thumb Code 34 stm32f1xx_hal.o(i.HAL_Init) - HAL_InitTick 0x08001049 Thumb Code 64 stm32f1xx_hal.o(i.HAL_InitTick) - HAL_MspInit 0x08001095 Thumb Code 76 stm32f1xx_hal_msp.o(i.HAL_MspInit) - HAL_NVIC_EnableIRQ 0x080010e9 Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - HAL_NVIC_SetPriority 0x08001109 Thumb Code 124 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - HAL_NVIC_SetPriorityGrouping 0x08001185 Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) - HAL_RCC_ClockConfig 0x080011ad Thumb Code 376 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - HAL_RCC_GetHCLKFreq 0x08001339 Thumb Code 6 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - HAL_RCC_GetPCLK1Freq 0x08001345 Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - HAL_RCC_GetPCLK2Freq 0x08001365 Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) - HAL_RCC_GetSysClockFreq 0x08001385 Thumb Code 92 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - HAL_RCC_OscConfig 0x080013f5 Thumb Code 1114 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) - HAL_SPI_Init 0x08001859 Thumb Code 190 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) - HAL_SPI_MspInit 0x08001919 Thumb Code 124 spi.o(i.HAL_SPI_MspInit) - HAL_SYSTICK_Config 0x080019a1 Thumb Code 52 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) - HAL_UARTEx_RxEventCallback 0x080019d5 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) - HAL_UART_ErrorCallback 0x080019d7 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) - HAL_UART_IRQHandler 0x080019d9 Thumb Code 736 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) - HAL_UART_Init 0x08001cbd Thumb Code 118 stm32f1xx_hal_uart.o(i.HAL_UART_Init) - HAL_UART_MspInit 0x08001d35 Thumb Code 376 usart.o(i.HAL_UART_MspInit) - HAL_UART_Receive_IT 0x08001ec5 Thumb Code 44 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) - HAL_UART_RxCpltCallback 0x08001ef1 Thumb Code 54 main.o(i.HAL_UART_RxCpltCallback) - HAL_UART_Transmit 0x08001f39 Thumb Code 178 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) - HAL_UART_Transmit_IT 0x08001feb Thumb Code 56 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) - HAL_UART_TxCpltCallback 0x08002025 Thumb Code 18 main.o(i.HAL_UART_TxCpltCallback) - HardFault_Handler 0x0800203d Thumb Code 4 stm32f1xx_it.o(i.HardFault_Handler) - IO_Monitor_GetAllStates 0x08002041 Thumb Code 34 io_monitor.o(i.IO_Monitor_GetAllStates) - IO_Monitor_GetState 0x08002069 Thumb Code 20 io_monitor.o(i.IO_Monitor_GetState) - IO_Monitor_Init 0x08002081 Thumb Code 76 io_monitor.o(i.IO_Monitor_Init) - IO_Monitor_Task 0x08002101 Thumb Code 122 io_monitor.o(i.IO_Monitor_Task) - MX_GPIO_Init 0x08002189 Thumb Code 258 gpio.o(i.MX_GPIO_Init) - MX_SPI2_Init 0x08002299 Thumb Code 58 spi.o(i.MX_SPI2_Init) - MX_USART1_UART_Init 0x080022dd Thumb Code 46 usart.o(i.MX_USART1_UART_Init) - MX_USART2_UART_Init 0x08002315 Thumb Code 46 usart.o(i.MX_USART2_UART_Init) - MX_USART3_UART_Init 0x0800234d Thumb Code 46 usart.o(i.MX_USART3_UART_Init) - MemManage_Handler 0x08002385 Thumb Code 4 stm32f1xx_it.o(i.MemManage_Handler) - NMI_Handler 0x08002389 Thumb Code 4 stm32f1xx_it.o(i.NMI_Handler) - PendSV_Handler 0x0800238d Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) - Relay_Init 0x080023b9 Thumb Code 48 relay_control.o(i.Relay_Init) - Relay_SetState 0x08002419 Thumb Code 140 relay_control.o(i.Relay_SetState) - SVC_Handler 0x08002549 Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) - SysTick_Handler 0x0800254b Thumb Code 12 stm32f1xx_it.o(i.SysTick_Handler) - SystemClock_Config 0x08002557 Thumb Code 102 main.o(i.SystemClock_Config) - SystemInit 0x080025bd Thumb Code 2 system_stm32f1xx.o(i.SystemInit) - UART2_Print_Init 0x080025c1 Thumb Code 38 uart2_print.o(i.UART2_Print_Init) - UART2_Print_Printf 0x08002611 Thumb Code 62 uart2_print.o(i.UART2_Print_Printf) - UART2_Print_Send 0x08002651 Thumb Code 170 uart2_print.o(i.UART2_Print_Send) - UART2_Print_String 0x08002705 Thumb Code 28 uart2_print.o(i.UART2_Print_String) - UART2_Print_Task 0x08002721 Thumb Code 98 uart2_print.o(i.UART2_Print_Task) - UART2_Print_TxCpltCallback 0x0800278d Thumb Code 98 uart2_print.o(i.UART2_Print_TxCpltCallback) - UART_Start_Receive_IT 0x08002a91 Thumb Code 64 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) - USART1_IRQHandler 0x08002bc5 Thumb Code 10 stm32f1xx_it.o(i.USART1_IRQHandler) - USART2_IRQHandler 0x08002bd5 Thumb Code 10 stm32f1xx_it.o(i.USART2_IRQHandler) - USART3_IRQHandler 0x08002be5 Thumb Code 10 stm32f1xx_it.o(i.USART3_IRQHandler) - UsageFault_Handler 0x08002bf5 Thumb Code 4 stm32f1xx_it.o(i.UsageFault_Handler) - __0printf 0x08002bf9 Thumb Code 22 printfa.o(i.__0printf) - __1printf 0x08002bf9 Thumb Code 0 printfa.o(i.__0printf) - __2printf 0x08002bf9 Thumb Code 0 printfa.o(i.__0printf) - __c89printf 0x08002bf9 Thumb Code 0 printfa.o(i.__0printf) - printf 0x08002bf9 Thumb Code 0 printfa.o(i.__0printf) - __0snprintf 0x08002c19 Thumb Code 48 printfa.o(i.__0snprintf) - __1snprintf 0x08002c19 Thumb Code 0 printfa.o(i.__0snprintf) - __2snprintf 0x08002c19 Thumb Code 0 printfa.o(i.__0snprintf) - __c89snprintf 0x08002c19 Thumb Code 0 printfa.o(i.__0snprintf) - snprintf 0x08002c19 Thumb Code 0 printfa.o(i.__0snprintf) - __0vsnprintf 0x08002c4d Thumb Code 46 printfa.o(i.__0vsnprintf) - __1vsnprintf 0x08002c4d Thumb Code 0 printfa.o(i.__0vsnprintf) - __2vsnprintf 0x08002c4d Thumb Code 0 printfa.o(i.__0vsnprintf) - __c89vsnprintf 0x08002c4d Thumb Code 0 printfa.o(i.__0vsnprintf) - vsnprintf 0x08002c4d Thumb Code 0 printfa.o(i.__0vsnprintf) - __aeabi_errno_addr 0x08002cb9 Thumb Code 4 errno.o(i.__aeabi_errno_addr) - __rt_errno_addr 0x08002cb9 Thumb Code 0 errno.o(i.__aeabi_errno_addr) - __scatterload_copy 0x08002cc1 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x08002ccf Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x08002cd1 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - fputc 0x080035b5 Thumb Code 16 uart2_print.o(i.fputc) - gpio_led_tx_off 0x080035c5 Thumb Code 16 gpio.o(i.gpio_led_tx_off) - gpio_led_tx_on 0x080035d9 Thumb Code 14 gpio.o(i.gpio_led_tx_on) - main 0x080036cd Thumb Code 142 main.o(i.main) - rf433_hal_1ms_callback 0x08003be9 Thumb Code 30 rf433_hal.o(i.rf433_hal_1ms_callback) - rf433_hal_aux_wait 0x08003c11 Thumb Code 58 rf433_hal.o(i.rf433_hal_aux_wait) - rf433_hal_deinit 0x08003c51 Thumb Code 22 rf433_hal.o(i.rf433_hal_deinit) - rf433_hal_init 0x08003c6d Thumb Code 36 rf433_hal.o(i.rf433_hal_init) - rf433_hal_set_work_mode 0x08003ca1 Thumb Code 150 rf433_hal.o(i.rf433_hal_set_work_mode) - rf433_hal_uart_rxcplt_callback 0x08003d41 Thumb Code 38 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) - rf433_hal_uart_tx 0x08003d75 Thumb Code 44 rf433_hal.o(i.rf433_hal_uart_tx) - rf433_init 0x08003da5 Thumb Code 84 rf433.o(i.rf433_init) - rf433_set_config 0x08003e29 Thumb Code 84 rf433.o(i.rf433_set_config) - rf433_set_work_mode 0x08003e81 Thumb Code 24 rf433.o(i.rf433_set_work_mode) - rf433_transmit 0x08003e99 Thumb Code 58 rf433.o(i.rf433_transmit) - rf433_tx_app_init 0x08003ee5 Thumb Code 70 rf433_tx_app.o(i.rf433_tx_app_init) - rf433_tx_app_start 0x08003f31 Thumb Code 40 rf433_tx_app.o(i.rf433_tx_app_start) - rf433_tx_app_task 0x08003f5d Thumb Code 206 rf433_tx_app.o(i.rf433_tx_app_task) - systick_interrupt_1ms_callback 0x0800415d Thumb Code 24 systick.o(i.systick_interrupt_1ms_callback) - uart1_rx_timeout_1ms_callback 0x080041d3 Thumb Code 8 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) - AHBPrescTable 0x080041ec Data 16 system_stm32f1xx.o(.constdata) - APBPrescTable 0x080041fc Data 8 system_stm32f1xx.o(.constdata) - __ctype_table 0x08004225 Data 129 ctype_o.o(.constdata) - Region$$Table$$Base 0x080042ac Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x080042cc Number 0 anon$$obj.o(Region$$Table) - uwTick 0x2000005c Data 4 stm32f1xx_hal.o(.data) - uwTickPrio 0x20000060 Data 4 stm32f1xx_hal.o(.data) - uwTickFreq 0x20000064 Data 1 stm32f1xx_hal.o(.data) - SystemCoreClock 0x20000068 Data 4 system_stm32f1xx.o(.data) - rf433_uart_rx_tmp 0x20000084 Data 1 rf433_hal.o(.data) - __stdout 0x20000090 Data 4 stdout.o(.data) - hspi2 0x200000b4 Data 88 spi.o(.bss) - huart1 0x2000010c Data 72 usart.o(.bss) - huart2 0x20000154 Data 72 usart.o(.bss) - huart3 0x2000019c Data 72 usart.o(.bss) - __initial_sp 0x20000f50 Data 0 startup_stm32f103xb.o(STACK) + isspace 0x08000151 Thumb Code 18 isspace_o.o(.text) + __aeabi_memcpy 0x08000163 Thumb Code 36 memcpya.o(.text) + __aeabi_memcpy4 0x08000163 Thumb Code 0 memcpya.o(.text) + __aeabi_memcpy8 0x08000163 Thumb Code 0 memcpya.o(.text) + __aeabi_memset 0x08000187 Thumb Code 14 memseta.o(.text) + __aeabi_memset4 0x08000187 Thumb Code 0 memseta.o(.text) + __aeabi_memset8 0x08000187 Thumb Code 0 memseta.o(.text) + __aeabi_memclr 0x08000195 Thumb Code 4 memseta.o(.text) + __aeabi_memclr4 0x08000195 Thumb Code 0 memseta.o(.text) + __aeabi_memclr8 0x08000195 Thumb Code 0 memseta.o(.text) + _memset$wrapper 0x08000199 Thumb Code 18 memseta.o(.text) + strlen 0x080001ab Thumb Code 14 strlen.o(.text) + strcmp 0x080001b9 Thumb Code 28 strcmp.o(.text) + strncmp 0x080001d5 Thumb Code 30 strncmp.o(.text) + __0sscanf 0x080001f5 Thumb Code 48 __0sscanf.o(.text) + _scanf_int 0x0800022d Thumb Code 332 _scanf_int.o(.text) + atoi 0x08000379 Thumb Code 26 atoi.o(.text) + __aeabi_uidiv 0x08000393 Thumb Code 0 uidiv.o(.text) + __aeabi_uidivmod 0x08000393 Thumb Code 44 uidiv.o(.text) + __aeabi_uldivmod 0x080003bf Thumb Code 98 uldiv.o(.text) + _chval 0x08000421 Thumb Code 28 _chval.o(.text) + __vfscanf_char 0x08000449 Thumb Code 20 scanf_char.o(.text) + _sgetc 0x08000465 Thumb Code 30 _sgetc.o(.text) + _sbackspace 0x08000483 Thumb Code 34 _sgetc.o(.text) + strtol 0x080004a5 Thumb Code 112 strtol.o(.text) + __I$use$fp 0x08000515 Thumb Code 0 iusefp.o(.text) + __aeabi_dadd 0x08000515 Thumb Code 322 dadd.o(.text) + __aeabi_dsub 0x08000657 Thumb Code 6 dadd.o(.text) + __aeabi_drsub 0x0800065d Thumb Code 6 dadd.o(.text) + __aeabi_dmul 0x08000663 Thumb Code 228 dmul.o(.text) + __aeabi_ddiv 0x08000747 Thumb Code 222 ddiv.o(.text) + __aeabi_d2ulz 0x08000825 Thumb Code 48 dfixul.o(.text) + __aeabi_cdrcmple 0x08000855 Thumb Code 48 cdrcmple.o(.text) + __scatterload 0x08000885 Thumb Code 28 init.o(.text) + __scatterload_rt2 0x08000885 Thumb Code 0 init.o(.text) + __aeabi_llsl 0x080008a9 Thumb Code 30 llshl.o(.text) + _ll_shift_l 0x080008a9 Thumb Code 0 llshl.o(.text) + __aeabi_lasr 0x080008c7 Thumb Code 36 llsshr.o(.text) + _ll_sshift_r 0x080008c7 Thumb Code 0 llsshr.o(.text) + __vfscanf 0x080008ed Thumb Code 810 _scanf.o(.text) + _strtoul 0x08000c1d Thumb Code 158 _strtoul.o(.text) + _double_round 0x08000cbb Thumb Code 30 depilogue.o(.text) + _double_epilogue 0x08000cd9 Thumb Code 156 depilogue.o(.text) + BusFault_Handler 0x08000d75 Thumb Code 4 stm32f1xx_it.o(i.BusFault_Handler) + CmdParser_FeedByte 0x08000d79 Thumb Code 730 cmd_parser.o(i.CmdParser_FeedByte) + CmdParser_HasCompleteFrame 0x080010a9 Thumb Code 42 cmd_parser.o(i.CmdParser_HasCompleteFrame) + CmdParser_Init 0x080010d9 Thumb Code 24 cmd_parser.o(i.CmdParser_Init) + CmdParser_SetResponseCallback 0x08001105 Thumb Code 6 cmd_parser.o(i.CmdParser_SetResponseCallback) + CmdParser_SetSourcePort 0x08001111 Thumb Code 6 cmd_parser.o(i.CmdParser_SetSourcePort) + CmdParser_Task 0x0800111d Thumb Code 32 cmd_parser.o(i.CmdParser_Task) + CmdRouter_Init 0x08001141 Thumb Code 96 cmd_router.o(i.CmdRouter_Init) + CmdRouter_Task 0x080011e9 Thumb Code 196 cmd_router.o(i.CmdRouter_Task) + DebugLog_Init 0x080012c1 Thumb Code 20 debug_log.o(i.DebugLog_Init) + DebugLog_Output 0x08001301 Thumb Code 148 debug_log.o(i.DebugLog_Output) + DebugMon_Handler 0x080013b1 Thumb Code 2 stm32f1xx_it.o(i.DebugMon_Handler) + Error_Handler 0x080013b3 Thumb Code 6 main.o(i.Error_Handler) + HAL_DMA_Abort 0x080013b9 Thumb Code 86 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) + HAL_DMA_Abort_IT 0x08001411 Thumb Code 172 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) + HAL_Delay 0x080014c1 Thumb Code 36 stm32f1xx_hal.o(i.HAL_Delay) + HAL_GPIO_Init 0x080014e9 Thumb Code 766 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) + HAL_GPIO_ReadPin 0x08001809 Thumb Code 16 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) + HAL_GPIO_WritePin 0x08001819 Thumb Code 12 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) + HAL_GetTick 0x08001825 Thumb Code 6 stm32f1xx_hal.o(i.HAL_GetTick) + HAL_IncTick 0x08001831 Thumb Code 16 stm32f1xx_hal.o(i.HAL_IncTick) + HAL_Init 0x08001849 Thumb Code 34 stm32f1xx_hal.o(i.HAL_Init) + HAL_InitTick 0x08001871 Thumb Code 64 stm32f1xx_hal.o(i.HAL_InitTick) + HAL_MspInit 0x080018bd Thumb Code 76 stm32f1xx_hal_msp.o(i.HAL_MspInit) + HAL_NVIC_EnableIRQ 0x08001911 Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + HAL_NVIC_SetPriority 0x08001931 Thumb Code 124 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + HAL_NVIC_SetPriorityGrouping 0x080019ad Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) + HAL_RCC_ClockConfig 0x080019d5 Thumb Code 376 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + HAL_RCC_GetHCLKFreq 0x08001b61 Thumb Code 6 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + HAL_RCC_GetPCLK1Freq 0x08001b6d Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + HAL_RCC_GetPCLK2Freq 0x08001b8d Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) + HAL_RCC_GetSysClockFreq 0x08001bad Thumb Code 92 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + HAL_RCC_OscConfig 0x08001c1d Thumb Code 1114 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) + HAL_SPI_Init 0x08002081 Thumb Code 190 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) + HAL_SPI_MspInit 0x08002141 Thumb Code 124 spi.o(i.HAL_SPI_MspInit) + HAL_SYSTICK_Config 0x080021c9 Thumb Code 52 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) + HAL_UARTEx_RxEventCallback 0x080021fd Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) + HAL_UART_ErrorCallback 0x080021ff Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) + HAL_UART_IRQHandler 0x08002201 Thumb Code 736 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) + HAL_UART_Init 0x080024e5 Thumb Code 118 stm32f1xx_hal_uart.o(i.HAL_UART_Init) + HAL_UART_MspInit 0x0800255d Thumb Code 376 usart.o(i.HAL_UART_MspInit) + HAL_UART_Receive_IT 0x080026ed Thumb Code 44 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) + HAL_UART_RxCpltCallback 0x08002719 Thumb Code 96 main.o(i.HAL_UART_RxCpltCallback) + HAL_UART_Transmit 0x08002799 Thumb Code 178 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) + HAL_UART_Transmit_IT 0x0800284b Thumb Code 56 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) + HAL_UART_TxCpltCallback 0x08002885 Thumb Code 50 main.o(i.HAL_UART_TxCpltCallback) + HardFault_Handler 0x080028c5 Thumb Code 4 stm32f1xx_it.o(i.HardFault_Handler) + IO_Monitor_GetAllStates 0x080028c9 Thumb Code 34 io_monitor.o(i.IO_Monitor_GetAllStates) + IO_Monitor_GetState 0x080028f1 Thumb Code 20 io_monitor.o(i.IO_Monitor_GetState) + IO_Monitor_Init 0x08002909 Thumb Code 76 io_monitor.o(i.IO_Monitor_Init) + IO_Monitor_Task 0x08002989 Thumb Code 122 io_monitor.o(i.IO_Monitor_Task) + MX_GPIO_Init 0x08002a11 Thumb Code 258 gpio.o(i.MX_GPIO_Init) + MX_SPI2_Init 0x08002b21 Thumb Code 58 spi.o(i.MX_SPI2_Init) + MX_USART1_UART_Init 0x08002b65 Thumb Code 46 usart.o(i.MX_USART1_UART_Init) + MX_USART2_UART_Init 0x08002b9d Thumb Code 46 usart.o(i.MX_USART2_UART_Init) + MX_USART3_UART_Init 0x08002bd5 Thumb Code 46 usart.o(i.MX_USART3_UART_Init) + MemManage_Handler 0x08002c0d Thumb Code 4 stm32f1xx_it.o(i.MemManage_Handler) + MultiUART_FeedByte 0x08002c11 Thumb Code 74 multi_uart_router.o(i.MultiUART_FeedByte) + MultiUART_GetPortName 0x08002c7d Thumb Code 18 multi_uart_router.o(i.MultiUART_GetPortName) + MultiUART_GetRxCount 0x08002c9d Thumb Code 32 multi_uart_router.o(i.MultiUART_GetRxCount) + MultiUART_Init 0x08002cc1 Thumb Code 86 multi_uart_router.o(i.MultiUART_Init) + MultiUART_ReadByte 0x08002d4d Thumb Code 86 multi_uart_router.o(i.MultiUART_ReadByte) + MultiUART_Send 0x08002da9 Thumb Code 96 multi_uart_router.o(i.MultiUART_Send) + MultiUART_SendString 0x08002e0d Thumb Code 32 multi_uart_router.o(i.MultiUART_SendString) + MultiUART_Task 0x08002e2d Thumb Code 48 multi_uart_router.o(i.MultiUART_Task) + MultiUART_TxCpltCallback 0x08002e61 Thumb Code 116 multi_uart_router.o(i.MultiUART_TxCpltCallback) + NMI_Handler 0x08002ed9 Thumb Code 4 stm32f1xx_it.o(i.NMI_Handler) + PendSV_Handler 0x08002edd Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) + Relay_Init 0x08002f09 Thumb Code 32 relay_control.o(i.Relay_Init) + Relay_SetState 0x08002f55 Thumb Code 94 relay_control.o(i.Relay_SetState) + SVC_Handler 0x08003025 Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) + SysTick_Handler 0x08003027 Thumb Code 12 stm32f1xx_it.o(i.SysTick_Handler) + SystemClock_Config 0x08003033 Thumb Code 102 main.o(i.SystemClock_Config) + SystemInit 0x08003099 Thumb Code 2 system_stm32f1xx.o(i.SystemInit) + UART2_Print_Init 0x0800309d Thumb Code 38 uart2_print.o(i.UART2_Print_Init) + UART2_Print_Printf 0x080030ed Thumb Code 62 uart2_print.o(i.UART2_Print_Printf) + UART2_Print_Send 0x0800312d Thumb Code 170 uart2_print.o(i.UART2_Print_Send) + UART2_Print_String 0x080031e1 Thumb Code 28 uart2_print.o(i.UART2_Print_String) + UART2_Print_Task 0x080031fd Thumb Code 98 uart2_print.o(i.UART2_Print_Task) + UART2_Print_TxCpltCallback 0x08003269 Thumb Code 98 uart2_print.o(i.UART2_Print_TxCpltCallback) + UART_Start_Receive_IT 0x0800356d Thumb Code 64 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) + USART1_IRQHandler 0x080036a1 Thumb Code 10 stm32f1xx_it.o(i.USART1_IRQHandler) + USART2_IRQHandler 0x080036b1 Thumb Code 10 stm32f1xx_it.o(i.USART2_IRQHandler) + USART3_IRQHandler 0x080036c1 Thumb Code 10 stm32f1xx_it.o(i.USART3_IRQHandler) + UsageFault_Handler 0x080036d1 Thumb Code 4 stm32f1xx_it.o(i.UsageFault_Handler) + __0printf 0x080036d5 Thumb Code 22 printfa.o(i.__0printf) + __1printf 0x080036d5 Thumb Code 0 printfa.o(i.__0printf) + __2printf 0x080036d5 Thumb Code 0 printfa.o(i.__0printf) + __c89printf 0x080036d5 Thumb Code 0 printfa.o(i.__0printf) + printf 0x080036d5 Thumb Code 0 printfa.o(i.__0printf) + __0snprintf 0x080036f5 Thumb Code 48 printfa.o(i.__0snprintf) + __1snprintf 0x080036f5 Thumb Code 0 printfa.o(i.__0snprintf) + __2snprintf 0x080036f5 Thumb Code 0 printfa.o(i.__0snprintf) + __c89snprintf 0x080036f5 Thumb Code 0 printfa.o(i.__0snprintf) + snprintf 0x080036f5 Thumb Code 0 printfa.o(i.__0snprintf) + __0vsnprintf 0x08003729 Thumb Code 46 printfa.o(i.__0vsnprintf) + __1vsnprintf 0x08003729 Thumb Code 0 printfa.o(i.__0vsnprintf) + __2vsnprintf 0x08003729 Thumb Code 0 printfa.o(i.__0vsnprintf) + __c89vsnprintf 0x08003729 Thumb Code 0 printfa.o(i.__0vsnprintf) + vsnprintf 0x08003729 Thumb Code 0 printfa.o(i.__0vsnprintf) + __aeabi_errno_addr 0x08003795 Thumb Code 4 errno.o(i.__aeabi_errno_addr) + __rt_errno_addr 0x08003795 Thumb Code 0 errno.o(i.__aeabi_errno_addr) + __scatterload_copy 0x0800379d Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x080037ab Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x080037ad Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + fputc 0x0800421d Thumb Code 16 uart2_print.o(i.fputc) + gpio_led_rx_off 0x0800422d Thumb Code 14 gpio.o(i.gpio_led_rx_off) + gpio_led_rx_on 0x08004241 Thumb Code 14 gpio.o(i.gpio_led_rx_on) + gpio_led_tx_off 0x08004255 Thumb Code 16 gpio.o(i.gpio_led_tx_off) + gpio_led_tx_on 0x08004269 Thumb Code 14 gpio.o(i.gpio_led_tx_on) + main 0x080043e1 Thumb Code 186 main.o(i.main) + rf433_hal_1ms_callback 0x080049a1 Thumb Code 30 rf433_hal.o(i.rf433_hal_1ms_callback) + rf433_hal_aux_wait 0x080049c9 Thumb Code 58 rf433_hal.o(i.rf433_hal_aux_wait) + rf433_hal_deinit 0x08004a09 Thumb Code 22 rf433_hal.o(i.rf433_hal_deinit) + rf433_hal_fifo_clear 0x08004a25 Thumb Code 8 rf433_hal.o(i.rf433_hal_fifo_clear) + rf433_hal_fifo_get_length 0x08004a2d Thumb Code 12 rf433_hal.o(i.rf433_hal_fifo_get_length) + rf433_hal_fifo_read 0x08004a39 Thumb Code 20 rf433_hal.o(i.rf433_hal_fifo_read) + rf433_hal_init 0x08004a4d Thumb Code 36 rf433_hal.o(i.rf433_hal_init) + rf433_hal_set_work_mode 0x08004a81 Thumb Code 150 rf433_hal.o(i.rf433_hal_set_work_mode) + rf433_hal_uart_rxcplt_callback 0x08004b21 Thumb Code 38 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) + rf433_hal_uart_tx 0x08004b55 Thumb Code 44 rf433_hal.o(i.rf433_hal_uart_tx) + rf433_init 0x08004b85 Thumb Code 84 rf433.o(i.rf433_init) + rf433_rx_app_init 0x08004be5 Thumb Code 74 rf433_rx_app.o(i.rf433_rx_app_init) + rf433_rx_app_parse_packet 0x08004c35 Thumb Code 72 rf433_rx_app.o(i.rf433_rx_app_parse_packet) + rf433_rx_app_start 0x08004c85 Thumb Code 28 rf433_rx_app.o(i.rf433_rx_app_start) + rf433_rx_app_task 0x08004ca5 Thumb Code 154 rf433_rx_app.o(i.rf433_rx_app_task) + rf433_rx_start 0x08004d45 Thumb Code 50 rf433.o(i.rf433_rx_start) + rf433_set_config 0x08004da5 Thumb Code 84 rf433.o(i.rf433_set_config) + rf433_set_work_mode 0x08004dfd Thumb Code 24 rf433.o(i.rf433_set_work_mode) + rf433_transmit 0x08004e15 Thumb Code 50 rf433.o(i.rf433_transmit) + rf433_tx_app_init 0x08004e4d Thumb Code 70 rf433_tx_app.o(i.rf433_tx_app_init) + rf433_tx_app_start 0x08004e99 Thumb Code 40 rf433_tx_app.o(i.rf433_tx_app_start) + rf433_tx_app_task 0x08004ec5 Thumb Code 206 rf433_tx_app.o(i.rf433_tx_app_task) + systick_interrupt_1ms_callback 0x080051b9 Thumb Code 24 systick.o(i.systick_interrupt_1ms_callback) + uart1_check_rx_done 0x0800530d Thumb Code 76 rf433_hal.o(i.uart1_check_rx_done) + uart1_rx_timeout_1ms_callback 0x0800535d Thumb Code 8 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) + AHBPrescTable 0x0800539e Data 16 system_stm32f1xx.o(.constdata) + APBPrescTable 0x080053ae Data 8 system_stm32f1xx.o(.constdata) + __ctype_table 0x080053d7 Data 129 ctype_o.o(.constdata) + Region$$Table$$Base 0x08005494 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x080054b4 Number 0 anon$$obj.o(Region$$Table) + uwTick 0x2000007c Data 4 stm32f1xx_hal.o(.data) + uwTickPrio 0x20000080 Data 4 stm32f1xx_hal.o(.data) + uwTickFreq 0x20000084 Data 1 stm32f1xx_hal.o(.data) + SystemCoreClock 0x20000088 Data 4 system_stm32f1xx.o(.data) + rf433_uart_rx_tmp 0x200000ac Data 1 rf433_hal.o(.data) + __stdout 0x200000b8 Data 4 stdout.o(.data) + hspi2 0x20000104 Data 88 spi.o(.bss) + huart1 0x2000015c Data 72 usart.o(.bss) + huart2 0x200001a4 Data 72 usart.o(.bss) + huart3 0x200001ec Data 72 usart.o(.bss) + __initial_sp 0x20001770 Data 0 startup_stm32f103xb.o(STACK) @@ -1859,222 +2188,285 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00004364, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00005574, Max: 0x00010000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000042cc, Max: 0x00010000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000054b4, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x08000000 0x08000000 0x000000ec Data RO 3 RESET startup_stm32f103xb.o - 0x080000ec 0x080000ec 0x00000000 Code RO 2970 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x080000ec 0x080000ec 0x00000004 Code RO 3278 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x080000f0 0x080000f0 0x00000004 Code RO 3281 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 3283 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 3285 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x080000f4 0x080000f4 0x00000008 Code RO 3286 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x080000fc 0x080000fc 0x00000004 Code RO 3293 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) - 0x08000100 0x08000100 0x00000000 Code RO 3288 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) - 0x08000100 0x08000100 0x00000000 Code RO 3290 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) - 0x08000100 0x08000100 0x00000004 Code RO 3279 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) + 0x080000ec 0x080000ec 0x00000000 Code RO 3366 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x080000ec 0x080000ec 0x00000004 Code RO 3680 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) + 0x080000f0 0x080000f0 0x00000004 Code RO 3683 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 3685 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 3687 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x080000f4 0x080000f4 0x00000008 Code RO 3688 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x080000fc 0x080000fc 0x00000004 Code RO 3695 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) + 0x08000100 0x08000100 0x00000000 Code RO 3690 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) + 0x08000100 0x08000100 0x00000000 Code RO 3692 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) + 0x08000100 0x08000100 0x00000004 Code RO 3681 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) 0x08000104 0x08000104 0x00000024 Code RO 4 .text startup_stm32f103xb.o - 0x08000128 0x08000128 0x00000020 Code RO 2973 .text mc_w.l(llushr.o) - 0x08000148 0x08000148 0x00000008 Code RO 2975 .text mc_w.l(ctype_o.o) - 0x08000150 0x08000150 0x00000024 Code RO 3005 .text mc_w.l(memseta.o) - 0x08000174 0x08000174 0x0000000e Code RO 3007 .text mc_w.l(strlen.o) - 0x08000182 0x08000182 0x0000001c Code RO 3009 .text mc_w.l(strcmp.o) - 0x0800019e 0x0800019e 0x0000001a Code RO 3276 .text mc_w.l(atoi.o) - 0x080001b8 0x080001b8 0x0000002c Code RO 3295 .text mc_w.l(uidiv.o) - 0x080001e4 0x080001e4 0x00000062 Code RO 3297 .text mc_w.l(uldiv.o) - 0x08000246 0x08000246 0x00000070 Code RO 3306 .text mc_w.l(strtol.o) - 0x080002b6 0x080002b6 0x00000000 Code RO 3308 .text mc_w.l(iusefp.o) - 0x080002b6 0x080002b6 0x0000014e Code RO 3309 .text mf_w.l(dadd.o) - 0x08000404 0x08000404 0x000000e4 Code RO 3311 .text mf_w.l(dmul.o) - 0x080004e8 0x080004e8 0x000000de Code RO 3313 .text mf_w.l(ddiv.o) - 0x080005c6 0x080005c6 0x00000030 Code RO 3315 .text mf_w.l(dfixul.o) - 0x080005f6 0x080005f6 0x00000002 PAD - 0x080005f8 0x080005f8 0x00000030 Code RO 3317 .text mf_w.l(cdrcmple.o) - 0x08000628 0x08000628 0x00000024 Code RO 3319 .text mc_w.l(init.o) - 0x0800064c 0x0800064c 0x0000001e Code RO 3321 .text mc_w.l(llshl.o) - 0x0800066a 0x0800066a 0x00000024 Code RO 3323 .text mc_w.l(llsshr.o) - 0x0800068e 0x0800068e 0x0000009e Code RO 3325 .text mc_w.l(_strtoul.o) - 0x0800072c 0x0800072c 0x000000ba Code RO 3327 .text mf_w.l(depilogue.o) - 0x080007e6 0x080007e6 0x0000001c Code RO 3329 .text mc_w.l(_chval.o) - 0x08000802 0x08000802 0x00000004 Code RO 483 i.BusFault_Handler stm32f1xx_it.o - 0x08000806 0x08000806 0x00000002 PAD - 0x08000808 0x08000808 0x00000330 Code RO 599 i.CmdParser_FeedByte cmd_parser.o - 0x08000b38 0x08000b38 0x0000002c Code RO 603 i.CmdParser_Init cmd_parser.o - 0x08000b64 0x08000b64 0x00000024 Code RO 604 i.CmdParser_Task cmd_parser.o - 0x08000b88 0x08000b88 0x00000002 Code RO 484 i.DebugMon_Handler stm32f1xx_it.o - 0x08000b8a 0x08000b8a 0x00000006 Code RO 259 i.Error_Handler main.o - 0x08000b90 0x08000b90 0x00000056 Code RO 1666 i.HAL_DMA_Abort stm32f1xx_hal_dma.o - 0x08000be6 0x08000be6 0x00000002 PAD - 0x08000be8 0x08000be8 0x000000b0 Code RO 1667 i.HAL_DMA_Abort_IT stm32f1xx_hal_dma.o - 0x08000c98 0x08000c98 0x00000028 Code RO 1287 i.HAL_Delay stm32f1xx_hal.o - 0x08000cc0 0x08000cc0 0x00000320 Code RO 1602 i.HAL_GPIO_Init stm32f1xx_hal_gpio.o - 0x08000fe0 0x08000fe0 0x00000010 Code RO 1604 i.HAL_GPIO_ReadPin stm32f1xx_hal_gpio.o - 0x08000ff0 0x08000ff0 0x0000000c Code RO 1606 i.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o - 0x08000ffc 0x08000ffc 0x0000000c Code RO 1291 i.HAL_GetTick stm32f1xx_hal.o - 0x08001008 0x08001008 0x00000018 Code RO 1297 i.HAL_IncTick stm32f1xx_hal.o - 0x08001020 0x08001020 0x00000028 Code RO 1298 i.HAL_Init stm32f1xx_hal.o - 0x08001048 0x08001048 0x0000004c Code RO 1299 i.HAL_InitTick stm32f1xx_hal.o - 0x08001094 0x08001094 0x00000054 Code RO 577 i.HAL_MspInit stm32f1xx_hal_msp.o - 0x080010e8 0x080010e8 0x00000020 Code RO 1762 i.HAL_NVIC_EnableIRQ stm32f1xx_hal_cortex.o - 0x08001108 0x08001108 0x0000007c Code RO 1768 i.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x08001184 0x08001184 0x00000028 Code RO 1769 i.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o - 0x080011ac 0x080011ac 0x0000018c Code RO 1455 i.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o - 0x08001338 0x08001338 0x0000000c Code RO 1460 i.HAL_RCC_GetHCLKFreq stm32f1xx_hal_rcc.o - 0x08001344 0x08001344 0x00000020 Code RO 1462 i.HAL_RCC_GetPCLK1Freq stm32f1xx_hal_rcc.o - 0x08001364 0x08001364 0x00000020 Code RO 1463 i.HAL_RCC_GetPCLK2Freq stm32f1xx_hal_rcc.o - 0x08001384 0x08001384 0x00000070 Code RO 1464 i.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o - 0x080013f4 0x080013f4 0x00000464 Code RO 1467 i.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o - 0x08001858 0x08001858 0x000000be Code RO 969 i.HAL_SPI_Init stm32f1xx_hal_spi.o - 0x08001916 0x08001916 0x00000002 PAD - 0x08001918 0x08001918 0x00000088 Code RO 378 i.HAL_SPI_MspInit spi.o - 0x080019a0 0x080019a0 0x00000034 Code RO 1773 i.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o - 0x080019d4 0x080019d4 0x00000002 Code RO 2336 i.HAL_UARTEx_RxEventCallback stm32f1xx_hal_uart.o - 0x080019d6 0x080019d6 0x00000002 Code RO 2350 i.HAL_UART_ErrorCallback stm32f1xx_hal_uart.o - 0x080019d8 0x080019d8 0x000002e4 Code RO 2353 i.HAL_UART_IRQHandler stm32f1xx_hal_uart.o - 0x08001cbc 0x08001cbc 0x00000076 Code RO 2354 i.HAL_UART_Init stm32f1xx_hal_uart.o - 0x08001d32 0x08001d32 0x00000002 PAD - 0x08001d34 0x08001d34 0x00000190 Code RO 420 i.HAL_UART_MspInit usart.o - 0x08001ec4 0x08001ec4 0x0000002c Code RO 2359 i.HAL_UART_Receive_IT stm32f1xx_hal_uart.o - 0x08001ef0 0x08001ef0 0x00000048 Code RO 260 i.HAL_UART_RxCpltCallback main.o - 0x08001f38 0x08001f38 0x000000b2 Code RO 2362 i.HAL_UART_Transmit stm32f1xx_hal_uart.o - 0x08001fea 0x08001fea 0x00000038 Code RO 2364 i.HAL_UART_Transmit_IT stm32f1xx_hal_uart.o - 0x08002022 0x08002022 0x00000002 PAD - 0x08002024 0x08002024 0x00000018 Code RO 261 i.HAL_UART_TxCpltCallback main.o - 0x0800203c 0x0800203c 0x00000004 Code RO 485 i.HardFault_Handler stm32f1xx_it.o - 0x08002040 0x08002040 0x00000028 Code RO 720 i.IO_Monitor_GetAllStates io_monitor.o - 0x08002068 0x08002068 0x00000018 Code RO 722 i.IO_Monitor_GetState io_monitor.o - 0x08002080 0x08002080 0x00000080 Code RO 723 i.IO_Monitor_Init io_monitor.o - 0x08002100 0x08002100 0x00000088 Code RO 724 i.IO_Monitor_Task io_monitor.o - 0x08002188 0x08002188 0x00000110 Code RO 329 i.MX_GPIO_Init gpio.o - 0x08002298 0x08002298 0x00000044 Code RO 379 i.MX_SPI2_Init spi.o - 0x080022dc 0x080022dc 0x00000038 Code RO 421 i.MX_USART1_UART_Init usart.o - 0x08002314 0x08002314 0x00000038 Code RO 422 i.MX_USART2_UART_Init usart.o - 0x0800234c 0x0800234c 0x00000038 Code RO 423 i.MX_USART3_UART_Init usart.o - 0x08002384 0x08002384 0x00000004 Code RO 486 i.MemManage_Handler stm32f1xx_it.o - 0x08002388 0x08002388 0x00000004 Code RO 487 i.NMI_Handler stm32f1xx_it.o - 0x0800238c 0x0800238c 0x00000002 Code RO 488 i.PendSV_Handler stm32f1xx_it.o - 0x0800238e 0x0800238e 0x00000002 PAD - 0x08002390 0x08002390 0x00000028 Code RO 1468 i.RCC_Delay stm32f1xx_hal_rcc.o - 0x080023b8 0x080023b8 0x00000060 Code RO 787 i.Relay_Init relay_control.o - 0x08002418 0x08002418 0x00000130 Code RO 788 i.Relay_SetState relay_control.o - 0x08002548 0x08002548 0x00000002 Code RO 489 i.SVC_Handler stm32f1xx_it.o - 0x0800254a 0x0800254a 0x0000000c Code RO 490 i.SysTick_Handler stm32f1xx_it.o - 0x08002556 0x08002556 0x00000066 Code RO 262 i.SystemClock_Config main.o - 0x080025bc 0x080025bc 0x00000002 Code RO 2698 i.SystemInit system_stm32f1xx.o - 0x080025be 0x080025be 0x00000002 PAD - 0x080025c0 0x080025c0 0x00000050 Code RO 837 i.UART2_Print_Init uart2_print.o - 0x08002610 0x08002610 0x0000003e Code RO 839 i.UART2_Print_Printf uart2_print.o - 0x0800264e 0x0800264e 0x00000002 PAD - 0x08002650 0x08002650 0x000000b4 Code RO 840 i.UART2_Print_Send uart2_print.o - 0x08002704 0x08002704 0x0000001c Code RO 841 i.UART2_Print_String uart2_print.o - 0x08002720 0x08002720 0x0000006c Code RO 842 i.UART2_Print_Task uart2_print.o - 0x0800278c 0x0800278c 0x0000006c Code RO 843 i.UART2_Print_TxCpltCallback uart2_print.o - 0x080027f8 0x080027f8 0x00000014 Code RO 2367 i.UART_DMAAbortOnError stm32f1xx_hal_uart.o - 0x0800280c 0x0800280c 0x0000006c Code RO 2377 i.UART_EndRxTransfer stm32f1xx_hal_uart.o - 0x08002878 0x08002878 0x00000020 Code RO 2378 i.UART_EndTransmit_IT stm32f1xx_hal_uart.o - 0x08002898 0x08002898 0x000000fc Code RO 2380 i.UART_Receive_IT stm32f1xx_hal_uart.o - 0x08002994 0x08002994 0x000000fc Code RO 2381 i.UART_SetConfig stm32f1xx_hal_uart.o - 0x08002a90 0x08002a90 0x00000040 Code RO 2383 i.UART_Start_Receive_IT stm32f1xx_hal_uart.o - 0x08002ad0 0x08002ad0 0x00000060 Code RO 2384 i.UART_Transmit_IT stm32f1xx_hal_uart.o - 0x08002b30 0x08002b30 0x00000092 Code RO 2385 i.UART_WaitOnFlagUntilTimeout stm32f1xx_hal_uart.o - 0x08002bc2 0x08002bc2 0x00000002 PAD - 0x08002bc4 0x08002bc4 0x00000010 Code RO 491 i.USART1_IRQHandler stm32f1xx_it.o - 0x08002bd4 0x08002bd4 0x00000010 Code RO 492 i.USART2_IRQHandler stm32f1xx_it.o - 0x08002be4 0x08002be4 0x00000010 Code RO 493 i.USART3_IRQHandler stm32f1xx_it.o - 0x08002bf4 0x08002bf4 0x00000004 Code RO 494 i.UsageFault_Handler stm32f1xx_it.o - 0x08002bf8 0x08002bf8 0x00000020 Code RO 3248 i.__0printf mc_w.l(printfa.o) - 0x08002c18 0x08002c18 0x00000034 Code RO 3249 i.__0snprintf mc_w.l(printfa.o) - 0x08002c4c 0x08002c4c 0x00000034 Code RO 3253 i.__0vsnprintf mc_w.l(printfa.o) - 0x08002c80 0x08002c80 0x00000010 Code RO 1775 i.__NVIC_GetPriorityGrouping stm32f1xx_hal_cortex.o - 0x08002c90 0x08002c90 0x00000028 Code RO 1776 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x08002cb8 0x08002cb8 0x00000008 Code RO 3299 i.__aeabi_errno_addr mc_w.l(errno.o) - 0x08002cc0 0x08002cc0 0x0000000e Code RO 3333 i.__scatterload_copy mc_w.l(handlers.o) - 0x08002cce 0x08002cce 0x00000002 Code RO 3334 i.__scatterload_null mc_w.l(handlers.o) - 0x08002cd0 0x08002cd0 0x0000000e Code RO 3335 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x08002cde 0x08002cde 0x00000002 PAD - 0x08002ce0 0x08002ce0 0x00000184 Code RO 3255 i._fp_digits mc_w.l(printfa.o) - 0x08002e64 0x08002e64 0x000006b4 Code RO 3256 i._printf_core mc_w.l(printfa.o) - 0x08003518 0x08003518 0x00000024 Code RO 3257 i._printf_post_padding mc_w.l(printfa.o) - 0x0800353c 0x0800353c 0x0000002e Code RO 3258 i._printf_pre_padding mc_w.l(printfa.o) - 0x0800356a 0x0800356a 0x00000016 Code RO 3259 i._snputc mc_w.l(printfa.o) - 0x08003580 0x08003580 0x0000001a Code RO 605 i.calc_checksum cmd_parser.o - 0x0800359a 0x0800359a 0x0000001a Code RO 725 i.calc_checksum io_monitor.o - 0x080035b4 0x080035b4 0x00000010 Code RO 844 i.fputc uart2_print.o - 0x080035c4 0x080035c4 0x00000014 Code RO 332 i.gpio_led_tx_off gpio.o - 0x080035d8 0x080035d8 0x00000014 Code RO 333 i.gpio_led_tx_on gpio.o - 0x080035ec 0x080035ec 0x00000036 Code RO 606 i.hex_char_to_val cmd_parser.o - 0x08003622 0x08003622 0x0000001c Code RO 607 i.hex_to_byte cmd_parser.o - 0x0800363e 0x0800363e 0x00000010 Code RO 608 i.is_str_empty cmd_parser.o - 0x0800364e 0x0800364e 0x00000030 Code RO 609 i.is_str_numeric cmd_parser.o - 0x0800367e 0x0800367e 0x00000026 Code RO 610 i.is_valid_cmd_char cmd_parser.o - 0x080036a4 0x080036a4 0x00000026 Code RO 611 i.is_valid_param_char cmd_parser.o - 0x080036ca 0x080036ca 0x00000002 PAD - 0x080036cc 0x080036cc 0x00000140 Code RO 263 i.main main.o - 0x0800380c 0x0800380c 0x00000358 Code RO 612 i.process_cmd_frame cmd_parser.o - 0x08003b64 0x08003b64 0x00000024 Code RO 613 i.reset_parser cmd_parser.o - 0x08003b88 0x08003b88 0x00000060 Code RO 2829 i.rf433_fifo_write rf433_hal.o - 0x08003be8 0x08003be8 0x00000028 Code RO 2830 i.rf433_hal_1ms_callback rf433_hal.o - 0x08003c10 0x08003c10 0x00000040 Code RO 2831 i.rf433_hal_aux_wait rf433_hal.o - 0x08003c50 0x08003c50 0x0000001c Code RO 2833 i.rf433_hal_deinit rf433_hal.o - 0x08003c6c 0x08003c6c 0x00000034 Code RO 2838 i.rf433_hal_init rf433_hal.o - 0x08003ca0 0x08003ca0 0x000000a0 Code RO 2840 i.rf433_hal_set_work_mode rf433_hal.o - 0x08003d40 0x08003d40 0x00000034 Code RO 2842 i.rf433_hal_uart_rxcplt_callback rf433_hal.o - 0x08003d74 0x08003d74 0x00000030 Code RO 2843 i.rf433_hal_uart_tx rf433_hal.o - 0x08003da4 0x08003da4 0x00000060 Code RO 2736 i.rf433_init rf433.o - 0x08003e04 0x08003e04 0x00000024 Code RO 2739 i.rf433_send_config_command rf433.o - 0x08003e28 0x08003e28 0x00000058 Code RO 2741 i.rf433_set_config rf433.o - 0x08003e80 0x08003e80 0x00000018 Code RO 2742 i.rf433_set_work_mode rf433.o - 0x08003e98 0x08003e98 0x0000004c Code RO 2743 i.rf433_transmit rf433.o - 0x08003ee4 0x08003ee4 0x0000004c Code RO 155 i.rf433_tx_app_init rf433_tx_app.o - 0x08003f30 0x08003f30 0x0000002c Code RO 158 i.rf433_tx_app_start rf433_tx_app.o - 0x08003f5c 0x08003f5c 0x000000d4 Code RO 160 i.rf433_tx_app_task rf433_tx_app.o - 0x08004030 0x08004030 0x00000090 Code RO 726 i.send_di_event io_monitor.o - 0x080040c0 0x080040c0 0x00000050 Code RO 614 i.send_response_err cmd_parser.o - 0x08004110 0x08004110 0x0000004c Code RO 615 i.send_response_ok cmd_parser.o - 0x0800415c 0x0800415c 0x0000001c Code RO 14 i.systick_interrupt_1ms_callback systick.o - 0x08004178 0x08004178 0x00000048 Code RO 161 i.tx_build_packet rf433_tx_app.o - 0x080041c0 0x080041c0 0x00000012 Code RO 162 i.tx_led_control rf433_tx_app.o - 0x080041d2 0x080041d2 0x00000008 Code RO 2845 i.uart1_rx_timeout_1ms_callback rf433_hal.o - 0x080041da 0x080041da 0x00000012 Data RO 1469 .constdata stm32f1xx_hal_rcc.o - 0x080041ec 0x080041ec 0x00000018 Data RO 2699 .constdata system_stm32f1xx.o - 0x08004204 0x08004204 0x00000021 Data RO 2746 .constdata rf433.o - 0x08004225 0x08004225 0x00000081 Data RO 2976 .constdata mc_w.l(ctype_o.o) - 0x080042a6 0x080042a6 0x00000002 PAD - 0x080042a8 0x080042a8 0x00000004 Data RO 2977 .constdata mc_w.l(ctype_o.o) - 0x080042ac 0x080042ac 0x00000020 Data RO 3331 Region$$Table anon$$obj.o + 0x08000128 0x08000128 0x00000020 Code RO 3369 .text mc_w.l(llushr.o) + 0x08000148 0x08000148 0x00000008 Code RO 3371 .text mc_w.l(ctype_o.o) + 0x08000150 0x08000150 0x00000012 Code RO 3393 .text mc_w.l(isspace_o.o) + 0x08000162 0x08000162 0x00000024 Code RO 3399 .text mc_w.l(memcpya.o) + 0x08000186 0x08000186 0x00000024 Code RO 3401 .text mc_w.l(memseta.o) + 0x080001aa 0x080001aa 0x0000000e Code RO 3405 .text mc_w.l(strlen.o) + 0x080001b8 0x080001b8 0x0000001c Code RO 3407 .text mc_w.l(strcmp.o) + 0x080001d4 0x080001d4 0x0000001e Code RO 3409 .text mc_w.l(strncmp.o) + 0x080001f2 0x080001f2 0x00000002 PAD + 0x080001f4 0x080001f4 0x00000038 Code RO 3674 .text mc_w.l(__0sscanf.o) + 0x0800022c 0x0800022c 0x0000014c Code RO 3676 .text mc_w.l(_scanf_int.o) + 0x08000378 0x08000378 0x0000001a Code RO 3678 .text mc_w.l(atoi.o) + 0x08000392 0x08000392 0x0000002c Code RO 3697 .text mc_w.l(uidiv.o) + 0x080003be 0x080003be 0x00000062 Code RO 3699 .text mc_w.l(uldiv.o) + 0x08000420 0x08000420 0x0000001c Code RO 3708 .text mc_w.l(_chval.o) + 0x0800043c 0x0800043c 0x00000028 Code RO 3710 .text mc_w.l(scanf_char.o) + 0x08000464 0x08000464 0x00000040 Code RO 3712 .text mc_w.l(_sgetc.o) + 0x080004a4 0x080004a4 0x00000070 Code RO 3714 .text mc_w.l(strtol.o) + 0x08000514 0x08000514 0x00000000 Code RO 3716 .text mc_w.l(iusefp.o) + 0x08000514 0x08000514 0x0000014e Code RO 3717 .text mf_w.l(dadd.o) + 0x08000662 0x08000662 0x000000e4 Code RO 3719 .text mf_w.l(dmul.o) + 0x08000746 0x08000746 0x000000de Code RO 3721 .text mf_w.l(ddiv.o) + 0x08000824 0x08000824 0x00000030 Code RO 3723 .text mf_w.l(dfixul.o) + 0x08000854 0x08000854 0x00000030 Code RO 3725 .text mf_w.l(cdrcmple.o) + 0x08000884 0x08000884 0x00000024 Code RO 3727 .text mc_w.l(init.o) + 0x080008a8 0x080008a8 0x0000001e Code RO 3729 .text mc_w.l(llshl.o) + 0x080008c6 0x080008c6 0x00000024 Code RO 3731 .text mc_w.l(llsshr.o) + 0x080008ea 0x080008ea 0x00000002 PAD + 0x080008ec 0x080008ec 0x00000330 Code RO 3735 .text mc_w.l(_scanf.o) + 0x08000c1c 0x08000c1c 0x0000009e Code RO 3737 .text mc_w.l(_strtoul.o) + 0x08000cba 0x08000cba 0x000000ba Code RO 3739 .text mf_w.l(depilogue.o) + 0x08000d74 0x08000d74 0x00000004 Code RO 567 i.BusFault_Handler stm32f1xx_it.o + 0x08000d78 0x08000d78 0x00000330 Code RO 683 i.CmdParser_FeedByte cmd_parser.o + 0x080010a8 0x080010a8 0x00000030 Code RO 686 i.CmdParser_HasCompleteFrame cmd_parser.o + 0x080010d8 0x080010d8 0x0000002c Code RO 687 i.CmdParser_Init cmd_parser.o + 0x08001104 0x08001104 0x0000000c Code RO 688 i.CmdParser_SetResponseCallback cmd_parser.o + 0x08001110 0x08001110 0x0000000c Code RO 689 i.CmdParser_SetSourcePort cmd_parser.o + 0x0800111c 0x0800111c 0x00000024 Code RO 690 i.CmdParser_Task cmd_parser.o + 0x08001140 0x08001140 0x000000a8 Code RO 1016 i.CmdRouter_Init cmd_router.o + 0x080011e8 0x080011e8 0x000000d8 Code RO 1019 i.CmdRouter_Task cmd_router.o + 0x080012c0 0x080012c0 0x00000040 Code RO 1090 i.DebugLog_Init debug_log.o + 0x08001300 0x08001300 0x000000b0 Code RO 1091 i.DebugLog_Output debug_log.o + 0x080013b0 0x080013b0 0x00000002 Code RO 568 i.DebugMon_Handler stm32f1xx_it.o + 0x080013b2 0x080013b2 0x00000006 Code RO 334 i.Error_Handler main.o + 0x080013b8 0x080013b8 0x00000056 Code RO 2014 i.HAL_DMA_Abort stm32f1xx_hal_dma.o + 0x0800140e 0x0800140e 0x00000002 PAD + 0x08001410 0x08001410 0x000000b0 Code RO 2015 i.HAL_DMA_Abort_IT stm32f1xx_hal_dma.o + 0x080014c0 0x080014c0 0x00000028 Code RO 1635 i.HAL_Delay stm32f1xx_hal.o + 0x080014e8 0x080014e8 0x00000320 Code RO 1950 i.HAL_GPIO_Init stm32f1xx_hal_gpio.o + 0x08001808 0x08001808 0x00000010 Code RO 1952 i.HAL_GPIO_ReadPin stm32f1xx_hal_gpio.o + 0x08001818 0x08001818 0x0000000c Code RO 1954 i.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o + 0x08001824 0x08001824 0x0000000c Code RO 1639 i.HAL_GetTick stm32f1xx_hal.o + 0x08001830 0x08001830 0x00000018 Code RO 1645 i.HAL_IncTick stm32f1xx_hal.o + 0x08001848 0x08001848 0x00000028 Code RO 1646 i.HAL_Init stm32f1xx_hal.o + 0x08001870 0x08001870 0x0000004c Code RO 1647 i.HAL_InitTick stm32f1xx_hal.o + 0x080018bc 0x080018bc 0x00000054 Code RO 661 i.HAL_MspInit stm32f1xx_hal_msp.o + 0x08001910 0x08001910 0x00000020 Code RO 2110 i.HAL_NVIC_EnableIRQ stm32f1xx_hal_cortex.o + 0x08001930 0x08001930 0x0000007c Code RO 2116 i.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o + 0x080019ac 0x080019ac 0x00000028 Code RO 2117 i.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o + 0x080019d4 0x080019d4 0x0000018c Code RO 1803 i.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o + 0x08001b60 0x08001b60 0x0000000c Code RO 1808 i.HAL_RCC_GetHCLKFreq stm32f1xx_hal_rcc.o + 0x08001b6c 0x08001b6c 0x00000020 Code RO 1810 i.HAL_RCC_GetPCLK1Freq stm32f1xx_hal_rcc.o + 0x08001b8c 0x08001b8c 0x00000020 Code RO 1811 i.HAL_RCC_GetPCLK2Freq stm32f1xx_hal_rcc.o + 0x08001bac 0x08001bac 0x00000070 Code RO 1812 i.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o + 0x08001c1c 0x08001c1c 0x00000464 Code RO 1815 i.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o + 0x08002080 0x08002080 0x000000be Code RO 1317 i.HAL_SPI_Init stm32f1xx_hal_spi.o + 0x0800213e 0x0800213e 0x00000002 PAD + 0x08002140 0x08002140 0x00000088 Code RO 462 i.HAL_SPI_MspInit spi.o + 0x080021c8 0x080021c8 0x00000034 Code RO 2121 i.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o + 0x080021fc 0x080021fc 0x00000002 Code RO 2684 i.HAL_UARTEx_RxEventCallback stm32f1xx_hal_uart.o + 0x080021fe 0x080021fe 0x00000002 Code RO 2698 i.HAL_UART_ErrorCallback stm32f1xx_hal_uart.o + 0x08002200 0x08002200 0x000002e4 Code RO 2701 i.HAL_UART_IRQHandler stm32f1xx_hal_uart.o + 0x080024e4 0x080024e4 0x00000076 Code RO 2702 i.HAL_UART_Init stm32f1xx_hal_uart.o + 0x0800255a 0x0800255a 0x00000002 PAD + 0x0800255c 0x0800255c 0x00000190 Code RO 504 i.HAL_UART_MspInit usart.o + 0x080026ec 0x080026ec 0x0000002c Code RO 2707 i.HAL_UART_Receive_IT stm32f1xx_hal_uart.o + 0x08002718 0x08002718 0x00000080 Code RO 335 i.HAL_UART_RxCpltCallback main.o + 0x08002798 0x08002798 0x000000b2 Code RO 2710 i.HAL_UART_Transmit stm32f1xx_hal_uart.o + 0x0800284a 0x0800284a 0x00000038 Code RO 2712 i.HAL_UART_Transmit_IT stm32f1xx_hal_uart.o + 0x08002882 0x08002882 0x00000002 PAD + 0x08002884 0x08002884 0x00000040 Code RO 336 i.HAL_UART_TxCpltCallback main.o + 0x080028c4 0x080028c4 0x00000004 Code RO 569 i.HardFault_Handler stm32f1xx_it.o + 0x080028c8 0x080028c8 0x00000028 Code RO 817 i.IO_Monitor_GetAllStates io_monitor.o + 0x080028f0 0x080028f0 0x00000018 Code RO 819 i.IO_Monitor_GetState io_monitor.o + 0x08002908 0x08002908 0x00000080 Code RO 820 i.IO_Monitor_Init io_monitor.o + 0x08002988 0x08002988 0x00000088 Code RO 822 i.IO_Monitor_Task io_monitor.o + 0x08002a10 0x08002a10 0x00000110 Code RO 413 i.MX_GPIO_Init gpio.o + 0x08002b20 0x08002b20 0x00000044 Code RO 463 i.MX_SPI2_Init spi.o + 0x08002b64 0x08002b64 0x00000038 Code RO 505 i.MX_USART1_UART_Init usart.o + 0x08002b9c 0x08002b9c 0x00000038 Code RO 506 i.MX_USART2_UART_Init usart.o + 0x08002bd4 0x08002bd4 0x00000038 Code RO 507 i.MX_USART3_UART_Init usart.o + 0x08002c0c 0x08002c0c 0x00000004 Code RO 570 i.MemManage_Handler stm32f1xx_it.o + 0x08002c10 0x08002c10 0x0000006c Code RO 1146 i.MultiUART_FeedByte multi_uart_router.o + 0x08002c7c 0x08002c7c 0x00000020 Code RO 1148 i.MultiUART_GetPortName multi_uart_router.o + 0x08002c9c 0x08002c9c 0x00000024 Code RO 1149 i.MultiUART_GetRxCount multi_uart_router.o + 0x08002cc0 0x08002cc0 0x0000008c Code RO 1151 i.MultiUART_Init multi_uart_router.o + 0x08002d4c 0x08002d4c 0x0000005c Code RO 1152 i.MultiUART_ReadByte multi_uart_router.o + 0x08002da8 0x08002da8 0x00000064 Code RO 1153 i.MultiUART_Send multi_uart_router.o + 0x08002e0c 0x08002e0c 0x00000020 Code RO 1155 i.MultiUART_SendString multi_uart_router.o + 0x08002e2c 0x08002e2c 0x00000034 Code RO 1156 i.MultiUART_Task multi_uart_router.o + 0x08002e60 0x08002e60 0x00000078 Code RO 1157 i.MultiUART_TxCpltCallback multi_uart_router.o + 0x08002ed8 0x08002ed8 0x00000004 Code RO 571 i.NMI_Handler stm32f1xx_it.o + 0x08002edc 0x08002edc 0x00000002 Code RO 572 i.PendSV_Handler stm32f1xx_it.o + 0x08002ede 0x08002ede 0x00000002 PAD + 0x08002ee0 0x08002ee0 0x00000028 Code RO 1816 i.RCC_Delay stm32f1xx_hal_rcc.o + 0x08002f08 0x08002f08 0x0000004c Code RO 889 i.Relay_Init relay_control.o + 0x08002f54 0x08002f54 0x000000d0 Code RO 890 i.Relay_SetState relay_control.o + 0x08003024 0x08003024 0x00000002 Code RO 573 i.SVC_Handler stm32f1xx_it.o + 0x08003026 0x08003026 0x0000000c Code RO 574 i.SysTick_Handler stm32f1xx_it.o + 0x08003032 0x08003032 0x00000066 Code RO 337 i.SystemClock_Config main.o + 0x08003098 0x08003098 0x00000002 Code RO 3046 i.SystemInit system_stm32f1xx.o + 0x0800309a 0x0800309a 0x00000002 PAD + 0x0800309c 0x0800309c 0x00000050 Code RO 928 i.UART2_Print_Init uart2_print.o + 0x080030ec 0x080030ec 0x0000003e Code RO 930 i.UART2_Print_Printf uart2_print.o + 0x0800312a 0x0800312a 0x00000002 PAD + 0x0800312c 0x0800312c 0x000000b4 Code RO 931 i.UART2_Print_Send uart2_print.o + 0x080031e0 0x080031e0 0x0000001c Code RO 932 i.UART2_Print_String uart2_print.o + 0x080031fc 0x080031fc 0x0000006c Code RO 933 i.UART2_Print_Task uart2_print.o + 0x08003268 0x08003268 0x0000006c Code RO 934 i.UART2_Print_TxCpltCallback uart2_print.o + 0x080032d4 0x080032d4 0x00000014 Code RO 2715 i.UART_DMAAbortOnError stm32f1xx_hal_uart.o + 0x080032e8 0x080032e8 0x0000006c Code RO 2725 i.UART_EndRxTransfer stm32f1xx_hal_uart.o + 0x08003354 0x08003354 0x00000020 Code RO 2726 i.UART_EndTransmit_IT stm32f1xx_hal_uart.o + 0x08003374 0x08003374 0x000000fc Code RO 2728 i.UART_Receive_IT stm32f1xx_hal_uart.o + 0x08003470 0x08003470 0x000000fc Code RO 2729 i.UART_SetConfig stm32f1xx_hal_uart.o + 0x0800356c 0x0800356c 0x00000040 Code RO 2731 i.UART_Start_Receive_IT stm32f1xx_hal_uart.o + 0x080035ac 0x080035ac 0x00000060 Code RO 2732 i.UART_Transmit_IT stm32f1xx_hal_uart.o + 0x0800360c 0x0800360c 0x00000092 Code RO 2733 i.UART_WaitOnFlagUntilTimeout stm32f1xx_hal_uart.o + 0x0800369e 0x0800369e 0x00000002 PAD + 0x080036a0 0x080036a0 0x00000010 Code RO 575 i.USART1_IRQHandler stm32f1xx_it.o + 0x080036b0 0x080036b0 0x00000010 Code RO 576 i.USART2_IRQHandler stm32f1xx_it.o + 0x080036c0 0x080036c0 0x00000010 Code RO 577 i.USART3_IRQHandler stm32f1xx_it.o + 0x080036d0 0x080036d0 0x00000004 Code RO 578 i.UsageFault_Handler stm32f1xx_it.o + 0x080036d4 0x080036d4 0x00000020 Code RO 3646 i.__0printf mc_w.l(printfa.o) + 0x080036f4 0x080036f4 0x00000034 Code RO 3647 i.__0snprintf mc_w.l(printfa.o) + 0x08003728 0x08003728 0x00000034 Code RO 3651 i.__0vsnprintf mc_w.l(printfa.o) + 0x0800375c 0x0800375c 0x00000010 Code RO 2123 i.__NVIC_GetPriorityGrouping stm32f1xx_hal_cortex.o + 0x0800376c 0x0800376c 0x00000028 Code RO 2124 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o + 0x08003794 0x08003794 0x00000008 Code RO 3701 i.__aeabi_errno_addr mc_w.l(errno.o) + 0x0800379c 0x0800379c 0x0000000e Code RO 3746 i.__scatterload_copy mc_w.l(handlers.o) + 0x080037aa 0x080037aa 0x00000002 Code RO 3747 i.__scatterload_null mc_w.l(handlers.o) + 0x080037ac 0x080037ac 0x0000000e Code RO 3748 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x080037ba 0x080037ba 0x00000002 PAD + 0x080037bc 0x080037bc 0x00000184 Code RO 3653 i._fp_digits mc_w.l(printfa.o) + 0x08003940 0x08003940 0x000006b4 Code RO 3654 i._printf_core mc_w.l(printfa.o) + 0x08003ff4 0x08003ff4 0x00000024 Code RO 3655 i._printf_post_padding mc_w.l(printfa.o) + 0x08004018 0x08004018 0x0000002e Code RO 3656 i._printf_pre_padding mc_w.l(printfa.o) + 0x08004046 0x08004046 0x00000016 Code RO 3657 i._snputc mc_w.l(printfa.o) + 0x0800405c 0x0800405c 0x00000044 Code RO 1020 i.append_rx_log cmd_router.o + 0x080040a0 0x080040a0 0x0000001a Code RO 691 i.calc_checksum cmd_parser.o + 0x080040ba 0x080040ba 0x0000001a Code RO 823 i.calc_checksum io_monitor.o + 0x080040d4 0x080040d4 0x00000074 Code RO 1021 i.cmd_parser_response_callback cmd_router.o + 0x08004148 0x08004148 0x000000d4 Code RO 1022 i.flush_rx_log cmd_router.o + 0x0800421c 0x0800421c 0x00000010 Code RO 935 i.fputc uart2_print.o + 0x0800422c 0x0800422c 0x00000014 Code RO 414 i.gpio_led_rx_off gpio.o + 0x08004240 0x08004240 0x00000014 Code RO 415 i.gpio_led_rx_on gpio.o + 0x08004254 0x08004254 0x00000014 Code RO 416 i.gpio_led_tx_off gpio.o + 0x08004268 0x08004268 0x00000014 Code RO 417 i.gpio_led_tx_on gpio.o + 0x0800427c 0x0800427c 0x00000036 Code RO 692 i.hex_char_to_val cmd_parser.o + 0x080042b2 0x080042b2 0x0000001c Code RO 693 i.hex_to_byte cmd_parser.o + 0x080042ce 0x080042ce 0x00000002 PAD + 0x080042d0 0x080042d0 0x00000038 Code RO 1093 i.init_modules debug_log.o + 0x08004308 0x08004308 0x0000004c Code RO 1094 i.is_module_enabled debug_log.o + 0x08004354 0x08004354 0x00000010 Code RO 694 i.is_str_empty cmd_parser.o + 0x08004364 0x08004364 0x00000030 Code RO 695 i.is_str_numeric cmd_parser.o + 0x08004394 0x08004394 0x00000026 Code RO 696 i.is_valid_cmd_char cmd_parser.o + 0x080043ba 0x080043ba 0x00000026 Code RO 697 i.is_valid_param_char cmd_parser.o + 0x080043e0 0x080043e0 0x00000174 Code RO 338 i.main main.o + 0x08004554 0x08004554 0x00000324 Code RO 698 i.process_cmd_frame cmd_parser.o + 0x08004878 0x08004878 0x00000024 Code RO 699 i.reset_parser cmd_parser.o + 0x0800489c 0x0800489c 0x0000001c Code RO 3222 i.rf433_fifo_clear rf433_hal.o + 0x080048b8 0x080048b8 0x00000018 Code RO 3223 i.rf433_fifo_get_length rf433_hal.o + 0x080048d0 0x080048d0 0x00000070 Code RO 3224 i.rf433_fifo_read rf433_hal.o + 0x08004940 0x08004940 0x00000060 Code RO 3225 i.rf433_fifo_write rf433_hal.o + 0x080049a0 0x080049a0 0x00000028 Code RO 3226 i.rf433_hal_1ms_callback rf433_hal.o + 0x080049c8 0x080049c8 0x00000040 Code RO 3227 i.rf433_hal_aux_wait rf433_hal.o + 0x08004a08 0x08004a08 0x0000001c Code RO 3229 i.rf433_hal_deinit rf433_hal.o + 0x08004a24 0x08004a24 0x00000008 Code RO 3230 i.rf433_hal_fifo_clear rf433_hal.o + 0x08004a2c 0x08004a2c 0x0000000c Code RO 3231 i.rf433_hal_fifo_get_length rf433_hal.o + 0x08004a38 0x08004a38 0x00000014 Code RO 3232 i.rf433_hal_fifo_read rf433_hal.o + 0x08004a4c 0x08004a4c 0x00000034 Code RO 3234 i.rf433_hal_init rf433_hal.o + 0x08004a80 0x08004a80 0x000000a0 Code RO 3236 i.rf433_hal_set_work_mode rf433_hal.o + 0x08004b20 0x08004b20 0x00000034 Code RO 3238 i.rf433_hal_uart_rxcplt_callback rf433_hal.o + 0x08004b54 0x08004b54 0x00000030 Code RO 3239 i.rf433_hal_uart_tx rf433_hal.o + 0x08004b84 0x08004b84 0x00000060 Code RO 3084 i.rf433_init rf433.o + 0x08004be4 0x08004be4 0x00000050 Code RO 145 i.rf433_rx_app_init rf433_rx_app.o + 0x08004c34 0x08004c34 0x00000050 Code RO 146 i.rf433_rx_app_parse_packet rf433_rx_app.o + 0x08004c84 0x08004c84 0x00000020 Code RO 148 i.rf433_rx_app_start rf433_rx_app.o + 0x08004ca4 0x08004ca4 0x000000a0 Code RO 150 i.rf433_rx_app_task rf433_rx_app.o + 0x08004d44 0x08004d44 0x0000003c Code RO 3091 i.rf433_rx_start rf433.o + 0x08004d80 0x08004d80 0x00000024 Code RO 3095 i.rf433_send_config_command rf433.o + 0x08004da4 0x08004da4 0x00000058 Code RO 3097 i.rf433_set_config rf433.o + 0x08004dfc 0x08004dfc 0x00000018 Code RO 3098 i.rf433_set_work_mode rf433.o + 0x08004e14 0x08004e14 0x00000038 Code RO 3099 i.rf433_transmit rf433.o + 0x08004e4c 0x08004e4c 0x0000004c Code RO 240 i.rf433_tx_app_init rf433_tx_app.o + 0x08004e98 0x08004e98 0x0000002c Code RO 243 i.rf433_tx_app_start rf433_tx_app.o + 0x08004ec4 0x08004ec4 0x000000d4 Code RO 245 i.rf433_tx_app_task rf433_tx_app.o + 0x08004f98 0x08004f98 0x00000012 Code RO 151 i.rx_led_control rf433_rx_app.o + 0x08004faa 0x08004faa 0x00000010 Code RO 1158 i.rx_ring_init multi_uart_router.o + 0x08004fba 0x08004fba 0x00000046 Code RO 1160 i.rx_ring_push multi_uart_router.o + 0x08005000 0x08005000 0x0000003c Code RO 152 i.rx_update_stats rf433_rx_app.o + 0x0800503c 0x0800503c 0x000000a8 Code RO 824 i.send_di_event io_monitor.o + 0x080050e4 0x080050e4 0x0000006c Code RO 700 i.send_response_err cmd_parser.o + 0x08005150 0x08005150 0x00000068 Code RO 701 i.send_response_ok cmd_parser.o + 0x080051b8 0x080051b8 0x0000001c Code RO 14 i.systick_interrupt_1ms_callback systick.o + 0x080051d4 0x080051d4 0x00000048 Code RO 246 i.tx_build_packet rf433_tx_app.o + 0x0800521c 0x0800521c 0x00000068 Code RO 1161 i.tx_kickoff multi_uart_router.o + 0x08005284 0x08005284 0x00000012 Code RO 247 i.tx_led_control rf433_tx_app.o + 0x08005296 0x08005296 0x00000016 Code RO 1162 i.tx_ring_init multi_uart_router.o + 0x080052ac 0x080052ac 0x0000005e Code RO 1163 i.tx_ring_push multi_uart_router.o + 0x0800530a 0x0800530a 0x00000002 PAD + 0x0800530c 0x0800530c 0x00000050 Code RO 3240 i.uart1_check_rx_done rf433_hal.o + 0x0800535c 0x0800535c 0x00000008 Code RO 3241 i.uart1_rx_timeout_1ms_callback rf433_hal.o + 0x08005364 0x08005364 0x00000010 Data RO 1096 .constdata debug_log.o + 0x08005374 0x08005374 0x00000018 Data RO 1165 .constdata multi_uart_router.o + 0x0800538c 0x0800538c 0x00000012 Data RO 1817 .constdata stm32f1xx_hal_rcc.o + 0x0800539e 0x0800539e 0x00000018 Data RO 3047 .constdata system_stm32f1xx.o + 0x080053b6 0x080053b6 0x00000021 Data RO 3102 .constdata rf433.o + 0x080053d7 0x080053d7 0x00000081 Data RO 3372 .constdata mc_w.l(ctype_o.o) + 0x08005458 0x08005458 0x00000004 Data RO 3373 .constdata mc_w.l(ctype_o.o) + 0x0800545c 0x0800545c 0x0000001e Data RO 1097 .conststring debug_log.o + 0x0800547a 0x0800547a 0x00000002 PAD + 0x0800547c 0x0800547c 0x00000016 Data RO 1166 .conststring multi_uart_router.o + 0x08005492 0x08005492 0x00000002 PAD + 0x08005494 0x08005494 0x00000020 Data RO 3744 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080042cc, Size: 0x00000f50, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080054b4, Size: 0x00001770, Max: 0x00005000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x080042cc 0x00000004 Data RW 16 .data systick.o - 0x20000004 0x080042d0 0x00000001 Data RW 264 .data main.o - 0x20000005 0x080042d1 0x00000003 PAD - 0x20000008 0x080042d4 0x00000045 Data RW 727 .data io_monitor.o - 0x2000004d 0x08004319 0x00000003 PAD - 0x20000050 0x0800431c 0x0000000c Data RW 790 .data relay_control.o - 0x2000005c 0x08004328 0x00000009 Data RW 1305 .data stm32f1xx_hal.o - 0x20000065 0x08004331 0x00000003 PAD - 0x20000068 0x08004334 0x00000004 Data RW 2700 .data system_stm32f1xx.o - 0x2000006c 0x08004338 0x00000006 Data RW 2747 .data rf433.o - 0x20000072 0x0800433e 0x00000002 PAD - 0x20000074 0x08004340 0x00000019 Data RW 2848 .data rf433_hal.o - 0x2000008d 0x08004359 0x00000003 PAD - 0x20000090 0x0800435c 0x00000004 Data RW 3294 .data mc_w.l(stdout.o) - 0x20000094 0x08004360 0x00000004 Data RW 3302 .data mc_w.l(errno.o) - 0x20000098 - 0x0000001c Zero RW 163 .bss rf433_tx_app.o - 0x200000b4 - 0x00000058 Zero RW 380 .bss spi.o - 0x2000010c - 0x000000d8 Zero RW 425 .bss usart.o - 0x200001e4 - 0x00000060 Zero RW 616 .bss cmd_parser.o - 0x20000244 - 0x0000010a Zero RW 845 .bss uart2_print.o - 0x2000034e - 0x00000400 Zero RW 2745 .bss rf433.o - 0x2000074e - 0x00000400 Zero RW 2847 .bss rf433_hal.o - 0x20000b4e 0x08004364 0x00000002 PAD - 0x20000b50 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o + 0x20000000 0x080054b4 0x00000004 Data RW 16 .data systick.o + 0x20000004 0x080054b8 0x00000002 Data RW 339 .data main.o + 0x20000006 0x080054ba 0x00000002 PAD + 0x20000008 0x080054bc 0x00000005 Data RW 703 .data cmd_parser.o + 0x2000000d 0x080054c1 0x00000003 PAD + 0x20000010 0x080054c4 0x0000004c Data RW 825 .data io_monitor.o + 0x2000005c 0x08005510 0x00000008 Data RW 891 .data relay_control.o + 0x20000064 0x08005518 0x00000014 Data RW 1024 .data cmd_router.o + 0x20000078 0x0800552c 0x00000002 Data RW 1098 .data debug_log.o + 0x2000007a 0x0800552e 0x00000002 PAD + 0x2000007c 0x08005530 0x00000009 Data RW 1653 .data stm32f1xx_hal.o + 0x20000085 0x08005539 0x00000003 PAD + 0x20000088 0x0800553c 0x00000004 Data RW 3048 .data system_stm32f1xx.o + 0x2000008c 0x08005540 0x00000010 Data RW 3103 .data rf433.o + 0x2000009c 0x08005550 0x00000019 Data RW 3244 .data rf433_hal.o + 0x200000b5 0x08005569 0x00000003 PAD + 0x200000b8 0x0800556c 0x00000004 Data RW 3696 .data mc_w.l(stdout.o) + 0x200000bc 0x08005570 0x00000004 Data RW 3704 .data mc_w.l(errno.o) + 0x200000c0 - 0x00000028 Zero RW 153 .bss rf433_rx_app.o + 0x200000e8 - 0x0000001c Zero RW 248 .bss rf433_tx_app.o + 0x20000104 - 0x00000058 Zero RW 464 .bss spi.o + 0x2000015c - 0x000000d8 Zero RW 509 .bss usart.o + 0x20000234 - 0x00000060 Zero RW 702 .bss cmd_parser.o + 0x20000294 - 0x0000010a Zero RW 936 .bss uart2_print.o + 0x2000039e 0x08005574 0x00000002 PAD + 0x200003a0 - 0x000001bc Zero RW 1023 .bss cmd_router.o + 0x2000055c - 0x00000110 Zero RW 1095 .bss debug_log.o + 0x2000066c - 0x00000504 Zero RW 1164 .bss multi_uart_router.o + 0x20000b70 - 0x00000400 Zero RW 3101 .bss rf433.o + 0x20000f70 - 0x00000400 Zero RW 3243 .bss rf433_hal.o + 0x20001370 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o ============================================================================== @@ -2084,14 +2476,18 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name - 2192 578 0 0 96 9415 cmd_parser.o - 312 24 0 0 0 1842 gpio.o - 498 138 0 69 0 4548 io_monitor.o - 524 202 0 1 0 3924 main.o - 400 212 0 12 0 1974 relay_control.o - 320 40 33 6 1024 4383 rf433.o - 548 80 0 25 1024 6705 rf433_hal.o - 422 34 0 0 28 7669 rf433_tx_app.o + 2268 594 0 5 96 11122 cmd_parser.o + 780 186 0 20 444 4266 cmd_router.o + 372 86 46 2 272 3166 debug_log.o + 352 36 0 0 0 2705 gpio.o + 522 142 0 76 0 4596 io_monitor.o + 672 232 0 2 0 6988 main.o + 1018 130 46 0 1284 9426 multi_uart_router.o + 284 158 0 8 0 1294 relay_control.o + 360 38 33 16 1024 5072 rf433.o + 832 112 0 25 1024 10816 rf433_hal.o + 430 28 0 0 40 8033 rf433_rx_app.o + 422 34 0 0 28 4665 rf433_tx_app.o 204 22 0 0 88 1597 spi.o 36 8 236 0 1024 792 startup_stm32f103xb.o 192 36 0 9 0 5809 stm32f1xx_hal.o @@ -2105,19 +2501,23 @@ Image component sizes 86 18 0 0 0 5206 stm32f1xx_it.o 2 0 24 4 0 1091 system_stm32f1xx.o 28 4 0 4 0 400769 systick.o - 582 72 0 0 266 6828 uart2_print.o + 582 72 0 0 266 6836 uart2_print.o 568 54 0 0 216 2980 usart.o ---------------------------------------------------------------------- - 12460 1696 343 144 3768 519819 Object Totals + 15556 2164 439 184 5808 551516 Object Totals 0 0 32 0 0 0 (incl. Generated) - 20 0 0 14 2 0 (incl. Padding) + 20 0 4 13 2 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name + 56 8 0 0 0 84 __0sscanf.o 28 0 0 0 0 68 _chval.o + 816 6 0 0 0 112 _scanf.o + 332 0 0 0 0 96 _scanf_int.o + 64 0 0 0 0 84 _sgetc.o 158 0 0 0 0 92 _strtoul.o 26 0 0 0 0 80 atoi.o 8 4 133 0 0 68 ctype_o.o @@ -2133,15 +2533,19 @@ Image component sizes 8 4 0 4 0 68 errno.o 30 0 0 0 0 0 handlers.o 36 8 0 0 0 68 init.o + 18 0 0 0 0 76 isspace_o.o 0 0 0 0 0 0 iusefp.o 30 0 0 0 0 68 llshl.o 36 0 0 0 0 68 llsshr.o 32 0 0 0 0 68 llushr.o + 36 0 0 0 0 68 memcpya.o 36 0 0 0 0 108 memseta.o 2344 100 0 0 0 700 printfa.o + 40 8 0 0 0 84 scanf_char.o 0 0 0 4 0 0 stdout.o 28 0 0 0 0 76 strcmp.o 14 0 0 0 0 68 strlen.o + 30 0 0 0 0 80 strncmp.o 112 0 0 0 0 88 strtol.o 44 0 0 0 0 80 uidiv.o 98 0 0 0 0 92 uldiv.o @@ -2153,18 +2557,18 @@ Image component sizes 228 0 0 0 0 96 dmul.o ---------------------------------------------------------------------- - 4162 124 135 8 0 2516 Library Totals - 4 0 2 0 0 0 (incl. Padding) + 5556 146 133 8 0 3200 Library Totals + 6 0 0 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name - 3092 124 133 8 0 1860 mc_w.l + 4484 146 133 8 0 2544 mc_w.l 1066 0 0 0 0 656 mf_w.l ---------------------------------------------------------------------- - 4162 124 135 8 0 2516 Library Totals + 5556 146 133 8 0 3200 Library Totals ---------------------------------------------------------------------- @@ -2173,15 +2577,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 16622 1820 478 152 3768 515415 Grand Totals - 16622 1820 478 152 3768 515415 ELF Image Totals - 16622 1820 478 152 0 0 ROM Totals + 21112 2310 572 192 5808 545196 Grand Totals + 21112 2310 572 192 5808 545196 ELF Image Totals + 21112 2310 572 192 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 17100 ( 16.70kB) - Total RW Size (RW Data + ZI Data) 3920 ( 3.83kB) - Total ROM Size (Code + RO Data + RW Data) 17252 ( 16.85kB) + Total RO Size (Code + RO Data) 21684 ( 21.18kB) + Total RW Size (RW Data + ZI Data) 6000 ( 5.86kB) + Total ROM Size (Code + RO Data + RW Data) 21876 ( 21.36kB) ============================================================================== diff --git a/MDK-ARM/project/project_project.dep b/MDK-ARM/project/project_project.dep index bae71b7..c26a830 100644 --- a/MDK-ARM/project/project_project.dep +++ b/MDK-ARM/project/project_project.dep @@ -32,9 +32,42 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) F (..\Core\Src\rf433_rx_app.c)(0x69C25185)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_rx_app.o --omf_browse project\rf433_rx_app.crf --depend project\rf433_rx_app.d) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A682) +I (../Driver_RF433/Inc/rf433_config.h)(0x69C62F40) +I (../Core/Inc/rf433_rx_app.h)(0x69C22B79) +I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) +I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (../Core/Inc/main.h)(0x69C35425) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) F (..\Core\Src\rf433_tx_app.c)(0x69C51895)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_tx_app.o --omf_browse project\rf433_tx_app.crf --depend project\rf433_tx_app.d) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A682) +I (../Driver_RF433/Inc/rf433_config.h)(0x69C62F40) I (../Core/Inc/rf433_tx_app.h)(0x69C229F8) I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) @@ -68,9 +101,9 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (../Core/Inc/uart2_print.h)(0x69C636F0) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) -F (../Core/Src/main.c)(0x69C50991)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\main.o --omf_browse project\main.crf --depend project\main.d) +F (../Core/Src/main.c)(0x69C62F4C)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\main.o --omf_browse project\main.crf --depend project\main.d) I (../Core/Inc/main.h)(0x69C35425) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) @@ -104,14 +137,18 @@ I (../Core/Inc/spi.h)(0x69C35422) I (../Core/Inc/usart.h)(0x69C35423) I (../Core/Inc/gpio.h)(0x665D64E1) I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A682) +I (../Driver_RF433/Inc/rf433_config.h)(0x69C62F40) I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) -I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (../Core/Inc/uart2_print.h)(0x69C636F0) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) -I (../Core/Inc/io_monitor.h)(0x69C50FF7) -I (../Core/Inc/cmd_parser.h)(0x69C50FF7) -I (../Core/Inc/relay_control.h)(0x69C50FF7) +I (../Core/Inc/io_monitor.h)(0x69C60329) +I (../Core/Inc/cmd_parser.h)(0x69C636F0) +I (../Core/Inc/relay_control.h)(0x69C636F0) +I (../Core/Inc/multi_uart_router.h)(0x69C636F0) +I (../Core/Inc/cmd_router.h)(0x69C636F0) +I (../Core/Inc/debug_log.h)(0x69C636F0) I (../Core/Inc/rf433_tx_app.h)(0x69C229F8) +I (../Core/Inc/rf433_rx_app.h)(0x69C22B79) F (../Core/Src/gpio.c)(0x69C3A25B)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\gpio.o --omf_browse project\gpio.crf --depend project\gpio.d) I (../Core/Inc/gpio.h)(0x665D64E1) I (../Core/Inc/main.h)(0x69C35425) @@ -174,7 +211,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (../Core/Src/usart.c)(0x69C50FF9)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\usart.o --omf_browse project\usart.crf --depend project\usart.d) +F (../Core/Src/usart.c)(0x69C636F0)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\usart.o --omf_browse project\usart.crf --depend project\usart.d) I (../Core/Inc/usart.h)(0x69C35423) I (../Core/Inc/main.h)(0x69C35425) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) @@ -267,23 +304,23 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (..\Core\Src\cmd_parser.c)(0x69C518F0)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\cmd_parser.o --omf_browse project\cmd_parser.crf --depend project\cmd_parser.d) -I (../Core/Inc/cmd_parser.h)(0x69C50FF7) +F (..\Core\Src\cmd_parser.c)(0x69C636F0)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\cmd_parser.o --omf_browse project\cmd_parser.crf --depend project\cmd_parser.d) +I (../Core/Inc/cmd_parser.h)(0x69C636F0) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (../Core/Inc/uart2_print.h)(0x69C636F0) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) -I (../Core/Inc/io_monitor.h)(0x69C50FF7) -I (../Core/Inc/relay_control.h)(0x69C50FF7) +I (../Core/Inc/io_monitor.h)(0x69C60329) +I (../Core/Inc/relay_control.h)(0x69C636F0) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) I (C:\Keil_v5\ARM\ARMCC\include\ctype.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5F63877C) -F (..\Core\Src\io_monitor.c)(0x69C515EC)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\io_monitor.o --omf_browse project\io_monitor.crf --depend project\io_monitor.d) -I (../Core/Inc/io_monitor.h)(0x69C50FF7) +F (..\Core\Src\io_monitor.c)(0x69C60379)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\io_monitor.o --omf_browse project\io_monitor.crf --depend project\io_monitor.d) +I (../Core/Inc/io_monitor.h)(0x69C60329) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (../Core/Inc/uart2_print.h)(0x69C636F0) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) I (../Core/Inc/main.h)(0x69C35425) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) @@ -313,11 +350,11 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -F (..\Core\Src\relay_control.c)(0x69C51668)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\relay_control.o --omf_browse project\relay_control.crf --depend project\relay_control.d) -I (../Core/Inc/relay_control.h)(0x69C50FF7) +F (..\Core\Src\relay_control.c)(0x69C636F0)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\relay_control.o --omf_browse project\relay_control.crf --depend project\relay_control.d) +I (../Core/Inc/relay_control.h)(0x69C636F0) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (../Core/Inc/uart2_print.h)(0x69C636F0) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) I (../Core/Inc/main.h)(0x69C35425) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) @@ -346,8 +383,8 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (..\Core\Src\uart2_print.c)(0x69C5159A)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\uart2_print.o --omf_browse project\uart2_print.crf --depend project\uart2_print.d) -I (../Core/Inc/uart2_print.h)(0x69C50FF9) +F (..\Core\Src\uart2_print.c)(0x69C5E7D1)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\uart2_print.o --omf_browse project\uart2_print.crf --depend project\uart2_print.d) +I (../Core/Inc/uart2_print.h)(0x69C636F0) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) @@ -380,6 +417,87 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) +F (..\Core\Src\cmd_router.c)(0x69C62F3E)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\cmd_router.o --omf_browse project\cmd_router.crf --depend project\cmd_router.d) +I (../Core/Inc/cmd_router.h)(0x69C636F0) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (../Core/Inc/multi_uart_router.h)(0x69C636F0) +I (../Core/Inc/usart.h)(0x69C35423) +I (../Core/Inc/main.h)(0x69C35425) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (../Core/Inc/cmd_parser.h)(0x69C636F0) +I (../Core/Inc/uart2_print.h)(0x69C636F0) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) +I (../Core/Inc/debug_log.h)(0x69C636F0) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) +F (..\Core\Src\debug_log.c)(0x69C636F0)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\debug_log.o --omf_browse project\debug_log.crf --depend project\debug_log.d) +I (../Core/Inc/debug_log.h)(0x69C636F0) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (../Core/Inc/uart2_print.h)(0x69C636F0) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +F (..\Core\Src\multi_uart_router.c)(0x69C636DC)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\multi_uart_router.o --omf_browse project\multi_uart_router.crf --depend project\multi_uart_router.d) +I (../Core/Inc/multi_uart_router.h)(0x69C636F0) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (../Core/Inc/usart.h)(0x69C35423) +I (../Core/Inc/main.h)(0x69C35425) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (../Core/Inc/uart2_print.h)(0x69C636F0) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_gpio_ex.o --omf_browse project\stm32f1xx_hal_gpio_ex.crf --depend project\stm32f1xx_hal_gpio_ex.d) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) @@ -812,9 +930,9 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (..\Driver_RF433\Src\rf433.c)(0x69C51984)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433.o --omf_browse project\rf433.crf --depend project\rf433.d) +F (..\Driver_RF433\Src\rf433.c)(0x69C630FE)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433.o --omf_browse project\rf433.crf --depend project\rf433.d) I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A682) +I (../Driver_RF433/Inc/rf433_config.h)(0x69C62F40) I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) @@ -879,5 +997,5 @@ I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (../Core/Inc/gpio.h)(0x665D64E1) I (../Core/Inc/usart.h)(0x69C35423) F (..\Driver_RF433\Inc\rf433.h)(0x69C222AA)() -F (..\Driver_RF433\Inc\rf433_config.h)(0x69C3A682)() +F (..\Driver_RF433\Inc\rf433_config.h)(0x69C62F40)() F (..\Driver_RF433\Inc\rf433_hal.h)(0x69C2716B)() diff --git a/MDK-ARM/project/relay_control.crf b/MDK-ARM/project/relay_control.crf index f493ce2..f00a906 100644 Binary files a/MDK-ARM/project/relay_control.crf and b/MDK-ARM/project/relay_control.crf differ diff --git a/MDK-ARM/project/relay_control.o b/MDK-ARM/project/relay_control.o index 5396e7e..d0d0947 100644 Binary files a/MDK-ARM/project/relay_control.o and b/MDK-ARM/project/relay_control.o differ diff --git a/MDK-ARM/project/rf433.crf b/MDK-ARM/project/rf433.crf index 99e5151..7564b6e 100644 Binary files a/MDK-ARM/project/rf433.crf and b/MDK-ARM/project/rf433.crf differ diff --git a/MDK-ARM/project/rf433.o b/MDK-ARM/project/rf433.o index bd7a490..225e72e 100644 Binary files a/MDK-ARM/project/rf433.o and b/MDK-ARM/project/rf433.o differ diff --git a/MDK-ARM/project/rf433_hal.o b/MDK-ARM/project/rf433_hal.o index 217c676..8b53348 100644 Binary files a/MDK-ARM/project/rf433_hal.o and b/MDK-ARM/project/rf433_hal.o differ diff --git a/MDK-ARM/project/rf433_rx_app.crf b/MDK-ARM/project/rf433_rx_app.crf index 8947281..35757b7 100644 Binary files a/MDK-ARM/project/rf433_rx_app.crf and b/MDK-ARM/project/rf433_rx_app.crf differ diff --git a/MDK-ARM/project/rf433_rx_app.d b/MDK-ARM/project/rf433_rx_app.d index cc88e24..2eb4dd5 100644 --- a/MDK-ARM/project/rf433_rx_app.d +++ b/MDK-ARM/project/rf433_rx_app.d @@ -1,2 +1,36 @@ project\rf433_rx_app.o: ..\Core\Src\rf433_rx_app.c project\rf433_rx_app.o: ../Driver_RF433/Inc/rf433_config.h +project\rf433_rx_app.o: ../Core/Inc/rf433_rx_app.h +project\rf433_rx_app.o: ../Driver_RF433/Inc/rf433.h +project\rf433_rx_app.o: ../Driver_RF433/Inc/rf433_hal.h +project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\rf433_rx_app.o: ../Core/Inc/main.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\rf433_rx_app.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\rf433_rx_app.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\rf433_rx_app.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\rf433_rx_app.o: ../Drivers/CMSIS/Include/core_cm3.h +project\rf433_rx_app.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\rf433_rx_app.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\rf433_rx_app.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\rf433_rx_app.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h +project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h diff --git a/MDK-ARM/project/rf433_rx_app.o b/MDK-ARM/project/rf433_rx_app.o index 1789274..beee2a1 100644 Binary files a/MDK-ARM/project/rf433_rx_app.o and b/MDK-ARM/project/rf433_rx_app.o differ diff --git a/MDK-ARM/project/rf433_tx_app.crf b/MDK-ARM/project/rf433_tx_app.crf index 370a80c..3561808 100644 Binary files a/MDK-ARM/project/rf433_tx_app.crf and b/MDK-ARM/project/rf433_tx_app.crf differ diff --git a/MDK-ARM/project/rf433_tx_app.o b/MDK-ARM/project/rf433_tx_app.o index 33198ee..352838a 100644 Binary files a/MDK-ARM/project/rf433_tx_app.o and b/MDK-ARM/project/rf433_tx_app.o differ diff --git a/MDK-ARM/project/spi.o b/MDK-ARM/project/spi.o index 85111bb..67e3992 100644 Binary files a/MDK-ARM/project/spi.o and b/MDK-ARM/project/spi.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal.o b/MDK-ARM/project/stm32f1xx_hal.o index 97e203f..9328c5e 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal.o and b/MDK-ARM/project/stm32f1xx_hal.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_cortex.o b/MDK-ARM/project/stm32f1xx_hal_cortex.o index bdc4475..f39f617 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_cortex.o and b/MDK-ARM/project/stm32f1xx_hal_cortex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_dma.o b/MDK-ARM/project/stm32f1xx_hal_dma.o index b0b7a6d..7e6fc3a 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_dma.o and b/MDK-ARM/project/stm32f1xx_hal_dma.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_exti.o b/MDK-ARM/project/stm32f1xx_hal_exti.o index 33125cf..b56f36d 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_exti.o and b/MDK-ARM/project/stm32f1xx_hal_exti.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_flash.o b/MDK-ARM/project/stm32f1xx_hal_flash.o index 553ecd4..4ba57a7 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_flash.o and b/MDK-ARM/project/stm32f1xx_hal_flash.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_flash_ex.o b/MDK-ARM/project/stm32f1xx_hal_flash_ex.o index 18be205..7a4b1aa 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_flash_ex.o and b/MDK-ARM/project/stm32f1xx_hal_flash_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio.o b/MDK-ARM/project/stm32f1xx_hal_gpio.o index f24497d..3ed7e67 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_gpio.o and b/MDK-ARM/project/stm32f1xx_hal_gpio.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o index 6ebff8a..2a16072 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o and b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_msp.o b/MDK-ARM/project/stm32f1xx_hal_msp.o index 792129a..6d00eea 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_msp.o and b/MDK-ARM/project/stm32f1xx_hal_msp.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_pwr.o b/MDK-ARM/project/stm32f1xx_hal_pwr.o index 43574aa..6526ac1 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_pwr.o and b/MDK-ARM/project/stm32f1xx_hal_pwr.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc.o b/MDK-ARM/project/stm32f1xx_hal_rcc.o index 254cd29..74b7659 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_rcc.o and b/MDK-ARM/project/stm32f1xx_hal_rcc.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o index 2daa038..eae198e 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o and b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_spi.o b/MDK-ARM/project/stm32f1xx_hal_spi.o index 7d94cbd..a92769c 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_spi.o and b/MDK-ARM/project/stm32f1xx_hal_spi.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_tim.o b/MDK-ARM/project/stm32f1xx_hal_tim.o index b9135ab..87349cb 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_tim.o and b/MDK-ARM/project/stm32f1xx_hal_tim.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_tim_ex.o b/MDK-ARM/project/stm32f1xx_hal_tim_ex.o index a1bc14c..0b99172 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_tim_ex.o and b/MDK-ARM/project/stm32f1xx_hal_tim_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_uart.o b/MDK-ARM/project/stm32f1xx_hal_uart.o index 7415669..df01ac6 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_uart.o and b/MDK-ARM/project/stm32f1xx_hal_uart.o differ diff --git a/MDK-ARM/project/stm32f1xx_it.o b/MDK-ARM/project/stm32f1xx_it.o index 637336e..9da5c8f 100644 Binary files a/MDK-ARM/project/stm32f1xx_it.o and b/MDK-ARM/project/stm32f1xx_it.o differ diff --git a/MDK-ARM/project/system_stm32f1xx.o b/MDK-ARM/project/system_stm32f1xx.o index 88c04ab..c1dd5a8 100644 Binary files a/MDK-ARM/project/system_stm32f1xx.o and b/MDK-ARM/project/system_stm32f1xx.o differ diff --git a/MDK-ARM/project/systick.o b/MDK-ARM/project/systick.o index 9aae83c..d7d0ffd 100644 Binary files a/MDK-ARM/project/systick.o and b/MDK-ARM/project/systick.o differ diff --git a/MDK-ARM/project/uart2_print.crf b/MDK-ARM/project/uart2_print.crf index fcaf4f2..bad1f13 100644 Binary files a/MDK-ARM/project/uart2_print.crf and b/MDK-ARM/project/uart2_print.crf differ diff --git a/MDK-ARM/project/uart2_print.o b/MDK-ARM/project/uart2_print.o index f00ded5..aa58244 100644 Binary files a/MDK-ARM/project/uart2_print.o and b/MDK-ARM/project/uart2_print.o differ diff --git a/MDK-ARM/project/usart.crf b/MDK-ARM/project/usart.crf index d5c32ee..8db112c 100644 Binary files a/MDK-ARM/project/usart.crf and b/MDK-ARM/project/usart.crf differ diff --git a/MDK-ARM/project/usart.o b/MDK-ARM/project/usart.o index 6f6bc35..7fc0ddd 100644 Binary files a/MDK-ARM/project/usart.o and b/MDK-ARM/project/usart.o differ diff --git a/docs/多通信接口统一指令处理系统开发计划.md b/docs/多通信接口统一指令处理系统开发计划.md new file mode 100644 index 0000000..df1cd23 --- /dev/null +++ b/docs/多通信接口统一指令处理系统开发计划.md @@ -0,0 +1,943 @@ +# 多通信接口统一指令处理系统开发计划 + +**项目名称**:E32-433TBH-SC 多接口统一指令处理扩展 +**版本**:V1.0 +**制定日期**:2026-03-27 +**适用范围**:STM32F103嵌入式系统 + +*** + +## 1. 项目概述 + +### 1.1 背景与目标 + +**现有系统状况**: + +- UART2作为调试专用接口,已实现ASCII指令(`$CMD,param*CS`格式)解析 +- 指令覆盖继电器控制(RL)、数字输入查询(DI)、回显测试(ECHO) +- 四路DI状态变化通过UART2自动上报(`$DI_EVENT`格式) +- RF433模块通过UART1通信,485模块预留给UART3 + +**目标**:在不破坏现有UART2调试接口功能的前提下,将UART1(RF433)和UART3(485)纳入统一指令处理体系,使这三个接口能够: + +1. **接收相同格式指令**并执行相同的业务操作 +2. **向指令来源接口返回响应**(而非统一从UART2返回) +3. **所有收发数据在UART2上打印详细调试日志** + +### 1.2 范围与边界 + +| 纳入范围 | 排除范围 | +| --------------------------- | ------------------- | +| UART1(RF433)、UART3(485)指令接收 | 现有RF433 TX/RX应用逻辑修改 | +| 多路响应路由机制 | 物理层驱动修改 | +| 全链路调试日志系统 | 协议层(protocol.h)重构 | +| 共享资源并发保护 |
                                                                                                                                                                                                                                                                                                                                                                                                                                                  | + +### 1.3 预期交付物 + +| 交付物 | 说明 | +| ------------------------- | ------------------- | +| `multi_uart_router.[c/h]` | 多UART统一路由核心模块 | +| `cmd_router.[c/h]` | 指令路由与响应分发模块 | +| `debug_log.[c/h]` | 增强型调试日志系统 | +| 修改后的 `cmd_parser.c` | 支持多实例解析器(可选)或响应路由接口 | +| 修改后的 `main.c` | 中断回调和任务调度整合 | +| 测试用例与验证方案 |
                                                                                                                                                                                                                                                                                                                                                                                                                                                  | + +*** + +## 2. 系统架构设计 + +### 2.1 当前架构分析 + +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ main.c │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ UART2_Rx │ │ UART1_Rx │ │ UART3_Rx │ │ +│ │ Interrupt │ │ (RF433) │ │ (RS485) │ │ +│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ +│ │ │ │ │ +│ ▼ ▼ ▼ │ +│ ┌─────────────────────────────────────────────────────┐ │ +│ │ CmdParser (仅UART2专用) │ │ +│ │ CmdParser_FeedByte() + Task() │ │ +│ └─────────────────────────┬───────────────────────────┘ │ +│ │ │ +│ ┌──────────────────┼──────────────────┐ │ +│ ▼ ▼ ▼ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │Relay_Ctrl │ │ IO_Monitor │ │ (其他) │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────┐ │ +│ │ UART2_Print │ ◄── 所有响应固定从UART2输出 │ +│ │ (Ring Buffer) │ │ +│ └─────────────────┘ │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +**关键问题**: + +1. `cmd_parser.c`中`send_response_ok()`和`send_response_err()`**硬编码**使用`UART2_Print_String()` +2. `IO_Monitor`中`send_di_event()`同样**硬编码**使用`UART2_Print_String()` +3. UART1和UART3的接收中断**未接入指令解析体系** +4. 缺乏统一的**响应路由**机制 + +### 2.2 目标架构设计 + +#### 2.2.1 整体数据流图 + +``` + UART2_Print (调试日志) + ▲ + │ DEBUG_LOG() + │ +┌─────────────────────────────────────┴─────────────────────────────────────┐ +│ [UART2 - 调试专用通道] │ +│ 调试命令输入 ──► Rx Interrupt ──► CmdParser ──► 执行 ──► 响应UART2 │ +└───────────────────────────────────────────────────────────────────────────┘ + +┌───────────────────────────────────────────────────────────────────────────┐ +│ [UART1 - RF433无线模块] │ +│ RF433数据 ──► Rx Interrupt ──► ┬── FeedByte() ──► 解析 ──► 执行 ──► 响应UART1 +│ │ ▲ │ +│ │ │ │ +│ ┌──────────────────────────────┴────────────────────┴────────────────┐ │ +│ │ Multi-UART Command Router (新增核心) │ │ +│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ +│ │ │UART1_Recv │ │UART2_Recv │ │UART3_Recv │ │ │ +│ │ │RingBuffer │ │RingBuffer │ │RingBuffer │ │ │ +│ │ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │ │ +│ │ │ │ │ │ │ +│ │ └───────────────┼───────────────┘ │ │ +│ │ ▼ │ │ +│ │ ┌─────────────────┐ │ │ +│ │ │ Unified Parser │ ◄── 共享解析状态机 │ │ +│ │ │ (CmdParser) │ │ │ +│ │ └────────┬────────┘ │ │ +│ │ │ │ │ +│ │ ┌──────────────┼──────────────┐ │ │ +│ │ ▼ ▼ ▼ │ │ +│ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ │ +│ │ │Relay_Ctrl │ │IO_Monitor│ │ (Future) │ │ │ +│ │ └─────┬─────┘ └─────┬─────┘ └───────────┘ │ │ +│ │ │ │ │ │ +│ │ └──────────────┼─────────────────────────────────────┐ │ │ +│ │ │ Response Router │ │ │ +│ │ ▼ │ │ │ +│ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ +│ │ │ port_table[] = { │ │ │ │ +│ │ │ {UART1, &huart1, "RF433"}, │ │ │ │ +│ │ │ {UART2, &huart2, "DEBUG"}, // 保持原样 │ │ │ │ +│ │ │ {UART3, &huart3, "RS485"} │ │ │ │ +│ │ │ } │ │ │ │ +│ │ └─────────────────────────────────────────────────────────┘ │ │ │ +└────┴──────────────────────────────────────────────────────────────┴──────┘ + +┌───────────────────────────────────────────────────────────────────────────┐ +│ [UART3 - RS485有线模块] │ +│ 485数据 ──► Rx Interrupt ──► ──► FeedByte() ──► 解析 ──► 执行 ──► 响应UART3 +└───────────────────────────────────────────────────────────────────────────┘ +``` + +#### 2.2.2 模块划分与职责 + +| 模块名 | 职责 | 文件位置 | +| --------------------- | --------------------------- | ----------------------------- | +| **Multi-UART Router** | 三个UART接收通道管理、环形缓冲区、响应路由表 | `multi_uart_router.[c/h]`(新增) | +| **Cmd Router** | 指令解析器封装、响应目标指定、响应构造与发送 | `cmd_router.[c/h]`(新增) | +| **Debug Log** | 统一日志接口,支持来源标签、十六进制 dump、时间戳 | `debug_log.[c/h]`(新增) | +| **CmdParser** | 状态机解析(修改:移除硬编码响应,改为回调方式) | 修改现有 | +| **UART2\_Print** | 底层环形缓冲区发送(复用) | 现有 | + +### 2.3 关键设计决策 + +#### 2.3.1 指令格式一致性策略 + +**决策**:保持现有`$CMD,param1,param2*CS`格式不变,三个UART共用同一解析器。 + +**理由**: + +- 现有`cmd_parser.c`已实现完整的状态机解析,去抖、超时、校验和验证 +- 复用解析器避免代码膨胀(STM32F103资源有限:64KB Flash,20KB RAM) +- 统一格式降低后续维护复杂度 + +#### 2.3.2 响应路由机制 + +**方案**:引入**端口上下文表(port\_context\_table)** + +```c +typedef struct { + UART_HandleTypeDef *huart; // 指向具体UART句柄 + const char *port_name; // 端口名称标签,用于日志 + ring_buffer_t *rx_ring; // 接收环形缓冲区 + uint8_t rx_tmp; // 单字节接收暂存 +} uart_port_context_t; +``` + +**路由原理**: + +- 指令解析完成后,业务函数返回**响应数据**和**来源端口句柄** +- `Response_Send()`根据句柄查找对应UART发送 +- UART2保持原有直接调用方式,**不经过路由层**(调试专用) + +#### 2.3.3 日志记录策略 + +**分层日志级别**: + +| 级别 | 宏定义 | 触发条件 | 示例输出 | +| ----- | ------------- | -------------- | -------------------------------------------------- | +| ERROR | `LOG_ERROR()` | 校验失败、超时、参数错误 | `[UART1] ERR: CS mismatch recv=0xA1 calc=0x3C` | +| WARN | `LOG_WARN()` | 缓冲区边缘、异常状态 | `[UART3] WARN: RX buffer 90% full` | +| INFO | `LOG_INFO()` | 指令接收、响应发送 | `[UART1] RX: $RL,1*2F` → `[UART1] TX: $OK,RL,1*00` | +| DEBUG | `LOG_DEBUG()` | 十六进制 dump、详细状态 | `[UART1] DUMP: [A1 B2 C3 D4]` | + +**日志格式模板**: + +``` +[TIMESTAMP][PORT] : +示例: +[012345][UART1] INFO: CMD=RL P1=1 P2=空 +[012346][UART1] INFO: Relay -> ON +[012347][UART1] TX: $OK,RL,1*00 +``` + +*** + +## 3. 详细设计 + +### 3.1 多UART数据接收层 + +#### 3.1.1 UART1/UART3中断+DMA/环形缓冲区设计 + +**推荐方案:中断+环形缓冲区**(对比DMA方案) + +| 方案 | 优点 | 缺点 | 适用场景 | +| ------------ | ---------- | ------------ | --------- | +| **中断+环形缓冲区** | 实现简单,代码量小 | 中断频繁(约每字节一次) | 数据量小、指令简短 | +| DMA+环形缓冲区 | 中断少,CPU效率高 | 实现复杂,内存占用大 | 高速大数据流 | + +**选定**:中断+环形缓冲区(现有UART2已验证可行) + +**环形缓冲区设计**: + +```c +#define UART_RX_BUFFER_SIZE 128 // 每个端口接收缓冲区大小 + +typedef struct { + uint8_t buffer[UART_RX_BUFFER_SIZE]; + volatile uint16_t head; // 写入位置(中断写入) + volatile uint16_t tail; // 读取位置(主循环读取) + volatile uint16_t count; // 有效数据计数 +} uart_rx_ring_t; +``` + +**关键约束**: + +- `head`和`tail`使用`volatile`防止编译器优化 +- 缓冲区大小需为2的幂次,便于模运算优化(本项目128=2^7) +- 中断中**只负责**将数据压入缓冲区,**禁止**复杂逻辑 + +#### 3.1.2 数据接收状态机 + +``` + ┌─────────────────────────────────────────┐ + │ UART ISR (每字节) │ + └──────────────────┬──────────────────────┘ + │ + ┌──────────────────▼──────────────────────┐ + │ 写入 rx_ring.buffer[head] │ + │ head = (head + 1) % RX_BUFFER_SIZE │ + │ count++ │ + └──────────────────┬──────────────────────┘ + │ + ┌──────────────────▼──────────────────────┐ + │ count >= RX_BUFFER_SIZE ? │ + │ overflow_count++ (丢弃) │ + │ head 回绕覆盖旧数据 │ + └──────────────────┬──────────────────────┘ + │ + ┌──────────────────▼──────────────────────┐ + │ 启动下次接收: HAL_UART_Receive_IT() │ + └─────────────────────────────────────────┘ +``` + +**防溢出策略**: + +- 新数据覆盖最旧数据(Lossy Ring Buffer) +- 溢出时记录`overflow_count`,供诊断使用 + +### 3.2 统一指令路由模块 + +#### 3.2.1 模块接口设计(关键函数原型) + +```c +/** + * @brief 指令路由模块初始化 + * @note 初始化所有UART端口的接收缓冲区和解析器 + * @param 无 + * @retval 无 + */ +void CmdRouter_Init(void); + +/** + * @brief 向指定端口的解析器喂入数据 + * @note 由UART中断回调调用,线程安全 + * @param port_id: 端口ID (PORT_UART1/PORT_UART2/PORT_UART3) + * @param byte: 接收到的字节 + * @param current_tick: 系统时间戳 + * @retval 无 + */ +void CmdRouter_FeedByte(port_id_t port_id, uint8_t byte, uint32_t current_tick); + +/** + * @brief 指令路由任务(主循环调用) + * @note 轮询所有端口的解析器状态,执行已就绪的指令 + * @param 无 + * @retval 无 + */ +void CmdRouter_Task(void); + +/** + * @brief 发送响应到指定端口 + * @note 根据port_id查找对应UART句柄,发送响应数据 + * @param port_id: 目标端口ID + * @param data: 响应数据缓冲区 + * @param len: 数据长度 + * @retval 无 + */ +void CmdRouter_SendResponse(port_id_t port_id, const uint8_t *data, uint16_t len); + +/** + * @brief 发送格式化响应 + * @note 支持printf风格格式化,自动计算校验和 + * @param port_id: 目标端口ID + * @param fmt: 格式化字符串 + * @retval 无 + */ +void CmdRouter_SendResponseFmt(port_id_t port_id, const char *fmt, ...); +``` + +#### 3.2.2 指令包结构定义 + +```c +/** 端口ID枚举 */ +typedef enum { + PORT_UART1 = 0, /**< RF433模块 */ + PORT_UART2 = 1, /**< 调试串口 */ + PORT_UART3 = 2, /**< RS485模块 */ + PORT_COUNT +} port_id_t; + +/** + * @brief 带源端口信息的指令帧结构 + * @note 解析完成后携带来源端口信息,用于响应路由 + */ +typedef struct { + cmd_frame_t frame; /**< 原始指令帧数据 */ + port_id_t source_port; /**< 指令来源端口 */ + uint32_t recv_tick; /**< 接收完成时间戳 */ +} routed_cmd_frame_t; + +/** + * @brief 端口上下文结构 + * @note 管理每个UART端口的接收缓冲区和解析状态 + */ +typedef struct { + UART_HandleTypeDef *huart; /**< UART句柄指针 */ + const char *name; /**< 端口名称(用于日志) */ + uart_rx_ring_t rx_ring; /**< 接收环形缓冲区 */ + parser_context_t parser; /**< 解析器上下文 */ + uint8_t rx_tmp; /**< 中断接收暂存 */ + uint32_t rx_count; /**< 累计接收字节数 */ + uint32_t error_count; /**< 解析错误计数 */ +} uart_port_context_t; +``` + +#### 3.2.3 与现有`CmdParser`的集成方式 + +**方案:扩展而非修改** + +1. **新增`CmdRouter`层**:封装现有`CmdParser`,添加端口追踪能力 +2. **保持`CmdParser`独立**:不修改现有`cmd_parser.c`,通过回调钩子实现集成 + +**集成接口设计**: + +```c +/** + * @brief 注册指令处理回调 + * @note 当指令解析完成时调用,传入来源端口信息 + * @param callback: 回调函数指针 + * @retval 无 + */ +void CmdParser_RegisterCallback(void (*callback)(const routed_cmd_frame_t *frame)); +``` + +**替代方案(可选)**: + +如果项目允许适度修改`cmd_parser.c`,推荐直接将`send_response_ok/err()`改为通过回调输出: + +```c +// cmd_parser.h 新增 +typedef void (*response_callback_t)(port_id_t port_id, const char *response, uint16_t len); + +void CmdParser_SetResponseCallback(response_callback_t callback); +``` + +### 3.3 多路响应处理模块 + +#### 3.3.1 响应路由表设计 + +```c +/** + * @brief 响应路由表 + * @note 静态表,根据port_id索引查找对应UART句柄 + */ +static UART_HandleTypeDef* const g_port_uart_map[PORT_COUNT] = { + [PORT_UART1] = &huart1, // RF433 + [PORT_UART2] = &huart2, // DEBUG + [PORT_UART3] = &huart3, // RS485 +}; + +/** + * @brief 端口名称表(用于日志输出) + */ +static const char* const g_port_name_map[PORT_COUNT] = { + [PORT_UART1] = "UART1", + [PORT_UART2] = "UART2", + [PORT_UART3] = "UART3", +}; +``` + +#### 3.3.2 响应发送队列管理 + +**设计原则**: + +- 复用现有`UART2_Print`的环形缓冲区机制 +- 为UART1和UART3**各创建一个发送环形缓冲区** +- 发送流程:业务层构造响应 → 写入目标端口缓冲区 → UART Tx ISR驱动发送 + +```c +/** 发送环形缓冲区(与uart2_print结构兼容) */ +typedef struct { + uint8_t buffer[UART_TX_BUFFER_SIZE]; + volatile uint16_t head; + volatile uint16_t tail; + volatile uint16_t count; + volatile bool is_sending; +} uart_tx_ring_t; + +/** 端口发送上下文 */ +typedef struct { + uart_tx_ring_t tx_ring; + UART_HandleTypeDef *huart; + volatile uint16_t overflow_count; +} uart_tx_context_t; +``` + +**关键API**: + +```c +/** + * @brief 初始化指定端口的发送缓冲区 + * @param port_id: 端口ID + * @retval 无 + */ +void MultiUART_TxInit(port_id_t port_id); + +/** + * @brief 发送数据到指定端口(非阻塞) + * @param port_id: 端口ID + * @param data: 数据缓冲区 + * @param len: 数据长度 + * @retval 无 + */ +void MultiUART_Send(port_id_t port_id, const uint8_t *data, uint16_t len); + +/** + * @brief 指定端口发送完成回调(供HAL_UART_TxCpltCallback调用) + * @param port_id: 端口ID + * @retval 无 + */ +void MultiUART_TxCpltCallback(port_id_t port_id); +``` + +### 3.4 增强型调试日志系统 + +#### 3.4.1 日志格式标准(具体示例) + +**基础格式**: + +``` +[HHHHHH][PORT] LEVEL: message\r\n + │ │ │ │ + │ │ │ └── 具体日志内容 + │ │ └───────── 日志级别 (ERROR/WARN/INFO/DEBUG) + │ └─────────────── 来源端口 (UART1/UART2/UART3/ALL) + └─────────────────────── 系统运行时间(十六进制,毫秒) +``` + +**示例输出**: + +``` +[0001F4][UART1] INFO: RX len=12 "$RL,1*2F\r\n" +[0001F5][UART1] INFO: CMD=RL P1=1 valid=true +[0001F6][UART1] INFO: Relay -> ON +[0001F7][UART1] TX: "$OK,RL,1*00\r\n" +[0001F8][UART3] INFO: RX len=15 "$DI,2*5A\r\n" +[0001F9][UART3] INFO: CMD=DI P1=2 valid=true +[0001FA][UART3] INFO: DI2 = HIGH +[0001FB][UART3] TX: "$OK,DI,2,1*2B\r\n" +[00020A][UART1] ERROR: CS mismatch recv=0xA1 calc=0x3C +[00020B][UART1] TX: "$ERR,CS*XX\r\n" +``` + +**十六进制Dump格式(DEBUG级别)**: + +``` +[0001FC][UART1] DEBUG: HEX dump (16 bytes) +[0001FC] 24 52 4C 2C 31 2A 32 46 0D 0A FF FF FF FF FF FF FF + $ R L , 1 * 2 F CR LF +``` + +#### 3.4.2 日志分级与过滤机制 + +**编译期分级**(通过`DEBUG_LOG_LEVEL`宏): + +```c +#define DEBUG_LEVEL_NONE 0 // 全部禁用 +#define DEBUG_LEVEL_ERROR 1 // 仅错误 +#define DEBUG_LEVEL_WARN 2 // 错误+警告 +#define DEBUG_LEVEL_INFO 3 // 错误+警告+信息 +#define DEBUG_LEVEL_DEBUG 4 // 全部 + +#ifndef DEBUG_LOG_LEVEL +#define DEBUG_LOG_LEVEL DEBUG_LEVEL_INFO +#endif + +// 日志宏定义 +#if DEBUG_LOG_LEVEL >= DEBUG_LEVEL_ERROR +#define LOG_ERROR(fmt, ...) UART2_Print_Printf("[%06X][%s] ERROR: " fmt "\r\n", \ + (unsigned int)HAL_GetTick(), port_name, ##__VA_ARGS__) +#else +#define LOG_ERROR(fmt, ...) +#endif + +#if DEBUG_LOG_LEVEL >= DEBUG_LEVEL_WARN +#define LOG_WARN(fmt, ...) UART2_Print_Printf("[%06X][%s] WARN: " fmt "\r\n", \ + (unsigned int)HAL_GetTick(), port_name, ##__VA_ARGS__) +#else +#define LOG_WARN(fmt, ...) +#endif + +#if DEBUG_LOG_LEVEL >= DEBUG_LEVEL_INFO +#define LOG_INFO(fmt, ...) UART2_Print_Printf("[%06X][%s] INFO: " fmt "\r\n", \ + (unsigned int)HAL_GetTick(), port_name, ##__VA_ARGS__) +#else +#define LOG_INFO(fmt, ...) +#endif + +#if DEBUG_LOG_LEVEL >= DEBUG_LEVEL_DEBUG +#define LOG_DEBUG(fmt, ...) UART2_Print_Printf("[%06X][%s] DEBUG: " fmt "\r\n", \ + (unsigned int)HAL_GetTick(), port_name, ##__VA_ARGS__) +#define LOG_HEXDUMP(data, len) Print_HexDump(port_name, data, len) +#else +#define LOG_DEBUG(fmt, ...) +#define LOG_HEXDUMP(data, len) +#endif +``` + +#### 3.4.3 性能影响评估 + +| 指标 | 估算值 | 说明 | +| --------- | ------------ | ------------------- | +| Flash占用增量 | +4KB \~ +6KB | 路由层+日志系统 | +| RAM占用增量 | +1KB \~ +2KB | 环形缓冲区(RX+TX各两个UART) | +| CPU开销 | <5% | 日志仅在指令收发时产生,中断驱动 | +| UART2带宽占用 | 峰值约30% | 假设每帧响应产生约50字节日志 | + +**优化措施**: + +- 使用`__attribute__((section(".flash.text")))`将日志函数放入Flash +- 环形缓冲区大小根据实际数据量调整,避免过大 +- 日志输出异步化,不阻塞主流程 + +### 3.5 资源保护与并发控制 + +#### 3.5.1 共享资源访问冲突解决方案 + +**共享资源识别**: + +| 共享资源 | 访问方 | 潜在冲突 | +| --------------------------- | -------- | ------- | +| `Relay_SetState()` | 多指令入口 | 同时控制继电器 | +| `IO_Monitor_GetState()` | 多指令入口 | 读操作,可并发 | +| `IO_Monitor_GetAllStates()` | 多指令入口 | 读操作,可并发 | +| 环形缓冲区(TX/RX) | 中断 + 主循环 | 需要临界区保护 | + +**解决方案:优先级继承 + 临界区** + +```c +/** + * @brief 继电器控制(线程安全版本) + * @note 内部使用临界区保护,防止并发访问 + * @param port_id: 来源端口(用于日志) + * @param state: 目标状态 + * @retval 无 + */ +void Relay_SetState_Safe(port_id_t port_id, bool state) +{ + uint32_t irq_flags; + __disable_irq(); // 进入临界区 + irq_flags = __get_PRIMASK(); // 保存中断状态 + + // 继电器操作 + Relay_SetState(state); + + // 日志输出(允许中断嵌套,日志本身有保护) + LOG_INFO("Relay -> %s (from %s)", state ? "ON" : "OFF", + g_port_name_map[port_id]); + + __set_PRIMASK(irq_flags); // 恢复中断状态 + __enable_irq(); // 退出临界区 +} +``` + +**中断优先级配置建议**: + +```c +// 在SystemClock_Config()之后调用 +void Configure_UART_Priorities(void) +{ + // STM32F103中断优先级(数字越小优先级越高) + // 建议配置: + // - UART1 (RF433): 优先级=5,子优先级=0(较高优先级) + // - UART2 (DEBUG): 优先级=6,子优先级=0(中优先级) + // - UART3 (RS485): 优先级=5,子优先级=1(与UART1同级别) + // - Systick: 优先级=15(最低,保证系统心跳) + + HAL_NVIC_SetPriority(USART1_IRQn, 5, 0); + HAL_NVIC_SetPriority(USART2_IRQn, 6, 0); + HAL_NVIC_SetPriority(USART3_IRQn, 5, 1); +} +``` + +*** + +## 4. 实施路线图 + +### 阶段1:架构验证与框架搭建(第1-2周) + +**目标**:验证环形缓冲区机制和路由架构的可行性 + +| 任务 | 交付物 | 验收标准 | +| --------------------------------- | ---- | ------------- | +| 1.1 创建`multi_uart_router.c/h`基础框架 | 源码文件 | 编译通过,无语法错误 | +| 1.2 实现UART1/UART3接收环形缓冲区 | 单元测试 | 收发数据一致,无丢失 | +| 1.3 实现端口上下文表和初始化函数 | 函数实现 | 三个端口均可正确初始化 | +| 1.4 实现`CmdRouter_FeedByte()`接口 | 函数实现 | 字节可正确路由到对应解析器 | + +**关键里程碑代码片段**: + +```c +// multi_uart_router.h +#ifndef __MULTI_UART_ROUTER_H +#define __MULTI_UART_ROUTER_H + +#include "usart.h" +#include "cmd_parser.h" + +typedef enum { + PORT_UART1 = 0, + PORT_UART2 = 1, + PORT_UART3 = 2, + PORT_COUNT +} port_id_t; + +void MultiUART_Init(void); +void MultiUART_FeedByte(port_id_t port_id, uint8_t byte, uint32_t tick); +void MultiUART_Task(void); +void MultiUART_Send(port_id_t port_id, const uint8_t *data, uint16_t len); +void MultiUART_SendString(port_id_t port_id, const char *str); + +#endif +``` + +### 阶段2:UART1/RF433接口实现(第3-4周) + +**目标**:UART1能够接收指令并返回响应 + +| 任务 | 交付物 | 验收标准 | +| ------------------------ | ------------------ | ---------------------------- | +| 2.1 修改`main.c`中UART1中断回调 | 修改后main.c | 中断正确调用`MultiUART_FeedByte()` | +| 2.2 实现UART1 TX环形缓冲区发送 | `MultiUART_Send()` | 响应正确发送到UART1 | +| 2.3 实现响应路由功能 | 路由表 | UART1指令响应返回UART1 | +| 2.4 全链路日志打印 | 日志输出 | UART2显示完整收发流程 | + +**关键修改**: + +```c +// main.c 修改 - UART1中断回调 +void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) +{ + if (huart->Instance == USART1) { + MultiUART_FeedByte(PORT_UART1, rf433_uart_rx_tmp, HAL_GetTick()); + HAL_UART_Receive_IT(&huart1, &rf433_uart_rx_tmp, 1); + } + // ... 其他端口保持原样 ... +} +``` + +### 阶段3:UART3/485接口实现(第5-6周) + +**目标**:UART3能够接收指令并返回响应 + +| 任务 | 交付物 | 验收标准 | +| ------------------- | ------ | ------------ | +| 3.1 实现UART3接收中断处理 | 中断处理 | 指令正确喂入解析器 | +| 3.2 实现UART3 TX发送功能 | 发送函数 | 响应正确发送到UART3 | +| 3.3 RS485方向控制(如果需要) | 方向控制逻辑 | 半双工切换正确 | +| 3.4 多端口并发测试 | 测试报告 | 两端口同时收发正常 | + +### 阶段4:集成测试与优化(第7-8周) + +**目标**:系统稳定性和性能优化 + +| 任务 | 交付物 | 验收标准 | +| ------------- | ------ | --------------- | +| 4.1 多接口并发指令测试 | 测试报告 | 无竞争条件、无数据丢失 | +| 4.2 大数据量压力测试 | 压力测试报告 | 1000帧连续收发无错误 | +| 4.3 异常情况处理测试 | 异常测试报告 | 校验失败、超时等处理正确 | +| 4.4 性能优化与内存调整 | 优化报告 | RAM<70%,CPU<80% | + +### 阶段5:文档完善与交付(第9周) + +| 任务 | 交付物 | +| ----------- | --------------------- | +| 5.1 API接口文档 | cmd\_router\_api.md | +| 5.2 修改说明文档 | migration\_guide.md | +| 5.3 测试验证报告 | validation\_report.md | +| 5.4 最终代码归档 | 完整源码包 | + +*** + +## 5. 测试验证计划 + +### 5.1 单元测试策略 + +**测试框架**:使用`unity`或自定义最小测试框架(嵌入式友好) + +| 模块 | 测试用例 | 验证点 | +| ----- | ------------------------ | --------------- | +| 环形缓冲区 | `test_ring_push_pop()` | 数据先进先出,无损坏 | +| 环形缓冲区 | `test_ring_overflow()` | 溢出时旧数据被覆盖 | +| 环形缓冲区 | `test_ring_concurrent()` | 中断+主循环并发安全 | +| 路由表 | `test_port_lookup()` | 端口ID正确映射到UART句柄 | +| 响应构造 | `test_response_format()` | 校验和计算正确 | + +### 5.2 集成测试用例 + +#### 5.2.1 多接口并发指令测试 + +**测试场景**:同时从UART1和UART3发送继电器控制指令 + +**测试步骤**: + +1. UART1发送:`$RL,1*2F`(期望Relay开启) +2. UART3发送:`$RL,0*2E`(期望Relay关闭) +3. 间隔50ms交替发送10轮 + +**验收标准**: + +- 每次操作后继电器状态与最后一条指令一致 +- 两个端口各自收到正确的响应帧 +- UART2日志完整记录所有收发过程 + +#### 5.2.2 大数据量压力测试 + +**测试场景**:连续快速发送1000帧指令 + +**测试步骤**: + +1. UART1以10ms间隔连续发送DI查询指令 +2. 记录丢包率、错误率 +3. 监测RAM占用峰值 + +**验收标准**: + +- 丢包率 < 0.1% +- 无内存溢出 +- 平均响应时间 < 20ms + +#### 5.2.3 异常情况处理测试 + +| 测试场景 | 输入 | 期望行为 | +| ---------- | --------------------- | ------------------- | +| 校验和错误 | `$RL,1*A1`(实际应为2F) | 返回`$ERR,CS*XX`,日志记录 | +| 未知命令 | `$ABC*00` | 返回`$ERR,CMD*XX` | +| 参数越界 | `$DI,5*XX`(通道1-4) | 返回`$ERR,PARAM*XX` | +| 帧超时 | 发送`$RL`后等待2秒 | 解析器重置,日志输出timeout | +| 端口同时发送相同指令 | UART1和UART3同时发`$ECHO` | 各自收到独立响应 | + +### 5.3 验收标准 + +| 指标 | 目标值 | 测量方法 | +| --------- | ---------- | ----------- | +| 指令处理成功率 | ≥99.5% | 1000帧测试统计 | +| 响应延迟 | ≤50ms(P99) | 示波器或时间戳统计 | +| Flash占用增量 | ≤8KB | 编译后.map文件分析 | +| RAM占用增量 | ≤2KB | 运行时内存分析 | +| CPU空闲率 | ≥70% | Systick空闲计数 | + +*** + +## 6. 风险评估与应对 + +### 6.1 技术风险 + +| 风险 | 概率 | 影响 | 应对措施 | +| --------------------- | -- | -- | ----------------------------------------- | +| **数据丢失**:高频率指令导致缓冲区溢出 | 中 | 高 | 1. 动态调整缓冲区大小2. 实现流量控制(XOFF/XON)3. 丢帧时日志记录 | +| **响应延迟**:复杂指令阻塞发送 | 中 | 中 | 1. 指令处理异步化2. 预计算校验和3. DMA加速发送 | +| **竞争条件**:多端口同时访问继电器 | 低 | 高 | 1. 临界区保护2. 命令队列化3. 最小切换间隔保护(已有) | +| **内存碎片**:频繁分配/释放 | 低 | 中 | 1. 全部使用静态缓冲区2. 避免动态malloc | + +### 6.2 资源风险 + +| 风险 | 概率 | 影响 | 应对措施 | +| ---------------------- | -- | -- | --------------------------------------------------------------------------- | +| **Flash不足**:代码量超过64KB | 低 | 高 | 1. 启用-O2优化2. 精简日志字符串3. 评估裁剪非必要功能 | +| **RAM不足**:缓冲区+解析器上下文超支 | 低 | 高 | 1. 缓冲区实际需求计算: RX: 3×128=384B TX: 2×256=512B 解析器: 3×128B=384B 总计约1.3KB(余量充足) | +| **中断风暴**:高频率字节接收导致系统假死 | 低 | 高 | 1. 配置合适的中断优先级2. 使用DMA分担CPU负载 | + +### 6.3 应对措施优先级 + +``` +P0(立即处理): +├─ 临界区保护实现(防止竞争条件) +└─ 环形缓冲区溢出处理(日志+计数) + +P1(本阶段完成): +├─ 中断优先级配置 +└─ 内存使用量测量验证 + +P2(集成测试阶段): +├─ 压力测试暴露潜在问题 +└─ 性能优化调参 +``` + +*** + +## 7. 附录 + +### 附录A:关键数据结构定义 + +```c +/** + * @brief 接收环形缓冲区 + */ +typedef struct { + uint8_t buffer[UART_RX_BUFFER_SIZE]; + volatile uint16_t head; /**< 写入索引 */ + volatile uint16_t tail; /**< 读取索引 */ + volatile uint16_t count; /**< 有效数据计数 */ +} uart_rx_ring_t; + +/** + * @brief 发送环形缓冲区 + */ +typedef struct { + uint8_t buffer[UART_TX_BUFFER_SIZE]; + volatile uint16_t head; + volatile uint16_t tail; + volatile uint16_t count; + volatile bool is_sending; + volatile uint16_t overflow_count; +} uart_tx_ring_t; + +/** + * @brief 端口上下文 + */ +typedef struct { + UART_HandleTypeDef *huart; + const char *name; + uart_rx_ring_t rx_ring; + uart_tx_ring_t tx_ring; + parser_context_t parser; + uint8_t rx_tmp; + uint32_t rx_count; + uint32_t error_count; +} uart_port_context_t; + +/** + * @brief 带路由信息的指令帧 + */ +typedef struct { + cmd_frame_t frame; + port_id_t source_port; + uint32_t recv_tick; +} routed_cmd_frame_t; +``` + +### 附录B:接口API文档 + +#### B.1 CmdRouter模块 + +| 函数 | 原型 | 说明 | +| --------------------------- | -------------------------------------------------------------------------------- | ------------ | +| `CmdRouter_Init` | `void CmdRouter_Init(void)` | 初始化所有端口上下文 | +| `CmdRouter_FeedByte` | `void CmdRouter_FeedByte(port_id_t port, uint8_t byte, uint32_t tick)` | 向指定端口喂入数据 | +| `CmdRouter_Task` | `void CmdRouter_Task(void)` | 主循环调用,处理就绪指令 | +| `CmdRouter_SendResponse` | `void CmdRouter_SendResponse(port_id_t port, const uint8_t *data, uint16_t len)` | 发送原始响应 | +| `CmdRouter_SendResponseFmt` | `void CmdRouter_SendResponseFmt(port_id_t port, const char *fmt, ...)` | 发送格式化响应 | + +#### B.2 DebugLog模块 + +| 宏 | 说明 | +| ------------------------ | ----------- | +| `LOG_ERROR(fmt, ...)` | 错误级别日志 | +| `LOG_WARN(fmt, ...)` | 警告级别日志 | +| `LOG_INFO(fmt, ...)` | 信息级别日志 | +| `LOG_DEBUG(fmt, ...)` | 调试级别日志 | +| `LOG_HEXDUMP(data, len)` | 十六进制内存 dump | + +#### B.3 回调接口 + +```c +/** + * @brief 指令执行完成回调(由CmdRouter内部调用) + * @param frame: 带路由信息的指令帧 + * @retval 无 + */ +void App_OnCommandReceived(const routed_cmd_frame_t *frame); +``` + +### 附录C:响应格式规范 + +**成功响应**:`$OK[,content]*CS\r\n` + +- 示例:`$OK,RL,1*00\r\n`(继电器控制成功) +- 示例:`$OK,DI,1101*2B\r\n`(四路DI状态) + +**错误响应**:`$ERR,err_code*CS\r\n` + +- err\_code: PARAM(参数错误)、CS(校验和错误)、CMD(未知命令)、TIMEOUT(超时) +- 示例:`$ERR,CS*XX\r\n` + +**事件上报**:`$DI_EVENT,channel,state*CS\r\n` + +- 示例:`$DI_EVENT,1,1*A5\r\n`(通道1变为高电平) + +*** + +## 文档版本历史 + +| 版本 | 日期 | 作者 | 变更说明 | +| --- | ---------- | --- | ------ | +| 1.0 | 2026-03-27 | 架构师 | 初始版本创建 | + +*** + +**文档结束**