Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed-rtos mbed Xbus
Fork of MTi-1_example by
xbus/xbusutility.c@47:c4610a65dade, 2015-05-21 (annotated)
- Committer:
- Alex Young
- Date:
- Thu May 21 16:32:53 2015 +0200
- Revision:
- 47:c4610a65dade
- Parent:
- 45:67203918bec9
- Child:
- 61:b9d3e7e5ba0c
Minor documentation cleanups
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Alex Young |
18:2073072bad51 | 1 | /*! |
| Alex Young |
18:2073072bad51 | 2 | * \file |
| Alex Young |
18:2073072bad51 | 3 | * \copyright |
| Alex Young |
18:2073072bad51 | 4 | * Copyright (C) Xsens Technologies B.V., 2015. All rights reserved. |
| Alex Young |
18:2073072bad51 | 5 | * |
| Alex Young |
18:2073072bad51 | 6 | * This source code is intended for use only by Xsens Technologies BV and |
| Alex Young |
18:2073072bad51 | 7 | * those that have explicit written permission to use it from |
| Alex Young |
18:2073072bad51 | 8 | * Xsens Technologies BV. |
| Alex Young |
18:2073072bad51 | 9 | * |
| Alex Young |
18:2073072bad51 | 10 | * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY |
| Alex Young |
18:2073072bad51 | 11 | * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE |
| Alex Young |
18:2073072bad51 | 12 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A |
| Alex Young |
18:2073072bad51 | 13 | * PARTICULAR PURPOSE. |
| Alex Young |
18:2073072bad51 | 14 | */ |
| Alex Young |
18:2073072bad51 | 15 | |
| Alex Young |
18:2073072bad51 | 16 | #include "xbusutility.h" |
| Alex Young |
18:2073072bad51 | 17 | |
| Alex Young |
45:67203918bec9 | 18 | /*! |
| Alex Young |
45:67203918bec9 | 19 | * \name Xbus message reading utility functions. |
| Alex Young |
45:67203918bec9 | 20 | * Xbus messages use big-endian representations for multibyte data. |
| Alex Young |
45:67203918bec9 | 21 | * These functions help in reading data from an Xbus message and converting |
| Alex Young |
45:67203918bec9 | 22 | * it to a native type. |
| Alex Young |
45:67203918bec9 | 23 | * |
| Alex Young |
45:67203918bec9 | 24 | * The functions are intended to scan over a message as follows: |
| Alex Young |
47:c4610a65dade | 25 | * \code |
| Alex Young |
45:67203918bec9 | 26 | * void readValues(XbusMessage const* message) |
| Alex Young |
45:67203918bec9 | 27 | * { |
| Alex Young |
45:67203918bec9 | 28 | * uint16_t v1; |
| Alex Young |
45:67203918bec9 | 29 | * uint8_t v2; |
| Alex Young |
45:67203918bec9 | 30 | * uint32_t v3; |
| Alex Young |
45:67203918bec9 | 31 | * uint8_t* dptr = message->data; |
| Alex Young |
45:67203918bec9 | 32 | * dptr = XbusUtility_readU16(&v1, dptr); |
| Alex Young |
45:67203918bec9 | 33 | * dptr = XbusUtility_readU8(&v2, dptr); |
| Alex Young |
45:67203918bec9 | 34 | * dptr = XbusUtility_readU32(&v3, dptr); |
| Alex Young |
45:67203918bec9 | 35 | * } |
| Alex Young |
45:67203918bec9 | 36 | * \endcode |
| Alex Young |
45:67203918bec9 | 37 | * \{ |
| Alex Young |
45:67203918bec9 | 38 | */ |
| Alex Young |
45:67203918bec9 | 39 | /*! |
| Alex Young |
45:67203918bec9 | 40 | * \brief Read a uint8_t value from an Xbus message. |
| Alex Young |
45:67203918bec9 | 41 | */ |
| Alex Young |
18:2073072bad51 | 42 | uint8_t const* XbusUtility_readU8(uint8_t* out, uint8_t const* in) |
| Alex Young |
18:2073072bad51 | 43 | { |
| Alex Young |
18:2073072bad51 | 44 | *out = *in; |
| Alex Young |
18:2073072bad51 | 45 | return ++in; |
| Alex Young |
18:2073072bad51 | 46 | } |
| Alex Young |
18:2073072bad51 | 47 | |
| Alex Young |
45:67203918bec9 | 48 | /*! \brief Read a uint16_t value from an Xbus message. */ |
| Alex Young |
18:2073072bad51 | 49 | uint8_t const* XbusUtility_readU16(uint16_t* out, uint8_t const* in) |
| Alex Young |
18:2073072bad51 | 50 | { |
| Alex Young |
18:2073072bad51 | 51 | *out = (in[0] << 8) | in[1]; |
| Alex Young |
18:2073072bad51 | 52 | return in + sizeof(uint16_t); |
| Alex Young |
18:2073072bad51 | 53 | } |
| Alex Young |
18:2073072bad51 | 54 | |
| Alex Young |
45:67203918bec9 | 55 | /*! \brief Read a uint32_t value from an Xbus message. */ |
| Alex Young |
18:2073072bad51 | 56 | uint8_t const* XbusUtility_readU32(uint32_t* out, uint8_t const* in) |
| Alex Young |
18:2073072bad51 | 57 | { |
| Alex Young |
18:2073072bad51 | 58 | *out = (in[0] << 24) | (in[1] << 16) | (in[2] << 8) | in[3]; |
| Alex Young |
18:2073072bad51 | 59 | return in + sizeof(uint32_t); |
| Alex Young |
18:2073072bad51 | 60 | } |
| Alex Young |
45:67203918bec9 | 61 | /*! \} */ |
| Alex Young |
27:eebe5fc884e3 | 62 | |
| Alex Young |
45:67203918bec9 | 63 | /*! |
| Alex Young |
47:c4610a65dade | 64 | * \name Xbus message writing utility functions. |
| Alex Young |
45:67203918bec9 | 65 | * These functions aid in writing native values to big-endian xbus message |
| Alex Young |
45:67203918bec9 | 66 | * payloads. See corresponding reading functions for further details. |
| Alex Young |
45:67203918bec9 | 67 | * \{ |
| Alex Young |
45:67203918bec9 | 68 | */ |
| Alex Young |
45:67203918bec9 | 69 | /*! \brief Write a uint8_t value to an Xbus message. */ |
| Alex Young |
27:eebe5fc884e3 | 70 | uint8_t* XbusUtility_writeU8(uint8_t* out, uint8_t in) |
| Alex Young |
27:eebe5fc884e3 | 71 | { |
| Alex Young |
27:eebe5fc884e3 | 72 | *out++ = in; |
| Alex Young |
27:eebe5fc884e3 | 73 | return out; |
| Alex Young |
27:eebe5fc884e3 | 74 | } |
| Alex Young |
27:eebe5fc884e3 | 75 | |
| Alex Young |
45:67203918bec9 | 76 | /*! \brief Write a uint16_t value to an Xbus message. */ |
| Alex Young |
27:eebe5fc884e3 | 77 | uint8_t* XbusUtility_writeU16(uint8_t* out, uint16_t in) |
| Alex Young |
27:eebe5fc884e3 | 78 | { |
| Alex Young |
27:eebe5fc884e3 | 79 | *out++ = (in >> 8) & 0xFF; |
| Alex Young |
27:eebe5fc884e3 | 80 | *out++ = in & 0xFF; |
| Alex Young |
27:eebe5fc884e3 | 81 | return out; |
| Alex Young |
27:eebe5fc884e3 | 82 | } |
| Alex Young |
27:eebe5fc884e3 | 83 | |
| Alex Young |
45:67203918bec9 | 84 | /*! \brief Write a uint32_t value to an Xbus message. */ |
| Alex Young |
27:eebe5fc884e3 | 85 | uint8_t* XbusUtility_writeU32(uint8_t* out, uint32_t in) |
| Alex Young |
27:eebe5fc884e3 | 86 | { |
| Alex Young |
27:eebe5fc884e3 | 87 | *out++ = (in >> 24) & 0xFF; |
| Alex Young |
27:eebe5fc884e3 | 88 | *out++ = (in >> 16) & 0xFF; |
| Alex Young |
27:eebe5fc884e3 | 89 | *out++ = (in >> 8) & 0xFF; |
| Alex Young |
27:eebe5fc884e3 | 90 | *out++ = in & 0xFF; |
| Alex Young |
27:eebe5fc884e3 | 91 | return out; |
| Alex Young |
27:eebe5fc884e3 | 92 | } |
| Alex Young |
45:67203918bec9 | 93 | /*! \} */ |

Xsens MTi 1-series