#ifndef REDIS_SN_CLIENT_H #define REDIS_SN_CLIENT_H #include // Redis SN客户端配置 #define REDIS_HOST "180.163.74.83" // Redis服务器地址 #define REDIS_PORT 6379 // Redis端口 #define REDIS_PASSWORD "Zzh08165511" // Redis密码 #define SN_POOL_KEY "Zzh08165511" // SN池键名 #define MAX_SN_LENGTH 64 // 最大SN长度 #define REDIS_CONNECTION_TIMEOUT 5 // 连接超时时间(秒) /** * 初始化Redis SN客户端 * @return 0成功,-1失败 */ int init_redis_sn_client(); /** * 从Redis SN池中获取一个唯一的设备SN * @param sn_buffer 用于存储获取到的SN的缓冲区 * @param buffer_size 缓冲区大小 * @return 0成功,-1失败 */ int get_device_sn_from_redis(char *sn_buffer, size_t buffer_size); /** * 从Redis SN池中获取设备SN和MAC地址 * @param sn_buffer 用于存储获取到的SN的缓冲区 * @param sn_buffer_size SN缓冲区大小 * @param mac_buffer 用于存储获取到的MAC地址的缓冲区 * @param mac_buffer_size MAC缓冲区大小 * @return 0成功,-1失败 */ int get_device_sn_and_mac_from_redis(char *sn_buffer, size_t sn_buffer_size, char *mac_buffer, size_t mac_buffer_size); /** * 格式化MAC地址,添加冒号分隔符 * @param raw_mac 原始MAC地址(如90A9F73005FB) * @param formatted_mac 格式化后的MAC地址缓冲区(如90:A9:F7:30:05:FB) * @param buffer_size 缓冲区大小 * @return 0成功,-1失败 */ int format_mac_address(const char *raw_mac, char *formatted_mac, size_t buffer_size); /** * 检查SN池中剩余的SN数量 * @return SN数量,-1表示失败 */ int check_sn_pool_count(); /** * 根据生产批次号码从Redis中查找对应的SN和MAC地址 * @param batch_number 生产批次号码(如D20250422006504) * @param sn_buffer 用于存储获取到的SN的缓冲区 * @param sn_buffer_size SN缓冲区大小 * @param mac_buffer 用于存储获取到的MAC地址的缓冲区 * @param mac_buffer_size MAC缓冲区大小 * @return 0成功,-1失败 */ int get_sn_mac_by_batch_number(const char *batch_number, char *sn_buffer, size_t sn_buffer_size, char *mac_buffer, size_t mac_buffer_size); /** * 测试Redis连接 * @return 0成功,-1失败 */ int test_redis_connection(); /** * 清理Redis SN客户端资源 */ void cleanup_redis_sn_client(); /** * 发送审计日志到Redis * @param batch 批次号 * @param mac MAC地址 * @param note 备注(可为NULL) * @return 0成功,-1失败 */ int send_audit_to_redis(const char *batch, const char *mac, const char *note); #endif // REDIS_SN_CLIENT_H