iR58/bk_aidk/projects/lock_lfvx/.svn/pristine/a3/a3b44a8d439d41df83eb2b9ec5d263df7441bec5.svn-base

204 lines
4.0 KiB
Plaintext
Raw Normal View History

2025-05-08 18:01:52 +08:00
#ifndef __ILOCK_H__
#define __ILOCK_H__
#ifdef __cplusplus
extern "C" {
#endif
#define ILOCK_STATE_OPENED 0
#define ILOCK_STATE_CLOSED 1
#define CMD_CLOSE_LOCK 0x41
#define CMD_OPEN_LOCK 0x40
#define CMD_OPEN_LOCK_SOS 0x4A
#define CMD_PING 0x49
#define CMD_OPEN_CAMERA 0x49
#define CMD_CLOSE_CAMERA 0x49
#define CMD_PLAY_VOICE 0x48
#define CMD_SET_UTC 0x12
#define CMD_READ_STATE 0x44
#define CMD_READ_VERSION 0x21
#define CMD_READ_SERIALNO 0x20
#define CMD_FACTORY_RESET 0x24
#define CMD_LOCK_READ_FIRMWARE_VERSION 0x21
typedef struct
{
int cmd_type;
char * message_id[64];
uint8_t cmd[128];
int cmd_len;
int retry_count;
int timeout;
int resp_state;//0 无回应1-有回应
int cmd_result;
int serial_no;
} lock_command_t;
typedef struct
{
int serial_no;//指令序号
int cmd_type;//指令
int cmd_result;//指令结果
uint8_t data[128];//返回数据
uint8_t data_len;//返回长度
} lock_package_t;
int ilock_send_lock_commond(char *message_id,int cmdType,int param);
typedef struct ilock_dev
{
/**
* 门状态
*/
uint8_t lock_door_state;
/**
* 供电状态
*/
uint8_t lock_power_supply;
/**
* 锁状态
*/
uint8_t lock_lock_state;
/**
* 电池状态
*/
uint8_t lock_batt_state;
/**
* 电池电量
*/
uint8_t lock_batt_value;
/**反锁状态*/
uint8_t lock_lockedin_state;
/**钥匙禁用*/
uint8_t lock_disable_lock_state;
char lock_params [32];
}ilock_dev;
extern ilock_dev dev_info_lasted;
typedef struct ilock_client_cb_ops{
/*
*门铃事件
*/
void (*event_doorbell)(int audio, int video);
void (*event_lock_upload_state)(int state);
void (*event_lock_serial_no)(char* serial_no ,int serial_no_len);
void (*event_lock_version)(char* version ,int version_len);
/**
* 关锁 0-关锁失败 1- 关锁成功
*/
void (*event_lock_lock)(int state);//
/*
* 开锁 0 -开锁失败 1- 开锁成功
*/
void (*event_lock_unlock)(int state); //0-fail 1-succ
/*
* 紧急开锁 0 -开锁失败 1- 开锁成功
*/
void (*event_lock_unlock_sos)(int state); //0-fail 1-succ
/**
* 配网事件
*/
void (*event_network_boarding)();
void (*event_lock_state)(ilock_dev *dev_info);
void (*event_lock_params)(char *params, int len);
void (*event_lock_recv_data)(uint8_t *data, int len);
//void (*event_lock_state)(int lockedin_state,int lock_state ,int door_state, int batt_state, int batt_cap, int lock_disable_lock_state);
}ilock_client_cb_ops_t;
void ilock_init(void);
void ilock_uart_init(void);
void ilock_uart_deinit();
void ilock_rx_start();
void ilock_rx_stop();
void ilock_uart_enable_rx();
void ilock_deinit(void);
void ilock_set_callback(ilock_client_cb_ops_t *cb_ops);
/**
* 开锁
*/
int ilock_open_lock();
/**
* 开锁SOS
*/
int ilock_open_lock_sos();
int ilock_read_status();
/**
* 关锁
*/
int ilock_close_lock();
/**
* 反锁
*/
int ilock_enable_lockout();
/**
* 解除反锁
*/
int ilock_disable_lockout();
/**
* 钥匙启用
*/
int ilock_enable_key();
/**
* 钥匙禁用
*/
int ilock_disable_key();
int ilock_read_state();
int ilock_read_version();
int ilock_read_serialno();
int ilock_set_utc(long utc);
/*
*获取锁体参数
*/
int ilock_read_lock_params();
int ilock_ping();
int ilock_play_voice(int voice_index);
int ilock_open_camera();
int ilock_close_camera();
/**
* 恢复出厂设置
*/
int ilock_factory_reset();
/*
*给锁控制板发送消息
*/
int ilock_sendData(char* data,int len);
char * ilock_client_get_device_id();
#ifdef __cplusplus
}
#endif
#endif