First Last / Mbed 2 deprecated EtherCAT-XbusMaster

Dependencies:   MODSERIAL mbed KL25Z_ClockControl

Fork of EtherCAT by First Last

Committer:
vsluiter
Date:
Thu Dec 11 23:35:57 2014 +0000
Revision:
7:8c15bbc49f64
Parent:
6:3ccb89a58ff8
Checked objects, seem OK

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