First Last / Mbed 2 deprecated EtherCAT-XbusMaster

Dependencies:   MODSERIAL mbed KL25Z_ClockControl

Fork of EtherCAT by First Last

Committer:
vsluiter
Date:
Fri Mar 06 11:07:58 2015 +0000
Revision:
23:2b2cdba08259
Parent:
21:6150ca891301
Child:
29:95ef6b54ec8e
NOT WORIKING, tried to get timestamp into this version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vsluiter 4:bb72df6dce33 1 /*
vsluiter 4:bb72df6dce33 2 * SOES Simple Open EtherCAT Slave
vsluiter 4:bb72df6dce33 3 *
vsluiter 4:bb72df6dce33 4 * File : utype.h
vsluiter 4:bb72df6dce33 5 * Version : 1.0.0
vsluiter 4:bb72df6dce33 6 * Date : 11-07-2010
vsluiter 4:bb72df6dce33 7 * Copyright (C) 2007-2010 Arthur Ketels
vsluiter 4:bb72df6dce33 8 *
vsluiter 4:bb72df6dce33 9 * SOES is free software; you can redistribute it and/or modify it under
vsluiter 4:bb72df6dce33 10 * the terms of the GNU General Public License version 2 as published by the Free
vsluiter 4:bb72df6dce33 11 * Software Foundation.
vsluiter 4:bb72df6dce33 12 *
vsluiter 4:bb72df6dce33 13 * SOES is distributed in the hope that it will be useful, but WITHOUT ANY
vsluiter 4:bb72df6dce33 14 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
vsluiter 4:bb72df6dce33 15 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
vsluiter 4:bb72df6dce33 16 * for more details.
vsluiter 4:bb72df6dce33 17 *
vsluiter 4:bb72df6dce33 18 * As a special exception, if other files instantiate templates or use macros
vsluiter 4:bb72df6dce33 19 * or inline functions from this file, or you compile this file and link it
vsluiter 4:bb72df6dce33 20 * with other works to produce a work based on this file, this file does not
vsluiter 4:bb72df6dce33 21 * by itself cause the resulting work to be covered by the GNU General Public
vsluiter 4:bb72df6dce33 22 * License. However the source code for this file must still be made available
vsluiter 4:bb72df6dce33 23 * in accordance with section (3) of the GNU General Public License.
vsluiter 4:bb72df6dce33 24 *
vsluiter 4:bb72df6dce33 25 * This exception does not invalidate any other reasons why a work based on
vsluiter 4:bb72df6dce33 26 * this file might be covered by the GNU General Public License.
vsluiter 4:bb72df6dce33 27 *
vsluiter 4:bb72df6dce33 28 * The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
vsluiter 4:bb72df6dce33 29 * property of, and protected by Beckhoff Automation GmbH.
vsluiter 4:bb72df6dce33 30 */
vsluiter 4:bb72df6dce33 31
vsluiter 4:bb72df6dce33 32 #ifndef _UTYPES_H_
vsluiter 4:bb72df6dce33 33 #define _UTYPES_H_
vsluiter 4:bb72df6dce33 34
vsluiter 4:bb72df6dce33 35 #include <stdint.h>
vsluiter 4:bb72df6dce33 36 #define uint8 uint8_t
vsluiter 4:bb72df6dce33 37 #define int8 int8_t
vsluiter 4:bb72df6dce33 38 #define uint16 uint16_t
vsluiter 4:bb72df6dce33 39 #define int16 int16_t
vsluiter 4:bb72df6dce33 40 #define uint32 uint32_t
vsluiter 4:bb72df6dce33 41 #define int32 int32_t
vsluiter 4:bb72df6dce33 42 #define APPSTATE_IDLE 0x00
vsluiter 4:bb72df6dce33 43 #define APPSTATE_INPUT 0x01
vsluiter 4:bb72df6dce33 44 #define APPSTATE_OUTPUT 0x02
vsluiter 4:bb72df6dce33 45
vsluiter 4:bb72df6dce33 46 typedef union
vsluiter 4:bb72df6dce33 47 {
vsluiter 4:bb72df6dce33 48 uint16 w;
vsluiter 4:bb72df6dce33 49 uint8 b[2];
vsluiter 4:bb72df6dce33 50 } uint16union;
vsluiter 0:a8daa9348a67 51
vsluiter 21:6150ca891301 52 typedef struct __attribute__((packed))
vsluiter 15:b8d72679e644 53 {
vsluiter 20:ad13d4f5fd98 54 uint16 acc[3];
vsluiter 20:ad13d4f5fd98 55 uint16 gyr[3];
vsluiter 20:ad13d4f5fd98 56 uint16 mag[3];
vsluiter 20:ad13d4f5fd98 57 uint16 temp;
vsluiter 15:b8d72679e644 58 }xsense_slave;
vsluiter 15:b8d72679e644 59
vsluiter 21:6150ca891301 60 typedef struct __attribute__((packed))
vsluiter 4:bb72df6dce33 61 {
vsluiter 4:bb72df6dce33 62 //uint8 state;
vsluiter 16:bfc7ea6bd1af 63 xsense_slave first;
vsluiter 16:bfc7ea6bd1af 64 xsense_slave second;
vsluiter 16:bfc7ea6bd1af 65 xsense_slave third;
vsluiter 23:2b2cdba08259 66 uint16 timestamp;
vsluiter 4:bb72df6dce33 67 } _Rbuffer;
vsluiter 4:bb72df6dce33 68
vsluiter 4:bb72df6dce33 69 typedef struct
vsluiter 4:bb72df6dce33 70 {
vsluiter 5:6d75f432a41f 71 uint8 correct_offset;
vsluiter 4:bb72df6dce33 72 } _Wbuffer;
vsluiter 4:bb72df6dce33 73
vsluiter 11:166353137b95 74 typedef struct
vsluiter 11:166353137b95 75 {
vsluiter 11:166353137b95 76 uint16 setting16;
vsluiter 11:166353137b95 77 uint8 setting8;
vsluiter 11:166353137b95 78 } _Ebuffer;
vsluiter 4:bb72df6dce33 79
vsluiter 4:bb72df6dce33 80 extern uint8 APPstate;
vsluiter 4:bb72df6dce33 81 extern _Rbuffer Rb;
vsluiter 4:bb72df6dce33 82 extern _Wbuffer Wb;
vsluiter 11:166353137b95 83 extern _Ebuffer Eb;
vsluiter 4:bb72df6dce33 84
vsluiter 4:bb72df6dce33 85 #define EC_LITTLE_ENDIAN
vsluiter 4:bb72df6dce33 86
vsluiter 4:bb72df6dce33 87 #if !defined(EC_BIG_ENDIAN) && defined(EC_LITTLE_ENDIAN)
vsluiter 4:bb72df6dce33 88
vsluiter 4:bb72df6dce33 89 #define htoes(A) (A)
vsluiter 4:bb72df6dce33 90 #define htoel(A) (A)
vsluiter 4:bb72df6dce33 91 #define htoell(A) (A)
vsluiter 4:bb72df6dce33 92 #define etohs(A) (A)
vsluiter 4:bb72df6dce33 93 #define etohl(A) (A)
vsluiter 4:bb72df6dce33 94 #define etohll(A) (A)
vsluiter 4:bb72df6dce33 95
vsluiter 4:bb72df6dce33 96 #elif !defined(EC_LITTLE_ENDIAN) && defined(EC_BIG_ENDIAN)
vsluiter 4:bb72df6dce33 97
vsluiter 4:bb72df6dce33 98 #define htoes(A) ((((uint16)(A) & 0xff00) >> 8) | \
vsluiter 4:bb72df6dce33 99 (((uint16)(A) & 0x00ff) << 8))
vsluiter 4:bb72df6dce33 100 #define htoel(A) ((((uint32)(A) & 0xff000000) >> 24) | \
vsluiter 4:bb72df6dce33 101 (((uint32)(A) & 0x00ff0000) >> 8) | \
vsluiter 4:bb72df6dce33 102 (((uint32)(A) & 0x0000ff00) << 8) | \
vsluiter 4:bb72df6dce33 103 (((uint32)(A) & 0x000000ff) << 24))
vsluiter 4:bb72df6dce33 104 #define htoell(A) ((((uint64)(A) & (uint64)0xff00000000000000ULL) >> 56) | \
vsluiter 4:bb72df6dce33 105 (((uint64)(A) & (uint64)0x00ff000000000000ULL) >> 40) | \
vsluiter 4:bb72df6dce33 106 (((uint64)(A) & (uint64)0x0000ff0000000000ULL) >> 24) | \
vsluiter 4:bb72df6dce33 107 (((uint64)(A) & (uint64)0x000000ff00000000ULL) >> 8) | \
vsluiter 4:bb72df6dce33 108 (((uint64)(A) & (uint64)0x00000000ff000000ULL) << 8) | \
vsluiter 4:bb72df6dce33 109 (((uint64)(A) & (uint64)0x0000000000ff0000ULL) << 24) | \
vsluiter 4:bb72df6dce33 110 (((uint64)(A) & (uint64)0x000000000000ff00ULL) << 40) | \
vsluiter 4:bb72df6dce33 111 (((uint64)(A) & (uint64)0x00000000000000ffULL) << 56))
vsluiter 4:bb72df6dce33 112
vsluiter 4:bb72df6dce33 113 #define etohs htoes
vsluiter 4:bb72df6dce33 114 #define etohl htoel
vsluiter 4:bb72df6dce33 115 #define etohll htoell
vsluiter 4:bb72df6dce33 116
vsluiter 4:bb72df6dce33 117 #else
vsluiter 4:bb72df6dce33 118
vsluiter 4:bb72df6dce33 119 #error "Must define one of EC_BIG_ENDIAN or EC_LITTLE_ENDIAN"
vsluiter 4:bb72df6dce33 120
vsluiter 4:bb72df6dce33 121 #endif
vsluiter 4:bb72df6dce33 122 #endif // _UTYPES_H_
vsluiter 4:bb72df6dce33 123