📄 udp.c~
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -