📄 lb_xmit.c
字号:
CHKHANDLESTAT(cmd);
buf[1] = 0x10;
len = 2;
ptr = buf;
LBLOG("指定密钥回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x11:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x10;
len = 2;
ptr = buf;
LBLOG("下达传传输密钥回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x12:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x10;
len = 2;
LBLOG("启用工行应用回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x14:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x10;
len = 2;
ptr = buf;
LBLOG("设定发卡银行标识回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x15:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x10;
len = 2;
ptr = buf;
LBLOG("设定交易密钥回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x16:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x10;
len = 2;
ptr = buf;
LBLOG("启用二期交通卡回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x17:
{
U8 i;
CHKHANDLESTAT(cmd);
buf[1] = 0x10;
if(cmd->rqstParam == 0)
{
equ = (EquCfgEntry_s *)cmLListFirst(&rxCb.pEquCfgList);
buf[2] = 0;
for(i = 0; equ != NULLP; i++,
equ = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList))
{
buf[3 + i * 5] = equ->entry.gunId;
*((U32 *)&buf[4 + i * 5]) = htonl(equ->totleVolume);
}
buf[2] = i;
len = 3 + buf[2] * 5 + 5;
}
else
{
equ = findEqu(cmd->rqstParam);
if(NULLP == equ)
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
buf[2] = equ->entry.gunId;
*((U32 *)&buf[3]) = htonl(equ->totleVolume);
len = 7 + 5;
}
ptr = buf;
LBLOG("查询泵码回应", ptr, len);
lbCmFillMac(&buf[2], rxCb.cfg.crrntTranKey, len-2, rxCb.cfg.tranKeyVer);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x18:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x10;
len = 2;
ptr = buf;
LBLOG("下传油价回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x19:
{
U8 errCode = 0;
U8 * idx = &buf[3];
U8 i = 0;
CHKHANDLESTAT(cmd);
if(cmd->rqstParam == 0)
{
equ = (EquCfgEntry_s *)cmLListFirst(&rxCb.pEquCfgList);
while(NULLP != equ)
{
if(equ->cmdProcErrCode)
{
errCode |= equ->cmdProcErrCode;
equ->cmdProcErrCode = 0;
equ = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList);
continue;
}
buf[3 + 3 * i] = equ->entry.gunId;
memcpy(&buf[3 + 3 * i + 1], &equ->crrntPrice, 2);
i++;
equ = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList);
}
buf[2] = cmLListLen(&rxCb.pEquCfgList);
len = 3 + i*3;
}
else
{
equ = findEqu(cmd->rqstParam);
if(equ->cmdProcErrCode)
{
equ->cmdProcErrCode = 0;
buf[1] = 0x02;
buf[2] = cmd->rqstParam;
len = 3;
ptr = buf;
UP_DATA(0, len, ptr);
lbCmDestroyCmdNode(cmd);
RETVALUE(ROK);
}
buf[1] = 0x00;
buf[2] = equ->entry.gunId;
memcpy(&buf[3], &equ->crrntPrice, 2);
len = 5;
}
//lbCmFillMac(buf, rxCb.cfg.crrntTranKey, 5, rxCb.cfg.tranKeyVer);
buf[1] = 0x00;
ptr = buf;
LBLOG("查询油价回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x1a:
{
lbCmDestroyCmdNode(cmd);
break;
}
case 0x1c:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x00;
len = 2;
ptr = buf;
LBLOG("暂停加油回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x1d:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x00;
len = 2;
ptr = buf;
LBLOG("恢复加油回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x1e:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x10;
len = 2;
ptr = buf;
LBLOG("灰名单更新回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
case 0x1f:
{
CHKHANDLESTAT(cmd);
buf[1] = 0x00;
len = 2;
ptr = buf;
LBLOG("全国黑名单更新回应", ptr, len);
lbCmDestroyCmdNode(cmd);
break;
}
}
UP_DATA(0, len, ptr);
RETVALUE(ROK);
}
S16 lbXmitProc(U8 gunId)
{
EquCfgEntry_s * equ;
ScCommCb_s * scCommCb;
CmdMsg_s * cmd;
Buffer * xmitMsg;
RxCmdEntry_s * entry;
equ = findEqu(gunId);
scCommCb = equ->scCommCb;
GETFIRSTRQSTENTRY(entry);
if(entry->cmdType == IND_DIR)
{
if(ROK != findFirstCmdNode(&cmd))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
}
else
{
if(ROK != findFirstCmdNodeByChannel(equ->entry.channelId, &cmd))
{
// RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
}
if(cmd->dir == IND_DIR)
{
if(--cmd->timer)
{
RETVALUE(ROK);
}
cmd->timer = cmd->loadTimer;
if(!cmd->retry)
{
if(cmd->stat == HAVE_SEND)
{
rxLog("ind error timer expired\n");
lbCmDestroyCmdNode(cmd);
RETVALUE(ROK);
}
else if(cmd->stat == HAVE_ACK_W)
{
}
}
cmd->retry--;
cmd->stat = HAVE_SEND;
lbIndMsg(cmd);
RETVALUE(ROK);
}
else if(cmd->dir == CMD_DIR)
{
if(--cmd->timer)
{
RETVALUE(ROK);
}
cmd->timer = cmd->loadTimer;
if(!cmd->retry)
{
if(cmd->stat == HAVE_SEND)
{
rxLog("cmd error timer expired\n");
equ->cmdProcErrCode |= 0x02;
equ->stat = NO_ACTIVE;
lbCmDestroyCmdNode(cmd);
RETVALUE(ROK);
}
}
cmd->retry--;
if(cmd->stat == HAVE_ACK_W)
{
MsgB_s cmd_b;
cmd_b.hdr.frameStart = 0x55aa;
cmd_b.hdr.sideId = cmd->sideId;
cmd_b.hdr.dataLen = 3;
cmd_b.cmd = 0xe0;
cmd_b.val = cmd->msgCode;
if(ROK != SGetMsg(0 ,0, &xmitMsg))
{
RXLOGERROR(0, 0, 0, "ERROR");
RETVALUE(RFAILED);
}
SAddPstMsgMult((Data *)&cmd_b, (MsgLen)(cmd_b.hdr.dataLen + 3), xmitMsg);
lbXmitMsg(scCommCb, xmitMsg);
RETVALUE(ROK);
}
lbScLog(scCommCb, cmd);
cmd->stat = HAVE_SEND;
if(cmd->msgCode == 0xd0)
{
switch(cmd->rqstType)
{
case WORK_ON_RQST:
if(equ->cfmStat == ROK)
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(2, cmd->msg, (MsgLen)index);
}
else
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(19, cmd->msg, (MsgLen)index);
}
break;
case WORK_OUT_RQST:
if(equ->cfmStat == ROK)
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(1, cmd->msg, (MsgLen)index);
}
else
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(18, cmd->msg, (MsgLen)index);
}
break;
case BLK_CARD_RQST:
if(equ->cfmStat == ROK)
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(5, cmd->msg, (MsgLen)index);
}
else
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(6, cmd->msg, (MsgLen)index);
}
break;
case REL_GREY_RQST:
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(10, cmd->msg, (MsgLen)index);
}
break;
case IND_REC_RQST:
if(equ->cfmStat == ROK)
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(3, cmd->msg, (MsgLen)index);
}
else
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(4, cmd->msg, (MsgLen)index);
}
break;
case LOAD_GREY_RQST:
if(equ->cfmStat == ROK)
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(14, cmd->msg, (MsgLen)index);
}
else
{
U32 index;
FIELD_INDEX(MsgB_s, val, index);
SRepMsg(15, cmd->msg, (MsgLen)index);
}
break;
}
if(ROK != SAddMsgRef(cmd->msg, 0, 0, &xmitMsg))
{
RXLOGERROR(0, 0, 0, "error");
RETVALUE(RFAILED);
}
lbXmitMsg(scCommCb, xmitMsg);
RETVALUE(ROK);
}
if(cmd->msg != NULLP)
{
if(ROK != SAddMsgRef(cmd->msg, 0, 0, &xmitMsg))
{
RXLOGERROR(0, 0, 0, "error");
RETVALUE(RFAILED);
}
}
}
#ifdef LO_DEBUG
// SPrntMsg(xmitMsg, 0 , 0);
rxLog(scCommCb->commName);
#endif
lbXmitMsg(scCommCb, xmitMsg);
RETVALUE(ROK);
}
/******************* modify histroy list *******************
001. create at: 2002-7-4 20:28:58 by Shangyaohui
****************** modify histroy list end ****************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -