📄 mcu6.c
字号:
#include "mcu6.h"
//
// TITLE:
//
// DESCRIPTION:
// disposal of the data with mcu6
// REFER to mcu6 v4.1
//
// FILENAME:
// mcu6.c
//
// AUTHOR(S):
// Andrew Dai(mailto:andrew.x.dai@gmail.com )
//
// CREATION DATE:
// date from: 2007-5-11
//
// MODIFICATION HISTORY:
//
//
//
void
showOTUmessage(MCU6_TO_ICU *p)
{
// printHex(p,sizeof(MCU6_TO_ICU),"udp from mcu:");
printf("-----------udp from mcu6->icu, len=%d----------------\n",sizeof(MCU6_TO_ICU));
printf("MARK=%2X,\tREMOTE_TYPE=%2X\n",p->MARK,p->REMOTE_TYPE);
printf("COUNTER=%2X,\tCONFIRMNO=%2X\n",p->COUNTER,p->CONFIRMNO);
printf("MODEMNO=%2X,\tADDRESSNO=%2X\n",p->MODEMNO,p->ADDRESSNO);
printf("GBYTE=%2X %2X,\tSDBYTE=%2X %2X\n",p->GBYTE[0],p->GBYTE[1],p->SDBYTE[0],p->SDBYTE[1]);
printf("STATUS=%2X\n",p->STATUS);
printHex(p->RUNMODE,sizeof(p->RUNMODE),"RUNMODE");
printHex(p->CURRENTSTAGE,sizeof(p->CURRENTSTAGE),"CURRENTSTAGE");
printHex(p->PLANNO,sizeof(p->PLANNO),"PLANNO");
printHex(p->PHASESTAGE,sizeof(p->PHASESTAGE),"PHASESTAGE");
printf("VALID=%2X\n",p->VALID);
printHex(p->IODATA,sizeof(p->IODATA),"IOVALID");
printHex(p->PHASECURRENT,sizeof(p->PHASECURRENT),"PHASECURRENT");
printf("VOLTAGE=%2X\n",p->VOLTAGE);
printf("TEMPERATURE=%2X\n",p->TEMPERATURE);
printf("-----------udp from mcu6->icu----------------\n");
}
int
verifyMCU6 (unsigned char buf[], ssize_t len)
{
if (len <= max(6,sizeof(MCU6_TO_ICU))) return -1;
if (!((buf[0]==0x55) && ((buf[1]==0xaa) | (buf[1]==0xab) ))) return -1;
return 0;
}
void
fillupOTUmessage(MCU6_TO_ICU *p, SA *p_udp_mcu6_cli_addr)
{
unsigned char modemNo;
unsigned char addressNo;
modemNo= p->MODEMNO;
addressNo= p->ADDRESSNO;
if (modemNo<(unsigned char)64 && addressNo<(unsigned char)8) {
OTUData[modemNo][addressNo].Type_of_OTU=(p->REMOTE_TYPE==0xAA?0:1);
if (OTUData[modemNo][addressNo].Ttl>=4) OTUData[modemNo][addressNo].NetCount++;
OTUData[modemNo][addressNo].Ttl=0;
// printf("remote udp ip=%s\n",strcpy(ss, inet_ntoa(*(struct in_addr*)&(OTUData[modemNo][addressNo].Ip))));
// printf("remote udp port=%d\n",ntohs(OTUData[modemNo][addressNo].Port));
OTUData[modemNo][addressNo].Ip=udp_mcu6_cli_addr.sin_addr.s_addr;
OTUData[modemNo][addressNo].Port=udp_mcu6_cli_addr.sin_port;
switch (p->COUNTER)
{
case 0:
if (OTUData[modemNo][addressNo].Type_of_OTU==0) /* st800 */
{
int j;
for(j=0;(j <min(bytes_received-6,20) && j<=OTUData[modemNo][addressNo].RLen-6);j++) /* ??? size of Rbytes */
{
OTUData[modemNo][addressNo].Rbytes[j]=(size_1) *(&p+j+6);
}
}
else
{ /* MPC */
OTUData[modemNo][addressNo].Rbytes[0]=p->GBYTE[0];
OTUData[modemNo][addressNo].Rbytes[1]=p->GBYTE[1];
int j;
for (j=0;j<32 ;j+=2 )
{
OTUData[modemNo][addressNo].Rbytes[2+j]= \
(p->IODATA[j*3] & 0x0f)+(p->IODATA[(j+1)*3]<<4 & 0xf0);
}
}
case 1:
OTUData[modemNo][addressNo].HandSetRet[0]=bytes_received-6; /* ??? size of HandSetRet */
int j;
for(j=0;(j <min(bytes_received-6,80));j++)
{
OTUData[modemNo][addressNo].HandSetRet[j]=(size_1) *(&p+j+5);
}
OTUData[modemNo][addressNo].HandSetRet[j]=0x0d;
OTUData[modemNo][addressNo].HandSetReturn=TRUE;
}
}
else {
sys_log("in udp packet, !(modemNo<64 & addressNo<8)");
}
}
void
generateOTUreply()
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -