Various fixes/improvements

git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@6160 67ed7778-7388-44ab-90cf-0a291f65f57c
This commit is contained in:
Hubert Figuiere
2003-01-29 22:01:36 +00:00
parent 5ae2c2fcda
commit ce2daa2e55
3 changed files with 47 additions and 8 deletions

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);
}