2、增加VOX持续输出0V以唤醒耳机的情况; 3、解决超长按后,双向通讯一直发码的问题;(松开按键后Key_Press_ll_irq设为FALSE) 4、解决关盖上电时,不亮灯和不发码的问题(即把Hall_Sta_bk初始化); 5、长按发配对码时,主副耳的选择提取到config.h中;
259 lines
5.8 KiB
C
259 lines
5.8 KiB
C
/*
|
||
******************************************************************************
|
||
*
|
||
* @file vox_comm.h
|
||
* @brief VOX Communicate module
|
||
* @ic sy8837/8/9
|
||
*
|
||
* @version 1.0
|
||
* @date 2025/02/13 017:40:40
|
||
* @author Alex Xu
|
||
*
|
||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||
* All Rights Reserved
|
||
*
|
||
* History:
|
||
* Revision Date Author Desc
|
||
* 1.0.0 2025/02/13 Alex build this file
|
||
******************************************************************************
|
||
*/
|
||
#ifndef __VOX_COMM_H__
|
||
#define __VOX_COMM_H__
|
||
|
||
/*_____ I N C L U D E S ____________________________________________________*/
|
||
|
||
#include "define.h"
|
||
|
||
|
||
/******************************************************************************\
|
||
Macro definitions
|
||
\******************************************************************************/
|
||
|
||
/*耳机通道选择*/
|
||
|
||
#define TWS_VOL 0x04
|
||
#define TWS_VOR 0x05
|
||
#define TWS_BOX 0x02
|
||
#define TWS_PC 0x03
|
||
|
||
/*100ms调用周期*/
|
||
#define KEY_TWS_PAIR_TIMER 3
|
||
|
||
#define KEY_TWS_PAIR_CNT 10
|
||
|
||
#define Vox_COM_MSG_Tim 20
|
||
|
||
#if XUANHENG
|
||
|
||
#define BOXHEADER (0xAAU) //VOX通讯数据包头
|
||
|
||
#else
|
||
|
||
#define BOXHEADER (0x55AAUL) //VOX通讯数据包头
|
||
|
||
#define EARPHONE_HEADER_HIGH (0x55U)
|
||
#define EARPHONE_HEADER_LOW (0xAAU)
|
||
|
||
#define BOXIDCODE (0xFFU) //VOX通讯耳机->仓数据包头
|
||
|
||
#endif
|
||
|
||
#define Vox_TX_Interval (2U) //Vox定时发送指令时间间隔
|
||
|
||
#define Vox_TX_Interval_2 (4U)
|
||
|
||
#define TIM_SHUTDOWN_DEBOUNCE (600UL) //关机前debounce时间
|
||
|
||
/******************************************************************************\
|
||
Typedef definitions
|
||
\******************************************************************************/
|
||
#ifdef VOX_COMM_ENABLE
|
||
|
||
/* 双向通讯功能场景参数。 */
|
||
typedef struct VOX_COMM
|
||
{
|
||
#ifdef VOX_COVER_ENABLE
|
||
|
||
uint8_t Cover_Close_Flag :1; //关盖发码标志位
|
||
uint8_t Cover_Open_Flag :1; //开盖发码标志位
|
||
uint8_t Vox_Chg_Full_Flag :1; //耳机充满发关机码标志位
|
||
|
||
#else
|
||
|
||
uint8_t Vol_GetInto_Box_Flag :1; //VOL耳机入盒发码标志位
|
||
uint8_t Vor_GetInto_Box_Flag :1; //VOR耳机入盒发码标志位
|
||
|
||
uint8_t Vol_Chg_Full_Flag :1; //VOL耳机充满发码标志位
|
||
uint8_t Vor_Chg_Full_Flag :1; //VOR耳机充满发码标志位
|
||
|
||
#endif
|
||
|
||
uint8_t Key_L_2S_Flag :1; //按键2s发码标志位
|
||
uint8_t Key_LL_8s_Flag :1; //按键8s发码标志位
|
||
/*发码相关计时器*/
|
||
uint8_t Msg_TX_Debounce;
|
||
uint8_t Msg_TX_Debounce1;
|
||
|
||
/*按键发码相关计时器*/
|
||
uint8_t Key_TWS_Pair_Tim;
|
||
uint8_t Key_TWS_Clear_Pair_Tim;
|
||
uint8_t Key_TWS_Pair_Cnt;
|
||
|
||
}Vox_Comm_Cfg;
|
||
|
||
extern Vox_Comm_Cfg gVox_Comm;
|
||
|
||
#endif
|
||
|
||
#if JIELI
|
||
|
||
/*耳机通道选择*/
|
||
typedef enum {
|
||
|
||
VOL_CHAN = 0x00,
|
||
|
||
VOR_CHAN = 0x01,
|
||
|
||
VOX_BOTH = 0xFF,
|
||
|
||
}e_Vox_Chan;
|
||
|
||
/*耳机和充电仓进行双向通讯的协议命令ID。*/
|
||
typedef enum _VOX_BES_COMMAND_E
|
||
{
|
||
|
||
VHOUSE_CMD_PAIR = 0x01, //充电仓发起的配对信息
|
||
|
||
VHOUSE_CMD_EXCH_TWS_BTADDR = 0x02, //交换对耳的蓝牙地址信息。
|
||
|
||
VHOUSE_CMD_CLEAR_PAIR = 0x03, //清配对信息
|
||
|
||
VHOUSE_CMD_OPEN_BOX = 0x06, //开盖获取电量包
|
||
|
||
VHOUSE_CMD_CLOSE_WIN_GET_VBAT = 0x07, //关盖获取电量包
|
||
|
||
VHOUSE_CMD_RST = 0x08, //
|
||
|
||
VHOUSE_CMD_PWROFF = 0x80, //关机消息
|
||
|
||
VHOUSE_CMD_CLOSE_BOX = 0x81,
|
||
|
||
BES_RESET = 0xE1,
|
||
|
||
}VOX_BES_COMMAND_E;
|
||
|
||
#elif ZHONGKE
|
||
|
||
/*耳机通道选择*/
|
||
typedef enum {
|
||
|
||
VOL_CHAN = 0x11,
|
||
|
||
VOR_CHAN = 0x22,
|
||
|
||
VOX_BOTH = 0xff,
|
||
|
||
}e_Vox_Chan;
|
||
|
||
/*耳机和充电仓进行双向通讯的协议命令ID。*/
|
||
typedef enum _VOX_BES_COMMAND_E
|
||
{
|
||
VHOUSE_CMD_GET_VBAT = 0x01, //获取电池电量,也可作为开始标志
|
||
|
||
VHOUSE_CMD_PAIR, //充电仓发起的配对信息
|
||
|
||
VHOUSE_CMD_GET_TWS_BTADDR, //获取对耳的蓝牙地址信息,充电仓无需使用本命令,本命令为对耳相互转发,充电仓只作转发缓存,收到该命令后,copy给另一只对耳即可。
|
||
|
||
VHOUSE_CMD_CLEAR_PAIR, //清除配对信息
|
||
|
||
VHOUSE_CMD_PWROFF, //关机消息
|
||
|
||
VHOUSE_CMD_ERR, //接收消息错误
|
||
|
||
VHOUSE_CMD_SUCCESS, //成功响应
|
||
|
||
VHOUSE_CMD_CLOSE_WINDOW, //关盖
|
||
|
||
VHOUSE_CMD_OPEN_WINDOW, //开盖
|
||
|
||
VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //关盖获取电量包
|
||
|
||
VHOUSE_CMD_ENABLE_POPUP = 0x80, //开关弹窗功能控制
|
||
|
||
VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //客户保留指令
|
||
|
||
BES_RESET = 0xE1,
|
||
|
||
VHOUSE_CMD_CUSTOM_RESV_END = 0xEF,
|
||
|
||
VHOUSE_CMD_SYS_RST = 0xFF, //系统复位指令
|
||
|
||
}VOX_BES_COMMAND_E;
|
||
|
||
#elif XUANHENG
|
||
|
||
/*耳机通道选择*/
|
||
|
||
#define TWS_VOL 0x04
|
||
#define TWS_VOR 0x05
|
||
#define TWS_BOX 0x02
|
||
#define TWS_PC 0x03
|
||
|
||
typedef enum {
|
||
|
||
VOL_CHAN = 0x24,
|
||
|
||
VOR_CHAN = 0x25,
|
||
|
||
VOX_BOTH = 0x21,
|
||
|
||
}e_Vox_Chan;
|
||
|
||
/*耳机和充电仓进行双向通讯的协议命令ID。*/
|
||
typedef enum _VOX_BES_COMMAND_E
|
||
{
|
||
CMD_SHUT_DOWN = 0x0005, //关机
|
||
|
||
CMD_TWS_GET_BTADDR = 0x0037, //获取对耳MAC地址
|
||
|
||
CMD_TWS_SET_BTADDR = 0x000A, //写入对耳MAC地址
|
||
|
||
CMD_CLEAR_PAIR = 0x000B, //清除配对记录
|
||
|
||
CMD_HEARTBEAT = 0x000D, //心跳包
|
||
|
||
CMD_SN = 0x000E, //写入SN码到耳机
|
||
|
||
CMD_GET_INTO_PAIR = 0x000F, //耳机进入配对状态
|
||
|
||
CMD_PAIRING_IMD = 0x0011, //立即执行TWS配对
|
||
|
||
BES_RESET, //耳机复位Pattern
|
||
|
||
}VOX_BES_COMMAND_E;
|
||
|
||
#endif
|
||
|
||
|
||
/******************************************************************************\
|
||
Global variables and functions
|
||
\******************************************************************************/
|
||
#ifdef VOX_RX
|
||
|
||
extern idata uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态,VOL:低4bit;VOR:高4bit。0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。
|
||
|
||
extern idata uint8_t Vox_Get_BES_Addr_Flag[2] ;
|
||
|
||
#endif
|
||
|
||
extern void Vox_Comm_Cfg_Clear(void);
|
||
|
||
extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
|
||
|
||
extern void Vox_Comm_Handle(void);
|
||
|
||
extern void HandleVoxCommMsg(void);
|
||
|
||
|
||
#endif
|