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

📄 io.c

📁 《嵌入式网络系统设计-基于Atmel ARM7 系列》这个本书的光盘资料
💻 C
字号:
//*------------------------------------------------------------------------------------------------
//* 文件名				: IO.c
//* 功能描述			: 系统输输出函数
//* 作者    			: 焦海波
//* 版本				: 0.1
//* 建立日期、时间		: 2006/08/07 15:26
//* 最近修改日期、时间	: 
//* 修改原因			: 
//*------------------------------------------------------------------------------------------------
//*------------------------------------------ 头文件 -----------------------------------------------
#include	"/uCOS-II/ucos_ii.h"
#include	"/tools/stringExtAPI.h"
#include	"/at91sam7x256/periph/emac/lib_emac.h"
#include	"flash.h"
//*================================================================================================
//*                     函 数 区
//*================================================================================================
//*------------------------------------------------------------------------------------------------
//* 函数名称 : ubSetNetCFGParam
//* 功能描述 : 设置网络配置参数(IP地址、子网掩码、网关)
//* 入口参数 :      <u32IP>[in] IP地址
//*	         : <u32NetMask>[in] 子网掩码
//*          : <u32Gateway>[in] 网关地址
//* 出口参数 : 设置成功返回TRUE,否则返回FALSE
//*------------------------------------------------------------------------------------------------
BOOLEAN blSetNetCFGParam(INT32U u32IP, INT32U u32NetMask, INT32U u32Gateway)
{
	ST_NET_CFG_PARAM	__stNetCFG;
	INT32S				__s32DNLen = 0;
	
	memset(&__stNetCFG, 0, sizeof(ST_NET_CFG_PARAM));
	
	if(*((INT32U*)PST_NET_CFG_PARAM->szDN) != 0xFFFFFFFF)
	{
		__s32DNLen = strlenExt(PST_NET_CFG_PARAM->szDN);
		memcpy(__stNetCFG.szDN, PST_NET_CFG_PARAM->szDN, __s32DNLen);
	}
	
	__stNetCFG.u32Flag = NET_CFG_FLAG;
	__stNetCFG.u32IP = u32IP;
	__stNetCFG.u32NetMask = u32NetMask;
	__stNetCFG.u32Gateway = u32Gateway;
	
	if(DFL_WriteFlash((INT32U*)&__stNetCFG, NET_CFG_PARAM_STORE_ADDR, ST_NETCFG_PARAM_HDR_LEN + __s32DNLen) == ERR_WFLASH_OK)
		return OS_TRUE;
	else
		return OS_FALSE;
}
//*------------------------------------------------------------------------------------------------
//* 函数名称 : ubSetDN
//* 功能描述 : 设置域名
//* 入口参数 : <pszDN>[in] 指向域名的指针
//*          :  <lLen>[in] 域名的长度
//* 出口参数 : 设置成功返回TRUE,否则返回FALSE
//*------------------------------------------------------------------------------------------------
BOOLEAN blSetDN(INT8S *pszDN, INT32S s32Len)
{
	ST_NET_CFG_PARAM	__stNetCFG;
	
	memset(&__stNetCFG, 0, sizeof(ST_NET_CFG_PARAM));
	
	if(PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG)
	{
		__stNetCFG.u32Flag = NET_CFG_FLAG;
		__stNetCFG.u32IP = PST_NET_CFG_PARAM->u32IP;
		__stNetCFG.u32NetMask = PST_NET_CFG_PARAM->u32NetMask;
		__stNetCFG.u32Gateway = PST_NET_CFG_PARAM->u32Gateway;
	}
	memcpy(__stNetCFG.szDN, pszDN, s32Len);
	
	if(DFL_WriteFlash((INT32U*)&__stNetCFG, NET_CFG_PARAM_STORE_ADDR, ST_NETCFG_PARAM_HDR_LEN + s32Len) == ERR_WFLASH_OK)
		return OS_TRUE;
	else
		return OS_FALSE;
}
//*------------------------------------------------------------------------------------------------
//* 函数名称 : vReadASCIIIP
//* 功能描述 : 读取ASCII类型的IP地址到指定的缓冲区
//* 入口参数 : <pszIP>[in] 指向接收缓冲区的指针
//* 出口参数 : 无
//*------------------------------------------------------------------------------------------------
void vReadASCIIIP(INT8S *pszIP)
{	
	sprintf(pszIP, "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetIPAddr(0) : IP_ADDR_0);
	sprintf(pszIP + strlenExt(pszIP), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetIPAddr(1) : IP_ADDR_1);
	sprintf(pszIP + strlenExt(pszIP), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetIPAddr(2) : IP_ADDR_2);
	sprintf(pszIP + strlenExt(pszIP), "%d", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetIPAddr(3) : IP_ADDR_3);
}
//*------------------------------------------------------------------------------------------------
//* 函数名称 : vReadASCIINetMask
//* 功能描述 : 读取ASCII类型的子网掩码地址到指定的缓冲区
//* 入口参数 : <pszNetMask>[in] 指向接收缓冲区的指针
//* 出口参数 : 无
//*------------------------------------------------------------------------------------------------
void vReadASCIINetMask(INT8S *pszNetMask)
{	
	sprintf(pszNetMask, "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetNetMask(0) : NET_MASK_0);
	sprintf(pszNetMask + strlenExt(pszNetMask), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetNetMask(1) : NET_MASK_1);
	sprintf(pszNetMask + strlenExt(pszNetMask), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetNetMask(2) : NET_MASK_2);
	sprintf(pszNetMask + strlenExt(pszNetMask), "%d", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetNetMask(3) : NET_MASK_3);
}
//*------------------------------------------------------------------------------------------------
//* 函数名称 : vReadASCIIGateway
//* 功能描述 : 读取ASCII类型的网关地址到指定的缓冲区
//* 入口参数 : <pszGateway>[in] 指向接收缓冲区的指针
//* 出口参数 : 无
//*------------------------------------------------------------------------------------------------
void vReadASCIIGateway(INT8S *pszGateway)
{	
	sprintf(pszGateway, "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetGateway(0) : GATEWAY_ADDR_0);
	sprintf(pszGateway + strlenExt(pszGateway), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetGateway(1) : GATEWAY_ADDR_1);
	sprintf(pszGateway + strlenExt(pszGateway), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetGateway(2) : GATEWAY_ADDR_2);
	sprintf(pszGateway + strlenExt(pszGateway), "%d", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetGateway(3) : GATEWAY_ADDR_3);
}

⌨️ 快捷键说明

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