Files
menu/port/menu_port.h
2025-12-18 22:24:25 +08:00

74 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file menu_port.h
* @brief 菜单组件硬件端口层接口定义(用户需要实现的硬件相关接口)
* @note 工业级嵌入式菜单组件 - 硬件端口层
*/
#ifndef MENU_PORT_H
#define MENU_PORT_H
#include <stdarg.h>
#include <stdint.h>
/************************** 硬件端口层接口声明 **************************/
/**
* @brief 硬件打印接口(可变参数版本)
* @param fmt 格式化字符串
* @param args 可变参数列表
* @note 用户需要实现此接口,用于调试信息输出
*/
void menu_port_printf(const char* fmt, va_list args);
/**
* @brief 获取系统滴答时间(毫秒级)
* @return 当前系统滴答时间ms
* @note 用户需要实现此接口,用于菜单的定时和超时处理
*/
uint32_t menu_port_get_tick(void);
/**
* @brief 硬件延迟函数(毫秒级)
* @param ms 延迟时间ms
* @note 用户需要实现此接口,用于必要的延迟操作
*/
void menu_port_delay_ms(uint32_t ms);
/**
* @brief 菜单显示接口
* @param menu_name 菜单名称字符串
* @param menu_id 菜单ID
* @note 用户需要实现此接口,用于在硬件上显示菜单内容
*/
void menu_port_display(const char* menu_name, uint16_t menu_id);
/**
* @brief 按键扫描接口(可选)
* @return 当前按键事件MenuEventType类型
* @note 用户可以实现此接口也可以在自己的主循环中调用menu_post_event发送按键事件
*/
// MenuEventType menu_port_key_scan(void);
#include "menu.h"
#if MENU_CONFIG_ENABLE_MODBUS_MAP
/**
* @brief Modbus硬件发送数据接口用户需实现如RS485发送
* @param reg_type 寄存器类型
* @param reg_addr 寄存器地址
* @param reg_buf 数据缓冲区
* @param buf_len 数据长度
* @return 错误码
*/
MenuErrCode menu_port_modbus_send(ModbusRegType reg_type, uint16_t reg_addr, const uint8_t* reg_buf, uint8_t buf_len);
/**
* @brief Modbus硬件接收数据接口用户需实现如RS485接收
* @param reg_type 寄存器类型
* @param reg_addr 寄存器地址
* @param reg_buf 数据缓冲区
* @param buf_len 数据长度
* @return 错误码
*/
MenuErrCode menu_port_modbus_receive(ModbusRegType reg_type, uint16_t reg_addr, uint8_t* reg_buf, uint8_t buf_len);
#endif // MENU_CONFIG_ENABLE_MODBUS_MAP
#endif // MENU_PORT_H