?? lb_al2lb.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-12 2:13: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"
#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 lbRecvCommonIndAck(U8 cmdCode, Buffer * msg)
{
U8 ackStat;
CmdMsg_s * cmdNode;
EquCfgEntry_s * equ;
SUnpkU8(&ackStat, msg);
if (ROK != findCmdNodByCode(cmdCode, &cmdNode))
{
RETVALUE(RFAILED);
}
equ = findEqu(cmdNode->rqstParam);
switch (ackStat)
{
case 0x01:
rxLog("error: al handle");
if (equ != NULLP)
{
equ->cfmStat = RFAILED;
}
break;
case 0x00:
if (equ != NULLP)
{
equ->cfmStat = ROK;
}
cmdNode->stat = HAVE_ACK_W;
break;
#if 0
case 0x10:
if (equ != NULLP)
{
equ->cfmStat = ROK;
}
lbCmDestroyCmdNode(cmdNode);
break;
case 0x11:
rxLog("error: al 2 handle");
if (equ != NULLP)
{
equ->cfmStat = RFAILED;
}
lbCmDestroyCmdNode(cmdNode);
break;
#endif
default:
RETVALUE(RFAILED);
}
lbCmDestroyCmdNode(cmdNode);
RETVALUE(ROK);
}
S16 lbRecvGunUpIndAck(Buffer * mbuf)
{
RETVALUE(lbRecvCommonIndAck(0x01, mbuf));
}
S16 lbRecvGunDownIndAck(Buffer * mbuf)
{
RETVALUE(lbRecvCommonIndAck(0x02, mbuf));
}
S16 lbRecvWorkOnIndAck(Buffer * mbuf)
{
RETVALUE(lbRecvCommonIndAck(0x03, mbuf));
}
S16 lbRecvCardInsertIndAck(Buffer * mbuf)
{
}
S16 lbRecvCardOutIndAck(Buffer * mbuf)
{
RETVALUE(lbRecvCommonIndAck(0x05, mbuf));
}
S16 lbRecvCardInfoIndAck(Buffer * mbuf)
{
RETVALUE(lbRecvCommonIndAck(0x06, mbuf));
}
S16 lbRecvTranInfoIndAck(Buffer * mbuf)
{
U8 ackStat;
CmdMsg_s * cmdNode;
EquCfgEntry_s * equ;
if (ROK != findCmdNodByCode(0x08, &cmdNode))
{
RETVALUE(RFAILED);
}
equ = findEqu(cmdNode->rqstParam);
SUnpkU8(&ackStat, mbuf);
if(ackStat != 0)
{
if(cmdNode->retry == 0)
{
equ->cfmStat = RFAILED;
lbCmDestroyCmdNode(cmdNode);
}
cmdNode->timer = 1;
rxLog("error: rec ind error");
RETVALUE(ROK);
}
equ->cfmStat = ROK;
lbCmDestroyCmdNode(cmdNode);
RETVALUE(ROK);
}
S16 lbRecvFillInfoIndAck(Buffer * mbuf)
{
/* modify by shang 2002-7-20 6:25:47 */
#if 0 /* last code */
RETVALUE(lbRecvCommonIndAck(0x0a, mbuf));
#else /* new code */
RETVALUE(ROK);
#endif /* end modify */
/* modify by shang is over 2002-7-20 6:25:47*/
}
S16 lbRecvWorkDownIndAck(Buffer * mbuf)
{
RETVALUE(lbRecvCommonIndAck(0x0b, mbuf));
}
S16 lbRecvGetStaCodeIndAck(Buffer * mbuf)
{
GetStationCodeIndAck_s ack;
MsgLen len;
CmdMsg_s * cmdNode;
EquCfgEntry_s * equ;
RxCmdEntry_s * entry;
TranCb_s * tran;
if (ROK != SCpyMsgFix(mbuf, 0, 11, (Data *)&ack, &len))
{
rxLog("error recv 0x0c ack");
RETVALUE(RFAILED);
}
if (ROK != findCmdNodByCode(0x0c, &cmdNode))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
switch (ack.ackStat)
{
case 0x01:
rxLog("error: al handle");
break;
case 0x00:
rxCb.cfg.provCode = ack.provinceCode;
rxCb.cfg.cityCode = ack.cityCode;
rxCb.cfg.tranKeyVer = ack.ver;
memcpy(rxCb.cfg.crrntTranKey, &rxCb.tranKeyTbl[rxCb.cfg.tranKeyVer-1], 16);
memcpy(rxCb.cfg.stationCode , ack.stationCode, 3);
equ = (EquCfgEntry_s *)cmLListFirst(&rxCb.pEquCfgList);
if (equ != NULLP)
{
LBGETCMDENTRY(0, CMD_DIR, entry);
}
while (NULLP != equ)
{
LBGETTRAN(entry, equ, tran);
lbBuildCfgSysCmd(equ, tran, &rxCb.cfg);
equ = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList);
}
break;
default:
RETVALUE(RFAILED);
}
lbCmDestroyCmdNode(cmdNode);
RETVALUE(ROK);
}
/*--------------------------------------*/
S16 lbRecvBlkLstInProvinceNtfy(Buffer * mbuf)
{
RxCmdEntry_s * entry;
U8 blkListType;
TranCb_s * tran;
BlkCardLine_s * itemArray;
U32 itemNum;
#ifdef UP_LAYER_UNSECRET
Buffer * cardAsnFile;
#endif
SUnpkU8(&blkListType, mbuf);
LBGETCMDENTRY(0, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(0, 0x09, 0, tran);
#ifndef UP_LAYER_UNSECRET
if (ROK != lbCmGetProvinceBlk(&itemNum, &itemArray, blkListType))
{
LBGETCMDENTRY(0x09, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
entry->errCode = 0x01;
lbBuildIndCfm(0, 0x09, 1, tran);
RETVALUE(ROK);
}
lbProcProvinceBlk(itemNum, itemArray, blkListType);
LBLOG("下發(fā)黑名單", 0, 0);
SPutSBuf(0, 0, (Data *)itemArray, sizeof(BlkCardLine_s)*itemNum);
#else
if(ROK != SGetMsg(0, 0, &cardAsnFile))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
if(ROK != lbCmGetProvinceBlk(cardAsnFile, &itemNum, blkListType))
{
LBGETCMDENTRY(0x09, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
entry->errCode = 0x01;
lbBuildIndCfm(0, 0x09, 1, tran);
RETVALUE(ROK);
}
lbProcProvinceBlk(cardAsnFile, itemNum,blkListType );
SPutMsg(cardAsnFile);
#endif
LBGETCMDENTRY(0x09, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(0, 0x09, 1, tran);
RETVALUE(ROK);
}
S16 lbRecvGetEquInfoNtfy(Buffer * mbuf)
{
static initFlag = TRUE;
RxCmdEntry_s * entry;
U8 reserve;
TranCb_s * tran;
U8 gunNum;
EquCfg_s * equCfgArray;
U8 ver;
SUnpkU8(&reserve, mbuf);
if (0 != reserve)
{
RXLOGERROR(0 ,0, 0, "ERROR");
RETVALUE(RFAILED);
}
if (initFlag == FALSE)
{
LBGETCMDENTRY(0x0d, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(0, 0x0d, 0, tran);
}
if(ROK != rxGetEquInfo(&gunNum, &equCfgArray, &ver))
{
LBGETCMDENTRY(0x0d, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
entry->errCode = 0x01;
lbBuildIndCfm(0, 0x0d, 1, tran);
RETVALUE(ROK);
}
lbProcEquCfg(gunNum, equCfgArray, ver);
SPutSBuf(0 ,0, (Data *)equCfgArray, sizeof(EquCfg_s) * gunNum);
if (initFlag == FALSE)
{
LBGETCMDENTRY(0x0d, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(0, 0x0d, 1, tran);
}
initFlag = FALSE;
RETVALUE(ROK);
}
S16 lbRecvGetSpecStaCodeRqst(Buffer * mbuf)
{
RxCmdEntry_s * entry;
U8 reserve;
TranCb_s * tran;
U32 itemNum;
SpecCode_s * specCodeArray;
SUnpkU8(&reserve, mbuf);
if (0 != reserve)
{
RXLOGERROR(0 ,0, 0, "ERROR");
RETVALUE(RFAILED);
}
LBGETCMDENTRY(0x0e, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(0, 0x0e, 0, tran);
if (ROK != lbCmGetSpecCode(&itemNum, &specCodeArray))
{
LBGETCMDENTRY(0, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
entry->errCode = 0x01;
lbBuildIndCfm(0, 0x0e, 1, tran);
RETVALUE(ROK);
}
lbProcSpecCode(itemNum, specCodeArray);
LBGETCMDENTRY(0x0e, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(0, 0x0e, 1, tran);
RETVALUE(ROK);
}
S16 lbRecvGetHistroyRqst(Buffer * mbuf)
{
RxCmdEntry_s * entry;
U8 gunId;
TranCb_s * tran;
EquCfgEntry_s * equ;
SUnpkU8(&gunId, mbuf);
LBGETCMDENTRY(0x0f, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(gunId, 0x0f, 0, tran);
if (gunId == 0)
{
equ = (EquCfgEntry_s *)cmLListFirst(&rxCb.pEquCfgList);
if (equ != NULLP)
{
LBGETCMDENTRY(0x0f, CMD_DIR, entry);
}
while (NULLP != equ)
{
LBGETTRAN(entry, equ, tran);
lbBuildGetHistroyCmd(equ, tran);
equ = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList);
}
}
else
{
equ = findEqu(gunId);
LBGETCMDENTRY(0x0f, CMD_DIR, entry);
LBGETTRAN(entry, equ, tran);
lbBuildGetHistroyCmd(equ, tran);
}
LBGETCMDENTRY(0x0f, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(gunId, 0x0f, 1, tran);
RETVALUE(ROK);
}
S16 lbRecvSetKeyVerRqst(Buffer * mbuf)
{
RxCmdEntry_s * entry;
TranCb_s * tran;
EquCfgEntry_s * equ;
SUnpkU8(&rxCb.cfg.crrntKeyVer, mbuf);
if(rxCb.cfg.tranKeyVer != 2 || rxCb.cfg.tranKeyVer != 1)
{
LBGETCMDENTRY(0x10, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
entry->errCode = 0x01;
lbBuildIndCfm(0, 0x10, 0, tran);
RETVALUE(ROK);
}
LBGETCMDENTRY(0x10, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(0, 0x10, 0, tran);
memcpy(rxCb.cfg.crrntTranKey, rxCb.tranKeyTbl[rxCb.cfg.tranKeyVer-1], 16);
equ = (EquCfgEntry_s *)cmLListFirst(&rxCb.pEquCfgList);
if (equ != NULLP)
{
LBGETCMDENTRY(0, CMD_DIR, entry);
}
while (NULLP != equ)
{
LBGETTRAN(entry, equ, tran);
lbBuildCfgSysCmd(equ, tran, &rxCb.cfg);
equ = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList);
}
LBGETCMDENTRY(0x10, IND_DIR, entry);
LBGETTRAN(entry, 0, tran);
lbBuildIndCfm(0, 0x10, 1, tran);
RETVALUE(ROK);
}
S16 lbRecvSetKeyInfoRqst(Buffer * mbuf)
{
RxCmdEntry_s * entry;
TranCb_s * tran;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -