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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? x25function.c

?? CBS(小區(qū)廣播)程序?qū)崿F(xiàn)手稿
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "..\sys\Include.h "


int AllocBscConnectInfo();
int ReleaseBscConnectInfo(int Tid);
int Process_BSC_Message(char *MessageBuf,int Len,int Tid);
/* 從X25發(fā)送消息緩沖區(qū)中取出一條消息信息 
   WaitTime_len: 等待時長ms
 * 返回
    <0: 超時
	>1: 成功
 */
int X25GetCBESendMsg(BSCMESSAGE_t *s_BSCMessage,int Tid, int WaitTime_len);
//檢查綁定參數(shù)
int Process_VBind_init(VBIND_t *s_VBind);

/*
//連接到BSC并綁定
int ConnectToBsc(CBEMESSAGE_t *s_CBEMessage)
{
	int           iReturnValue;
	int           Tid;
	char          *BscIdetifier;
	VBIND_t       *LPVbind;
	char          PackBindBuf[1024];
	char          UnpackBind[1024]; 
	int           len;
	unsigned char sUserInfo[128];
	unsigned char nUserInfoLen=1;

	memset(PackBindBuf,0,1024);

	LPVbind=(VBIND_t *)&s_CBEMessage->cMessage[0];

	iReturnValue=Process_VBind_init(LPVbind);
	if (iReturnValue<0)
	{
		return iReturnValue;
	}
     
	BscIdetifier=LPVbind->BSCIdentifier;

	//BscConnectInfo是否配置
	if (Tid=GetTid(BscIdetifier)<0)
	{
		printf("Unrecognized BSC!\n");
		return UNRECOGNIZED_BSC;
	}

	//是否已經(jīng)綁定
	if (s_BscConnectInfo[Tid].DownlinkStatus==BSC_STEADY)
	{
		printf("Already bind!\n");
		return ALREADY_BIND;
	}

	if ((s_BscConnectInfo[Tid].X25DownlinkHandle=CallToRemote(s_BscConnectInfo[Tid].BscAddr, g_X25LocalAddr,  s_BscConnectInfo[Tid].BscPort, sUserInfo, nUserInfoLen, 1))<0)
	{
		printf("X25connect error!\n");
		return X25_ERROR;
	}
	else
	{
		printf("X25 connected!\n");


		//進行綁定操作
        //結(jié)果報告給cbc_proxy 
		//set cbc status
		len=Pack_cbse_VBIND(LPVbind,PackBindBuf);
        
		//發(fā)送X25綁定請求數(shù)據(jù)
		X25SendData(s_BscConnectInfo[Tid].X25DownlinkHandle,PackBindBuf,len );
        
		//接受綁定結(jié)果參數(shù)
		len=X25RecvData(s_BscConnectInfo[Tid].X25DownlinkHandle, UnpackBind);		
		if (len<0)
		{
			return X25_ERROR;
		}

		//綁定失敗
		if (UnpackBind[0]!=CBSE_BIND_CONFIRM)
		{
			memset(&CBCBSC_Unpack,0,sizeof(CBC_BSC_UNPACK_t));
			CbcBscUnpackAMessage((MESSAGE_t *)&UnpackBind[0],len);
			return BSC_BIND_FAILURE;			
		}
		//==========

		//發(fā)送接受線程互斥量
		s_BscConnectInfo[Tid].ThreadEvent=CreateEvent(NULL,TRUE,TRUE,NULL);
		//創(chuàng)建接受數(shù)據(jù)線程
		s_BscConnectInfo[Tid].X25ReceiveThreadHandle=CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTINE)X25DownLinkRecieveData,&Tid,0,NULL);
		/* 創(chuàng)建發(fā)送數(shù)據(jù)線程 
		s_BscConnectInfo[Tid].X25SendThreadHandle=
			CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTINE)X25SendMessage,&Tid,0,NULL);

		memset(&s_BscConnectInfo[Tid].s_X25SendMessageBuf,0,sizeof(X25_SEND_MESSAGE_BUF_t));

		s_BscConnectInfo[Tid].s_X25SendMessageBuf.MsgFull = CreateSemaphore(NULL,0,X25MSG_QUEUE_SIZE,NULL);
		s_BscConnectInfo[Tid].s_X25SendMessageBuf.MsgEmpty = CreateSemaphore(NULL,X25MSG_QUEUE_SIZE,X25MSG_QUEUE_SIZE,NULL);
		s_BscConnectInfo[Tid].s_X25SendMessageBuf.MsgMutex = CreateMutex(NULL,FALSE,NULL);



	}

	/* 延遲一秒,保證創(chuàng)建線程時傳遞的參數(shù)不被釋放 
	Sleep(1000);

	return SUCCESS;
}
*/

void initBscConnectInfo()
{
	int i;
	memset(s_BscConnectInfo,0,sizeof(BSC_CONNECT_INFO_t)*MAX_BSC_CONNECT);
	/* 設(shè)置連接狀態(tài) */
	for (i=0;i<MAX_BSC_CONNECT;i++)
	{
		s_BscConnectInfo[i].DownlinkStatus=BSC_DISCONNECT;
		s_BscConnectInfo[i].UplinkStatus=BSC_DISCONNECT;
	}
}

/* 根據(jù)BscIdentifier返回s_BscConnectInfo的數(shù)組下標(biāo)Tid */
int GetTid(char *Bsc)
{
	int i;
	for(i=0;i<MAX_BSC_CONNECT; i++)
	{
		if (memcmp(&s_BscConnectInfo[i].BscIdentifier,Bsc,BSC_INDENTIFIER_LEN)==0)
		{
			return i;
		}
	}
	return FAILURE;
}

//分配連接信息數(shù)組
/*
int AllocBscConnectInfo()
{
	int i;
	for(i=0;i<MAX_BSC_CONNECT; i++)
	{
		if (s_BscConnectInfo[i].InUse==0)
			return i;
	}
	return FAILURE;
}

//釋放連接信息數(shù)組
int ReleaseBscConnectInfo(int Tid)
{
	if ((Tid<0)||(Tid>=MAX_BSC_CONNECT))
		return FAILURE;

	s_BscConnectInfo[Tid].InUse=0;
	ReleaseMutex(s_BscConnectInfo[Tid].ThreadMutex);
	return SUCCESS;
}
*/

/* 接受X25數(shù)據(jù) */
void X25DownLinkRecieveData(int *Tid)
{
	int           nTid;
	int           Len;
	unsigned char ReceiveBuf[MESSAGE_LEN];

#ifdef  OPEN_WARNING	
	/* 統(tǒng)計告警描述字串 */
	unsigned char cWarningDescription[WARNING_DESC_LEN];
#endif

	nTid=*Tid;

	for(;;)
	{
		/* 需要退出連接 */
		if (s_BscConnectInfo[nTid].ConnectOpen==OFF)
		{
			if (s_BscConnectInfo[nTid].DownlinkStatus==BSC_STEADY)
			{
				HangupConnectNOWAIT(s_BscConnectInfo[nTid].X25DownlinkHandle,NULL, NULL ,NULL,0);
//    			HangupConnect(s_BscConnectInfo[nTid].X25DownlinkHandle,&s_BscConnectInfo[nTid].BscAddr[0], g_X25LocalAddr ,NULL,0);
			    Del_Port_lsn(nTid,0);
				s_BscConnectInfo[nTid].DownlinkStatus=BSC_DISCONNECT;				
			}
			ExitThread(1);
		}


		if ((Len=X25NoWaitRecvData(s_BscConnectInfo[nTid].X25DownlinkHandle , ReceiveBuf ,XD_NOTO,nTid))<=0)
		{
			s_BscConnectInfo[nTid].DownlinkStatus=BSC_DISCONNECT;
            HangupConnectNOWAIT(s_BscConnectInfo[nTid].X25DownlinkHandle,NULL, NULL ,NULL,0);
//   		HangupConnect(s_BscConnectInfo[nTid].X25DownlinkHandle,&s_BscConnectInfo[nTid].BscAddr[0], g_X25LocalAddr ,NULL,0);
		    Del_Port_lsn(nTid,0);

			printf("X25 downlinkConnect Exit,RemoteAddr=%s\n",s_BscConnectInfo[nTid].BscAddr);

			/* 告警 */
#ifdef  OPEN_WARNING
			memset(cWarningDescription,0,sizeof(WARNING_DESC_LEN));
			sprintf(cWarningDescription,"下行連路斷連,BSCID=%d",*((unsigned short *)s_BscConnectInfo[nTid].BscIdentifier));
			SendWarningToOmp(LINK_WARNING,BSC_LINK,cWarningDescription);
#endif

			ExitThread(1);
			break;
		}
		else
		{
			Process_BSC_Message(ReceiveBuf,Len,nTid);
		}
	}
	


	ExitThread(1);
}

/* 處理BSC消息 */
int Process_BSC_Message(char *MessageBuf,int Len,int Tid)
{
	unsigned char MessageType;
	int iReturnValue;

	MessageType=*(unsigned char *)MessageBuf;

	memset(&CBCBSC_Unpack,0,sizeof(CBC_BSC_UNPACK_t));

	/* 解包BSC操作參數(shù) */
	iReturnValue=CbcBscUnpackAMessage((MESSAGE_t *)MessageBuf, Len);
	if (iReturnValue<0)
	{
		printf("Unpack BSC Message Error !\n");
		return FAILURE;
	}

	switch (MessageType)
	{
		case CBSE_REPORT_SUCCESS: /* Report_Success */
			{

#ifdef DEBUG_PRINT
            printf("Receive REPORT_SUCCESS Message from BSC, Tid=%d.\n",Tid); 
			Print_BSC_Response(s_BscConnectInfo[Tid].s_Pid,
							   	s_BscConnectInfo[Tid].MessageType,
        					    Tid,
		        			    &CBCBSC_Unpack);
#endif

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

	//			if (iReturnValue<0)
	//				break;
				/* 事件有信號 */
/*
				if ((s_BscConnectInfo[Tid].MessageType!=CBSE_STATUS_CBCH_QUERY)
					&&(s_BscConnectInfo[Tid].MessageType!=CBSE_STATUS_MESSAGE_QUERY)
					&&(s_BscConnectInfo[Tid].MessageType!=CBSE_SET_DRX)
					)
					SetEvent(s_BscConnectInfo[Tid].ThreadEvent);
*/
			}
			break;

		case CBSE_STATUS_CBCH_QUERY_RESP:/* Status_CBCH_Resp */
			{			
#ifdef DEBUG_PRINT
            printf("Receive STATUS_CBCH_QUERY_RESP from BSC, Tid=%d.\n",Tid); 
			Print_Status_CBCH_Query_RESP(s_BscConnectInfo[Tid].s_Pid,
							   			s_BscConnectInfo[Tid].MessageType,
        								Tid,
		        						&CBCBSC_Unpack);
#endif

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


				/* 事件有信號 */
/*				if (s_BscConnectInfo[Tid].MessageType==CBSE_STATUS_CBCH_QUERY)
					SetEvent(s_BscConnectInfo[Tid].ThreadEvent);
*/
			}
			break;

		case CBSE_STATUS_MESS_QUERY_RESP: /* Status_Mess_Resp */
			{
#ifdef DEBUG_PRINT
            printf("Receive STATUS_MESSAGE_QUERY_RESP from BSC, Tid=%d.\n",Tid); 
			Print_StatusMessageQuery_Response(s_BscConnectInfo[Tid].s_Pid,
							   				s_BscConnectInfo[Tid].MessageType,
        									Tid,
		        							&CBCBSC_Unpack);
#endif				
				iReturnValue=Process_StatusMessage_QUERY_RESP(Tid);
				/* 釋放進程 */
				if (iReturnValue==END)
				{
					if (free_pid((char *)&s_BscConnectInfo[Tid].s_Pid)<0)
					{
						//sys error
						printf("Warning! Free Pid Error.pid=%d\n",s_BscConnectInfo[Tid].s_Pid.iProcessId);
					}
				}


				/* 事件有信號 */
/*				if (s_BscConnectInfo[Tid].MessageType==CBSE_STATUS_MESSAGE_QUERY)
					SetEvent(s_BscConnectInfo[Tid].ThreadEvent);
					*/
			}
			break;

        case CBSE_REJECT_RESPONSE: /* Report_Failure */
			{			
				/* 事件有信號 */
//				SetEvent(s_BscConnectInfo[Tid].ThreadEvent);
			}
			break;

		case CBSE_BSC_RESTART: /* BSC_Restart */
			{
#ifdef DEBUG_PRINT
				printf("Receive BSC_RESTART from BSC, Tid=%d.\n",Tid); 
				Print_RestartIndication_Response(s_BscConnectInfo[Tid].s_Pid,
		    					   				s_BscConnectInfo[Tid].MessageType,
        					    				Tid,
		        				    			&CBCBSC_Unpack);
#endif			
				iReturnValue=Process_BSC_Restart_IND(Tid);
				/* 釋放進程 */
				if (iReturnValue==END)
				{
					if (free_pid((char *)&s_BscConnectInfo[Tid].s_Pid)<0)
					{
						//sys error
						printf("Warning! Free Pid Error.pid=%d\n",s_BscConnectInfo[Tid].s_Pid.iProcessId);
					}
				}

				/* 事件有信號 */
/*   				if (s_BscConnectInfo[Tid].MessageType==CBSE_RESET)
				{
    				SetEvent(s_BscConnectInfo[Tid].ThreadEvent);
				}
*/
			}
			break;

		case CBSE_FAILURE_IND:/* Failure_Ind */
			{
#ifdef DEBUG_PRINT
            printf("Receive CBSE_FAILURE_IND from BSC, Tid=%d.\n",Tid); 
			Print_FailureIndication_Response(s_BscConnectInfo[Tid].s_Pid,
		    					   			s_BscConnectInfo[Tid].MessageType,
        					    			Tid,
		        				    		&CBCBSC_Unpack);
#endif	
				Process_Failure_IND(Tid);
			}
			break;

		case CBSE_SET_DRX_REPORT:
			{
#ifdef DEBUG_PRINT
            printf("Receive SET_DRX_REPORT BSC, Tid=%d.\n",Tid); 
			Print_SETDRX_REPORT_Response(s_BscConnectInfo[Tid].s_Pid,
		    				   			s_BscConnectInfo[Tid].MessageType,
        					    		Tid,
		        				   		&CBCBSC_Unpack);
#endif	
				iReturnValue=Process_SET_DRX_REPORT(Tid);
				/* 釋放進程 */
				if (iReturnValue==END)
				{
					if (free_pid((char *)&s_BscConnectInfo[Tid].s_Pid)<0)
					{
						//sys error
						printf("Warning! Free Pid Error.pid=%d\n",s_BscConnectInfo[Tid].s_Pid.iProcessId);
					}
				}
				/* 事件有信號 */
/*				if (s_BscConnectInfo[Tid].MessageType==CBSE_SET_DRX)
					SetEvent(s_BscConnectInfo[Tid].ThreadEvent);
*/
			}
			break;

		default:
			printf("Unrecognized Message sent by BSC!\n");
			break;
	}

	return SUCCESS;
}

/* 發(fā)送消息線程函數(shù) */
void X25SendMessage(int *Tid)
{
	int            nTid;
	BSCMESSAGE_t   s_BSCMessage;
	int            len;
	unsigned char  ReceiveBuf[MESSAGE_LEN];

#ifdef  OPEN_WARNING
	/* 統(tǒng)計告警描述字串 */
	unsigned char cWarningDescription[WARNING_DESC_LEN];
#endif

	nTid=*Tid;
    
	for(;;)
	{

	
		/* 從消息隊列中取一條數(shù)據(jù) */
		for(;;)
		{
			if(X25GetCBESendMsg(&s_BSCMessage,nTid,2000)==SUCCESS)
			{
    			break;
			}

			/* 需要退出連接 */
			if (s_BscConnectInfo[nTid].ConnectOpen==OFF)
			{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区五区中文| 国产精品色在线观看| 午夜亚洲国产au精品一区二区| 欧美色图片你懂的| 亚洲一区二区三区视频在线| 欧美久久久久久久久久| 日本欧美肥老太交大片| 精品久久久久香蕉网| 国产不卡一区视频| 亚洲欧美一区二区三区极速播放| 欧美色综合影院| 久久国产综合精品| 国产蜜臀97一区二区三区| 92国产精品观看| 五月天丁香久久| 精品国产凹凸成av人导航| 成人午夜精品一区二区三区| 亚洲精品老司机| 日韩欧美一区二区久久婷婷| 懂色av一区二区三区蜜臀| 亚洲裸体在线观看| 日韩一级黄色片| 国产91丝袜在线观看| 亚洲午夜久久久久久久久电影院| 欧美videossexotv100| 9l国产精品久久久久麻豆| 亚洲成人av电影| 国产精品国产三级国产有无不卡| 欧美午夜精品免费| 国产激情视频一区二区在线观看| 亚洲激情综合网| 国产亚洲欧美一级| 欧美日韩黄色一区二区| 国产精品一区二区久久精品爱涩| 亚洲欧美日韩精品久久久久| 精品国产乱子伦一区| 欧洲视频一区二区| 国产91富婆露脸刺激对白| 日韩一区精品字幕| 亚洲日本青草视频在线怡红院 | 亚洲成人精品影院| 国产午夜精品久久久久久久| 欧美男生操女生| 91在线一区二区三区| 国产精品一二三区| 日本视频免费一区| 一区二区三区在线视频免费 | 91麻豆精品国产综合久久久久久 | 91日韩精品一区| 国产美女视频91| 日本vs亚洲vs韩国一区三区 | 亚洲成人免费视频| 亚洲欧美综合在线精品| 久久毛片高清国产| 日韩一区二区在线免费观看| 91福利精品第一导航| 成人免费毛片高清视频| 国产一区二三区| 天天综合色天天| 午夜欧美2019年伦理| 一区二区三区在线观看动漫| 日韩一区中文字幕| 亚洲视频综合在线| 国产精品久久毛片a| 国产精品视频免费| 国产免费成人在线视频| 久久久久久久久伊人| 久久久美女毛片 | 久久久国产精品午夜一区ai换脸| 日韩欧美另类在线| 日韩欧美国产综合一区| 91精品国产欧美一区二区| 欧美日韩国产一级片| 91色视频在线| 色中色一区二区| 色婷婷精品久久二区二区蜜臂av | 国产精品1区2区| 国产一区二区三区四| 韩国女主播成人在线| 经典三级视频一区| 国产乱码精品一品二品| 国产高清在线观看免费不卡| 国产精品18久久久久久vr| 国产久卡久卡久卡久卡视频精品| 韩国av一区二区三区| 成人综合在线视频| 91丨porny丨最新| 欧美亚洲综合另类| 宅男噜噜噜66一区二区66| 欧美成人精品3d动漫h| 久久一区二区三区四区| 国产精品区一区二区三区| 亚洲色大成网站www久久九九| 亚洲免费色视频| 亚洲成人av在线电影| 久久精品国产亚洲高清剧情介绍 | 日韩欧美一级二级| 中文字幕乱码日本亚洲一区二区| 成人欧美一区二区三区1314 | 日本不卡高清视频| 国产一区二区久久| 91色porny蝌蚪| 337p亚洲精品色噜噜| 国产日本欧美一区二区| 一区二区三区电影在线播| 婷婷综合另类小说色区| 国产激情一区二区三区四区| 99vv1com这只有精品| 91精品国产综合久久小美女| 久久众筹精品私拍模特| 亚洲欧美成aⅴ人在线观看| 日韩黄色免费电影| 成人精品视频.| 91精品国产色综合久久ai换脸 | 91小视频在线观看| 欧美一区二区三区在线观看视频| 久久婷婷国产综合精品青草| 一区二区三区免费网站| 精品一区精品二区高清| 色素色在线综合| 久久一留热品黄| 亚洲亚洲人成综合网络| 国产成人小视频| 欧美日韩国产在线播放网站| 国产精品免费视频一区| 男女性色大片免费观看一区二区 | 99精品一区二区三区| 日韩午夜激情电影| 一区二区三区加勒比av| 成人一区二区三区视频在线观看| 欧美性猛交xxxxxx富婆| 中文字幕在线不卡| 国产毛片精品国产一区二区三区| 欧美视频中文一区二区三区在线观看| 久久久精品天堂| 看电视剧不卡顿的网站| 色妹子一区二区| 中文在线一区二区| 韩国毛片一区二区三区| 7777精品伊人久久久大香线蕉最新版 | 亚洲视频一区二区在线| 国产一区二区视频在线| 91精品国产综合久久久久久久 | 国产三级久久久| 蜜桃在线一区二区三区| 在线观看日产精品| 中文字幕一区二区三区在线播放| 紧缚奴在线一区二区三区| 欧美一区二区成人| 午夜欧美一区二区三区在线播放| 91最新地址在线播放| 国产精品欧美一级免费| 国产精品一区在线| 亚洲精品一区二区三区99 | 国产成人在线影院| 精品美女一区二区三区| 日本麻豆一区二区三区视频| 欧美日韩国产一二三| 日韩精品一级二级| 91精品国产品国语在线不卡| 天天综合天天综合色| 69堂成人精品免费视频| 日韩中文字幕1| 欧美日高清视频| 日本不卡视频在线| 欧美一级久久久| 久久精品国产久精国产| 精品国产污污免费网站入口| 九九九久久久精品| 2023国产精品自拍| 国产乱码精品一区二区三区av | 国产在线一区二区| 久久久久久久av麻豆果冻| 国产美女娇喘av呻吟久久| 久久久久久99久久久精品网站| 国产精品99久久久久久久女警 | 4438成人网| 久久国产精品99久久久久久老狼| 日韩三级高清在线| 国产一区久久久| 亚洲国产精品精华液2区45| 成人精品小蝌蚪| 一区二区三区电影在线播| 91麻豆精品国产91久久久更新时间 | 亚洲国产电影在线观看| 一本色道久久综合精品竹菊 | 免费高清不卡av| 亚洲精品在线电影| 99热国产精品| 午夜精品免费在线| 精品日本一线二线三线不卡| 国产成a人亚洲精| 亚洲蜜桃精久久久久久久| 欧美精品九九99久久| 国产乱人伦偷精品视频不卡| 亚洲男同性恋视频| 欧美一区二视频| 大白屁股一区二区视频| 午夜视频在线观看一区二区三区| 久久亚洲精品小早川怜子|