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

📄 cbcfunction.h

📁 CBS(小区广播)程序实现手稿
💻 H
字号:

//WriteReplace
extern int Process_Write_Replace_Request(unsigned char *MessageBuf,PID_t s_Pid);
extern int Process_Write_Replace_Error(PID_t s_Pid,int ErrorCode);
extern int Process_Scheduled_Write(PID_t s_Pid);

extern int Process_CBSE_KILL_MESSAGE(unsigned char *MessageBuf,PID_t s_Pid);


extern int Process_STATUS_CBCH_QUERY(unsigned char *MessageBuf,PID_t s_Pid);
extern int Process_STATUS_MESSAGE_QUERY(unsigned char *MessageBuf,PID_t s_Pid);
extern int Process_SET_DRX(unsigned char *MessageBuf,PID_t s_Pid);

/*---------------------------------------
//遍历系统所有小区
//in:   CellId
//out:  BSCIdentifer 
//返回: 1:成功; <0没有该小区;0:小区不可用
//未写完
---------------------------------------*/
extern int Process_Search_BscId_AccordingTo_CellId(unsigned char *CellId,unsigned char *BSCIdentifer);

/* 决定小区的路由 */
extern int Process_Divide_CellList(CELLLIST_t *s_CellList,DIVIDE_CELLLIST_BUF_t *s_DivideCellListBuf,CELLID_t *s_CellId);

/*--------------------------------
//拆分小区列表
//匹配不上释放入失败列表
//out:  s_DivideCellListBuf 拆分结果
//out:  s_CellId失败时返回不识别的小区编码
//int:  s_CellList
//返回: 1成功;
------------------------------*/
extern int Process_Divide_CellList_EX(CELLLIST_t *s_CellList,DIVIDE_CELLLIST_BUF_t *s_DivideCellListBuf);

/*
 * 加一个小区到拆分小区列表缓冲区
 * 1:返回成功
 * <0 没有该BSC
 */
extern int Process_Add_CellId_To_DivideCellListBuf(unsigned char *CellId,unsigned char *BscId,DIVIDE_CELLLIST_BUF_t *s_DivideCellListBuf);


/* 分配消息序列号 */
extern void Alloc_SerialNumber(SERIALNUMBER_t *s_SerialNumber,MESSAGEIDENTIFIER_t *s_MessageIdentifier);

//修改小区状态
//in:CellStatus 
//    CELL_OK:可用  
//    CELL_ERROR:不可用
//in: CellId小区指针
extern void Process_Set_CellId_Status(unsigned char *CellId,int CellStatus);


//处理定时KillMessage
//extern int Process_Scheduled_KillMessage(PID_t s_Pid);

//该查询消息操作由写入一个消息触发
//处理定时查询
//extern int Process_Scheduled_StatusMessage_Query(PID_t s_Pid);

//处理重置请求
extern int Process_RESET(unsigned char *MessageBuf,PID_t s_Pid);



//---------------------------------------
//出错返回给CBC_proxy
//拒绝从CBC_proxy操作请求,返回拒绝原因
// 释放逻辑进程
//用于处理消息初始化错误
//如: 没有必备参数,错误的小区,
//---------------------------------------
extern void Process_CBE_Message_Error(PID_t s_Pid,int ErrorCode);

//---------------------------------------
//返回给CBC_proxy
//用于C区消息
//---------------------------------------
extern void Process_Manage_Message_Return(CBEMESSAGE_t *LpCBEMessage,int ErrorCode);





//处理从Bsc来的响应
extern int Process_Response(int Tid);

//处理从BSC来的失败指示
extern int Process_Failure_IND(int Tid);

//处理从BSC来的重启指示
extern int Process_BSC_Restart_IND(int Tid);

//处理从BSC来的信道查询响应
extern int Process_StatusCBCH_QUERY_RESP(int Tid);

//处理从BSC来的消息查询响应
extern int Process_StatusMessage_QUERY_RESP(int Tid);

//处理从BSC来的 设置不连续接收参数报告
extern int Process_SET_DRX_REPORT(int Tid);



//将列表转为标准格式
//in:   s_CBEMessage Cbcproxy发送来的原始信息
//out:  s_ProxyMessage
//返回:
//  1: 成功,
//  -1:失败
extern int Convert_Write_Replace_Request(CBEMESSAGE_t *s_CBEMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为标准格式,用于KillMessage
extern int Convert_KillMessage(CBEMESSAGE_t *s_CBEMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为标准格式,用于StatusCBCHQuery
extern int Convert_StatusCBCHQuery(CBEMESSAGE_t *s_CBEMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为标准格式,用于StatusMessageQuery
extern int Convert_StatusMessageQuery(CBEMESSAGE_t *s_CBEMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为标准格式,用于Reset
extern int Convert_Reset(CBEMESSAGE_t *s_CBEMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为标准格式,用于SetDRX
extern int Convert_SETDRX(CBEMESSAGE_t *s_CBEMessage,CBEMESSAGE_t *s_ProxyMessage);

//将列表转为压缩格式,用于Response
//in:   s_CBCMessage Cbcproxy发送来的原始信息
//out:  s_ProxyMessage
//返回:
//  1: 成功,
//  -1:失败
extern int Convert_Response(CBEMESSAGE_t *s_CBCMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为压缩格式,用于StatusMessageResponse
extern int Convert_StatusMessageResponse(CBEMESSAGE_t *s_CBCMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为压缩格式,用于StatusCBCHResponse
extern int Convert_StatusCBCHResponse(CBEMESSAGE_t *s_CBCMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为压缩格式,用于SET_DRX_REPORT
extern int Convert_SETDRX_Report(CBEMESSAGE_t *s_CBCMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为压缩格式,用于RESTART
extern int Convert_RESTART(CBEMESSAGE_t *s_CBCMessage,CBEMESSAGE_t *s_ProxyMessage);
//将列表转为压缩格式,用于FAILURE_IND
extern int Convert_FAILURE_IND(CBEMESSAGE_t *s_CBCMessage,CBEMESSAGE_t *s_ProxyMessage);




//内部定时重发
extern void Process_Scheduled_Resend(PID_t s_Pid,char *Lp_BSCID);

/*--------------------------------
//拆分小区列表到响应缓冲区
//out:  LPs_ResponseCellList 拆分结果
//out:  s_CellId             失败时返回不识别的小区编码
//in:   s_CellList           小区列表
//in:   NoOfBroadcastReq     请求广播的次数
//返回: <0失败,1成功;
//------------------------------*/
extern int Process_Divide_CellList_AccordingToResponse(CELLLIST_t     *s_CellList,
	            										unsigned short NoOfBroadcastReq,
				    		    						CELLLIST_i     *LPs_ResponseCellList,
					        							CELLID_t       *s_CellId);
/*--------------------------------
//拆分小区列表到响应缓冲区
  有流量控制
//out:  LPs_ResponseCellList 拆分结果
//out:  s_CellId             失败时返回不识别的小区编码
//in:   s_CellList           小区列表
//in:   NoOfBroadcastReq     请求广播的次数
//返回: <0失败,1成功;
//------------------------------*/
extern	int Process_Divide_CellList_AccordingToResponse_LC(CELLLIST_t     *s_CellList,
														unsigned short NoOfBroadcastReq,
														CELLLIST_i     *LPs_ResponseCellList,
														CELLID_t       *s_CellId,
														unsigned char  cCategory);

/* 从响应列表得到拆分列表 */
extern int Process_Get_DividedCellList_from_ResponseCellList(CELLLIST_i  *LPs_ResponseCellList,
													         DIVIDE_CELLLIST_BUF_t *LPs_DivideCellListBuf);


/* 比较 LPs_ResponseCellList和LPs_DivideCellListBuf
   将要发送的BSC在LPs_ResponseCellList中置上没有响应,
   不发送的BSC在LPs_ResponseCellList置上已有响应   
*/
extern void IfNeedResponse(CELLLIST_i  *LPs_ResponseCellList,	
					DIVIDE_CELLLIST_BUF_t *LPs_DivideCellListBuf);

/* 是否可立即返回  
 返回:>0可,
      <0不可 
*/
extern int IfReturnImmediately(CELLLIST_i *LPs_CellList);

/*
  写操作报告单条响应
  s_Pid:进程ID
  BSCPosi:单个BSC在报告列表中的偏移量
*/
extern void Process_WriteReturnSingleResponseToCBCProxy(PID_t *s_Pid,int BSCPosi);

/*
  替换操作报告单条响应
  s_Pid:进程ID
  BSCPosi:单个BSC在报告列表中的偏移量
*/
extern void Process_ReplaceReturnSingleResponseToCBCProxy(PID_t *s_Pid,int BSCPosi);


/* 
  返回响应给CBCProxy 
  只报告响应
*/
extern void Process_WriteReplace_Return_To_CBCProxy(PID_t s_Pid);

/* 生命定时器到时,释放进程 */
extern int Process_lifeEnd(PID_t *LPs_Pid);

/* 处理WRITE回复定时器到时 */
extern int Process_Write_Response_timer_Expired(PID_t s_Pid);

/* 处理REPLACE回复定时器到时 */
extern int Process_Replace_Response_timer_Expired(PID_t s_Pid);

/* 加一个完成列表 */
extern void	Process_Add_One_ComlList(NOOFBROADCASTSCOMLLIST_t *LPs_NoofBroadcastComlList,
    	        NOOFBROADCASTSCOMLLIST_i *LPs_ComlListToCBCProxy,
        		char *LpBSCID,
				char *LpLAC
				);

/*
  删除操作报告单条响应
  s_Pid:进程ID
  BSCPosi:单个BSC在报告列表中的偏移量
*/
extern void Process_KillReturnSingleResponseToCBCProxy(PID_t *s_Pid,int BSCPosi);

/* 
  返回响应给CBCProxy 
  只报告KillMessage的响应
*/
extern void Process_KillMessage_Return_To_CBCProxy(PID_t s_Pid);

/* 处理KillMessage回复定时器到时 */
extern int Process_Kill_Response_timer_Expired(PID_t s_Pid);

/* 只取失败小区 
in:   LPs_ReportCellList
out:  LPs_FailureCellList
*/
extern void Abstract_Failure_Cell(CELLLIST_i *LPs_ReportCellList,CELLLIST_i *LPs_FailureCellList);

/* 处理StatusMessageQuery回复定时器到时 */
extern int Process_StatusMessageQuery_Response_timer_Expired(PID_t s_Pid);

/* 全部回复StatusCBCHQuery的响应 */
extern void Process_StatusCBCHQuery_Return_To_CBCProxy(PID_t s_Pid);
/* 
   处理SET_DRX回复定时器到时 
   返回响应列表
*/
extern void Process_SET_DRX_Response_timer_Expired(PID_t s_Pid);


/* 根据BSCIdentifier找到BSCCellInfo的下标 */
extern int FindOffsetAccordingBSC(unsigned char *LpBSC);

/*
   根据一个小区的信道负荷状态和BSC,
   修改系统中的小区负荷记录
*/
extern void Set_SysCell_Load_Record(CBCLOADINGSTATUS_t *LPs_CellLoadingStatus,unsigned char *LpBSCID);

/*
   对系统所有可用小区进行负荷查询
   对应的进程号,功能块号,模块号全为0
*/
extern void Process_Query_All_StatusCBCH();

/* 处理StatusCBCHQuery定时器到时 */
extern void Process_StatusCBCHQuery_Timer_Expired();

/* 处理SET_DRX_REPORT回复定时器到时 */
extern void Process_RESET_timer_Expired(PID_t s_Pid);

/*--------------------------------
//拆分小区列表到响应缓冲区
//out:  LPs_ResponseCellList 拆分结果
//out:  s_CellId             失败时返回不识别的小区编码
//in:   s_CellList           小区列表
//in:   NoOfBroadcastReq     请求广播的次数
//返回: <0失败,1成功;
//------------------------------*/
extern int Process_Divide_CellList_AccordingToResetResponse(CELLLIST_t     *s_CellList,
											    		unsigned short NoOfBroadcastReq,
														CELLLIST_i     *LPs_ResponseCellList,
    													CELLID_t       *s_CellId);

/* 当X25链路建立时重启小区 */
extern void Reset_When_Connect(int Tid);

/* 发送Write消息给BSC前发Kill消息,保证序列号可用 */
extern int Process_Send_Kill_To_BSC_Before_Write(PID_t s_Pid, DIVIDE_CELLLIST_BUF_t  *s_DivideCellListBuf);

⌨️ 快捷键说明

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