summaryrefslogtreecommitdiff
path: root/camlibs/largan
diff options
context:
space:
mode:
authorHubert Figuiere <hub@figuiere.net>2003-01-29 22:01:36 +0000
committerHubert Figuiere <hub@figuiere.net>2003-01-29 22:01:36 +0000
commitce2daa2e558b4f1c19958916efc03773bc63b58f (patch)
treed134f3294ae9f4ee90fe2b4ac25ce0eb47eaec0e /camlibs/largan
parent5ae2c2fcda3cf8aae97c6f0b05cfa0b292cb4d63 (diff)
downloadlibgphoto2-ce2daa2e558b4f1c19958916efc03773bc63b58f.tar.gz
Various fixes/improvements
git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@6160 67ed7778-7388-44ab-90cf-0a291f65f57c
Diffstat (limited to 'camlibs/largan')
-rw-r--r--camlibs/largan/lmini/ChangeLog7
-rw-r--r--camlibs/largan/lmini/largan.c2
-rw-r--r--camlibs/largan/lmini/lmini.c46
3 files changed, 47 insertions, 8 deletions
diff --git a/camlibs/largan/lmini/ChangeLog b/camlibs/largan/lmini/ChangeLog
index e6fcfd371..e40c3c7a9 100644
--- a/camlibs/largan/lmini/ChangeLog
+++ b/camlibs/largan/lmini/ChangeLog
@@ -1,3 +1,10 @@
+2003-01-29 Hubert Figuiere <hfiguiere@teaser.fr>
+
+ * lmini.c: changed packet handling. More debug. Better return code
+ checking. (still untested).
+
+ * largan.c (camera_id): changed camlib ID.
+
2002-10-31 Marcus Meissner <meissner@suse.de>
* fixed compiler warnings, got rid of unnecessary global variables
diff --git a/camlibs/largan/lmini/largan.c b/camlibs/largan/lmini/largan.c
index 53da68e44..854d7569c 100644
--- a/camlibs/largan/lmini/largan.c
+++ b/camlibs/largan/lmini/largan.c
@@ -56,7 +56,7 @@ static uint8_t convert_name_to_index (const char * name);
int
camera_id (CameraText *id)
{
- strcpy(id->text, "largan");
+ strcpy(id->text, "largan-lmini");
return (GP_OK);
}
diff --git a/camlibs/largan/lmini/lmini.c b/camlibs/largan/lmini/lmini.c
index 3107161b0..f341a9f5c 100644
--- a/camlibs/largan/lmini/lmini.c
+++ b/camlibs/largan/lmini/lmini.c
@@ -44,8 +44,8 @@ static struct largan_baud_rate {
int baud;
char value; /* value to be sent in the protocol */
} bauds [] = {
+ {19200, 0x02 }, /* default */
{38400, 0x03 },
- {19200, 0x02 },
{ 9600, 0x01 },
{ 4800, 0x00 },
{ 0, 0x00 }
@@ -117,14 +117,17 @@ int largan_get_num_pict (Camera * camera)
ret = largan_send_command (camera, LARGAN_NUM_PICT_CMD, 0, 0);
if (ret < 0) {
+ GP_DEBUG ("largan_send_command() failed: %d\n", ret);
return -1;
}
ret = largan_recv_reply (camera, &reply, &code, NULL);
if (ret < 0) {
+ GP_DEBUG ("largan_recv_reply() failed: %d\n", ret);
return -1;
}
if (reply != LARGAN_NUM_PICT_CMD) {
+ GP_DEBUG ("Reply incorrect\n");
return -1;
}
return code;
@@ -339,20 +342,44 @@ static int largan_recv_reply (Camera * camera, uint8_t *reply,
{
int ret;
uint8_t packet [4];
+ uint8_t packet_size = 0;
memset (packet, 0, sizeof (packet));
- ret = gp_port_read (camera->port, packet, sizeof(packet));
+ ret = gp_port_read (camera->port, packet, 1);
if (ret < GP_OK) {
return ret;
}
+ switch (packet[0])
+ {
+ case LARGAN_NUM_PICT_CMD:
+ packet_size = 2;
+ break;
+ case LARGAN_GET_PICT_CMD:
+ packet_size = 3;
+ break;
+ case LARGAN_BAUD_ERASE_CMD:
+ packet_size = 2;
+ break;
+ case LARGAN_CAPTURE_CMD:
+ packet_size = 3;
+ break;
+ default:
+ packet_size = 0;
+ GP_DEBUG("Unkown reply.\n");
+ break;
+ }
if (reply) {
*reply = packet[0];
}
- if (code) {
- *code = packet[1];
+ if (packet_size >= 2) {
+ if (code) {
+ *code = packet[1];
+ }
}
- if (code2) {
- *code2 = packet[2];
+ if (packet_size >= 3) {
+ if (code2) {
+ *code2 = packet[2];
+ }
}
return ret;
}
@@ -363,6 +390,7 @@ static int largan_recv_reply (Camera * camera, uint8_t *reply,
static int largan_send_command (Camera * camera, uint8_t cmd, uint8_t param1,
uint8_t param2)
{
+ uint8_t packet_size = 0;
uint8_t packet [3];
memset (&packet, 0, sizeof (packet));
@@ -370,6 +398,7 @@ static int largan_send_command (Camera * camera, uint8_t cmd, uint8_t param1,
switch (cmd) {
case LARGAN_NUM_PICT_CMD:
+ packet_size = 1;
break;
case LARGAN_GET_PICT_CMD:
if ((param1 != 0) && (param1 != 1)) {
@@ -378,6 +407,7 @@ static int largan_send_command (Camera * camera, uint8_t cmd, uint8_t param1,
}
packet[1] = param1;
packet[2] = param2;
+ packet_size = 3;
break;
case LARGAN_BAUD_ERASE_CMD:
if ((param1 > 0x11) || ((param1 > 0x03) && (param1 < 0x10))) {
@@ -385,15 +415,17 @@ static int largan_send_command (Camera * camera, uint8_t cmd, uint8_t param1,
return GP_ERROR; /* wrong parameter */
}
packet[1] = param1;
+ packet_size = 2;
break;
case LARGAN_CAPTURE_CMD:
+ packet_size = 1;
break;
default:
GP_DEBUG ("unknown command\n");
return GP_ERROR; /* unknown command */
}
- return gp_port_write (camera->port, packet, sizeof (packet));
+ return gp_port_write (camera->port, packet, packet_size);
}