Linux LITE QMUX  MBPL_SDK_R25_ENG3
QmuxTransport.h
Go to the documentation of this file.
1 
6 #ifndef __QMUX_TRANSPORT_H__
7 #define __QMUX_TRANSPORT_H__
8 
9 
10 #include <stdint.h>
11 #include <stdbool.h>
12 #include <pthread.h>
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 // Forward decl.
19 struct QmiService;
20 
21 #define QMUX_INTERFACE_DIRECT 0
22 #define QMUX_INTERFACE_MBIM 1
23 #define QMUX_INTERFACE_ROUTER 2
24 
30 typedef enum
31 {
32  QMUX_TRANSPORT_ERR_UNKNOWN, // Unknown error type
33  QMUX_TRANSPORT_ERR_READ, // Error occurred during read() operation
34  QMUX_TRANSPORT_ERR_WRITE, // Error occurred during write() operation
36 
48 typedef struct
49 {
50  QMUX_TRANSPORT_ERR_TYPE err_type;
51  int errno_val;
53 
65 typedef void (*QMUX_TRANSPORT_ERR_CALLBACK)(void * pErrCallbackContext, QMUX_TRANSPORT_ERR_INFO err_info);
66 
111 typedef struct QmuxTransport
112 {
113  int interfaceType;
114  void* pDataLayer;
115  int deviceFd;
116  int shutdownFd; // FD of shutdown event.
117  bool devRemoved; // Flag indicating device has been removed.
118  struct QmiService* qmiServiceList; // List of QMI services this transport is handling.
119  pthread_mutex_t writeLock; // Protect write operations.
120  pthread_mutex_t qmiServiceListLock;
121  pthread_t readThread;
122  QMUX_TRANSPORT_ERR_CALLBACK pErrCallback;
123  void * pErrCallbackContext;
124 } QmuxTransport;
125 
142 int QmuxTransport_Initialize(QmuxTransport* pThis, char *devicePath, bool useMbim, void* pInterfaceSpecific);
143 
165 int QmuxTransport_InitializeEx(QmuxTransport* pThis, char *destination, int interfaceType, void* pInterfaceSpecific);
166 
175 
184 void QmuxTransport_AttachQmiService(QmuxTransport* pThis, struct QmiService* pQmiService);
185 
194 void QmuxTransport_DetachQmiService(QmuxTransport* pThis, struct QmiService* pQmiService);
195 
211  QmuxTransport* pThis,
212  uint8_t qmiServiceType,
213  uint8_t qmiClientId,
214  uint16_t qmiTransactionId,
215  uint8_t* qmiPacket,
216  uint16_t qmiPacketSize
217  );
218 
233 void QmuxTransport_RegisterErrCallback(QmuxTransport * pThis, QMUX_TRANSPORT_ERR_CALLBACK pErrCallback, void * pErrCallbackContext);
234 
235 #ifdef __cplusplus
236 } /* extern "C" { */
237 #endif
238 
239 #endif //__QMUX_TRANSPORT_H__
struct QmuxTransport QmuxTransport
void QmuxTransport_ShutDown(QmuxTransport *pThis)
int QmuxTransport_Initialize(QmuxTransport *pThis, char *devicePath, bool useMbim, void *pInterfaceSpecific)
void QmuxTransport_DetachQmiService(QmuxTransport *pThis, struct QmiService *pQmiService)
int QmuxTransport_SendQmiPacket(QmuxTransport *pThis, uint8_t qmiServiceType, uint8_t qmiClientId, uint16_t qmiTransactionId, uint8_t *qmiPacket, uint16_t qmiPacketSize)
void QmuxTransport_AttachQmiService(QmuxTransport *pThis, struct QmiService *pQmiService)
Definition: QmuxTransport.h:48
int QmuxTransport_InitializeEx(QmuxTransport *pThis, char *destination, int interfaceType, void *pInterfaceSpecific)
void(* QMUX_TRANSPORT_ERR_CALLBACK)(void *pErrCallbackContext, QMUX_TRANSPORT_ERR_INFO err_info)
Definition: QmuxTransport.h:65
QMUX_TRANSPORT_ERR_TYPE
Definition: QmuxTransport.h:30
Definition: QmiService.h:86
Definition: QmuxTransport.h:111
void QmuxTransport_RegisterErrCallback(QmuxTransport *pThis, QMUX_TRANSPORT_ERR_CALLBACK pErrCallback, void *pErrCallbackContext)

Copyright (c) 2011-2020 Sierra Wireless, Inc. All rights reserved