summaryrefslogtreecommitdiffhomepage
path: root/digital
diff options
context:
space:
mode:
authorNicolas Schodet2013-04-06 15:25:21 +0200
committerNicolas Schodet2013-04-07 15:57:24 +0200
commit5512364835b89c2e2599bd19b76c8b08236fa089 (patch)
treeb2f70aa9b4295a5ebb708da7a4bc241b81341579 /digital
parent88f0b43e4182c156b5fbcd6f1d418e8e5b459493 (diff)
digital/{ai,asserv,mimot}: reserve sequence number 0 for transient commands
Diffstat (limited to 'digital')
-rw-r--r--digital/ai/src/twi_master/twi_master.c7
-rw-r--r--digital/asserv/src/asserv/twi_proto.c4
-rw-r--r--digital/mimot/src/dirty/twi_proto.c4
3 files changed, 9 insertions, 6 deletions
diff --git a/digital/ai/src/twi_master/twi_master.c b/digital/ai/src/twi_master/twi_master.c
index 6029fd1d..a0117f6e 100644
--- a/digital/ai/src/twi_master/twi_master.c
+++ b/digital/ai/src/twi_master/twi_master.c
@@ -217,7 +217,10 @@ twi_master_send_buffer (uint8_t length)
struct twi_master_command_t *c =
&twi_master.pending[TWI_MASTER_PENDING_TAIL];
/* Fill sequence number, compute CRC, store length. */
- c->command[1] = ++twi_master_slaves[c->slave].seq;
+ twi_master_slaves[c->slave].seq++;
+ if (twi_master_slaves[c->slave].seq == 0)
+ twi_master_slaves[c->slave].seq = 1;
+ c->command[1] = twi_master_slaves[c->slave].seq;
c->command[0] = crc_compute (&c->command[1], length + 1);
c->length = length + 2;
/* Add to the list of pending command. */
@@ -234,7 +237,7 @@ twi_master_send_transient_buffer (uint8_t length)
struct twi_master_command_t *c =
&twi_master.pending[TWI_MASTER_PENDING_TAIL];
/* Fill sequence number, compute CRC, store length. */
- c->command[1] = ++twi_master_slaves[c->slave].seq;
+ c->command[1] = 0;
c->command[0] = crc_compute (&c->command[1], length + 1);
c->length = length + 2;
/* Send right now without acknowledgement. */
diff --git a/digital/asserv/src/asserv/twi_proto.c b/digital/asserv/src/asserv/twi_proto.c
index d687be48..686f236b 100644
--- a/digital/asserv/src/asserv/twi_proto.c
+++ b/digital/asserv/src/asserv/twi_proto.c
@@ -119,8 +119,8 @@ twi_proto_callback (u8 *buf, u8 size)
buf += 1;
size -= 1;
}
-
- if (buf[0] == twi_proto.seq)
+ /* Handle sequence number. */
+ if (buf[0] == 0 || buf[0] == twi_proto.seq)
return;
#define c(cmd, size) (cmd)
switch (c (buf[1], 0))
diff --git a/digital/mimot/src/dirty/twi_proto.c b/digital/mimot/src/dirty/twi_proto.c
index f452fdc4..ceecba5f 100644
--- a/digital/mimot/src/dirty/twi_proto.c
+++ b/digital/mimot/src/dirty/twi_proto.c
@@ -100,8 +100,8 @@ twi_proto_callback (u8 *buf, u8 size)
buf += 1;
size -= 1;
}
-
- if (buf[0] == twi_proto.seq)
+ /* Handle sequence number. */
+ if (buf[0] == 0 || buf[0] == twi_proto.seq)
return;
#define c(cmd, size) (cmd)
switch (c (buf[1], 0))