First Last / Mbed 2 deprecated EtherCAT-XbusMaster

Dependencies:   MODSERIAL mbed KL25Z_ClockControl

Fork of EtherCAT by First Last

Committer:
vsluiter
Date:
Tue Mar 10 10:13:16 2015 +0000
Revision:
29:95ef6b54ec8e
Parent:
23:2b2cdba08259
Child:
35:32659533e0ef
Slave not getting to SAFEOP

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 29:95ef6b54ec8e 54 float acc[3];
vsluiter 29:95ef6b54ec8e 55 float gyr[3];
vsluiter 29:95ef6b54ec8e 56 float mag[3];
vsluiter 15:b8d72679e644 57 }xsense_slave;
vsluiter 15:b8d72679e644 58
vsluiter 21:6150ca891301 59 typedef struct __attribute__((packed))
vsluiter 4:bb72df6dce33 60 {
vsluiter 4:bb72df6dce33 61 //uint8 state;
vsluiter 16:bfc7ea6bd1af 62 xsense_slave first;
vsluiter 16:bfc7ea6bd1af 63 xsense_slave second;
vsluiter 16:bfc7ea6bd1af 64 xsense_slave third;
vsluiter 23:2b2cdba08259 65 uint16 timestamp;
vsluiter 4:bb72df6dce33 66 } _Rbuffer;
vsluiter 4:bb72df6dce33 67
vsluiter 4:bb72df6dce33 68 typedef struct
vsluiter 4:bb72df6dce33 69 {
vsluiter 5:6d75f432a41f 70 uint8 correct_offset;
vsluiter 4:bb72df6dce33 71 } _Wbuffer;
vsluiter 4:bb72df6dce33 72
vsluiter 11:166353137b95 73 typedef struct
vsluiter 11:166353137b95 74 {
vsluiter 11:166353137b95 75 uint16 setting16;
vsluiter 11:166353137b95 76 uint8 setting8;
vsluiter 11:166353137b95 77 } _Ebuffer;
vsluiter 4:bb72df6dce33 78
vsluiter 4:bb72df6dce33 79 extern uint8 APPstate;
vsluiter 4:bb72df6dce33 80 extern _Rbuffer Rb;
vsluiter 4:bb72df6dce33 81 extern _Wbuffer Wb;
vsluiter 11:166353137b95 82 extern _Ebuffer Eb;
vsluiter 4:bb72df6dce33 83
vsluiter 4:bb72df6dce33 84 #define EC_LITTLE_ENDIAN
vsluiter 4:bb72df6dce33 85
vsluiter 4:bb72df6dce33 86 #if !defined(EC_BIG_ENDIAN) && defined(EC_LITTLE_ENDIAN)
vsluiter 4:bb72df6dce33 87
vsluiter 4:bb72df6dce33 88 #define htoes(A) (A)
vsluiter 4:bb72df6dce33 89 #define htoel(A) (A)
vsluiter 4:bb72df6dce33 90 #define htoell(A) (A)
vsluiter 4:bb72df6dce33 91 #define etohs(A) (A)
vsluiter 4:bb72df6dce33 92 #define etohl(A) (A)
vsluiter 4:bb72df6dce33 93 #define etohll(A) (A)
vsluiter 4:bb72df6dce33 94
vsluiter 4:bb72df6dce33 95 #elif !defined(EC_LITTLE_ENDIAN) && defined(EC_BIG_ENDIAN)
vsluiter 4:bb72df6dce33 96
vsluiter 4:bb72df6dce33 97 #define htoes(A) ((((uint16)(A) & 0xff00) >> 8) | \
vsluiter 4:bb72df6dce33 98 (((uint16)(A) & 0x00ff) << 8))
vsluiter 4:bb72df6dce33 99 #define htoel(A) ((((uint32)(A) & 0xff000000) >> 24) | \
vsluiter 4:bb72df6dce33 100 (((uint32)(A) & 0x00ff0000) >> 8) | \
vsluiter 4:bb72df6dce33 101 (((uint32)(A) & 0x0000ff00) << 8) | \
vsluiter 4:bb72df6dce33 102 (((uint32)(A) & 0x000000ff) << 24))
vsluiter 4:bb72df6dce33 103 #define htoell(A) ((((uint64)(A) & (uint64)0xff00000000000000ULL) >> 56) | \
vsluiter 4:bb72df6dce33 104 (((uint64)(A) & (uint64)0x00ff000000000000ULL) >> 40) | \
vsluiter 4:bb72df6dce33 105 (((uint64)(A) & (uint64)0x0000ff0000000000ULL) >> 24) | \
vsluiter 4:bb72df6dce33 106 (((uint64)(A) & (uint64)0x000000ff00000000ULL) >> 8) | \
vsluiter 4:bb72df6dce33 107 (((uint64)(A) & (uint64)0x00000000ff000000ULL) << 8) | \
vsluiter 4:bb72df6dce33 108 (((uint64)(A) & (uint64)0x0000000000ff0000ULL) << 24) | \
vsluiter 4:bb72df6dce33 109 (((uint64)(A) & (uint64)0x000000000000ff00ULL) << 40) | \
vsluiter 4:bb72df6dce33 110 (((uint64)(A) & (uint64)0x00000000000000ffULL) << 56))
vsluiter 4:bb72df6dce33 111
vsluiter 4:bb72df6dce33 112 #define etohs htoes
vsluiter 4:bb72df6dce33 113 #define etohl htoel
vsluiter 4:bb72df6dce33 114 #define etohll htoell
vsluiter 4:bb72df6dce33 115
vsluiter 4:bb72df6dce33 116 #else
vsluiter 4:bb72df6dce33 117
vsluiter 4:bb72df6dce33 118 #error "Must define one of EC_BIG_ENDIAN or EC_LITTLE_ENDIAN"
vsluiter 4:bb72df6dce33 119
vsluiter 4:bb72df6dce33 120 #endif
vsluiter 4:bb72df6dce33 121 #endif // _UTYPES_H_
vsluiter 4:bb72df6dce33 122