/**
 * @file    app_modules.h
 * @brief   应用模块注册表 — X-Macro 中心化列表
 * @details 此文件故意不设 include guard，因为需要被多次包含
 *          （每次在不同的 APP_MODULE 宏定义下展开）。
 *          新增模块只需在此文件中追加一行，无需修改其他代码。
 *
 * 格式: APP_MODULE(枚举后缀, 配置名, init1, init2, 线程入口)
 *   - 枚举后缀: 用于生成 ENUM_APP_<后缀> 枚举值（大写）
 *   - 配置名:   用于生成 "app_<配置名>" 名称字符串（小写）
 *   - init1:    阶段1 初始化函数（信号注册前）
 *   - init2:    阶段2 初始化函数（信号注册后，可为 NULL）
 *   - 线程入口: 主循环入口函数（独立线程中运行）
 */

#ifndef APP_MODULE
#error "APP_MODULE macro must be defined before including app_modules.h"
#endif

/* ============== 线程模块（system/ 子目录） ============== */
// APP_MODULE(MODBUS_M,  modbus_m,  app_modbus_m_init1,  app_modbus_m_init2,  app_modbus_m)
APP_MODULE(WEB_SERVER, web_server, app_web_server_init1, app_web_server_init2, app_web_server)
APP_MODULE(COM_ROUTER, com_router, app_com_router_init1, app_com_router_init2, app_com_router)
APP_MODULE(SELF_PTL,  self_ptl,  app_self_ptl_init1,  app_self_ptl_init2,  app_self_ptl)
APP_MODULE(IEC,        iec,        app_iec_init1,        app_iec_init2,        app_iec)
APP_MODULE(PLC,         plc,        app_plc_init1,        app_plc_init2,        app_plc)

/* ============== 预留模块（阶段 2-3 实现后取消注释） ============== */
// APP_MODULE(COM_DECODE, com_decode, app_com_decode_init1, app_com_decode_init2, app_com_decode)
// APP_MODULE(IEC,        iec,        app_iec_init1,        app_iec_init2,        app_iec)
// APP_MODULE(WEB_SERVER, web_server,  app_web_server_init1, app_web_server_init2, app_web_server)
