AP05/redis_sn/redis_sn_client.h

84 lines
2.6 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.

#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