#ifndef __Driver_H__
#define __Driver_H__
/*--------------------------------------------------------------------------------------
*  @file     Driver.h
*  @author   ZhangJing
*  @version  base on stm32f0x   
*  @date     2015.09.11
*  @brief    硬件驱动
---------------------------------------------------------------------------------------*/
#include "stdint.h"

/* the macro definition to trigger the led on or off 
 * 1 - off
 - 0 - on
 */
#define DRIVER_ON			1  //打开
#define DRIVER_OFF		0  //关闭

//带参宏，可以像内联函数一样使用
// #define SpeakerCtl(a)	if (a)	\
// 					GPIO_SetBits(GPIOB,GPIO_Pin_14);\
// 					else		\
// 					GPIO_ResetBits(GPIOB,GPIO_Pin_14)
// #define LCDPWRCtl(a)	if (a)	\
// 					GPIO_ResetBits(GPIOB,GPIO_Pin_6);\
// 					else		\
// 					GPIO_SetBits(GPIOB,GPIO_Pin_6)
// #define LCDBLACtl(a)	if (a)	\
// 					GPIO_SetBits(GPIOA,GPIO_Pin_11);\
// 					else		\
// 					GPIO_ResetBits(GPIOA,GPIO_Pin_11)				
// #define ZigbeePWRCtl(a)	if (a)	\
// 					GPIO_ResetBits(GPIOB,GPIO_Pin_12);\
// 					else		\
// 					GPIO_SetBits(GPIOB,GPIO_Pin_12)
// #define MotorPWRCtl(a)	if (a)	\
// 					GPIO_ResetBits(GPIOB,GPIO_Pin_13);\
// 					else		\
// 					GPIO_SetBits(GPIOB,GPIO_Pin_13)

#define HALL_GPIO_PORT            	    GPIOA
#define HALL_GPIO_CLK             	    RCC_APB2Periph_GPIOA
#define HALL1_GPIO_PIN             	    GPIO_Pin_1	//HALL1引脚定义
#define HALL1_DETECT_EXTI	            EXTI_Line1	
#define HALL2_GPIO_PIN             	    GPIO_Pin_6	//HALL2引脚定义
#define HALL2_DETECT_EXTI	            EXTI_Line6
					
#define KEY_GPIO_PORT            		GPIOE
#define KEY_GPIO_CLK             		RCC_APB2Periph_GPIOE	
#define PAC_GPIO_PIN					GPIO_Pin_8	//PAC引脚定义
#define PAC_DETECT_EXTI	          	    EXTI_Line8
#define RUNPAUSE_GPIO_PIN				GPIO_Pin_9	//RUN/PAUSE引脚定义
#define RUNPAUSE_DETECT_EXTI	        EXTI_Line9
#define AIROUT_GPIO_PIN                 GPIO_Pin_10	//排气静音引脚定义
#define AIROUT_DETECT_EXTI	            EXTI_Line10
#define MINUS_GPIO_PIN					GPIO_Pin_11 //负号引脚定义
#define MINUS_DETECT_EXTI	            EXTI_Line11
#define PLUS_GPIO_PIN					GPIO_Pin_12	//加号引脚定义	
#define PLUS_DETECT_EXTI	            EXTI_Line12	
#define PS_GPIO_PIN             		GPIO_Pin_13	//返回引脚定义
#define PS_DETECT_EXTI	          	    EXTI_Line13
#define ENTER_GPIO_PIN					GPIO_Pin_14	//ENTER引脚定义
#define ENTER_DETECT_EXTI	            EXTI_Line14
#define PWR_GPIO_PIN             		GPIO_Pin_15	//电源引脚定义
#define PWR_DETECT_EXTI	          	    EXTI_Line15	        		

#define EXPAC_GPIO_PIN					GPIO_Pin_15	//PAC扩展引脚定义
#define EXPAC_DETECT_EXTI	         	EXTI_Line15
	
#define	SpeakerDataGPIOHight		GPIO_SetBits(GPIOA, GPIO_Pin_12)	//功放模块数据管脚高电平
#define	SpeakerDataGPIOLow			GPIO_ResetBits(GPIOA, GPIO_Pin_12)//功放模块数据管脚低电平
	
void HWPowerSaveSetup( uint8_t stopTimer );
// void HWPowerSaveSetup( void );
void HWSetup( void );
void PowerKeySave( void );
void DriverSavePinInit( void );

void SpeakerCtl( uint8_t driverState );
void SensorPWRCtl( uint8_t driverState );
void LCDBLACtl( uint8_t driverState );
void ZigbeePWRCtl( uint8_t driverState );
void MotorPWRCtl( uint8_t driverState );
void SpeakerInit(void);
void SpeakerResetInit(void);
void CntAlarmSpeaker(uint8_t AlarmData);		//控制报警声音
void CntOpenHornInit(void);							
#endif
