129 lines
3.6 KiB
C
129 lines
3.6 KiB
C
|
#include "smartbox/config.h"
|
||
|
#include "smartbox/command.h"
|
||
|
#include "btstack/avctp_user.h"
|
||
|
#include "smartbox/event.h"
|
||
|
#include "system/timer.h"
|
||
|
#include "le_smartbox_module.h"
|
||
|
#include "smartbox_rcsp_manage.h"
|
||
|
|
||
|
#if (SMART_BOX_EN)
|
||
|
|
||
|
void smartbox_command_send_bt_scan_result(char *name, u8 name_len, u8 *addr, u32 dev_class, char rssi)
|
||
|
{
|
||
|
u8 send_len = sizeof(dev_class) + 6 + sizeof(rssi) + sizeof(name_len) + name_len;
|
||
|
u8 *send_buf = (u8 *)zalloc(send_len);
|
||
|
if (send_buf == NULL) {
|
||
|
return ;
|
||
|
}
|
||
|
WRITE_BIG_U32(send_buf, dev_class);
|
||
|
memcpy(send_buf + sizeof(dev_class), addr, 6);
|
||
|
memcpy(send_buf + sizeof(dev_class) + 6, &rssi, 1);
|
||
|
memcpy(send_buf + sizeof(dev_class) + 6 + sizeof(rssi), &name_len, 1);
|
||
|
memcpy(send_buf + sizeof(dev_class) + 6 + sizeof(rssi) + sizeof(name_len), name, name_len);
|
||
|
JL_CMD_send(JL_OPCODE_SYS_UPDATE_BT_STATUS, send_buf, send_len, JL_NOT_NEED_RESPOND);
|
||
|
free(send_buf);
|
||
|
printf("bt name = %s\n", name);
|
||
|
}
|
||
|
|
||
|
void smartbox_command_send_conncecting_bt_status(u8 *addr, u8 status)
|
||
|
{
|
||
|
u8 send_buf[7] = {0};
|
||
|
send_buf[0] = status;
|
||
|
memcpy(send_buf, addr, 6);
|
||
|
JL_CMD_send(JL_OPCODE_SYS_EMITTER_BT_CONNECT_STATUS, send_buf, sizeof(send_buf), JL_NOT_NEED_RESPOND);
|
||
|
}
|
||
|
|
||
|
|
||
|
#if RCSP_ADV_FIND_DEVICE_ENABLE
|
||
|
static u16 find_device_timer = 0;
|
||
|
static u8 find_device_key_flag = 0;
|
||
|
static void smartbox_command_send_find_device(void *priv)
|
||
|
{
|
||
|
struct smartbox *smart = (struct smartbox *) priv;
|
||
|
if (smart == NULL) {
|
||
|
return ;
|
||
|
}
|
||
|
if (!smart->find_dev_en) {
|
||
|
return;
|
||
|
}
|
||
|
// 查找手机 播放铃声 超时时间(默认10s)
|
||
|
u8 send_buf[4] = {0x00, 0x01, 0x00, 0x0A};
|
||
|
JL_CMD_send(JL_OPCODE_SYS_FIND_DEVICE, send_buf, sizeof(send_buf), JL_NOT_NEED_RESPOND);
|
||
|
}
|
||
|
|
||
|
u8 smartbox_find_device_key_flag_get(void)
|
||
|
{
|
||
|
return find_device_key_flag;
|
||
|
}
|
||
|
|
||
|
void smartbox_send_find_device_stop(void)
|
||
|
{
|
||
|
struct smartbox *smart = smartbox_handle_get();
|
||
|
if (smart == NULL || 0 == get_rcsp_connect_status()) {
|
||
|
return ;
|
||
|
}
|
||
|
if (!smart->find_dev_en) {
|
||
|
return ;
|
||
|
}
|
||
|
// 查找手机 关闭铃声 超时时间(不限制)
|
||
|
u8 send_buf[4] = {0x00, 0x00, 0x00, 0x00};
|
||
|
JL_CMD_send(JL_OPCODE_SYS_FIND_DEVICE, send_buf, sizeof(send_buf), JL_NOT_NEED_RESPOND);
|
||
|
}
|
||
|
|
||
|
void smartbox_find_device_reset(void)
|
||
|
{
|
||
|
find_device_key_flag = 0;
|
||
|
if (find_device_timer) {
|
||
|
sys_timeout_del(find_device_timer);
|
||
|
find_device_timer = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void smartbox_stop_find_device(void *priv)
|
||
|
{
|
||
|
smartbox_find_device_reset();
|
||
|
smartbox_send_find_device_stop();
|
||
|
|
||
|
extern void smartbox_set_vol_for_find_device(u8 vol_flag);
|
||
|
smartbox_set_vol_for_find_device(find_device_key_flag);
|
||
|
}
|
||
|
|
||
|
void find_device_timeout_handle(u32 sec)
|
||
|
{
|
||
|
find_device_key_flag = 1;
|
||
|
if (sec && (0 == find_device_timer)) {
|
||
|
find_device_timer = sys_timeout_add(NULL, smartbox_stop_find_device, sec * 1000);
|
||
|
}
|
||
|
|
||
|
extern void smartbox_set_vol_for_find_device(u8 vol_flag);
|
||
|
smartbox_set_vol_for_find_device(find_device_key_flag);
|
||
|
}
|
||
|
|
||
|
void smartbox_find_device(void)
|
||
|
{
|
||
|
struct smartbox *smart = smartbox_handle_get();
|
||
|
if (smart == NULL || 0 == get_rcsp_connect_status()) {
|
||
|
return ;
|
||
|
}
|
||
|
if (!smart->find_dev_en) {
|
||
|
return ;
|
||
|
}
|
||
|
|
||
|
if (find_device_key_flag) {
|
||
|
smartbox_stop_find_device(NULL);
|
||
|
} else {
|
||
|
find_device_key_flag = 1;
|
||
|
if ((1 == smart->A_platform) && (0 != get_curr_channel_state())) {
|
||
|
// IOS平台
|
||
|
user_send_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL);
|
||
|
}
|
||
|
smartbox_command_send_find_device(smart);
|
||
|
}
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif//SMART_BOX_EN
|
||
|
|
||
|
|