Files
argyllcms/spectro/hidio.h
2026-08-20 20:28:40 +01:00

96 lines
2.5 KiB
C

#ifndef HIDIO_H
/* General USB HID I/O support */
/*
* Argyll Color Management System
*
* Author: Graeme W. Gill
* Date: 2007/10/10
*
* Copyright 2006 - 2013 Graeme W. Gill
* All rights reserved.
*
* This material is licenced under the GNU GENERAL PUBLIC LICENSE Version 2 or later :-
* see the License2.txt file for licencing details.
*/
/* These routines supliement the class code in ntio.c and unixio.c */
#ifdef UNIX_APPLE
#include <sys/param.h>
#include <IOKit/IOKitLib.h>
#include <IOKit/IOCFPlugIn.h>
#include <IOKit/hid/IOHIDLib.h>
#include <IOKit/hid/IOHIDKeys.h>
#include <CoreFoundation/CoreFoundation.h>
#endif /* UNIX_APPLE */
#ifdef __cplusplus
extern "C" {
#endif
/* Add or modify paths to USB HID connected instruments, to the existing */
/* icompath paths in the icoms structure, if HID access is supported. */
/* return icom error */
int hid_get_paths(struct _icompaths *p);
void hid_close_port(icoms *p);
/* Set the HID specific icoms methods */
void hid_set_hid_methods(icoms *p);
/* Copy hid_idevice contents */
/* return icom error */
int hid_copy_hid_idevice(icoms *d, icompath *s);
/* Cleanup and then free a hid_del_hid_idevice */
void hid_del_hid_idevice(struct hid_idevice *dev);
/* Cleanup any HID specific icoms info */
void hid_del_hid(icoms *p);
/* Opaque structure to hid OS dependent HID details */
struct hid_idevice {
#if defined(NT)
char *dpath; /* Device path */
/* Stuff setup when device is open: */
HANDLE fh; /* File handle for write/read */
OVERLAPPED ols; /* Overlapped structure for write/read */
#endif
#if defined(UNIX_APPLE)
# if defined(USE_NEW_OSX_CODE) && MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
int lid; /* Location ID */
IOHIDDeviceRef ioob; /* Object to open */
/* Stuff setup when device is open: */
CFRunLoopRef rlr;
#else
int lid; /* Location ID */
io_object_t ioob; /* Object to open */
/* Stuff setup when device is open: */
IOHIDDeviceInterface122 **device; /* OS X HID device we've opened */
mach_port_t port; /* Other stuff present when opened */
CFRunLoopSourceRef evsrc;
CFRunLoopRef rlr;
IOReturn result;
# define HID_RBUF_SIZE 1024
unsigned char rbuf[HID_RBUF_SIZE]; /* Buffer for read callback */
int bread; /* Bytes read by callback */
#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1060 */
#endif
char *SerialNumber; /* If not-NULL, USB serial number string */
};
/* Cleanup and then free an hid entry */
void hid_del_hid_idevice(struct hid_idevice *hidd);
#ifdef __cplusplus
}
#endif
#define HIDIO_H
#endif /* HIDIO_H */