summaryrefslogtreecommitdiff
path: root/bits.h
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2016-03-30 14:00:04 -0700
committerGary E. Miller <gem@rellim.com>2016-03-30 14:00:04 -0700
commitd9734d0886e2494893a86501055caa66d011b54c (patch)
tree4ceb405180f5dc37bf6d823865c7947add36eccb /bits.h
parentc1ebee4943bd799921d0366c07fddb4eb80be83a (diff)
downloadgpsd-d9734d0886e2494893a86501055caa66d011b54c.tar.gz
Add getbeu24() to grab a 24 bit big endian word from a buffer.
GPS subframe data comes in 24 bit words.
Diffstat (limited to 'bits.h')
-rw-r--r--bits.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/bits.h b/bits.h
index f4df6002..8b79c56e 100644
--- a/bits.h
+++ b/bits.h
@@ -41,6 +41,7 @@ extern double getled64(const char *, int);
/* big-endian access */
#define getbes16(buf, off) ((int16_t)(((uint16_t)getub(buf, (off)) << 8) | (uint16_t)getub(buf, (off)+1)))
#define getbeu16(buf, off) ((uint16_t)(((uint16_t)getub(buf, (off)) << 8) | (uint16_t)getub(buf, (off)+1)))
+#define getbeu24(buf, off) ((uint32_t)(((uint16_t)getbeu16(buf, (off)) << 8) | getub(buf, (off)+2)))
#define getbes32(buf, off) ((int32_t)(((uint16_t)getbeu16(buf, (off)) << 16) | getbeu16(buf, (off)+2)))
#define getbeu32(buf, off) ((uint32_t)(((uint16_t)getbeu16(buf, (off)) << 16) | getbeu16(buf, (off)+2)))
#define getbes64(buf, off) ((int64_t)(((uint64_t)getbeu32(buf, (off)) << 32) | getbeu32(buf, (off)+4)))