?? lb_bdy3.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-5 1:16:35
***********************************************************************************************************
*/
/************ 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 lbBuildLoadCfg(EquCfgEntry_s * equ)
{
RxCmdEntry_s * entry;
TranCb_s * tran;
LBGETCMDENTRY(0, CMD_DIR, entry);
LBGETTRAN(entry, equ, tran);
lbBuildCfgSysCmd(equ, tran, &rxCb.cfg);
RETVALUE(ROK);
}
S16 lbBuildLoadDLD(EquCfgEntry_s * equ)
{
RxCmdEntry_s * entry;
TranCb_s * tran;
U32 itemNum;
SpecCode_s * array, *specCodeArray;
CmdMsg_s * cmdNode;
SpecCodeCmd_s *cmd;
Buffer * msg;
S32 itemCnt, i;
U8 cmdCnt;
if(ROK != lbCmGetSpecCode(&itemNum, &array))
{
RETVALUE(RFAILED);
}
LBGETCMDENTRY(0, CMD_DIR, entry);
LBGETTRAN(entry, equ, tran);
cmdCnt = 1;
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] = htons(*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->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
itemNum -= itemCnt;
if(itemCnt == 0)
{
break;
}
cmdCnt++;
}
RETVALUE(ROK);
}
S16 lbBuildLoadBlklist(EquCfgEntry_s * equ)
{
RxCmdEntry_s * entry;
TranCb_s * tran;
U32 itemNum;
CmdMsg_s * cmdNode;
Buffer * msg;
BlkListCmd_s cmd;
U8 cnt;
Buffer * cardAsnFile, * cmd_msg, * temp;
MsgLen len;
U16 frameCnt;
#ifndef UP_LAYER_UNSECRET
if (ROK != lbCmGetProvinceBlk(&itemNum, &array, 0x01))
{
RETVALUE(RFAILED);
}
LBGETCMDENTRY(0, CMD_DIR, entry);
LBGETTRAN(entry, equ, tran);
for(i = 0; i<itemNum ; i++)
{
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);
}
memset((Data *)&cmd, 0, sizeof(BlkListCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.sideId = equ->entry.sideId;
cmd.hdr.dataLen = 109;
cmd.type = 0x01;
cmd.cmd = 0xd2;
cmd.cnt = htons(i+1);
memcpy(&cmd.line, &array[i], sizeof(BlkCardLine_s));
SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);
cmdNode->msg = msg;
cmdNode->msgCode = 0xd2;
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->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
}
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);
}
memset((Data *)&cmd, 0, sizeof(BlkListCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.sideId = equ->entry.sideId;
cmd.hdr.dataLen = 3;
cmd.cmd = 0xd2;
cmd.cnt = 0;
SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);
cmdNode->msg = msg;
cmdNode->msgCode = 0xd2;
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->timer = 1;
cmdNode->retry = CMD_RETRY_TIMES;
cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
SPutSBuf(0, 0, (Data *)array, sizeof(BlkCardLine_s)*itemNum);
#else
if(ROK != SGetMsg(0, 0, &cardAsnFile))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if(ROK != lbCmGetProvinceBlk(cardAsnFile, &itemNum, 0x01))
{
LBGETCMDENTRY(0x09, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
entry->errCode = 0x01;
lbBuildIndCfm(0, 0x09, 1, tran);
RETVALUE(ROK);
}
LBGETCMDENTRY(0, CMD_DIR, entry);
LBGETTRAN(entry, equ, tran);
SAddMsgRef(cardAsnFile, 0, 0, &msg);
SFndLenMsg(msg, &len);
frameCnt = 1;
while(len >= 100)
{
if(ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if(ROK != SGetMsg(0, 0, &cmd_msg))
{
lbCmDestroyCmdNode(cmdNode);
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset((Data *)&cmd, 0, sizeof(BlkListCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.sideId = 0;
cmd.hdr.dataLen = 106;
cmd.cmd = 0xdb;
cmd.cnt = htons(frameCnt++);
cmd.type = 0x01;
cmd.asnNum = 10;
SAddPstMsgMult((Data *)&cmd, 9, cmd_msg);
SSegMsg(msg, 100, &temp);
SCatMsg(cmd_msg, msg, M1M2);
SPutMsg(msg);
msg = temp;
cmdNode->msg = msg;
cmdNode->msgCode = 0xdb;
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->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = 500;
cmdNode->loadTimer = BLKRETRY_TIMER;
if (msg == NULLP)
{
len -= 100;
break;
}
SFndLenMsg(msg, &len);
}
if(ROK != lbCmGetCmdNode(tran, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if(ROK != SGetMsg(0, 0, &cmd_msg))
{
lbCmDestroyCmdNode(cmdNode);
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
memset((Data *)&cmd, 0, sizeof(BlkListCmd_s));
cmd.hdr.frameStart = 0x55aa;
cmd.hdr.sideId = 0;
cmd.hdr.dataLen = 6 + len;
cmd.cmd = 0xdb;
cmd.cnt = 0;
cmd.type = 0x01;
cmd.asnNum = len / 10;
SAddPstMsgMult((Data *)&cmd, 9, cmd_msg);
if (msg == NULLP)
{
SCatMsg(cmd_msg, msg, M1M2);
SPutMsg(msg);
}
cmdNode->msg = cmd_msg;
cmdNode->msgCode = 0xdb;
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->stat = RDY_SEND;
cmdNode->timer = 1;
cmdNode->retry = 500;
cmdNode->loadTimer = BLKRETRY_TIMER;
SPutMsg(cardAsnFile);
#endif
RETVALUE(ROK);
}
S16 lbBuildLoadOwnGrey(EquCfgEntry_s * equ)
{
RxCmdEntry_s * entry;
TranCb_s * tran;
LBGETCMDENTRY(0, CMD_DIR, entry);
LBGETTRAN(entry, equ, tran);
lbBuildGetGreyCmd(equ, tran, 0x01);
RETVALUE(ROK);
}
S16 ldBuildFindBlklist(EquCfgEntry_s * equ)
{
RxCmdEntry_s * entry;
TranCb_s * tran;
LBGETCMDENTRY(0, CMD_DIR, entry);
LBGETTRAN(entry, equ, tran);
lbBuildGetCardASN(equ, tran, 2);
RETVALUE(ROK);
}
S16 lbBuildFindOtherGrey(EquCfgEntry_s * equ)
{
RxCmdEntry_s * entry;
TranCb_s * tran;
LBGETCMDENTRY(0, CMD_DIR, entry);
LBGETTRAN(entry, equ, tran);
lbBuildGetGreyCmd(equ, tran, 0x02);
RETVALUE(ROK);
}
S16 lbBuildSendRecordRqst(EquCfgEntry_s * equ)
{
RxCmdEntry_s * entry;
TranCb_s * tran;
LBGETCMDENTRY(0, CMD_DIR, entry);
LBGETTRAN(entry, equ, tran);
RETVALUE(lbCmBuildCmdA(equ, tran, NULLP, 0xd6));
}
/******************* modify histroy list *******************
001. create at: 2002-7-5 1:16:35 by Shangyaohui
****************** modify histroy list end ****************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -