SY8835_For_Demo_Ourself/UsrInc/vox/vox_module.h

217 lines
5.4 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_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:低4bitVOR:高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