AB&T / SOEM

Dependents:   EasyCAT_LAB_simple EasyCAT_LAB_very_simple EasyCAT_LAB

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ethercatcoe.h Source File

ethercatcoe.h

Go to the documentation of this file.
00001 /*
00002  * Licensed under the GNU General Public License version 2 with exceptions. See
00003  * LICENSE file in the project root for full license information
00004  */
00005 
00006 /** \file
00007  * \brief
00008  * Headerfile for ethercatcoe.c
00009  */
00010 
00011 #ifndef _ethercatcoe_
00012 #define _ethercatcoe_
00013 
00014 #ifdef __cplusplus
00015 extern "C"
00016 {
00017 #endif
00018 
00019 /** max entries in Object Description list */
00020 #define EC_MAXODLIST   1024
00021 
00022 /** max entries in Object Entry list */
00023 #define EC_MAXOELIST   256
00024 
00025 /* Storage for object description list */
00026 typedef struct
00027 {
00028    /** slave number */
00029    uint16  Slave;
00030    /** number of entries in list */
00031    uint16  Entries;
00032    /** array of indexes */
00033    uint16  Index[EC_MAXODLIST];
00034    /** array of datatypes, see EtherCAT specification */
00035    uint16  DataType[EC_MAXODLIST];
00036    /** array of object codes, see EtherCAT specification */
00037    uint8   ObjectCode[EC_MAXODLIST];
00038    /** number of subindexes for each index */
00039    uint8   MaxSub[EC_MAXODLIST];
00040    /** textual description of each index */
00041    char    Name[EC_MAXODLIST][EC_MAXNAME+1];
00042 } ec_ODlistt;
00043 
00044 /* storage for object list entry information */
00045 typedef struct
00046 {
00047    /** number of entries in list */
00048    uint16 Entries;
00049    /** array of value infos, see EtherCAT specification */
00050    uint8  ValueInfo[EC_MAXOELIST];
00051    /** array of value infos, see EtherCAT specification */
00052    uint16 DataType[EC_MAXOELIST];
00053    /** array of bit lengths, see EtherCAT specification */
00054    uint16 BitLength[EC_MAXOELIST];
00055    /** array of object access bits, see EtherCAT specification */
00056    uint16 ObjAccess[EC_MAXOELIST];
00057    /** textual description of each index */
00058    char   Name[EC_MAXOELIST][EC_MAXNAME+1];
00059 } ec_OElistt;
00060 
00061 #ifdef EC_VER1
00062 void ec_SDOerror(uint16 Slave, uint16 Index, uint8 SubIdx, int32 AbortCode);
00063 int ec_SDOread(uint16 slave, uint16 index, uint8 subindex,
00064                       boolean CA, int *psize, void *p, int timeout);
00065 int ec_SDOwrite(uint16 Slave, uint16 Index, uint8 SubIndex,
00066     boolean CA, int psize, void *p, int Timeout);
00067 int ec_RxPDO(uint16 Slave, uint16 RxPDOnumber , int psize, void *p);
00068 int ec_TxPDO(uint16 slave, uint16 TxPDOnumber , int *psize, void *p, int timeout);
00069 int ec_readPDOmap(uint16 Slave, int *Osize, int *Isize);
00070 int ec_readPDOmapCA(uint16 Slave, int Thread_n, int *Osize, int *Isize);
00071 int ec_readODlist(uint16 Slave, ec_ODlistt *pODlist);
00072 int ec_readODdescription(uint16 Item, ec_ODlistt *pODlist);
00073 int ec_readOEsingle(uint16 Item, uint8 SubI, ec_ODlistt *pODlist, ec_OElistt *pOElist);
00074 int ec_readOE(uint16 Item, ec_ODlistt *pODlist, ec_OElistt *pOElist);
00075 #endif
00076 
00077 void ecx_SDOerror(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIdx, int32 AbortCode);
00078 int ecx_SDOread(ecx_contextt *context, uint16 slave, uint16 index, uint8 subindex,
00079                       boolean CA, int *psize, void *p, int timeout);
00080 int ecx_SDOwrite(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIndex,
00081     boolean CA, int psize, void *p, int Timeout);
00082 int ecx_RxPDO(ecx_contextt *context, uint16 Slave, uint16 RxPDOnumber , int psize, void *p);
00083 int ecx_TxPDO(ecx_contextt *context, uint16 slave, uint16 TxPDOnumber , int *psize, void *p, int timeout);
00084 int ecx_readPDOmap(ecx_contextt *context, uint16 Slave, int *Osize, int *Isize);
00085 int ecx_readPDOmapCA(ecx_contextt *context, uint16 Slave, int Thread_n, int *Osize, int *Isize);
00086 int ecx_readODlist(ecx_contextt *context, uint16 Slave, ec_ODlistt *pODlist);
00087 int ecx_readODdescription(ecx_contextt *context, uint16 Item, ec_ODlistt *pODlist);
00088 int ecx_readOEsingle(ecx_contextt *context, uint16 Item, uint8 SubI, ec_ODlistt *pODlist, ec_OElistt *pOElist);
00089 int ecx_readOE(ecx_contextt *context, uint16 Item, ec_ODlistt *pODlist, ec_OElistt *pOElist);
00090 
00091 #ifdef __cplusplus
00092 }
00093 #endif
00094 
00095 #endif