/* * 1394-Based Digital Camera Control Library * * Platform specific headers * * Written by David Moore * * 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.1 of the License, or (at your option) any later version. * * 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. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __DC1394_PLATFORM_H__ #define __DC1394_PLATFORM_H__ #include #include #include "config.h" #ifdef HAVE_MACOSX #include #endif typedef struct _platform_t platform_t; typedef struct _platform_device_t platform_device_t; typedef struct _platform_camera_t platform_camera_t; typedef struct _platform_device_list_t { platform_t * p; platform_device_t ** devices; int num_devices; } platform_device_list_t; typedef struct _platform_dispatch_t { platform_t * (*platform_new)(void); void (*platform_free)(platform_t *); platform_device_list_t * (*get_device_list)(platform_t *); void (*free_device_list)(platform_device_list_t *); int (*device_get_config_rom)(platform_device_t *, uint32_t *, int *); platform_camera_t * (*camera_new)(platform_t *, platform_device_t *, uint32_t); void (*camera_free)(platform_camera_t *); void (*camera_set_parent)(platform_camera_t *, dc1394camera_t *); dc1394error_t (*camera_read)(platform_camera_t *, uint64_t, uint32_t *, int); dc1394error_t (*camera_write)(platform_camera_t *, uint64_t, const uint32_t *, int); dc1394error_t (*reset_bus)(platform_camera_t *); dc1394error_t (*read_cycle_timer)(platform_camera_t *, uint32_t *, uint64_t *); dc1394error_t (*camera_get_node)(platform_camera_t *, uint32_t *, uint32_t *); dc1394error_t (*camera_print_info)(platform_camera_t *, FILE *); dc1394error_t (*set_broadcast)(platform_camera_t *, dc1394bool_t); dc1394error_t (*get_broadcast)(platform_camera_t *, dc1394bool_t *); dc1394error_t (*capture_setup)(platform_camera_t *, uint32_t, uint32_t); dc1394error_t (*capture_stop)(platform_camera_t *); dc1394error_t (*capture_dequeue)(platform_camera_t *, dc1394capture_policy_t, dc1394video_frame_t **); dc1394error_t (*capture_enqueue)(platform_camera_t *, dc1394video_frame_t *); int (*capture_get_fileno)(platform_camera_t *); dc1394bool_t (*capture_is_frame_corrupt)(platform_camera_t *, dc1394video_frame_t *); dc1394error_t (*iso_set_persist)(platform_camera_t *); dc1394error_t (*iso_allocate_channel)(platform_camera_t *, uint64_t, int *); dc1394error_t (*iso_release_channel)(platform_camera_t *, int); dc1394error_t (*iso_allocate_bandwidth)(platform_camera_t *, int); dc1394error_t (*iso_release_bandwidth)(platform_camera_t *, int); dc1394error_t (*capture_set_callback)(platform_camera_t * , dc1394capture_callback_t , void * ); #ifdef HAVE_MACOSX dc1394error_t (*capture_schedule_with_runloop)(platform_camera_t * , CFRunLoopRef , CFStringRef); #else dc1394error_t (*capture_schedule_with_runloop)(platform_camera_t *); #endif } platform_dispatch_t; #endif