First Last / Mbed 2 deprecated EtherCAT-XbusMaster

Dependencies:   MODSERIAL mbed KL25Z_ClockControl

Fork of EtherCAT by First Last

Committer:
vsluiter
Date:
Mon Mar 02 15:25:21 2015 +0000
Revision:
11:166353137b95
Parent:
9:33673e05639f
Child:
15:b8d72679e644
Ready to publish;

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 4:bb72df6dce33 52 typedef struct
vsluiter 4:bb72df6dce33 53 {
vsluiter 4:bb72df6dce33 54 //uint8 state;
vsluiter 4:bb72df6dce33 55 float CoPx;
vsluiter 4:bb72df6dce33 56 float CoPy;
vsluiter 9:33673e05639f 57 float grf;
vsluiter 4:bb72df6dce33 58 float FrontLeft;
vsluiter 4:bb72df6dce33 59 float FrontRight;
vsluiter 4:bb72df6dce33 60 float BackLeft;
vsluiter 4:bb72df6dce33 61 float BackRight;
vsluiter 4:bb72df6dce33 62 uint32 timestamp;
vsluiter 4:bb72df6dce33 63 } _Rbuffer;
vsluiter 4:bb72df6dce33 64
vsluiter 4:bb72df6dce33 65 typedef struct
vsluiter 4:bb72df6dce33 66 {
vsluiter 5:6d75f432a41f 67 uint8 correct_offset;
vsluiter 4:bb72df6dce33 68 } _Wbuffer;
vsluiter 4:bb72df6dce33 69
vsluiter 11:166353137b95 70 typedef struct
vsluiter 11:166353137b95 71 {
vsluiter 11:166353137b95 72 uint16 setting16;
vsluiter 11:166353137b95 73 uint8 setting8;
vsluiter 11:166353137b95 74 } _Ebuffer;
vsluiter 4:bb72df6dce33 75
vsluiter 4:bb72df6dce33 76 extern uint8 APPstate;
vsluiter 4:bb72df6dce33 77 extern _Rbuffer Rb;
vsluiter 4:bb72df6dce33 78 extern _Wbuffer Wb;
vsluiter 11:166353137b95 79 extern _Ebuffer Eb;
vsluiter 4:bb72df6dce33 80
vsluiter 4:bb72df6dce33 81 #define EC_LITTLE_ENDIAN
vsluiter 4:bb72df6dce33 82
vsluiter 4:bb72df6dce33 83 #if !defined(EC_BIG_ENDIAN) && defined(EC_LITTLE_ENDIAN)
vsluiter 4:bb72df6dce33 84
vsluiter 4:bb72df6dce33 85 #define htoes(A) (A)
vsluiter 4:bb72df6dce33 86 #define htoel(A) (A)
vsluiter 4:bb72df6dce33 87 #define htoell(A) (A)
vsluiter 4:bb72df6dce33 88 #define etohs(A) (A)
vsluiter 4:bb72df6dce33 89 #define etohl(A) (A)
vsluiter 4:bb72df6dce33 90 #define etohll(A) (A)
vsluiter 4:bb72df6dce33 91
vsluiter 4:bb72df6dce33 92 #elif !defined(EC_LITTLE_ENDIAN) && defined(EC_BIG_ENDIAN)
vsluiter 4:bb72df6dce33 93
vsluiter 4:bb72df6dce33 94 #define htoes(A) ((((uint16)(A) & 0xff00) >> 8) | \
vsluiter 4:bb72df6dce33 95 (((uint16)(A) & 0x00ff) << 8))
vsluiter 4:bb72df6dce33 96 #define htoel(A) ((((uint32)(A) & 0xff000000) >> 24) | \
vsluiter 4:bb72df6dce33 97 (((uint32)(A) & 0x00ff0000) >> 8) | \
vsluiter 4:bb72df6dce33 98 (((uint32)(A) & 0x0000ff00) << 8) | \
vsluiter 4:bb72df6dce33 99 (((uint32)(A) & 0x000000ff) << 24))
vsluiter 4:bb72df6dce33 100 #define htoell(A) ((((uint64)(A) & (uint64)0xff00000000000000ULL) >> 56) | \
vsluiter 4:bb72df6dce33 101 (((uint64)(A) & (uint64)0x00ff000000000000ULL) >> 40) | \
vsluiter 4:bb72df6dce33 102 (((uint64)(A) & (uint64)0x0000ff0000000000ULL) >> 24) | \
vsluiter 4:bb72df6dce33 103 (((uint64)(A) & (uint64)0x000000ff00000000ULL) >> 8) | \
vsluiter 4:bb72df6dce33 104 (((uint64)(A) & (uint64)0x00000000ff000000ULL) << 8) | \
vsluiter 4:bb72df6dce33 105 (((uint64)(A) & (uint64)0x0000000000ff0000ULL) << 24) | \
vsluiter 4:bb72df6dce33 106 (((uint64)(A) & (uint64)0x000000000000ff00ULL) << 40) | \
vsluiter 4:bb72df6dce33 107 (((uint64)(A) & (uint64)0x00000000000000ffULL) << 56))
vsluiter 4:bb72df6dce33 108
vsluiter 4:bb72df6dce33 109 #define etohs htoes
vsluiter 4:bb72df6dce33 110 #define etohl htoel
vsluiter 4:bb72df6dce33 111 #define etohll htoell
vsluiter 4:bb72df6dce33 112
vsluiter 4:bb72df6dce33 113 #else
vsluiter 4:bb72df6dce33 114
vsluiter 4:bb72df6dce33 115 #error "Must define one of EC_BIG_ENDIAN or EC_LITTLE_ENDIAN"
vsluiter 4:bb72df6dce33 116
vsluiter 4:bb72df6dce33 117 #endif
vsluiter 4:bb72df6dce33 118 #endif // _UTYPES_H_
vsluiter 4:bb72df6dce33 119