208 lines
7.7 KiB
C
208 lines
7.7 KiB
C
/** \file gphoto2-abilities-list.h
|
|
* \brief List of supported camera models including their abilities.
|
|
*
|
|
* \author Copyright 2000 Scott Fritzinger
|
|
*
|
|
* \par
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* \par
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* \par
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the
|
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef LIBGPHOTO2_GPHOTO2_ABILITIES_LIST_H
|
|
#define LIBGPHOTO2_GPHOTO2_ABILITIES_LIST_H
|
|
|
|
#include <gphoto2/gphoto2-context.h>
|
|
#include <gphoto2/gphoto2-list.h>
|
|
#include <gphoto2/gphoto2-port-info-list.h>
|
|
|
|
#include <gphoto2/gphoto2-port-log.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
/**
|
|
* Current implementation status of the camera driver.
|
|
*/
|
|
typedef enum {
|
|
GP_DRIVER_STATUS_PRODUCTION, /**< Driver is production ready. */
|
|
GP_DRIVER_STATUS_TESTING, /**< Driver is beta quality. */
|
|
GP_DRIVER_STATUS_EXPERIMENTAL, /**< Driver is alpha quality and might even not work. */
|
|
GP_DRIVER_STATUS_DEPRECATED /**< Driver is no longer recommended to use and will be removed. */
|
|
} CameraDriverStatus;
|
|
|
|
/**
|
|
* Type of the device represented. Currently we have Still Cameras
|
|
* and MTP Audio Players.
|
|
*/
|
|
typedef enum {
|
|
GP_DEVICE_STILL_CAMERA = 0, /**< Traditional still camera */
|
|
GP_DEVICE_AUDIO_PLAYER = 1 << 0 /**< Audio player */
|
|
} GphotoDeviceType;
|
|
|
|
/**
|
|
* A bitmask of remote control related operations of the device.
|
|
* Some drivers might support additional dynamic capabilities (like the PTP driver).
|
|
*/
|
|
typedef enum {
|
|
GP_OPERATION_NONE = 0, /**< No remote control operation supported. */
|
|
GP_OPERATION_CAPTURE_IMAGE = 1 << 0, /**< Capturing images supported. */
|
|
GP_OPERATION_CAPTURE_VIDEO = 1 << 1, /**< Capturing videos supported. */
|
|
GP_OPERATION_CAPTURE_AUDIO = 1 << 2, /**< Capturing audio supported. */
|
|
GP_OPERATION_CAPTURE_PREVIEW = 1 << 3, /**< Capturing image previews supported. */
|
|
GP_OPERATION_CONFIG = 1 << 4, /**< Camera and Driver configuration supported. */
|
|
GP_OPERATION_TRIGGER_CAPTURE = 1 << 5 /**< Camera can trigger capture and wait for events. */
|
|
} CameraOperation;
|
|
|
|
/**
|
|
* A bitmask of image related operations of the device.
|
|
*/
|
|
typedef enum {
|
|
GP_FILE_OPERATION_NONE = 0, /**< No special file operations, just download. */
|
|
GP_FILE_OPERATION_DELETE = 1 << 1, /**< Deletion of files is possible. */
|
|
GP_FILE_OPERATION_PREVIEW = 1 << 3, /**< Previewing viewfinder content is possible. */
|
|
GP_FILE_OPERATION_RAW = 1 << 4, /**< Raw retrieval is possible (used by non-JPEG cameras) */
|
|
GP_FILE_OPERATION_AUDIO = 1 << 5, /**< Audio retrieval is possible. */
|
|
GP_FILE_OPERATION_EXIF = 1 << 6 /**< EXIF retrieval is possible. */
|
|
} CameraFileOperation;
|
|
|
|
/**
|
|
* A bitmask of filesystem related operations of the device.
|
|
*/
|
|
typedef enum {
|
|
GP_FOLDER_OPERATION_NONE = 0, /**< No special filesystem operation. */
|
|
GP_FOLDER_OPERATION_DELETE_ALL = 1 << 0, /**< Deletion of all files on the device. */
|
|
GP_FOLDER_OPERATION_PUT_FILE = 1 << 1, /**< Upload of files to the device possible. */
|
|
GP_FOLDER_OPERATION_MAKE_DIR = 1 << 2, /**< Making directories on the device possible. */
|
|
GP_FOLDER_OPERATION_REMOVE_DIR = 1 << 3 /**< Removing directories from the device possible. */
|
|
} CameraFolderOperation;
|
|
|
|
#ifdef _GPHOTO2_INTERNAL_CODE
|
|
|
|
/* enum CameraOperation */
|
|
extern const StringFlagItem gpi_camera_operation_map[];
|
|
|
|
/* enum CameraFileOperation */
|
|
extern const StringFlagItem gpi_file_operation_map[];
|
|
|
|
/* enum CameraFolderOperation */
|
|
extern const StringFlagItem gpi_folder_operation_map[];
|
|
|
|
/* enum GphotoDeviceType */
|
|
extern const StringFlagItem gpi_gphoto_device_type_map[];
|
|
|
|
/* enum CameraDriverStatus */
|
|
extern const StringFlagItem gpi_camera_driver_status_map[];
|
|
|
|
#endif /* _GPHOTO2_INTERNAL_CODE */
|
|
|
|
|
|
/**
|
|
* \brief Describes the properties of a specific camera.
|
|
*
|
|
* The internals of this structures are used extensively by the
|
|
* camlibs, but the status regarding use by frontends is questionable.
|
|
*/
|
|
typedef struct {
|
|
char model [128]; /**< \brief name of camera model */
|
|
CameraDriverStatus status; /**< \brief driver quality */
|
|
|
|
/** \brief Supported port types. */
|
|
GPPortType port;
|
|
/** \brief Supported serial port speeds (terminated with a value of 0). */
|
|
int speed [64];
|
|
|
|
/* Supported operations */
|
|
CameraOperation operations; /**< \brief Camera operation funcs */
|
|
CameraFileOperation file_operations; /**< \brief Camera file op funcs */
|
|
CameraFolderOperation folder_operations;/**< \brief Camera folder op funcs */
|
|
|
|
int usb_vendor; /**< \brief USB Vendor D */
|
|
int usb_product; /**< \brief USB Product ID */
|
|
int usb_class; /**< \brief USB device class */
|
|
int usb_subclass; /**< \brief USB device subclass */
|
|
int usb_protocol; /**< \brief USB device protocol */
|
|
|
|
/* For core use */
|
|
char library [1024]; /**< \brief (Internal) library filename */
|
|
char id [1024]; /**< \brief (Internal) camera ID name */
|
|
|
|
GphotoDeviceType device_type; /**< \brief Device type. */
|
|
/** Reserved space to use in the future w/out changing the
|
|
* struct size */
|
|
int reserved2; /**< reserved space \internal */
|
|
int reserved3; /**< reserved space \internal */
|
|
int reserved4; /**< reserved space \internal */
|
|
int reserved5; /**< reserved space \internal */
|
|
int reserved6; /**< reserved space \internal */
|
|
int reserved7; /**< reserved space \internal */
|
|
int reserved8; /**< reserved space \internal */
|
|
} CameraAbilities;
|
|
|
|
|
|
/**
|
|
* \brief List of supported camera models including their abilities
|
|
*
|
|
* The internals of this list are hidden - use the access functions.
|
|
*/
|
|
typedef struct _CameraAbilitiesList CameraAbilitiesList;
|
|
|
|
|
|
int gp_abilities_list_new (CameraAbilitiesList **list);
|
|
int gp_abilities_list_free (CameraAbilitiesList *list);
|
|
|
|
int gp_abilities_list_load (CameraAbilitiesList *list, GPContext *context);
|
|
int gp_abilities_list_load_dir (CameraAbilitiesList *list, const char *dir, GPContext *context);
|
|
int gp_abilities_list_reset (CameraAbilitiesList *list);
|
|
|
|
int gp_abilities_list_detect (CameraAbilitiesList *list,
|
|
GPPortInfoList *info_list, CameraList *l,
|
|
GPContext *context);
|
|
|
|
int gp_abilities_list_append (CameraAbilitiesList *list,
|
|
CameraAbilities abilities);
|
|
|
|
int gp_abilities_list_count (CameraAbilitiesList *list);
|
|
|
|
int gp_abilities_list_lookup_model (CameraAbilitiesList *list,
|
|
const char *model);
|
|
|
|
int gp_abilities_list_get_abilities (CameraAbilitiesList *list, int index,
|
|
CameraAbilities *abilities);
|
|
|
|
const char *gp_message_codeset (const char *);
|
|
|
|
int gp_init_localedir (const char *localedir);
|
|
|
|
|
|
/**
|
|
* Name of the environment variable which may contain the path where
|
|
* to look for the camlibs. If this environment variable is not defined,
|
|
* use the compiled-in default constant.
|
|
*
|
|
* \internal Internal use only.
|
|
*/
|
|
#ifdef _GPHOTO2_INTERNAL_CODE
|
|
#define CAMLIBDIR_ENV "CAMLIBS"
|
|
#endif /* _GPHOTO2_INTERNAL_CODE */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* !defined(LIBGPHOTO2_GPHOTO2_ABILITIES_LIST_H) */
|