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

📄 lb_bdy2.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-4 21:53:01  
***********************************************************************************************************
*/

/************ 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 lbUpdateGunStat(EquCfgEntry_s * equ, U8 sideId, RqstStatAck_s * ack)
{
	TranCb_s * tran;
	RxCmdEntry_s * entry;

	if(equ->entry.pGunId != ack->crrntGunId)
	{
		printf("error: gunId\n");
		RETVALUE(RFAILED);
	}

	equ->stat = ack->stat;

	if(equ->stat == GUN_DOWN && equ->lastStat == GUN_DOWN)
	{
		if(!ack->cardNotInSta && equ->cardInStat == FALSE )
		{
			switch(ack->cardStat)
			{
			case ONLY_CARD_NO:
				LBGETCMDENTRY(0, CMD_DIR, entry);
				LBGETTRAN(entry, equ, tran);

				lbBuildGetCardASN(equ, tran, NULLP);
				LBGETCMDENTRY(0, IND_DIR, entry);
				LBGETTRAN(entry, equ, tran);

				lbIndCardInMsg(equ, tran);

				LBGETCMDENTRY(0, CMD_DIR, entry);
				LBGETTRAN(entry, equ, tran);

				lbBuildGetCardInfo(equ, tran, NULLP);

				LBGETCMDENTRY(0, IND_DIR, entry);
				LBGETTRAN(entry, equ, tran);
				lbIndCardInfoMsg(equ, tran, NULLP);



				break;

			case PARTVALUE_VALID:
				LBGETCMDENTRY(0, CMD_DIR, entry);
				LBGETTRAN(entry, equ, tran);

				lbBuildGetCardASN(equ, tran, NULLP);

				LBGETCMDENTRY(0, IND_DIR, entry);
				LBGETTRAN(entry, equ, tran);
				lbIndCardInMsg(equ, tran);
				LBGETCMDENTRY(0, CMD_DIR, entry);
				LBGETTRAN(entry, equ, tran);

				lbBuildGetCardInfo(equ, tran, NULLP);

				LBGETCMDENTRY(0, IND_DIR, entry);
				LBGETTRAN(entry, equ, tran);
				lbIndCardInfoMsg(equ, tran, NULLP);


				break;

			case ALL_VALID:
				LBGETCMDENTRY(0, CMD_DIR, entry);
				LBGETTRAN(entry, equ, tran);
				lbBuildGetCardASN(equ, tran, NULLP);

				LBGETCMDENTRY(0, IND_DIR, entry);
				LBGETTRAN(entry, equ, tran);
				lbIndCardInMsg(equ, tran);
				LBGETCMDENTRY(0, CMD_DIR, entry);
				LBGETTRAN(entry, equ, tran);

				lbBuildGetCardInfo(equ, tran, NULLP);

				LBGETCMDENTRY(0, IND_DIR, entry);
				LBGETTRAN(entry, equ, tran);
				lbIndCardInfoMsg(equ, tran, NULLP);


				break;
			}
			equ->cardInStat =   TRUE;
		}

		else if(ack->cardNotInSta && equ->cardInStat == TRUE)
		{
			LBGETCMDENTRY(0, CMD_DIR, entry);
			LBGETTRAN(entry, equ, tran);
			lbBuildGetCardInfo(equ, tran, NULLP);

			LBGETCMDENTRY(0, IND_DIR, entry);
			LBGETTRAN(entry, equ, tran);
			lbIndCardOutMsg(equ, tran);
			equ->cardInStat = FALSE;
			memset(equ->crrntCardNo, 0xff, 10); 
		}

		switch(ack->workstationStat)
		{
		case NO_WORKER:
			break ;
		case THEREIS_WORKER:
			break;

		case REQ_ONWORK:
			LBGETCMDENTRY(0, CMD_DIR, entry);
			LBGETTRAN(entry, equ, tran);

			lbBuildGetCardASN(equ, tran, 1);
			lbBuildGetTotleVolume(equ, tran, NULLP);


			LBGETCMDENTRY(0, IND_DIR, entry);
			LBGETTRAN(entry, equ, tran);

			lbIndWorkOnMsg(equ, tran);

			LBGETCMDENTRY(0, CMD_DIR, entry);
			LBGETTRAN(entry, equ, tran);

			lbBuildCfm(equ, tran, WORK_ON_RQST, NULLP);
			break;
		case REQ_OUTWORK:
			LBGETCMDENTRY(0, CMD_DIR, entry);
			LBGETTRAN(entry, equ, tran);

			lbBuildGetCardASN(equ ,tran, 1);
			lbBuildGetTotleVolume(equ, tran, NULLP);

			lbBuildCloseDuring(equ, tran, NULLP);

			LBGETCMDENTRY(0, IND_DIR, entry);
			LBGETTRAN(entry, equ, tran);
			lbIndWorkOutMsg(equ, tran );


			LBGETCMDENTRY(0, CMD_DIR, entry);
			LBGETTRAN(entry, equ, tran);

			lbBuildCfm(equ, tran, WORK_OUT_RQST, NULLP);



			break;
		case NEW_ON_WORK:
			LBGETCMDENTRY(0, CMD_DIR, entry);
			LBGETTRAN(entry, equ, tran);

			lbBuildGetTotleVolume(equ, tran, NULLP);
			lbBuildCloseDuring(equ, tran, NULLP);

			LBGETCMDENTRY(0, IND_DIR, entry);
			LBGETTRAN(entry, equ, tran);
			lbIndWorkOutMsg(equ, tran);
			LBGETCMDENTRY(0, IND_DIR, entry);
			LBGETTRAN(entry, equ, tran);
			lbIndWorkOnMsg(equ, tran);


			LBGETCMDENTRY(0, CMD_DIR, entry);
			LBGETTRAN(entry, equ, tran);

			lbBuildCfm(equ, tran, WORK_ON_RQST, NULLP);

			break;
		}

	}
	else if(equ->stat == GUN_UP_AND_WAIT_AUTH && equ->lastStat == GUN_DOWN)
	{
		if(ack->cardNotInSta)
		{
			printf("no card in station\n");
			RETVALUE(RFAILED);
		}

		LBGETCMDENTRY(0, IND_DIR, entry);
		LBGETTRAN(entry, equ, tran);

		lbIndGunUpMsg(equ, tran);

		if(!ack->cardNotInSta && equ->cardInStat == FALSE)
		{
			switch(ack->cardStat)
			{
			case ONLY_CARD_NO:
			case PARTVALUE_VALID:
			case ALL_VALID:
				LBGETCMDENTRY(0, CMD_DIR, entry);
				LBGETTRAN(entry, equ, tran);

				lbBuildGetCardASN(equ, tran, 0);

				LBGETCMDENTRY(0, IND_DIR, entry);
				LBGETTRAN(entry, equ, tran);

				lbIndCardInMsg(equ, tran);
				break;
			}
			equ->cardInStat = TRUE;
		}

		equ->stat = GUN_UP_AND_WAIT_AUTH;
		equ->crrntVolume = 0;
		equ->crrntAcount = 0;
		LBGETCMDENTRY(0, CMD_DIR, entry);
		LBGETTRAN(entry, equ, tran);

		lbBuildGetCardInfo(equ, tran, NULLP);

		LBGETCMDENTRY(0, IND_DIR, entry);
		LBGETTRAN(entry, equ, tran);
		lbIndCardInfoMsg(equ, tran, NULLP);

		LBGETCMDENTRY(0, CMD_DIR, entry);
		LBGETTRAN(entry, equ, tran);

		lbBuildAuthStart(equ, tran);
	}

	else if((equ->stat == GUN_UP_AND_FILLING && equ->lastStat == GUN_UP_AND_WAIT_AUTH)
		   || (equ->stat == GUN_UP_AND_FILLING && equ->lastStat == GUN_UP_AND_FILLING))
	{
		equ->crrntVolume = ntohl(ack->volume);
		equ->crrntAcount =ntohl(ack->account);
		LBGETCMDENTRY(0, IND_DIR, entry);
		LBGETTRAN(entry, equ, tran);

		lbIndUpdateTrans(equ, tran,  
						 ack->account,
						 ack->volume);
	}
	else if((equ->stat == GUN_DOWN_AND_WAIT_AUTH && equ->lastStat == GUN_UP_AND_FILLING)
			|| (equ->stat == GUN_DOWN_AND_WAIT_AUTH && equ->lastStat == GUN_DOWN)
			|| (equ->stat == GUN_DOWN_AND_WAIT_AUTH && equ->lastStat == GUN_DOWN_AND_WAIT_AUTH))
	{
		equ->crrntVolume = ntohl(ack->volume);
		equ->crrntAcount =ntohl(ack->account);

		LBGETCMDENTRY(0, IND_DIR, entry);
		LBGETTRAN(entry, equ, tran);

		lbIndUpdateTrans(equ, tran,
						 ack->account,
						 ack->volume);

		lbIndGunDownMsg(equ, tran);

		if(ack->cardNotInSta && equ->cardInStat == TRUE)
		{
			/* stop auth will be send when card ballance have get */
			LBGETCMDENTRY(0, CMD_DIR, entry);
			LBGETTRAN(entry, equ, tran);
			lbBuildGetCardInfo(equ, tran, NULLP );

			LBGETCMDENTRY(0, IND_DIR, entry);
			LBGETTRAN(entry, equ, tran);
			lbIndCardOutMsg(equ,tran );
			equ->cardInStat = FALSE;
		}
		LBGETCMDENTRY(0, CMD_DIR, entry);
		LBGETTRAN(entry, equ, tran);

		lbBuildAuthStop(equ, tran);
	}
	equ->lastStat = equ->stat;
	RETVALUE(ROK);

}

Bool rqstDebug = TRUE;

S16 lbScRqstProc(EquCfgEntry_s * equ, U8 rqstFlag)
{
	if(!rqstFlag)
	{
		RETVALUE(ROK);
	}
	if (rqstDebug == TRUE)
	{

	if(rqstFlag & ND_CONFIG_RQ_F)
	{
		lbBuildLoadCfg(equ);
	}
	if(rqstFlag & ND_DLD_RQ_F)
	{
		lbBuildLoadDLD(equ);
	}
	if(rqstFlag & ND_DBLK_RQ_F)
	{
		lbBuildLoadBlklist(equ);
	}

	if(rqstFlag & SENDLOADGREY_RQ_F)
	{
		lbBuildLoadOwnGrey(equ);
	}

	if(rqstFlag & ND_BLK_RQ_F)
	{
		ldBuildFindBlklist(equ);
	}

	if(rqstFlag & ND_GREY_RQ_F)
	{
		lbBuildFindOtherGrey(equ);
	}

	if(rqstFlag & SENDRECORD_RQ_F)
	{
		lbBuildSendRecordRqst(equ);
	}
	}

	RETVALUE(ROK);
}


/******************* modify histroy list *******************
001. create at: 2002-7-4 21:53:01 by Shangyaohui

****************** modify histroy list end ****************/


⌨️ 快捷键说明

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