#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h" 
#include "malloc.h"  
#include "MMC_SD.h" 
#include "ff.h"  
#include "exfuns.h"
#include "fontupd.h"
#include "text.h"	
#include "sim900a.h"	
#include "touch.h"	
#include "usart2.h"
#include "usart3.h"
#include "hc05.h"	 	 
#include "string.h"	 
//ALIENTEK Mini STM32开发板扩展实验14
//ATK-SIM900A GSM模块测试实验-库函数版本
//技术支持：www.openedv.com
//广州市星翼电子科技有限公司  
 
 
 
 
 void HC05_Role_Show(void)
{
	if(HC05_Get_Role()==1)LCD_ShowString(25,140,200,16,16,"ROLE:Master");	//主机
	else LCD_ShowString(25,140,200,16,16,"ROLE:Slave ");			 		//从机
}
//显示ATK-HC05模块的连接状态
void HC05_Sta_Show(void)
{												 
	if(HC05_LED)LCD_ShowString(115,140,120,16,16,"STA:Connected ");			//连接成功
	else LCD_ShowString(115,140,120,16,16,"STA:Disconnect");	 			//未连接				 
}	  




 int main(void)
 { 
	u8 key; 
	 u8 js=0;
	 
	 
	 u8 t;

	u8 sendmask=0;
	u8 sendcnt=0;
	u8 sendbuf[20];	  
	//u8 reclen=0;  
//	delay_init();	    	 //延时函数初始化	  
//	NVIC_Configuration(); 	 //设置NVIC中断分组2:2位抢占优先级，2位响应优先级
	//uart_init(9600);	 	//串口初始化为9600
//	LED_Init();				//初始化与LED连接的硬件接口
//	KEY_Init();				//初始化按键
 // LCD_Init();				//初始化LCD
  NVIC_Configuration();	 
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为9600			 
	LCD_Init();				//初始化液晶 
	LED_Init();         	//LED初始化	 
	KEY_Init();				//按键初始化	  													    
 	USART2_Init(115200);	//初始化串口2 
 
	tp_dev.init();			//触摸屏初始化
 	mem_init();				//初始化内存池	    
 	exfuns_init();			//为fatfs相关变量申请内存  
  	f_mount(fs[0],"0:",1); 	//挂载SD卡 
 	f_mount(fs[1],"1:",1); 	//挂载FLASH.
  
// 	if(key==KEY0_PRES)		//强制校准
// 	{
// 		LCD_Clear(WHITE);	//清屏
// 		tp_dev.adjust();  	//屏幕校准  
// 		LCD_Clear(WHITE);	//清屏
// 	}
// 	fontok=font_init();		//检查字库是否OK
// 	if(fontok||key==KEY1_PRES)//需要更新字库（字库不存在/KEY1按下）			 
// 	{
// 		LCD_Clear(WHITE);		   	//清屏
//  		POINT_COLOR=RED;			//设置字体为红色	   	   	  
// 		LCD_ShowString(60,50,200,16,16,"ALIENTEK STM32");
// 		while(SD_Initialize())		//检测SD卡
// 		{
// 			LCD_ShowString(60,70,200,16,16,"SD Card Failed!");
// 			delay_ms(200);
// 			LCD_Fill(60,70,200+60,70+16,WHITE);
// 			delay_ms(200);		    
// 		}								 						    
// 		LCD_ShowString(60,70,200,16,16,"SD Card OK");
// 		LCD_ShowString(60,90,200,16,16,"Font Updating...");
// 		key=update_font(20,110,16);//更新字库
// 		while(key)//更新失败		
// 		{			 		  
// 			LCD_ShowString(60,110,200,16,16,"Font Update Failed!");
// 			delay_ms(200);
// 			LCD_Fill(20,110,200+20,110+16,WHITE);
// 			delay_ms(200);		       
// 		} 		  
// 		LCD_ShowString(60,110,200,16,16,"Font Update Success!");
// 		delay_ms(1500);	
// 		LCD_Clear(WHITE);//清屏	       
// 	}  



   
	POINT_COLOR=RED;
	LCD_ShowString(25,30,205,16,16,"AUTHOR:Ma Cunshi ^_^");	
	LCD_ShowString(25,50,205,16,16,"Alarm System ");	
	LCD_ShowString(25,70,205,16,16,"Based on Bluetooth and GSM");
	while(HC05_Init()) 		//初始化ATK-HC05模块  
	{
		LCD_ShowString(25,90,205,16,16,"ATK-HC05 Error!"); 
		delay_ms(500);
		LCD_ShowString(25,90,205,16,16,"Please Check!!!"); 
		delay_ms(100);
	}	 										   	   
	LCD_ShowString(25,90,205,16,16,"WK_UP:ROLE KEY0:SEND/STOP");  
	LCD_ShowString(25,110,205,16,16,"ATK-HC05 Standby!");  
  	LCD_ShowString(25,160,205,16,16,"Send:");	
	LCD_ShowString(25,180,205,16,16,"Receive:");	

	POINT_COLOR=BLUE;
	HC05_Role_Show();	  
 	while(1) 
	{		
		key=KEY_Scan(0);
		if(key==WKUP_PRES)						//切换模块主从设置
		{
   			key=HC05_Get_Role();
			if(key!=0XFF)
			{
				key=!key;  					//状态取反	   
				if(key==0)HC05_Set_Cmd("AT+ROLE=0");
				else HC05_Set_Cmd("AT+ROLE=1");
				HC05_Role_Show();
				HC05_Set_Cmd("AT+RESET");	//复位ATK-HC05模块
			}
		}
		
		
		
		else if(key==KEY0_PRES)
		{
			sendmask=!sendmask;				//发送/停止发送  	 
			if(sendmask==0)LCD_Fill(25+40,160,240,160+16,WHITE);//清除显示
		    }
				
				else delay_ms(10);



				
		    if(t==50)
		    {
			if(sendmask)					//定时发送
			{
				sprintf((char*)sendbuf,"ALIENTEK HC05 %d\r\n",sendcnt);
	  			LCD_ShowString(25+40,160,200,16,16,sendbuf);	//显示发送数据	
				u2_printf("ALIENTEK HC05 %d\r\n",sendcnt);		//发送到蓝牙模块
				sendcnt++;
				if(sendcnt>99)sendcnt=0;
			}
			HC05_Sta_Show();  	  
			t=0;
			LED0=!LED0; 	     
		}	
		if(HC05_LED!=0)
	    js=0;
		
		if(HC05_LED==0) 
		{	LED1=!LED1;
		
		delay_ms(60000);
			if(js==0)
		//	sim900a_call_test();
		 sim900a_test();
      js++; 
      if(js==20000000)	 js=0;		
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
// delay_ms(60000);
}

		
	t++;	
	}											    
}


	
	//sim900a_test();
//}













//ALIENTEKminiSTM32开发板扩展实验 
//ATK-HC05蓝牙串口模块实验-库函数版本  
//技术支持：www.openedv.com
//广州市星翼电子科技有限公司 
//ALIENTEK战舰STM32开发板实验13
//TFTLCD显示实验  
//技术支持：www.openedv.com
//广州市星翼电子科技有限公司 
 	
	
	//显示ATK-HC05模块的主从状态
	 
	




