217 lines
5.4 KiB
C
217 lines
5.4 KiB
C
/*
|
||
******************************************************************************
|
||
*
|
||
* @file VOX_Module.h
|
||
* @brief VOL/R module
|
||
* @ic sy8835
|
||
*
|
||
* @version 1.0
|
||
* @date 2024/11/01 09:59:40
|
||
* @author Alex Xu
|
||
*
|
||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||
* All Rights Reserved
|
||
*
|
||
* History:
|
||
* Revision Date Author Desc
|
||
* 1.0.0 2024/11/01 Alex build this file
|
||
******************************************************************************
|
||
*/
|
||
#ifndef __VOX_MODULE_H__
|
||
#define __VOX_MODULE_H__
|
||
|
||
/*_____ I N C L U D E S ____________________________________________________*/
|
||
|
||
#include "define.h"
|
||
|
||
/*耳机方案商选择*/
|
||
//#define QIANCHENG //岍丞
|
||
//#define ZHONGKELANXUN //中科蓝讯
|
||
#define XIAOMI //小米
|
||
|
||
/*硬件版本信息*/
|
||
#define HW_VER 0x01 //硬件版本信息,范围0-9
|
||
/*软件版本信息*/
|
||
#define FW_VER 0x001 //程序版本
|
||
|
||
extern bit Vox_Vout_Enable;
|
||
extern bit Earphone_Chg_Flag; //耳机出入盒标志位
|
||
extern bit Vox_Output_Short_Flag;
|
||
|
||
#define IVOX_THN 20 //耳机跟随充电流下降阈值
|
||
#define IVOX_THP 200 //耳机跟随充电流上升阈值
|
||
|
||
|
||
#define VOL_TYPE 0x00
|
||
#define VOR_TYPE 0x01
|
||
|
||
#if 1
|
||
/*耳机配对状态*/
|
||
typedef enum {
|
||
VOX_PAIR_NONE = 0, //无效
|
||
VOX_PAIR_ING, //配对中
|
||
VOX_PAIR_OK, //配对完成
|
||
VOX_PAIR_KEEP, //不处理,保持当前状态
|
||
}e_Vox_Pairing_State;
|
||
|
||
/*耳机配对记录*/
|
||
typedef enum {
|
||
VOX_PAIRED_NONE = 0, //无配对过
|
||
VOX_PAIRED_OK, //有配对记录
|
||
}e_Vox_Paired_State;
|
||
#endif
|
||
|
||
#if VOX_ENABLE
|
||
|
||
/******************************************************************************\
|
||
Macro definitions
|
||
\******************************************************************************/
|
||
/*
|
||
VOX过流档位设置,在系统初始化中(Vox_init())通过配置VOX_CON0,
|
||
|
||
SFRADDR = VOX_CON0; //设置VOX输出200mA,负载识别电流2.5uA。
|
||
SFRDATA &= 0xE0;
|
||
SFRDATA |= (VOX_IOUT_200MA << 3) | VOX_ADT_Cur_2_5UA;
|
||
//Vox轻重载滤波时间配置
|
||
SFRADDR = VOX_CON2;
|
||
SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
|
||
|
||
*/
|
||
/*Vox输出电流过流保护阈值。*/
|
||
#define VOX_IOUT_200MA 0x00
|
||
#define VOX_IOUT_300MA 0x01
|
||
#define VOX_IOUT_400MA 0x02
|
||
#define VOX_IOUT_500MA 0x03
|
||
/*自动识别负载电流阈值。*/
|
||
#define VOX_ADT_Cur_0_5UA 0x00
|
||
#define VOX_ADT_Cur_1_5UA 0x01
|
||
#define VOX_ADT_Cur_2_5UA 0x02
|
||
#define VOX_ADT_Cur_3_5UA 0x03
|
||
#define VOX_ADT_Cur_4_5UA 0x04
|
||
#define VOX_ADT_Cur_5_5UA 0x05
|
||
#define VOX_ADT_Cur_6_5UA 0x06
|
||
#define VOX_ADT_Cur_7_5UA 0x07
|
||
/*轻载转重载滤波时间配置。*/
|
||
#define VOX_LIGHT_TO_HAVEY_1 0x00
|
||
#define VOX_LIGHT_TO_HAVEY_8 0x01
|
||
#define VOX_LIGHT_TO_HAVEY_128 0x02
|
||
#define VOX_LIGHT_TO_HAVEY_256 0x03
|
||
/*重载转轻载滤波时间配置。*/
|
||
#define VOX_HAVEY_TO_LIGHT_0_125 0x00
|
||
#define VOX_HAVEY_TO_LIGHT_1 0x01
|
||
#define VOX_HAVEY_TO_LIGHT_8 0x02
|
||
#define VOX_HAVEY_TO_LIGHT_64 0x03
|
||
|
||
#define BOXHEADER 0x55AA //VOX通讯数据包头
|
||
|
||
#define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头
|
||
|
||
#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
|
||
|
||
#define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间
|
||
|
||
/******************************************************************************\
|
||
Variables definitions
|
||
\******************************************************************************/
|
||
|
||
/*耳机通道选择*/
|
||
|
||
#define TWS_VOL 0x04
|
||
#define TWS_VOR 0x05
|
||
#define TWS_BOX 0x02
|
||
#define TWS_PC 0x03
|
||
|
||
/*耳机通道选择*/
|
||
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;
|
||
|
||
|
||
/* Vox Channel Select. */
|
||
typedef enum {
|
||
VOL_CHAN_SET = 0x00,
|
||
VOR_CHAN_SET = 0x01,
|
||
VOX_BOTH_SET = 0x02,
|
||
}e_Vox_Chan_Set;
|
||
|
||
/* Vox Follow Charge State. */
|
||
typedef enum {
|
||
|
||
Vox_Follow_Chg_InitSta = 0x00,
|
||
|
||
Vox_Follow_Chg_Sta1,
|
||
|
||
Vox_Follow_Chg_Sta2,
|
||
|
||
}e_Vox_Follow_Chg_Sta;
|
||
|
||
|
||
/* VOX Enable Type */
|
||
typedef enum {
|
||
|
||
VOX_TRANS_Mode = 0x00, //VOx UART 透传功能使能
|
||
|
||
VOX_COMM_Mode_Uart, //VOx 通讯 UART Mode
|
||
|
||
VOX_COMM_Mode_Reg, //VOx 通讯 Register Mode
|
||
|
||
VOX_VOUT_Mode, //VOx 5V 输出使能
|
||
|
||
VOX_ADT_Mode, //VOx 负载接入、存在识别功能使能,负载自动识别
|
||
|
||
VOX_PUnK_Mode, //Vox上拉电阻配置,上拉到VOX_Vup。
|
||
|
||
VOX_PD1K_Mode, //<SHIP_CTL[VOX_PD1K 5:4]> VOX 1K 电阻下拉使能 1: VOR 通过 1K 电阻下拉至 gnd
|
||
|
||
} VOX_Enable_Mode_e;
|
||
|
||
extern uint16_t Boost_Open_Atleast_Tim_Cnt;
|
||
|
||
extern bit Cover_Open_Flag;
|
||
|
||
|
||
#ifdef VOX_RX
|
||
|
||
extern 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 uint8_t Box_To_Bes_Comm_Debounce;
|
||
|
||
/******************************************************************************\
|
||
UserCfg.Functions definitions
|
||
\******************************************************************************/
|
||
|
||
extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
|
||
extern void Vox_Det_Machine(void);
|
||
extern void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
|
||
|
||
#ifdef VOX_RX
|
||
extern void HandleVoxCommMsg(void);
|
||
#endif
|
||
|
||
#endif
|
||
|
||
#endif
|
||
|