master/frame.h
changeset 90 044e97bce4bd
parent 78 3d74183d6c6b
equal deleted inserted replaced
89:e91ef35c36db 90:044e97bce4bd
    14 #include "globals.h"
    14 #include "globals.h"
    15 #include "../include/EtherCAT_rt.h"
    15 #include "../include/EtherCAT_rt.h"
    16 
    16 
    17 /*****************************************************************************/
    17 /*****************************************************************************/
    18 
    18 
    19 #define EC_MAX_DATA_SIZE (EC_MAX_FRAME_SIZE - EC_FRAME_HEADER_SIZE \
       
    20                                             - EC_COMMAND_HEADER_SIZE \
       
    21                                             - EC_COMMAND_FOOTER_SIZE)
       
    22 
       
    23 /*****************************************************************************/
       
    24 
       
    25 /**
       
    26    Status eines EtherCAT-Rahmens.
       
    27 */
       
    28 
       
    29 typedef enum {
       
    30   ec_frame_ready, ec_frame_sent, ec_frame_received
       
    31 }
       
    32 ec_frame_state_t;
       
    33 
       
    34 /*****************************************************************************/
       
    35 
       
    36 /**
    19 /**
    37    EtherCAT-Rahmen-Typ
    20    EtherCAT-Rahmen-Typ
    38 */
    21 */
    39 
    22 
    40 typedef enum
    23 typedef enum
    42   ec_frame_type_none = 0x00, /**< Dummy */
    25   ec_frame_type_none = 0x00, /**< Dummy */
    43   ec_frame_type_aprd = 0x01, /**< Auto-increment physical read */
    26   ec_frame_type_aprd = 0x01, /**< Auto-increment physical read */
    44   ec_frame_type_apwr = 0x02, /**< Auto-increment physical write */
    27   ec_frame_type_apwr = 0x02, /**< Auto-increment physical write */
    45   ec_frame_type_nprd = 0x04, /**< Node-addressed physical read */
    28   ec_frame_type_nprd = 0x04, /**< Node-addressed physical read */
    46   ec_frame_type_npwr = 0x05, /**< Node-addressed physical write */
    29   ec_frame_type_npwr = 0x05, /**< Node-addressed physical write */
    47   ec_frame_type_brd = 0x07,  /**< Broadcast read */
    30   ec_frame_type_brd  = 0x07, /**< Broadcast read */
    48   ec_frame_type_bwr = 0x08,  /**< Broadcast write */
    31   ec_frame_type_bwr  = 0x08, /**< Broadcast write */
    49   ec_frame_type_lrw = 0x0C   /**< Logical read/write */
    32   ec_frame_type_lrw  = 0x0C  /**< Logical read/write */
    50 }
    33 }
    51 ec_frame_type_t;
    34 ec_frame_type_t;
    52 
    35 
    53 /*****************************************************************************/
    36 /*****************************************************************************/
    54 
    37 
    88     ec_master_t *master; /**< EtherCAT-Master */
    71     ec_master_t *master; /**< EtherCAT-Master */
    89     ec_frame_type_t type; /**< Typ des Frames (APRD, NPWR, etc) */
    72     ec_frame_type_t type; /**< Typ des Frames (APRD, NPWR, etc) */
    90     ec_address_t address; /**< Adresse des/der Empfänger */
    73     ec_address_t address; /**< Adresse des/der Empfänger */
    91     unsigned int data_length; /**< Länge der zu sendenden und/oder empfangenen
    74     unsigned int data_length; /**< Länge der zu sendenden und/oder empfangenen
    92                                  Daten */
    75                                  Daten */
    93     ec_frame_state_t state; /**< Zustand des Kommandos */
       
    94     uint8_t index; /**< Kommando-Index, mit dem der Frame gesendet wurde
    76     uint8_t index; /**< Kommando-Index, mit dem der Frame gesendet wurde
    95                             (wird vom Master beim Senden gesetzt). */
    77                             (wird vom Master beim Senden gesetzt). */
    96     uint16_t working_counter; /**< Working-Counter */
    78     uint16_t working_counter; /**< Working-Counter */
    97     uint8_t data[EC_MAX_FRAME_SIZE]; /**< Rahmendaten */
    79     uint8_t data[EC_MAX_FRAME_SIZE]; /**< Rahmendaten */
    98 }
    80 }