亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cbse_killmessage.c

?? CBS(小區廣播)程序實現手稿
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "..\sys\Include.h"


/* 返回確認消息給CBC_proxy */
int Process_Kill_Message_Return(PID_t s_Pid,unsigned char cNumberOfReturnMessage);


/* KillMessage 初始化 */
int Process_Kill_Message_init(KILLMESSAGE_t *s_KillMessage);

/* 發送消息給BSC
   發送失敗小區列表給CBC_Proxy */
int Process_Send_KillMessage_To_BSC(PID_t s_Pid, DIVIDE_CELLLIST_BUF_t *s_DivideCellListBuf);

//刪除預約消息
int process_Delete_Schedual_Message(PID_t s_OriginalPid,PID_t s_NewPid);


int Process_CBSE_KILL_MESSAGE(unsigned char *MessageBuf,PID_t s_Pid)
{
	int                      iReturnValue;
	KILLMESSAGE_t            *LPm_KillMessage;
	PID_t                    s_OriginalPid;
	int                      iRelativeTime;
	long                     lCurrentTime;  
	//拆分小區緩沖區
	DIVIDE_CELLLIST_BUF_t    s_DivideCellListBuf;
	CELLID_t                 s_CellId;
	KILL_PROCESS_DATA_STRUCT *LPs_KillProcessDataStruct;
	CELLLIST_i               s_FailureList; 
//    WRITEREPLACE_PROCESS_DATA_STRUCT  *LPs_WriteReplaceProcessDataStruct;
	int  i,j;

	memset(&s_DivideCellListBuf,0,sizeof(DIVIDE_CELLLIST_BUF_t));
	memset(&s_FailureList,0,sizeof(CELLLIST_i));

	memset(&ProcessData[s_Pid.iProcessId][0],0,LPCB_DATA_SIZE);

	/* 填寫返回類型 */
	LPs_KillProcessDataStruct=(KILL_PROCESS_DATA_STRUCT *)&ProcessData[s_Pid.iProcessId][0];
	
	LPs_KillProcessDataStruct->cResponseType=CBCPROXY_REPORT_KILL;

	/* 數據拷貝到進程數據區 */
	memcpy(&LPs_KillProcessDataStruct->s_CBCMessage,MessageBuf,sizeof(CBEMESSAGE_t));
	
	/* 去掉MessageHead */
	LPm_KillMessage=(KILLMESSAGE_t *)&LPs_KillProcessDataStruct->s_CBCMessage.cMessage[0];

#ifdef DEBUG_PRINT 
	Print_Kill(s_Pid,LPm_KillMessage,LPs_KillProcessDataStruct->s_CBCMessage.s_MessageHead.s_ReceiverPid);
#endif

	/* 判斷參數 */
	iReturnValue=Process_Kill_Message_init(LPm_KillMessage);
	if (iReturnValue<0)
	{
		return iReturnValue;
	}

	
	/* 構造響應結果 */
    iReturnValue=Process_Divide_CellList_AccordingToResponse(&LPm_KillMessage->p_CellList,
		0,&s_FailureList,&s_CellId);
	if (iReturnValue<0)
	{
		return iReturnValue;
	}

	memcpy(&LPs_KillProcessDataStruct->s_FailureList ,
		&s_FailureList,sizeof(CELLLIST_i));
	
    /* 從響應列表得到拆分列表 */
    Process_Get_DividedCellList_from_ResponseCellList(&s_FailureList,&s_DivideCellListBuf);

    /* 標志是否等待響應 */
	IfNeedResponse(&LPs_KillProcessDataStruct->s_FailureList,&s_DivideCellListBuf);


	/* 此時用s_DivideCellListBuf.s_CellListOfBSC,
	  不用s_ResponseCellList.cNumberOfBSC 
      前者可能小于后者              */
	LPs_KillProcessDataStruct->cNoOfResponseReq=s_DivideCellListBuf.cNumberOfCellList;

	/* 小區全失敗 */
	if (LPs_KillProcessDataStruct->cNoOfResponseReq==0)
	{
		return ALL_CELLS_NOT_AVAILABLE;
	}

	/* 兩個記錄定時器的ID都置為-1 */
	LPs_KillProcessDataStruct->iTimerId=-1;
	LPs_KillProcessDataStruct->iLifeTimerId=-1;


	//是否刪除預約發送
	if (LPm_KillMessage->p_BeginTime.bFlag==EXIST)
	{
		time(&lCurrentTime);
		lCurrentTime=lCurrentTime-TimeZone;
		iRelativeTime=LPm_KillMessage->p_BeginTime.lTime-lCurrentTime;

        if (iRelativeTime<0)
		{
			/* 已發送,直接發消息到BSC */

			/* 返回確認給CBC_Proxy */
			Process_Kill_Message_Return(s_Pid,s_DivideCellListBuf.cNumberOfCellList);

			/* 發送消息給BSC */
			Process_Send_KillMessage_To_BSC(s_Pid, &s_DivideCellListBuf);    

			/* 創建回復定時器 */
			iReturnValue=create_timer(KILL_RETURN_DELAY_TIME,
				KILL_RETURN_TO_CBC_PROXY,(char *)&s_Pid,NULL);
			/* 創建定時器失敗 */
			//sys
			if (iReturnValue<0)
			{
				printf("Create timer Error!\n");
				return iReturnValue;
			}
			else
			{
				LPs_KillProcessDataStruct->iTimerId=iReturnValue;
				return CONTINUANCE;
			}

		}
		else
		{
			/* 未發送,在進程區 */
			memcpy(&s_OriginalPid,&LPs_KillProcessDataStruct->s_CBCMessage.s_MessageHead.s_ReceiverPid,sizeof(PID_t));
			iReturnValue=process_Delete_Schedual_Message(s_OriginalPid,s_Pid);
			if (iReturnValue<0)
				return iReturnValue;

			/* 完成列表全置0 */
/*			
            LPs_WriteReplaceProcessDataStruct=(WRITEREPLACE_PROCESS_DATA_STRUCT *)&ProcessData[s_OriginalPid.iProcessId][0];

			LPs_KillProcessDataStruct->s_NoofBroadcastComlList.bFlag=1;
			for (i=0;i<LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.cNumberOfBSC;i++)
			{
				LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].ilength=
					LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].ilength;

				memcpy(&LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].BSCIdentifier[0],
					&LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].BSCIdentifier[0],BSC_INDENTIFIER_LEN);

				for(j=0;j<LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].ilength;j++)
				{
					memcpy(&LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].s_NoOfBroadcastComl[j].s_Cellid.cCellId[0],
						&LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].s_CellReport[j].s_CellId.cCellId[0],4);
				}

				LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC++;
			}
*/
			/* 完成列表全置0 */
			/* 完成列表為該刪除消息的小區 */
			LPs_KillProcessDataStruct->s_NoofBroadcastComlList.bFlag=1;
			for (i=0;i<LPs_KillProcessDataStruct->s_FailureList.cNumberOfBSC;i++)
			{
				LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].ilength=
					LPs_KillProcessDataStruct->s_FailureList.s_BSCCellList[i].ilength;

				memcpy(&LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].BSCIdentifier[0],
					&LPs_KillProcessDataStruct->s_FailureList.s_BSCCellList[i].BSCIdentifier[0],BSC_INDENTIFIER_LEN);

				for(j=0;j<LPs_KillProcessDataStruct->s_FailureList.s_BSCCellList[i].ilength;j++)
				{
					memcpy(&LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].s_NoOfBroadcastComl[j].s_Cellid.cCellId[0],
						&LPs_KillProcessDataStruct->s_FailureList.s_BSCCellList[i].s_CellReport[j].s_CellId.cCellId[0],4);
				}

				LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC++;
			}

			/* 進程區消息無失敗列表 */
			memset(&LPs_KillProcessDataStruct->s_FailureList,0,sizeof(CELLLIST_i));

            /*
			  成功后確認0 
			  返回確認給CBC_Proxy
			*/
			Process_Kill_Message_Return(s_Pid,0);
			
			/* 返回全部響應 */
        	Process_KillMessage_Return_To_CBCProxy(s_Pid);
			
			return END;
		}

	}
	else
	{
		//正常刪除消息
		//返回確認給CBC_Proxy
		Process_Kill_Message_Return(s_Pid,s_DivideCellListBuf.cNumberOfCellList);
		/* 發送消息給BSC */
		
		Process_Send_KillMessage_To_BSC(s_Pid, &s_DivideCellListBuf);    
		
		/* 創建回復定時器 */
		iReturnValue=create_timer(KILL_RETURN_DELAY_TIME,
		KILL_RETURN_TO_CBC_PROXY,(char *)&s_Pid,NULL);
		//創建定時器失敗
		//sys
		if (iReturnValue<0)
		{
			printf("Create timer Error!\n");
			return iReturnValue;
		}
		else
		{
			LPs_KillProcessDataStruct->iTimerId=iReturnValue;
			return CONTINUANCE;
		}

	}
	
}

//KillMessage 初始化
int Process_Kill_Message_init(KILLMESSAGE_t *s_KillMessage)
{
	//檢查必備參數

	if (s_KillMessage->p_MessageIdentifier.bFlag!=EXIST)
	{
		return NO_MESSAGE_IDENTIFIER;
	}

	if (s_KillMessage->p_OldSerialnumber.bFlag!=EXIST)
	{
		return NO_OLD_SERIAL_NUMBER;
	}

	if (s_KillMessage->p_CellList.bFlag!=EXIST)
	{
		return NO_CELLLIST;
	}


	//檢查參數內容

	//檢查小區識別器CellIdDisc
	if ((s_KillMessage->p_CellList.cCellIdDisc!=1)&&
		(s_KillMessage->p_CellList.cCellIdDisc!=2)&&
		(s_KillMessage->p_CellList.cCellIdDisc!=5)&&
		(s_KillMessage->p_CellList.cCellIdDisc!=6))
	{
		return CELLIDDISC_OUTOFRANG;
	}

	//對于必備參數不用判斷其存在
	//檢查小區數目
	if ((s_KillMessage->p_CellList.iLength<=0)||(s_KillMessage->p_CellList.iLength>MAXCELLCOUNT))
	{
		return NUMBEROFCELL_ERROR;
	}

	//檢查信道指示
	if (s_KillMessage->p_ChannelIndicator.bFlag==EXIST)
	{
		if(s_KillMessage->p_ChannelIndicator.cChannelIndicator>1)
		{
			return NUMBEROFCELL_ERROR;
		}
	}

	return SUCCESS;
}

//返回確認消息給CBC_proxy
int Process_Kill_Message_Return(PID_t s_Pid,unsigned char cNumberOfReturnMessage)
{
    CBEMESSAGE_t               s_CBEMessage;
//	CBEMESSAGE_t               *LPCBEMessage;
	KILLMESSAGE_t              *LP_mKillMessage; 
    SENDING_MESSAGE_CONFIRM_i  s_MessageConfirm;
	MESSAGE_HEAD_t             *LPMessageHead;

	memset(&s_MessageConfirm,0,sizeof(MESSAGE_CONFIRM_i));
	memset(&s_CBEMessage,0,sizeof(CBEMESSAGE_t));

	LPMessageHead=(MESSAGE_HEAD_t *)&ProcessData[s_Pid.iProcessId][sizeof(short)];
	LP_mKillMessage=(KILLMESSAGE_t *)&ProcessData[s_Pid.iProcessId][(sizeof(MESSAGE_HEAD_t)+sizeof(short))];

	s_MessageConfirm.s_MessageHead.iMessageAreaId=A;
	s_MessageConfirm.s_MessageHead.iMessageType=LPMessageHead->iMessageType;
	memcpy(&s_MessageConfirm.s_MessageHead.s_ReceiverPid,&LPMessageHead->s_SenderPid,sizeof(PID_t));
    memcpy(&s_MessageConfirm.s_MessageHead.s_SenderPid,&s_Pid,sizeof(PID_t));
	s_MessageConfirm.s_MessageHead.iMessageLength=sizeof(int)+sizeof(MESSAGEIDENTIFIER_t)+sizeof(SERIALNUMBER_t);
	s_MessageConfirm.NumberOfReturnMessage=cNumberOfReturnMessage;

	s_CBEMessage.iLen=s_MessageConfirm.s_MessageHead.iMessageLength+sizeof(MESSAGE_HEAD_t);


	memcpy(&s_CBEMessage.s_MessageHead,&s_MessageConfirm.s_MessageHead,sizeof(MESSAGE_HEAD_t));
    
	memcpy(&s_MessageConfirm.p_MessageIdentifier,&LP_mKillMessage->p_MessageIdentifier,sizeof(MESSAGEIDENTIFIER_t));

	memcpy(&s_MessageConfirm.p_Serialnumber,&LP_mKillMessage->p_OldSerialnumber,sizeof(SERIALNUMBER_t));

	memcpy(&s_CBEMessage.cMessage[0],&s_MessageConfirm.NumberOfReturnMessage,s_MessageConfirm.s_MessageHead.iMessageLength);
    

#ifdef DEBUG_PRINT
    printf("Return Kill confirm to CBCProxy.ConfirmValue=%d\n",cNumberOfReturnMessage); 
	printf("Return Kill confirm to CBCProxy.SerialNumber=%d\n",LP_mKillMessage->p_OldSerialnumber.iSerialNumber); 
#endif
	AppendCBESendMessage(&s_CBEMessage);

	return SUCCESS;
}

/*
//處理定時KillMessage
int Process_Scheduled_KillMessage(PID_t s_Pid)
{
	int iReturnValue;
    //
	KILLMESSAGE_t *LPKillMessage;

	//拆分小區緩沖區
	DIVIDE_CELLLIST_BUF_t  s_DivideCellListBuf;

	memset(&s_DivideCellListBuf,0,sizeof(DIVIDE_CELLLIST_BUF_t));

	//去掉MessageHead
	LPKillMessage=(KILLMESSAGE_t *)&ProcessData[s_Pid.iProcessId][(sizeof(MESSAGE_HEAD_t)+sizeof(short))];


	//分配小區路由
	//
    Process_Divide_CellList_EX(&LPKillMessage->p_CellList,&s_DivideCellListBuf);
	
    //發送消息給BSC
    //發送失敗小區列表給CBC_Proxy
    Process_Send_KillMessage_To_BSC(s_Pid, &s_DivideCellListBuf);


	//釋放進程
	iReturnValue=free_pid((char *)&s_Pid);
	if (iReturnValue<0)
	{
		//sys error
		printf("Warning! Free Pid Error.pid=%d\n",s_Pid.iProcessId);
		return iReturnValue;
	}

	return SUCCESS;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人18免费观看| 国产精品亲子伦对白| 精品国产乱码久久久久久夜甘婷婷| 日韩欧美在线一区二区三区| 久久久久高清精品| 亚洲欧洲精品成人久久奇米网| 亚洲最大成人综合| 日本欧美一区二区三区乱码| 国产福利一区二区三区视频| 色综合中文综合网| 国产精品国产三级国产| 一区二区三区欧美日韩| 久久国产精品99精品国产| 成人sese在线| 宅男噜噜噜66一区二区66| 国产欧美日韩精品一区| 一级精品视频在线观看宜春院| 日本欧美一区二区三区乱码 | 国产欧美一区二区三区鸳鸯浴| 亚洲视频资源在线| 美女脱光内衣内裤视频久久影院| 成人丝袜高跟foot| 88在线观看91蜜桃国自产| 久久精品一区二区三区av| 一区二区三区在线看| 国产麻豆成人传媒免费观看| 在线观看日韩精品| 中文字幕欧美激情一区| 日本午夜精品一区二区三区电影| 暴力调教一区二区三区| 欧美一区二区三级| 亚洲人成人一区二区在线观看| 精品在线视频一区| 欧美综合色免费| 国产日韩欧美精品综合| 三级不卡在线观看| 91影视在线播放| 2023国产精品| 日韩精品国产精品| 91天堂素人约啪| 久久久久久日产精品| 午夜久久久久久久久久一区二区| 不卡一二三区首页| 日韩一区二区电影| 亚洲国产成人porn| 91网站在线播放| 国产精品网站在线| 狠狠色丁香婷婷综合久久片| 欧美男同性恋视频网站| 亚洲美女一区二区三区| 成人永久aaa| 久久久久久久久久电影| 免费观看30秒视频久久| 欧美日韩精品欧美日韩精品| 亚洲免费电影在线| 不卡的av在线播放| 久久久精品免费观看| 蜜臀精品久久久久久蜜臀| 欧美日韩一级片在线观看| 日韩伦理电影网| 成人国产精品免费网站| 久久精品视频一区| 精品一区二区三区在线播放| 欧美精品vⅰdeose4hd| 亚洲黄色在线视频| 色综合久久久久综合体桃花网| 国产欧美日本一区视频| 国产在线视频一区二区| 欧美成人性战久久| 678五月天丁香亚洲综合网| 欧美一区二区精品久久911| 亚洲成人在线网站| 欧美亚男人的天堂| 伊人一区二区三区| 欧洲生活片亚洲生活在线观看| 亚洲激情在线播放| 欧美三级日韩在线| 亚洲18色成人| 91精品国产综合久久久久| 日本不卡不码高清免费观看| 欧美精品久久天天躁| 日韩精品视频网| 欧美一区在线视频| 久久精品国产一区二区| 欧美不卡一区二区三区四区| 看电视剧不卡顿的网站| 日韩一区二区精品葵司在线 | 日韩免费高清av| 免费成人你懂的| 精品国产乱码久久久久久影片| 狠狠色狠狠色合久久伊人| 久久一区二区三区国产精品| 国产精品一级片| 国产精品久久久久婷婷| 91久久人澡人人添人人爽欧美| 亚洲伊人色欲综合网| 欧美情侣在线播放| 精品制服美女久久| 国产精品麻豆99久久久久久| 99精品久久久久久| 亚洲理论在线观看| 欧美日韩国产欧美日美国产精品| 天天射综合影视| 久久一二三国产| 99久久婷婷国产| 亚洲444eee在线观看| 欧美大肚乱孕交hd孕妇| 国产精品一二三四五| 中文字幕五月欧美| 欧美日韩aaaaaa| 久久精品国产精品亚洲红杏 | 97久久超碰精品国产| 亚洲一卡二卡三卡四卡无卡久久| 欧美顶级少妇做爰| 国产高清亚洲一区| 一级女性全黄久久生活片免费| 日韩亚洲欧美一区二区三区| 国产成人在线视频网址| 一区二区国产盗摄色噜噜| 欧美一二三四区在线| 成人激情小说网站| 天堂在线亚洲视频| 欧美国产日韩亚洲一区| 欧美精品1区2区3区| 国产传媒欧美日韩成人| 亚洲高清不卡在线观看| 久久精品视频免费| 在线播放中文字幕一区| av网站免费线看精品| 日韩1区2区3区| 亚洲丝袜美腿综合| 久久在线观看免费| 欧美性大战xxxxx久久久| 国产高清不卡一区二区| 视频一区视频二区在线观看| 国产精品不卡一区| 日韩免费高清电影| 在线国产亚洲欧美| 国产91综合网| 美女视频黄久久| 亚洲精品日韩专区silk| 国产欧美日韩综合| 日韩午夜精品视频| 欧美中文字幕一区| 成人免费看片app下载| 蜜桃av一区二区| 亚洲已满18点击进入久久| 国产欧美一区二区三区沐欲| 91精品在线免费观看| 日本韩国精品在线| 成人av小说网| 精品一区二区三区在线播放 | 91精品国产综合久久蜜臀| 99久久精品国产观看| 国产一区美女在线| 日韩电影免费在线看| 一区二区免费看| 国产精品传媒视频| 国产欧美日韩另类一区| 2024国产精品视频| 日韩美女视频在线| 欧美精品 国产精品| 在线视频国内一区二区| 成人黄色av网站在线| 国产精品系列在线观看| 精品综合久久久久久8888| 奇米影视在线99精品| 亚洲成av人在线观看| 亚洲一区在线观看免费观看电影高清 | 国产精品免费久久久久| 久久天堂av综合合色蜜桃网| 日韩午夜激情视频| 日韩视频中午一区| 欧美欧美午夜aⅴ在线观看| 在线看日本不卡| 在线免费观看视频一区| 91麻豆自制传媒国产之光| 不卡的av电影在线观看| 成人av免费在线| 国产91在线看| 成人白浆超碰人人人人| 成人av免费观看| 99久久精品国产观看| 91小宝寻花一区二区三区| 91性感美女视频| 91黄色免费看| 欧美视频精品在线观看| 91国产免费观看| 色噜噜狠狠成人网p站| 欧美中文字幕一区二区三区 | 美女久久久精品| 美女视频黄 久久| 极品少妇xxxx偷拍精品少妇| 激情成人综合网| 国产成人8x视频一区二区| 粉嫩av一区二区三区在线播放| proumb性欧美在线观看| 91浏览器打开| 欧美日韩久久一区| 精品入口麻豆88视频|