David Khosravi / Mbed 2 deprecated MTi-1_example_LPC1768

Dependencies:   mbed-rtos mbed Xbus

Fork of MTi-1_example by Xsens

Committer:
Alex Young
Date:
Fri Jun 12 13:23:26 2015 +0200
Revision:
61:b9d3e7e5ba0c
Parent:
48:69d35430fe8b
Change to Apache license

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Alex Young 10:18a6661b7e59 1 /*!
Alex Young 10:18a6661b7e59 2 * \file
Alex Young 61:b9d3e7e5ba0c 3 * \copyright Copyright (C) Xsens Technologies B.V., 2015.
Alex Young 61:b9d3e7e5ba0c 4 *
Alex Young 61:b9d3e7e5ba0c 5 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
Alex Young 61:b9d3e7e5ba0c 6 * use this file except in compliance with the License. You may obtain a copy
Alex Young 61:b9d3e7e5ba0c 7 * of the License at
Alex Young 10:18a6661b7e59 8 *
Alex Young 61:b9d3e7e5ba0c 9 * http://www.apache.org/licenses/LICENSE-2.0
Alex Young 10:18a6661b7e59 10 *
Alex Young 61:b9d3e7e5ba0c 11 * Unless required by applicable law or agreed to in writing, software
Alex Young 61:b9d3e7e5ba0c 12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Alex Young 61:b9d3e7e5ba0c 13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
Alex Young 61:b9d3e7e5ba0c 14 * License for the specific language governing permissions and limitations
Alex Young 61:b9d3e7e5ba0c 15 * under the License.
Alex Young 10:18a6661b7e59 16 */
Alex Young 10:18a6661b7e59 17
Alex Young 10:18a6661b7e59 18 #ifndef __XBUSMESSAGE_H
Alex Young 10:18a6661b7e59 19 #define __XBUSMESSAGE_H
Alex Young 10:18a6661b7e59 20
Alex Young 10:18a6661b7e59 21 #include <stddef.h>
Alex Young 10:18a6661b7e59 22 #include <stdint.h>
Alex Young 16:4bdcdac223d8 23 #include <stdbool.h>
Alex Young 10:18a6661b7e59 24
Alex Young 10:18a6661b7e59 25 #ifdef __cplusplus
Alex Young 10:18a6661b7e59 26 extern "C" {
Alex Young 10:18a6661b7e59 27 #endif
Alex Young 10:18a6661b7e59 28
Alex Young 48:69d35430fe8b 29 /*! \brief Xbus message IDs. */
Alex Young 10:18a6661b7e59 30 enum XsMessageId
Alex Young 10:18a6661b7e59 31 {
Alex Young 33:542e4b568631 32 XMID_Wakeup = 0x3E,
Alex Young 33:542e4b568631 33 XMID_WakeupAck = 0x3F,
Alex Young 19:46e88d37ecef 34 XMID_ReqDid = 0x00,
Alex Young 19:46e88d37ecef 35 XMID_DeviceId = 0x01,
Alex Young 10:18a6661b7e59 36 XMID_GotoConfig = 0x30,
Alex Young 10:18a6661b7e59 37 XMID_GotoConfigAck = 0x31,
Alex Young 10:18a6661b7e59 38 XMID_GotoMeasurement = 0x10,
Alex Young 10:18a6661b7e59 39 XMID_GotoMeasurementAck = 0x11,
Alex Young 22:3eab999c5076 40 XMID_MtData2 = 0x36,
Alex Young 22:3eab999c5076 41 XMID_ReqOutputConfig = 0xC0,
Alex Young 22:3eab999c5076 42 XMID_SetOutputConfig = 0xC0,
Alex Young 22:3eab999c5076 43 XMID_OutputConfig = 0xC1,
Alex Young 30:27ff4335edec 44 XMID_Reset = 0x40,
Alex Young 30:27ff4335edec 45 XMID_ResetAck = 0x41,
Alex Young 30:27ff4335edec 46 XMID_Error = 0x42,
Alex Young 10:18a6661b7e59 47 };
Alex Young 10:18a6661b7e59 48
Alex Young 48:69d35430fe8b 49 /*! \brief Xbus data message type IDs. */
Alex Young 16:4bdcdac223d8 50 enum XsDataIdentifier
Alex Young 16:4bdcdac223d8 51 {
Alex Young 16:4bdcdac223d8 52 XDI_PacketCounter = 0x1020,
Alex Young 16:4bdcdac223d8 53 XDI_SampleTimeFine = 0x1060,
Alex Young 16:4bdcdac223d8 54 XDI_Quaternion = 0x2010,
Alex Young 16:4bdcdac223d8 55 XDI_DeltaV = 0x4010,
Alex Young 16:4bdcdac223d8 56 XDI_Acceleration = 0x4020,
Alex Young 16:4bdcdac223d8 57 XDI_RateOfTurn = 0x8020,
Alex Young 16:4bdcdac223d8 58 XDI_DeltaQ = 0x8030,
Alex Young 16:4bdcdac223d8 59 XDI_MagneticField = 0xC020,
Alex Young 16:4bdcdac223d8 60 XDI_StatusWord = 0xE020,
Alex Young 16:4bdcdac223d8 61 };
Alex Young 16:4bdcdac223d8 62
Alex Young 48:69d35430fe8b 63 /*!
Alex Young 48:69d35430fe8b 64 * \brief An Xbus message structure with optional payload.
Alex Young 48:69d35430fe8b 65 */
Alex Young 10:18a6661b7e59 66 struct XbusMessage
Alex Young 10:18a6661b7e59 67 {
Alex Young 48:69d35430fe8b 68 /*! \brief The message ID of the message. */
Alex Young 10:18a6661b7e59 69 enum XsMessageId mid;
Alex Young 48:69d35430fe8b 70 /*!
Alex Young 48:69d35430fe8b 71 * \brief The length of the payload.
Alex Young 48:69d35430fe8b 72 *
Alex Young 48:69d35430fe8b 73 * \note The meaning of the length is message dependent. For example,
Alex Young 48:69d35430fe8b 74 * for XMID_OutputConfig messages it is the number of OutputConfiguration
Alex Young 48:69d35430fe8b 75 * elements in the configuration array.
Alex Young 48:69d35430fe8b 76 */
Alex Young 10:18a6661b7e59 77 uint16_t length;
Alex Young 48:69d35430fe8b 78 /*! \brief Pointer to the payload data. */
Alex Young 19:46e88d37ecef 79 void* data;
Alex Young 10:18a6661b7e59 80 };
Alex Young 10:18a6661b7e59 81
Alex Young 48:69d35430fe8b 82 /*!
Alex Young 48:69d35430fe8b 83 * \brief Output configuration structure.
Alex Young 48:69d35430fe8b 84 */
Alex Young 22:3eab999c5076 85 struct OutputConfiguration
Alex Young 22:3eab999c5076 86 {
Alex Young 48:69d35430fe8b 87 /*! \brief Data type of the output. */
Alex Young 22:3eab999c5076 88 enum XsDataIdentifier dtype;
Alex Young 48:69d35430fe8b 89 /*!
Alex Young 48:69d35430fe8b 90 * \brief The output frequency in Hz, or 65535 if the value should be
Alex Young 48:69d35430fe8b 91 * included in every data message.
Alex Young 48:69d35430fe8b 92 */
Alex Young 22:3eab999c5076 93 uint16_t freq;
Alex Young 22:3eab999c5076 94 };
Alex Young 22:3eab999c5076 95
Alex Young 10:18a6661b7e59 96 size_t XbusMessage_format(uint8_t* raw, struct XbusMessage const* message);
Alex Young 16:4bdcdac223d8 97 bool XbusMessage_getDataItem(void* item, enum XsDataIdentifier id, struct XbusMessage const* message);
Alex Young 21:6015b8be3a00 98 char const* XbusMessage_dataDescription(enum XsDataIdentifier id);
Alex Young 10:18a6661b7e59 99
Alex Young 10:18a6661b7e59 100 #ifdef __cplusplus
Alex Young 10:18a6661b7e59 101 }
Alex Young 10:18a6661b7e59 102 #endif // extern "C"
Alex Young 10:18a6661b7e59 103
Alex Young 10:18a6661b7e59 104 #endif // __XBUSMESSAGE_H