SY8837_Demo_For_OurSelf/UsrInc/comm/vox_comm.h
rb_peng c743af0aa6 1、将双向通信的具体场景提到vox_Comm_Handle函数中
2、增加VOX持续输出0V以唤醒耳机的情况;
3、解决超长按后,双向通讯一直发码的问题;(松开按键后Key_Press_ll_irq设为FALSE)
4、解决关盖上电时,不亮灯和不发码的问题(即把Hall_Sta_bk初始化);
5、长按发配对码时,主副耳的选择提取到config.h中;
2025-02-21 17:24:44 +08:00

259 lines
5.8 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.

/*
******************************************************************************
*
* @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:低4bitVOR:高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