/*
 ******************************************************************************
 *
 * @file     VOX_Module.h
 * @brief    VOL/R module
 *                 
 *
 * @version  1.0
 * @date     2022/07/18   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            2022/07/18      Alex          build this file
 ******************************************************************************
 */
#ifndef __VOX_MODULE_H__
#define __VOX_MODULE_H__

/*_____ I N C L U D E S ____________________________________________________*/

#include "define.h"

extern bit Vox_Vout_Enable;

sbit COM_CTRL = P0^2;

extern uint8_t Vox_TX_Timer;		//VOX发送指令持续时间计数,在Hall_Handler检测中清0.
extern bit Earphone_Chg_Flag; 					 //耳机出入盒标志位

#if VOX_ENABLE
/******************************************************************************\
						  Macro definitions
\******************************************************************************/
/*
VOX过流档位设置，在系统初始化中(Vox_init())通过配置VOX_CON0，

SFRADDR = VOX_CON0;    //设置VOX输出500mA，负载识别电流2.5uA。
SFRDATA &= 0xE0;
SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA;

*/
#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 HEADER	0x55AA			//VOX通讯数据包头

#define BOX_FAC_HEADER	0xFB04			//VOX通讯仓->产测上位机数据包头
#define BESHEADER	0xA5			//VOX通讯耳机->仓数据包头

#define TIM_SHUTDOWN_DEBOUNCE		600			//关机前debounce时间

 /******************************************************************************\
							  Variables definitions
 \******************************************************************************/
/*耳机通道选择*/
 typedef enum {
	 VOL_CHAN = 0,
	 VOR_CHAN,
	 VOX_BOTH,
 }e_Vox_Chan;

#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	  
 /*耳机和充电仓进行双向通讯的协议命令ID。*/
 typedef enum _VOX_FAC_COMMAND_E
 {
	 CMD_FAC_START = 0xB0,			 //产测开始指令
	 CMD_FAC_HALL = 0xB1,			 //Hall测试指令
	 CMD_FAC_GUAGE = 0xB2,			 //电量管控设置
	 CMD_FAC_LED   = 0xB3,		 	//LED测试指令
	 CMD_FAC_SHUTDOWN   = 0xB4,		 	//关机模式
	 CMD_FAC_GET_DAUGE   = 0xB5,		 	//获取电量指令
	 CMD_FAC_GET_NTC   = 0xB6,		 	//获取NTC指令
	 CMD_FAC_GET_FWVER   = 0xB7,		 	//获取固件版本指令
	 CMD_FAC_SET_VOX_5V   = 0xB8,		 	//充电盒进入5V升压
 
 }VOX_FAC_COMMAND_E;

/* VOL Enable Type */
typedef enum {

     VOX_VOUT_Mode = 0x00,						//VOx 5V 输出使能
     VOX_ADT_Mode,						//VOx 负载接入、存在识别功能使能，负载自动识别
     
} VOX_Enable_Mode_e;

extern bit Cover_Open_Flag;

 /******************************************************************************\
							  UserCfg.Functions definitions
 \******************************************************************************/
extern void Vox_TX_Machine(void);
 
extern void Vox_Det_Machine(void);

#endif

#endif

