/* * BRLTTY - A background process providing access to the console screen (when in * text mode) for a blind person using a refreshable braille display. * * Copyright (C) 1995-2018 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU Lesser General Public License, as published by the Free Software * Foundation; either version 2.1 of the License, or (at your option) any * later version. Please see the file LICENSE-LGPL for details. * * Web Page: http://brltty.com/ * * This software is maintained by Dave Mielke . */ #ifndef BRLTTY_INCLUDED_GIO_INTERNAL #define BRLTTY_INCLUDED_GIO_INTERNAL #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct GioHandleStruct GioHandle; typedef struct { void *address; size_t size; } GioHidReportItemsData; typedef int GioDisconnectResourceMethod (GioHandle *handle); typedef char *GioGetResourceNameMethod (GioHandle *handle, int timeout); typedef ssize_t GioWriteDataMethod (GioHandle *handle, const void *data, size_t size, int timeout); typedef int GioAwaitInputMethod (GioHandle *handle, int timeout); typedef ssize_t GioReadDataMethod ( GioHandle *handle, void *buffer, size_t size, int initialTimeout, int subsequentTimeout ); typedef int GioReconfigureResourceMethod (GioHandle *handle, const SerialParameters *parameters); typedef ssize_t GioTellResourceMethod ( GioHandle *handle, uint8_t recipient, uint8_t type, uint8_t request, uint16_t value, uint16_t index, const void *data, uint16_t size, int timeout ); typedef ssize_t GioAskResourceMethod ( GioHandle *handle, uint8_t recipient, uint8_t type, uint8_t request, uint16_t value, uint16_t index, void *buffer, uint16_t size, int timeout ); typedef int GioGetHidReportItemsMethod (GioHandle *handle, GioHidReportItemsData *items, int timeout); typedef size_t GioGetHidReportSizeMethod (const GioHidReportItemsData *items, unsigned char report); typedef ssize_t GioSetHidReportMethod ( GioHandle *handle, unsigned char report, const void *data, uint16_t size, int timeout ); typedef ssize_t GioGetHidReportMethod ( GioHandle *handle, unsigned char report, void *buffer, uint16_t size, int timeout ); typedef ssize_t GioSetHidFeatureMethod ( GioHandle *handle, unsigned char report, const void *data, uint16_t size, int timeout ); typedef ssize_t GioGetHidFeatureMethod ( GioHandle *handle, unsigned char report, void *buffer, uint16_t size, int timeout ); typedef int GioMonitorInputMethod (GioHandle *handle, AsyncMonitorCallback *callback, void *data); typedef void *GioGetResourceObjectMethod (GioHandle *handle); typedef struct { GioDisconnectResourceMethod *disconnectResource; GioGetResourceNameMethod *getResourceName; GioWriteDataMethod *writeData; GioAwaitInputMethod *awaitInput; GioReadDataMethod *readData; GioReconfigureResourceMethod *reconfigureResource; GioTellResourceMethod *tellResource; GioAskResourceMethod *askResource; GioGetHidReportItemsMethod *getHidReportItems; GioGetHidReportSizeMethod *getHidReportSize; GioSetHidReportMethod *setHidReport; GioGetHidReportMethod *getHidReport; GioSetHidFeatureMethod *setHidFeature; GioGetHidFeatureMethod *getHidFeature; GioMonitorInputMethod *monitorInput; GioGetResourceObjectMethod *getResourceObject; } GioMethods; struct GioEndpointStruct { GioHandle *handle; const GioMethods *methods; GioOptions options; GioResourceType resourceType; unsigned int bytesPerSecond; GioHidReportItemsData hidReportItems; struct { int error; unsigned int from; unsigned int to; unsigned char buffer[0X40]; } input; }; typedef int GioIsSupportedMethod (const GioDescriptor *descriptor); typedef int GioTestIdentifierMethod (const char **identifier); typedef const GioOptions *GioGetOptionsMethod (const GioDescriptor *descriptor); typedef const GioMethods *GioGetMethodsMethod (void); typedef GioHandle *GioConnectResourceMethod ( const char *identifier, const GioDescriptor *descriptor ); typedef int GioPrepareEndpointMethod (GioEndpoint *endpoint); typedef struct { GioIsSupportedMethod *isSupported; GioTestIdentifierMethod *testIdentifier; GioGetOptionsMethod *getOptions; GioGetMethodsMethod *getMethods; GioConnectResourceMethod *connectResource; GioPrepareEndpointMethod *prepareEndpoint; GioResourceType resourceType; } GioClass; extern const GioClass *const gioClasses[]; extern const GioClass gioNullClass; extern const GioClass gioSerialClass; extern const GioClass gioUsbClass; extern const GioClass gioBluetoothClass; extern void gioSetBytesPerSecond (GioEndpoint *endpoint, const SerialParameters *parameters); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* BRLTTY_INCLUDED_GIO_INTERNAL */