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

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

?? cbse_set_drx.c

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

/* Set_DRX 初始化 */
int Process_Set_DRX_init(SET_DRX_t *s_SetDRX);

/* 返回確認給CBC_Proxy */
int Process_SetDRX_Return(PID_t s_Pid,unsigned char cNumberOfReturnMessage);

/* 發送消息給BSC */
int Process_Send_SETDRX_To_BSC(PID_t s_Pid, DIVIDE_CELLLIST_BUF_t *s_DivideCellListBuf);


/* 處理設置不連續接收參數 */
int Process_SET_DRX(unsigned char *MessageBuf,PID_t s_Pid)
{
    int                         iReturnValue;
	SET_DRX_t                   *LPm_SetDRX; 
	SETDRX_PROCESS_DATA_STRUCT  *LPs_SetDrxProcessDataStruct;
	/* 拆分小區緩沖區 */
	DIVIDE_CELLLIST_BUF_t       s_DivideCellListBuf;
	CELLID_t                    s_CellId;

	memset(&s_DivideCellListBuf,0,sizeof(DIVIDE_CELLLIST_BUF_t));
	memset(&ProcessData[s_Pid.iProcessId][0],0,LPCB_DATA_SIZE);
	
	LPs_SetDrxProcessDataStruct=(SETDRX_PROCESS_DATA_STRUCT  *)&ProcessData[s_Pid.iProcessId][0];
	
	/* 數據拷貝到進程數據區 */
	memcpy(&LPs_SetDrxProcessDataStruct->s_CBCMessage,MessageBuf,sizeof(CBEMESSAGE_t));

	/* 去掉MessageHead */
	LPm_SetDRX=(SET_DRX_t *)&LPs_SetDrxProcessDataStruct->s_CBCMessage.cMessage[0];

#ifdef DEBUG_PRINT
	Print_SETDRX(s_Pid,LPm_SetDRX);
#endif

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

	/* 構造響應結果 */
    iReturnValue=Process_Divide_CellList_AccordingToResponse(&LPm_SetDRX->p_CellList,
		0,&LPs_SetDrxProcessDataStruct->s_ResponseCellList,&s_CellId);
	if (iReturnValue<0)
	{
		return iReturnValue;
	}
	
    /* 從響應列表得到拆分列表 */
    Process_Get_DividedCellList_from_ResponseCellList(&LPs_SetDrxProcessDataStruct->s_ResponseCellList,&s_DivideCellListBuf);
    /* 標志是否等待響應 */
	IfNeedResponse(&LPs_SetDrxProcessDataStruct->s_ResponseCellList,&s_DivideCellListBuf);

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

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

	/* 記錄定時器的ID置為-1 */
	LPs_SetDrxProcessDataStruct->iTimerId=-1;

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

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

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

	return END;

}

/* Set_DRX 初始化 */
int Process_Set_DRX_init(SET_DRX_t *s_SetDRX)
{
	//檢查必備參數

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

	if ((s_SetDRX->p_SchedulePeriod.bFlag!=EXIST)&&(s_SetDRX->p_ReservedSlots.bFlag!=EXIST))
	{
		return LACK_PARA;
	}
	

	//檢查參數內容

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

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

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

	return SUCCESS;
}

/* 返回確認給CBC_Proxy */
int Process_SetDRX_Return(PID_t s_Pid,unsigned char cNumberOfReturnMessage)
{
    CBEMESSAGE_t        s_CBEMessage;
	CBEMESSAGE_t        *LPCBEMessage;
	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)];
	LPCBEMessage=(CBEMESSAGE_t *)&ProcessData[s_Pid.iProcessId][0];

	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);
    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_CBEMessage.cMessage[0],&s_MessageConfirm.NumberOfReturnMessage,s_MessageConfirm.s_MessageHead.iMessageLength);
	
	AppendCBESendMessage(&s_CBEMessage);

	return SUCCESS;
	
}

/* 發送消息給BSC */
int Process_Send_SETDRX_To_BSC(PID_t s_Pid, DIVIDE_CELLLIST_BUF_t *s_DivideCellListBuf)
{
    int               len;
	char              *BSCID;
    SET_DRX_t         s_SetDRX; 
	BSCMESSAGE_t      s_BSCMessage;
	int               i;
	int               Tid;
//	CBEMESSAGE_t      *LPCBEMessage;
//	SET_DRX_REPORT_t  s_SetDRXReport;
//	CBEMESSAGE_t      s_CBEMessage;
//	CBEMESSAGE_t      CBCProxyMessage;

	memcpy(&s_SetDRX,&ProcessData[s_Pid.iProcessId][(sizeof(short)+sizeof(MESSAGE_HEAD_t))],sizeof(SET_DRX_t));
	
//	LPCBEMessage=(CBEMESSAGE_t *)&ProcessData[s_Pid.iProcessId][0];

	for(i=0;i<s_DivideCellListBuf->cNumberOfCellList;i++) 
	{
		memset(&s_BSCMessage,0,sizeof(BSCMESSAGE_t));

		memcpy(&s_SetDRX.p_CellList,&s_DivideCellListBuf->s_CellListOfBSC->s_CellList,sizeof(CELLLIST_t));
		len=Pack_SET_DRX(&s_SetDRX,&s_BSCMessage.cMessage[0]);
		if (len>0)
		{
			s_BSCMessage.iLen=len;

			BSCID=&s_DivideCellListBuf->s_CellListOfBSC->BSCIdentifier[0];
            Tid=GetTid(BSCID);
				if (Tid!=FAILURE)
				{
					memcpy(&s_BSCMessage.s_Pid,&s_Pid,sizeof(PID_t));
					/* 發送給BSC */
					X25AppendCBESendMessage(&s_BSCMessage, Tid);
				}
		}

	}

/*
	if (s_DivideCellListBuf->s_FailureList.bFlag==EXIST)
	{
		//報告失敗列表給Cbc_proxy
		memset(&s_SetDRXReport,0,sizeof(SET_DRX_REPORT_t));
		memset(&s_CBEMessage,0,sizeof(CBEMESSAGE_t));
	
		memcpy(&s_SetDRXReport.p_FailureList,&s_DivideCellListBuf->s_FailureList,sizeof(FAILURELIST_t));

		if (s_SetDRX.p_ChannelIndicator.bFlag==EXIST)
		{
			memcpy(&s_SetDRXReport.p_ChannelIndicator,&s_SetDRX.p_ChannelIndicator,sizeof(CHANNELINDICATOR_t));
		}

		s_CBEMessage.s_MessageHead.iMessageAreaId=A;
		//SET_DRX_REPORT 13
		s_CBEMessage.s_MessageHead.iMessageType=13;

		s_CBEMessage.s_MessageHead.s_SenderPid.cFunctionId=FUNCTIONID;
		s_CBEMessage.s_MessageHead.s_SenderPid.cModuleId=MODULEID;
		s_CBEMessage.s_MessageHead.iMessageLength=sizeof(SET_DRX_REPORT_t);
		s_CBEMessage.iLen=sizeof(MESSAGE_HEAD_t)+s_CBEMessage.s_MessageHead.iMessageLength;
		memcpy(&s_CBEMessage.cMessage[0],(char *)&s_SetDRXReport,s_CBEMessage.s_MessageHead.iMessageLength);
//		s_CBEMessage.SocketHandle=LPCBEMessage->SocketHandle;

		memset(&CBCProxyMessage,0,sizeof(CBEMESSAGE_t));
        //壓縮列表參數
		Convert_SETDRX_Report(&s_CBEMessage,&CBCProxyMessage);
		AppendCBESendMessage(&CBCProxyMessage);
		
	}
*/

	return SUCCESS;

}

//將列表轉為標準格式,用于SetDRX
//in:   s_CBEMessage Cbcproxy發送來的原始信息
//out:  s_ProxyMessage
//返回:
//  1: 成功,
//  -1:失敗
int Convert_SETDRX(CBEMESSAGE_t *s_CBEMessage,CBEMESSAGE_t *s_ProxyMessage)
{
	int             posi;
	unsigned short  iListLen;
	SET_DRX_t       *LPm_SetDRX;
	
	LPm_SetDRX=(SET_DRX_t *)&s_ProxyMessage->cMessage[0];

	memcpy(&s_ProxyMessage->s_MessageHead,&s_CBEMessage->s_MessageHead,sizeof(MESSAGE_HEAD_t));
    
	memcpy(&s_ProxyMessage->cMessage[0],&s_CBEMessage->cMessage[0],
		(sizeof(SET_DRX_i)-sizeof(MESSAGE_HEAD_t)));

	posi=sizeof(SET_DRX_i)-sizeof(MESSAGE_HEAD_t);

	/* 得到CELLLIST的長度 */
	memcpy(&iListLen,&s_CBEMessage->cMessage[posi],sizeof(unsigned short));

	/* 長度溢出,返回錯誤 */
	if (iListLen>sizeof(CELLLIST_t))	
	{
		return FAILURE;
	}
	
	/* 沒有該參數,返回成功 */
	if (iListLen==0)
	{
		return SUCCESS;
	}

	posi=posi+sizeof(unsigned short);

	/* 復制小區列表 */
    memcpy(&LPm_SetDRX->p_CellList, &s_CBEMessage->cMessage[posi],iListLen);

	s_ProxyMessage->iLen=sizeof(KILLMESSAGE_t)+sizeof(MESSAGE_HEAD_t);

	return SUCCESS;
}

/* 
   處理SET_DRX回復定時器到時 
   返回響應列表
*/
void Process_SET_DRX_Response_timer_Expired(PID_t s_Pid)
{
	int                                iPosi; 
	char                               ResponseBuf[3096];
	SETDRX_PROCESS_DATA_STRUCT         *LPs_SetDrxProcessDataStruct;
	SET_DRX_t                          *LPm_SetDRX;
	SET_DRX_RESP_i                     *LPs_SetDrxResp; 
	int                                i,j;
	unsigned short                     iLen;


	memset(&ResponseBuf[0],0,3096);

	LPs_SetDrxProcessDataStruct=(SETDRX_PROCESS_DATA_STRUCT *)&ProcessData[s_Pid.iProcessId][0];

	LPm_SetDRX=(SET_DRX_t *)&LPs_SetDrxProcessDataStruct->s_CBCMessage.cMessage[0];
	
	LPs_SetDrxResp=(SET_DRX_RESP_i *)&ResponseBuf[sizeof(short)];

	/*   */
	memcpy(&LPs_SetDrxResp->s_MessageHead.s_ReceiverPid,
		&LPs_SetDrxProcessDataStruct->s_CBCMessage.s_MessageHead.s_SenderPid,sizeof(PID_t));
    /*  */
	memcpy(&LPs_SetDrxResp->s_MessageHead.s_SenderPid,&s_Pid,sizeof(PID_t));

	LPs_SetDrxResp->s_MessageHead.iMessageAreaId=A;

	LPs_SetDrxResp->s_MessageHead.iMessageType=CBCPROXY_SET_DRX_REPORT;

	/* ChannelIndicator */
	memcpy(&LPs_SetDrxResp->p_ChannelIndicator,&LPm_SetDRX->p_ChannelIndicator,sizeof(CHANNELINDICATOR_t));

	iPosi=sizeof(SET_DRX_RESP_i)+sizeof(short);

	LPs_SetDrxResp->bReportListFlag=EXIST;
	LPs_SetDrxResp->cReportListNumberOfBSC=LPs_SetDrxProcessDataStruct->s_ResponseCellList.cNumberOfBSC;

	/* 沒響應置為全失敗 */
	for(i=0;i<LPs_SetDrxProcessDataStruct->s_ResponseCellList.cNumberOfBSC;i++)
	{
		/* 如果沒響應置為全失敗 */
		if(LPs_SetDrxProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].bReceiveRespons==0)
		{
			for(j=0;LPs_SetDrxProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].ilength;j++)
			{
				LPs_SetDrxProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].s_CellReport[j].cCellStatus=PERMANENT_FAILURE;
			}
		}
	}

	/* 壓縮ReportList參數 */
	for(i=0;i<LPs_SetDrxProcessDataStruct->s_ResponseCellList.cNumberOfBSC;i++)
	{
		memcpy(&ResponseBuf[iPosi],&LPs_SetDrxProcessDataStruct->s_ResponseCellList.s_BSCCellList[i],
			LPs_SetDrxProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].ilength*sizeof(CELLREPORT_i )+sizeof(short)+BSC_INDENTIFIER_LEN);
		iPosi=iPosi+LPs_SetDrxProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].ilength*sizeof(CELLREPORT_i )+sizeof(short)+BSC_INDENTIFIER_LEN;
	}


	iLen=iPosi-sizeof(short);

	LPs_SetDrxResp->s_MessageHead.iMessageLength=iLen-sizeof(MESSAGE_HEAD_t);

	memcpy(&ResponseBuf[0],&iLen,sizeof(short));

#ifdef DEBUG_PRINT
    printf("SETDRX Return To CBCProxy. Pid=%d\n",s_Pid.iProcessId); 
#endif

	AppendCBESendMessage((CBEMESSAGE_t *)&ResponseBuf[0]);
	

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人免费电影| 亚洲人亚洲人成电影网站色| 中文字幕av一区二区三区免费看 | 日韩精品视频网| 国产酒店精品激情| 91久久线看在观草草青青| 日韩三级在线观看| 国产日韩欧美综合在线| 一区二区三区高清| 激情六月婷婷久久| 色综合色综合色综合| 91精品国产欧美日韩| 国产精品美女一区二区| 日韩国产一区二| 不卡av电影在线播放| 91精品黄色片免费大全| 国产精品污网站| 青青草精品视频| youjizz久久| 日韩视频免费观看高清完整版| 中文字幕av一区 二区| 日本成人在线一区| 91在线观看地址| 久久综合国产精品| 亚洲成人精品在线观看| 成人久久18免费网站麻豆 | 日本aⅴ免费视频一区二区三区| 国产成人精品三级麻豆| 欧美人xxxx| 日韩理论片一区二区| 久久av中文字幕片| 欧美日韩一区小说| 国产精品国产精品国产专区不蜜| 免费欧美在线视频| 色诱亚洲精品久久久久久| 久久久久久久久久久久久女国产乱| 亚洲一区二区三区在线看| 成人免费观看视频| www国产成人免费观看视频 深夜成人网| 艳妇臀荡乳欲伦亚洲一区| 国产成人综合网站| 日韩精品一区在线| 日韩av一级片| 91福利国产精品| 1024成人网色www| 国产风韵犹存在线视精品| 在线综合+亚洲+欧美中文字幕| 亚洲视频在线一区观看| 丁香网亚洲国际| 亚洲精品在线一区二区| 日韩avvvv在线播放| 欧美日韩精品三区| 亚洲综合色婷婷| 91香蕉视频污| 亚洲欧美在线视频| 国产91综合一区在线观看| 91精品国产综合久久福利 | 欧美区在线观看| 亚洲国产成人91porn| 日本高清不卡aⅴ免费网站| 国产精品另类一区| 成人综合婷婷国产精品久久| 欧美精品一区二区三区四区| 久久福利资源站| 精品国产一区二区三区四区四 | 欧美白人最猛性xxxxx69交| 午夜精品久久久久久| 欧美日韩亚洲丝袜制服| 尤物在线观看一区| 欧美色图第一页| 亚洲午夜国产一区99re久久| 在线观看一区不卡| 午夜影视日本亚洲欧洲精品| 6080亚洲精品一区二区| 免费一级片91| 久久综合狠狠综合| 懂色av一区二区三区免费观看 | 91久久精品一区二区二区| 亚洲欧美区自拍先锋| 欧美优质美女网站| 亚洲bt欧美bt精品| 日韩欧美激情在线| 国产精品一区一区三区| 国产精品乱码一区二三区小蝌蚪| 99久久久精品| 亚洲福利国产精品| 日韩一级黄色片| 国产成人在线看| 成人欧美一区二区三区1314| 91蝌蚪porny| 婷婷综合另类小说色区| 日韩精品一区在线| 成人动漫视频在线| 亚洲黄一区二区三区| 91精品国产综合久久香蕉麻豆| 久久精品免费观看| 国产精品久久久久久福利一牛影视| 91九色最新地址| 免费黄网站欧美| 中文字幕+乱码+中文字幕一区| 91色九色蝌蚪| 日韩av电影一区| 国产午夜亚洲精品羞羞网站| 91丨九色丨尤物| 奇米精品一区二区三区在线观看一| 亚洲精品一区二区三区在线观看 | 亚洲欧美精品午睡沙发| 欧美日韩激情在线| 久久成人18免费观看| 国产精品对白交换视频 | 久久99久久精品| 国产精品免费久久| 欧美日韩国产另类不卡| 国产一区二区三区香蕉| 亚洲自拍偷拍av| 精品国一区二区三区| 91美女精品福利| 久久av资源网| 亚洲一区欧美一区| 国产女人aaa级久久久级 | 琪琪久久久久日韩精品| 国产精品黄色在线观看| 欧美一区二区播放| av电影一区二区| 久久99精品国产麻豆不卡| 亚洲人成精品久久久久| 欧美sm极限捆绑bd| 欧美性受极品xxxx喷水| 国产精品99久久久久| 天天色 色综合| 综合久久一区二区三区| 久久综合久久综合久久| 在线观看一区日韩| 成人精品免费视频| 麻豆国产精品视频| 亚洲国产三级在线| 国产精品国产三级国产普通话蜜臀 | 久久亚洲免费视频| 欧美性极品少妇| 懂色av一区二区三区蜜臀| 青青国产91久久久久久| 一区二区三区加勒比av| 欧美激情在线看| 日韩女优制服丝袜电影| 欧美三级韩国三级日本三斤| 成人免费精品视频| 精品一区二区三区免费观看| 五月婷婷综合网| 亚洲精品欧美激情| 国产精品欧美综合在线| 久久日韩精品一区二区五区| 3d成人h动漫网站入口| 色美美综合视频| 97精品久久久久中文字幕 | 亚洲国产精品精华液2区45| 精品国产一区二区三区四区四| 欧美狂野另类xxxxoooo| 色婷婷综合久色| 99久久久久免费精品国产| 国产成人精品三级| 精品一区二区三区在线播放视频| 亚洲成a人片在线观看中文| 亚洲精品videosex极品| 中文字幕中文在线不卡住| 欧美极品少妇xxxxⅹ高跟鞋| 欧美哺乳videos| 欧美成人三级在线| 精品国产一区久久| 精品入口麻豆88视频| 精品奇米国产一区二区三区| 日韩欧美中文字幕制服| 8x福利精品第一导航| 在线成人av影院| 欧美乱熟臀69xxxxxx| 欧美精品粉嫩高潮一区二区| 欧美色老头old∨ideo| 欧美日韩国产美| 91精品国产全国免费观看| 欧美乱熟臀69xxxxxx| 337p亚洲精品色噜噜狠狠| 91精品国产综合久久香蕉的特点 | 美腿丝袜亚洲色图| 毛片av一区二区| 国内精品久久久久影院色| 老鸭窝一区二区久久精品| 麻豆成人av在线| 国产一区久久久| 国产成人av电影在线| 成人免费毛片高清视频| 91小视频免费看| 欧美日韩中文另类| 欧美日韩三级在线| 日韩久久精品一区| 久久精品一区二区| 中文一区二区完整视频在线观看| 中文字幕乱码日本亚洲一区二区| 亚洲丝袜美腿综合| 午夜精品久久久久| 久久国产婷婷国产香蕉| 国产精品一区二区久久精品爱涩 |