Xsens / Mbed 2 deprecated MTi-1_example

Dependencies:   mbed-rtos mbed Xbus

Fork of MTi-1_example by Alex Young

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?

UserRevisionLine numberNew 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 /*! \} */