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/xbusmessage.h@61:b9d3e7e5ba0c, 2015-06-12 (annotated)
- 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?
| User | Revision | Line number | New 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 |
