⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gprs_handle.c

📁 周立功公司2410开发板上所有基于UCOS开发的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			GPRS_HANDLE.c
** Last modified Date:	2005-06-17
** Last Version:		1.0
** Descriptions:		header file of GPRS
**						
**------------------------------------------------------------------------------------------------------
** Created by:			Yehaoben
** Created date:		2005-06-17
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: 
** Modified date:
** Version:	
** Descriptions: 
**
********************************************************************************************************/
#define GPRS_GLOBALS

#include "config.H"

char AT_COMMAND[]=GPRS_AT_CMD;

OS_STK GPRS_task_stack[GPRS_TASK_STACK_SIZE];

extern void	ZLG_GPRS_Send_String(char * strptr);

void	ZLG_GPRS_HANDLE(void *pdata);
char * startchar(char * str,char endch );
uint16 StrTOUINT(char * str,uint8 DBits);
uint8	ZLG_GPRS_SND_CMD(char * cmdptr);


/*********************************************************************************************************
** Function name:			ZLG_GPRS_Initial
**
** Descriptions:			Initial GPRS
**
** input parameters:		None
** Returned value:			None
**         
** Used global variables:	None
** Calling modules:			None
**
** Created by:				Yehaoben
** Created Date:			2005/06/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8	ZLG_GPRS_Initial(void)
{
	GPRS_TCB.GPRSCmdOK	=	OSSemCreate(0);//creat the command ok signal;
	GPRS_TCB.GPRSRing	=	OSSemCreate(0);
	GPRS_TCB.GPRSMsgWR	=	OSSemCreate(0);
	
	GPRS_TCB.Status = 1;//idle
	GPRS_TCB.SNDCmdLen = 0;
	GPRS_TCB.RCVCmdLen = 0;
	GPRS_TCB.GPRS_RCV_WR_PTR = 0;
	//GPRS_TCB.GPRS_SND_RD_PTR = 0;
	
	UART_Ini(9600);//initial com port
	
	if( ZLG_GPRS_SND_CMD("AT\r\n") )
	{return 1;}
	if( ZLG_GPRS_SND_CMD("AT$NOSLEEP=1\r\n") )
	{return 1;}
	if( ZLG_GPRS_SND_CMD("AT+CREG=1\r\n") )//reg
	{return 1;}
	
	/*OSTaskCreateExt(ZLG_GPRS_HANDLE,
                (void *)0,
                &GPRS_task_stack[GPRS_TASK_STACK_SIZE-1],
                GPRS_TASK_PRIO,
                GPRS_TASK_ID,
                &GPRS_task_stack[0],
                GPRS_TASK_STACK_SIZE,
                (void *)0,
                OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);	*/
	//creat the ZLG_GPRS_Handle task
	return 0;
}
/*********************************************************************************************************
** Function name:			ZLG_GPRS_Handle
**
** Descriptions:			GPRS handle task
**
** input parameters:		None
** Returned value:			None
**         
** Used global variables:	None
** Calling modules:			None
**
** Created by:				Yehaoben
** Created Date:			2005/06/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void	ZLG_GPRS_HANDLE(void *pdata)
{	
	GPRSAutoTakeTheCall();//RING
	//GOT MESSAGE
}

const char GPRS_CALL_STR[]={"ATD%s;\r\n"};
void	ZLG_GPRS_CALL(char * number)
{
	char sendchar[30];
	_sprintf(sendchar,GPRS_CALL_STR,number);
	ZLG_GPRS_SND_CMD(sendchar);
}

void	ZLG_GPRS_PICKUP()
{
	ZLG_GPRS_SND_CMD("ATA\r\n");
}

const char GPRS_MSG_STR[]={"AT+CMGS=\"%s\"\r\n"};
uint8	ZLG_GPRS_SND_MSG(char * number,char * SNDMSG)
{
	char sendchar[30];
	char temp[2];
	uint8 err;
	
	OS_ENTER_CRITICAL();
	GPRS_TCB.Status = GPRS_TCB.Status | 0X0020;//set send message
	OS_EXIT_CRITICAL();
	
	ZLG_GPRS_SND_CMD("AT+CMGF=1\r\n");
	
	OS_ENTER_CRITICAL();
	GPRS_TCB.Status = GPRS_TCB.Status & 0xfffe;//clear idle bit
	GPRS_TCB.Status = GPRS_TCB.Status | 0x0004;//set have been sended and wait ok
	OS_EXIT_CRITICAL();	
	_sprintf(sendchar,GPRS_MSG_STR,number);
	ZLG_GPRS_Send_String(sendchar);//send msg,
	do
	{
		OSSemPend(GPRS_TCB.GPRSMsgWR,2*OS_TICKS_PER_SEC,&err);//wait for >;
		if(err == OS_TIMEOUT)
		{
			continue;
		}
		break;
	}
	while(1);
	
	ZLG_GPRS_Send_String(SNDMSG);//send MSG,
	temp[0] = 0x1a;
	temp[1] = 0;
	ZLG_GPRS_Send_String(temp);//send ctrl + z
	
	OS_ENTER_CRITICAL();
	GPRS_TCB.Status = GPRS_TCB.Status | 0x0001;	//set idle bit
	GPRS_TCB.Status = GPRS_TCB.Status & 0xffd9;	//clear have been sended and wait ok bit										//clera sending command bit
	OS_EXIT_CRITICAL();
	return 0;
}

const char GPRS_RCVMSG_STR[]={"AT+CMGR=%d\r\n"};
uint8	ZLG_GPRS_RCV_MSG(uint8 num,char * number,char * RCVMSG)
{
	char sendchar[15];
	//char temp[2];
	ZLG_GPRS_SND_CMD("AT+CMGF=1\r\n");
	_sprintf(sendchar,GPRS_RCVMSG_STR,num);
	ZLG_GPRS_SND_CMD(sendchar);
	GPRS_TCB.Status = GPRS_TCB.Status | 0x0010;	//set GOT MSG bit
	//read msg
	return 0;
}

const char GPRS_SETMSGCRT_STR[]={"AT+CSCA=\"%s\"\r\n"};
uint8 GPRSSetMSGCenter(char * number)
{	
	char sendchar[30];
	_sprintf(sendchar,GPRS_SETMSGCRT_STR,number);
	ZLG_GPRS_SND_CMD(sendchar);
	return 0;
}
/*********************************************************************************************************
** 函数名称: GPRSTakeTheCall
** 功能描述: 接电话
** 输 入: 无
**
** 输 出: 成功 0 失败1
**
** 全局变量: 
** 调用模块: 
**
** 作 者: Yehaoben
** 日 期: 2005年7月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 GPRSTakeTheCall()
{	
	ZLG_GPRS_SND_CMD("ATA\r\n");
	return 0;
}
/*********************************************************************************************************
** 函数名称: GPRSHangUpTheCall
** 功能描述: 挂电话
** 输 入: 无
**
** 输 出: 成功 0 失败1
**
** 全局变量: 
** 调用模块: 
**
** 作 者: Yehaoben
** 日 期: 2005年7月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 GPRSHangUpTheCall()
{	
	ZLG_GPRS_SND_CMD("AT+CHUP\r\n");
	return 0;
}
/*********************************************************************************************************
** 函数名称: GPRSDelMSG
** 功能描述: 删除短信
** 输 入: num 短信的存储号(1~20)
**
** 输 出: 成功 0 失败1
**
** 全局变量: 
** 调用模块: 
**
** 作 者: Yehaoben
** 日 期: 2005年7月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
const char GPRS_DELMSG_STR[]={"AT+CMGD=%d\r\n"};
uint8 GPRSDelMSG(uint8 num)
{	
	char sendchar[15];
	
	_sprintf(sendchar,GPRS_DELMSG_STR,num);
	ZLG_GPRS_SND_CMD(sendchar);
	return 0;
}
/*********************************************************************************************************
** 函数名称: GPRSAutoTakeTheCall
** 功能描述: 接电话
** 输 入: 无
**
** 输 出: 成功 0 失败1
**
** 全局变量: 
** 调用模块: 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -