00001
00024 #ifndef __GPHOTO2_PORT_LIBRARY_H__
00025 #define __GPHOTO2_PORT_LIBRARY_H__
00026
00027 #include <gphoto2/gphoto2-port-info-list.h>
00028 #include <gphoto2/gphoto2-port.h>
00029
00039 typedef struct _GPPortOperations {
00040 int (*init) (GPPort *);
00041 int (*exit) (GPPort *);
00042 int (*open) (GPPort *);
00043 int (*close) (GPPort *);
00044 int (*read) (GPPort *, char *, int);
00045 int (*check_int)(GPPort *, char *, int, int);
00046 int (*write) (GPPort *, const char *, int);
00047 int (*update) (GPPort *);
00048
00049
00050
00051
00052
00053 int (*get_pin) (GPPort *, GPPin, GPLevel*);
00054 int (*set_pin) (GPPort *, GPPin, GPLevel);
00055 int (*send_break)(GPPort *, int);
00056 int (*flush) (GPPort *, int);
00057
00058
00059 int (*find_device)(GPPort * dev, int idvendor, int idproduct);
00060 int (*find_device_by_class)(GPPort * dev, int class, int subclass, int protocol);
00061 int (*clear_halt) (GPPort * dev, int ep);
00062 int (*msg_write) (GPPort * dev, int request, int value, int index,
00063 char *bytes, int size);
00064 int (*msg_read) (GPPort * dev, int request, int value, int index,
00065 char *bytes, int size);
00066 int (*msg_interface_write) (GPPort * dev, int request,
00067 int value, int index, char *bytes, int size);
00068 int (*msg_interface_read) (GPPort * dev, int request,
00069 int value, int index, char *bytes, int size);
00070 int (*msg_class_write) (GPPort * dev, int request,
00071 int value, int index, char *bytes, int size);
00072 int (*msg_class_read) (GPPort * dev, int request,
00073 int value, int index, char *bytes, int size);
00074
00075
00076 int (*seek) (GPPort * dev, int offset, int whence);
00077
00078
00079 int (*send_scsi_cmd) (GPPort *port, int to_dev,
00080 char *cmd, int cmd_size,
00081 char *sense, int sense_size,
00082 char *data, int data_size);
00083
00084 } GPPortOperations;
00085
00086 typedef GPPortType (* GPPortLibraryType) (void);
00087 typedef int (* GPPortLibraryList) (GPPortInfoList *list);
00088
00089 typedef GPPortOperations *(* GPPortLibraryOperations) (void);
00090
00091
00092
00093
00094
00095
00096 GPPortType gp_port_library_type (void);
00097 int gp_port_library_list (GPPortInfoList *list);
00098
00099 GPPortOperations *gp_port_library_operations (void);
00100
00101 #endif