This driver is for the Canon PowerShot series. It works with the
following models:
- Powershot A5
- Powershot A5 Zoom
- Powershot A50
- Powershot S10
- Powershot S20
It doesn't work with the PowerShot 350. However, the PS350 uses a
vaguely similar protocol, so some parts of the sources can probably be
shared.
The driver caches a lot of information. If the camera status changes
during a session or if the driver gets stuck for some other reason,
the caches can be manually flushed using "Configure camera".
Change history
==============
Version 7 (25-JULY-2000)
---------
- Ported to gphoto2
Version 6 (19-MAY-2000)
---------
- Included USB support in the driver
- More options in the configuration file
- Debug output can be mostly disabled
- The driver now sets the "downloaded" bit on downloaded images
Version 5 (09-MAY-2000)
---------
- Support for full-speed transfers (115200)
- Most protocol commands are implemented, or at least discovered (see
the 'Protocol' file)
- USB protocol description
- Get/Set owner name
- Get date
- Get firmware rev.
- Get battery status
- Use libgpio for serial transfers
- More reliable error recovery
- Better configuration dialog
- Support for all current powershot models (A5 to S20)
- Low battery condition detection
Version 4 (3-SEP-1999)
---------
- changed uint16_t to unsigned short and removed inclusion of stdint.h, for
compatibility :-(
Version 3 (1-SEP-1999)
---------
- lowered number of tries when initializing from 50 to 10 (50 was for
experiments)
- increased camera ID buffer to be large enough for PS350 responses
- serial input is now flushed before testing or attempting synchronization
- directories are now sorted alphabetically, implicitly ordering images by
date
- fixed a few memory leaks in directory handling
- added arbitrary file download to Configure/Configure Camera (experimental;
very fragile)
Version 2 (29-AUG-1999)
---------
- integrated into gphoto-2.3.5 (from CVS)
- added support for large directories (listing occupies > 1 message)
- receive timeout is now raised from 1 to 10 seconds after first response
- renamed a50_select_disk to a50_disk_info. It now returns disk capacity
and available space.
- completed CRC table
- properly integrated into gPhoto
- lots of cleanups
Version 1 (27-AUG-1999)
---------
- a little bit of code cleanup, added a50.h, doc/, full recursive download
in canon.c, and fixed a few documentation bugs, adjusted send/receive
buffers
- a50_send_msg incremented seq_tx when skipping retransissions while waiting
for ACK
Version 0 (27-AUG-1999)
---------
- initial release which demonstrates most functions in a way that's
completely useless for gPhoto
To do
=====
- code structure is still pretty ugly. Things that absolutely need fixing:
- command codes and fffbs are spread all over the place
- "ping" (empty message) should probably be merged into normal message
handling; perhaps also 03 message -> wait_for_ack can be merged too
- psa50.c must not invoke GUI functions
- change many fprintf(stderr,... to GUI calls or callbacks
- improve error handling: distinguish between severe and harmless errors
(e.g. duplicate EOT vs. ten timeouts in a row)
- find out how error recovery works (need traces)
- get traces for other operations:
- idle period/restart (keepalive ?)
- upload file, create directory
- find out how to avoid blocking gPhoto during transfer