aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-10-07 22:25:03 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-10-07 22:25:03 +0200
commit726b10651aa38f1b542e6f3845da9aaf58af72a2 (patch)
tree234fcf9944fee9e314b3f8b115ff989e0dcb212a /src/lib
parent6436db1a99888aff3802008c91f8a6c151f7da9c (diff)
downloadpx4-firmware-726b10651aa38f1b542e6f3845da9aaf58af72a2.tar.gz
px4-firmware-726b10651aa38f1b542e6f3845da9aaf58af72a2.tar.bz2
px4-firmware-726b10651aa38f1b542e6f3845da9aaf58af72a2.zip
ST24: Fix parser return values, update docs
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/rc/st24.c16
-rw-r--r--src/lib/rc/st24.h4
2 files changed, 11 insertions, 9 deletions
diff --git a/src/lib/rc/st24.c b/src/lib/rc/st24.c
index bb42830db..2b2178f97 100644
--- a/src/lib/rc/st24.c
+++ b/src/lib/rc/st24.c
@@ -103,16 +103,18 @@ uint8_t st24_common_crc8(uint8_t *ptr, uint8_t len)
}
-uint8_t st24_decode(uint8_t byte, uint8_t *rssi, uint8_t *rx_count, uint16_t *channel_count, uint16_t *channels,
+int st24_decode(uint8_t byte, uint8_t *rssi, uint8_t *rx_count, uint16_t *channel_count, uint16_t *channels,
uint16_t max_chan_count)
{
- bool ret = false;
+ int ret = 1;
switch (_decode_state) {
case ST24_DECODE_STATE_UNSYNCED:
if (byte == ST24_STX1) {
_decode_state = ST24_DECODE_STATE_GOT_STX1;
+ } else {
+ ret = 3;
}
break;
@@ -163,7 +165,7 @@ uint8_t st24_decode(uint8_t byte, uint8_t *rssi, uint8_t *rx_count, uint16_t *ch
if (st24_common_crc8((uint8_t *) & (_rxpacket.length), _rxlen) == _rxpacket.crc8) {
- ret = true;
+ ret = 0;
/* decode the actual packet */
@@ -225,23 +227,23 @@ uint8_t st24_decode(uint8_t byte, uint8_t *rssi, uint8_t *rx_count, uint16_t *ch
// ReceiverFcPacket* d = (ReceiverFcPacket*)&_rxpacket.st24_data;
/* we silently ignore this data for now, as it is unused */
- ret = false;
+ ret = 2;
}
break;
default:
- ret = false;
+ ret = 2;
break;
}
} else {
/* decoding failed */
-
+ ret = 4;
}
_decode_state = ST24_DECODE_STATE_UNSYNCED;
break;
}
- return !ret;
+ return ret;
}
diff --git a/src/lib/rc/st24.h b/src/lib/rc/st24.h
index 1876eabc5..454234601 100644
--- a/src/lib/rc/st24.h
+++ b/src/lib/rc/st24.h
@@ -155,9 +155,9 @@ uint8_t st24_common_crc8(uint8_t *ptr, uint8_t len);
* @param rx_count pointer to a byte where the receive count of packets signce last wireless frame is written back to
* @param channels pointer to a datastructure of size max_chan_count where channel values (12 bit) are written back to
* @param max_chan_count maximum channels to decode - if more channels are decoded, the last n are skipped and success (0) is returned
- * @return 0 for success (a decoded packet), 1 for no packet yet (accumulating), 3 for out of sync, 4 for checksum error
+ * @return 0 for success (a decoded packet), 1 for no packet yet (accumulating), 2 for unknown packet, 3 for out of sync, 4 for checksum error
*/
-__EXPORT uint8_t st24_decode(uint8_t byte, uint8_t *rssi, uint8_t *rx_count, uint16_t *channel_count,
+__EXPORT int st24_decode(uint8_t byte, uint8_t *rssi, uint8_t *rx_count, uint16_t *channel_count,
uint16_t *channels, uint16_t max_chan_count);
__END_DECLS