/********************************************************
*                                                                                                            
* 文件名  ： RsspLnkNodeMgrWl.h  
* 版权说明： 北京瑞安时代科技有限责任公司 
* 版本号  ： 1.0
* 创建时间： 2009.11.25
* 作者    ： 车载及协议部
* 功能描述： Rssp层通信节点数组相关的函数定义
* 使用注意： 
*   
* 修改记录：   
*   更新时间	更新者	更新理由
* ------------  ------  ---------------
*	2009.12.07	楼宇伟	初版作成   
*
********************************************************/ 

#ifndef _RSSP_LNK_NODE_MGR_WL_H_
#define _RSSP_LNK_NODE_MGR_WL_H_

#include "RsspStructWl.h"

#ifdef __cplusplus
extern "C" {
#endif	   
/*--------------------------------------------------------------------
 * RSSP层内部接口函数申明 Start
 *--------------------------------------------------------------------*/

 /**
  * @brief InitLnkNodeArr_WL 初始化链路节点数组
  * @param num 链路总数 取值范围:0x00-0xFF
  * @param pRsspStruct RSSPI实例 取值范围:参考结构体:RSSP_INFO_STRU
  * @return 0:失败 1:成功
  */
UINT8 InitLnkNodeArr_WL(UINT16 num,RSSP_INFO_STRU *pRsspStruct);

/***********************************************************************
 * 方法名   : SearchLnkBsdNode_WL
 * 功能描述 : 根据Bsd地址和源地址查询相应的通信节点，如果通信节点存在就返回相对应的
 *			  地址。否则返回NULL。
 * 输入参数 : 
 *	参数名	  类型			输入输出		描述
 *  --------------------------------------------------------------
 *	RsspSrcAddr   UINT16		IN				Rssp源地址
 *  DestBsdAdd	  UINT16		IN				Bsd地址
 * 
 * 全局变量 : LnkNodeArr		全局变量
 * 返回值   : Lnk_Info_Node_Stru_WL*  NULL:指定节点不存在  !=NULL 指定节点地址
 ***********************************************************************/
Lnk_Info_Node_Stru_WL* SearchLnkBsdNode_WL(UINT16 RsspSrcAddr,UINT16 DestBsdAdd,RSSP_INFO_STRU *pRsspStruct);


/***********************************************************************
 * 方法名   : SearchLnkSse_SsrNode_WL
 * 功能描述 : 根据PSSP目的地址和源地址查询相应的通信节点，如果通信节点存在就返回相对应的
 *			  地址。否则返回NULL。
 * 输入参数 : 
 *	参数名	  类型			输入输出		描述
 *  --------------------------------------------------------------
 *	RsspSrcAddr   UINT16		IN				Rssp源地址
 *  RsspDestAddr	  UINT16		IN		    Pssp目的地址
 * 
 * 全局变量 : LnkNodeArr		全局变量
 * 返回值   : Lnk_Info_Node_Stru_WL*  NULL:指定节点不存在  !=NULL 指定节点地址
 ***********************************************************************/
Lnk_Info_Node_Stru_WL* SearchLnkSse_SsrNode_WL(UINT16 RsspSrcAddr,UINT16 RsspDestAddr,RSSP_INFO_STRU *pRsspStruct);


/***********************************************************************
 * 方法名   : GetReplaceNode_WL
 * 功能描述 : 返回通信数组可覆盖的节点。
 * 输入参数 : 
 *	参数名		类型	输入输出	描述
 *  --------------------------------------------------------------
 *	srcAddr	UINT16	IN			源地址
 *	desAddr	INT16	IN			目标地址
 * 
 * 全局变量 : LnkNodeArr*		全局变量通信节点数组
 * 返回值   : Lnk_Info_Node_Stru_WL*  NULL：异常 非NULL：通信节点数组
 ***********************************************************************/
Lnk_Info_Node_Stru_WL* GetReplaceNode_WL(RSSP_INFO_STRU *pRsspStruct);


/***********************************************************************
 * 方法名   : DestoryLnkNodeArr_WL
 * 功能描述 : 释放通信节点数组的空间
 * 输入参数 : 
 *	参数名				类型				输入输出		描述
 *  -------------------------------------------------------------
 *	无
 *
 * 返回值   : UINT8  1：正常返回  0：错误返回
 ***********************************************************************/
void DestoryLnkNodeArr_WL(RSSP_INFO_STRU *pRsspStruct);

/***********************************************************************
 * 方法名   : recvReplaceLnkNode_WL
 * 功能描述 : 根据报文信息，将通信节点信息初始化。
 * 输入参数 : 
 *	参数名			类型				输入输出		描述
 *  -------------------------------------------------------------
 *  LocalDevName			UINT16		IN				本方标识符
 *	pDataNode		const DataNode_WL*		IN				报文节点
 *  pLnkNodeInfo	Lnk_Info_Node_Stru_WL*	INOUT			通信节点
 *
 * 返回值   : UINT8  1：正常返回  0：错误返回
 * 使用限制 ：本函数为输入模块在收到BSD报文时对应通信节点不存在时调用
 ***********************************************************************/
UINT8 recvReplaceLnkNode_WL(UINT16 LocalDevName,const DataNode_WL* pDataNode,Lnk_Info_Node_Stru_WL *pLnkNodeInfo, DSU_RSSP_INFO_STRU_WL *pDsuRsrInfoStru_WL);

/***********************************************************************
 * 方法名   : outputReplaceLnkNode_WL
 * 功能描述 : 根据源地址，目标地址，BSD地址取得对应节点信息，
 *              将通信节点信息初始化。
 * 输入参数 : 
 *  参数名         类型                  输入输出        描述
 *  -------------------------------------------------------------
 *  SrcAddr         UINT16                  IN              源地址
 *  BsdAddr         UINT16                  IN              BSD地址
 *  DestAddr        UINT16                  IN              SSE地址
 *  LocalDevName            UINT32          IN              本方标识符
 *  pPLnkNodeInfo   Lnk_Info_Node_Stru_WL** OUT         通信节点
 *
 * 返回值   : UINT8  1：正常返回  0：错误返回
 * 使用限制 ：本函数为输出模块，指定地址的通信节点不存在时调用
 *
 ***********************************************************************/
UINT8 outputReplaceLnkNode_WL(UINT16 SrcAddr,UINT16 BsdAddr,UINT16 DestAddr,UINT32 LocalDevName,Lnk_Info_Node_Stru_WL **pPLnkNodeInfo,RSSP_INFO_STRU *pRsspStruct);

/***********************************************************************
 * 方法名   :   SetNodeParamWl
 * 功能描述 : 根据指定的RSSP源地址，RSSP目标地址(SSE SSR)，BSD地址查询对应通信节点是否存在。
 *				存在则返回对应通信节点指针，否则返回NULL。
 * 输入参数 : 
 *	参数名		类型	输入输出	描述
 *  -----------------------------------------------------------
 *	destName		UINT32	 IN			目标设备标识
 *
 * 返回值   :	Lnk_Info_Node_Stru_WL* 通信节点指针， NULL:不存在
 ***********************************************************************/
Lnk_Info_Node_Stru_WL* SearchNodeByAddr_WL(UINT32 destName,RSSP_INFO_STRU *pRsspStruct);

/**
 * @brief WriteToVarArray_WL 写入链路数据
 * @param VarArray 链路数据 取值范围：字节数组
 * @param pRsspStruct RSSPI实例 取值范围:参考结构体:RSSP_INFO_STRU
 * @return 0:失败 1:成功
 */
UINT8 WriteToVarArray_WL(UINT8 *VarArray,RSSP_INFO_STRU *pRsspStruct);

/***********************************************************************
 * 方法名   : GetLnkNodeArr_WL
 * 功能描述 : 取得全局的通信节点数组指针以及通信节点个数。
 * 输入参数 : 
 *	参数名				类型					输入输出		描述
 *  -----------------------------------------------------------------------------
 *	pLnkInfoNodeArr		Lnk_Info_Node_Stru_WL**	OUT				通信数组指针的指针
 *  LogId				UINT8*					OUT				长度
 * 
 * 返回值   : 无
 ***********************************************************************/
void GetLnkNodeArr_WL(Lnk_Info_Node_Stru_WL** pLnkInfoNodeArr,UINT16 *OutLen,RSSP_INFO_STRU *pRsspStruct);

/**
 * @brief AdjustLnkCycle 根据指定本方类型,周期号,当前链路,调整当前链路周期号并设置是否为执行周期
 * @param localType 本方类型 取值范围:0x00-0xFF
 * @param cycleNum 周期号 取值范围:0x00000000-0xFFFFFFFF
 * @param lnkNode 链路节点 取值范围:参考结构体Lnk_Info_Node_Stru_WL
 */
void AdjustLnkCycle(UINT8 localType, UINT32 cycleNum, Lnk_Info_Node_Stru_WL *lnkNode);

/*--------------------------------------------------------------------
 * RSSP层内部接口函数申明 End
 *--------------------------------------------------------------------*/
 
#ifdef __cplusplus
}
#endif


#endif

