udp.c~
来自「使用avr--cc2420模块程序,需要原理图的联系 QQ:120304948」· C~ 代码 · 共 108 行
C~
108 行
#include <mega128.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "typedef.h"
#include "app.h"
#include "attention.h"
#include "g20modem.h"
#include "g20serialdrv.h"
#include "rtc.h"
#include "serialdrv.h"
#include "timer.h"
#include "UDP.h"
#include "protocol.h"
SPSTATUS my_udp_status;
void udp_rcv_proc(BYTE data)
{
my_udp_status.buffer[my_udp_status.empty ++] = data;
if(my_udp_status.empty >= G20MAXLEN)
{
my_udp_status.empty = 0;
}
if(my_udp_status.empty > SPOVERFLOW)
{
my_udp_status.overflow = TRUE;
}
}
void udp_sp_init()
{
my_udp_status.buffer[0] = (BYTE) 0x00;
my_udp_status.data = 0;
my_udp_status.empty = 0;
memset(my_udp_status.buffer, 0x00, SPMAXLEN);
}
unsigned char udp_sp_not_empty()
{
return !(my_udp_status.data == my_udp_status.empty);
}
BYTE udp_sp_getchar()
{
BYTE c = 0;
if(my_udp_status.empty != my_udp_status.data)
{
c = my_udp_status.buffer[my_udp_status.data ++];
if(my_udp_status.data >= G20MAXLEN)
{
my_udp_status.data = 0;
}
return (c);
}
else
{
return (BYTE)0x00;
}
}
void udp_sp_flush()
{
my_udp_status.data = my_udp_status.empty;
}
void udp_sp_init_buf()
{
my_udp_status.data = 0;
my_udp_status.empty = 0;
}
void udp_sp_send(flash BYTE * pBuf)
{
while(*pBuf)
{
wdr();
//#error "send error"
}
}
void udp_sp_proc()
{
my_udp_status.timeout = timer_get_g20_sp_timeout();
if((my_udp_status.overflow | my_udp_status.timeout) == TRUE)
{
//process g20 serial port data
if(my_udp_status.overflow == TRUE)
{
my_udp_status.overflow = FALSE;
}
if(my_udp_status.timeout == TRUE)
{
my_udp_status.timeout = FALSE;
}
ProtocolProc();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?