#ifndef _TAX_CTRL_H_
#define _TAX_CTRL_H_

#include "stm32f10x.h"
#include "includes.h"

#define UART_RS485 UART3_ID

extern int rs485_send_flag;


#define GB_TAX_HEADER_LEN 		10
#define GB_TAX_INFO_LEN 		53
#define GB_GUN_INFO_LEN 		22

#define YTSF_GPIO_RS485_RESET()  {GPIO_ResetBits(GPIOD, GPIO_Pin_3);}
#define YTSF_GPIO_RS485_SET()    {GPIO_SetBits(GPIOD, GPIO_Pin_3);}

#define YTSF_GPIO_AB_RESET()  {GPIO_ResetBits(GPIOD, GPIO_Pin_4);}
#define YTSF_GPIO_AB_SET()    {GPIO_SetBits(GPIOD, GPIO_Pin_4);}

#define YTSF_GPIO_CD_RESET()  {GPIO_ResetBits(GPIOD, GPIO_Pin_5);}
#define YTSF_GPIO_CD_SET()    {GPIO_SetBits(GPIOD, GPIO_Pin_5);}

#define YTSF_GPIO_YTSF_RESET()  {GPIO_ResetBits(GPIOD, GPIO_Pin_6);}
#define YTSF_GPIO_YTSF_SET()    {GPIO_SetBits(GPIOD, GPIO_Pin_6);}

//#define YTSF_GPIO_REV2_RESET()  {GPIO_ResetBits(GPIOD, GPIO_Pin_7);}
//#define YTSF_GPIO_REV2_SET()    {GPIO_SetBits(GPIOD, GPIO_Pin_7);}

//#define YTSF_GPIO_SET()  {GPIO_SetBits(GPIOB, GPIO_Pin_5);}
//#define YTSF_GPIO_RST()  {GPIO_ResetBits(GPIOB, GPIO_Pin_5);}

//#define YTSF_GPIO_DETECT  GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6)

//#define YTSF_GPIO_EN()  {GPIO_ResetBits(GPIOB, GPIO_Pin_7);}
//#define YTSF_GPIO_DN()  {GPIO_SetBits(GPIOB, GPIO_Pin_7);}


/************************************************************/
#define YTSF_GPIO_REV2_RESET()  {GPIO_ResetBits(GPIOC, GPIO_Pin_0);}
#define YTSF_GPIO_REV2_SET()    {GPIO_SetBits(GPIOC, GPIO_Pin_0);}

#define YTSF_GPIO_SET()  {GPIO_SetBits(GPIOC, GPIO_Pin_1);}
#define YTSF_GPIO_RST()  {GPIO_ResetBits(GPIOC, GPIO_Pin_1);}

#define YTSF_GPIO_DETECT  GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_2)

#define YTSF_GPIO_EN()  {GPIO_ResetBits(GPIOC, GPIO_Pin_3);}
#define YTSF_GPIO_DN()  {GPIO_SetBits(GPIOC, GPIO_Pin_3);}
/************************************************************/

#define BIT_SET(p, bit)		((p) |= (1<<(bit)))
#define BIT_CLC(p, bit)		((p) &= ~(1<<(bit)))

#define TAX_UART	UART1_ID
#define FAIL_THRESHOLD	3
#define TAX_MSG_PERIOD 10

#endif
