231 lines
4.6 KiB
C
Executable File
231 lines
4.6 KiB
C
Executable File
#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
|
||
|
||
/**
|
||
* 0x1:请求包,都需要回复
|
||
0x2:响应包,回复执行结果
|
||
0x3:回执包,仅通知收到(高 4BIT)
|
||
*/
|
||
#define CMD_TYPE_REQ 0x01
|
||
#define CMD_TYPE_RET 0x02
|
||
#define CMD_TYPE_REC 0x03//receipt
|
||
|
||
typedef struct
|
||
{
|
||
int serial_no;//指令序号
|
||
int cmd_type;
|
||
char message_id[32];
|
||
uint8_t cmds[128];
|
||
int cmd_len;
|
||
int retry_count;
|
||
int timeout;
|
||
int resp_state;//0 无回应,1-有回应
|
||
int cmd_result;
|
||
|
||
} 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;
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t data[64];//返回数据
|
||
uint8_t data_len;//返回长度
|
||
} ota_version_t;
|
||
|
||
int ilock_send_lock_commond(char *message_id,int cmdType,int param);
|
||
|
||
|
||
typedef struct ilock_dev
|
||
{
|
||
uint8_t event_code;
|
||
/**
|
||
* 门状态
|
||
*/
|
||
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(int uid);
|
||
|
||
/**
|
||
* 开锁SOS
|
||
*/
|
||
int ilock_open_lock_sos(int uid);
|
||
int ilock_read_status();
|
||
/**
|
||
* 关锁
|
||
*/
|
||
int ilock_close_lock(int uid);
|
||
|
||
/**
|
||
* 反锁
|
||
*/
|
||
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();
|
||
|
||
//OTA
|
||
int ilock_client_is_ota_mode();
|
||
int ilock_client_ota_start(int target,uint8_t* data, int data_len);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
#endif
|