iorequest.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef GWEN_IOREQUEST_H
00015 #define GWEN_IOREQUEST_H
00016
00017 typedef struct GWEN_IO_REQUEST GWEN_IO_REQUEST;
00018
00019
00020 #include <gwenhywfar/list2.h>
00021
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025
00026
00027 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_IO_REQUEST, GWEN_Io_Request, GWENHYWFAR_API)
00028
00029
00030 #include <gwenhywfar/iolayer.h>
00031
00032
00033
00034 #define GWEN_IO_REQUEST_FLAGS_PACKETBEGIN 0x10000000
00035 #define GWEN_IO_REQUEST_FLAGS_PACKETEND 0x20000000
00036 #define GWEN_IO_REQUEST_FLAGS_READALL 0x40000000
00037 #define GWEN_IO_REQUEST_FLAGS_WRITEALL 0x40000000
00038 #define GWEN_IO_REQUEST_FLAGS_FLUSH 0x80000000
00039
00045 #define GWEN_IO_REQUEST_FLAGS_FORCE 0x01000000
00046 #define GWEN_IO_REQUEST_FLAGS_TAKEOVER 0x02000000
00047
00048
00049
00050
00051 typedef enum {
00052 GWEN_Io_Request_TypeUnknown=-1,
00053 GWEN_Io_Request_TypeConnect,
00054 GWEN_Io_Request_TypeDisconnect,
00055 GWEN_Io_Request_TypeRead,
00056 GWEN_Io_Request_TypeWrite
00057 } GWEN_IO_REQUEST_TYPE;
00058
00059
00060
00061 typedef enum {
00062 GWEN_Io_Request_StatusFree=0,
00063 GWEN_Io_Request_StatusEnqueued,
00064 GWEN_Io_Request_StatusFinished
00065 } GWEN_IO_REQUEST_STATUS;
00066
00067
00068
00069
00070 typedef void (*GWEN_IO_REQUEST_FINISH_FN)(GWEN_IO_REQUEST *r, void *user_data);
00071
00072
00073
00074 GWENHYWFAR_API const char *GWEN_Io_RequestType_toString(GWEN_IO_REQUEST_TYPE t);
00075 GWENHYWFAR_API const char *GWEN_Io_RequestStatus_toString(GWEN_IO_REQUEST_STATUS st);
00076
00077
00078
00079 GWENHYWFAR_API GWEN_IO_REQUEST *GWEN_Io_Request_new(GWEN_IO_REQUEST_TYPE t,
00080 uint8_t *pBuffer,
00081 uint32_t lBuffer,
00082 GWEN_IO_REQUEST_FINISH_FN finishFn,
00083 void *user_data,
00084 uint32_t guiid);
00085
00086 GWENHYWFAR_API void GWEN_Io_Request_Attach(GWEN_IO_REQUEST *r);
00087
00088 GWENHYWFAR_API void GWEN_Io_Request_free(GWEN_IO_REQUEST *r);
00089
00090 GWENHYWFAR_API GWEN_IO_REQUEST_TYPE GWEN_Io_Request_GetType(const GWEN_IO_REQUEST *r);
00091
00092 GWENHYWFAR_API uint32_t GWEN_Io_Request_GetFlags(const GWEN_IO_REQUEST *r);
00093 GWENHYWFAR_API void GWEN_Io_Request_SetFlags(GWEN_IO_REQUEST *r, uint32_t f);
00094 GWENHYWFAR_API void GWEN_Io_Request_AddFlags(GWEN_IO_REQUEST *r, uint32_t f);
00095 GWENHYWFAR_API void GWEN_Io_Request_SubFlags(GWEN_IO_REQUEST *r, uint32_t f);
00096
00097 GWENHYWFAR_API uint8_t *GWEN_Io_Request_GetBufferPtr(const GWEN_IO_REQUEST *r);
00098 GWENHYWFAR_API uint32_t GWEN_Io_Request_GetBufferSize(const GWEN_IO_REQUEST *r);
00099 GWENHYWFAR_API uint32_t GWEN_Io_Request_GetBufferPos(const GWEN_IO_REQUEST *r);
00100
00101 GWENHYWFAR_API uint32_t GWEN_Io_Request_GetGuiId(const GWEN_IO_REQUEST *r);
00102 GWENHYWFAR_API void GWEN_Io_Request_SetGuiId(GWEN_IO_REQUEST *r, uint32_t i);
00103
00104 GWENHYWFAR_API GWEN_IO_LAYER *GWEN_Io_Request_GetIoLayer(const GWEN_IO_REQUEST *r);
00105
00106 GWENHYWFAR_API GWEN_IO_REQUEST_STATUS GWEN_Io_Request_GetStatus(const GWEN_IO_REQUEST *r);
00107
00108 GWENHYWFAR_API int GWEN_Io_Request_GetResultCode(const GWEN_IO_REQUEST *r);
00109
00110 GWENHYWFAR_API GWEN_IO_LAYER *GWEN_Io_Request_GetIncomingLayer(const GWEN_IO_REQUEST *r);
00111 GWENHYWFAR_API GWEN_IO_LAYER *GWEN_Io_Request_TakeIncomingLayer(GWEN_IO_REQUEST *r);
00112
00113
00114 #ifdef __cplusplus
00115 }
00116 #endif
00117
00118
00119 #endif