[PATCH 04/11] Add a helper to put the OSTC3 into servicemode

Jef Driesen jef at libdivecomputer.org
Mon Dec 15 08:22:32 PST 2014


On 21-11-14 21:28, Anton Lundin wrote:
> diff --git a/src/hw_ostc3.c b/src/hw_ostc3.c
> index 7fa38f8..4d6bf83 100644
> --- a/src/hw_ostc3.c
> +++ b/src/hw_ostc3.c
> @@ -50,6 +50,7 @@
>   #define RB_LOGBOOK_SIZE  256
>   #define RB_LOGBOOK_COUNT 256
>
> +#define S_READY    0x4C
>   #define READY      0x4D
>   #define HEADER     0x61
>   #define CLOCK      0x62
> @@ -71,6 +72,7 @@ typedef struct hw_ostc3_device_t {
>   		NONE,
>   		OPEN,
>   		DOWNLOAD,
> +		SERVICE,
>   	} state;
>   } hw_ostc3_device_t;
>
> @@ -196,7 +198,7 @@ hw_ostc3_transfer (hw_ostc3_device_t *device,
>   		}
>
>   		// Verify the ready byte.
> -		if (ready[0] != READY) {
> +		if (!(ready[0] == READY || ready[0] == S_READY)) {
>   			ERROR (abstract->context, "Unexpected ready byte.");
>   			return DC_STATUS_PROTOCOL;
>   		}

I assume in service mode, S_READY is returned instead of READY? If that's 
correct, then I think it's better to accept only the correct one. Something like 
this:

unsigned char expected = (device->state == SERVICE ? S_READY : READY);
if (ready[0] != expected) {
     ...
}

Jef


More information about the devel mailing list