-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
268int ptp_write_unicode_string(
char *dat,
char *
string);
-
269int ptp_read_unicode_string(
char *buffer,
char *dat,
int max);
-
270int ptp_read_utf8_string(
void *dat,
char *
string,
int max);
-
271int ptp_read_string(uint8_t *dat,
char *
string,
int max);
-
272int ptp_write_string(uint8_t *dat,
char *
string);
-
273int ptp_write_utf8_string(
void *dat,
char *
string);
-
274int ptp_read_uint16_array(uint8_t *dat, uint16_t *buf,
int max,
int *length);
-
275inline static int ptp_write_u8 (
void *buf, uint8_t out) { ((uint8_t *)buf)[0] = out;
return 1; }
-
276inline static int ptp_write_u16(
void *buf, uint16_t out) { ((uint16_t *)buf)[0] = out;
return 2; }
-
277inline static int ptp_write_u32(
void *buf, uint32_t out) { ((uint32_t *)buf)[0] = out;
return 4; }
-
278inline static int ptp_read_u32 (
void *buf, uint32_t *out) { *out = ((uint32_t *)buf)[0];
return 4; }
-
279inline static int ptp_read_u16 (
void *buf, uint16_t *out) { *out = ((uint16_t *)buf)[0];
return 2; }
-
280inline static int ptp_read_u8 (
void *buf, uint8_t *out) { *out = ((uint8_t *)buf)[0];
return 1; }
-
-
-
-
-
-
-
-
-
289int ptpip_data_start_packet(
struct PtpRuntime *r,
int data_length);
-
290int ptpip_data_end_packet(
struct PtpRuntime *r,
void *
data,
int data_length);
-
-
-
293void ptp_update_transaction(
struct PtpRuntime *r,
int t);
+
263int ptp_write_unicode_string(
char *dat,
char *
string);
+
264int ptp_read_unicode_string(
char *buffer,
char *dat,
int max);
+
265int ptp_read_utf8_string(
void *dat,
char *
string,
int max);
+
266int ptp_read_string(uint8_t *dat,
char *
string,
int max);
+
267int ptp_write_string(uint8_t *dat,
char *
string);
+
268int ptp_write_utf8_string(
void *dat,
char *
string);
+
269int ptp_read_uint16_array(uint8_t *dat, uint16_t *buf,
int max,
int *length);
+
270inline static int ptp_write_u8 (
void *buf, uint8_t out) { ((uint8_t *)buf)[0] = out;
return 1; }
+
271inline static int ptp_write_u16(
void *buf, uint16_t out) { ((uint16_t *)buf)[0] = out;
return 2; }
+
272inline static int ptp_write_u32(
void *buf, uint32_t out) { ((uint32_t *)buf)[0] = out;
return 4; }
+
273inline static int ptp_read_u32 (
void *buf, uint32_t *out) { *out = ((uint32_t *)buf)[0];
return 4; }
+
274inline static int ptp_read_u16 (
void *buf, uint16_t *out) { *out = ((uint16_t *)buf)[0];
return 2; }
+
275inline static int ptp_read_u8 (
void *buf, uint8_t *out) { *out = ((uint8_t *)buf)[0];
return 1; }
+
+
+
+
+
+
+
+
+
284int ptpip_data_start_packet(
struct PtpRuntime *r,
int data_length);
+
285int ptpip_data_end_packet(
struct PtpRuntime *r,
void *
data,
int data_length);
+
+
+
288void ptp_update_transaction(
struct PtpRuntime *r,
int t);
+
+
+
291void ptp_set_prop_avail_info(
struct PtpRuntime *r,
int code,
int memb_size,
int cnt,
void *
data);
+
+
-
-
296void ptp_set_prop_avail_info(
struct PtpRuntime *r,
int code,
int memb_size,
int cnt,
void *
data);
+
+
-
-
-
-
-
-
303#define CAMLIB_INCLUDE_IMPL
-
-
305#include "cl_backend.h"
-
-
-
-
-
-
311#ifndef CAMLIB_NO_COMPAT
-
312 #define ptp_get_last_transaction(...) ptp_get_last_transaction_id(__VA_ARGS__)
-
313 #define ptp_generic_new(...) ptp_new(__VA_ARGS__)
-
314 #define ptp_generic_close(...) ptp_close(__VA_ARGS__)
-
315 #define ptp_generic_reset(...) ptp_reset(__VA_ARGS__)
-
316 #define ptp_generic_init(...) ptp_init(__VA_ARGS__)
-
317 #define ptp_generic_send(...) ptp_send(__VA_ARGS__)
-
318 #define ptp_generic_send_data(...) ptp_send_data(__VA_ARGS__)
-
-
-
+
298#define CAMLIB_INCLUDE_IMPL
+
+
300#include "cl_backend.h"
+
+
+
+
+
+
306#ifndef CAMLIB_NO_COMPAT
+
307 #define ptp_get_last_transaction(...) ptp_get_last_transaction_id(__VA_ARGS__)
+
308 #define ptp_generic_new(...) ptp_new(__VA_ARGS__)
+
309 #define ptp_generic_close(...) ptp_close(__VA_ARGS__)
+
310 #define ptp_generic_reset(...) ptp_reset(__VA_ARGS__)
+
311 #define ptp_generic_init(...) ptp_init(__VA_ARGS__)
+
312 #define ptp_generic_send(...) ptp_send(__VA_ARGS__)
+
313 #define ptp_generic_send_data(...) ptp_send_data(__VA_ARGS__)
+
+
+
const char * ptp_perror(int rc)
Evaluates PtpGeneralError into string message.
-
PtpConnType
Tells lib what backend and packet style to use.
Definition camlib.h:84
-
PtpGeneralError
Camlib library errors, not PTP return codes.
Definition camlib.h:40
-
PtpVendors
Unique camera types - each type should have similar opcodes and behavior.
Definition camlib.h:64
+
PtpConnType
Tells lib what backend and packet style to use.
Definition camlib.h:79
+
PtpGeneralError
Camlib library errors, not PTP return codes.
Definition camlib.h:34
+
PtpVendors
Unique camera types - each type should have similar opcodes and behavior.
Definition camlib.h:59
-
Generic Struct for arrays.
Definition camlib.h:169
-
Generic PTP command structure - accepted by operation API.
Definition camlib.h:161
-
Generic event / property change.
Definition camlib.h:153
-
Linked list to handle currently possible values for a property.
Definition camlib.h:91
-
Holds all camlib instance info.
Definition camlib.h:102
+
Generic Struct for arrays.
Definition camlib.h:164
+
Generic PTP command structure - accepted by operation API.
Definition camlib.h:156
+
Generic event / property change.
Definition camlib.h:148
+
Linked list to handle currently possible values for a property.
Definition camlib.h:86
+
Holds all camlib instance info.
Definition camlib.h:97
struct PtpRuntime * ptp_new(int options)
Allocate new PtpRuntime based on bitfield options - see PtpConnType.
void ptp_reset(struct PtpRuntime *r)
Reset all session-specific fields of PtpRuntime - both libusb and libwpd backends call this before es...
-
uint8_t io_kill_switch
Set to 1 to kill all IO operations. By default, this is 1. When a valid connection is achieved by lib...
Definition camlib.h:106
+
uint8_t io_kill_switch
Set to 1 to kill all IO operations. By default, this is 1. When a valid connection is achieved by lib...
Definition camlib.h:101
int ptp_send_data(struct PtpRuntime *r, struct PtpCommand *cmd, void *data, int length)
Send a command request to the device with a data phase (thread safe)
int ptp_get_param_length(struct PtpRuntime *r)
Get number of parameters in packet in data buffer.
-
uint8_t response_wait_default
Default value for wait_for_response.
Definition camlib.h:145
+
uint8_t response_wait_default
Default value for wait_for_response.
Definition camlib.h:140
void ptp_close(struct PtpRuntime *r)
Frees PtpRuntime data buffer - doesn't free the actual structure, or device info (yet)
int ptp_get_event(struct PtpRuntime *r, struct PtpEventContainer *ec)
Try and get an event from the camera over int endpoint (USB-only)
int ptp_get_return_code(struct PtpRuntime *r)
Returns the return code (RC) currently in the data buffer.
-
void * comm_backend
For session comm/io structures (holds backend instance pointers)
Definition camlib.h:135
+
void * comm_backend
For session comm/io structures (holds backend instance pointers)
Definition camlib.h:130
int ptp_check_prop(struct PtpRuntime *r, int code)
Check if a property code is supported by looking through supported props in r->di.
int ptp_send(struct PtpRuntime *r, struct PtpCommand *cmd)
Send a command request to the device with no data phase.
void ptp_init(struct PtpRuntime *r)
Init PtpRuntime locally - uses default recommended settings (USB)
-
uint8_t * data
Global buffer for data reading and writing.
Definition camlib.h:118
+
uint8_t * data
Global buffer for data reading and writing.
Definition camlib.h:113
int ptp_get_payload_length(struct PtpRuntime *r)
Get length of payload returned by ptp_get_payload.
uint8_t * ptp_get_payload(struct PtpRuntime *r)
Get ptr of packet payload in data buffer, after packet header.
-
struct PtpPropAvail * avail
For devices that implement it, this will hold a linked list of properties and an array of their suppo...
Definition camlib.h:149
+
struct PtpPropAvail * avail
For devices that implement it, this will hold a linked list of properties and an array of their suppo...
Definition camlib.h:144
int ptp_get_last_transaction_id(struct PtpRuntime *r)
Get transaction ID of packet in the data buffer.
-
int transaction
Definition camlib.h:113
+
int transaction
Definition camlib.h:108
void ptp_mutex_keep_locked(struct PtpRuntime *r)
Keep the mutex locked one more time for the current thread.
void ptp_mutex_lock(struct PtpRuntime *r)
Lock the IO mutex - only should be used by backend.
-
int max_packet_size
Definition camlib.h:123
-
pthread_mutex_t * mutex
Optional (see CAMLIB_DONT_USE_MUTEX)
Definition camlib.h:138
-
int data_phase_length
For Windows compatibility, this is set to indicate lenth for a data packet that will be sent after a ...
Definition camlib.h:132
+
int max_packet_size
Definition camlib.h:118
+
pthread_mutex_t * mutex
Optional (see CAMLIB_DONT_USE_MUTEX)
Definition camlib.h:133
+
int data_phase_length
For Windows compatibility, this is set to indicate lenth for a data packet that will be sent after a ...
Definition camlib.h:127
int ptp_buffer_resize(struct PtpRuntime *r, size_t size)
Mostly for internal use - realloc the data buffer.
uint32_t ptp_get_param(struct PtpRuntime *r, int i)
Get parameter at index i.
-
struct PtpDeviceInfo * di
Info about current connection, used to detect camera type, supported opodes, etc.
Definition camlib.h:127
-
uint8_t wait_for_response
Optionally wait up to 256 seconds for a response. Some PTP operations require this,...
Definition camlib.h:142
+
struct PtpDeviceInfo * di
Info about current connection, used to detect camera type, supported opodes, etc.
Definition camlib.h:122
+
uint8_t wait_for_response
Optionally wait up to 256 seconds for a response. Some PTP operations require this,...
Definition camlib.h:137
int ptp_check_opcode(struct PtpRuntime *r, int opcode)
Check if an opcode is supported by looking through supported props in r->di.
-
uint8_t connection_type
One of enum PtpConnType.
Definition camlib.h:110
+
uint8_t connection_type
One of enum PtpConnType.
Definition camlib.h:105
void ptp_mutex_unlock(struct PtpRuntime *r)
Unlock the IO mutex (unless it was kept locked)
int ptp_device_type(struct PtpRuntime *r)
Gets type of device from r->di.