⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lb_bdy3.c

📁 中国石油二期加油站IC系统后台通讯软件
💻 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 ****************/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -