📄 lb_bdy4.c
字号:
/*
***********************************************************************************************************
Amos
The Real_Time Operation System
Multi Task
(c) Copyright 1998-2002, ShangYaoHui, Shenzhen
All Right Reserved
VERSION 6.01
" By : 商耀挥(ShangYaoHui)
create time: 2002-7-6 1:05:30
***********************************************************************************************************
*/
/************ head file list *************/
#include "envopt.h" /* environment options */
#include "envdep.h" /* environment dependent */
#include "envind.h" /* environment independent */
#include "gen.h" /* general */
#include "cm5.h" /* common functions */
#include "ssi.h" /* system services */
/* header/extern include files (.x) */
#include "gen.x" /* general */
#include "cm5.x" /* common functions */
#include "ssi.x" /* system services */
#include "cm_llist.h"
#include "cm_llist.x"
#ifdef WIN32
#include "winbase.h"
#include "winsock2.h"
#endif
#include "rx.h"
#include "rx.x"
#include "rx_msg.h"
#include "rx_msg.x"
#include "lb_cm.h"
#include "lb_cm.x"
#include "lb_recv.h"
#include "lb_recv.x"
#include "lb_xmit.h"
#include "lb_xmit.x"
#include "lb_msg.h"
#include "lb_msg.x"
#include "lb_bdy1.h"
#include "lb_bdy1.x"
#include "lb_bdy2.h"
#include "lb_bdy2.x"
#include "lb_bdy4.h"
#include "lb_bdy3.h"
#include "lb_bdy3.x"
#include "lb_bdy4.h"
#include "lb_bdy4.h"
#include "lb_bdy4.x"
#include "lb_bdy5.h"
#include "lb_bdy5.x"
/************* const define **************/
/******** import variable declare ********/
/******* gloable variable declare ********/
/*********** function declare ************/
/********** function prototype ***********/
S16 lbBuildRqstStat(EquCfgEntry_s * equ, TranCb_s * tran)
{
lbCmBuildCmdA(equ, tran, NULLP, 0xa0);
RETVALUE(RFAILED);
}
S16 lbBuildGetCardASN(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
lbCmBuildCmdB(equ, tran , (U8)action, action, 0xa4);
RETVALUE(ROK);
}
S16 lbBuildGetBlkCardASN(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
lbCmBuildCmdB(equ, tran , (U8)action, action, 0xa6);
RETVALUE(ROK);
}
S16 lbBuildGetCardInfo(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
lbCmBuildCmdA(equ, tran, action, 0xa5);
RETVALUE(ROK);
}
S16 lbBuildAuthStart(EquCfgEntry_s * equ, TranCb_s * tran)
{
lbCmBuildCmdB(equ, tran, 1, 0, 0xB2);
RETVALUE(ROK);
}
S16 lbBuildAuthStop(EquCfgEntry_s * equ, TranCb_s * tran)
{
lbCmBuildCmdA(equ, tran, 0, 0xb3);
RETVALUE(ROK);
}
S16 lbBuildGetTotleVolume(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
lbCmBuildCmdA(equ, tran, action, 0xa1);
RETVALUE(ROK);
}
S16 lbBuildGetPrice(EquCfgEntry_s * equ, TranCb_s * tran)
{
lbCmBuildCmdB(equ ,tran , equ->entry.pGunId, NULLP, 0xc0);
RETVALUE(ROK);
}
S16 lbBuildStopFill(EquCfgEntry_s * equ, TranCb_s * tran)
{
lbCmBuildCmdB(equ ,tran , equ->entry.pGunId, NULLP, 0xb6);
RETVALUE(ROK);
}
S16 lbBuildResumeFill(EquCfgEntry_s * equ, TranCb_s * tran)
{
lbCmBuildCmdB(equ, tran , equ->entry.pGunId, NULLP, 0xb7);
RETVALUE(ROK);
}
S16 lbBuildCfm(EquCfgEntry_s * equ, TranCb_s * tran, U32 rqstType, U32 action)
{
lbCmBuildCfmCmd(equ, tran, rqstType, action, 0xd0);
RETVALUE(ROK);
}
S32 lbBuildCloseDuring(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
lbCmBuildCmdA(equ, tran , action, 0xb4);
RETVALUE(ROK);
}
S16 lbBuildUpdateBlkList(EquCfgEntry_s * equ, TranCb_s * tran, CardAsn_s * asnArray, U32 itemNum)
{
CmdMsg_s * cmdNode;
BlkWriteCmd_s cmd;
Buffer * msg;
U32 i;
if (ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if (ROK != SGetMsg(0, 0, &msg))
{
SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset(&cmd, 0, sizeof(BlkWriteCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.dataLen = 107;
cmd.hdr.sideId = equ->entry.sideId;
cmd.cmd = 0xdb;
for(i = 0; i < itemNum ; i++)
{
cmd.asnArray[i] = *asnArray++;
}
SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);
cmdNode->msg = msg;
cmdNode->msgCode = cmd.cmd;
cmdNode->action = NULLP;
cmdNode->machId = equ->entry.machId;
cmdNode->sideId = equ->entry.sideId;
cmdNode->gunId = equ->entry.pGunId;
cmdNode->dir = CMD_DIR;
cmdNode->chId = equ->entry.channelId;
cmdNode->rqstParam = equ->entry.gunId;
cmdNode->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = 500;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
RETVALUE(ROK);
}
S16 lbBuildSetOilTypeCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
CmdMsg_s * cmdNode;
WriteOilTypeCmd_s cmd;
Buffer * msg;
if (ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if (ROK != SGetMsg(0, 0, &msg))
{
SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset(&cmd, 0, sizeof(WriteOilTypeCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.dataLen = 4;
cmd.hdr.sideId = equ->entry.sideId;
cmd.cmd = 0xc5;
cmd.gunId = equ->entry.pGunId;
cmd.oilType = equ->entry.oilType;
SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);
cmdNode->msg = msg;
cmdNode->msgCode = cmd.cmd;
cmdNode->action = NULLP;
cmdNode->machId = equ->entry.machId;
cmdNode->sideId = equ->entry.sideId;
cmdNode->gunId = equ->entry.pGunId;
cmdNode->dir = CMD_DIR;
cmdNode->chId = equ->entry.channelId;
cmdNode->rqstParam = equ->entry.gunId;
cmdNode->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
RETVALUE(ROK);
}
S16 lbBuildGetHistroyCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
RETVALUE(lbCmBuildCmdB(equ, tran, 0x02, 0x01, 0xda));
}
S16 lbBuildGetGreyCmd(EquCfgEntry_s * equ, TranCb_s * tran, U8 type)
{
RETVALUE(lbCmBuildCmdB(equ, tran, type, type, 0xd7));
}
S16 lbBuildWriteGreyCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
CmdMsg_s * cmdNode;
WriteGreyCmd_s cmd;
Buffer * msg;
if (ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if (ROK != SGetMsg(0, 0, &msg))
{
SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset(&cmd, 0, sizeof(WriteGreyCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.dataLen = 30;
cmd.hdr.sideId = equ->entry.sideId;
cmd.cmd = 0xd3;
memcpy(cmd.grey, equ->grey, 28);
SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);
cmdNode->msg = msg;
cmdNode->msgCode = cmd.cmd;
cmdNode->action = NULLP;
cmdNode->machId = equ->entry.machId;
cmdNode->sideId = equ->entry.sideId;
cmdNode->gunId = equ->entry.pGunId;
cmdNode->dir = CMD_DIR;
cmdNode->chId = equ->entry.channelId;
cmdNode->rqstParam = equ->entry.gunId;
cmdNode->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
RETVALUE(ROK);
}
S16 lbBuildReleaseGreyCmd(EquCfgEntry_s * equ, TranCb_s * tran, U8 * grey)
{
CmdMsg_s * cmdNode;
WriteGreyCmd_s cmd;
Buffer * msg;
if (ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if (ROK != SGetMsg(0, 0, &msg))
{
SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset(&cmd, 0, sizeof(WriteGreyCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.dataLen = 30;
cmd.hdr.sideId = equ->entry.sideId;
cmd.cmd = 0xd5;
memcpy(cmd.grey, grey, 28);
SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);
cmdNode->msg = msg;
cmdNode->msgCode = cmd.cmd;
cmdNode->action = NULLP;
cmdNode->machId = equ->entry.machId;
cmdNode->sideId = equ->entry.sideId;
cmdNode->gunId = equ->entry.pGunId;
cmdNode->dir = CMD_DIR;
cmdNode->chId = equ->entry.channelId;
cmdNode->rqstParam = equ->entry.gunId;
cmdNode->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
RETVALUE(ROK);
}
S16 lbProcSpecCode(S32 num, SpecCode_s * array)
{
CmdMsg_s * cmdNode;
EquCfgEntry_s * equ;
SpecCodeCmd_s *cmd;
SpecCode_s *specCodeArray;
Buffer * msg;
S32 itemCnt, i;
U8 cmdCnt;
S32 itemNum;
RxCmdEntry_s * entry;
TranCb_s * tran;
LBGETCMDENTRY(0, CMD_DIR, entry);
equ = (EquCfgEntry_s *)cmLListFirst(&rxCb.pEquCfgList);
while(NULLP != equ)
{
LBGETTRAN(entry, equ, tran);
cmdCnt = 1;
itemNum = num;
while(itemNum >= 0)
{
if (ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if (ROK != SGetMsg(0, 0, &msg))
{
lbCmDestroyCmdNode(cmdNode);
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
itemCnt = 50<itemNum?50:itemNum;
if (ROK != SGetSBuf(0, 0, (Data **)&cmd, sizeof(SpecCodeCmd_s) + itemCnt * 2))
{
lbCmDestroyCmdNode(cmdNode);
SPutMsg(msg);
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset((Data *)cmd, 0, sizeof(SpecCodeCmd_s));
cmd->hdr.frameStart = 0x55aa;
cmd->hdr.sideId = equ->entry.sideId;
cmd->itemNum = htons(itemCnt);
cmd->cnt = cmdCnt;
cmd->hdr.dataLen = itemCnt * 2 + 5;
cmd->cmd = 0xd4;
specCodeArray = (SpecCode_s *)(cmd + 1);
for(i = 0; i < itemCnt; i++)
{
specCodeArray[i] = *array++;
}
SAddPstMsgMult((Data *)cmd, (MsgLen)(cmd->hdr.dataLen + 3), msg);
SPutSBuf(0, 0, (Data *)cmd, sizeof(SpecCodeCmd_s) + itemCnt * 2);
cmdNode->msg = msg;
cmdNode->msgCode = 0xd4;
cmdNode->action = NULLP;
cmdNode->machId = equ->entry.machId;
cmdNode->sideId = equ->entry.sideId;
cmdNode->gunId = equ->entry.pGunId;
cmdNode->dir = CMD_DIR;
cmdNode->chId = equ->entry.channelId;
cmdNode->rqstParam = equ->entry.gunId;
cmdNode->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
itemNum -= itemCnt;
if (itemCnt == 0)
{
break;
}
cmdCnt++;
}
equ = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList);
}
RETVALUE(ROK);
}
S16 lbBuildCfgSysCmd(EquCfgEntry_s * equ, TranCb_s * tran, RxCfg_s * cfg)
{
CmdMsg_s * cmdNode;
SysCfgCmd_s cmd;
Buffer * msg;
if (ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if (ROK != SGetMsg(0, 0, &msg))
{
SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset(&cmd, 0, sizeof(SysCfgCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.dataLen = 44;
cmd.hdr.sideId = equ->entry.sideId;
cmd.cmd = 0xd1;
memcpy(&cmd.cfg, cfg, sizeof(RxCfg_s));
SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);
cmdNode->msg = msg;
cmdNode->msgCode = cmd.cmd;
cmdNode->action = NULLP;
cmdNode->machId = equ->entry.machId;
cmdNode->sideId = equ->entry.sideId;
cmdNode->gunId = equ->entry.pGunId;
cmdNode->dir = CMD_DIR;
cmdNode->chId = equ->entry.channelId;
cmdNode->rqstParam = equ->entry.gunId;
cmdNode->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
RETVALUE(ROK);
}
S16 lbBuildSetPriceCmd(EquCfgEntry_s * equ, TranCb_s * tran, U16 price, Time_s * time)
{
CmdMsg_s * cmdNode;
SetPriceCmd_s cmd;
Buffer * msg;
if (ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if (ROK != SGetMsg(0, 0, &msg))
{
SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset(&cmd, 0, sizeof(SetPriceCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.dataLen = 12;
cmd.hdr.sideId = equ->entry.sideId;
cmd.cmd = 0xc1;
cmd.gunId = equ->entry.pGunId;
memcpy(&cmd.time, time, sizeof(Time_s));
cmd.price = price;
SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);
cmdNode->msg = msg;
cmdNode->msgCode = cmd.cmd;
cmdNode->action = NULLP;
cmdNode->machId = equ->entry.machId;
cmdNode->sideId = equ->entry.sideId;
cmdNode->gunId = equ->entry.pGunId;
cmdNode->dir = CMD_DIR;
cmdNode->chId = equ->entry.channelId;
cmdNode->rqstParam = equ->entry.gunId;
cmdNode->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
RETVALUE(ROK);
}
S16 lbBuildSetTimeCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
CmdMsg_s * cmdNode;
SetTimeCmd_s cmd;
Buffer * msg;
DateTime time;
SGetDateTime(&time);
if (ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if (ROK != SGetMsg(0, 0, &msg))
{
SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset(&cmd, 0, sizeof(SetTimeCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.dataLen = 9;
cmd.hdr.sideId = equ->entry.sideId;
cmd.cmd = 0xd8;
cmd.time[0] = 0x20;
cmd.time[1] = ((time.year/10)<<4) | (time.year%10);
cmd.time[2] = ((time.month/10)<<4) | (time.month%10);
cmd.time[3] = ((time.day/10)<<4) | (time.day%10);
cmd.time[4] = ((time.hour/10)<<4) | (time.hour%10);
cmd.time[5] = ((time.min/10)<<4) | (time.min % 10);
cmd.time[6] = ((time.sec/10)<<4) | (time.sec % 10);
SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);
cmdNode->msg = msg;
cmdNode->msgCode = cmd.cmd;
cmdNode->action = NULLP;
cmdNode->machId = equ->entry.machId;
cmdNode->sideId = equ->entry.sideId;
cmdNode->gunId = equ->entry.pGunId;
cmdNode->dir = CMD_DIR;
cmdNode->chId = equ->entry.channelId;
cmdNode->rqstParam = equ->entry.gunId;
cmdNode->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
RETVALUE(ROK);
}
S16 lbBuildSetNetModeCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
RETVALUE(lbCmBuildCmdB(equ,tran, 0x01, NULLP, 0xb0));
}
/******************* modify histroy list *******************
001. create at: 2002-7-6 1:05:30 by Shangyaohui
****************** modify histroy list end ****************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -