From fe66e938aec8590d85c9e19d6ead6592cfc0ec64 Mon Sep 17 00:00:00 2001 From: Daniel C Date: Mon, 20 Nov 2023 23:36:33 -0500 Subject: [PATCH] Remove old unused fuji implementation Mostly wasn't used, or had been improved in the fudge repo --- src/cl_ops.h | 10 ----- src/conv.c | 2 +- src/fuji.c | 123 --------------------------------------------------- src/ip.c | 2 - 4 files changed, 1 insertion(+), 136 deletions(-) delete mode 100644 src/fuji.c diff --git a/src/cl_ops.h b/src/cl_ops.h index 6c3be8f..571a628 100644 --- a/src/cl_ops.h +++ b/src/cl_ops.h @@ -86,16 +86,6 @@ int ptp_ml_get_bmp_lv(struct PtpRuntime *r, uint32_t **buffer_ptr); int ptp_chdk_get_version(struct PtpRuntime *r); int ptp_chdk_upload_file(struct PtpRuntime *r, char *input, char *dest); -// Fuji vendor version of SendObjectInfo - same as standard, but no parameters -int ptp_fuji_send_object_info(struct PtpRuntime *r, struct PtpObjectInfo *oi); -int ptp_fuji_send_object(struct PtpRuntime *r, struct PtpObjectInfo *oi, void *data, int length); - -// Fujifilm IP-only functions -int ptpip_fuji_init(struct PtpRuntime *r, char *device_name); -int ptpip_fuji_get_events(struct PtpRuntime *r); -int ptpip_fuji_wait_unlocked(struct PtpRuntime *r); -int ptpip_fuji_get_object_info(struct PtpRuntime *r, uint32_t handle, struct PtpFujiObjectInfo *oi); - // Canon advanced extensions - available in canon-adv.c int ptp_eos_activate_command(struct PtpRuntime *r); int ptp_eos_exec_evproc(struct PtpRuntime *r, void *data, int length, int expect_return); diff --git a/src/conv.c b/src/conv.c index a77fc88..e27c602 100644 --- a/src/conv.c +++ b/src/conv.c @@ -156,7 +156,7 @@ struct CanonAperture { int value; int data; }canon_aperture[] = { - {12, 0xd}, + {12, 0xd}, // TODO: standard PTP scales this by 100 {14, 0x10}, {16, 0x13}, {18, 0x15}, diff --git a/src/fuji.c b/src/fuji.c deleted file mode 100644 index 58959b6..0000000 --- a/src/fuji.c +++ /dev/null @@ -1,123 +0,0 @@ -// Basic implementation of Fujifilm WiFi and USB functions -// Copyright 2023 by Daniel C (https://github.com/petabyt/camlib) - -#include -#include -#include - -#define FUJI_PROTOCOL_VERSION 0x8f53e4f2 - -// TODO: 902b device info implementation - -// PTP vendor version of SendObjectInfo (USB & IP) -int ptp_fuji_send_object_info(struct PtpRuntime *r, struct PtpObjectInfo *oi) { - struct PtpCommand cmd; - cmd.code = PTP_OC_FUJI_SendObjectInfo; - cmd.param_length = 0; - - char temp[1024]; - void *data = temp; - int length = ptp_pack_object_info(r, oi, &data, sizeof(temp)); - if (length == 0) { - return PTP_OUT_OF_MEM; - } - - return ptp_generic_send_data(r, &cmd, temp, length); -} - -// PTP vendor version of SendObject (USB & IP) -int ptp_fuji_send_object(struct PtpRuntime *r, struct PtpObjectInfo *oi, void *data, int length) { - struct PtpCommand cmd; - cmd.code = PTP_OC_FUJI_SendObject; - cmd.param_length = 0; - - return ptp_generic_send_data(r, &cmd, data, length); -} - -int ptpip_fuji_init(struct PtpRuntime *r, char *device_name) { - struct FujiInitPacket *p = (struct FujiInitPacket *)r->data; - memset(p, 0, sizeof(struct FujiInitPacket)); - p->length = 0x52; - p->type = PTPIP_INIT_COMMAND_REQ; - - p->version = FUJI_PROTOCOL_VERSION; - - p->guid1 = 0x5d48a5ad; - p->guid2 = 0xb7fb287; - p->guid3 = 0xd0ded5d3; - p->guid4 = 0x0; - - ptp_write_unicode_string(p->device_name, device_name); - - if (ptpip_cmd_write(r, r->data, p->length) != p->length) return PTP_IO_ERR; - - // Read the packet size, then receive the rest - int x = ptpip_cmd_read(r, r->data, 4); - if (x < 0) return PTP_IO_ERR; - x = ptpip_cmd_read(r, r->data + 4, p->length - 4); - if (x < 0) return PTP_IO_ERR; - - if (ptp_get_return_code(r) == 0x0) { - return 0; - } else { - return PTP_IO_ERR; - } -} - -int ptpip_fuji_get_events(struct PtpRuntime *r) { - int rc = ptp_get_prop_value(r, PTP_PC_FUJI_EventsList); - if (rc) return rc; - - struct PtpFujiEvents *ev = (struct PtpFujiEvents *)(ptp_get_payload(r)); - ptp_verbose_log("Found %d events\n", ev->length); - for (int i = 0; i < ev->length; i++) { - ptp_verbose_log("%X changed to %d\n", ev->events[i].code, ev->events[i].value); - } - return 0; -} - -int ptpip_fuji_wait_unlocked(struct PtpRuntime *r) { - int rc = ptp_get_prop_value(r, PTP_PC_FUJI_CameraState); - if (rc) { - return rc; - } - - // If PTP_PC_FUJI_Unlocked is non-zero, that means it doesn't need to be polled - int value = ptp_parse_prop_value(r); - if (value != 0) { - // Set the value back to let the camera know the software supports it - rc = ptp_set_prop_value(r, PTP_PC_FUJI_CameraState, value); - return rc; - } - - while (1) { - rc = ptp_get_prop_value(r, PTP_PC_FUJI_EventsList); - if (rc) { - return rc; - } - - // Apply events structure to payload, and check for unlocked event (PTP_PC_FUJI_Unlocked) - struct PtpFujiEvents *ev = (struct PtpFujiEvents *)(ptp_get_payload(r)); - for (int i = 0; i < ev->length; i++) { - if (ev->events[i].code == PTP_PC_FUJI_CameraState && (ev->events[i].value != 0x0)) { - return 0; - } - } - - CAMLIB_SLEEP(100); - } -} - -int ptpip_fuji_get_object_info(struct PtpRuntime *r, uint32_t handle, struct PtpFujiObjectInfo *oi) { - struct PtpCommand cmd; - cmd.code = PTP_OC_GetObjectInfo; - cmd.param_length = 1; - cmd.params[0] = handle; - - int x = ptp_generic_send(r, &cmd); - if (x) { - return x; - } else { - return ptp_fuji_parse_object_info(r, oi); - } -} diff --git a/src/ip.c b/src/ip.c index ba1246e..72a4057 100644 --- a/src/ip.c +++ b/src/ip.c @@ -137,7 +137,6 @@ int ptpip_close(struct PtpRuntime *r) { int ptpip_cmd_write(struct PtpRuntime *r, void *data, int size) { int result = write(r->fd, data, size); - //printf("cmd: write %d bytes\n", result); //for (int i = 0; i < result; i++) { printf("%02X ", ((uint8_t *)data)[i]); } puts(""); if (result < 0) { return -1; @@ -148,7 +147,6 @@ int ptpip_cmd_write(struct PtpRuntime *r, void *data, int size) { int ptpip_cmd_read(struct PtpRuntime *r, void *data, int size) { int result = read(r->fd, data, size); - printf("cmd: Read %d bytes\n", result); //for (int i = 0; i < result; i++) { printf("%02X ", ((uint8_t *)data)[i]); } puts(""); if (result < 0) { return -1;