From 8ad61ce3a1ac60f62d792c26831a7413ab573d79 Mon Sep 17 00:00:00 2001 From: "sophia.papagiannaki" Date: Tue, 28 Jul 2020 15:12:47 +0200 Subject: Working copy for testing on Windows. --- o3000.c | 28 ++++++++++++++++------------ o3000_upgrade.c | 7 +++---- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/o3000.c b/o3000.c index 37c0ab7..12c5ff1 100644 --- a/o3000.c +++ b/o3000.c @@ -869,23 +869,25 @@ int __stdcall o3000_send_xml(int id, const char *msg, int msg_len) { } /** - * Check whether all connections are closed. + * Get the number of open sessions. * - * @return 0 if all sessions are closed, error code otherwise defined at @ref o3000.h. + * @return number of open sessions */ -static int check_sessions(void) { - int i; +static int get_num_open_sessions(void) { + int i, num_sessions = 0; for(i = 0; i < MAX_NUM_SESSION; i++) { if(session_table[i] != NULL) { - break; + num_sessions ++; } } - if (i < MAX_NUM_SESSION) { - printf("%s: Session %d is still open.\n", __func__, i); - return O3000_ERROR_SESSION_STILL_OPEN; - } - return 0; + return num_sessions; + +// if (i < MAX_NUM_SESSION) { +// printf("%s: Session %d is still open.\n", __func__, i); +// return O3000_ERROR_SESSION_STILL_OPEN; +// } +// return 0; } /** @@ -897,7 +899,7 @@ static int check_sessions(void) { */ int __stdcall o3000_firmware_update(unsigned char *data, int data_len) { - int ret = 0; + int ret = 0, num_sessions; // paranoia checks if(data == NULL) { @@ -912,7 +914,9 @@ int __stdcall o3000_firmware_update(unsigned char *data, int data_len) { } // checking whether all connections are closed - if ((ret = check_sessions())) { + num_sessions = get_num_open_sessions(); + if (num_sessions > 0) { + ret = O3000_ERROR_SESSION_STILL_OPEN; printf("%s: Cannot proceed to firmware update: error code: %d.\n", __func__, ret); return ret; } diff --git a/o3000_upgrade.c b/o3000_upgrade.c index 264afc1..700a280 100644 --- a/o3000_upgrade.c +++ b/o3000_upgrade.c @@ -1,6 +1,8 @@ /** * @file o3000_upgrade.c * @brief O-3000 firmware upgrade +* @author Patrick Roth - roth@stettbacher.ch +* @author Patrick Brunner - brunner@stettbacher.ch * @author Sophia Papagiannaki - papagiannaki@stettbacher.ch * @version 0.1 * @date 2020-05-12 @@ -62,9 +64,6 @@ const char* app_ids[] = { "Camera O-3120", // global shutter, color version }; -const uint16_t vid = 0x0483; -const uint16_t pid = 0xA098; - static struct cam_usb_t { struct libusb_context *ctx; // libusb context struct libusb_device_handle *dev_handle; // the USB device handle @@ -225,7 +224,7 @@ static enum cam_mode_t usb_open(void) // If the camera has just performed a reset, it might not be ready yet. // We try MAX_RETRIES times, before we give up. while(retries > 0) { - if((cam_usb.dev_handle = libusb_open_device_with_vid_pid(cam_usb.ctx, vid, pid)) == NULL) { + if((cam_usb.dev_handle = libusb_open_device_with_vid_pid(cam_usb.ctx, O3000_VID, O3000_PID)) == NULL) { printf("retry: %d\n",retries); retries--; sleep(1); -- cgit v1.2.1