D.6. pfbFdlSap.cfg

;;****************************************************************************
;;
;; (include pfbFdlSap.cfg)
;; Defines relating to Layer 2 SAP (Service Access Point) control blocks
;;
;; Assumes the pfbDefines.cfg file has already been included.
;;
;;****************************************************************************

; Read/Write and BitSet/Clear/Write in a SAP block register
(type FdlSapRead cardGet %1 home (@ (aref lay2sCntrl %2) %3))
(typeDesc FdlSapRead "(FdlSapRead cardId block register)")

(type FdlSapWrite cardSet %1 home (@ (aref lay2sCntrl %2) %3) %4)
(typeDesc FdlSapWrite "(FdlSapWrite cardId block register value)")

(type FdlSapBitSet pfbBitSet %1 home (@ (aref lay2sCntrl %2) %3) %4)
(typeDesc FdlSapBitSet "(FdlSapBitSet cardId block register mask)")

(type FdlSapBitClear pfbBitClear %1 mas (@ (aref lay2sCntrl %2) %3) %4)
(typeDesc FdlSapBitClear "(FdlSapBitClear cardId block register mask)")

(type FdlSapBitWrite pfbBitWrite %1 mas (@ (aref lay2sCntrl %2) %3) %4 %5)
(typeDesc FdlSapBitWrite "(FdlSapBitWrite cardId block register mask value)")

; Configure SAP block for normal event processing:
;	LAY2S_CTL_EVT_UPDTE   Generate event when SAP is updated (default)
;	LAY2S_CTL_EVT_RX_CHG  Generate event when SAP data changes (alternate)
;	Warning: DO NOT simultaneously set both
; NOTE: pfbOnline command will automatically set this if FdlSap selected.
(type FdlSapEventSetup FdlSapBitSet %1 %2 lay2sCntCfg LAY2S_CTL_EVT_UPDTE)
(typeDesc FdlSapEventSetup "(FdlSapEventSetup cardId sapBlk)")

; Enable SAP functionality
; NOTE: pfbOnline command will automatically set this if FdlSap selected.
(type FdlSapEnable pfbBitSet %1 home lay2Cntrl LAY2_CTL_SAP_ENABLE)
(typeDesc FdlSapEnable "(FdlSapEnable cardId)")

; Set swap mode of the incoming SAP data
;	LAY2S_CTL_RX_BYTE_SWAP	Swap hi and low bytes of rx data to this SAP
(type FdlSapSwapSet FdlSapBitSet %1 %2 lay2sCntCfg LAY2S_CTL_RX_BYTE_SWAP)
(typeDesc FdlSapSwapSet "(FdlSapByteSwap cardId slvBlkId)")
(type FdlSapSwapClear FdlSapBitClear %1 %2 lay2sCntCfg LAY2S_CTL_RX_BYTE_SWAP)
(typeDesc FdlSapSwapClear "(FdlSapSwapClear cardId slvBlkId)")

;;****************************************************************************
; All SAPs must be configured before the card is put Online
;   Up to 64 SAP blocks can be configured, 0..63.
; To configure an FDL SAP, perform the following steps:
;	1) set the selected block type
;	     (FdlSapWrite <cardId> <sapBlk> lay2sType LAY2S_TYP_LAYER2_SAP)
;	2) set the maximum receive data length
;            (FdlSapWrite <cardId> <sapBlk> lay2sRxMaxLen <nnn>)
;	3) set the maximum transmit (i.e. reply) data length
;            (FdlSapWrite <cardId> <sapBlk> lay2sTxMaxLen <nnn>)
;	4) set the current transmit data length
;            (FdlSapWrite <cardId> <sapBlk> lay2sTxLen <nnn>)
;	5) if required, set the SAP timeout
;            (FdlSapWrite <cardId> <sapBlk> lay2sTimeout <nnn>)
;	6a) to accept messages only from a specific station
;           (0 to 126, 0xFF to disable),
;            (FdlSapWrite <cardId> <sapBlk> lay2sStn <nn>)
;	 b) to accept messages only from a specific SAP
;           (0 to 63, 0xFF to disable),
;            (FdlSapWrite <cardId> <sapBlk> lay2sSap <nn>)
;	    NOTE: to use BOTH strict SAP and station checking, set the upper
;		  bit of the station number.
;	 c) to accept only a specific message type, (default 0 accepts all)
;            (FdlSapWrite <cardId> <sapBlk> lay2sFrmCntrl <nn>)
;	7) if byte swapping on received data is required,
;	     (FdlSapBitSet <cardId> <sapBlk> lay2sCntCfg LAY2S_CTL_RX_BYTE_SWAP)
; Put the card online using the pfbOnline cmd
;	(pfbOnline <cardId> FdlSap ...)
; or activate event handling and enable SAP service before putting online
;	(FdlSapEventSetup <cardId>, <sapBlk>)
;	(FdlSapEnable <cardId>)
;
; To write the SAP data:
;	(pfbSap <cardId> <sapBlk> [byte0 ... byteN])

;;***************************************************************************
;; Summary of SAP control block registers and constants
;    lay2sType			Type of SAP (DP slave, Layer2, or FMS)
;	LAY2S_TYP_NOT_DEF	
;	LAY2S_TYP_DP_SLAVE	
;	LAY2S_TYP_LAYER2_SAP	
;	LAY2S_TYP_FMS		
;	LAY2S_TYP_MPI_SAP	
;	LAY2S_TYP_DP_MAS_MC2	
;    lay2sStn			Accept updates only from this station
;    lay2sSap			Accept updates only from this SAP
;    lay2sSrcSap		source SAP from request
;    lay2sCntCfg		Control and configuration register
;	LAY2S_CTL_RX_BYTE_SWAP	Swap hi and low bytes of rx data to this SAP
;	LAY2S_CTL_EVT_RX_CHG	Generate event when rx data to this SAP changes
;	LAY2S_CTL_IGNORE_STS	Ignore status of this SAP block (all_ok flag, LED and event
;	LAY2S_CTL_EVT_UPDTE	Generate event when this SAP is updated
;    lay2sStatus		Status register (Read Only)
;	LAY2S_STS_OK
;    lay2sError			Error register
;	LAY2S_ERR_NOT_OK	
;	LAY2S_ERR_TIME_OUT	
;	LAY2S_ERR_RX_LEN	
;	LAY2S_ERR_TX_LEN	
;	LAY2S_ERR_BAD_PARAM	
;    lay2sEvent			Events
;	LAY2S_EVT_UPDATE	
;	LAY2S_EVT_RX_DATA_CHG	
;    lay2sSrcStn		Source station from request
;    lay2sTimeOut		SAP timeout * 10ms (1-8190, 0=disable)
;    lay2sFrmCntrl		Accept updates only specified
;				Frame Control values
;	LAY2S_FC_ALL		accept all requests
;	LAY2S_FC_SDN_LO		accept only SDN lo priority
;	LAY2S_FC_SDN_HI		accept only SDN hi priority
;	LAY2S_FC_SDN_LO_HI	accept only SDN hi or lo prio
;	LAY2S_FC_SDA_LO		accept only SDA lo priority
;	LAY2S_FC_SDA_HI		accept only SDA hi priority
;	LAY2S_FC_SDA_LO_HI	accept only SDA hi or lo prio
;	LAY2S_FC_SRD_LO		accept only SRD lo priority
;	LAY2S_FC_SRD_HI		accept only SRD hi priority
;	LAY2S_FC_SRD_LO_HI	accept only SRD hi or lo prio
;	LAY2S_FC_DDB_REQ	
;	LAY2S_FC_DDB_REQ_LO	
;	LAY2S_FC_DDB_REQ_HI	
;	LAY2S_FC_DDB_REQ_LO_HI	
;    lay2sRspStatus		Response Status if NOT_OK
;    lay2sRxLen			Receive data (from request) length (bytes)
;    lay2sRxMaxLen		Receive data maximum length (bytes)
;    lay2sRxDataPage		Receive data buffer page
;    lay2sRxDataOfs		Receive data buffer offset (within page)
;    lay2sTxLen			Transmit data (response) length (bytes)
;    lay2sTxMaxLen		Transmit data maximum length (bytes)
;    lay2sTxDataPage		Transmit data buffer page
;    lay2sTxDataOfs		Transmit data buffer offset (within page)