84 lines
2.6 KiB
C
84 lines
2.6 KiB
C
#ifndef REDIS_SN_CLIENT_H
|
||
#define REDIS_SN_CLIENT_H
|
||
|
||
#include <stddef.h>
|
||
|
||
// 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
|