📄 irda.h
字号:
IRLAP_DISCOVERY_REQ,
IRLAP_DISCOVERY_IND,
IRLAP_DISCOVERY_CONF,
IRLAP_CONNECT_REQ,
IRLAP_CONNECT_IND,
IRLAP_CONNECT_RESP,
IRLAP_CONNECT_CONF,
IRLAP_DISCONNECT_REQ,
IRLAP_DISCONNECT_IND,
IRLAP_DATA_REQ, // Don't fuss with the order, CONF must be 2 from REQ
IRLAP_DATA_IND,
IRLAP_DATA_CONF,
IRLAP_UDATA_REQ,
IRLAP_UDATA_IND,
IRLAP_UDATA_CONF,
IRLAP_STATUS_IND,
IRLAP_FLOWON_REQ,
IRLMP_DISCOVERY_REQ,
IRLMP_DISCOVERY_IND,
IRLMP_DISCOVERY_CONF,
IRLMP_CONNECT_REQ,
IRLMP_CONNECT_IND,
IRLMP_CONNECT_RESP,
IRLMP_CONNECT_CONF,
IRLMP_DISCONNECT_REQ,
IRLMP_DISCONNECT_IND,
IRLMP_DATA_REQ,
IRLMP_DATA_IND,
IRLMP_DATA_CONF,
IRLMP_UDATA_REQ,
IRLMP_UDATA_IND,
IRLMP_UDATA_CONF,
IRLMP_ACCESSMODE_REQ,
IRLMP_ACCESSMODE_IND,
IRLMP_ACCESSMODE_CONF,
IRLMP_MORECREDIT_REQ,
IRLMP_GETVALUEBYCLASS_REQ,
IRLMP_GETVALUEBYCLASS_CONF,
IRLMP_REGISTERLSAP_REQ,
IRLMP_DEREGISTERLSAP_REQ,
IRLMP_ADDATTRIBUTE_REQ,
IRLMP_DELATTRIBUTE_REQ,
IRLMP_LINKCONTROL_REQ,
IRLAP_LINKCONTROL_REQ
} IRDA_SERVICE_PRIM;
typedef enum
{
MAC_MEDIA_BUSY, // keep in sync with IRDA_StatStr in irlaplog.c
MAC_MEDIA_CLEAR,
IRLAP_DISCOVERY_COLLISION,
IRLAP_REMOTE_DISCOVERY_IN_PROGRESS,
IRLAP_REMOTE_CONNECT_IN_PROGRSS,
IRLAP_DISCOVERY_COMPLETED,
IRLAP_REMOTE_CONNECTION_IN_PROGRESS,
IRLAP_CONNECTION_COMPLETED,
IRLAP_REMOTE_INITIATED,
IRLAP_PRIMARY_CONFLICT,
IRLAP_DISCONNECT_COMPLETED,
IRLAP_NO_RESPONSE,
IRLAP_DECLINE_RESET,
IRLAP_DATA_REQUEST_COMPLETED,
IRLAP_DATA_REQUEST_FAILED_LINK_RESET,
IRLAP_DATA_REQUEST_FAILED_REMOTE_BUSY,
IRLMP_NO_RESPONSE,
IRLMP_ACCESSMODE_SUCCESS,
IRLMP_ACCESSMODE_FAILURE,
IRLMP_DATA_REQUEST_COMPLETED,
IRLMP_DATA_REQUEST_FAILED
} IRDA_SERVICE_STATUS;
// MAC Control Service Request Message - MAC_CONTROL_REQ/CONF
typedef enum
{
MAC_INITIALIZE_LINK, // keep in sync with MAC_OpStr in irlaplog.c
MAC_CLOSE_LINK,
MAC_RECONFIG_LINK,
MAC_MEDIA_SENSE,
MAC_ACQUIRE_RESOURCES,
MAC_RELEASE_RESOURCES
} MAC_CONTROL_OPERATION;
typedef struct
{
MAC_CONTROL_OPERATION Op;
int Port;
int Baud;
int NumBOFs;
int MinTat;
int DataSize;
int SenseTime;
IRDA_SERVICE_STATUS OpStatus;
BOOLEAN SetIR;
void *pMacConfig;
UINT MacConfigStatus;
} MAC_CONTROL_SERVICE;
// IRDA Link Control Service Request Message - IRLMP_LINKCONTROL_REQ
// IRLAP_LINKCONTROL_REQ
typedef struct
{
BOOLEAN AcquireResources;
PIRDA_LINK_CB pIrdaLinkCb;
void *pLinkConfig;
} IRDA_LINKCONTROL_SERVICE;
// IRLAP Discovery Service Request Message - IRLAP_DISCOVERY_IND/CONF
typedef struct
{
LIST_ENTRY *pDevList;
IRDA_SERVICE_STATUS DscvStatus;
BOOLEAN SenseMedia;
} IRLAP_DISCOVERY_SERVICE;
// IRDA Connection Service Request Message - IRLAP_CONNECT_REQ/IND/CONF
// IRLMP_CONNECT_REQ/CONF
typedef struct
{
UCHAR RemoteDevAddr[IRDA_DEV_ADDR_LEN];
IRDA_QOS_PARMS *pQos;
int LocalLsapSel;
int RemoteLsapSel;
UCHAR *pConnData;
int ConnDataLen;
void *pContext;
int MaxPDUSize;
int MaxSDUSize;
int TtpCredits;
IRDA_SERVICE_STATUS ConnStatus;
BOOLEAN UseTtp;
} IRDA_CONNECT_SERVICE;
// IRDA Disconnection Service Request Message - IRLAP_DISCONNECT_REQ/IND
// IRLMP_DISCONNECT_REQ/IND
typedef enum
{
IRLMP_USER_REQUEST = 1,
IRLMP_UNEXPECTED_IRLAP_DISC,
IRLMP_IRLAP_CONN_FAILED,
IRLMP_IRLAP_RESET,
IRLMP_LM_INITIATED_DISC,
IRLMP_DISC_LSAP,
IRLMP_NO_RESPONSE_LSAP,
IRLMP_NO_AVAILABLE_LSAP,
IRLMP_MAC_MEDIA_BUSY,
IRLMP_IRLAP_REMOTE_DISCOVERY_IN_PROGRESS,
IRLMP_IAS_NO_SUCH_OBJECT, // these are added for the IAS_GetValueByClass.Conf
IRLMP_IAS_NO_SUCH_ATTRIB,
IRLMP_IAS_SUCCESS,
IRLMP_IAS_SUCCESS_LISTLEN_GREATER_THAN_ONE,
IRLMP_UNSPECIFIED_DISC = 0xFF
} IRLMP_DISC_REASON;
typedef struct
{
UCHAR *pDiscData; // IRLMP_DISCONNECT_REQ/IND only
int DiscDataLen; // IRLMP_DISCONNECT_REQ/IND only
IRLMP_DISC_REASON DiscReason; // IRLMP_DISCONNECT_REQ/IND only
IRDA_SERVICE_STATUS DiscStatus; // Indication only
void *pDiscContext;
} IRDA_DISCONNECT_SERVICE;
// IRDA Data Service Request Message
#define IRLAP_HEADER_LEN 2
#define IRLMP_HEADER_LEN 6
#define TTP_HEADER_LEN 8
#define IRDA_HEADER_LEN IRLAP_HEADER_LEN+IRLMP_HEADER_LEN+TTP_HEADER_LEN+1
// + 1 IRComm WACK!!
#define SEG_FINAL 1
#define SEG_LOCAL 2
typedef struct
{
void *pOwner;
int SegCount; // Number of segments
UINT SegFlags;
UCHAR *pBase;
UCHAR *pLimit;
UCHAR *pRead;
UCHAR *pWrite;
void *pTdiSendComp;
void *pTdiSendCompCnxt;
UINT SendRefCnt;
UINT SendLen;
BOOLEAN IrCOMM_9Wire;
#ifdef TEMPERAMENTAL_SERIAL_DRIVER
int FCS;
#endif
IRDA_SERVICE_STATUS DataStatus; // for CONF
// |------------------------|
// | pRead o-------------
// |------------------------| |
// | pWrite o---------- |
// |------------------------| | |
// | pBase o------- | |
// |------------------------| | | |
// | pLimit o---- | | |
// |------------------------| | | | |
// | | | | |
// ------------------------ | | | |
// | |<---- | |
// | | | | |
// | |<--------<-
// | | |
// | |<-
// ------------------------
UCHAR *pHdrRead;
UCHAR *pHdrWrite;
UCHAR Header[IRDA_HEADER_LEN];
// |------------------------|
// | pHdrRead o-------------
// |------------------------| |
// | pHdrWrite o---------- |
// |------------------------| | |
// Header--->| | | |
// | | | |
// | |<--------<-
// | | |
// | |<-------
// ------------------------
//
// On the receive side, all headers are contained
// at pRead, not in the above Header array
//
} IRDA_DATA_SERVICE;
typedef enum
{
IRLMP_MULTIPLEXED,
IRLMP_EXCLUSIVE
} IRLMP_ACCESSMODE;
typedef struct
{
IRLMP_ACCESSMODE AccessMode;
IRDA_SERVICE_STATUS ModeStatus;
BOOLEAN IrLPTMode; // if true don't send PDU
} IRLMP_ACCESSMODE_SERVICE;
typedef struct
{
IAS_SET *pIasSet;
CHAR *pClassName;
IAS_QUERY *pIasQuery;
int AttribLen; // OctetSeq or UsrStr len
IRLMP_DISC_REASON IASStatus;
PVOID AttribHandle;
PVOID *pAttribHandle;
} IRLMP_IAS_SERVICE;
typedef struct irda_msg
{
LIST_ENTRY Linkage;
IRDA_SERVICE_PRIM Prim;
PVOID DataContext;
union
{
MAC_CONTROL_SERVICE MAC_ControlService;
IRDA_LINKCONTROL_SERVICE IRDA_LinkControlService;
IRLAP_DISCOVERY_SERVICE IRLAP_DiscoveryService;
IRDA_DISCONNECT_SERVICE IRDA_DisconnectService;
IRDA_CONNECT_SERVICE IRDA_ConnectService;
IRDA_DATA_SERVICE IRDA_DataService;
IRLMP_ACCESSMODE_SERVICE IRLMP_AccessModeService;
IRLMP_IAS_SERVICE IRLMP_IASService;
UINT LinkStatus;
} MsgType;
} IRDA_MSG, *PIRDA_MSG;
#define IRDA_MSG_Op MsgType.MAC_ControlService.Op
#define IRDA_MSG_Port MsgType.MAC_ControlService.Port
#define IRDA_MSG_Baud MsgType.MAC_ControlService.Baud
#define IRDA_MSG_NumBOFs MsgType.MAC_ControlService.NumBOFs
#define IRDA_MSG_MinTat MsgType.MAC_ControlService.MinTat
#define IRDA_MSG_DataSize MsgType.MAC_ControlService.DataSize
#define IRDA_MSG_OpStatus MsgType.MAC_ControlService.OpStatus
#define IRDA_MSG_SetIR MsgType.MAC_ControlService.SetIR
#define IRDA_MSG_SenseTime MsgType.MAC_ControlService.SenseTime
#define IRDA_MSG_pMacConfig MsgType.MAC_ControlService.pMacConfig
#define IRDA_MSG_MacConfigStatus MsgType.MAC_ControlService.MacConfigStatus
#define IRDA_MSG_AcquireResources MsgType.IRDA_LinkControlService.AcquireResources
#define IRDA_MSG_pLinkContext MsgType.IRDA_LinkControlService.pIrdaLinkCb
#define IRDA_MSG_pLinkConfig MsgType.IRDA_LinkControlService.pLinkConfig
#define IRDA_MSG_pOwner MsgType.IRDA_DataService.pOwner
#define IRDA_MSG_SegCount MsgType.IRDA_DataService.SegCount
#define IRDA_MSG_SegFlags MsgType.IRDA_DataService.SegFlags
#define IRDA_MSG_pHdrRead MsgType.IRDA_DataService.pHdrRead
#define IRDA_MSG_pHdrWrite MsgType.IRDA_DataService.pHdrWrite
#define IRDA_MSG_Header MsgType.IRDA_DataService.Header
#define IRDA_MSG_pBase MsgType.IRDA_DataService.pBase
#define IRDA_MSG_pLimit MsgType.IRDA_DataService.pLimit
#define IRDA_MSG_pRead MsgType.IRDA_DataService.pRead
#define IRDA_MSG_pWrite MsgType.IRDA_DataService.pWrite
#define IRDA_MSG_DataStatus MsgType.IRDA_DataService.DataStatus
#define IRDA_MSG_pTdiSendComp MsgType.IRDA_DataService.pTdiSendComp
#define IRDA_MSG_pTdiSendCompCnxt MsgType.IRDA_DataService.pTdiSendCompCnxt
#define IRDA_MSG_SendRefCnt MsgType.IRDA_DataService.SendRefCnt
#define IRDA_MSG_SendLen MsgType.IRDA_DataService.SendLen
#define IRDA_MSG_IrCOMM_9Wire MsgType.IRDA_DataService.IrCOMM_9Wire
#ifdef TEMPERAMENTAL_SERIAL_DRIVER
#define IRDA_MSG_FCS MsgType.IRDA_DataService.FCS
#endif
#define IRDA_MSG_pDevList MsgType.IRLAP_DiscoveryService.pDevList
#define IRDA_MSG_DscvStatus MsgType.IRLAP_DiscoveryService.DscvStatus
#define IRDA_MSG_SenseMedia MsgType.IRLAP_DiscoveryService.SenseMedia
#define IRDA_MSG_RemoteDevAddr MsgType.IRDA_ConnectService.RemoteDevAddr
#define IRDA_MSG_pQos MsgType.IRDA_ConnectService.pQos
#define IRDA_MSG_LocalLsapSel MsgType.IRDA_ConnectService.LocalLsapSel
#define IRDA_MSG_RemoteLsapSel MsgType.IRDA_ConnectService.RemoteLsapSel
#define IRDA_MSG_pConnData MsgType.IRDA_ConnectService.pConnData
#define IRDA_MSG_ConnDataLen MsgType.IRDA_ConnectService.ConnDataLen
#define IRDA_MSG_ConnStatus MsgType.IRDA_ConnectService.ConnStatus
#define IRDA_MSG_pContext MsgType.IRDA_ConnectService.pContext
#define IRDA_MSG_UseTtp MsgType.IRDA_ConnectService.UseTtp
#define IRDA_MSG_MaxSDUSize MsgType.IRDA_ConnectService.MaxSDUSize
#define IRDA_MSG_MaxPDUSize MsgType.IRDA_ConnectService.MaxPDUSize
#define IRDA_MSG_TtpCredits MsgType.IRDA_ConnectService.TtpCredits
#define IRDA_MSG_pDiscData MsgType.IRDA_DisconnectService.pDiscData
#define IRDA_MSG_DiscDataLen MsgType.IRDA_DisconnectService.DiscDataLen
#define IRDA_MSG_DiscReason MsgType.IRDA_DisconnectService.DiscReason
#define IRDA_MSG_DiscStatus MsgType.IRDA_DisconnectService.DiscStatus
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -