diff --git a/.gitignore b/.gitignore index 5bcf675..eb452f8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ build* install *~ +/doc/latex +/doc/html diff --git a/doc/html/annotated.html b/doc/html/annotated.html deleted file mode 100644 index 8600202..0000000 --- a/doc/html/annotated.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -SOEM: Data Structures - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-
Data Structures
-
-
-
Here are the data structures with brief descriptions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ec_adaptert
ec_ALstatuscodelist_t
ec_alstatust
ec_comt
ec_configlist_t
ec_eepromFMMUt
ec_eepromPDOt
ec_eepromSMt
ec_eepromt
ec_emcyt
ec_eringt
ec_errort
ec_etherheadert
ec_fmmut
ec_FOEt
ec_groupt
ec_idxstackT
ec_mbxerrorlist_t
ec_mbxerrort
ec_mbxheadert
ec_ODlistt
ec_OElistt
ec_PDOassignt
ec_PDOdesct
ec_sdoerrorlist_t
ec_SDOservicet
ec_SDOt
ec_slavet
ec_SMcommtypet
ec_smt
ec_SoEattributet
ec_soeerrorlist_t
ec_SoElistt
ec_SoEmappingt
ec_SoEnamet
ec_SoEt
ec_state_status
ecx_contextt
ecx_mapt_t
in_EBOX_streamt
in_EBOXt
out_EBOX_streamt
out_EBOXt
-
- - - diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png deleted file mode 100644 index e401862..0000000 Binary files a/doc/html/bc_s.png and /dev/null differ diff --git a/doc/html/classes.html b/doc/html/classes.html deleted file mode 100644 index 9584e8e..0000000 --- a/doc/html/classes.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - -SOEM: Data Structure Index - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-
Data Structure Index
-
-
-
E | I | O
- -
  E  
-
ec_emcyt   ec_mbxerrort   ec_slavet   ec_state_status   
ec_adapter   ec_eringt   ec_mbxheadert   ec_SMcommtypet   ecx_contextt   
ec_ALstatuscodelist_t   ec_errort   ec_ODlistt   ec_smt   ecx_mapt_t   
ec_alstatust   ec_etherheadert   ec_OElistt   ec_SoEattributet   
  I  
-
ec_comt   ec_fmmut   ec_PDOassignt   ec_soeerrorlist_t   in_EBOX_streamt   
ec_configlist_t   ec_FOEt   ec_PDOdesct   ec_SoElistt   in_EBOXt   
ec_eepromFMMUt   ec_groupt   ec_sdoerrorlist_t   ec_SoEmappingt   
  O  
-
ec_eepromPDOt   ec_idxstackT   ec_SDOservicet   ec_SoEnamet   out_EBOX_streamt   
ec_eepromSMt   ec_mbxerrorlist_t   ec_SDOt   ec_SoEt   out_EBOXt   
ec_eepromt   
E | I | O
-
- - - diff --git a/doc/html/closed.png b/doc/html/closed.png deleted file mode 100644 index b7d4bd9..0000000 Binary files a/doc/html/closed.png and /dev/null differ diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css deleted file mode 100644 index 74445fe..0000000 --- a/doc/html/doxygen.css +++ /dev/null @@ -1,835 +0,0 @@ -/* The standard CSS for doxygen */ - -body, table, div, p, dl { - font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; - font-size: 12px; -} - -/* @group Heading Levels */ - -h1 { - font-size: 150%; -} - -.title { - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2 { - font-size: 120%; -} - -h3 { - font-size: 100%; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd, p.starttd { - margin-top: 2px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - padding: 2px; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code { - color: #4665A2; -} - -a.codeRef { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -.fragment { - font-family: monospace, fixed; - font-size: 105%; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; -} - -div.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 10px; - margin-right: 5px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memItemLeft, .memItemRight, .memTemplParams { - border-top: 1px solid #C4CFE5; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; -} - -.memname { - white-space: nowrap; - font-weight: bold; - margin-left: 6px; -} - -.memproto { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 8px; - border-top-left-radius: 8px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 8px; - -moz-border-radius-topleft: 8px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 8px; - -webkit-border-top-left-radius: 8px; - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - -} - -.memdoc { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 2px 5px; - background-color: #FBFCFD; - border-top-width: 0; - /* opera specific markup */ - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 8px; - -moz-border-radius-bottomright: 8px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 8px; - -webkit-border-bottom-right-radius: 8px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} - -.params, .retval, .exception, .tparams { - border-spacing: 6px 2px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - - - - -/* @end */ - -/* @group Directory (tree) */ - -/* for the tree view */ - -.ftvtree { - font-family: sans-serif; - margin: 0px; -} - -/* these are for tree view when used as main index */ - -.directory { - font-size: 9pt; - font-weight: bold; - margin: 5px; -} - -.directory h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} - -/* -The following two styles can be used to replace the root node title -with an image of your choice. Simply uncomment the next two styles, -specify the name of your image and be sure to set 'height' to the -proper pixel height of your image. -*/ - -/* -.directory h3.swap { - height: 61px; - background-repeat: no-repeat; - background-image: url("yourimage.gif"); -} -.directory h3.swap span { - display: none; -} -*/ - -.directory > h3 { - margin-top: 0; -} - -.directory p { - margin: 0px; - white-space: nowrap; -} - -.directory div { - display: none; - margin: 0px; -} - -.directory img { - vertical-align: -30%; -} - -/* these are for tree view when not used as main index */ - -.directory-alt { - font-size: 100%; - font-weight: bold; -} - -.directory-alt h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} - -.directory-alt > h3 { - margin-top: 0; -} - -.directory-alt p { - margin: 0px; - white-space: nowrap; -} - -.directory-alt div { - display: none; - margin: 0px; -} - -.directory-alt img { - vertical-align: -30%; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable { - border-collapse:collapse; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; -} - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -div.ingroups -{ - font-size: 8pt; - padding-left: 5px; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug -{ - border-left:4px solid; - padding: 0 0 0 6px; -} - -dl.note -{ - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - border-color: #00D000; -} - -dl.deprecated -{ - border-color: #505050; -} - -dl.todo -{ - border-color: #00C0E0; -} - -dl.test -{ - border-color: #3030E0; -} - -dl.bug -{ - border-color: #C08050; -} - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png deleted file mode 100644 index 635ed52..0000000 Binary files a/doc/html/doxygen.png and /dev/null differ diff --git a/doc/html/ebox_8c.html b/doc/html/ebox_8c.html deleted file mode 100644 index 6581440..0000000 --- a/doc/html/ebox_8c.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - -SOEM: ebox.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Functions | -Variables
-
-
ebox.c File Reference
-
-
- -

Example code for Simple Open EtherCAT master. -More...

-
#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <sched.h>
-#include <string.h>
-#include <time.h>
-#include <pthread.h>
-#include <math.h>
-#include "ethercattype.h"
-#include "nicdrv.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatcoe.h"
-#include "ethercatconfig.h"
-#include "ethercatdc.h"
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  in_EBOXt
struct  in_EBOX_streamt
struct  out_EBOXt
struct  out_EBOX_streamt

-Defines

#define NSEC_PER_SEC   1000000000
#define MAXSTREAM   200000
#define SYNC0TIME   8000

-Functions

int output_cvs (char *fname, int length)
void eboxtest (char *ifname)
void add_timespec (struct timespec *ts, int64 addtime)
void ec_sync (int64 reftime, int64 cycletime, int64 *offsettime)
void ecatthread (void *ptr)
int main (int argc, char *argv[])

-Variables

struct sched_param schedp
char IOmap [4096]
pthread_t thread1
struct timeval tv t1 t2
int dorun = 0
int deltat
int tmax = 0
int64 toff
int DCdiff
int os
uint32 ob
int16 ob2
uint8 ob3
pthread_cond_t cond = PTHREAD_COND_INITIALIZER
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER
int64 integral = 0
uint32 cyclecount
in_EBOX_streamtin_EBOX
out_EBOX_streamtout_EBOX
double ain [2]
int ainc
int streampos
int16 stream1 [MAXSTREAM]
int16 stream2 [MAXSTREAM]
-

Detailed Description

-

Example code for Simple Open EtherCAT master.

-

Usage : ebox [ifname] [cycletime] ifname is NIC interface, f.e. eth0 cycletime in us, f.e. 500

-

This test is specifically build for the E/BOX.

-

(c)Arthur Ketels 2011

-

Define Documentation

- -
-
- - - - -
#define MAXSTREAM   200000
-
-
- -
-
- -
-
- - - - -
#define NSEC_PER_SEC   1000000000
-
-
- -
-
- -
-
- - - - -
#define SYNC0TIME   8000
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
void add_timespec (struct timespec * ts,
int64 addtime 
)
-
-
- -
-
- -
-
- - - - - - - - -
void eboxtest (char * ifname)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void ec_sync (int64 reftime,
int64 cycletime,
int64 * offsettime 
)
-
-
- -
-
- -
-
- - - - - - - - -
void ecatthread (void * ptr)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int main (int argc,
char * argv[] 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int output_cvs (char * fname,
int length 
)
-
-
- -
-
-

Variable Documentation

- -
-
- - - - -
double ain[2]
-
-
- -
-
- -
-
- - - - -
int ainc
-
-
- -
-
- -
-
- - - - -
pthread_cond_t cond = PTHREAD_COND_INITIALIZER
-
-
- -
-
- -
-
- - - - -
uint32 cyclecount
-
-
- -
-
- -
-
- - - - -
int DCdiff
-
-
- -
-
- -
-
- - - - -
int deltat
-
-
- -
-
- -
-
- - - - -
int dorun = 0
-
-
- -
-
- -
-
- - - - -
in_EBOX_streamt* in_EBOX
-
-
- -
-
- -
-
- - - - -
int64 integral = 0
-
-
- -
-
- -
-
- - - - -
char IOmap[4096]
-
-
- -
-
- -
-
- - - - -
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER
-
-
- -
-
- -
-
- - - - -
uint32 ob
-
-
- -
-
- -
-
- - - - -
int16 ob2
-
-
- -
-
- -
-
- - - - -
uint8 ob3
-
-
- -
-
- -
-
- - - - -
int os
-
-
- -
-
- -
- -
- -
-
- -
-
- - - - -
struct sched_param schedp
-
-
- -
-
- -
-
- - - - -
int16 stream1[MAXSTREAM]
-
-
- -
-
- -
-
- - - - -
int16 stream2[MAXSTREAM]
-
-
- -
-
- -
-
- - - - -
int streampos
-
-
- -
-
- -
-
- - - - -
struct timeval tv t1 t2
-
-
- -
-
- -
-
- - - - -
pthread_t thread1
-
-
- -
-
- -
-
- - - - -
int tmax = 0
-
-
- -
-
- -
-
- - - - -
int64 toff
-
-
- -
-
-
- - - diff --git a/doc/html/eepromtool_8c.html b/doc/html/eepromtool_8c.html deleted file mode 100644 index f9d3261..0000000 --- a/doc/html/eepromtool_8c.html +++ /dev/null @@ -1,736 +0,0 @@ - - - - -SOEM: eepromtool.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Defines | -Functions | -Variables
-
-
eepromtool.c File Reference
-
-
- -

EEprom tool for Simple Open EtherCAT master. -More...

-
#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <time.h>
-#include "ethercattype.h"
-#include "nicdrv.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatcoe.h"
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Defines

#define MAXBUF   32768
#define STDBUF   2048
#define MINBUF   128
#define CRCBUF   14
#define MODE_NONE   0
#define MODE_READBIN   1
#define MODE_READINTEL   2
#define MODE_WRITEBIN   3
#define MODE_WRITEINTEL   4
#define MODE_WRITEALIAS   5
#define MODE_INFO   6
#define MAXSLENGTH   256
#define IHEXLENGTH   0x20

-Functions

void calc_crc (uint8 *crc, uint8 b)
uint16 SIIcrc (uint8 *buf)
int input_bin (char *fname, int *length)
int input_intelhex (char *fname, int *start, int *length)
int output_bin (char *fname, int length)
int output_intelhex (char *fname, int length)
int eeprom_read (int slave, int start, int length)
int eeprom_write (int slave, int start, int length)
int eeprom_writealias (int slave, int alias, uint16 crc)
void eepromtool (char *ifname, int slave, int mode, char *fname)
int main (int argc, char *argv[])

-Variables

uint8 ebuf [MAXBUF]
uint8 ob
uint16 ow
int os
int slave
int alias
struct timeval tstart tend tdif
int wkc
int mode
char sline [MAXSLENGTH]
-

Detailed Description

-

EEprom tool for Simple Open EtherCAT master.

-

Usage : eepromtool ifname slave OPTION fname|alias ifname is NIC interface, f.e. eth0 slave = slave number in EtherCAT order 1..n -r read EEPROM, output binary format -ri read EEPROM, output Intel Hex format -w write EEPROM, input binary format -wi write EEPROM, input Intel Hex format -i display EEPROM information -walias write slave alias in EEPROM

-

(c)Arthur Ketels 2010-2012

-

Define Documentation

- -
-
- - - - -
#define CRCBUF   14
-
-
- -
-
- -
-
- - - - -
#define IHEXLENGTH   0x20
-
-
- -
-
- -
-
- - - - -
#define MAXBUF   32768
-
-
- -
-
- -
-
- - - - -
#define MAXSLENGTH   256
-
-
- -
-
- -
-
- - - - -
#define MINBUF   128
-
-
- -
-
- -
-
- - - - -
#define MODE_INFO   6
-
-
- -
-
- -
-
- - - - -
#define MODE_NONE   0
-
-
- -
-
- -
-
- - - - -
#define MODE_READBIN   1
-
-
- -
-
- -
-
- - - - -
#define MODE_READINTEL   2
-
-
- -
-
- -
-
- - - - -
#define MODE_WRITEALIAS   5
-
-
- -
-
- -
-
- - - - -
#define MODE_WRITEBIN   3
-
-
- -
-
- -
-
- - - - -
#define MODE_WRITEINTEL   4
-
-
- -
-
- -
-
- - - - -
#define STDBUF   2048
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
void calc_crc (uint8 * crc,
uint8 b 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int eeprom_read (int slave,
int start,
int length 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int eeprom_write (int slave,
int start,
int length 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int eeprom_writealias (int slave,
int alias,
uint16 crc 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void eepromtool (char * ifname,
int slave,
int mode,
char * fname 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int input_bin (char * fname,
int * length 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int input_intelhex (char * fname,
int * start,
int * length 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int main (int argc,
char * argv[] 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int output_bin (char * fname,
int length 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int output_intelhex (char * fname,
int length 
)
-
-
- -
-
- -
-
- - - - - - - - -
uint16 SIIcrc (uint8 * buf)
-
-
- -
-
-

Variable Documentation

- -
-
- - - - -
int alias
-
-
- -
-
- -
-
- - - - -
uint8 ebuf[MAXBUF]
-
-
- -
-
- -
-
- - - - -
int mode
-
-
- -
-
- -
-
- - - - -
uint8 ob
-
-
- -
-
- -
-
- - - - -
int os
-
-
- -
-
- -
-
- - - - -
uint16 ow
-
-
- -
-
- -
-
- - - - -
int slave
-
-
- -
-
- -
-
- - - - -
char sline[MAXSLENGTH]
-
-
- -
-
- -
-
- - - - -
struct timeval tstart tend tdif
-
-
- -
-
- -
-
- - - - -
int wkc
-
-
- -
-
-
- - - diff --git a/doc/html/ethercatbase_8c.html b/doc/html/ethercatbase_8c.html deleted file mode 100644 index d805fc0..0000000 --- a/doc/html/ethercatbase_8c.html +++ /dev/null @@ -1,2075 +0,0 @@ - - - - -SOEM: ethercatbase.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Functions
-
-
ethercatbase.c File Reference
-
-
- -

Base EtherCAT functions. -More...

-
#include <stdio.h>
-#include <string.h>
-#include "oshw.h"
-#include "osal.h"
-#include "ethercattype.h"
-#include "ethercatbase.h"
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

static void ecx_writedatagramdata (void *datagramdata, ec_cmdtype com, uint16 length, const void *data)
int ecx_setupdatagram (ecx_portt *port, void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, uint16 length, void *data)
int ecx_adddatagram (ecx_portt *port, void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)
int ecx_BWR (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_BRD (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_APRD (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_ARMW (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_FRMW (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
uint16 ecx_APRDw (ecx_portt *port, uint16 ADP, uint16 ADO, int timeout)
int ecx_FPRD (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
uint16 ecx_FPRDw (ecx_portt *port, uint16 ADP, uint16 ADO, int timeout)
int ecx_APWR (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_APWRw (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 data, int timeout)
int ecx_FPWR (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_FPWRw (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 data, int timeout)
int ecx_LRW (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)
int ecx_LRD (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)
int ecx_LWR (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)
int ecx_LRWDC (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, uint16 DCrs, int64 *DCtime, int timeout)
int ec_setupdatagram (void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, uint16 length, void *data)
int ec_adddatagram (void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)
int ec_BWR (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ec_BRD (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ec_APRD (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ec_ARMW (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ec_FRMW (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
uint16 ec_APRDw (uint16 ADP, uint16 ADO, int timeout)
int ec_FPRD (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
uint16 ec_FPRDw (uint16 ADP, uint16 ADO, int timeout)
int ec_APWR (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ec_APWRw (uint16 ADP, uint16 ADO, uint16 data, int timeout)
int ec_FPWR (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ec_FPWRw (uint16 ADP, uint16 ADO, uint16 data, int timeout)
int ec_LRW (uint32 LogAdr, uint16 length, void *data, int timeout)
int ec_LRD (uint32 LogAdr, uint16 length, void *data, int timeout)
int ec_LWR (uint32 LogAdr, uint16 length, void *data, int timeout)
int ec_LRWDC (uint32 LogAdr, uint16 length, void *data, uint16 DCrs, int64 *DCtime, int timeout)
-

Detailed Description

-

Base EtherCAT functions.

-

Setting up a datagram in an ethernet frame. EtherCAT datagram primitives, broadcast, auto increment, configured and logical addressed data transfers. All base transfers are blocking, so wait for the frame to be returned to the master or timeout. If this is not acceptable build your own datagrams and use the functions from nicdrv.c.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_adddatagram (void * frame,
uint8 com,
uint8 idx,
boolean more,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_APRD (uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ec_APRDw (uint16 ADP,
uint16 ADO,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_APWR (uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_APWRw (uint16 ADP,
uint16 ADO,
uint16 data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_ARMW (uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_BRD (uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_BWR (uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_FPRD (uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ec_FPRDw (uint16 ADP,
uint16 ADO,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_FPWR (uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_FPWRw (uint16 ADP,
uint16 ADO,
uint16 data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_FRMW (uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_LRD (uint32 LogAdr,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_LRW (uint32 LogAdr,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_LRWDC (uint32 LogAdr,
uint16 length,
void * data,
uint16 DCrs,
int64 * DCtime,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_LWR (uint32 LogAdr,
uint16 length,
void * data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_setupdatagram (void * frame,
uint8 com,
uint8 idx,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_adddatagram (ecx_portt * port,
void * frame,
uint8 com,
uint8 idx,
boolean more,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data 
)
-
-
-

Add EtherCAT datagram to a standard ethernet frame with existing datagram(s).

-
Parameters:
- - - - - - - - - - -
[in]port= port context struct
[out]frame= framebuffer
[in]com= command
[in]idx= index used for TX and RX buffers
[in]more= TRUE if still more datagrams to follow
[in]ADP= Address Position
[in]ADO= Address Offset
[in]length= length of datagram excluding EtherCAT header
[in]data= databuffer to be copied in datagram
-
-
-
Returns:
Offset to data in rx frame, usefull to retrieve data after RX.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_APRD (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

APRD "auto increment address read" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 excecutes
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_APRDw (ecx_portt * port,
uint16 ADP,
uint16 ADO,
int timeout 
)
-
-
-

APRDw "auto increment address read" word return primitive. Blocking.

-
Parameters:
- - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 reads.
[in]ADO= Address Offset, slave memory address
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
word data from slave
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_APWR (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

APWR "auto increment address write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 writes.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[in]data= databuffer to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_APWRw (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 data,
int timeout 
)
-
-
-

APWRw "auto increment address write" word primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 writes.
[in]ADO= Address Offset, slave memory address
[in]data= word data to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_ARMW (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

APRMW "auto increment address read, multiple write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 reads, following slaves write.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_BRD (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

BRD "broadcast read" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, normally 0
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_BWR (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

BRW "broadcast write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, normally 0
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[in]data= databuffer to be written to slaves
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FPRD (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

FPRD "configured address read" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address reads.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_FPRDw (ecx_portt * port,
uint16 ADP,
uint16 ADO,
int timeout 
)
-
-
-

FPRDw "configured address read" word return primitive. Blocking.

-
Parameters:
- - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address reads.
[in]ADO= Address Offset, slave memory address
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
word data from slave
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FPWR (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

FPWR "configured address write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address writes.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[in]data= databuffer to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FPWRw (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 data,
int timeout 
)
-
-
-

FPWR "configured address write" primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address writes.
[in]ADO= Address Offset, slave memory address
[in]data= word to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FRMW (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

FPRMW "configured address read, multiple write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address reads, following slaves write.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_LRD (ecx_portt * port,
uint32 LogAdr,
uint16 length,
void * data,
int timeout 
)
-
-
-

LRD "logical memory read" primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]LogAdr= Logical memory address
[in]length= length of bytes to read from slave.
[out]data= databuffer to read from slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_LRW (ecx_portt * port,
uint32 LogAdr,
uint16 length,
void * data,
int timeout 
)
-
-
-

LRW "logical memory read / write" primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]LogAdr= Logical memory address
[in]length= length of databuffer
[in,out]data= databuffer to write to and read from slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_LRWDC (ecx_portt * port,
uint32 LogAdr,
uint16 length,
void * data,
uint16 DCrs,
int64 * DCtime,
int timeout 
)
-
-
-

LRW "logical memory read / write" primitive plus Clock Distribution. Blocking. Frame consists of two datagrams, one LRW and one FPRMW.

-
Parameters:
- - - - - - - - -
[in]port= port context struct
[in]LogAdr= Logical memory address
[in]length= length of databuffer
[in,out]data= databuffer to write to and read from slave.
[in]DCrs= Distributed Clock reference slave address.
[out]DCtime= DC time read from reference slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_LWR (ecx_portt * port,
uint32 LogAdr,
uint16 length,
void * data,
int timeout 
)
-
-
-

LWR "logical memory write" primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]LogAdr= Logical memory address
[in]length= length of databuffer
[in]data= databuffer to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_setupdatagram (ecx_portt * port,
void * frame,
uint8 com,
uint8 idx,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data 
)
-
-
-

Generate and set EtherCAT datagram in a standard ethernet frame.

-
Parameters:
- - - - - - - - - -
[in]port= port context struct
[out]frame= framebuffer
[in]com= command
[in]idx= index used for TX and RX buffers
[in]ADP= Address Position
[in]ADO= Address Offset
[in]length= length of datagram excluding EtherCAT header
[in]data= databuffer to be copied in datagram
-
-
-
Returns:
always 0
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static void ecx_writedatagramdata (void * datagramdata,
ec_cmdtype com,
uint16 length,
const void * data 
) [static]
-
-
-

Write data to EtherCAT datagram.

-
Parameters:
- - - - - -
[out]datagramdata= data part of datagram
[in]com= command
[in]length= length of databuffer
[in]data= databuffer to be copied into datagram
-
-
- -
-
-
- - - diff --git a/doc/html/ethercatbase_8h.html b/doc/html/ethercatbase_8h.html deleted file mode 100644 index e68701c..0000000 --- a/doc/html/ethercatbase_8h.html +++ /dev/null @@ -1,1208 +0,0 @@ - - - - -SOEM: ethercatbase.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Functions
-
-
ethercatbase.h File Reference
-
-
- -

Headerfile for ethercatbase.c. -More...

- - - - - - - - - - - - - - - - - - - - -

-Functions

int ecx_setupdatagram (ecx_portt *port, void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, uint16 length, void *data)
int ecx_adddatagram (ecx_portt *port, void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)
int ecx_BWR (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_BRD (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_APRD (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_ARMW (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_FRMW (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
uint16 ecx_APRDw (ecx_portt *port, uint16 ADP, uint16 ADO, int timeout)
int ecx_FPRD (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
uint16 ecx_FPRDw (ecx_portt *port, uint16 ADP, uint16 ADO, int timeout)
int ecx_APWRw (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 data, int timeout)
int ecx_APWR (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_FPWRw (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 data, int timeout)
int ecx_FPWR (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)
int ecx_LRW (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)
int ecx_LRD (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)
int ecx_LWR (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)
int ecx_LRWDC (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, uint16 DCrs, int64 *DCtime, int timeout)
-

Detailed Description

-

Headerfile for ethercatbase.c.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_adddatagram (ecx_portt * port,
void * frame,
uint8 com,
uint8 idx,
boolean more,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data 
)
-
-
-

Add EtherCAT datagram to a standard ethernet frame with existing datagram(s).

-
Parameters:
- - - - - - - - - - -
[in]port= port context struct
[out]frame= framebuffer
[in]com= command
[in]idx= index used for TX and RX buffers
[in]more= TRUE if still more datagrams to follow
[in]ADP= Address Position
[in]ADO= Address Offset
[in]length= length of datagram excluding EtherCAT header
[in]data= databuffer to be copied in datagram
-
-
-
Returns:
Offset to data in rx frame, usefull to retrieve data after RX.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_APRD (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

APRD "auto increment address read" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 excecutes
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_APRDw (ecx_portt * port,
uint16 ADP,
uint16 ADO,
int timeout 
)
-
-
-

APRDw "auto increment address read" word return primitive. Blocking.

-
Parameters:
- - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 reads.
[in]ADO= Address Offset, slave memory address
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
word data from slave
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_APWR (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

APWR "auto increment address write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 writes.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[in]data= databuffer to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_APWRw (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 data,
int timeout 
)
-
-
-

APWRw "auto increment address write" word primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 writes.
[in]ADO= Address Offset, slave memory address
[in]data= word data to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_ARMW (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

APRMW "auto increment address read, multiple write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, each slave ++, slave that has 0 reads, following slaves write.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_BRD (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

BRD "broadcast read" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, normally 0
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_BWR (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

BRW "broadcast write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, normally 0
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[in]data= databuffer to be written to slaves
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FPRD (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

FPRD "configured address read" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address reads.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_FPRDw (ecx_portt * port,
uint16 ADP,
uint16 ADO,
int timeout 
)
-
-
-

FPRDw "configured address read" word return primitive. Blocking.

-
Parameters:
- - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address reads.
[in]ADO= Address Offset, slave memory address
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
word data from slave
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FPWR (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

FPWR "configured address write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address writes.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[in]data= databuffer to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FPWRw (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 data,
int timeout 
)
-
-
-

FPWR "configured address write" primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address writes.
[in]ADO= Address Offset, slave memory address
[in]data= word to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FRMW (ecx_portt * port,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data,
int timeout 
)
-
-
-

FPRMW "configured address read, multiple write" primitive. Blocking.

-
Parameters:
- - - - - - - -
[in]port= port context struct
[in]ADP= Address Position, slave that has address reads, following slaves write.
[in]ADO= Address Offset, slave memory address
[in]length= length of databuffer
[out]data= databuffer to put slave data in
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_LRD (ecx_portt * port,
uint32 LogAdr,
uint16 length,
void * data,
int timeout 
)
-
-
-

LRD "logical memory read" primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]LogAdr= Logical memory address
[in]length= length of bytes to read from slave.
[out]data= databuffer to read from slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_LRW (ecx_portt * port,
uint32 LogAdr,
uint16 length,
void * data,
int timeout 
)
-
-
-

LRW "logical memory read / write" primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]LogAdr= Logical memory address
[in]length= length of databuffer
[in,out]data= databuffer to write to and read from slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_LRWDC (ecx_portt * port,
uint32 LogAdr,
uint16 length,
void * data,
uint16 DCrs,
int64 * DCtime,
int timeout 
)
-
-
-

LRW "logical memory read / write" primitive plus Clock Distribution. Blocking. Frame consists of two datagrams, one LRW and one FPRMW.

-
Parameters:
- - - - - - - - -
[in]port= port context struct
[in]LogAdr= Logical memory address
[in]length= length of databuffer
[in,out]data= databuffer to write to and read from slave.
[in]DCrs= Distributed Clock reference slave address.
[out]DCtime= DC time read from reference slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_LWR (ecx_portt * port,
uint32 LogAdr,
uint16 length,
void * data,
int timeout 
)
-
-
-

LWR "logical memory write" primitive. Blocking.

-
Parameters:
- - - - - - -
[in]port= port context struct
[in]LogAdr= Logical memory address
[in]length= length of databuffer
[in]data= databuffer to write to slave.
[in]timeout= timeout in us, standard is EC_TIMEOUTRET
-
-
-
Returns:
Workcounter or EC_NOFRAME
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_setupdatagram (ecx_portt * port,
void * frame,
uint8 com,
uint8 idx,
uint16 ADP,
uint16 ADO,
uint16 length,
void * data 
)
-
-
-

Generate and set EtherCAT datagram in a standard ethernet frame.

-
Parameters:
- - - - - - - - - -
[in]port= port context struct
[out]frame= framebuffer
[in]com= command
[in]idx= index used for TX and RX buffers
[in]ADP= Address Position
[in]ADO= Address Offset
[in]length= length of datagram excluding EtherCAT header
[in]data= databuffer to be copied in datagram
-
-
-
Returns:
always 0
- -
-
-
- - - diff --git a/doc/html/ethercatcoe_8c.html b/doc/html/ethercatcoe_8c.html deleted file mode 100644 index 01455ad..0000000 --- a/doc/html/ethercatcoe_8c.html +++ /dev/null @@ -1,1371 +0,0 @@ - - - - -SOEM: ethercatcoe.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Functions
-
-
ethercatcoe.c File Reference
-
-
- -

CAN over EtherCAT (CoE) module. -More...

-
#include <stdio.h>
-#include <string.h>
-#include "osal.h"
-#include "oshw.h"
-#include "ethercattype.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatcoe.h"
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  ec_SDOt
struct  ec_SDOservicet

-Functions

PACKED_END void ecx_SDOerror (ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIdx, int32 AbortCode)
static void ecx_SDOinfoerror (ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIdx, int32 AbortCode)
int ecx_SDOread (ecx_contextt *context, uint16 slave, uint16 index, uint8 subindex, boolean CA, int *psize, void *p, int timeout)
int ecx_SDOwrite (ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIndex, boolean CA, int psize, void *p, int Timeout)
int ecx_RxPDO (ecx_contextt *context, uint16 Slave, uint16 RxPDOnumber, int psize, void *p)
int ecx_TxPDO (ecx_contextt *context, uint16 slave, uint16 TxPDOnumber, int *psize, void *p, int timeout)
int ecx_readPDOassign (ecx_contextt *context, uint16 Slave, uint16 PDOassign)
int ecx_readPDOassignCA (ecx_contextt *context, uint16 Slave, uint16 PDOassign)
int ecx_readPDOmap (ecx_contextt *context, uint16 Slave, int *Osize, int *Isize)
int ecx_readPDOmapCA (ecx_contextt *context, uint16 Slave, int *Osize, int *Isize)
int ecx_readODlist (ecx_contextt *context, uint16 Slave, ec_ODlistt *pODlist)
int ecx_readODdescription (ecx_contextt *context, uint16 Item, ec_ODlistt *pODlist)
int ecx_readOEsingle (ecx_contextt *context, uint16 Item, uint8 SubI, ec_ODlistt *pODlist, ec_OElistt *pOElist)
int ecx_readOE (ecx_contextt *context, uint16 Item, ec_ODlistt *pODlist, ec_OElistt *pOElist)
void ec_SDOerror (uint16 Slave, uint16 Index, uint8 SubIdx, int32 AbortCode)
int ec_SDOread (uint16 slave, uint16 index, uint8 subindex, boolean CA, int *psize, void *p, int timeout)
int ec_SDOwrite (uint16 Slave, uint16 Index, uint8 SubIndex, boolean CA, int psize, void *p, int Timeout)
int ec_RxPDO (uint16 Slave, uint16 RxPDOnumber, int psize, void *p)
int ec_TxPDO (uint16 slave, uint16 TxPDOnumber, int *psize, void *p, int timeout)
int ec_readPDOassign (uint16 Slave, uint16 PDOassign)
int ec_readPDOassignCA (uint16 Slave, uint16 PDOassign)
int ec_readPDOmap (uint16 Slave, int *Osize, int *Isize)
int ec_readPDOmapCA (uint16 Slave, int *Osize, int *Isize)
int ec_readODlist (uint16 Slave, ec_ODlistt *pODlist)
int ec_readODdescription (uint16 Item, ec_ODlistt *pODlist)
int ec_readOEsingle (uint16 Item, uint8 SubI, ec_ODlistt *pODlist, ec_OElistt *pOElist)
int ec_readOE (uint16 Item, ec_ODlistt *pODlist, ec_OElistt *pOElist)
-

Detailed Description

-

CAN over EtherCAT (CoE) module.

-

SDO read / write and SDO service functions

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
int ec_readODdescription (uint16 Item,
ec_ODlisttpODlist 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_readODlist (uint16 Slave,
ec_ODlisttpODlist 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ec_readOE (uint16 Item,
ec_ODlisttpODlist,
ec_OElisttpOElist 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_readOEsingle (uint16 Item,
uint8 SubI,
ec_ODlisttpODlist,
ec_OElisttpOElist 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_readPDOassign (uint16 Slave,
uint16 PDOassign 
)
-
-
-

Read PDO assign structure

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_readPDOassignCA (uint16 Slave,
uint16 PDOassign 
)
-
-
-

Read PDO assign structure in Complete Access mode

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ec_readPDOmap (uint16 Slave,
int * Osize,
int * Isize 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ec_readPDOmapCA (uint16 Slave,
int * Osize,
int * Isize 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_RxPDO (uint16 Slave,
uint16 RxPDOnumber,
int psize,
void * p 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ec_SDOerror (uint16 Slave,
uint16 Index,
uint8 SubIdx,
int32 AbortCode 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_SDOread (uint16 slave,
uint16 index,
uint8 subindex,
boolean CA,
int * psize,
void * p,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_SDOwrite (uint16 Slave,
uint16 Index,
uint8 SubIndex,
boolean CA,
int psize,
void * p,
int Timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_TxPDO (uint16 slave,
uint16 TxPDOnumber,
int * psize,
void * p,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readODdescription (ecx_contexttcontext,
uint16 Item,
ec_ODlisttpODlist 
)
-
-
-

CoE read Object Description. Adds textual description to object indexes.

-
Parameters:
- - - - -
[in]context= context struct
[in]Item= Item number in ODlist.
[in,out]pODlist= referencing Object Description list.
-
-
-
Returns:
Workcounter of slave response.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readODlist (ecx_contexttcontext,
uint16 Slave,
ec_ODlisttpODlist 
)
-
-
-

CoE read Object Description List.

-
Parameters:
- - - - -
[in]context= context struct
[in]Slave= Slave number.
[out]pODlist= resulting Object Description list.
-
-
-
Returns:
Workcounter of slave response.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readOE (ecx_contexttcontext,
uint16 Item,
ec_ODlisttpODlist,
ec_OElisttpOElist 
)
-
-
-

CoE read SDO service object entry.

-
Parameters:
- - - - - -
[in]context= context struct
[in]Item= Item in ODlist.
[in]pODlist= Object description list for reference.
[out]pOElist= resulting object entry structure.
-
-
-
Returns:
Workcounter of slave response.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readOEsingle (ecx_contexttcontext,
uint16 Item,
uint8 SubI,
ec_ODlisttpODlist,
ec_OElisttpOElist 
)
-
-
-

CoE read SDO service object entry, single subindex. Used in ec_readOE().

-
Parameters:
- - - - - - -
[in]context= context struct
[in]Item= Item in ODlist.
[in]SubI= Subindex of item in ODlist.
[in]pODlist= Object description list for reference.
[out]pOElist= resulting object entry structure.
-
-
-
Returns:
Workcounter of slave response.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readPDOassign (ecx_contexttcontext,
uint16 Slave,
uint16 PDOassign 
)
-
-
-

Read PDO assign structure

-
Parameters:
- - - - -
[in]context= context struct
[in]Slave= Slave number
[in]PDOassign= PDO assign object
-
-
-
Returns:
total bitlength of PDO assign
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readPDOassignCA (ecx_contexttcontext,
uint16 Slave,
uint16 PDOassign 
)
-
-
-

Read PDO assign structure in Complete Access mode

-
Parameters:
- - - - -
[in]context= context struct
[in]Slave= Slave number
[in]PDOassign= PDO assign object
-
-
-
Returns:
total bitlength of PDO assign
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readPDOmap (ecx_contexttcontext,
uint16 Slave,
int * Osize,
int * Isize 
)
-
-
-

CoE read PDO mapping.

-

CANopen has standard indexes defined for PDO mapping. This function tries to read them and collect a full input and output mapping size of designated slave.

-

Principal structure in slave:
- 1C00:00 is number of SM defined
- 1C00:01 SM0 type -> 1C10
- 1C00:02 SM1 type -> 1C11
- 1C00:03 SM2 type -> 1C12
- 1C00:04 SM3 type -> 1C13
- Type 0 = unused, 1 = mailbox in, 2 = mailbox out, 3 = outputs (RxPDO), 4 = inputs (TxPDO).

-

1C12:00 is number of PDO's defined for SM2
- 1C12:01 PDO assign SDO #1 -> f.e. 1A00
- 1C12:02 PDO assign SDO #2 -> f.e. 1A04\

-

1A00:00 is number of object defined for this PDO
- 1A00:01 object mapping #1, f.e. 60100710 (SDO 6010 SI 07 bitlength 0x10)

-
Parameters:
- - - - - -
[in]context= context struct
[in]Slave= Slave number
[out]Osize= Size in bits of output mapping (rxPDO) found
[out]Isize= Size in bits of input mapping (txPDO) found
-
-
-
Returns:
>0 if mapping succesful.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readPDOmapCA (ecx_contexttcontext,
uint16 Slave,
int * Osize,
int * Isize 
)
-
-
-

CoE read PDO mapping in Complete Access mode (CA).

-

CANopen has standard indexes defined for PDO mapping. This function tries to read them and collect a full input and output mapping size of designated slave. Slave has to support CA, otherwise use ec_readPDOmap().

-
Parameters:
- - - - - -
[in]context= context struct
[in]Slave= Slave number
[out]Osize= Size in bits of output mapping (rxPDO) found
[out]Isize= Size in bits of input mapping (txPDO) found
-
-
-
Returns:
>0 if mapping succesful.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_RxPDO (ecx_contexttcontext,
uint16 Slave,
uint16 RxPDOnumber,
int psize,
void * p 
)
-
-
-

CoE RxPDO write, blocking.

-

A RxPDO download request is issued.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]RxPDOnumber= Related RxPDO number
[in]psize= Size in bytes of PDO buffer.
[out]p= Pointer to PDO buffer
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PACKED_END void ecx_SDOerror (ecx_contexttcontext,
uint16 Slave,
uint16 Index,
uint8 SubIdx,
int32 AbortCode 
)
-
-
-

Report SDO error.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]Index= Index that generated error
[in]SubIdx= Subindex that generated error
[in]AbortCode= Abortcode, see EtherCAT documentation for list
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static void ecx_SDOinfoerror (ecx_contexttcontext,
uint16 Slave,
uint16 Index,
uint8 SubIdx,
int32 AbortCode 
) [static]
-
-
-

Report SDO info error

-
Parameters:
- - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]Index= Index that generated error
[in]SubIdx= Subindex that generated error
[in]AbortCode= Abortcode, see EtherCAT documentation for list
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_SDOread (ecx_contexttcontext,
uint16 slave,
uint16 index,
uint8 subindex,
boolean CA,
int * psize,
void * p,
int timeout 
)
-
-
-

CoE SDO read, blocking. Single subindex or Complete Access.

-

Only a "normal" upload request is issued. If the requested parameter is <= 4bytes then a "expedited" response is returned, otherwise a "normal" response. If a "normal" response is larger than the mailbox size then the response is segmented. The function will combine all segments and copy them to the parameter buffer.

-
Parameters:
- - - - - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]index= Index to read
[in]subindex= Subindex to read, must be 0 or 1 if CA is used.
[in]CA= FALSE = single subindex. TRUE = Complete Access, all subindexes read.
[in,out]psize= Size in bytes of parameter buffer, returns bytes read from SDO.
[out]p= Pointer to parameter buffer
[in]timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_SDOwrite (ecx_contexttcontext,
uint16 Slave,
uint16 Index,
uint8 SubIndex,
boolean CA,
int psize,
void * p,
int Timeout 
)
-
-
-

CoE SDO write, blocking. Single subindex or Complete Access.

-

A "normal" download request is issued, unless we have small data, then a "expedited" transfer is used. If the parameter is larger than the mailbox size then the download is segmented. The function will split the parameter data in segments and send them to the slave one by one.

-
Parameters:
- - - - - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]Index= Index to write
[in]SubIndex= Subindex to write, must be 0 or 1 if CA is used.
[in]CA= FALSE = single subindex. TRUE = Complete Access, all subindexes written.
[in]psize= Size in bytes of parameter buffer.
[out]p= Pointer to parameter buffer
[in]Timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_TxPDO (ecx_contexttcontext,
uint16 slave,
uint16 TxPDOnumber,
int * psize,
void * p,
int timeout 
)
-
-
-

CoE TxPDO read remote request, blocking.

-

A RxPDO download request is issued.

-
Parameters:
- - - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]TxPDOnumber= Related TxPDO number
[in,out]psize= Size in bytes of PDO buffer, returns bytes read from PDO.
[out]p= Pointer to PDO buffer
[in]timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
-
- - - diff --git a/doc/html/ethercatcoe_8h.html b/doc/html/ethercatcoe_8h.html deleted file mode 100644 index b545d71..0000000 --- a/doc/html/ethercatcoe_8h.html +++ /dev/null @@ -1,753 +0,0 @@ - - - - -SOEM: ethercatcoe.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Functions
-
-
ethercatcoe.h File Reference
-
-
- -

Headerfile for ethercatcoe.c. -More...

- - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  ec_ODlistt
struct  ec_OElistt

-Defines

#define EC_MAXODLIST   1024
#define EC_MAXOELIST   256

-Functions

void ecx_SDOerror (ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIdx, int32 AbortCode)
int ecx_SDOread (ecx_contextt *context, uint16 slave, uint16 index, uint8 subindex, boolean CA, int *psize, void *p, int timeout)
int ecx_SDOwrite (ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIndex, boolean CA, int psize, void *p, int Timeout)
int ecx_RxPDO (ecx_contextt *context, uint16 Slave, uint16 RxPDOnumber, int psize, void *p)
int ecx_TxPDO (ecx_contextt *context, uint16 slave, uint16 TxPDOnumber, int *psize, void *p, int timeout)
int ecx_readPDOmap (ecx_contextt *context, uint16 Slave, int *Osize, int *Isize)
int ecx_readPDOmapCA (ecx_contextt *context, uint16 Slave, int *Osize, int *Isize)
int ecx_readODlist (ecx_contextt *context, uint16 Slave, ec_ODlistt *pODlist)
int ecx_readODdescription (ecx_contextt *context, uint16 Item, ec_ODlistt *pODlist)
int ecx_readOEsingle (ecx_contextt *context, uint16 Item, uint8 SubI, ec_ODlistt *pODlist, ec_OElistt *pOElist)
int ecx_readOE (ecx_contextt *context, uint16 Item, ec_ODlistt *pODlist, ec_OElistt *pOElist)
-

Detailed Description

-

Headerfile for ethercatcoe.c.

-

Define Documentation

- -
-
- - - - -
#define EC_MAXODLIST   1024
-
-
-

max entries in Object Description list

- -
-
- -
-
- - - - -
#define EC_MAXOELIST   256
-
-
-

max entries in Object Entry list

- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readODdescription (ecx_contexttcontext,
uint16 Item,
ec_ODlisttpODlist 
)
-
-
-

CoE read Object Description. Adds textual description to object indexes.

-
Parameters:
- - - - -
[in]context= context struct
[in]Item= Item number in ODlist.
[in,out]pODlist= referencing Object Description list.
-
-
-
Returns:
Workcounter of slave response.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readODlist (ecx_contexttcontext,
uint16 Slave,
ec_ODlisttpODlist 
)
-
-
-

CoE read Object Description List.

-
Parameters:
- - - - -
[in]context= context struct
[in]Slave= Slave number.
[out]pODlist= resulting Object Description list.
-
-
-
Returns:
Workcounter of slave response.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readOE (ecx_contexttcontext,
uint16 Item,
ec_ODlisttpODlist,
ec_OElisttpOElist 
)
-
-
-

CoE read SDO service object entry.

-
Parameters:
- - - - - -
[in]context= context struct
[in]Item= Item in ODlist.
[in]pODlist= Object description list for reference.
[out]pOElist= resulting object entry structure.
-
-
-
Returns:
Workcounter of slave response.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readOEsingle (ecx_contexttcontext,
uint16 Item,
uint8 SubI,
ec_ODlisttpODlist,
ec_OElisttpOElist 
)
-
-
-

CoE read SDO service object entry, single subindex. Used in ec_readOE().

-
Parameters:
- - - - - - -
[in]context= context struct
[in]Item= Item in ODlist.
[in]SubI= Subindex of item in ODlist.
[in]pODlist= Object description list for reference.
[out]pOElist= resulting object entry structure.
-
-
-
Returns:
Workcounter of slave response.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readPDOmap (ecx_contexttcontext,
uint16 Slave,
int * Osize,
int * Isize 
)
-
-
-

CoE read PDO mapping.

-

CANopen has standard indexes defined for PDO mapping. This function tries to read them and collect a full input and output mapping size of designated slave.

-

Principal structure in slave:
- 1C00:00 is number of SM defined
- 1C00:01 SM0 type -> 1C10
- 1C00:02 SM1 type -> 1C11
- 1C00:03 SM2 type -> 1C12
- 1C00:04 SM3 type -> 1C13
- Type 0 = unused, 1 = mailbox in, 2 = mailbox out, 3 = outputs (RxPDO), 4 = inputs (TxPDO).

-

1C12:00 is number of PDO's defined for SM2
- 1C12:01 PDO assign SDO #1 -> f.e. 1A00
- 1C12:02 PDO assign SDO #2 -> f.e. 1A04\

-

1A00:00 is number of object defined for this PDO
- 1A00:01 object mapping #1, f.e. 60100710 (SDO 6010 SI 07 bitlength 0x10)

-
Parameters:
- - - - - -
[in]context= context struct
[in]Slave= Slave number
[out]Osize= Size in bits of output mapping (rxPDO) found
[out]Isize= Size in bits of input mapping (txPDO) found
-
-
-
Returns:
>0 if mapping succesful.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readPDOmapCA (ecx_contexttcontext,
uint16 Slave,
int * Osize,
int * Isize 
)
-
-
-

CoE read PDO mapping in Complete Access mode (CA).

-

CANopen has standard indexes defined for PDO mapping. This function tries to read them and collect a full input and output mapping size of designated slave. Slave has to support CA, otherwise use ec_readPDOmap().

-
Parameters:
- - - - - -
[in]context= context struct
[in]Slave= Slave number
[out]Osize= Size in bits of output mapping (rxPDO) found
[out]Isize= Size in bits of input mapping (txPDO) found
-
-
-
Returns:
>0 if mapping succesful.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_RxPDO (ecx_contexttcontext,
uint16 Slave,
uint16 RxPDOnumber,
int psize,
void * p 
)
-
-
-

CoE RxPDO write, blocking.

-

A RxPDO download request is issued.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]RxPDOnumber= Related RxPDO number
[in]psize= Size in bytes of PDO buffer.
[out]p= Pointer to PDO buffer
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_SDOerror (ecx_contexttcontext,
uint16 Slave,
uint16 Index,
uint8 SubIdx,
int32 AbortCode 
)
-
-
-

Report SDO error.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]Index= Index that generated error
[in]SubIdx= Subindex that generated error
[in]AbortCode= Abortcode, see EtherCAT documentation for list
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_SDOread (ecx_contexttcontext,
uint16 slave,
uint16 index,
uint8 subindex,
boolean CA,
int * psize,
void * p,
int timeout 
)
-
-
-

CoE SDO read, blocking. Single subindex or Complete Access.

-

Only a "normal" upload request is issued. If the requested parameter is <= 4bytes then a "expedited" response is returned, otherwise a "normal" response. If a "normal" response is larger than the mailbox size then the response is segmented. The function will combine all segments and copy them to the parameter buffer.

-
Parameters:
- - - - - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]index= Index to read
[in]subindex= Subindex to read, must be 0 or 1 if CA is used.
[in]CA= FALSE = single subindex. TRUE = Complete Access, all subindexes read.
[in,out]psize= Size in bytes of parameter buffer, returns bytes read from SDO.
[out]p= Pointer to parameter buffer
[in]timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_SDOwrite (ecx_contexttcontext,
uint16 Slave,
uint16 Index,
uint8 SubIndex,
boolean CA,
int psize,
void * p,
int Timeout 
)
-
-
-

CoE SDO write, blocking. Single subindex or Complete Access.

-

A "normal" download request is issued, unless we have small data, then a "expedited" transfer is used. If the parameter is larger than the mailbox size then the download is segmented. The function will split the parameter data in segments and send them to the slave one by one.

-
Parameters:
- - - - - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]Index= Index to write
[in]SubIndex= Subindex to write, must be 0 or 1 if CA is used.
[in]CA= FALSE = single subindex. TRUE = Complete Access, all subindexes written.
[in]psize= Size in bytes of parameter buffer.
[out]p= Pointer to parameter buffer
[in]Timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_TxPDO (ecx_contexttcontext,
uint16 slave,
uint16 TxPDOnumber,
int * psize,
void * p,
int timeout 
)
-
-
-

CoE TxPDO read remote request, blocking.

-

A RxPDO download request is issued.

-
Parameters:
- - - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]TxPDOnumber= Related TxPDO number
[in,out]psize= Size in bytes of PDO buffer, returns bytes read from PDO.
[out]p= Pointer to PDO buffer
[in]timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
-
- - - diff --git a/doc/html/ethercatconfig_8c.html b/doc/html/ethercatconfig_8c.html deleted file mode 100644 index d998f88..0000000 --- a/doc/html/ethercatconfig_8c.html +++ /dev/null @@ -1,848 +0,0 @@ - - - - -SOEM: ethercatconfig.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Functions | -Variables
-
-
ethercatconfig.c File Reference
-
-
- -

Configuration module for EtherCAT master. -More...

-
#include <stdio.h>
-#include <string.h>
-#include "osal.h"
-#include "oshw.h"
-#include "ethercattype.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatcoe.h"
-#include "ethercatsoe.h"
-#include "ethercatconfig.h"
-#include "ethercatconfiglist.h"
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  ecx_mapt_t
struct  ec_configlist_t

-Defines

#define EC_PRINT(...)   do {} while (0)
#define MAX_MAPT   8
#define EC_DEFAULTMBXSM0   0x00010026
#define EC_DEFAULTMBXSM1   0x00010022
#define EC_DEFAULTDOSM0   0x00010044

-Functions

int ec_findconfig (uint32 man, uint32 id)
void ecx_init_context (ecx_contextt *context)
int ecx_detect_slaves (ecx_contextt *context)
static void ecx_set_slaves_to_default (ecx_contextt *context)
static int ecx_config_from_table (ecx_contextt *context, uint16 slave)
static int ecx_lookup_prev_sii (ecx_contextt *context, uint16 slave)
int ecx_config_init (ecx_contextt *context, uint8 usetable)
static int ecx_lookup_mapping (ecx_contextt *context, uint16 slave, int *Osize, int *Isize)
static int ecx_map_coe_soe (ecx_contextt *context, uint16 slave)
static int ecx_map_sii (ecx_contextt *context, uint16 slave)
static int ecx_map_sm (ecx_contextt *context, uint16 slave)
OSAL_THREAD_FUNC ecx_mapper_thread (void *param)
static int ecx_find_mapt (void)
static int ecx_get_threadcount (void)
int ecx_config_map_group (ecx_contextt *context, void *pIOmap, uint8 group)
int ecx_recover_slave (ecx_contextt *context, uint16 slave, int timeout)
int ecx_reconfig_slave (ecx_contextt *context, uint16 slave, int timeout)
int ec_config_init (uint8 usetable)
int ec_config_map_group (void *pIOmap, uint8 group)
int ec_config_map (void *pIOmap)
int ec_config (uint8 usetable, void *pIOmap)
int ec_recover_slave (uint16 slave, int timeout)
int ec_reconfig_slave (uint16 slave, int timeout)

-Variables

ecx_mapt_t ecx_mapt [MAX_MAPT]
OSAL_THREAD_HANDLE ecx_threadh [MAX_MAPT]
-

Detailed Description

-

Configuration module for EtherCAT master.

-

After successful initialisation with ec_init() or ec_init_redundant() the slaves can be auto configured with this module.

-

Define Documentation

- -
-
- - - - -
#define EC_DEFAULTDOSM0   0x00010044
-
-
-

standard SM0 flags configuration for digital output slaves

- -
-
- -
-
- - - - -
#define EC_DEFAULTMBXSM0   0x00010026
-
-
-

standard SM0 flags configuration for mailbox slaves

- -
-
- -
-
- - - - -
#define EC_DEFAULTMBXSM1   0x00010022
-
-
-

standard SM1 flags configuration for mailbox slaves

- -
-
- -
-
- - - - - - - - -
#define EC_PRINT( ...)   do {} while (0)
-
-
- -
-
- -
-
- - - - -
#define MAX_MAPT   8
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
int ec_config (uint8 usetable,
void * pIOmap 
)
-
-
-

Enumerate / map and init all slaves.

-
Parameters:
- - - -
[in]usetable= TRUE when using configtable to init slaves, FALSE otherwise
[out]pIOmap= pointer to IOmap
-
-
-
Returns:
Workcounter of slave discover datagram = number of slaves found
- -
-
- -
-
- - - - - - - - -
int ec_config_init (uint8 usetable)
-
-
- -
-
- -
-
- - - - - - - - -
int ec_config_map (void * pIOmap)
-
-
-

Map all PDOs from slaves to IOmap.

-
Parameters:
- - -
[out]pIOmap= pointer to IOmap
-
-
-
Returns:
IOmap size
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_config_map_group (void * pIOmap,
uint8 group 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_findconfig (uint32 man,
uint32 id 
)
-
-
-

Find slave in standard configuration list ec_configlist[]

-
Parameters:
- - - -
[in]man= manufacturer
[in]id= ID
-
-
-
Returns:
index in ec_configlist[] when found, otherwise 0
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_reconfig_slave (uint16 slave,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_recover_slave (uint16 slave,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static int ecx_config_from_table (ecx_contexttcontext,
uint16 slave 
) [static]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_config_init (ecx_contexttcontext,
uint8 usetable 
)
-
-
-

Enumerate and init all slaves.

-
Parameters:
- - - -
[in]context= context struct
[in]usetable= TRUE when using configtable to init slaves, FALSE otherwise
-
-
-
Returns:
Workcounter of slave discover datagram = number of slaves found
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_config_map_group (ecx_contexttcontext,
void * pIOmap,
uint8 group 
)
-
-
-

Map all PDOs in one group of slaves to IOmap.

-
Parameters:
- - - - -
[in]context= context struct
[out]pIOmap= pointer to IOmap
[in]group= group to map, 0 = all groups
-
-
-
Returns:
IOmap size
- -
-
- -
-
- - - - - - - - -
int ecx_detect_slaves (ecx_contexttcontext)
-
-
- -
-
- -
-
- - - - - - - - -
static int ecx_find_mapt (void ) [static]
-
-
- -
-
- -
-
- - - - - - - - -
static int ecx_get_threadcount (void ) [static]
-
-
- -
-
- -
-
- - - - - - - - -
void ecx_init_context (ecx_contexttcontext)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static int ecx_lookup_mapping (ecx_contexttcontext,
uint16 slave,
int * Osize,
int * Isize 
) [static]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static int ecx_lookup_prev_sii (ecx_contexttcontext,
uint16 slave 
) [static]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static int ecx_map_coe_soe (ecx_contexttcontext,
uint16 slave 
) [static]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static int ecx_map_sii (ecx_contexttcontext,
uint16 slave 
) [static]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static int ecx_map_sm (ecx_contexttcontext,
uint16 slave 
) [static]
-
-
- -
-
- -
-
- - - - - - - - -
OSAL_THREAD_FUNC ecx_mapper_thread (void * param)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_reconfig_slave (ecx_contexttcontext,
uint16 slave,
int timeout 
)
-
-
-

Reconfigure slave.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave to reconfigure
[in]timeout= local timeout f.e. EC_TIMEOUTRET3
-
-
-
Returns:
Slave state
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_recover_slave (ecx_contexttcontext,
uint16 slave,
int timeout 
)
-
-
-

Recover slave.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave to recover
[in]timeout= local timeout f.e. EC_TIMEOUTRET3
-
-
-
Returns:
>0 if successful
- -
-
- -
-
- - - - - - - - -
static void ecx_set_slaves_to_default (ecx_contexttcontext) [static]
-
-
- -
-
-

Variable Documentation

- -
-
- - - - -
ecx_mapt_t ecx_mapt[MAX_MAPT]
-
-
- -
-
- -
-
- - - - -
OSAL_THREAD_HANDLE ecx_threadh[MAX_MAPT]
-
-
- -
-
-
- - - diff --git a/doc/html/ethercatconfig_8h.html b/doc/html/ethercatconfig_8h.html deleted file mode 100644 index f592a60..0000000 --- a/doc/html/ethercatconfig_8h.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - -SOEM: ethercatconfig.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Defines | -Functions
-
-
ethercatconfig.h File Reference
-
-
- -

Headerfile for ethercatconfig.c. -More...

- - - - - - - - - -

-Defines

#define EC_NODEOFFSET   0x1000
#define EC_TEMPNODE   0xffff

-Functions

int ecx_config_init (ecx_contextt *context, uint8 usetable)
int ecx_config_map_group (ecx_contextt *context, void *pIOmap, uint8 group)
int ecx_recover_slave (ecx_contextt *context, uint16 slave, int timeout)
int ecx_reconfig_slave (ecx_contextt *context, uint16 slave, int timeout)
-

Detailed Description

-

Headerfile for ethercatconfig.c.

-

Define Documentation

- -
-
- - - - -
#define EC_NODEOFFSET   0x1000
-
-
- -
-
- -
-
- - - - -
#define EC_TEMPNODE   0xffff
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_config_init (ecx_contexttcontext,
uint8 usetable 
)
-
-
-

Enumerate and init all slaves.

-
Parameters:
- - - -
[in]context= context struct
[in]usetable= TRUE when using configtable to init slaves, FALSE otherwise
-
-
-
Returns:
Workcounter of slave discover datagram = number of slaves found
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_config_map_group (ecx_contexttcontext,
void * pIOmap,
uint8 group 
)
-
-
-

Map all PDOs in one group of slaves to IOmap.

-
Parameters:
- - - - -
[in]context= context struct
[out]pIOmap= pointer to IOmap
[in]group= group to map, 0 = all groups
-
-
-
Returns:
IOmap size
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_reconfig_slave (ecx_contexttcontext,
uint16 slave,
int timeout 
)
-
-
-

Reconfigure slave.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave to reconfigure
[in]timeout= local timeout f.e. EC_TIMEOUTRET3
-
-
-
Returns:
Slave state
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_recover_slave (ecx_contexttcontext,
uint16 slave,
int timeout 
)
-
-
-

Recover slave.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave to recover
[in]timeout= local timeout f.e. EC_TIMEOUTRET3
-
-
-
Returns:
>0 if successful
- -
-
-
- - - diff --git a/doc/html/ethercatconfiglist_8h.html b/doc/html/ethercatconfiglist_8h.html deleted file mode 100644 index d54a57e..0000000 --- a/doc/html/ethercatconfiglist_8h.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - -SOEM: ethercatconfiglist.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Defines | -Variables
-
-
ethercatconfiglist.h File Reference
-
-
- -

DEPRICATED Configuration list of known EtherCAT slave devices. -More...

- - - - - -

-Defines

#define EC_CONFIGEND   0xffffffff

-Variables

ec_configlist_t ec_configlist []
-

Detailed Description

-

DEPRICATED Configuration list of known EtherCAT slave devices.

-

If a slave is found in this list it is configured according to the parameters in the list. Otherwise the configuration info is read directly from the slave EEPROM (SII or Slave Information Interface).

-

Define Documentation

- -
-
- - - - -
#define EC_CONFIGEND   0xffffffff
-
-
- -
-
-

Variable Documentation

- -
- -
-Initial value:
 {
-      {0x00000000,0x00000000,""          ,0, 0, 0,     0,         0,     0,         0,0,0},
-      {0x00000002,0x044c2c52,"EK1100"    ,1, 0, 0,     0,         0,     0,         0,0,0},
-      {0x00000002,0x03ea3052,"EL1002"    ,2, 2, 0,     0,         0,     0,         0,0,0},
-      {0x00000002,0x03ec3052,"EL1004"    ,2, 4, 0,     0,         0,     0,         0,0,0},
-      {0x00000002,0x03f43052,"EL1012"    ,2, 2, 0,     0,         0,     0,         0,0,0},
-      {0x00000002,0x03f63052,"EL1014"    ,2, 4, 0,     0,         0,     0,         0,0,0},
-      {0x00000002,0x03fa3052,"EL1018"    ,2, 8, 0,     0,         0,     0,         0,0,0},
-      {0x00000002,0x07d23052,"EL2002"    ,3, 0, 2,     0,         0,     0,         0,0,0},
-      {0x00000002,0x07d43052,"EL2004"    ,3, 0, 4,     0,         0,     0,         0,0,0},
-      {0x00000002,0x07d83052,"EL2008"    ,3, 0, 8,     0,         0,     0,         0,0,0},
-      {0x00000002,0x07f03052,"EL2032"    ,6, 2, 2,     0,         0,     0,         0,0,0},
-      {0x00000002,0x0c1e3052,"EL3102"    ,4,48, 0,0x1000,0x00000024,0x1100,0x00010020,0,1},
-      {0x00000002,0x0c283052,"EL3112"    ,4,48, 0,0x1000,0x00000024,0x1100,0x00010020,0,1},
-      {0x00000002,0x0c323052,"EL3122"    ,4,48, 0,0x1000,0x00000024,0x1100,0x00010020,0,1},
-      {0x00000002,0x0c463052,"EL3142"    ,4,48, 0,0x1000,0x00000024,0x1100,0x00010020,0,1},
-      {0x00000002,0x0c503052,"EL3152"    ,4,48, 0,0x1000,0x00000024,0x1100,0x00010020,0,1},
-      {0x00000002,0x0c5a3052,"EL3162"    ,4,48, 0,0x1000,0x00000024,0x1100,0x00010020,0,1},
-      {0x00000002,0x0fc03052,"EL4032"    ,5, 0,32,0x1100,0x00010024,0x1180,0x00000022,1,0},
-      {0x00000002,0x10063052,"EL4102"    ,5, 0,32,0x1000,0x00010024,0x1100,0x00000022,1,0},
-      {0x00000002,0x10103052,"EL4112"    ,5, 0,32,0x1000,0x00010024,0x1100,0x00000022,1,0},
-      {0x00000002,0x101a3052,"EL4122"    ,5, 0,32,0x1000,0x00010024,0x1100,0x00000022,1,0},
-      {0x00000002,0x10243052,"EL4132"    ,5, 0,32,0x1000,0x00010024,0x1100,0x00000022,1,0},
-      {0x00000002,0x13ed3052,"EL5101"    ,7,40,24,0x1000,0x00010024,0x1100,0x00010020,1,1},
-      {EC_CONFIGEND,0x00000000,""        ,0, 0, 0,     0,         0,     0,         0,0,0}
-}
-
-
-
-
- - - diff --git a/doc/html/ethercatdc_8c.html b/doc/html/ethercatdc_8c.html deleted file mode 100644 index 8d36a36..0000000 --- a/doc/html/ethercatdc_8c.html +++ /dev/null @@ -1,487 +0,0 @@ - - - - -SOEM: ethercatdc.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Defines | -Functions
-
-
ethercatdc.c File Reference
-
-
- -

Distributed Clock EtherCAT functions. -More...

-
#include "oshw.h"
-#include "osal.h"
-#include "ethercattype.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatdc.h"
-
- - - - - - - - - - - - - - - - -

-Defines

#define PORTM0   0x01
#define PORTM1   0x02
#define PORTM2   0x04
#define PORTM3   0x08
#define SyncDelay   ((int32)100000000)

-Functions

void ecx_dcsync0 (ecx_contextt *context, uint16 slave, boolean act, uint32 CyclTime, uint32 CyclShift)
void ecx_dcsync01 (ecx_contextt *context, uint16 slave, boolean act, uint32 CyclTime0, uint32 CyclTime1, uint32 CyclShift)
static int32 ecx_porttime (ecx_contextt *context, uint16 slave, uint8 port)
static uint8 ecx_prevport (ecx_contextt *context, uint16 slave, uint8 port)
static uint8 ecx_parentport (ecx_contextt *context, uint16 parent)
boolean ecx_configdc (ecx_contextt *context)
void ec_dcsync0 (uint16 slave, boolean act, uint32 CyclTime, uint32 CyclShift)
void ec_dcsync01 (uint16 slave, boolean act, uint32 CyclTime0, uint32 CyclTime1, uint32 CyclShift)
boolean ec_configdc (void)
-

Detailed Description

-

Distributed Clock EtherCAT functions.

-

Define Documentation

- -
-
- - - - -
#define PORTM0   0x01
-
-
- -
-
- -
-
- - - - -
#define PORTM1   0x02
-
-
- -
-
- -
-
- - - - -
#define PORTM2   0x04
-
-
- -
-
- -
-
- - - - -
#define PORTM3   0x08
-
-
- -
-
- -
-
- - - - -
#define SyncDelay   ((int32)100000000)
-
-
-

1st sync pulse delay in ns here 100ms

- -
-
-

Function Documentation

- -
-
- - - - - - - - -
boolean ec_configdc (void )
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ec_dcsync0 (uint16 slave,
boolean act,
uint32 CyclTime,
uint32 CyclShift 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ec_dcsync01 (uint16 slave,
boolean act,
uint32 CyclTime0,
uint32 CyclTime1,
uint32 CyclShift 
)
-
-
- -
-
- -
-
- - - - - - - - -
boolean ecx_configdc (ecx_contexttcontext)
-
-
-

Locate DC slaves, measure propagation delays.

-
Parameters:
- - -
[in]context= context struct
-
-
-
Returns:
boolean if slaves are found with DC
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_dcsync0 (ecx_contexttcontext,
uint16 slave,
boolean act,
uint32 CyclTime,
uint32 CyclShift 
)
-
-
-

Set DC of slave to fire sync0 at CyclTime interval with CyclShift offset.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]slaveSlave number.
[in]actTRUE = active, FALSE = deactivated
[in]CyclTimeCycltime in ns.
[in]CyclShiftCyclShift in ns.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_dcsync01 (ecx_contexttcontext,
uint16 slave,
boolean act,
uint32 CyclTime0,
uint32 CyclTime1,
uint32 CyclShift 
)
-
-
-

Set DC of slave to fire sync0 and sync1 at CyclTime interval with CyclShift offset.

-
Parameters:
- - - - - - - -
[in]context= context struct
[in]slaveSlave number.
[in]actTRUE = active, FALSE = deactivated
[in]CyclTime0Cycltime SYNC0 in ns.
[in]CyclTime1Cycltime SYNC1 in ns. This time is a delta time in relation to the SYNC0 fire. If CylcTime1 = 0 then SYNC1 fires a the same time as SYNC0.
[in]CyclShiftCyclShift in ns.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static uint8 ecx_parentport (ecx_contexttcontext,
uint16 parent 
) [static]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static int32 ecx_porttime (ecx_contexttcontext,
uint16 slave,
uint8 port 
) [static]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static uint8 ecx_prevport (ecx_contexttcontext,
uint16 slave,
uint8 port 
) [static]
-
-
- -
-
-
- - - diff --git a/doc/html/ethercatdc_8h.html b/doc/html/ethercatdc_8h.html deleted file mode 100644 index ec2a3fc..0000000 --- a/doc/html/ethercatdc_8h.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - -SOEM: ethercatdc.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Functions
-
-
ethercatdc.h File Reference
-
-
- -

Headerfile for ethercatdc.c. -More...

- - - - - -

-Functions

boolean ecx_configdc (ecx_contextt *context)
void ecx_dcsync0 (ecx_contextt *context, uint16 slave, boolean act, uint32 CyclTime, uint32 CyclShift)
void ecx_dcsync01 (ecx_contextt *context, uint16 slave, boolean act, uint32 CyclTime0, uint32 CyclTime1, uint32 CyclShift)
-

Detailed Description

-

Headerfile for ethercatdc.c.

-

Function Documentation

- -
-
- - - - - - - - -
boolean ecx_configdc (ecx_contexttcontext)
-
-
-

Locate DC slaves, measure propagation delays.

-
Parameters:
- - -
[in]context= context struct
-
-
-
Returns:
boolean if slaves are found with DC
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_dcsync0 (ecx_contexttcontext,
uint16 slave,
boolean act,
uint32 CyclTime,
uint32 CyclShift 
)
-
-
-

Set DC of slave to fire sync0 at CyclTime interval with CyclShift offset.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]slaveSlave number.
[in]actTRUE = active, FALSE = deactivated
[in]CyclTimeCycltime in ns.
[in]CyclShiftCyclShift in ns.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_dcsync01 (ecx_contexttcontext,
uint16 slave,
boolean act,
uint32 CyclTime0,
uint32 CyclTime1,
uint32 CyclShift 
)
-
-
-

Set DC of slave to fire sync0 and sync1 at CyclTime interval with CyclShift offset.

-
Parameters:
- - - - - - - -
[in]context= context struct
[in]slaveSlave number.
[in]actTRUE = active, FALSE = deactivated
[in]CyclTime0Cycltime SYNC0 in ns.
[in]CyclTime1Cycltime SYNC1 in ns. This time is a delta time in relation to the SYNC0 fire. If CylcTime1 = 0 then SYNC1 fires a the same time as SYNC0.
[in]CyclShiftCyclShift in ns.
-
-
- -
-
-
- - - diff --git a/doc/html/ethercatfoe_8c.html b/doc/html/ethercatfoe_8c.html deleted file mode 100644 index fcbb2b0..0000000 --- a/doc/html/ethercatfoe_8c.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - -SOEM: ethercatfoe.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Functions
-
-
ethercatfoe.c File Reference
-
-
- -

File over EtherCAT (FoE) module. -More...

-
#include <stdio.h>
-#include <string.h>
-#include "osal.h"
-#include "oshw.h"
-#include "ethercattype.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatfoe.h"
-
- - - - - - - - - - - -

-Data Structures

struct  ec_FOEt

-Defines

#define EC_MAXFOEDATA   512

-Functions

PACKED_END int ecx_FOEdefinehook (ecx_contextt *context, void *hook)
int ecx_FOEread (ecx_contextt *context, uint16 slave, char *filename, uint32 password, int *psize, void *p, int timeout)
int ecx_FOEwrite (ecx_contextt *context, uint16 slave, char *filename, uint32 password, int psize, void *p, int timeout)
int ec_FOEdefinehook (void *hook)
int ec_FOEread (uint16 slave, char *filename, uint32 password, int *psize, void *p, int timeout)
int ec_FOEwrite (uint16 slave, char *filename, uint32 password, int psize, void *p, int timeout)
-

Detailed Description

-

File over EtherCAT (FoE) module.

-

SDO read / write and SDO service functions

-

Define Documentation

- -
-
- - - - -
#define EC_MAXFOEDATA   512
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
int ec_FOEdefinehook (void * hook)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_FOEread (uint16 slave,
char * filename,
uint32 password,
int * psize,
void * p,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_FOEwrite (uint16 slave,
char * filename,
uint32 password,
int psize,
void * p,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
PACKED_END int ecx_FOEdefinehook (ecx_contexttcontext,
void * hook 
)
-
-
-

FoE progress hook.

-
Parameters:
- - - -
[in]context= context struct
[in]hook= Pointer to hook function.
-
-
-
Returns:
1
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FOEread (ecx_contexttcontext,
uint16 slave,
char * filename,
uint32 password,
int * psize,
void * p,
int timeout 
)
-
-
-

FoE read, blocking.

-
Parameters:
- - - - - - - - -
[in]context= context struct
[in]slave= Slave number.
[in]filename= Filename of file to read.
[in]password= password.
[in,out]psize= Size in bytes of file buffer, returns bytes read from file.
[out]p= Pointer to file buffer
[in]timeout= Timeout per mailbox cycle in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FOEwrite (ecx_contexttcontext,
uint16 slave,
char * filename,
uint32 password,
int psize,
void * p,
int timeout 
)
-
-
-

FoE write, blocking.

-
Parameters:
- - - - - - - - -
[in]context= context struct
[in]slave= Slave number.
[in]filename= Filename of file to write.
[in]password= password.
[in]psize= Size in bytes of file buffer.
[out]p= Pointer to file buffer
[in]timeout= Timeout per mailbox cycle in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
-
- - - diff --git a/doc/html/ethercatfoe_8h.html b/doc/html/ethercatfoe_8h.html deleted file mode 100644 index 2258253..0000000 --- a/doc/html/ethercatfoe_8h.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - -SOEM: ethercatfoe.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Functions
-
-
ethercatfoe.h File Reference
-
-
- -

Headerfile for ethercatfoe.c. -More...

- - - - - -

-Functions

int ecx_FOEdefinehook (ecx_contextt *context, void *hook)
int ecx_FOEread (ecx_contextt *context, uint16 slave, char *filename, uint32 password, int *psize, void *p, int timeout)
int ecx_FOEwrite (ecx_contextt *context, uint16 slave, char *filename, uint32 password, int psize, void *p, int timeout)
-

Detailed Description

-

Headerfile for ethercatfoe.c.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_FOEdefinehook (ecx_contexttcontext,
void * hook 
)
-
-
-

FoE progress hook.

-
Parameters:
- - - -
[in]context= context struct
[in]hook= Pointer to hook function.
-
-
-
Returns:
1
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FOEread (ecx_contexttcontext,
uint16 slave,
char * filename,
uint32 password,
int * psize,
void * p,
int timeout 
)
-
-
-

FoE read, blocking.

-
Parameters:
- - - - - - - - -
[in]context= context struct
[in]slave= Slave number.
[in]filename= Filename of file to read.
[in]password= password.
[in,out]psize= Size in bytes of file buffer, returns bytes read from file.
[out]p= Pointer to file buffer
[in]timeout= Timeout per mailbox cycle in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FOEwrite (ecx_contexttcontext,
uint16 slave,
char * filename,
uint32 password,
int psize,
void * p,
int timeout 
)
-
-
-

FoE write, blocking.

-
Parameters:
- - - - - - - - -
[in]context= context struct
[in]slave= Slave number.
[in]filename= Filename of file to write.
[in]password= password.
[in]psize= Size in bytes of file buffer.
[out]p= Pointer to file buffer
[in]timeout= Timeout per mailbox cycle in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
-
- - - diff --git a/doc/html/ethercatmain_8c.html b/doc/html/ethercatmain_8c.html deleted file mode 100644 index 918549c..0000000 --- a/doc/html/ethercatmain_8c.html +++ /dev/null @@ -1,3341 +0,0 @@ - - - - -SOEM: ethercatmain.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Functions | -Variables
-
-
ethercatmain.c File Reference
-
-
- -

Main EtherCAT functions. -More...

-
#include <stdio.h>
-#include <string.h>
-#include "osal.h"
-#include "oshw.h"
-#include "ethercattype.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  ec_eepromt
struct  ec_mbxerrort
struct  ec_emcyt

-Defines

#define EC_LOCALDELAY   200
#define MAX_FPRD_MULTI   64

-Functions

ec_adaptert * ec_find_adapters (void)
void ec_free_adapters (ec_adaptert *adapter)
void ecx_pusherror (ecx_contextt *context, const ec_errort *Ec)
boolean ecx_poperror (ecx_contextt *context, ec_errort *Ec)
boolean ecx_iserror (ecx_contextt *context)
void ecx_packeterror (ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode)
static void ecx_mbxerror (ecx_contextt *context, uint16 Slave, uint16 Detail)
static void ecx_mbxemergencyerror (ecx_contextt *context, uint16 Slave, uint16 ErrorCode, uint16 ErrorReg, uint8 b1, uint16 w1, uint16 w2)
int ecx_init (ecx_contextt *context, char *ifname)
int ecx_init_redundant (ecx_contextt *context, ecx_redportt *redport, char *ifname, char *if2name)
void ecx_close (ecx_contextt *context)
uint8 ecx_siigetbyte (ecx_contextt *context, uint16 slave, uint16 address)
int16 ecx_siifind (ecx_contextt *context, uint16 slave, uint16 cat)
void ecx_siistring (ecx_contextt *context, char *str, uint16 slave, uint16 Sn)
uint16 ecx_siiFMMU (ecx_contextt *context, uint16 slave, ec_eepromFMMUt *FMMU)
uint16 ecx_siiSM (ecx_contextt *context, uint16 slave, ec_eepromSMt *SM)
uint16 ecx_siiSMnext (ecx_contextt *context, uint16 slave, ec_eepromSMt *SM, uint16 n)
int ecx_siiPDO (ecx_contextt *context, uint16 slave, ec_eepromPDOt *PDO, uint8 t)
int ecx_FPRD_multi (ecx_contextt *context, int n, uint16 *configlst, ec_alstatust *slstatlst, int timeout)
int ecx_readstate (ecx_contextt *context)
int ecx_writestate (ecx_contextt *context, uint16 slave)
uint16 ecx_statecheck (ecx_contextt *context, uint16 slave, uint16 reqstate, int timeout)
uint8 ec_nextmbxcnt (uint8 cnt)
void ec_clearmbx (ec_mbxbuft *Mbx)
int ecx_mbxempty (ecx_contextt *context, uint16 slave, int timeout)
int ecx_mbxsend (ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout)
int ecx_mbxreceive (ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout)
void ecx_esidump (ecx_contextt *context, uint16 slave, uint8 *esibuf)
uint32 ecx_readeeprom (ecx_contextt *context, uint16 slave, uint16 eeproma, int timeout)
int ecx_writeeeprom (ecx_contextt *context, uint16 slave, uint16 eeproma, uint16 data, int timeout)
int ecx_eeprom2master (ecx_contextt *context, uint16 slave)
int ecx_eeprom2pdi (ecx_contextt *context, uint16 slave)
uint16 ecx_eeprom_waitnotbusyAP (ecx_contextt *context, uint16 aiadr, uint16 *estat, int timeout)
uint64 ecx_readeepromAP (ecx_contextt *context, uint16 aiadr, uint16 eeproma, int timeout)
int ecx_writeeepromAP (ecx_contextt *context, uint16 aiadr, uint16 eeproma, uint16 data, int timeout)
uint16 ecx_eeprom_waitnotbusyFP (ecx_contextt *context, uint16 configadr, uint16 *estat, int timeout)
uint64 ecx_readeepromFP (ecx_contextt *context, uint16 configadr, uint16 eeproma, int timeout)
int ecx_writeeepromFP (ecx_contextt *context, uint16 configadr, uint16 eeproma, uint16 data, int timeout)
void ecx_readeeprom1 (ecx_contextt *context, uint16 slave, uint16 eeproma)
uint32 ecx_readeeprom2 (ecx_contextt *context, uint16 slave, int timeout)
static void ecx_pushindex (ecx_contextt *context, uint8 idx, void *data, uint16 length)
static int ecx_pullindex (ecx_contextt *context)
int ecx_send_processdata_group (ecx_contextt *context, uint8 group)
int ecx_receive_processdata_group (ecx_contextt *context, uint8 group, int timeout)
int ecx_send_processdata (ecx_contextt *context)
int ecx_receive_processdata (ecx_contextt *context, int timeout)
void ec_pusherror (const ec_errort *Ec)
boolean ec_poperror (ec_errort *Ec)
boolean ec_iserror (void)
void ec_packeterror (uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode)
int ec_init (char *ifname)
int ec_init_redundant (char *ifname, char *if2name)
void ec_close (void)
uint8 ec_siigetbyte (uint16 slave, uint16 address)
int16 ec_siifind (uint16 slave, uint16 cat)
void ec_siistring (char *str, uint16 slave, uint16 Sn)
uint16 ec_siiFMMU (uint16 slave, ec_eepromFMMUt *FMMU)
uint16 ec_siiSM (uint16 slave, ec_eepromSMt *SM)
uint16 ec_siiSMnext (uint16 slave, ec_eepromSMt *SM, uint16 n)
int ec_siiPDO (uint16 slave, ec_eepromPDOt *PDO, uint8 t)
int ec_readstate (void)
int ec_writestate (uint16 slave)
uint16 ec_statecheck (uint16 slave, uint16 reqstate, int timeout)
int ec_mbxempty (uint16 slave, int timeout)
int ec_mbxsend (uint16 slave, ec_mbxbuft *mbx, int timeout)
int ec_mbxreceive (uint16 slave, ec_mbxbuft *mbx, int timeout)
void ec_esidump (uint16 slave, uint8 *esibuf)
uint32 ec_readeeprom (uint16 slave, uint16 eeproma, int timeout)
int ec_writeeeprom (uint16 slave, uint16 eeproma, uint16 data, int timeout)
int ec_eeprom2master (uint16 slave)
int ec_eeprom2pdi (uint16 slave)
uint16 ec_eeprom_waitnotbusyAP (uint16 aiadr, uint16 *estat, int timeout)
uint64 ec_readeepromAP (uint16 aiadr, uint16 eeproma, int timeout)
int ec_writeeepromAP (uint16 aiadr, uint16 eeproma, uint16 data, int timeout)
uint16 ec_eeprom_waitnotbusyFP (uint16 configadr, uint16 *estat, int timeout)
uint64 ec_readeepromFP (uint16 configadr, uint16 eeproma, int timeout)
int ec_writeeepromFP (uint16 configadr, uint16 eeproma, uint16 data, int timeout)
void ec_readeeprom1 (uint16 slave, uint16 eeproma)
uint32 ec_readeeprom2 (uint16 slave, int timeout)
int ec_send_processdata_group (uint8 group)
int ec_receive_processdata_group (uint8 group, int timeout)
int ec_send_processdata (void)
int ec_receive_processdata (int timeout)

-Variables

PACKED_END ec_slavet ec_slave [EC_MAXSLAVE]
int ec_slavecount
ec_groupt ec_group [EC_MAXGROUP]
static uint8 ec_esibuf [EC_MAXEEPBUF]
static uint32 ec_esimap [EC_MAXEEPBITMAP]
static ec_eringt ec_elist
static ec_idxstackT ec_idxstack
static ec_SMcommtypet ec_SMcommtype
static ec_PDOassignt ec_PDOassign
static ec_PDOdesct ec_PDOdesc
static ec_eepromSMt ec_SM
static ec_eepromFMMUt ec_FMMU
boolean EcatError = FALSE
int64 ec_DCtime
ecx_portt ecx_port
ecx_redportt ecx_redport
ecx_contextt ecx_context
-

Detailed Description

-

Main EtherCAT functions.

-

Initialisation, state set and read, mailbox primitives, EEPROM primitives, SII reading and processdata exchange.

-

Defines ec_slave[]. All slave information is put in this structure. Needed for most user interaction with slaves.

-

Define Documentation

- -
-
- - - - -
#define EC_LOCALDELAY   200
-
-
-

delay in us for eeprom ready loop

- -
-
- -
-
- - - - -
#define MAX_FPRD_MULTI   64
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
void ec_clearmbx (ec_mbxbuftMbx)
-
-
-

Clear mailbox buffer.

-
Parameters:
- - -
[out]Mbx= Mailbox buffer to clear
-
-
- -
-
- -
-
- - - - - - - - -
void ec_close (void )
-
-
- -
-
- -
-
- - - - - - - - -
int ec_eeprom2master (uint16 slave)
-
-
- -
-
- -
-
- - - - - - - - -
int ec_eeprom2pdi (uint16 slave)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ec_eeprom_waitnotbusyAP (uint16 aiadr,
uint16 * estat,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ec_eeprom_waitnotbusyFP (uint16 configadr,
uint16 * estat,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void ec_esidump (uint16 slave,
uint8 * esibuf 
)
-
-
- -
-
- -
-
- - - - - - - - -
ec_adaptert* ec_find_adapters (void )
-
-
-

Create list over available network adapters.

-
Returns:
First element in list over available network adapters.
- -
-
- -
-
- - - - - - - - -
void ec_free_adapters (ec_adaptert * adapter)
-
-
-

Free dynamically allocated list over available network adapters.

-
Parameters:
- - -
[in]adapter= Struct holding adapter name, description and pointer to next.
-
-
- -
-
- -
-
- - - - - - - - -
int ec_init (char * ifname)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_init_redundant (char * ifname,
char * if2name 
)
-
-
- -
-
- -
-
- - - - - - - - -
boolean ec_iserror (void )
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_mbxempty (uint16 slave,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ec_mbxreceive (uint16 slave,
ec_mbxbuftmbx,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ec_mbxsend (uint16 slave,
ec_mbxbuftmbx,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - -
uint8 ec_nextmbxcnt (uint8 cnt)
-
-
-

Get index of next mailbox counter value. Used for Mailbox Link Layer.

-
Parameters:
- - -
[in]cnt= Mailbox counter value [0..7]
-
-
-
Returns:
next mailbox counter value
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ec_packeterror (uint16 Slave,
uint16 Index,
uint8 SubIdx,
uint16 ErrorCode 
)
-
-
- -
-
- -
-
- - - - - - - - -
boolean ec_poperror (ec_errortEc)
-
-
- -
-
- -
-
- - - - - - - - -
void ec_pusherror (const ec_errortEc)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint32 ec_readeeprom (uint16 slave,
uint16 eeproma,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void ec_readeeprom1 (uint16 slave,
uint16 eeproma 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
uint32 ec_readeeprom2 (uint16 slave,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint64 ec_readeepromAP (uint16 aiadr,
uint16 eeproma,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint64 ec_readeepromFP (uint16 configadr,
uint16 eeproma,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - -
int ec_readstate (void )
-
-
- -
-
- -
-
- - - - - - - - -
int ec_receive_processdata (int timeout)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ec_receive_processdata_group (uint8 group,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - -
int ec_send_processdata (void )
-
-
- -
-
- -
-
- - - - - - - - -
int ec_send_processdata_group (uint8 group)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int16 ec_siifind (uint16 slave,
uint16 cat 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
uint16 ec_siiFMMU (uint16 slave,
ec_eepromFMMUtFMMU 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
uint8 ec_siigetbyte (uint16 slave,
uint16 address 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ec_siiPDO (uint16 slave,
ec_eepromPDOtPDO,
uint8 t 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
uint16 ec_siiSM (uint16 slave,
ec_eepromSMtSM 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ec_siiSMnext (uint16 slave,
ec_eepromSMtSM,
uint16 n 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void ec_siistring (char * str,
uint16 slave,
uint16 Sn 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ec_statecheck (uint16 slave,
uint16 reqstate,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_writeeeprom (uint16 slave,
uint16 eeproma,
uint16 data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_writeeepromAP (uint16 aiadr,
uint16 eeproma,
uint16 data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_writeeepromFP (uint16 configadr,
uint16 eeproma,
uint16 data,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - -
int ec_writestate (uint16 slave)
-
-
- -
-
- -
-
- - - - - - - - -
void ecx_close (ecx_contexttcontext)
-
-
-

Close lib.

-
Parameters:
- - -
[in]context= context struct
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_eeprom2master (ecx_contexttcontext,
uint16 slave 
)
-
-
-

Set eeprom control to master. Only if set to PDI.

-
Parameters:
- - - -
[in]context= context struct
[in]slave= Slave number
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_eeprom2pdi (ecx_contexttcontext,
uint16 slave 
)
-
-
-

Set eeprom control to PDI. Only if set to master.

-
Parameters:
- - - -
[in]context= context struct
[in]slave= Slave number
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_eeprom_waitnotbusyAP (ecx_contexttcontext,
uint16 aiadr,
uint16 * estat,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_eeprom_waitnotbusyFP (ecx_contexttcontext,
uint16 configadr,
uint16 * estat,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_esidump (ecx_contexttcontext,
uint16 slave,
uint8 * esibuf 
)
-
-
-

Dump complete EEPROM data from slave in buffer.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= Slave number
[out]esibuf= EEPROM data buffer, make sure it is big enough.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_FPRD_multi (ecx_contexttcontext,
int n,
uint16 * configlst,
ec_alstatustslstatlst,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_init (ecx_contexttcontext,
char * ifname 
)
-
-
-

Initialise lib in single NIC mode

-
Parameters:
- - - -
[in]context= context struct
[in]ifname= Dev name, f.e. "eth0"
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_init_redundant (ecx_contexttcontext,
ecx_redportt * redport,
char * ifname,
char * if2name 
)
-
-
-

Initialise lib in redundant NIC mode

-
Parameters:
- - - - - -
[in]context= context struct
[in]redport= pointer to redport, redundant port data
[in]ifname= Primary Dev name, f.e. "eth0"
[in]if2name= Secondary Dev name, f.e. "eth1"
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - -
boolean ecx_iserror (ecx_contexttcontext)
-
-
-

Check if error list has entries.

-
Parameters:
- - -
[in]context= context struct
-
-
-
Returns:
TRUE if error list contains entries.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static void ecx_mbxemergencyerror (ecx_contexttcontext,
uint16 Slave,
uint16 ErrorCode,
uint16 ErrorReg,
uint8 b1,
uint16 w1,
uint16 w2 
) [static]
-
-
-

Report Mailbox Emergency Error

-
Parameters:
- - - - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]ErrorCode= Following EtherCAT specification
[in]ErrorReg
[in]b1
[in]w1
[in]w2
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_mbxempty (ecx_contexttcontext,
uint16 slave,
int timeout 
)
-
-
-

Check if IN mailbox of slave is empty.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= Slave number
[in]timeout= Timeout in us
-
-
-
Returns:
>0 is success
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static void ecx_mbxerror (ecx_contexttcontext,
uint16 Slave,
uint16 Detail 
) [static]
-
-
-

Report Mailbox Error

-
Parameters:
- - - - -
[in]context= context struct
[in]Slave= Slave number
[in]Detail= Following EtherCAT specification
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_mbxreceive (ecx_contexttcontext,
uint16 slave,
ec_mbxbuftmbx,
int timeout 
)
-
-
-

Read OUT mailbox from slave. Supports Mailbox Link Layer with repeat requests.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number
[out]mbx= Mailbox data
[in]timeout= Timeout in us
-
-
-
Returns:
Work counter (>0 is success)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_mbxsend (ecx_contexttcontext,
uint16 slave,
ec_mbxbuftmbx,
int timeout 
)
-
-
-

Write IN mailbox to slave.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number
[out]mbx= Mailbox data
[in]timeout= Timeout in us
-
-
-
Returns:
Work counter (>0 is success)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_packeterror (ecx_contexttcontext,
uint16 Slave,
uint16 Index,
uint8 SubIdx,
uint16 ErrorCode 
)
-
-
-

Report packet error

-
Parameters:
- - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]Index= Index that generated error
[in]SubIdx= Subindex that generated error
[in]ErrorCode= Error code
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
boolean ecx_poperror (ecx_contexttcontext,
ec_errortEc 
)
-
-
-

Pops an error from the list.

-
Parameters:
- - - -
[in]context= context struct
[out]Ec= Struct describing the error.
-
-
-
Returns:
TRUE if an error was popped.
- -
-
- -
-
- - - - - - - - -
static int ecx_pullindex (ecx_contexttcontext) [static]
-
-
-

Pull index of segmented LRD/LWR/LRW combination.

-
Parameters:
- - -
[in]context= context struct
-
-
-
Returns:
Stack location, -1 if stack is empty.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void ecx_pusherror (ecx_contexttcontext,
const ec_errortEc 
)
-
-
-

Pushes an error on the error list.

-
Parameters:
- - - -
[in]context= context struct
[in]Ecpointer describing the error.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static void ecx_pushindex (ecx_contexttcontext,
uint8 idx,
void * data,
uint16 length 
) [static]
-
-
-

Push index of segmented LRD/LWR/LRW combination.

-
Parameters:
- - - - - -
[in]context= context struct
[in]idx= Used datagram index.
[in]data= Pointer to process data segment.
[in]length= Length of data segment in bytes.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint32 ecx_readeeprom (ecx_contexttcontext,
uint16 slave,
uint16 eeproma,
int timeout 
)
-
-
-

Read EEPROM from slave bypassing cache.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number
[in]eeproma= (WORD) Address in the EEPROM
[in]timeout= Timeout in us.
-
-
-
Returns:
EEPROM data 32bit
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_readeeprom1 (ecx_contexttcontext,
uint16 slave,
uint16 eeproma 
)
-
-
-

Read EEPROM from slave bypassing cache. Parallel read step 1, make request to slave.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= Slave number
[in]eeproma= (WORD) Address in the EEPROM
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint32 ecx_readeeprom2 (ecx_contexttcontext,
uint16 slave,
int timeout 
)
-
-
-

Read EEPROM from slave bypassing cache. Parallel read step 2, actual read from slave.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= Slave number
[in]timeout= Timeout in us.
-
-
-
Returns:
EEPROM data 32bit
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint64 ecx_readeepromAP (ecx_contexttcontext,
uint16 aiadr,
uint16 eeproma,
int timeout 
)
-
-
-

Read EEPROM from slave bypassing cache. APRD method.

-
Parameters:
- - - - - -
[in]context= context struct
[in]aiadr= auto increment address of slave
[in]eeproma= (WORD) Address in the EEPROM
[in]timeout= Timeout in us.
-
-
-
Returns:
EEPROM data 64bit or 32bit
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint64 ecx_readeepromFP (ecx_contexttcontext,
uint16 configadr,
uint16 eeproma,
int timeout 
)
-
-
-

Read EEPROM from slave bypassing cache. FPRD method.

-
Parameters:
- - - - - -
[in]context= context struct
[in]configadr= configured address of slave
[in]eeproma= (WORD) Address in the EEPROM
[in]timeout= Timeout in us.
-
-
-
Returns:
EEPROM data 64bit or 32bit
- -
-
- -
-
- - - - - - - - -
int ecx_readstate (ecx_contexttcontext)
-
-
-

Read all slave states in ec_slave.

-
Parameters:
- - -
[in]context= context struct
-
-
-
Returns:
lowest state found
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_receive_processdata (ecx_contexttcontext,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_receive_processdata_group (ecx_contexttcontext,
uint8 group,
int timeout 
)
-
-
-

Receive processdata from slaves. Second part from ec_send_processdata(). Received datagrams are recombined with the processdata with help from the stack. If a datagram contains input processdata it copies it to the processdata structure.

-
Parameters:
- - - - -
[in]context= context struct
[in]group= group number
[in]timeout= Timeout in us.
-
-
-
Returns:
Work counter.
- -
-
- -
-
- - - - - - - - -
int ecx_send_processdata (ecx_contexttcontext)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_send_processdata_group (ecx_contexttcontext,
uint8 group 
)
-
-
-

Transmit processdata to slaves. Uses LRW, or LRD/LWR if LRW is not allowed (blockLRW). Both the input and output processdata are transmitted. The outputs with the actual data, the inputs have a placeholder. The inputs are gathered with the receive processdata function. In contrast to the base LRW function this function is non-blocking. If the processdata does not fit in one datagram, multiple are used. In order to recombine the slave response, a stack is used.

-
Parameters:
- - - -
[in]context= context struct
[in]group= group number
-
-
-
Returns:
>0 if processdata is transmitted.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int16 ecx_siifind (ecx_contexttcontext,
uint16 slave,
uint16 cat 
)
-
-
-

Find SII section header in slave EEPROM.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave number
[in]cat= section category
-
-
-
Returns:
byte address of section at section length entry, if not available then 0
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_siiFMMU (ecx_contexttcontext,
uint16 slave,
ec_eepromFMMUtFMMU 
)
-
-
-

Get FMMU data from SII FMMU section in slave EEPROM.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave number
[out]FMMU= FMMU struct from SII, max. 4 FMMU's
-
-
-
Returns:
number of FMMU's defined in section
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint8 ecx_siigetbyte (ecx_contexttcontext,
uint16 slave,
uint16 address 
)
-
-
-

Read one byte from slave EEPROM via cache. If the cache location is empty then a read request is made to the slave. Depending on the slave capabillities the request is 4 or 8 bytes.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave number
[in]address= eeprom address in bytes (slave uses words)
-
-
-
Returns:
requested byte, if not available then 0xff
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_siiPDO (ecx_contexttcontext,
uint16 slave,
ec_eepromPDOtPDO,
uint8 t 
)
-
-
-

Get PDO data from SII PDO section in slave EEPROM.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= slave number
[out]PDO= PDO struct from SII
[in]t= 0=RXPDO 1=TXPDO
-
-
-
Returns:
mapping size in bits of PDO
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_siiSM (ecx_contexttcontext,
uint16 slave,
ec_eepromSMtSM 
)
-
-
-

Get SM data from SII SM section in slave EEPROM.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave number
[out]SM= first SM struct from SII
-
-
-
Returns:
number of SM's defined in section
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_siiSMnext (ecx_contexttcontext,
uint16 slave,
ec_eepromSMtSM,
uint16 n 
)
-
-
-

Get next SM data from SII SM section in slave EEPROM.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= slave number
[out]SM= first SM struct from SII
[in]n= SM number
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_siistring (ecx_contexttcontext,
char * str,
uint16 slave,
uint16 Sn 
)
-
-
-

Get string from SII string section in slave EEPROM.

-
Parameters:
- - - - - -
[in]context= context struct
[out]str= requested string, 0x00 if not found
[in]slave= slave number
[in]Sn= string number
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_statecheck (ecx_contexttcontext,
uint16 slave,
uint16 reqstate,
int timeout 
)
-
-
-

Check actual slave state. This is a blocking function.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number, 0 = all slaves
[in]reqstate= Requested state
[in]timeout= Timout value in us
-
-
-
Returns:
Requested state, or found state after timeout.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_writeeeprom (ecx_contexttcontext,
uint16 slave,
uint16 eeproma,
uint16 data,
int timeout 
)
-
-
-

Write EEPROM to slave bypassing cache.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]eeproma= (WORD) Address in the EEPROM
[in]data= 16bit data
[in]timeout= Timeout in us.
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_writeeepromAP (ecx_contexttcontext,
uint16 aiadr,
uint16 eeproma,
uint16 data,
int timeout 
)
-
-
-

Write EEPROM to slave bypassing cache. APWR method.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]aiadr= configured address of slave
[in]eeproma= (WORD) Address in the EEPROM
[in]data= 16bit data
[in]timeout= Timeout in us.
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_writeeepromFP (ecx_contexttcontext,
uint16 configadr,
uint16 eeproma,
uint16 data,
int timeout 
)
-
-
-

Write EEPROM to slave bypassing cache. FPWR method.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]configadr= configured address of slave
[in]eeproma= (WORD) Address in the EEPROM
[in]data= 16bit data
[in]timeout= Timeout in us.
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_writestate (ecx_contexttcontext,
uint16 slave 
)
-
-
-

Write slave state, if slave = 0 then write to all slaves. The function does not check if the actual state is changed.

-
Parameters:
- - - -
[in]context= context struct
[in]slave= Slave number, 0 = master
-
-
-
Returns:
0
- -
-
-

Variable Documentation

- -
-
- - - - -
int64 ec_DCtime
-
-
- -
-
- -
-
- - - - -
ec_eringt ec_elist [static]
-
-
-

current slave for EEPROM cache buffer

- -
-
- -
-
- - - - -
uint8 ec_esibuf[EC_MAXEEPBUF] [static]
-
-
-

cache for EEPROM read functions

- -
-
- -
-
- - - - -
uint32 ec_esimap[EC_MAXEEPBITMAP] [static]
-
-
-

bitmap for filled cache buffer bytes

- -
-
- -
-
- - - - -
ec_eepromFMMUt ec_FMMU [static]
-
-
-

buffer for EEPROM FMMU data

- -
-
- -
-
- - - - -
ec_groupt ec_group[EC_MAXGROUP]
-
-
-

slave group structure

- -
-
- -
-
- - - - -
ec_idxstackT ec_idxstack [static]
-
-
- -
-
- -
-
- - - - -
ec_PDOassignt ec_PDOassign [static]
-
-
-

PDO assign struct to store data of one slave

- -
-
- -
-
- - - - -
ec_PDOdesct ec_PDOdesc [static]
-
-
-

PDO description struct to store data of one slave

- -
-
- -
-
- - - - -
PACKED_END ec_slavet ec_slave[EC_MAXSLAVE]
-
-
-

Main slave data array. Each slave found on the network gets its own record. ec_slave[0] is reserved for the master. Structure gets filled in by the configuration function ec_config().

- -
-
- -
-
- - - - -
int ec_slavecount
-
-
-

number of slaves found on the network

- -
-
- -
-
- - - - -
ec_eepromSMt ec_SM [static]
-
-
-

buffer for EEPROM SM data

- -
-
- -
-
- - - - -
ec_SMcommtypet ec_SMcommtype [static]
-
-
-

SyncManager Communication Type struct to store data of one slave

- -
-
- -
-
- - - - -
boolean EcatError = FALSE
-
-
-

Global variable TRUE if error available in error stack

- -
-
- -
- -
-Initial value:
 {
-    &ecx_port,       
-    &ec_slave[0],    
-    &ec_slavecount,  
-    EC_MAXSLAVE,     
-    &ec_group[0],    
-    EC_MAXGROUP,     
-    &ec_esibuf[0],   
-    &ec_esimap[0],   
-    0,               
-    &ec_elist,       
-    &ec_idxstack,    
-    &EcatError,      
-    0,               
-    0,               
-    &ec_DCtime,      
-    &ec_SMcommtype,  
-    &ec_PDOassign,   
-    &ec_PDOdesc,     
-    &ec_SM,          
-    &ec_FMMU,        
-    NULL             
-}
-
-
-
- -
-
- - - - -
ecx_portt ecx_port
-
-
- -
-
- -
-
- - - - -
ecx_redportt ecx_redport
-
-
- -
-
-
- - - diff --git a/doc/html/ethercatmain_8h.html b/doc/html/ethercatmain_8h.html deleted file mode 100644 index d2cd9ce..0000000 --- a/doc/html/ethercatmain_8h.html +++ /dev/null @@ -1,2045 +0,0 @@ - - - - -SOEM: ethercatmain.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Typedefs | -Functions
-
-
ethercatmain.h File Reference
-
-
- -

Headerfile for ethercatmain.c. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  ec_adaptert
struct  ec_fmmut
struct  ec_smt
struct  ec_state_status
struct  ec_slavet
struct  ec_groupt
struct  ec_eepromFMMUt
struct  ec_eepromSMt
struct  ec_eepromPDOt
struct  ec_mbxheadert
struct  ec_alstatust
struct  ec_idxstackT
struct  ec_eringt
struct  ec_SMcommtypet
struct  ec_PDOassignt
struct  ec_PDOdesct
struct  ecx_contextt

-Defines

#define EC_MAXELIST   64
#define EC_MAXNAME   40
#define EC_MAXSLAVE   200
#define EC_MAXGROUP   2
#define EC_MAXIOSEGMENTS   64
#define EC_MAXMBX   1486
#define EC_MAXEEPDO   0x200
#define EC_MAXSM   8
#define EC_MAXFMMU   4
#define EC_MAXLEN_ADAPTERNAME   128
#define ECT_MBXPROT_AOE   0x0001
#define ECT_MBXPROT_EOE   0x0002
#define ECT_MBXPROT_COE   0x0004
#define ECT_MBXPROT_FOE   0x0008
#define ECT_MBXPROT_SOE   0x0010
#define ECT_MBXPROT_VOE   0x0020
#define ECT_COEDET_SDO   0x01
#define ECT_COEDET_SDOINFO   0x02
#define ECT_COEDET_PDOASSIGN   0x04
#define ECT_COEDET_PDOCONFIG   0x08
#define ECT_COEDET_UPLOAD   0x10
#define ECT_COEDET_SDOCA   0x20
#define EC_SMENABLEMASK   0xfffeffff

-Typedefs

typedef uint8 ec_mbxbuft [EC_MAXMBX+1]

-Functions

ec_adaptert * ec_find_adapters (void)
void ec_free_adapters (ec_adaptert *adapter)
uint8 ec_nextmbxcnt (uint8 cnt)
void ec_clearmbx (ec_mbxbuft *Mbx)
void ecx_pusherror (ecx_contextt *context, const ec_errort *Ec)
boolean ecx_poperror (ecx_contextt *context, ec_errort *Ec)
boolean ecx_iserror (ecx_contextt *context)
void ecx_packeterror (ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode)
int ecx_init (ecx_contextt *context, char *ifname)
int ecx_init_redundant (ecx_contextt *context, ecx_redportt *redport, char *ifname, char *if2name)
void ecx_close (ecx_contextt *context)
uint8 ecx_siigetbyte (ecx_contextt *context, uint16 slave, uint16 address)
int16 ecx_siifind (ecx_contextt *context, uint16 slave, uint16 cat)
void ecx_siistring (ecx_contextt *context, char *str, uint16 slave, uint16 Sn)
uint16 ecx_siiFMMU (ecx_contextt *context, uint16 slave, ec_eepromFMMUt *FMMU)
uint16 ecx_siiSM (ecx_contextt *context, uint16 slave, ec_eepromSMt *SM)
uint16 ecx_siiSMnext (ecx_contextt *context, uint16 slave, ec_eepromSMt *SM, uint16 n)
int ecx_siiPDO (ecx_contextt *context, uint16 slave, ec_eepromPDOt *PDO, uint8 t)
int ecx_readstate (ecx_contextt *context)
int ecx_writestate (ecx_contextt *context, uint16 slave)
uint16 ecx_statecheck (ecx_contextt *context, uint16 slave, uint16 reqstate, int timeout)
int ecx_mbxempty (ecx_contextt *context, uint16 slave, int timeout)
int ecx_mbxsend (ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout)
int ecx_mbxreceive (ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout)
void ecx_esidump (ecx_contextt *context, uint16 slave, uint8 *esibuf)
uint32 ecx_readeeprom (ecx_contextt *context, uint16 slave, uint16 eeproma, int timeout)
int ecx_writeeeprom (ecx_contextt *context, uint16 slave, uint16 eeproma, uint16 data, int timeout)
int ecx_eeprom2master (ecx_contextt *context, uint16 slave)
int ecx_eeprom2pdi (ecx_contextt *context, uint16 slave)
uint64 ecx_readeepromAP (ecx_contextt *context, uint16 aiadr, uint16 eeproma, int timeout)
int ecx_writeeepromAP (ecx_contextt *context, uint16 aiadr, uint16 eeproma, uint16 data, int timeout)
uint64 ecx_readeepromFP (ecx_contextt *context, uint16 configadr, uint16 eeproma, int timeout)
int ecx_writeeepromFP (ecx_contextt *context, uint16 configadr, uint16 eeproma, uint16 data, int timeout)
void ecx_readeeprom1 (ecx_contextt *context, uint16 slave, uint16 eeproma)
uint32 ecx_readeeprom2 (ecx_contextt *context, uint16 slave, int timeout)
int ecx_send_processdata_group (ecx_contextt *context, uint8 group)
int ecx_receive_processdata_group (ecx_contextt *context, uint8 group, int timeout)
int ecx_send_processdata (ecx_contextt *context)
int ecx_receive_processdata (ecx_contextt *context, int timeout)
-

Detailed Description

-

Headerfile for ethercatmain.c.

-

Define Documentation

- -
-
- - - - -
#define EC_MAXEEPDO   0x200
-
-
-

max. eeprom PDO entries

- -
-
- -
-
- - - - -
#define EC_MAXELIST   64
-
-
-

max. etries in EtherCAT error list

- -
-
- -
-
- - - - -
#define EC_MAXFMMU   4
-
-
-

max. FMMU used

- -
-
- -
-
- - - - -
#define EC_MAXGROUP   2
-
-
-

max. number of groups

- -
-
- -
-
- - - - -
#define EC_MAXIOSEGMENTS   64
-
-
-

max. number of IO segments per group

- -
-
- -
-
- - - - -
#define EC_MAXLEN_ADAPTERNAME   128
-
-
-

max. Adapter

- -
-
- -
-
- - - - -
#define EC_MAXMBX   1486
-
-
-

max. mailbox size

- -
-
- -
-
- - - - -
#define EC_MAXNAME   40
-
-
-

max. length of readable name in slavelist and Object Description List

- -
-
- -
-
- - - - -
#define EC_MAXSLAVE   200
-
-
-

max. number of slaves in array

- -
-
- -
-
- - - - -
#define EC_MAXSM   8
-
-
-

max. SM used

- -
-
- -
-
- - - - -
#define EC_SMENABLEMASK   0xfffeffff
-
-
- -
-
- -
-
- - - - -
#define ECT_COEDET_PDOASSIGN   0x04
-
-
- -
-
- -
-
- - - - -
#define ECT_COEDET_PDOCONFIG   0x08
-
-
- -
-
- -
-
- - - - -
#define ECT_COEDET_SDO   0x01
-
-
- -
-
- -
-
- - - - -
#define ECT_COEDET_SDOCA   0x20
-
-
- -
-
- -
-
- - - - -
#define ECT_COEDET_SDOINFO   0x02
-
-
- -
-
- -
-
- - - - -
#define ECT_COEDET_UPLOAD   0x10
-
-
- -
-
- -
-
- - - - -
#define ECT_MBXPROT_AOE   0x0001
-
-
- -
-
- -
-
- - - - -
#define ECT_MBXPROT_COE   0x0004
-
-
- -
-
- -
-
- - - - -
#define ECT_MBXPROT_EOE   0x0002
-
-
- -
-
- -
-
- - - - -
#define ECT_MBXPROT_FOE   0x0008
-
-
- -
-
- -
-
- - - - -
#define ECT_MBXPROT_SOE   0x0010
-
-
- -
-
- -
-
- - - - -
#define ECT_MBXPROT_VOE   0x0020
-
-
- -
-
-

Typedef Documentation

- -
-
- - - - -
typedef uint8 ec_mbxbuft[EC_MAXMBX+1]
-
-
-

mailbox buffer array

- -
-
-

Function Documentation

- -
-
- - - - - - - - -
void ec_clearmbx (ec_mbxbuftMbx)
-
-
-

Clear mailbox buffer.

-
Parameters:
- - -
[out]Mbx= Mailbox buffer to clear
-
-
- -
-
- -
-
- - - - - - - - -
ec_adaptert* ec_find_adapters (void )
-
-
-

Create list over available network adapters.

-
Returns:
First element in list over available network adapters.
- -
-
- -
-
- - - - - - - - -
void ec_free_adapters (ec_adaptert * adapter)
-
-
-

Free dynamically allocated list over available network adapters.

-
Parameters:
- - -
[in]adapter= Struct holding adapter name, description and pointer to next.
-
-
- -
-
- -
-
- - - - - - - - -
uint8 ec_nextmbxcnt (uint8 cnt)
-
-
-

Get index of next mailbox counter value. Used for Mailbox Link Layer.

-
Parameters:
- - -
[in]cnt= Mailbox counter value [0..7]
-
-
-
Returns:
next mailbox counter value
- -
-
- -
-
- - - - - - - - -
void ecx_close (ecx_contexttcontext)
-
-
-

Close lib.

-
Parameters:
- - -
[in]context= context struct
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_eeprom2master (ecx_contexttcontext,
uint16 slave 
)
-
-
-

Set eeprom control to master. Only if set to PDI.

-
Parameters:
- - - -
[in]context= context struct
[in]slave= Slave number
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_eeprom2pdi (ecx_contexttcontext,
uint16 slave 
)
-
-
-

Set eeprom control to PDI. Only if set to master.

-
Parameters:
- - - -
[in]context= context struct
[in]slave= Slave number
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_esidump (ecx_contexttcontext,
uint16 slave,
uint8 * esibuf 
)
-
-
-

Dump complete EEPROM data from slave in buffer.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= Slave number
[out]esibuf= EEPROM data buffer, make sure it is big enough.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_init (ecx_contexttcontext,
char * ifname 
)
-
-
-

Initialise lib in single NIC mode

-
Parameters:
- - - -
[in]context= context struct
[in]ifname= Dev name, f.e. "eth0"
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_init_redundant (ecx_contexttcontext,
ecx_redportt * redport,
char * ifname,
char * if2name 
)
-
-
-

Initialise lib in redundant NIC mode

-
Parameters:
- - - - - -
[in]context= context struct
[in]redport= pointer to redport, redundant port data
[in]ifname= Primary Dev name, f.e. "eth0"
[in]if2name= Secondary Dev name, f.e. "eth1"
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - -
boolean ecx_iserror (ecx_contexttcontext)
-
-
-

Check if error list has entries.

-
Parameters:
- - -
[in]context= context struct
-
-
-
Returns:
TRUE if error list contains entries.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_mbxempty (ecx_contexttcontext,
uint16 slave,
int timeout 
)
-
-
-

Check if IN mailbox of slave is empty.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= Slave number
[in]timeout= Timeout in us
-
-
-
Returns:
>0 is success
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_mbxreceive (ecx_contexttcontext,
uint16 slave,
ec_mbxbuftmbx,
int timeout 
)
-
-
-

Read OUT mailbox from slave. Supports Mailbox Link Layer with repeat requests.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number
[out]mbx= Mailbox data
[in]timeout= Timeout in us
-
-
-
Returns:
Work counter (>0 is success)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_mbxsend (ecx_contexttcontext,
uint16 slave,
ec_mbxbuftmbx,
int timeout 
)
-
-
-

Write IN mailbox to slave.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number
[out]mbx= Mailbox data
[in]timeout= Timeout in us
-
-
-
Returns:
Work counter (>0 is success)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_packeterror (ecx_contexttcontext,
uint16 Slave,
uint16 Index,
uint8 SubIdx,
uint16 ErrorCode 
)
-
-
-

Report packet error

-
Parameters:
- - - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]Index= Index that generated error
[in]SubIdx= Subindex that generated error
[in]ErrorCode= Error code
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
boolean ecx_poperror (ecx_contexttcontext,
ec_errortEc 
)
-
-
-

Pops an error from the list.

-
Parameters:
- - - -
[in]context= context struct
[out]Ec= Struct describing the error.
-
-
-
Returns:
TRUE if an error was popped.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void ecx_pusherror (ecx_contexttcontext,
const ec_errortEc 
)
-
-
-

Pushes an error on the error list.

-
Parameters:
- - - -
[in]context= context struct
[in]Ecpointer describing the error.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint32 ecx_readeeprom (ecx_contexttcontext,
uint16 slave,
uint16 eeproma,
int timeout 
)
-
-
-

Read EEPROM from slave bypassing cache.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number
[in]eeproma= (WORD) Address in the EEPROM
[in]timeout= Timeout in us.
-
-
-
Returns:
EEPROM data 32bit
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_readeeprom1 (ecx_contexttcontext,
uint16 slave,
uint16 eeproma 
)
-
-
-

Read EEPROM from slave bypassing cache. Parallel read step 1, make request to slave.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= Slave number
[in]eeproma= (WORD) Address in the EEPROM
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint32 ecx_readeeprom2 (ecx_contexttcontext,
uint16 slave,
int timeout 
)
-
-
-

Read EEPROM from slave bypassing cache. Parallel read step 2, actual read from slave.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= Slave number
[in]timeout= Timeout in us.
-
-
-
Returns:
EEPROM data 32bit
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint64 ecx_readeepromAP (ecx_contexttcontext,
uint16 aiadr,
uint16 eeproma,
int timeout 
)
-
-
-

Read EEPROM from slave bypassing cache. APRD method.

-
Parameters:
- - - - - -
[in]context= context struct
[in]aiadr= auto increment address of slave
[in]eeproma= (WORD) Address in the EEPROM
[in]timeout= Timeout in us.
-
-
-
Returns:
EEPROM data 64bit or 32bit
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint64 ecx_readeepromFP (ecx_contexttcontext,
uint16 configadr,
uint16 eeproma,
int timeout 
)
-
-
-

Read EEPROM from slave bypassing cache. FPRD method.

-
Parameters:
- - - - - -
[in]context= context struct
[in]configadr= configured address of slave
[in]eeproma= (WORD) Address in the EEPROM
[in]timeout= Timeout in us.
-
-
-
Returns:
EEPROM data 64bit or 32bit
- -
-
- -
-
- - - - - - - - -
int ecx_readstate (ecx_contexttcontext)
-
-
-

Read all slave states in ec_slave.

-
Parameters:
- - -
[in]context= context struct
-
-
-
Returns:
lowest state found
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_receive_processdata (ecx_contexttcontext,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_receive_processdata_group (ecx_contexttcontext,
uint8 group,
int timeout 
)
-
-
-

Receive processdata from slaves. Second part from ec_send_processdata(). Received datagrams are recombined with the processdata with help from the stack. If a datagram contains input processdata it copies it to the processdata structure.

-
Parameters:
- - - - -
[in]context= context struct
[in]group= group number
[in]timeout= Timeout in us.
-
-
-
Returns:
Work counter.
- -
-
- -
-
- - - - - - - - -
int ecx_send_processdata (ecx_contexttcontext)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_send_processdata_group (ecx_contexttcontext,
uint8 group 
)
-
-
-

Transmit processdata to slaves. Uses LRW, or LRD/LWR if LRW is not allowed (blockLRW). Both the input and output processdata are transmitted. The outputs with the actual data, the inputs have a placeholder. The inputs are gathered with the receive processdata function. In contrast to the base LRW function this function is non-blocking. If the processdata does not fit in one datagram, multiple are used. In order to recombine the slave response, a stack is used.

-
Parameters:
- - - -
[in]context= context struct
[in]group= group number
-
-
-
Returns:
>0 if processdata is transmitted.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int16 ecx_siifind (ecx_contexttcontext,
uint16 slave,
uint16 cat 
)
-
-
-

Find SII section header in slave EEPROM.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave number
[in]cat= section category
-
-
-
Returns:
byte address of section at section length entry, if not available then 0
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_siiFMMU (ecx_contexttcontext,
uint16 slave,
ec_eepromFMMUtFMMU 
)
-
-
-

Get FMMU data from SII FMMU section in slave EEPROM.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave number
[out]FMMU= FMMU struct from SII, max. 4 FMMU's
-
-
-
Returns:
number of FMMU's defined in section
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint8 ecx_siigetbyte (ecx_contexttcontext,
uint16 slave,
uint16 address 
)
-
-
-

Read one byte from slave EEPROM via cache. If the cache location is empty then a read request is made to the slave. Depending on the slave capabillities the request is 4 or 8 bytes.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave number
[in]address= eeprom address in bytes (slave uses words)
-
-
-
Returns:
requested byte, if not available then 0xff
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_siiPDO (ecx_contexttcontext,
uint16 slave,
ec_eepromPDOtPDO,
uint8 t 
)
-
-
-

Get PDO data from SII PDO section in slave EEPROM.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= slave number
[out]PDO= PDO struct from SII
[in]t= 0=RXPDO 1=TXPDO
-
-
-
Returns:
mapping size in bits of PDO
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_siiSM (ecx_contexttcontext,
uint16 slave,
ec_eepromSMtSM 
)
-
-
-

Get SM data from SII SM section in slave EEPROM.

-
Parameters:
- - - - -
[in]context= context struct
[in]slave= slave number
[out]SM= first SM struct from SII
-
-
-
Returns:
number of SM's defined in section
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_siiSMnext (ecx_contexttcontext,
uint16 slave,
ec_eepromSMtSM,
uint16 n 
)
-
-
-

Get next SM data from SII SM section in slave EEPROM.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= slave number
[out]SM= first SM struct from SII
[in]n= SM number
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ecx_siistring (ecx_contexttcontext,
char * str,
uint16 slave,
uint16 Sn 
)
-
-
-

Get string from SII string section in slave EEPROM.

-
Parameters:
- - - - - -
[in]context= context struct
[out]str= requested string, 0x00 if not found
[in]slave= slave number
[in]Sn= string number
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16 ecx_statecheck (ecx_contexttcontext,
uint16 slave,
uint16 reqstate,
int timeout 
)
-
-
-

Check actual slave state. This is a blocking function.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number, 0 = all slaves
[in]reqstate= Requested state
[in]timeout= Timout value in us
-
-
-
Returns:
Requested state, or found state after timeout.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_writeeeprom (ecx_contexttcontext,
uint16 slave,
uint16 eeproma,
uint16 data,
int timeout 
)
-
-
-

Write EEPROM to slave bypassing cache.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]eeproma= (WORD) Address in the EEPROM
[in]data= 16bit data
[in]timeout= Timeout in us.
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_writeeepromAP (ecx_contexttcontext,
uint16 aiadr,
uint16 eeproma,
uint16 data,
int timeout 
)
-
-
-

Write EEPROM to slave bypassing cache. APWR method.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]aiadr= configured address of slave
[in]eeproma= (WORD) Address in the EEPROM
[in]data= 16bit data
[in]timeout= Timeout in us.
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_writeeepromFP (ecx_contexttcontext,
uint16 configadr,
uint16 eeproma,
uint16 data,
int timeout 
)
-
-
-

Write EEPROM to slave bypassing cache. FPWR method.

-
Parameters:
- - - - - - -
[in]context= context struct
[in]configadr= configured address of slave
[in]eeproma= (WORD) Address in the EEPROM
[in]data= 16bit data
[in]timeout= Timeout in us.
-
-
-
Returns:
>0 if OK
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int ecx_writestate (ecx_contexttcontext,
uint16 slave 
)
-
-
-

Write slave state, if slave = 0 then write to all slaves. The function does not check if the actual state is changed.

-
Parameters:
- - - -
[in]context= context struct
[in]slave= Slave number, 0 = master
-
-
-
Returns:
0
- -
-
-
- - - diff --git a/doc/html/ethercatprint_8c.html b/doc/html/ethercatprint_8c.html deleted file mode 100644 index c18f338..0000000 --- a/doc/html/ethercatprint_8c.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - -SOEM: ethercatprint.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Functions | -Variables
-
-
ethercatprint.c File Reference
-
-
- -

Module to convert EtherCAT errors to readable messages. -More...

-
#include <stdio.h>
-#include "oshw.h"
-#include "ethercattype.h"
-#include "ethercatmain.h"
-
- - - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  ec_sdoerrorlist_t
struct  ec_ALstatuscodelist_t
struct  ec_soeerrorlist_t
struct  ec_mbxerrorlist_t

-Defines

#define EC_MAXERRORNAME   127

-Functions

const char * ec_sdoerror2string (uint32 sdoerrorcode)
char * ec_ALstatuscode2string (uint16 ALstatuscode)
char * ec_soeerror2string (uint16 errorcode)
char * ec_mbxerror2string (uint16 errorcode)
char * ecx_elist2string (ecx_contextt *context)
char * ec_elist2string (void)

-Variables

char estring [EC_MAXERRORNAME]
const ec_sdoerrorlist_t ec_sdoerrorlist []
const ec_ALstatuscodelist_t ec_ALstatuscodelist []
const ec_soeerrorlist_t ec_soeerrorlist []
const ec_mbxerrorlist_t ec_mbxerrorlist []
-

Detailed Description

-

Module to convert EtherCAT errors to readable messages.

-

SDO abort messages and AL status codes are used to relay slave errors to the user application. This module converts the binary codes to readble text. For the defined error codes see the EtherCAT protocol documentation.

-

Define Documentation

- -
-
- - - - -
#define EC_MAXERRORNAME   127
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
char* ec_ALstatuscode2string (uint16 ALstatuscode)
-
-
-

Look up text string that belongs to AL status code.

-
Parameters:
- - -
[in]ALstatuscode= AL status code as defined in EtherCAT protocol
-
-
-
Returns:
readable string
- -
-
- -
-
- - - - - - - - -
char* ec_elist2string (void )
-
-
- -
-
- -
-
- - - - - - - - -
char* ec_mbxerror2string (uint16 errorcode)
-
-
-

Look up text string that belongs to MBX error code.

-
Parameters:
- - -
[in]errorcode= MBX error code as defined in EtherCAT protocol
-
-
-
Returns:
readable string
- -
-
- -
-
- - - - - - - - -
const char* ec_sdoerror2string (uint32 sdoerrorcode)
-
-
-

Look up text string that belongs to SDO error code.

-
Parameters:
- - -
[in]sdoerrorcode= SDO error code as defined in EtherCAT protocol
-
-
-
Returns:
readable string
- -
-
- -
-
- - - - - - - - -
char* ec_soeerror2string (uint16 errorcode)
-
-
-

Look up text string that belongs to SoE error code.

-
Parameters:
- - -
[in]errorcode= SoE error code as defined in EtherCAT protocol
-
-
-
Returns:
readable string
- -
-
- -
-
- - - - - - - - -
char* ecx_elist2string (ecx_contexttcontext)
-
-
-

Look up error in ec_errorlist and convert to text string.

-
Parameters:
- - -
[in]context= context struct
-
-
-
Returns:
readable string
- -
-
-

Variable Documentation

- -
- -
-Initial value:
 {
-   {0x0000 , "No error" },
-   {0x0001 , "Unspecified error" },
-   {0x0002 , "No memory" },
-   {0x0011 , "Invalid requested state change" },
-   {0x0012 , "Unknown requested state" },
-   {0x0013 , "Bootstrap not supported" },
-   {0x0014 , "No valid firmware" },
-   {0x0015 , "Invalid mailbox configuration" },
-   {0x0016 , "Invalid mailbox configuration" },
-   {0x0017 , "Invalid sync manager configuration" },
-   {0x0018 , "No valid inputs available" },
-   {0x0019 , "No valid outputs" },
-   {0x001A , "Synchronization error" },
-   {0x001B , "Sync manager watchdog" },
-   {0x001C , "Invalid sync Manager types" },
-   {0x001D , "Invalid output configuration" },
-   {0x001E , "Invalid input configuration" },
-   {0x001F , "Invalid watchdog configuration" },
-   {0x0020 , "Slave needs cold start" },
-   {0x0021 , "Slave needs INIT" },
-   {0x0022 , "Slave needs PREOP" },
-   {0x0023 , "Slave needs SAFEOP" },
-   {0x0024 , "Invalid input mapping" },
-   {0x0025 , "Invalid output mapping" },
-   {0x0026 , "Inconsistent settings" },
-   {0x0027 , "Freerun not supported" },
-   {0x0028 , "Synchronisation not supported" },
-   {0x0029 , "Freerun needs 3buffer mode" },
-   {0x002A , "Background watchdog" },
-   {0x002B , "No valid Inputs and Outputs" },
-   {0x002C , "Fatal sync error" },
-   {0x002D , "No sync error" }, 
-   {0x002E , "Invalid input FMMU configuration" },
-   {0x0030 , "Invalid DC SYNC configuration" },
-   {0x0031 , "Invalid DC latch configuration" },
-   {0x0032 , "PLL error" },
-   {0x0033 , "DC sync IO error" },
-   {0x0034 , "DC sync timeout error" },
-   {0x0035 , "DC invalid sync cycle time" },
-   {0x0035 , "DC invalid sync0 cycle time" },
-   {0x0035 , "DC invalid sync1 cycle time" },
-   {0x0042 , "MBX_EOE" },
-   {0x0043 , "MBX_COE" },
-   {0x0044 , "MBX_FOE" },
-   {0x0045 , "MBX_SOE" },
-   {0x004F , "MBX_VOE" },
-   {0x0050 , "EEPROM no access" },
-   {0x0051 , "EEPROM error" },
-   {0x0060 , "Slave restarted locally" },
-   {0x0061 , "Device identification value updated" },
-   {0x00f0 , "Application controller available" },
-   {0xffff , "Unknown" }
-}
-

AL status code list definition

- -
-
- -
-
- - - - -
const ec_mbxerrorlist_t ec_mbxerrorlist[]
-
-
-Initial value:
 {
-   {0x0000, "No error" },
-   {0x0001, "Syntax of 6 octet Mailbox Header is wrong" },
-   {0x0002, "The mailbox protocol is not supported" },
-   {0x0003, "Channel Field contains wrong value"},
-   {0x0004, "The service is no supported"},
-   {0x0005, "Invalid mailbox header"},
-   {0x0006, "Length of received mailbox data is too short"},
-   {0x0007, "No more memory in slave"},
-   {0x0008, "The lenght of data is inconsistent"},
-   {0xffff, "Unknown"}
-}
-

MBX error list definition

- -
-
- -
-
- - - - -
const ec_sdoerrorlist_t ec_sdoerrorlist[]
-
-
-Initial value:
 {
-   {0x00000000, "No error" },
-   {0x05030000, "Toggle bit not changed" },
-   {0x05040000, "SDO protocol timeout" },
-   {0x05040001, "Client/Server command specifier not valid or unknown" },
-   {0x05040005, "Out of memory" },
-   {0x06010000, "Unsupported access to an object" },
-   {0x06010001, "Attempt to read to a write only object" },
-   {0x06010002, "Attempt to write to a read only object" },
-   {0x06010003, "Subindex can not be written, SI0 must be 0 for write access" },
-   {0x06010004, "SDO Complete access not supported for variable length objects" },
-   {0x06010005, "Object length exceeds mailbox size" },
-   {0x06010006, "Object mapped to RxPDO, SDO download blocked" },
-   {0x06020000, "The object does not exist in the object directory" },
-   {0x06040041, "The object can not be mapped into the PDO" },
-   {0x06040042, "The number and length of the objects to be mapped would exceed the PDO length" },
-   {0x06040043, "General parameter incompatibility reason" },
-   {0x06040047, "General internal incompatibility in the device" },
-   {0x06060000, "Access failed due to a hardware error" },
-   {0x06070010, "Data type does not match, length of service parameter does not match" },
-   {0x06070012, "Data type does not match, length of service parameter too high" },
-   {0x06070013, "Data type does not match, length of service parameter too low" },
-   {0x06090011, "Subindex does not exist" },
-   {0x06090030, "Value range of parameter exceeded (only for write access)" },
-   {0x06090031, "Value of parameter written too high" },
-   {0x06090032, "Value of parameter written too low" },
-   {0x06090036, "Maximum value is less than minimum value" },
-   {0x08000000, "General error" },
-   {0x08000020, "Data cannot be transferred or stored to the application" },
-   {0x08000021, "Data cannot be transferred or stored to the application because of local control" },
-   {0x08000022, "Data cannot be transferred or stored to the application because of the present device state" },
-   {0x08000023, "Object dictionary dynamic generation fails or no object dictionary is present" },
-   {0xffffffff, "Unknown" }
-}
-

SDO error list definition

- -
-
- -
-
- - - - -
const ec_soeerrorlist_t ec_soeerrorlist[]
-
-
-Initial value:
 {
-   {0x0000, "No error" },
-   {0x1001, "No IDN" },
-   {0x1009, "Invalid access to element 1" },
-   {0x2001, "No Name" },
-   {0x2002, "Name transmission too short" },
-   {0x2003, "Name transmission too long" },
-   {0x2004, "Name cannot be changed (read only)" },
-   {0x2005, "Name is write-protected at this time" },
-   {0x3002, "Attribute transmission too short" },
-   {0x3003, "Attribute transmission too long" },
-   {0x3004, "Attribute cannot be changed (read only)" },
-   {0x3005, "Attribute is write-protected at this time" },
-   {0x4001, "No units" },
-   {0x4002, "Unit transmission too short" },
-   {0x4003, "Unit transmission too long" },
-   {0x4004, "Unit cannot be changed (read only)" },
-   {0x4005, "Unit is write-protected at this time" },
-   {0x5001, "No minimum input value" },
-   {0x5002, "Minimum input value transmission too short" },
-   {0x5003, "Minimum input value transmission too long" },
-   {0x5004, "Minimum input value cannot be changed (read only)" },
-   {0x5005, "Minimum input value is write-protected at this time" },
-   {0x6001, "No maximum input value" },
-   {0x6002, "Maximum input value transmission too short" },
-   {0x6003, "Maximum input value transmission too long" },
-   {0x6004, "Maximum input value cannot be changed (read only)" },
-   {0x6005, "Maximum input value is write-protected at this time" },
-   {0x7002, "Operation data transmission too short" },
-   {0x7003, "Operation data transmission too long" },
-   {0x7004, "Operation data cannot be changed (read only)" },
-   {0x7005, "Operation data is write-protected at this time (state)" },
-   {0x7006, "Operation data is smaller than the minimum input value" },
-   {0x7007, "Operation data is smaller than the maximum input value" },
-   {0x7008, "Invalid operation data:Configured IDN will not be supported" },
-   {0x7009, "Operation data write protected by a password" },
-   {0x700A, "Operation data is write protected, it is configured cyclically" },
-   {0x700B, "Invalid indirect addressing: (e.g., data container, list handling)" },
-   {0x700C, "Operation data is write protected, due to other settings" },
-   {0x700D, "Reserved" },
-   {0x7010, "Procedure command already active" },
-   {0x7011, "Procedure command not interruptible" },
-   {0x7012, "Procedure command at this time not executable (state)" },
-   {0x7013, "Procedure command not executable (invalid or false parameters)" },
-   {0x7014, "No data state" },
-   {0x8001, "No default value" },
-   {0x8002, "Default value transmission too long" },
-   {0x8004, "Default value cannot be changed, read only" },
-   {0x800A, "Invalid drive number" },
-   {0x800A, "General error" },
-   {0x800A, "No element addressed" },
-   {0xffff, "Unknown" }
-}
-

SoE error list definition

- -
-
- -
-
- - - - -
char estring[EC_MAXERRORNAME]
-
-
- -
-
-
- - - diff --git a/doc/html/ethercatprint_8h.html b/doc/html/ethercatprint_8h.html deleted file mode 100644 index 719df28..0000000 --- a/doc/html/ethercatprint_8h.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - -SOEM: ethercatprint.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Functions
-
-
ethercatprint.h File Reference
-
-
- -

Headerfile for ethercatprint.c. -More...

- - - - - - -

-Functions

char * ec_sdoerror2string (uint16 sdoerrorcode)
char * ec_ALstatuscode2string (uint16 ALstatuscode)
char * ec_soeerror2string (uint16 errorcode)
char * ecx_elist2string (ecx_contextt *context)
-

Detailed Description

-

Headerfile for ethercatprint.c.

-

Function Documentation

- -
-
- - - - - - - - -
char* ec_ALstatuscode2string (uint16 ALstatuscode)
-
-
-

Look up text string that belongs to AL status code.

-
Parameters:
- - -
[in]ALstatuscode= AL status code as defined in EtherCAT protocol
-
-
-
Returns:
readable string
- -
-
- -
-
- - - - - - - - -
char* ec_sdoerror2string (uint16 sdoerrorcode)
-
-
- -
-
- -
-
- - - - - - - - -
char* ec_soeerror2string (uint16 errorcode)
-
-
-

Look up text string that belongs to SoE error code.

-
Parameters:
- - -
[in]errorcode= SoE error code as defined in EtherCAT protocol
-
-
-
Returns:
readable string
- -
-
- -
-
- - - - - - - - -
char* ecx_elist2string (ecx_contexttcontext)
-
-
-

Look up error in ec_errorlist and convert to text string.

-
Parameters:
- - -
[in]context= context struct
-
-
-
Returns:
readable string
- -
-
-
- - - diff --git a/doc/html/ethercatsoe_8c.html b/doc/html/ethercatsoe_8c.html deleted file mode 100644 index 15770fa..0000000 --- a/doc/html/ethercatsoe_8c.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - -SOEM: ethercatsoe.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Functions
-
-
ethercatsoe.c File Reference
-
-
- -

Servo over EtherCAT (SoE) Module. -More...

-
#include <stdio.h>
-#include <string.h>
-#include "osal.h"
-#include "oshw.h"
-#include "ethercattype.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatsoe.h"
-
- - - - - - - - - - - - -

-Data Structures

struct  ec_SoEt

-Defines

#define EC_SOE_MAX_DRIVES   8

-Functions

PACKED_END void ecx_SoEerror (ecx_contextt *context, uint16 Slave, uint16 idn, uint16 Error)
int ecx_SoEread (ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int *psize, void *p, int timeout)
int ecx_SoEwrite (ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int psize, void *p, int timeout)
int ecx_readIDNmap (ecx_contextt *context, uint16 slave, int *Osize, int *Isize)
int ec_SoEread (uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int *psize, void *p, int timeout)
int ec_SoEwrite (uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int psize, void *p, int timeout)
int ec_readIDNmap (uint16 slave, int *Osize, int *Isize)
-

Detailed Description

-

Servo over EtherCAT (SoE) Module.

-

Define Documentation

- -
-
- - - - -
#define EC_SOE_MAX_DRIVES   8
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int ec_readIDNmap (uint16 slave,
int * Osize,
int * Isize 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_SoEread (uint16 slave,
uint8 driveNo,
uint8 elementflags,
uint16 idn,
int * psize,
void * p,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ec_SoEwrite (uint16 slave,
uint8 driveNo,
uint8 elementflags,
uint16 idn,
int psize,
void * p,
int timeout 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readIDNmap (ecx_contexttcontext,
uint16 slave,
int * Osize,
int * Isize 
)
-
-
-

SoE read AT and MTD mapping.

-

SoE has standard indexes defined for mapping. This function tries to read them and collect a full input and output mapping size of designated slave.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number
[out]Osize= Size in bits of output mapping (MTD) found
[out]Isize= Size in bits of input mapping (AT) found
-
-
-
Returns:
>0 if mapping succesful.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PACKED_END void ecx_SoEerror (ecx_contexttcontext,
uint16 Slave,
uint16 idn,
uint16 Error 
)
-
-
-

Report SoE error.

-
Parameters:
- - - - - -
[in]context= context struct
[in]Slave= Slave number
[in]idn= IDN that generated error
[in]Error= Error code, see EtherCAT documentation for list
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_SoEread (ecx_contexttcontext,
uint16 slave,
uint8 driveNo,
uint8 elementflags,
uint16 idn,
int * psize,
void * p,
int timeout 
)
-
-
-

SoE read, blocking.

-

The IDN object of the selected slave and DriveNo is read. If a response is larger than the mailbox size then the response is segmented. The function will combine all segments and copy them to the parameter buffer.

-
Parameters:
- - - - - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]driveNo= Drive number in slave
[in]elementflags= Flags to select what properties of IDN are to be transfered.
[in]idn= IDN.
[in,out]psize= Size in bytes of parameter buffer, returns bytes read from SoE.
[out]p= Pointer to parameter buffer
[in]timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_SoEwrite (ecx_contexttcontext,
uint16 slave,
uint8 driveNo,
uint8 elementflags,
uint16 idn,
int psize,
void * p,
int timeout 
)
-
-
-

SoE write, blocking.

-

The IDN object of the selected slave and DriveNo is written. If a response is larger than the mailbox size then the response is segmented.

-
Parameters:
- - - - - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]driveNo= Drive number in slave
[in]elementflags= Flags to select what properties of IDN are to be transfered.
[in]idn= IDN.
[in]psize= Size in bytes of parameter buffer.
[out]p= Pointer to parameter buffer
[in]timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
-
- - - diff --git a/doc/html/ethercatsoe_8h.html b/doc/html/ethercatsoe_8h.html deleted file mode 100644 index 84b6483..0000000 --- a/doc/html/ethercatsoe_8h.html +++ /dev/null @@ -1,618 +0,0 @@ - - - - -SOEM: ethercatsoe.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Functions
-
-
ethercatsoe.h File Reference
-
-
- -

Headerfile for ethercatsoe.c. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  ec_SoEnamet
struct  ec_SoElistt
struct  ec_SoEmappingt
struct  ec_SoEattributet

-Defines

#define EC_SOE_DATASTATE_B   0x01
#define EC_SOE_NAME_B   0x02
#define EC_SOE_ATTRIBUTE_B   0x04
#define EC_SOE_UNIT_B   0x08
#define EC_SOE_MIN_B   0x10
#define EC_SOE_MAX_B   0x20
#define EC_SOE_VALUE_B   0x40
#define EC_SOE_DEFAULT_B   0x80
#define EC_SOE_MAXNAME   60
#define EC_SOE_MAXMAPPING   64
#define EC_IDN_MDTCONFIG   24
#define EC_IDN_ATCONFIG   16
#define EC_SOE_LENGTH_1   0x00
#define EC_SOE_LENGTH_2   0x01
#define EC_SOE_LENGTH_4   0x02
#define EC_SOE_LENGTH_8   0x03
#define EC_SOE_TYPE_BINARY   0x00
#define EC_SOE_TYPE_UINT   0x01
#define EC_SOE_TYPE_INT   0x02
#define EC_SOE_TYPE_HEX   0x03
#define EC_SOE_TYPE_STRING   0x04
#define EC_SOE_TYPE_IDN   0x05
#define EC_SOE_TYPE_FLOAT   0x06
#define EC_SOE_TYPE_PARAMETER   0x07

-Functions

PACKED_END int ecx_SoEread (ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int *psize, void *p, int timeout)
int ecx_SoEwrite (ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int psize, void *p, int timeout)
int ecx_readIDNmap (ecx_contextt *context, uint16 slave, int *Osize, int *Isize)
-

Detailed Description

-

Headerfile for ethercatsoe.c.

-

Define Documentation

- -
-
- - - - -
#define EC_IDN_ATCONFIG   16
-
-
- -
-
- -
-
- - - - -
#define EC_IDN_MDTCONFIG   24
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_ATTRIBUTE_B   0x04
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_DATASTATE_B   0x01
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_DEFAULT_B   0x80
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_LENGTH_1   0x00
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_LENGTH_2   0x01
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_LENGTH_4   0x02
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_LENGTH_8   0x03
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_MAX_B   0x20
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_MAXMAPPING   64
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_MAXNAME   60
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_MIN_B   0x10
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_NAME_B   0x02
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_TYPE_BINARY   0x00
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_TYPE_FLOAT   0x06
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_TYPE_HEX   0x03
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_TYPE_IDN   0x05
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_TYPE_INT   0x02
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_TYPE_PARAMETER   0x07
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_TYPE_STRING   0x04
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_TYPE_UINT   0x01
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_UNIT_B   0x08
-
-
- -
-
- -
-
- - - - -
#define EC_SOE_VALUE_B   0x40
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_readIDNmap (ecx_contexttcontext,
uint16 slave,
int * Osize,
int * Isize 
)
-
-
-

SoE read AT and MTD mapping.

-

SoE has standard indexes defined for mapping. This function tries to read them and collect a full input and output mapping size of designated slave.

-
Parameters:
- - - - - -
[in]context= context struct
[in]slave= Slave number
[out]Osize= Size in bits of output mapping (MTD) found
[out]Isize= Size in bits of input mapping (AT) found
-
-
-
Returns:
>0 if mapping succesful.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PACKED_END int ecx_SoEread (ecx_contexttcontext,
uint16 slave,
uint8 driveNo,
uint8 elementflags,
uint16 idn,
int * psize,
void * p,
int timeout 
)
-
-
-

SoE read, blocking.

-

The IDN object of the selected slave and DriveNo is read. If a response is larger than the mailbox size then the response is segmented. The function will combine all segments and copy them to the parameter buffer.

-
Parameters:
- - - - - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]driveNo= Drive number in slave
[in]elementflags= Flags to select what properties of IDN are to be transfered.
[in]idn= IDN.
[in,out]psize= Size in bytes of parameter buffer, returns bytes read from SoE.
[out]p= Pointer to parameter buffer
[in]timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int ecx_SoEwrite (ecx_contexttcontext,
uint16 slave,
uint8 driveNo,
uint8 elementflags,
uint16 idn,
int psize,
void * p,
int timeout 
)
-
-
-

SoE write, blocking.

-

The IDN object of the selected slave and DriveNo is written. If a response is larger than the mailbox size then the response is segmented.

-
Parameters:
- - - - - - - - - -
[in]context= context struct
[in]slave= Slave number
[in]driveNo= Drive number in slave
[in]elementflags= Flags to select what properties of IDN are to be transfered.
[in]idn= IDN.
[in]psize= Size in bytes of parameter buffer.
[out]p= Pointer to parameter buffer
[in]timeout= Timeout in us, standard is EC_TIMEOUTRXM
-
-
-
Returns:
Workcounter from last slave response
- -
-
-
- - - diff --git a/doc/html/ethercattype_8h.html b/doc/html/ethercattype_8h.html deleted file mode 100644 index 8ca9d9a..0000000 --- a/doc/html/ethercattype_8h.html +++ /dev/null @@ -1,1914 +0,0 @@ - - - - -SOEM: ethercattype.h File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-Data Structures | -Defines | -Typedefs | -Enumerations
-
-
ethercattype.h File Reference
-
-
- -

General typedefs and defines for EtherCAT. -More...

-
#include <osal.h>
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  ec_etherheadert
struct  ec_comt
struct  ec_errort

-Defines

#define EC_LITTLE_ENDIAN
#define EC_VER1
#define EC_ERROR   -3
#define EC_NOFRAME   -1
#define EC_OTHERFRAME   -2
#define EC_MAXECATFRAME   1518
#define EC_MAXLRWDATA   (EC_MAXECATFRAME - 14 - 2 - 10 - 2 - 4)
#define EC_FIRSTDCDATAGRAM   20
#define EC_BUFSIZE   EC_MAXECATFRAME
#define EC_ECATTYPE   0x1000
#define EC_MAXBUF   16
#define EC_TIMEOUTRET   2000
#define EC_TIMEOUTRET3   (EC_TIMEOUTRET * 3)
#define EC_TIMEOUTSAFE   20000
#define EC_TIMEOUTEEP   20000
#define EC_TIMEOUTTXM   20000
#define EC_TIMEOUTRXM   700000
#define EC_TIMEOUTSTATE   2000000
#define EC_MAXEEPBITMAP   128
#define EC_MAXEEPBUF   EC_MAXEEPBITMAP << 5
#define EC_DEFAULTRETRIES   3
#define ETH_HEADERSIZE   sizeof(ec_etherheadert)
#define EC_HEADERSIZE   sizeof(ec_comt)
#define EC_ELENGTHSIZE   sizeof(uint16)
#define EC_CMDOFFSET   EC_ELENGTHSIZE
#define EC_WKCSIZE   sizeof(uint16)
#define EC_DATAGRAMFOLLOWS   (1 << 15)
#define EC_ESTAT_R64   0x0040
#define EC_ESTAT_BUSY   0x8000
#define EC_ESTAT_EMASK   0x7800
#define EC_ESTAT_NACK   0x2000
#define ECT_SII_START   0x0040
#define ECT_SDO_SMCOMMTYPE   0x1c00
#define ECT_SDO_PDOASSIGN   0x1c10
#define ECT_SDO_RXPDOASSIGN   0x1c12
#define ECT_SDO_TXPDOASSIGN   0x1c13
#define ETH_P_ECAT   0x88A4
#define MK_WORD(msb, lsb)   ((((uint16)(msb))<<8) | (lsb))
#define HI_BYTE(w)   ((w) >> 8)
#define LO_BYTE(w)   ((w) & 0x00ff)
#define SWAP(w)   ((((w)& 0xff00) >> 8) | (((w) & 0x00ff) << 8))
#define LO_WORD(l)   ((l) & 0xffff)
#define HI_WORD(l)   ((l) >> 16)
#define get_unaligned(ptr)   ({ __typeof__(*(ptr)) __tmp; memcpy(&__tmp, (ptr), sizeof(*(ptr))); __tmp; })
#define put_unaligned32(val, ptr)   (memcpy((ptr), &(val), 4))
#define put_unaligned64(val, ptr)   (memcpy((ptr), &(val), 8))
#define htoes(A)   (A)
#define htoel(A)   (A)
#define htoell(A)   (A)
#define etohs(A)   (A)
#define etohl(A)   (A)
#define etohll(A)   (A)

-Typedefs

typedef uint8 ec_bufT [EC_BUFSIZE]

-Enumerations

enum  ec_err {
-  EC_ERR_OK = 0, -EC_ERR_ALREADY_INITIALIZED, -EC_ERR_NOT_INITIALIZED, -EC_ERR_TIMEOUT, -
-  EC_ERR_NO_SLAVES, -EC_ERR_NOK -
- }
enum  ec_state {
-  EC_STATE_INIT = 0x01, -EC_STATE_PRE_OP = 0x02, -EC_STATE_BOOT = 0x03, -EC_STATE_SAFE_OP = 0x04, -
-  EC_STATE_OPERATIONAL = 0x08, -EC_STATE_ACK = 0x10, -EC_STATE_ERROR = 0x10 -
- }
enum  ec_bufstate {
-  EC_BUF_EMPTY = 0x00, -EC_BUF_ALLOC = 0x01, -EC_BUF_TX = 0x02, -EC_BUF_RCVD = 0x03, -
-  EC_BUF_COMPLETE = 0x04 -
- }
enum  ec_datatype {
-  ECT_BOOLEAN = 0x0001, -ECT_INTEGER8 = 0x0002, -ECT_INTEGER16 = 0x0003, -ECT_INTEGER32 = 0x0004, -
-  ECT_UNSIGNED8 = 0x0005, -ECT_UNSIGNED16 = 0x0006, -ECT_UNSIGNED32 = 0x0007, -ECT_REAL32 = 0x0008, -
-  ECT_VISIBLE_STRING = 0x0009, -ECT_OCTET_STRING = 0x000A, -ECT_UNICODE_STRING = 0x000B, -ECT_TIME_OF_DAY = 0x000C, -
-  ECT_TIME_DIFFERENCE = 0x000D, -ECT_DOMAIN = 0x000F, -ECT_INTEGER24 = 0x0010, -ECT_REAL64 = 0x0011, -
-  ECT_INTEGER64 = 0x0015, -ECT_UNSIGNED24 = 0x0016, -ECT_UNSIGNED64 = 0x001B, -ECT_BIT1 = 0x0030, -
-  ECT_BIT2 = 0x0031, -ECT_BIT3 = 0x0032, -ECT_BIT4 = 0x0033, -ECT_BIT5 = 0x0034, -
-  ECT_BIT6 = 0x0035, -ECT_BIT7 = 0x0036, -ECT_BIT8 = 0x0037 -
- }
enum  ec_cmdtype {
-  EC_CMD_NOP = 0x00, -EC_CMD_APRD, -EC_CMD_APWR, -EC_CMD_APRW, -
-  EC_CMD_FPRD, -EC_CMD_FPWR, -EC_CMD_FPRW, -EC_CMD_BRD, -
-  EC_CMD_BWR, -EC_CMD_BRW, -EC_CMD_LRD, -EC_CMD_LWR, -
-  EC_CMD_LRW, -EC_CMD_ARMW, -EC_CMD_FRMW -
- }
enum  ec_ecmdtype { EC_ECMD_NOP = 0x0000, -EC_ECMD_READ = 0x0100, -EC_ECMD_WRITE = 0x0201, -EC_ECMD_RELOAD = 0x0300 - }
enum  {
-  ECT_SII_STRING = 10, -ECT_SII_GENERAL = 30, -ECT_SII_FMMU = 40, -ECT_SII_SM = 41, -
-  ECT_SII_PDO = 50 -
- }
enum  {
-  ECT_SII_MANUF = 0x0008, -ECT_SII_ID = 0x000a, -ECT_SII_REV = 0x000c, -ECT_SII_BOOTRXMBX = 0x0014, -
-  ECT_SII_BOOTTXMBX = 0x0016, -ECT_SII_MBXSIZE = 0x0019, -ECT_SII_TXMBXADR = 0x001a, -ECT_SII_RXMBXADR = 0x0018, -
-  ECT_SII_MBXPROTO = 0x001c -
- }
enum  {
-  ECT_MBXT_ERR = 0x00, -ECT_MBXT_AOE, -ECT_MBXT_EOE, -ECT_MBXT_COE, -
-  ECT_MBXT_FOE, -ECT_MBXT_SOE, -ECT_MBXT_VOE = 0x0f -
- }
enum  {
-  ECT_COES_EMERGENCY = 0x01, -ECT_COES_SDOREQ, -ECT_COES_SDORES, -ECT_COES_TXPDO, -
-  ECT_COES_RXPDO, -ECT_COES_TXPDO_RR, -ECT_COES_RXPDO_RR, -ECT_COES_SDOINFO -
- }
enum  {
-  ECT_SDO_DOWN_INIT = 0x21, -ECT_SDO_DOWN_EXP = 0x23, -ECT_SDO_DOWN_INIT_CA = 0x31, -ECT_SDO_UP_REQ = 0x40, -
-  ECT_SDO_UP_REQ_CA = 0x50, -ECT_SDO_SEG_UP_REQ = 0x60, -ECT_SDO_ABORT = 0x80 -
- }
enum  {
-  ECT_GET_ODLIST_REQ = 0x01, -ECT_GET_ODLIST_RES = 0x02, -ECT_GET_OD_REQ = 0x03, -ECT_GET_OD_RES = 0x04, -
-  ECT_GET_OE_REQ = 0x05, -ECT_GET_OE_RES = 0x06, -ECT_SDOINFO_ERROR = 0x07 -
- }
enum  {
-  ECT_FOE_READ = 0x01, -ECT_FOE_WRITE, -ECT_FOE_DATA, -ECT_FOE_ACK, -
-  ECT_FOE_ERROR, -ECT_FOE_BUSY -
- }
enum  {
-  ECT_SOE_READREQ = 0x01, -ECT_SOE_READRES, -ECT_SOE_WRITEREQ, -ECT_SOE_WRITERES, -
-  ECT_SOE_NOTIFICATION, -ECT_SOE_EMERGENCY -
- }
enum  {
-  ECT_REG_TYPE = 0x0000, -ECT_REG_PORTDES = 0x0007, -ECT_REG_ESCSUP = 0x0008, -ECT_REG_STADR = 0x0010, -
-  ECT_REG_ALIAS = 0x0012, -ECT_REG_DLCTL = 0x0100, -ECT_REG_DLPORT = 0x0101, -ECT_REG_DLALIAS = 0x0103, -
-  ECT_REG_DLSTAT = 0x0110, -ECT_REG_ALCTL = 0x0120, -ECT_REG_ALSTAT = 0x0130, -ECT_REG_ALSTATCODE = 0x0134, -
-  ECT_REG_PDICTL = 0x0140, -ECT_REG_IRQMASK = 0x0200, -ECT_REG_RXERR = 0x0300, -ECT_REG_FRXERR = 0x0308, -
-  ECT_REG_EPUECNT = 0x030C, -ECT_REG_PECNT = 0x030D, -ECT_REG_PECODE = 0x030E, -ECT_REG_LLCNT = 0x0310, -
-  ECT_REG_WDCNT = 0x0442, -ECT_REG_EEPCFG = 0x0500, -ECT_REG_EEPCTL = 0x0502, -ECT_REG_EEPSTAT = 0x0502, -
-  ECT_REG_EEPADR = 0x0504, -ECT_REG_EEPDAT = 0x0508, -ECT_REG_FMMU0 = 0x0600, -ECT_REG_FMMU1 = ECT_REG_FMMU0 + 0x10, -
-  ECT_REG_FMMU2 = ECT_REG_FMMU1 + 0x10, -ECT_REG_FMMU3 = ECT_REG_FMMU2 + 0x10, -ECT_REG_SM0 = 0x0800, -ECT_REG_SM1 = ECT_REG_SM0 + 0x08, -
-  ECT_REG_SM2 = ECT_REG_SM1 + 0x08, -ECT_REG_SM3 = ECT_REG_SM2 + 0x08, -ECT_REG_SM0STAT = ECT_REG_SM0 + 0x05, -ECT_REG_SM1STAT = ECT_REG_SM1 + 0x05, -
-  ECT_REG_SM1ACT = ECT_REG_SM1 + 0x06, -ECT_REG_SM1CONTR = ECT_REG_SM1 + 0x07, -ECT_REG_DCTIME0 = 0x0900, -ECT_REG_DCTIME1 = 0x0904, -
-  ECT_REG_DCTIME2 = 0x0908, -ECT_REG_DCTIME3 = 0x090C, -ECT_REG_DCSYSTIME = 0x0910, -ECT_REG_DCSOF = 0x0918, -
-  ECT_REG_DCSYSOFFSET = 0x0920, -ECT_REG_DCSYSDELAY = 0x0928, -ECT_REG_DCSYSDIFF = 0x092C, -ECT_REG_DCSPEEDCNT = 0x0930, -
-  ECT_REG_DCTIMEFILT = 0x0934, -ECT_REG_DCCUC = 0x0980, -ECT_REG_DCSYNCACT = 0x0981, -ECT_REG_DCSTART0 = 0x0990, -
-  ECT_REG_DCCYCLE0 = 0x09A0, -ECT_REG_DCCYCLE1 = 0x09A4 -
- }
enum  ec_err_type {
-  EC_ERR_TYPE_SDO_ERROR = 0, -EC_ERR_TYPE_EMERGENCY = 1, -EC_ERR_TYPE_PACKET_ERROR = 3, -EC_ERR_TYPE_SDOINFO_ERROR = 4, -
-  EC_ERR_TYPE_FOE_ERROR = 5, -EC_ERR_TYPE_FOE_BUF2SMALL = 6, -EC_ERR_TYPE_FOE_PACKETNUMBER = 7, -EC_ERR_TYPE_SOE_ERROR = 8, -
-  EC_ERR_TYPE_MBX_ERROR = 9 -
- }
-

Detailed Description

-

General typedefs and defines for EtherCAT.

-

Defines that could need optimalisation for specific applications are the EC_TIMEOUTxxx. Assumptions for the standard settings are a standard linux PC or laptop and a wired connection to maximal 100 slaves. For use with wireless connections or lots of slaves the timouts need increasing. For fast systems running Xenomai and RT-net or alike the timeouts need to be shorter.

-

Define Documentation

- -
-
- - - - -
#define EC_BUFSIZE   EC_MAXECATFRAME
-
-
-

standard frame buffer size in bytes

- -
-
- -
-
- - - - -
#define EC_CMDOFFSET   EC_ELENGTHSIZE
-
-
-

offset position of command in EtherCAT header

- -
-
- -
-
- - - - -
#define EC_DATAGRAMFOLLOWS   (1 << 15)
-
-
-

definition of datagram follows bit in ec_comt.dlength

- -
-
- -
-
- - - - -
#define EC_DEFAULTRETRIES   3
-
-
-

default number of retries if wkc <= 0

- -
-
- -
-
- - - - -
#define EC_ECATTYPE   0x1000
-
-
-

datagram type EtherCAT

- -
-
- -
-
- - - - -
#define EC_ELENGTHSIZE   sizeof(uint16)
-
-
-

size of ec_comt.elength item in EtherCAT header

- -
-
- -
-
- - - - -
#define EC_ERROR   -3
-
-
-

return value general error

- -
-
- -
-
- - - - -
#define EC_ESTAT_BUSY   0x8000
-
-
-

EEprom state machine busy flag

- -
-
- -
-
- - - - -
#define EC_ESTAT_EMASK   0x7800
-
-
-

EEprom state machine error flag mask

- -
-
- -
-
- - - - -
#define EC_ESTAT_NACK   0x2000
-
-
-

EEprom state machine error acknowledge

- -
-
- -
-
- - - - -
#define EC_ESTAT_R64   0x0040
-
-
-

EEprom state machine read size

- -
-
- -
-
- - - - -
#define EC_FIRSTDCDATAGRAM   20
-
-
-

size of DC datagram used in first LRW frame

- -
-
- -
-
- - - - -
#define EC_HEADERSIZE   sizeof(ec_comt)
-
-
-

EtherCAT header size

- -
-
- -
-
- - - - -
#define EC_LITTLE_ENDIAN
-
-
-

Define Little or Big endian target

- -
-
- -
-
- - - - -
#define EC_MAXBUF   16
-
-
-

number of frame buffers per channel (tx, rx1 rx2)

- -
-
- -
-
- - - - -
#define EC_MAXECATFRAME   1518
-
-
-

maximum EtherCAT frame length in bytes

- -
-
- -
-
- - - - -
#define EC_MAXEEPBITMAP   128
-
-
-

size of EEPROM bitmap cache

- -
-
- -
-
- - - - -
#define EC_MAXEEPBUF   EC_MAXEEPBITMAP << 5
-
-
-

size of EEPROM cache buffer

- -
-
- -
-
- - - - -
#define EC_MAXLRWDATA   (EC_MAXECATFRAME - 14 - 2 - 10 - 2 - 4)
-
-
-

maximum EtherCAT LRW frame length in bytes

- -
-
- -
-
- - - - -
#define EC_NOFRAME   -1
-
-
-

return value no frame returned

- -
-
- -
-
- - - - -
#define EC_OTHERFRAME   -2
-
-
-

return value unknown frame received

- -
-
- -
-
- - - - -
#define EC_TIMEOUTEEP   20000
-
-
-

timeout value in us for EEPROM access

- -
-
- -
-
- - - - -
#define EC_TIMEOUTRET   2000
-
-
-

timeout value in us for tx frame to return to rx

- -
-
- -
-
- - - - -
#define EC_TIMEOUTRET3   (EC_TIMEOUTRET * 3)
-
-
-

timeout value in us for safe data transfer, max. triple retry

- -
-
- -
-
- - - - -
#define EC_TIMEOUTRXM   700000
-
-
-

timeout value in us for rx mailbox cycle

- -
-
- -
-
- - - - -
#define EC_TIMEOUTSAFE   20000
-
-
-

timeout value in us for return "safe" variant (f.e. wireless)

- -
-
- -
-
- - - - -
#define EC_TIMEOUTSTATE   2000000
-
-
-

timeout value in us for check statechange

- -
-
- -
-
- - - - -
#define EC_TIMEOUTTXM   20000
-
-
-

timeout value in us for tx mailbox cycle

- -
-
- -
-
- - - - -
#define EC_VER1
-
-
-

define EC_VER1 if version 1 default context and functions are needed comment if application uses only ecx_ functions and own context

- -
-
- -
-
- - - - -
#define EC_WKCSIZE   sizeof(uint16)
-
-
-

size of workcounter item in EtherCAT datagram

- -
-
- -
-
- - - - -
#define ECT_SDO_PDOASSIGN   0x1c10
-
-
-

standard SDO PDO assignment

- -
-
- -
-
- - - - -
#define ECT_SDO_RXPDOASSIGN   0x1c12
-
-
-

standard SDO RxPDO assignment

- -
-
- -
-
- - - - -
#define ECT_SDO_SMCOMMTYPE   0x1c00
-
-
-

standard SDO Sync Manager Communication Type

- -
-
- -
-
- - - - -
#define ECT_SDO_TXPDOASSIGN   0x1c13
-
-
-

standard SDO TxPDO assignment

- -
-
- -
-
- - - - -
#define ECT_SII_START   0x0040
-
-
-

Start address SII sections in Eeprom

- -
-
- -
-
- - - - -
#define ETH_HEADERSIZE   sizeof(ec_etherheadert)
-
-
-

ethernet header size

- -
-
- -
-
- - - - -
#define ETH_P_ECAT   0x88A4
-
-
-

Ethercat packet type

- -
-
- -
-
- - - - - - - - -
#define etohl( A)   (A)
-
-
- -
-
- -
-
- - - - - - - - -
#define etohll( A)   (A)
-
-
- -
-
- -
-
- - - - - - - - -
#define etohs( A)   (A)
-
-
- -
-
- -
-
- - - - - - - - -
#define get_unaligned( ptr)   ({ __typeof__(*(ptr)) __tmp; memcpy(&__tmp, (ptr), sizeof(*(ptr))); __tmp; })
-
-
- -
-
- -
-
- - - - - - - - -
#define HI_BYTE( w)   ((w) >> 8)
-
-
-

Macro to get hi byte of a word

- -
-
- -
-
- - - - - - - - -
#define HI_WORD( l)   ((l) >> 16)
-
-
-

Macro to get hi word of a dword

- -
-
- -
-
- - - - - - - - -
#define htoel( A)   (A)
-
-
- -
-
- -
-
- - - - - - - - -
#define htoell( A)   (A)
-
-
- -
-
- -
-
- - - - - - - - -
#define htoes( A)   (A)
-
-
- -
-
- -
-
- - - - - - - - -
#define LO_BYTE( w)   ((w) & 0x00ff)
-
-
-

Macro to get low byte of a word

- -
-
- -
-
- - - - - - - - -
#define LO_WORD( l)   ((l) & 0xffff)
-
-
-

Macro to get hi word of a dword

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
#define MK_WORD( msb,
 lsb 
)   ((((uint16)(msb))<<8) | (lsb))
-
-
-

Helper macros Macro to make a word from 2 bytes

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
#define put_unaligned32( val,
 ptr 
)   (memcpy((ptr), &(val), 4))
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
#define put_unaligned64( val,
 ptr 
)   (memcpy((ptr), &(val), 8))
-
-
- -
-
- -
-
- - - - - - - - -
#define SWAP( w)   ((((w)& 0xff00) >> 8) | (((w) & 0x00ff) << 8))
-
-
-

Macro to swap hi and low byte of a word

- -
-
-

Typedef Documentation

- -
-
- - - - -
typedef uint8 ec_bufT[EC_BUFSIZE]
-
-
-

definition for frame buffers

- -
-
-

Enumeration Type Documentation

- -
-
- - - - -
anonymous enum
-
-
-
Enumerator:
- - - - - -
ECT_SII_STRING  -

SII category strings

-
ECT_SII_GENERAL  -

SII category general

-
ECT_SII_FMMU  -

SII category FMMU

-
ECT_SII_SM  -

SII category SM

-
ECT_SII_PDO  -

SII category PDO

-
-
-
- -
-
- -
-
- - - - -
anonymous enum
-
-
-

Item offsets in SII general section

-
Enumerator:
- - - - - - - - - -
ECT_SII_MANUF  -
ECT_SII_ID  -
ECT_SII_REV  -
ECT_SII_BOOTRXMBX  -
ECT_SII_BOOTTXMBX  -
ECT_SII_MBXSIZE  -
ECT_SII_TXMBXADR  -
ECT_SII_RXMBXADR  -
ECT_SII_MBXPROTO  -
-
-
- -
-
- -
-
- - - - -
anonymous enum
-
-
-

Mailbox types definitions

-
Enumerator:
- - - - - - - -
ECT_MBXT_ERR  -

Error mailbox type

-
ECT_MBXT_AOE  -

ADS over EtherCAT mailbox type

-
ECT_MBXT_EOE  -

Ethernet over EtherCAT mailbox type

-
ECT_MBXT_COE  -

CANopen over EtherCAT mailbox type

-
ECT_MBXT_FOE  -

File over EtherCAT mailbox type

-
ECT_MBXT_SOE  -

Servo over EtherCAT mailbox type

-
ECT_MBXT_VOE  -

Vendor over EtherCAT mailbox type

-
-
-
- -
-
- -
-
- - - - -
anonymous enum
-
-
-

CoE mailbox types

-
Enumerator:
- - - - - - - - -
ECT_COES_EMERGENCY  -
ECT_COES_SDOREQ  -
ECT_COES_SDORES  -
ECT_COES_TXPDO  -
ECT_COES_RXPDO  -
ECT_COES_TXPDO_RR  -
ECT_COES_RXPDO_RR  -
ECT_COES_SDOINFO  -
-
-
- -
-
- -
-
- - - - -
anonymous enum
-
-
-

CoE SDO commands

-
Enumerator:
- - - - - - - -
ECT_SDO_DOWN_INIT  -
ECT_SDO_DOWN_EXP  -
ECT_SDO_DOWN_INIT_CA  -
ECT_SDO_UP_REQ  -
ECT_SDO_UP_REQ_CA  -
ECT_SDO_SEG_UP_REQ  -
ECT_SDO_ABORT  -
-
-
- -
-
- -
-
- - - - -
anonymous enum
-
-
-

CoE Object Description commands

-
Enumerator:
- - - - - - - -
ECT_GET_ODLIST_REQ  -
ECT_GET_ODLIST_RES  -
ECT_GET_OD_REQ  -
ECT_GET_OD_RES  -
ECT_GET_OE_REQ  -
ECT_GET_OE_RES  -
ECT_SDOINFO_ERROR  -
-
-
- -
-
- -
-
- - - - -
anonymous enum
-
-
-

FoE opcodes

-
Enumerator:
- - - - - - -
ECT_FOE_READ  -
ECT_FOE_WRITE  -
ECT_FOE_DATA  -
ECT_FOE_ACK  -
ECT_FOE_ERROR  -
ECT_FOE_BUSY  -
-
-
- -
-
- -
-
- - - - -
anonymous enum
-
-
-

SoE opcodes

-
Enumerator:
- - - - - - -
ECT_SOE_READREQ  -
ECT_SOE_READRES  -
ECT_SOE_WRITEREQ  -
ECT_SOE_WRITERES  -
ECT_SOE_NOTIFICATION  -
ECT_SOE_EMERGENCY  -
-
-
- -
-
- -
-
- - - - -
anonymous enum
-
-
-

Ethercat registers

-
Enumerator:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ECT_REG_TYPE  -
ECT_REG_PORTDES  -
ECT_REG_ESCSUP  -
ECT_REG_STADR  -
ECT_REG_ALIAS  -
ECT_REG_DLCTL  -
ECT_REG_DLPORT  -
ECT_REG_DLALIAS  -
ECT_REG_DLSTAT  -
ECT_REG_ALCTL  -
ECT_REG_ALSTAT  -
ECT_REG_ALSTATCODE  -
ECT_REG_PDICTL  -
ECT_REG_IRQMASK  -
ECT_REG_RXERR  -
ECT_REG_FRXERR  -
ECT_REG_EPUECNT  -
ECT_REG_PECNT  -
ECT_REG_PECODE  -
ECT_REG_LLCNT  -
ECT_REG_WDCNT  -
ECT_REG_EEPCFG  -
ECT_REG_EEPCTL  -
ECT_REG_EEPSTAT  -
ECT_REG_EEPADR  -
ECT_REG_EEPDAT  -
ECT_REG_FMMU0  -
ECT_REG_FMMU1  -
ECT_REG_FMMU2  -
ECT_REG_FMMU3  -
ECT_REG_SM0  -
ECT_REG_SM1  -
ECT_REG_SM2  -
ECT_REG_SM3  -
ECT_REG_SM0STAT  -
ECT_REG_SM1STAT  -
ECT_REG_SM1ACT  -
ECT_REG_SM1CONTR  -
ECT_REG_DCTIME0  -
ECT_REG_DCTIME1  -
ECT_REG_DCTIME2  -
ECT_REG_DCTIME3  -
ECT_REG_DCSYSTIME  -
ECT_REG_DCSOF  -
ECT_REG_DCSYSOFFSET  -
ECT_REG_DCSYSDELAY  -
ECT_REG_DCSYSDIFF  -
ECT_REG_DCSPEEDCNT  -
ECT_REG_DCTIMEFILT  -
ECT_REG_DCCUC  -
ECT_REG_DCSYNCACT  -
ECT_REG_DCSTART0  -
ECT_REG_DCCYCLE0  -
ECT_REG_DCCYCLE1  -
-
-
- -
-
- -
-
- - - - -
enum ec_bufstate
-
-
-

Possible buffer states

-
Enumerator:
- - - - - -
EC_BUF_EMPTY  -

Empty

-
EC_BUF_ALLOC  -

Allocated, but not filled

-
EC_BUF_TX  -

Transmitted

-
EC_BUF_RCVD  -

Received, but not consumed

-
EC_BUF_COMPLETE  -

Cycle completed

-
-
-
- -
-
- -
-
- - - - -
enum ec_cmdtype
-
-
-

Ethercat command types

-
Enumerator:
- - - - - - - - - - - - - - - -
EC_CMD_NOP  -

No operation

-
EC_CMD_APRD  -

Auto Increment Read

-
EC_CMD_APWR  -

Auto Increment Write

-
EC_CMD_APRW  -

Auto Increment Read Write

-
EC_CMD_FPRD  -

Configured Address Read

-
EC_CMD_FPWR  -

Configured Address Write

-
EC_CMD_FPRW  -

Configured Address Read Write

-
EC_CMD_BRD  -

Broadcast Read

-
EC_CMD_BWR  -

Broaddcast Write

-
EC_CMD_BRW  -

Broadcast Read Write

-
EC_CMD_LRD  -

Logical Memory Read

-
EC_CMD_LWR  -

Logical Memory Write

-
EC_CMD_LRW  -

Logical Memory Read Write

-
EC_CMD_ARMW  -

Auto Increment Read Mulitple Write

-
EC_CMD_FRMW  -

Configured Read Mulitple Write Reserved

-
-
-
- -
-
- -
-
- - - - -
enum ec_datatype
-
-
-

Ethercat data types

-
Enumerator:
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ECT_BOOLEAN  -
ECT_INTEGER8  -
ECT_INTEGER16  -
ECT_INTEGER32  -
ECT_UNSIGNED8  -
ECT_UNSIGNED16  -
ECT_UNSIGNED32  -
ECT_REAL32  -
ECT_VISIBLE_STRING  -
ECT_OCTET_STRING  -
ECT_UNICODE_STRING  -
ECT_TIME_OF_DAY  -
ECT_TIME_DIFFERENCE  -
ECT_DOMAIN  -
ECT_INTEGER24  -
ECT_REAL64  -
ECT_INTEGER64  -
ECT_UNSIGNED24  -
ECT_UNSIGNED64  -
ECT_BIT1  -
ECT_BIT2  -
ECT_BIT3  -
ECT_BIT4  -
ECT_BIT5  -
ECT_BIT6  -
ECT_BIT7  -
ECT_BIT8  -
-
-
- -
-
- -
-
- - - - -
enum ec_ecmdtype
-
-
-

Ethercat EEprom command types

-
Enumerator:
- - - - -
EC_ECMD_NOP  -

No operation

-
EC_ECMD_READ  -

Read

-
EC_ECMD_WRITE  -

Write

-
EC_ECMD_RELOAD  -

Reload

-
-
-
- -
-
- -
-
- - - - -
enum ec_err
-
-
-

Possible error codes returned.

-
Enumerator:
- - - - - - -
EC_ERR_OK  -

No error

-
EC_ERR_ALREADY_INITIALIZED  -

Library already initialized.

-
EC_ERR_NOT_INITIALIZED  -

Library not initialized.

-
EC_ERR_TIMEOUT  -

Timeout occured during execution of the function.

-
EC_ERR_NO_SLAVES  -

No slaves were found.

-
EC_ERR_NOK  -

Function failed.

-
-
-
- -
-
- -
-
- - - - -
enum ec_err_type
-
-
-

Error types

-
Enumerator:
- - - - - - - - - -
EC_ERR_TYPE_SDO_ERROR  -
EC_ERR_TYPE_EMERGENCY  -
EC_ERR_TYPE_PACKET_ERROR  -
EC_ERR_TYPE_SDOINFO_ERROR  -
EC_ERR_TYPE_FOE_ERROR  -
EC_ERR_TYPE_FOE_BUF2SMALL  -
EC_ERR_TYPE_FOE_PACKETNUMBER  -
EC_ERR_TYPE_SOE_ERROR  -
EC_ERR_TYPE_MBX_ERROR  -
-
-
- -
-
- -
-
- - - - -
enum ec_state
-
-
-

Possible EtherCAT slave states

-
Enumerator:
- - - - - - - -
EC_STATE_INIT  -

Init state

-
EC_STATE_PRE_OP  -

Pre-operational.

-
EC_STATE_BOOT  -

Boot state

-
EC_STATE_SAFE_OP  -

Safe-operational.

-
EC_STATE_OPERATIONAL  -

Operational

-
EC_STATE_ACK  -

Error or ACK error

-
EC_STATE_ERROR  -
-
-
- -
-
-
- - - diff --git a/doc/html/files.html b/doc/html/files.html deleted file mode 100644 index 33391ed..0000000 --- a/doc/html/files.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - -SOEM: File List - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-
File List
-
-
-
Here is a list of all files with brief descriptions:
- - - - - - - - - - - - - - - - - - - - - - - -
ebox.cExample code for Simple Open EtherCAT master
eepromtool.cEEprom tool for Simple Open EtherCAT master
ethercatbase.cBase EtherCAT functions
ethercatbase.hHeaderfile for ethercatbase.c
ethercatcoe.cCAN over EtherCAT (CoE) module
ethercatcoe.hHeaderfile for ethercatcoe.c
ethercatconfig.cConfiguration module for EtherCAT master
ethercatconfig.hHeaderfile for ethercatconfig.c
ethercatconfiglist.hDEPRICATED Configuration list of known EtherCAT slave devices
ethercatdc.cDistributed Clock EtherCAT functions
ethercatdc.hHeaderfile for ethercatdc.c
ethercatfoe.cFile over EtherCAT (FoE) module
ethercatfoe.hHeaderfile for ethercatfoe.c
ethercatmain.cMain EtherCAT functions
ethercatmain.hHeaderfile for ethercatmain.c
ethercatprint.cModule to convert EtherCAT errors to readable messages
ethercatprint.hHeaderfile for ethercatprint.c
ethercatsoe.cServo over EtherCAT (SoE) Module
ethercatsoe.hHeaderfile for ethercatsoe.c
ethercattype.hGeneral typedefs and defines for EtherCAT
red_test.cExample code for Simple Open EtherCAT master
simple_test.cExample code for Simple Open EtherCAT master
slaveinfo.cExample code for Simple Open EtherCAT master
-
- - - diff --git a/doc/html/functions.html b/doc/html/functions.html deleted file mode 100644 index ebda597..0000000 --- a/doc/html/functions.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- a -

-
- - - diff --git a/doc/html/functions_0x62.html b/doc/html/functions_0x62.html deleted file mode 100644 index 2d6fce2..0000000 --- a/doc/html/functions_0x62.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- b -

-
- - - diff --git a/doc/html/functions_0x63.html b/doc/html/functions_0x63.html deleted file mode 100644 index b6a8e80..0000000 --- a/doc/html/functions_0x63.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- c -

-
- - - diff --git a/doc/html/functions_0x64.html b/doc/html/functions_0x64.html deleted file mode 100644 index a3ffc9c..0000000 --- a/doc/html/functions_0x64.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- d -

-
- - - diff --git a/doc/html/functions_0x65.html b/doc/html/functions_0x65.html deleted file mode 100644 index f180e17..0000000 --- a/doc/html/functions_0x65.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- e -

-
- - - diff --git a/doc/html/functions_0x66.html b/doc/html/functions_0x66.html deleted file mode 100644 index bc088d5..0000000 --- a/doc/html/functions_0x66.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- f -

-
- - - diff --git a/doc/html/functions_0x67.html b/doc/html/functions_0x67.html deleted file mode 100644 index c794818..0000000 --- a/doc/html/functions_0x67.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- g -

-
- - - diff --git a/doc/html/functions_0x68.html b/doc/html/functions_0x68.html deleted file mode 100644 index 30231bb..0000000 --- a/doc/html/functions_0x68.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- h -

-
- - - diff --git a/doc/html/functions_0x69.html b/doc/html/functions_0x69.html deleted file mode 100644 index 4a5251b..0000000 --- a/doc/html/functions_0x69.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- i -

-
- - - diff --git a/doc/html/functions_0x6c.html b/doc/html/functions_0x6c.html deleted file mode 100644 index f115b38..0000000 --- a/doc/html/functions_0x6c.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- l -

-
- - - diff --git a/doc/html/functions_0x6d.html b/doc/html/functions_0x6d.html deleted file mode 100644 index d3261fe..0000000 --- a/doc/html/functions_0x6d.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- m -

-
- - - diff --git a/doc/html/functions_0x6e.html b/doc/html/functions_0x6e.html deleted file mode 100644 index f03da39..0000000 --- a/doc/html/functions_0x6e.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- n -

-
- - - diff --git a/doc/html/functions_0x6f.html b/doc/html/functions_0x6f.html deleted file mode 100644 index fe3c3b5..0000000 --- a/doc/html/functions_0x6f.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- o -

-
- - - diff --git a/doc/html/functions_0x70.html b/doc/html/functions_0x70.html deleted file mode 100644 index 2daf21f..0000000 --- a/doc/html/functions_0x70.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- p -

-
- - - diff --git a/doc/html/functions_0x72.html b/doc/html/functions_0x72.html deleted file mode 100644 index 5c3a87f..0000000 --- a/doc/html/functions_0x72.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- r -

-
- - - diff --git a/doc/html/functions_0x73.html b/doc/html/functions_0x73.html deleted file mode 100644 index 32df8de..0000000 --- a/doc/html/functions_0x73.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- s -

-
- - - diff --git a/doc/html/functions_0x74.html b/doc/html/functions_0x74.html deleted file mode 100644 index 8e4b14b..0000000 --- a/doc/html/functions_0x74.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- t -

-
- - - diff --git a/doc/html/functions_0x75.html b/doc/html/functions_0x75.html deleted file mode 100644 index 04c3583..0000000 --- a/doc/html/functions_0x75.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- u -

-
- - - diff --git a/doc/html/functions_0x76.html b/doc/html/functions_0x76.html deleted file mode 100644 index 4cfa982..0000000 --- a/doc/html/functions_0x76.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- v -

-
- - - diff --git a/doc/html/functions_0x77.html b/doc/html/functions_0x77.html deleted file mode 100644 index 3a1a634..0000000 --- a/doc/html/functions_0x77.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -SOEM: Data Fields - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all struct and union fields with links to the structures/unions they belong to:
- -

- w -

-
- - - diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html deleted file mode 100644 index dd301a4..0000000 --- a/doc/html/functions_vars.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- a -

-
- - - diff --git a/doc/html/functions_vars_0x62.html b/doc/html/functions_vars_0x62.html deleted file mode 100644 index c648ff2..0000000 --- a/doc/html/functions_vars_0x62.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- b -

-
- - - diff --git a/doc/html/functions_vars_0x63.html b/doc/html/functions_vars_0x63.html deleted file mode 100644 index 0dc7a91..0000000 --- a/doc/html/functions_vars_0x63.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- c -

-
- - - diff --git a/doc/html/functions_vars_0x64.html b/doc/html/functions_vars_0x64.html deleted file mode 100644 index b32a12b..0000000 --- a/doc/html/functions_vars_0x64.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- d -

-
- - - diff --git a/doc/html/functions_vars_0x65.html b/doc/html/functions_vars_0x65.html deleted file mode 100644 index 99e071d..0000000 --- a/doc/html/functions_vars_0x65.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- e -

-
- - - diff --git a/doc/html/functions_vars_0x66.html b/doc/html/functions_vars_0x66.html deleted file mode 100644 index d4ea57f..0000000 --- a/doc/html/functions_vars_0x66.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- f -

-
- - - diff --git a/doc/html/functions_vars_0x67.html b/doc/html/functions_vars_0x67.html deleted file mode 100644 index 24ade2a..0000000 --- a/doc/html/functions_vars_0x67.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- g -

-
- - - diff --git a/doc/html/functions_vars_0x68.html b/doc/html/functions_vars_0x68.html deleted file mode 100644 index 293ac05..0000000 --- a/doc/html/functions_vars_0x68.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- h -

-
- - - diff --git a/doc/html/functions_vars_0x69.html b/doc/html/functions_vars_0x69.html deleted file mode 100644 index 2eb37a4..0000000 --- a/doc/html/functions_vars_0x69.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- i -

-
- - - diff --git a/doc/html/functions_vars_0x6c.html b/doc/html/functions_vars_0x6c.html deleted file mode 100644 index fd5e439..0000000 --- a/doc/html/functions_vars_0x6c.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- l -

-
- - - diff --git a/doc/html/functions_vars_0x6d.html b/doc/html/functions_vars_0x6d.html deleted file mode 100644 index a690a2c..0000000 --- a/doc/html/functions_vars_0x6d.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- m -

-
- - - diff --git a/doc/html/functions_vars_0x6e.html b/doc/html/functions_vars_0x6e.html deleted file mode 100644 index 4f03e13..0000000 --- a/doc/html/functions_vars_0x6e.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- n -

-
- - - diff --git a/doc/html/functions_vars_0x6f.html b/doc/html/functions_vars_0x6f.html deleted file mode 100644 index 5c4fe97..0000000 --- a/doc/html/functions_vars_0x6f.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- o -

-
- - - diff --git a/doc/html/functions_vars_0x70.html b/doc/html/functions_vars_0x70.html deleted file mode 100644 index 0048ed9..0000000 --- a/doc/html/functions_vars_0x70.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- p -

-
- - - diff --git a/doc/html/functions_vars_0x72.html b/doc/html/functions_vars_0x72.html deleted file mode 100644 index 3cd51ec..0000000 --- a/doc/html/functions_vars_0x72.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- r -

-
- - - diff --git a/doc/html/functions_vars_0x73.html b/doc/html/functions_vars_0x73.html deleted file mode 100644 index b33751d..0000000 --- a/doc/html/functions_vars_0x73.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- s -

-
- - - diff --git a/doc/html/functions_vars_0x74.html b/doc/html/functions_vars_0x74.html deleted file mode 100644 index 3ef62ae..0000000 --- a/doc/html/functions_vars_0x74.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- t -

-
- - - diff --git a/doc/html/functions_vars_0x75.html b/doc/html/functions_vars_0x75.html deleted file mode 100644 index a86c029..0000000 --- a/doc/html/functions_vars_0x75.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- u -

-
- - - diff --git a/doc/html/functions_vars_0x76.html b/doc/html/functions_vars_0x76.html deleted file mode 100644 index de5bbc3..0000000 --- a/doc/html/functions_vars_0x76.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- v -

-
- - - diff --git a/doc/html/functions_vars_0x77.html b/doc/html/functions_vars_0x77.html deleted file mode 100644 index 60543a3..0000000 --- a/doc/html/functions_vars_0x77.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -SOEM: Data Fields - Variables - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- w -

-
- - - diff --git a/doc/html/globals.html b/doc/html/globals.html deleted file mode 100644 index 3d26416..0000000 --- a/doc/html/globals.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- a -

-
- - - diff --git a/doc/html/globals_0x63.html b/doc/html/globals_0x63.html deleted file mode 100644 index ffb8ccd..0000000 --- a/doc/html/globals_0x63.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- c -

-
- - - diff --git a/doc/html/globals_0x64.html b/doc/html/globals_0x64.html deleted file mode 100644 index 85b2893..0000000 --- a/doc/html/globals_0x64.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- d -

-
- - - diff --git a/doc/html/globals_0x65.html b/doc/html/globals_0x65.html deleted file mode 100644 index 3f477c0..0000000 --- a/doc/html/globals_0x65.html +++ /dev/null @@ -1,1744 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- e -

-
- - - diff --git a/doc/html/globals_0x67.html b/doc/html/globals_0x67.html deleted file mode 100644 index 55cb81d..0000000 --- a/doc/html/globals_0x67.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- g -

-
- - - diff --git a/doc/html/globals_0x68.html b/doc/html/globals_0x68.html deleted file mode 100644 index 37ee1ee..0000000 --- a/doc/html/globals_0x68.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- h -

-
- - - diff --git a/doc/html/globals_0x69.html b/doc/html/globals_0x69.html deleted file mode 100644 index de8aff7..0000000 --- a/doc/html/globals_0x69.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- i -

-
- - - diff --git a/doc/html/globals_0x6c.html b/doc/html/globals_0x6c.html deleted file mode 100644 index b7c1070..0000000 --- a/doc/html/globals_0x6c.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- l -

-
- - - diff --git a/doc/html/globals_0x6d.html b/doc/html/globals_0x6d.html deleted file mode 100644 index 3cedaac..0000000 --- a/doc/html/globals_0x6d.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- m -

-
- - - diff --git a/doc/html/globals_0x6e.html b/doc/html/globals_0x6e.html deleted file mode 100644 index 52545c8..0000000 --- a/doc/html/globals_0x6e.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- n -

-
- - - diff --git a/doc/html/globals_0x6f.html b/doc/html/globals_0x6f.html deleted file mode 100644 index db72d82..0000000 --- a/doc/html/globals_0x6f.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- o -

-
- - - diff --git a/doc/html/globals_0x70.html b/doc/html/globals_0x70.html deleted file mode 100644 index 8504cc1..0000000 --- a/doc/html/globals_0x70.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- p -

-
- - - diff --git a/doc/html/globals_0x72.html b/doc/html/globals_0x72.html deleted file mode 100644 index e8a54bc..0000000 --- a/doc/html/globals_0x72.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- r -

-
- - - diff --git a/doc/html/globals_0x73.html b/doc/html/globals_0x73.html deleted file mode 100644 index 3977072..0000000 --- a/doc/html/globals_0x73.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- s -

-
- - - diff --git a/doc/html/globals_0x74.html b/doc/html/globals_0x74.html deleted file mode 100644 index 8ba6111..0000000 --- a/doc/html/globals_0x74.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- t -

-
- - - diff --git a/doc/html/globals_0x75.html b/doc/html/globals_0x75.html deleted file mode 100644 index 82caf35..0000000 --- a/doc/html/globals_0x75.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- u -

-
- - - diff --git a/doc/html/globals_0x77.html b/doc/html/globals_0x77.html deleted file mode 100644 index fd62d95..0000000 --- a/doc/html/globals_0x77.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
- -

- w -

-
- - - diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html deleted file mode 100644 index a3217cd..0000000 --- a/doc/html/globals_defs.html +++ /dev/null @@ -1,521 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- c -

- - -

- e -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- p -

- - -

- s -

-
- - - diff --git a/doc/html/globals_enum.html b/doc/html/globals_enum.html deleted file mode 100644 index e2dffc6..0000000 --- a/doc/html/globals_enum.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - -
-
-
- - - diff --git a/doc/html/globals_eval.html b/doc/html/globals_eval.html deleted file mode 100644 index e404018..0000000 --- a/doc/html/globals_eval.html +++ /dev/null @@ -1,609 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- e -

-
- - - diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html deleted file mode 100644 index 45fba2c..0000000 --- a/doc/html/globals_func.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- a -

-
- - - diff --git a/doc/html/globals_func_0x63.html b/doc/html/globals_func_0x63.html deleted file mode 100644 index c8ae868..0000000 --- a/doc/html/globals_func_0x63.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- c -

-
- - - diff --git a/doc/html/globals_func_0x64.html b/doc/html/globals_func_0x64.html deleted file mode 100644 index fac330e..0000000 --- a/doc/html/globals_func_0x64.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- d -

-
- - - diff --git a/doc/html/globals_func_0x65.html b/doc/html/globals_func_0x65.html deleted file mode 100644 index 8f19df3..0000000 --- a/doc/html/globals_func_0x65.html +++ /dev/null @@ -1,777 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- e -

-
- - - diff --git a/doc/html/globals_func_0x69.html b/doc/html/globals_func_0x69.html deleted file mode 100644 index 065cee9..0000000 --- a/doc/html/globals_func_0x69.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- i -

-
- - - diff --git a/doc/html/globals_func_0x6d.html b/doc/html/globals_func_0x6d.html deleted file mode 100644 index db7b019..0000000 --- a/doc/html/globals_func_0x6d.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- m -

-
- - - diff --git a/doc/html/globals_func_0x6f.html b/doc/html/globals_func_0x6f.html deleted file mode 100644 index d3534f5..0000000 --- a/doc/html/globals_func_0x6f.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- o -

-
- - - diff --git a/doc/html/globals_func_0x72.html b/doc/html/globals_func_0x72.html deleted file mode 100644 index 3d77f93..0000000 --- a/doc/html/globals_func_0x72.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- r -

-
- - - diff --git a/doc/html/globals_func_0x73.html b/doc/html/globals_func_0x73.html deleted file mode 100644 index 622bd87..0000000 --- a/doc/html/globals_func_0x73.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- s -

-
- - - diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html deleted file mode 100644 index 4ecdbe9..0000000 --- a/doc/html/globals_type.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - -
-
-
- - - diff --git a/doc/html/globals_vars.html b/doc/html/globals_vars.html deleted file mode 100644 index 9cee7a3..0000000 --- a/doc/html/globals_vars.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - -SOEM: Globals - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - - - -
-
-  - -

- a -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- w -

-
- - - diff --git a/doc/html/index.html b/doc/html/index.html deleted file mode 100644 index 030a080..0000000 --- a/doc/html/index.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - -SOEM: Simple Open EtherCAT Master or SOEM - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- -
-
-
-
Simple Open EtherCAT Master or SOEM
-
-
-

-Tutorial

-

For a tutorial on SOEM See tutorial.txt

-

-Overview

-

SOEM is an EtherCAT master library written in c. Its purpose is to learn and to use. All users are invited to study the source to get an understanding how an EtherCAT master functions and how it interacts with EtherCAT slaves.

-

As all applications are different SOEM tries to not impose any design architecture. Under Linux it can be used in generic user mode, PREEMPT_RT or Xenomai. under Windows it can be used as user mode program.

-

Preconditions Linux:

- -

Preconditions Windows:

- -

Features as of 1.1.2 :

- -

Features as of 1.1.3 :

- -

Features as of 1.1.4 :

- -

Features as of 1.2.0 :

- -

Features as of 1.2.2 :

- -

Features as of 1.2.4 :

- -

Features as of 1.2.5 :

- -

Features as of 1.2.8 :

- -

Features as of 1.3.0 :

- -

-Tutorial

-

For Linux

- -

For examples see simple_test.c in ~/test/linux/simple_test. First try (assume EtherCAT on eth0): sudo ./simple_test eth0 As SOEM uses RAW sockets it will need to run as root.

-

For Windows

- -

-Squashed bugs

-

Version 1.1.3

- -

Version 1.1.4

- -

Version 1.2.0

- -

Version 1.2.2

- -

Version 1.2.3

- -

Version 1.2.5

- -

Version 1.2.8

- -

Version 1.3.0

- -

Version 1.3.1

- -

-Legal notice

-

Copyright© 2005-2015 Speciaal Machinefabriek Ketels v.o.f.
- Copyright© 2005-2015 Arthur Ketels
- Copyright© 2008-2010 TU/e Technische Universiteit Eindhoven
- Copyright© 2012-2015 RT-labs AB
-

-

SOEM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

-

SOEM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

-

As a special exception, if other files instantiate templates or use macros or inline functions from this file, or you compile this file and link it with other works to produce a work based on this file, this file does not by itself cause the resulting work to be covered by the GNU General Public License. However the source code for this file must still be made available in accordance with section (3) of the GNU General Public License.

-

This exception does not invalidate any other reasons why a work based on this file might be covered by the GNU General Public License.

-

The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual property of, and protected by Beckhoff Automation GmbH. You can use SOEM for the sole purpose of creating, using and/or selling or otherwise distributing an EtherCAT network master provided that an EtherCAT Master License is obtained from Beckhoff Automation GmbH.

-

In case you did not receive a copy of the EtherCAT Master License along with SOEM write to Beckhoff Automation GmbH, Eiserstrasse 5, D-33415 Verl, Germany (www.beckhoff.com).

-
- - - diff --git a/doc/html/jquery.js b/doc/html/jquery.js deleted file mode 100644 index c052173..0000000 --- a/doc/html/jquery.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * jQuery JavaScript Library v1.3.2 - * http://jquery.com/ - * - * Copyright (c) 2009 John Resig - * Dual licensed under the MIT and GPL licenses. - * http://docs.jquery.com/License - * - * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) - * Revision: 6246 - */ -(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); -/* - * Sizzle CSS Selector Engine - v0.9.3 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) -{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() -{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); -/* - * jQuery UI 1.7.2 - * - * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * http://docs.jquery.com/UI - */ -jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/* * jQuery UI Resizable 1.7.2 - * - * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * http://docs.jquery.com/UI/Resizables - * - * Depends: - * ui.core.js - */ -(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f
');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidthk.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.2",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)) -{s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);; -/** - * jQuery.ScrollTo - Easy element scrolling using jQuery. - * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com - * Licensed under GPL license (http://www.opensource.org/licenses/gpl-license.php). - * Date: 2/8/2008 - * @author Ariel Flesler - * @version 1.3.2 - */ -;(function($){var o=$.scrollTo=function(a,b,c){o.window().scrollTo(a,b,c)};o.defaults={axis:'y',duration:1};o.window=function(){return $($.browser.safari?'body':'html')};$.fn.scrollTo=function(l,m,n){if(typeof m=='object'){n=m;m=0}n=$.extend({},o.defaults,n);m=m||n.speed||n.duration;n.queue=n.queue&&n.axis.length>1;if(n.queue)m/=2;n.offset=j(n.offset);n.over=j(n.over);return this.each(function(){var a=this,b=$(a),t=l,c,d={},w=b.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t=j(t);break}t=$(t,this);case'object':if(t.is||t.style)c=(t=$(t)).offset()}$.each(n.axis.split(''),function(i,f){var P=f=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,e=a[k],D=f=='x'?'Width':'Height';if(c){d[k]=c[p]+(w?0:e-b.offset()[p]);if(n.margin){d[k]-=parseInt(t.css('margin'+P))||0;d[k]-=parseInt(t.css('border'+P+'Width'))||0}d[k]+=n.offset[p]||0;if(n.over[p])d[k]+=t[D.toLowerCase()]()*n.over[p]}else d[k]=t[p];if(/^\d+$/.test(d[k]))d[k]=d[k]<=0?0:Math.min(d[k],h(D));if(!i&&n.queue){if(e!=d[k])g(n.onAfterFirst);delete d[k]}});g(n.onAfter);function g(a){b.animate(d,m,n.easing,a&&function(){a.call(this,l)})};function h(D){var b=w?$.browser.opera?document.body:document.documentElement:a;return b['scroll'+D]-b['client'+D]}})};function j(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); - diff --git a/doc/html/memory_layout.png b/doc/html/memory_layout.png deleted file mode 100644 index ef444ba..0000000 Binary files a/doc/html/memory_layout.png and /dev/null differ diff --git a/doc/html/nav_f.png b/doc/html/nav_f.png deleted file mode 100644 index 1b07a16..0000000 Binary files a/doc/html/nav_f.png and /dev/null differ diff --git a/doc/html/nav_h.png b/doc/html/nav_h.png deleted file mode 100644 index 01f5fa6..0000000 Binary files a/doc/html/nav_h.png and /dev/null differ diff --git a/doc/html/open.png b/doc/html/open.png deleted file mode 100644 index 7b35d2c..0000000 Binary files a/doc/html/open.png and /dev/null differ diff --git a/doc/html/red__test_8c.html b/doc/html/red__test_8c.html deleted file mode 100644 index 2a084e2..0000000 --- a/doc/html/red__test_8c.html +++ /dev/null @@ -1,563 +0,0 @@ - - - - -SOEM: red_test.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
red_test.c File Reference
-
-
- -

Example code for Simple Open EtherCAT master. -More...

-
#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <sched.h>
-#include <string.h>
-#include <time.h>
-#include <pthread.h>
-#include <math.h>
-#include "ethercattype.h"
-#include "nicdrv.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatcoe.h"
-#include "ethercatconfig.h"
-#include "ethercatdc.h"
-#include "ethercatprint.h"
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Defines

#define NSEC_PER_SEC   1000000000
#define EC_TIMEOUTMON   500
#define stack64k   (64 * 1024)

-Functions

void redtest (char *ifname, char *ifname2)
void add_timespec (struct timespec *ts, int64 addtime)
void ec_sync (int64 reftime, int64 cycletime, int64 *offsettime)
OSAL_THREAD_FUNC_RT ecatthread (void *ptr)
OSAL_THREAD_FUNC ecatcheck (void *ptr)
int main (int argc, char *argv[])

-Variables

struct sched_param schedp
char IOmap [4096]
pthread_t thread1
pthread_t thread2
struct timeval tv t1 t2
int dorun = 0
int deltat
int tmax = 0
int64 toff
int64 gl_delta
int DCdiff
int os
uint8 ob
uint16 ob2
uint8 * digout = 0
int expectedWKC
boolean needlf
volatile int wkc
boolean inOP
uint8 currentgroup = 0
-

Detailed Description

-

Example code for Simple Open EtherCAT master.

-

Usage : red_test [ifname1] [ifname2] [cycletime] ifname is NIC interface, f.e. eth0 cycletime in us, f.e. 500

-

This is a redundancy test.

-

(c)Arthur Ketels 2008

-

Define Documentation

- -
-
- - - - -
#define EC_TIMEOUTMON   500
-
-
- -
-
- -
-
- - - - -
#define NSEC_PER_SEC   1000000000
-
-
- -
-
- -
-
- - - - -
#define stack64k   (64 * 1024)
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
void add_timespec (struct timespec * ts,
int64 addtime 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void ec_sync (int64 reftime,
int64 cycletime,
int64 * offsettime 
)
-
-
- -
-
- -
-
- - - - - - - - -
OSAL_THREAD_FUNC ecatcheck (void * ptr)
-
-
- -
-
- -
-
- - - - - - - - -
OSAL_THREAD_FUNC_RT ecatthread (void * ptr)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int main (int argc,
char * argv[] 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void redtest (char * ifname,
char * ifname2 
)
-
-
- -
-
-

Variable Documentation

- -
-
- - - - -
uint8 currentgroup = 0
-
-
- -
-
- -
-
- - - - -
int DCdiff
-
-
- -
-
- -
-
- - - - -
int deltat
-
-
- -
-
- -
-
- - - - -
uint8* digout = 0
-
-
- -
-
- -
-
- - - - -
int dorun = 0
-
-
- -
-
- -
-
- - - - -
int expectedWKC
-
-
- -
-
- -
-
- - - - -
int64 gl_delta
-
-
- -
-
- -
-
- - - - -
boolean inOP
-
-
- -
-
- -
-
- - - - -
char IOmap[4096]
-
-
- -
-
- -
-
- - - - -
boolean needlf
-
-
- -
-
- -
-
- - - - -
uint8 ob
-
-
- -
-
- -
-
- - - - -
uint16 ob2
-
-
- -
-
- -
-
- - - - -
int os
-
-
- -
-
- -
-
- - - - -
struct sched_param schedp
-
-
- -
-
- -
-
- - - - -
struct timeval tv t1 t2
-
-
- -
-
- -
-
- - - - -
pthread_t thread1
-
-
- -
-
- -
-
- - - - -
pthread_t thread2
-
-
- -
-
- -
-
- - - - -
int tmax = 0
-
-
- -
-
- -
-
- - - - -
int64 toff
-
-
- -
-
- -
-
- - - - -
volatile int wkc
-
-
- -
-
-
- - - diff --git a/doc/html/simple__test_8c.html b/doc/html/simple__test_8c.html deleted file mode 100644 index 01caca8..0000000 --- a/doc/html/simple__test_8c.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - -SOEM: simple_test.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
simple_test.c File Reference
-
-
- -

Example code for Simple Open EtherCAT master. -More...

-
#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <pthread.h>
-#include "ethercattype.h"
-#include "nicdrv.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatdc.h"
-#include "ethercatcoe.h"
-#include "ethercatfoe.h"
-#include "ethercatconfig.h"
-#include "ethercatprint.h"
-
- - - - - - - - - - - - - - -

-Defines

#define EC_TIMEOUTMON   500

-Functions

void simpletest (char *ifname)
OSAL_THREAD_FUNC ecatcheck (void *ptr)
int main (int argc, char *argv[])

-Variables

char IOmap [4096]
OSAL_THREAD_HANDLE thread1
int expectedWKC
boolean needlf
volatile int wkc
boolean inOP
uint8 currentgroup = 0
-

Detailed Description

-

Example code for Simple Open EtherCAT master.

-

Usage : simple_test [ifname1] ifname is NIC interface, f.e. eth0

-

This is a minimal test.

-

(c)Arthur Ketels 2010 - 2011

-

Define Documentation

- -
-
- - - - -
#define EC_TIMEOUTMON   500
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
OSAL_THREAD_FUNC ecatcheck (void * ptr)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int main (int argc,
char * argv[] 
)
-
-
- -
-
- -
-
- - - - - - - - -
void simpletest (char * ifname)
-
-
- -
-
-

Variable Documentation

- -
-
- - - - -
uint8 currentgroup = 0
-
-
- -
-
- -
-
- - - - -
int expectedWKC
-
-
- -
-
- -
-
- - - - -
boolean inOP
-
-
- -
-
- -
-
- - - - -
char IOmap[4096]
-
-
- -
-
- -
-
- - - - -
boolean needlf
-
-
- -
-
- -
-
- - - - -
OSAL_THREAD_HANDLE thread1
-
-
- -
-
- -
-
- - - - -
volatile int wkc
-
-
- -
-
-
- - - diff --git a/doc/html/slaveinfo_8c.html b/doc/html/slaveinfo_8c.html deleted file mode 100644 index e06a250..0000000 --- a/doc/html/slaveinfo_8c.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - -SOEM: slaveinfo.c File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
slaveinfo.c File Reference
-
-
- -

Example code for Simple Open EtherCAT master. -More...

-
#include <stdio.h>
-#include <string.h>
-#include "ethercattype.h"
-#include "nicdrv.h"
-#include "ethercatbase.h"
-#include "ethercatmain.h"
-#include "ethercatconfig.h"
-#include "ethercatcoe.h"
-#include "ethercatdc.h"
-#include "ethercatprint.h"
-
- - - - - - - - - - - - - - - - - - -

-Functions

char * dtype2string (uint16 dtype)
char * SDO2string (uint16 slave, uint16 index, uint8 subidx, uint16 dtype)
int si_PDOassign (uint16 slave, uint16 PDOassign, int mapoffset, int bitoffset)
int si_map_sdo (int slave)
int si_siiPDO (uint16 slave, uint8 t, int mapoffset, int bitoffset)
int si_map_sii (int slave)
void si_sdo (int cnt)
void slaveinfo (char *ifname)
int main (int argc, char *argv[])

-Variables

char IOmap [4096]
ec_ODlistt ODlist
ec_OElistt OElist
boolean printSDO = FALSE
boolean printMAP = FALSE
char usdo [128]
char hstr [1024]
-

Detailed Description

-

Example code for Simple Open EtherCAT master.

-

Usage : slaveinfo [ifname] [-sdo] [-map] Ifname is NIC interface, f.e. eth0. Optional -sdo to display CoE object dictionary. Optional -map to display slave PDO mapping

-

This shows the configured slave data.

-

(c)Arthur Ketels 2010 - 2011

-

Function Documentation

- -
-
- - - - - - - - -
char* dtype2string (uint16 dtype)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int main (int argc,
char * argv[] 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
char* SDO2string (uint16 slave,
uint16 index,
uint8 subidx,
uint16 dtype 
)
-
-
- -
-
- -
-
- - - - - - - - -
int si_map_sdo (int slave)
-
-
- -
-
- -
-
- - - - - - - - -
int si_map_sii (int slave)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int si_PDOassign (uint16 slave,
uint16 PDOassign,
int mapoffset,
int bitoffset 
)
-
-
-

Read PDO assign structure

- -
-
- -
-
- - - - - - - - -
void si_sdo (int cnt)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int si_siiPDO (uint16 slave,
uint8 t,
int mapoffset,
int bitoffset 
)
-
-
- -
-
- -
-
- - - - - - - - -
void slaveinfo (char * ifname)
-
-
- -
-
-

Variable Documentation

- -
-
- - - - -
char hstr[1024]
-
-
- -
-
- -
-
- - - - -
char IOmap[4096]
-
-
- -
-
- -
-
- - - - -
ec_ODlistt ODlist
-
-
- -
-
- -
-
- - - - -
ec_OElistt OElist
-
-
- -
-
- -
-
- - - - -
boolean printMAP = FALSE
-
-
- -
-
- -
-
- - - - -
boolean printSDO = FALSE
-
-
- -
-
- -
-
- - - - -
char usdo[128]
-
-
- -
-
-
- - - diff --git a/doc/html/soem_8dox.html b/doc/html/soem_8dox.html deleted file mode 100644 index c9b85bd..0000000 --- a/doc/html/soem_8dox.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - -SOEM: soem.dox File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-
soem.dox File Reference
-
-
- -
-
- - - diff --git a/doc/html/structec__ALstatuscodelist__t.html b/doc/html/structec__ALstatuscodelist__t.html deleted file mode 100644 index 98ba2a0..0000000 --- a/doc/html/structec__ALstatuscodelist__t.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -SOEM: ec_ALstatuscodelist_t Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_ALstatuscodelist_t Struct Reference
-
-
- - - - -

-Data Fields

uint16 ALstatuscode
char ALstatuscodedescription [EC_MAXERRORNAME+1]
-

Detailed Description

-

AL status code list type definition

-

Field Documentation

- -
- -
-

AL status code

- -
-
- -
-
- - - - -
char ec_ALstatuscodelist_t::ALstatuscodedescription[EC_MAXERRORNAME+1]
-
-
-

Readable description

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__FOEt.html b/doc/html/structec__FOEt.html deleted file mode 100644 index 14c3292..0000000 --- a/doc/html/structec__FOEt.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - -SOEM: ec_FOEt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_FOEt Struct Reference
-
-
- - - - - - - - - - - - - - - -

-Data Fields

ec_mbxheadert MbxHeader
uint8 OpCode
uint8 Reserved
union {
   uint32   Password
   uint32   PacketNumber
   uint32   ErrorCode
}; 
union {
   char   FileName [EC_MAXFOEDATA]
   uint8   Data [EC_MAXFOEDATA]
   char   ErrorText [EC_MAXFOEDATA]
}; 
-

Detailed Description

-

FOE structure. Used for Read, Write, Data, Ack and Error mailbox packets.

-

Field Documentation

- -
-
- - - - -
union { ... }
-
-
- -
-
- -
-
- - - - -
union { ... }
-
-
- -
-
- -
-
- - - - -
uint8 ec_FOEt::Data[EC_MAXFOEDATA]
-
-
- -
-
- -
-
- - - - -
uint32 ec_FOEt::ErrorCode
-
-
- -
-
- -
-
- - - - -
char ec_FOEt::ErrorText[EC_MAXFOEDATA]
-
-
- -
-
- -
-
- - - - -
char ec_FOEt::FileName[EC_MAXFOEDATA]
-
-
- -
-
- -
- -
- -
-
- -
-
- - - - -
uint8 ec_FOEt::OpCode
-
-
- -
-
- -
-
- - - - -
uint32 ec_FOEt::PacketNumber
-
-
- -
-
- -
-
- - - - -
uint32 ec_FOEt::Password
-
-
- -
-
- -
-
- - - - -
uint8 ec_FOEt::Reserved
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__ODlistt.html b/doc/html/structec__ODlistt.html deleted file mode 100644 index 819f535..0000000 --- a/doc/html/structec__ODlistt.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - -SOEM: ec_ODlistt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_ODlistt Struct Reference
-
-
- -

#include <ethercatcoe.h>

- - - - - - - - - -

-Data Fields

uint16 Slave
uint16 Entries
uint16 Index [EC_MAXODLIST]
uint16 DataType [EC_MAXODLIST]
uint8 ObjectCode [EC_MAXODLIST]
uint8 MaxSub [EC_MAXODLIST]
char Name [EC_MAXODLIST][EC_MAXNAME+1]
-

Field Documentation

- -
-
- - - - -
uint16 ec_ODlistt::DataType[EC_MAXODLIST]
-
-
-

array of datatypes, see EtherCAT specification

- -
-
- -
-
- - - - -
uint16 ec_ODlistt::Entries
-
-
-

number of entries in list

- -
-
- -
-
- - - - -
uint16 ec_ODlistt::Index[EC_MAXODLIST]
-
-
-

array of indexes

- -
-
- -
-
- - - - -
uint8 ec_ODlistt::MaxSub[EC_MAXODLIST]
-
-
-

number of subindexes for each index

- -
-
- -
-
- - - - -
char ec_ODlistt::Name[EC_MAXODLIST][EC_MAXNAME+1]
-
-
-

textual description of each index

- -
-
- -
-
- - - - -
uint8 ec_ODlistt::ObjectCode[EC_MAXODLIST]
-
-
-

array of object codes, see EtherCAT specification

- -
-
- -
-
- - - - -
uint16 ec_ODlistt::Slave
-
-
-

slave number

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__OElistt.html b/doc/html/structec__OElistt.html deleted file mode 100644 index 7120a67..0000000 --- a/doc/html/structec__OElistt.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - -SOEM: ec_OElistt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_OElistt Struct Reference
-
-
- -

#include <ethercatcoe.h>

- - - - - - - - -

-Data Fields

uint16 Entries
uint8 ValueInfo [EC_MAXOELIST]
uint16 DataType [EC_MAXOELIST]
uint16 BitLength [EC_MAXOELIST]
uint16 ObjAccess [EC_MAXOELIST]
char Name [EC_MAXOELIST][EC_MAXNAME+1]
-

Field Documentation

- -
-
- - - - -
uint16 ec_OElistt::BitLength[EC_MAXOELIST]
-
-
-

array of bit lengths, see EtherCAT specification

- -
-
- -
-
- - - - -
uint16 ec_OElistt::DataType[EC_MAXOELIST]
-
-
-

array of value infos, see EtherCAT specification

- -
-
- -
-
- - - - -
uint16 ec_OElistt::Entries
-
-
-

number of entries in list

- -
-
- -
-
- - - - -
char ec_OElistt::Name[EC_MAXOELIST][EC_MAXNAME+1]
-
-
-

textual description of each index

- -
-
- -
-
- - - - -
uint16 ec_OElistt::ObjAccess[EC_MAXOELIST]
-
-
-

array of object access bits, see EtherCAT specification

- -
-
- -
-
- - - - -
uint8 ec_OElistt::ValueInfo[EC_MAXOELIST]
-
-
-

array of value infos, see EtherCAT specification

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__PDOassignt.html b/doc/html/structec__PDOassignt.html deleted file mode 100644 index f109744..0000000 --- a/doc/html/structec__PDOassignt.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -SOEM: ec_PDOassignt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_PDOassignt Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - -

-Data Fields

uint8 n
uint8 nu1
uint16 index [256]
-

Detailed Description

-

SDO assign structure for CA

-

Field Documentation

- -
-
- - - - -
uint16 ec_PDOassignt::index[256]
-
-
- -
-
- -
-
- - - - -
uint8 ec_PDOassignt::n
-
-
- -
-
- -
-
- - - - -
uint8 ec_PDOassignt::nu1
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__PDOdesct.html b/doc/html/structec__PDOdesct.html deleted file mode 100644 index 58c2992..0000000 --- a/doc/html/structec__PDOdesct.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -SOEM: ec_PDOdesct Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_PDOdesct Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - -

-Data Fields

uint8 n
uint8 nu1
uint32 PDO [256]
-

Detailed Description

-

SDO description structure for CA

-

Field Documentation

- -
-
- - - - -
uint8 ec_PDOdesct::n
-
-
- -
-
- -
-
- - - - -
uint8 ec_PDOdesct::nu1
-
-
- -
-
- -
-
- - - - -
uint32 ec_PDOdesct::PDO[256]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__SDOservicet.html b/doc/html/structec__SDOservicet.html deleted file mode 100644 index 6030824..0000000 --- a/doc/html/structec__SDOservicet.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - -SOEM: ec_SDOservicet Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_SDOservicet Struct Reference
-
-
- - - - - - - - - - - - -

-Data Fields

ec_mbxheadert MbxHeader
uint16 CANOpen
uint8 Opcode
uint8 Reserved
uint16 Fragments
union {
   uint8   bdata [0x200]
   uint16   wdata [0x100]
   uint32   ldata [0x80]
}; 
-

Detailed Description

-

SDO service structure

-

Field Documentation

- -
-
- - - - -
union { ... }
-
-
- -
-
- -
-
- - - - -
uint8 ec_SDOservicet::bdata[0x200]
-
-
- -
-
- -
-
- - - - -
uint16 ec_SDOservicet::CANOpen
-
-
- -
-
- -
-
- - - - -
uint16 ec_SDOservicet::Fragments
-
-
- -
-
- -
-
- - - - -
uint32 ec_SDOservicet::ldata[0x80]
-
-
- -
-
- - - -
-
- - - - -
uint8 ec_SDOservicet::Opcode
-
-
- -
-
- -
-
- - - - -
uint8 ec_SDOservicet::Reserved
-
-
- -
-
- -
-
- - - - -
uint16 ec_SDOservicet::wdata[0x100]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__SDOt.html b/doc/html/structec__SDOt.html deleted file mode 100644 index 14489a4..0000000 --- a/doc/html/structec__SDOt.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - -SOEM: ec_SDOt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_SDOt Struct Reference
-
-
- - - - - - - - - - - - -

-Data Fields

ec_mbxheadert MbxHeader
uint16 CANOpen
uint8 Command
uint16 Index
uint8 SubIndex
union {
   uint8   bdata [0x200]
   uint16   wdata [0x100]
   uint32   ldata [0x80]
}; 
-

Detailed Description

-

SDO structure, not to be confused with EcSDOserviceT

-

Field Documentation

- -
-
- - - - -
union { ... }
-
-
- -
-
- -
-
- - - - -
uint8 ec_SDOt::bdata[0x200]
-
-
- -
-
- -
-
- - - - -
uint16 ec_SDOt::CANOpen
-
-
- -
-
- -
-
- - - - -
uint8 ec_SDOt::Command
-
-
- -
-
- -
-
- - - - -
uint16 ec_SDOt::Index
-
-
- -
-
- -
-
- - - - -
uint32 ec_SDOt::ldata[0x80]
-
-
- -
-
- -
- -
- -
-
- -
-
- - - - -
uint8 ec_SDOt::SubIndex
-
-
- -
-
- -
-
- - - - -
uint16 ec_SDOt::wdata[0x100]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__SMcommtypet.html b/doc/html/structec__SMcommtypet.html deleted file mode 100644 index d1a73a4..0000000 --- a/doc/html/structec__SMcommtypet.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -SOEM: ec_SMcommtypet Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_SMcommtypet Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - -

-Data Fields

uint8 n
uint8 nu1
uint8 SMtype [EC_MAXSM]
-

Detailed Description

-

SyncManager Communication Type structure for CA

-

Field Documentation

- -
-
- - - - -
uint8 ec_SMcommtypet::n
-
-
- -
-
- -
-
- - - - -
uint8 ec_SMcommtypet::nu1
-
-
- -
-
- -
-
- - - - -
uint8 ec_SMcommtypet::SMtype[EC_MAXSM]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__SoEattributet.html b/doc/html/structec__SoEattributet.html deleted file mode 100644 index 3dbd60b..0000000 --- a/doc/html/structec__SoEattributet.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - -SOEM: ec_SoEattributet Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_SoEattributet Struct Reference
-
-
- -

#include <ethercatsoe.h>

- - - - - - - - - - - - - -

-Data Fields

uint32 evafactor:16
uint32 length:2
uint32 list:1
uint32 command:1
uint32 datatype:3
uint32 reserved1:1
uint32 decimals:4
uint32 wppreop:1
uint32 wpsafeop:1
uint32 wpop:1
uint32 reserved2:1
-

Detailed Description

-

SoE attribute structure

-

Field Documentation

- -
-
- - - - -
uint32 ec_SoEattributet::command
-
-
-

IDN is command

- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::datatype
-
-
-

datatype

- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::decimals
-
-
-

decimals to display if float datatype

- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::evafactor
-
-
-

evaluation factor for display purposes

- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::length
-
-
-

length of IDN element(s)

- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::list
-
-
-

IDN is list

- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::reserved1
-
-
- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::reserved2
-
-
- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::wpop
-
-
-

write protected in op

- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::wppreop
-
-
-

write protected in pre-op

- -
-
- -
-
- - - - -
uint32 ec_SoEattributet::wpsafeop
-
-
-

write protected in safe-op

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__SoElistt.html b/doc/html/structec__SoElistt.html deleted file mode 100644 index bca76b8..0000000 --- a/doc/html/structec__SoElistt.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - -SOEM: ec_SoElistt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_SoElistt Struct Reference
-
-
- -

#include <ethercatsoe.h>

- - - - - - - - - - -

-Data Fields

uint16 currentlength
uint16 maxlength
union {
   uint8   byte [8]
   uint16   word [4]
   uint32   dword [2]
   uint64   lword [1]
}; 
-

Detailed Description

-

SoE list structure

-

Field Documentation

- -
-
- - - - -
union { ... }
-
-
- -
-
- -
-
- - - - -
uint8 ec_SoElistt::byte[8]
-
-
- -
-
- -
-
- - - - -
uint16 ec_SoElistt::currentlength
-
-
-

current length in bytes of list

- -
-
- -
-
- - - - -
uint32 ec_SoElistt::dword[2]
-
-
- -
-
- -
-
- - - - -
uint64 ec_SoElistt::lword[1]
-
-
- -
-
- -
-
- - - - -
uint16 ec_SoElistt::maxlength
-
-
-

maximum length in bytes of list

- -
-
- -
-
- - - - -
uint16 ec_SoElistt::word[4]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__SoEmappingt.html b/doc/html/structec__SoEmappingt.html deleted file mode 100644 index 3f636df..0000000 --- a/doc/html/structec__SoEmappingt.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -SOEM: ec_SoEmappingt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_SoEmappingt Struct Reference
-
-
- -

#include <ethercatsoe.h>

- - - - - -

-Data Fields

uint16 currentlength
uint16 maxlength
uint16 idn [EC_SOE_MAXMAPPING]
-

Detailed Description

-

SoE IDN mapping structure

-

Field Documentation

- -
-
- - - - -
uint16 ec_SoEmappingt::currentlength
-
-
-

current length in bytes of list

- -
-
- -
-
- - - - -
uint16 ec_SoEmappingt::idn[EC_SOE_MAXMAPPING]
-
-
- -
-
- -
-
- - - - -
uint16 ec_SoEmappingt::maxlength
-
-
-

maximum length in bytes of list

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__SoEnamet.html b/doc/html/structec__SoEnamet.html deleted file mode 100644 index 8529630..0000000 --- a/doc/html/structec__SoEnamet.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -SOEM: ec_SoEnamet Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_SoEnamet Struct Reference
-
-
- -

#include <ethercatsoe.h>

- - - - - -

-Data Fields

uint16 currentlength
uint16 maxlength
char name [EC_SOE_MAXNAME]
-

Detailed Description

-

SoE name structure

-

Field Documentation

- -
-
- - - - -
uint16 ec_SoEnamet::currentlength
-
-
-

current length in bytes of list

- -
-
- -
-
- - - - -
uint16 ec_SoEnamet::maxlength
-
-
-

maximum length in bytes of list

- -
-
- -
-
- - - - -
char ec_SoEnamet::name[EC_SOE_MAXNAME]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__SoEt.html b/doc/html/structec__SoEt.html deleted file mode 100644 index 9b58eac..0000000 --- a/doc/html/structec__SoEt.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - -SOEM: ec_SoEt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_SoEt Struct Reference
-
-
- - - - - - - - - - - - -

-Data Fields

ec_mbxheadert MbxHeader
uint8 opCode:3
uint8 incomplete:1
uint8 error:1
uint8 driveNo:3
uint8 elementflags
union {
   uint16   idn
   uint16   fragmentsleft
}; 
-

Detailed Description

-

SoE (Servo over EtherCAT) mailbox structure

-

Field Documentation

- -
-
- - - - -
union { ... }
-
-
- -
-
- -
-
- - - - -
uint8 ec_SoEt::driveNo
-
-
- -
-
- -
-
- - - - -
uint8 ec_SoEt::elementflags
-
-
- -
-
- -
-
- - - - -
uint8 ec_SoEt::error
-
-
- -
-
- -
-
- - - - -
uint16 ec_SoEt::fragmentsleft
-
-
- -
-
- -
-
- - - - -
uint16 ec_SoEt::idn
-
-
- -
-
- -
-
- - - - -
uint8 ec_SoEt::incomplete
-
-
- -
-
- -
- -
- -
-
- -
-
- - - - -
uint8 ec_SoEt::opCode
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__adapter.html b/doc/html/structec__adapter.html deleted file mode 100644 index 6854178..0000000 --- a/doc/html/structec__adapter.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -SOEM: ec_adaptert Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_adaptert Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - -

-Data Fields

char name [EC_MAXLEN_ADAPTERNAME]
char desc [EC_MAXLEN_ADAPTERNAME]
ec_adaptert * next
-

Field Documentation

- -
-
- - - - -
char ec_adaptert::desc[EC_MAXLEN_ADAPTERNAME]
-
-
- -
-
- -
-
- - - - -
char ec_adaptert::name[EC_MAXLEN_ADAPTERNAME]
-
-
- -
-
- -
-
- - - - -
ec_adaptert* ec_adaptert::next
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__alstatust.html b/doc/html/structec__alstatust.html deleted file mode 100644 index dc47148..0000000 --- a/doc/html/structec__alstatust.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -SOEM: ec_alstatust Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_alstatust Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - -

-Data Fields

uint16 alstatus
uint16 unused
uint16 alstatuscode
-

Detailed Description

-

ALstatus and ALstatus code

-

Field Documentation

- -
-
- - - - -
uint16 ec_alstatust::alstatus
-
-
- -
-
- -
-
- - - - -
uint16 ec_alstatust::alstatuscode
-
-
- -
-
- -
-
- - - - -
uint16 ec_alstatust::unused
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__comt.html b/doc/html/structec__comt.html deleted file mode 100644 index 30b7f41..0000000 --- a/doc/html/structec__comt.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - -SOEM: ec_comt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_comt Struct Reference
-
-
- -

#include <ethercattype.h>

- - - - - - - - - -

-Data Fields

uint16 elength
uint8 command
uint8 index
uint16 ADP
uint16 ADO
uint16 dlength
uint16 irpt
-

Detailed Description

-

EtherCAT datagram header definition

-

Field Documentation

- -
-
- - - - -
uint16 ec_comt::ADO
-
-
-

ADO

- -
-
- -
-
- - - - -
uint16 ec_comt::ADP
-
-
-

ADP

- -
-
- -
-
- - - - -
uint8 ec_comt::command
-
-
-

EtherCAT command, see ec_cmdtype

- -
-
- -
-
- - - - -
uint16 ec_comt::dlength
-
-
-

length of data portion in datagram

- -
-
- -
-
- - - - -
uint16 ec_comt::elength
-
-
-

length of EtherCAT datagram

- -
-
- -
-
- - - - -
uint8 ec_comt::index
-
-
-

index, used in SOEM for Tx to Rx recombination

- -
-
- -
-
- - - - -
uint16 ec_comt::irpt
-
-
-

interrupt, currently unused

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__configlist__t.html b/doc/html/structec__configlist__t.html deleted file mode 100644 index 9a989ee..0000000 --- a/doc/html/structec__configlist__t.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - -SOEM: ec_configlist_t Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_configlist_t Struct Reference
-
-
- - - - - - - - - - - - - - -

-Data Fields

uint32 man
uint32 id
char name [EC_MAXNAME+1]
uint8 Dtype
uint16 Ibits
uint16 Obits
uint16 SM2a
uint32 SM2f
uint16 SM3a
uint32 SM3f
uint8 FM0ac
uint8 FM1ac
-

Detailed Description

-

Slave configuration structure

-

Field Documentation

- -
-
- - - - -
uint8 ec_configlist_t::Dtype
-
-
-

Data type

- -
-
- -
-
- - - - -
uint8 ec_configlist_t::FM0ac
-
-
-

FMMU 0 activation

- -
-
- -
-
- - - - -
uint8 ec_configlist_t::FM1ac
-
-
-

FMMU 1 activation

- -
-
- -
-
- - - - -
uint16 ec_configlist_t::Ibits
-
-
-

Input bits

- -
-
- -
-
- - - - -
uint32 ec_configlist_t::id
-
-
-

ID of slave

- -
-
- -
-
- - - - -
uint32 ec_configlist_t::man
-
-
-

Manufacturer code of slave

- -
-
- -
-
- - - - -
char ec_configlist_t::name[EC_MAXNAME+1]
-
-
-

Readable name

- -
-
- -
-
- - - - -
uint16 ec_configlist_t::Obits
-
-
-

Output bits

- -
-
- -
-
- - - - -
uint16 ec_configlist_t::SM2a
-
-
-

SyncManager 2 address

- -
-
- -
-
- - - - -
uint32 ec_configlist_t::SM2f
-
-
-

SyncManager 2 flags

- -
-
- -
-
- - - - -
uint16 ec_configlist_t::SM3a
-
-
-

SyncManager 3 address

- -
-
- -
-
- - - - -
uint32 ec_configlist_t::SM3f
-
-
-

SyncManager 3 flags

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__eepromFMMUt.html b/doc/html/structec__eepromFMMUt.html deleted file mode 100644 index f4ef02c..0000000 --- a/doc/html/structec__eepromFMMUt.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - -SOEM: ec_eepromFMMUt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_eepromFMMUt Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - - - - -

-Data Fields

uint16 Startpos
uint8 nFMMU
uint8 FMMU0
uint8 FMMU1
uint8 FMMU2
uint8 FMMU3
-

Detailed Description

-

SII FMMU structure

-

Field Documentation

- -
-
- - - - -
uint8 ec_eepromFMMUt::FMMU0
-
-
- -
-
- -
-
- - - - -
uint8 ec_eepromFMMUt::FMMU1
-
-
- -
-
- -
-
- - - - -
uint8 ec_eepromFMMUt::FMMU2
-
-
- -
-
- -
-
- - - - -
uint8 ec_eepromFMMUt::FMMU3
-
-
- -
-
- -
-
- - - - -
uint8 ec_eepromFMMUt::nFMMU
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromFMMUt::Startpos
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__eepromPDOt.html b/doc/html/structec__eepromPDOt.html deleted file mode 100644 index 0bd1d0d..0000000 --- a/doc/html/structec__eepromPDOt.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - -SOEM: ec_eepromPDOt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_eepromPDOt Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - - - - - -

-Data Fields

uint16 Startpos
uint16 Length
uint16 nPDO
uint16 Index [EC_MAXEEPDO]
uint16 SyncM [EC_MAXEEPDO]
uint16 BitSize [EC_MAXEEPDO]
uint16 SMbitsize [EC_MAXSM]
-

Detailed Description

-

record to store rxPDO and txPDO table from eeprom

-

Field Documentation

- -
-
- - - - -
uint16 ec_eepromPDOt::BitSize[EC_MAXEEPDO]
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromPDOt::Index[EC_MAXEEPDO]
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromPDOt::Length
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromPDOt::nPDO
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromPDOt::SMbitsize[EC_MAXSM]
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromPDOt::Startpos
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromPDOt::SyncM[EC_MAXEEPDO]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__eepromSMt.html b/doc/html/structec__eepromSMt.html deleted file mode 100644 index e2f2a34..0000000 --- a/doc/html/structec__eepromSMt.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -SOEM: ec_eepromSMt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_eepromSMt Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - - - - - - -

-Data Fields

uint16 Startpos
uint8 nSM
uint16 PhStart
uint16 Plength
uint8 Creg
uint8 Sreg
uint8 Activate
uint8 PDIctrl
-

Detailed Description

-

SII SM structure

-

Field Documentation

- -
-
- - - - -
uint8 ec_eepromSMt::Activate
-
-
- -
-
- -
-
- - - - -
uint8 ec_eepromSMt::Creg
-
-
- -
-
- -
-
- - - - -
uint8 ec_eepromSMt::nSM
-
-
- -
-
- -
-
- - - - -
uint8 ec_eepromSMt::PDIctrl
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromSMt::PhStart
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromSMt::Plength
-
-
- -
-
- -
-
- - - - -
uint8 ec_eepromSMt::Sreg
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromSMt::Startpos
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__eepromt.html b/doc/html/structec__eepromt.html deleted file mode 100644 index 1fd5013..0000000 --- a/doc/html/structec__eepromt.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -SOEM: ec_eepromt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_eepromt Struct Reference
-
-
- - - - - -

-Data Fields

uint16 comm
uint16 addr
uint16 d2
-

Detailed Description

-

record for ethercat eeprom communications

-

Field Documentation

- -
-
- - - - -
uint16 ec_eepromt::addr
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromt::comm
-
-
- -
-
- -
-
- - - - -
uint16 ec_eepromt::d2
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__emcyt.html b/doc/html/structec__emcyt.html deleted file mode 100644 index 7b4029c..0000000 --- a/doc/html/structec__emcyt.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - -SOEM: ec_emcyt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_emcyt Struct Reference
-
-
- - - - - - - - - -

-Data Fields

ec_mbxheadert MbxHeader
uint16 CANOpen
uint16 ErrorCode
uint8 ErrorReg
uint8 bData
uint16 w1
uint16 w2
-

Detailed Description

-

emergency request structure

-

Field Documentation

- -
-
- - - - -
uint8 ec_emcyt::bData
-
-
- -
-
- -
-
- - - - -
uint16 ec_emcyt::CANOpen
-
-
- -
-
- -
-
- - - - -
uint16 ec_emcyt::ErrorCode
-
-
- -
-
- -
-
- - - - -
uint8 ec_emcyt::ErrorReg
-
-
- -
-
- -
- -
- -
-
- -
-
- - - - -
uint16 ec_emcyt::w1
-
-
- -
-
- -
-
- - - - -
uint16 ec_emcyt::w2
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__eringt.html b/doc/html/structec__eringt.html deleted file mode 100644 index cd41f9d..0000000 --- a/doc/html/structec__eringt.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -SOEM: ec_eringt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_eringt Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - -

-Data Fields

int16 head
int16 tail
ec_errort Error [EC_MAXELIST+1]
-

Detailed Description

-

ringbuf for error storage

-

Field Documentation

- -
-
- - - - -
ec_errort ec_eringt::Error[EC_MAXELIST+1]
-
-
- -
-
- -
-
- - - - -
int16 ec_eringt::head
-
-
- -
-
- -
-
- - - - -
int16 ec_eringt::tail
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__errort.html b/doc/html/structec__errort.html deleted file mode 100644 index b52b44c..0000000 --- a/doc/html/structec__errort.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - -SOEM: ec_errort Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_errort Struct Reference
-
-
- -

#include <ethercattype.h>

- - - - - - - - - - - - - - - - - - -

-Data Fields

ec_timet Time
boolean Signal
uint16 Slave
uint16 Index
uint8 SubIdx
ec_err_type Etype
union {
   int32   AbortCode
   struct {
      uint16   ErrorCode
      uint8   ErrorReg
      uint8   b1
      uint16   w1
      uint16   w2
   } 
}; 
-

Detailed Description

-

Struct to retrieve errors.

-

Field Documentation

- -
-
- - - - -
union { ... }
-
-
- -
-
- -
-
- - - - -
int32 ec_errort::AbortCode
-
-
-

General abortcode

- -
-
- -
-
- - - - -
uint8 ec_errort::b1
-
-
- -
-
- -
-
- - - - -
uint16 ec_errort::ErrorCode
-
-
- -
-
- -
-
- - - - -
uint8 ec_errort::ErrorReg
-
-
- -
-
- -
- -
-

Type of error

- -
-
- -
-
- - - - -
uint16 ec_errort::Index
-
-
-

CoE SDO index that generated the error

- -
-
- -
-
- - - - -
boolean ec_errort::Signal
-
-
-

Signal bit, error set but not read

- -
-
- -
-
- - - - -
uint16 ec_errort::Slave
-
-
-

Slave number that generated the error

- -
-
- -
-
- - - - -
uint8 ec_errort::SubIdx
-
-
-

CoE SDO subindex that generated the error

- -
-
- -
-
- - - - -
ec_timet ec_errort::Time
-
-
-

Time at which the error was generated.

- -
-
- -
-
- - - - -
uint16 ec_errort::w1
-
-
- -
-
- -
-
- - - - -
uint16 ec_errort::w2
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__etherheadert.html b/doc/html/structec__etherheadert.html deleted file mode 100644 index 4bf55db..0000000 --- a/doc/html/structec__etherheadert.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - -SOEM: ec_etherheadert Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_etherheadert Struct Reference
-
-
- -

#include <ethercattype.h>

- - - - - - - - - -

-Data Fields

uint16 da0
uint16 da1
uint16 da2
uint16 sa0
uint16 sa1
uint16 sa2
uint16 etype
-

Detailed Description

-

ethernet header definition

-

Field Documentation

- -
-
- - - - -
uint16 ec_etherheadert::da0
-
-
-

destination MAC

- -
-
- -
-
- - - - -
uint16 ec_etherheadert::da1
-
-
- -
-
- -
-
- - - - -
uint16 ec_etherheadert::da2
-
-
- -
-
- -
-
- - - - -
uint16 ec_etherheadert::etype
-
-
-

ethernet type

- -
-
- -
-
- - - - -
uint16 ec_etherheadert::sa0
-
-
-

source MAC

- -
-
- -
-
- - - - -
uint16 ec_etherheadert::sa1
-
-
- -
-
- -
-
- - - - -
uint16 ec_etherheadert::sa2
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__fmmut.html b/doc/html/structec__fmmut.html deleted file mode 100644 index a86b927..0000000 --- a/doc/html/structec__fmmut.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - -SOEM: ec_fmmut Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_fmmut Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - - - - - - - - -

-Data Fields

uint32 LogStart
uint16 LogLength
uint8 LogStartbit
uint8 LogEndbit
uint16 PhysStart
uint8 PhysStartBit
uint8 FMMUtype
uint8 FMMUactive
uint8 unused1
uint16 unused2
-

Detailed Description

-

record for FMMU

-

Field Documentation

- -
-
- - - - -
uint8 ec_fmmut::FMMUactive
-
-
- -
-
- -
-
- - - - -
uint8 ec_fmmut::FMMUtype
-
-
- -
-
- -
-
- - - - -
uint8 ec_fmmut::LogEndbit
-
-
- -
-
- -
-
- - - - -
uint16 ec_fmmut::LogLength
-
-
- -
-
- -
-
- - - - -
uint32 ec_fmmut::LogStart
-
-
- -
-
- -
-
- - - - -
uint8 ec_fmmut::LogStartbit
-
-
- -
-
- -
-
- - - - -
uint16 ec_fmmut::PhysStart
-
-
- -
-
- -
-
- - - - -
uint8 ec_fmmut::PhysStartBit
-
-
- -
-
- -
-
- - - - -
uint8 ec_fmmut::unused1
-
-
- -
-
- -
-
- - - - -
uint16 ec_fmmut::unused2
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__groupt.html b/doc/html/structec__groupt.html deleted file mode 100644 index 48cf230..0000000 --- a/doc/html/structec__groupt.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - -SOEM: ec_groupt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_groupt Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - - - - - - - - - - - - - - -

-Data Fields

uint32 logstartaddr
uint32 Obytes
uint8 * outputs
uint32 Ibytes
uint8 * inputs
boolean hasdc
uint16 DCnext
int16 Ebuscurrent
uint8 blockLRW
uint16 nsegments
uint16 Isegment
uint16 Ioffset
uint16 outputsWKC
uint16 inputsWKC
boolean docheckstate
uint32 IOsegment [EC_MAXIOSEGMENTS]
-

Detailed Description

-

for list of ethercat slave groups

-

Field Documentation

- -
-
- - - - -
uint8 ec_groupt::blockLRW
-
-
-

if >0 block use of LRW in processdata

- -
-
- -
-
- - - - -
uint16 ec_groupt::DCnext
-
-
-

next DC slave

- -
-
- -
-
- - - - -
boolean ec_groupt::docheckstate
-
-
-

check slave states

- -
-
- -
-
- - - - -
int16 ec_groupt::Ebuscurrent
-
-
-

E-bus current

- -
-
- -
-
- - - - -
boolean ec_groupt::hasdc
-
-
-

has DC capabillity

- -
-
- -
-
- - - - -
uint32 ec_groupt::Ibytes
-
-
-

input bytes, if Ibits < 8 then Ibytes = 0

- -
-
- -
-
- - - - -
uint8* ec_groupt::inputs
-
-
-

input pointer in IOmap buffer

- -
-
- -
-
- - - - -
uint16 ec_groupt::inputsWKC
-
-
-

Expected workcounter inputs

- -
-
- -
-
- - - - -
uint16 ec_groupt::Ioffset
-
-
-

Offset in input segment

- -
-
- -
-
- - - - -
uint32 ec_groupt::IOsegment[EC_MAXIOSEGMENTS]
-
-
-

IO segmentation list. Datagrams must not break SM in two.

- -
-
- -
-
- - - - -
uint16 ec_groupt::Isegment
-
-
-

1st input segment

- -
-
- -
-
- - - - -
uint32 ec_groupt::logstartaddr
-
-
-

logical start address for this group

- -
-
- -
-
- - - - -
uint16 ec_groupt::nsegments
-
-
-

IO segegments used

- -
-
- -
-
- - - - -
uint32 ec_groupt::Obytes
-
-
-

output bytes, if Obits < 8 then Obytes = 0

- -
-
- -
-
- - - - -
uint8* ec_groupt::outputs
-
-
-

output pointer in IOmap buffer

- -
-
- -
-
- - - - -
uint16 ec_groupt::outputsWKC
-
-
-

Expected workcounter outputs

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__idxstackT.html b/doc/html/structec__idxstackT.html deleted file mode 100644 index 98c01d6..0000000 --- a/doc/html/structec__idxstackT.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - -SOEM: ec_idxstackT Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_idxstackT Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - - - -

-Data Fields

uint8 pushed
uint8 pulled
uint8 idx [EC_MAXBUF]
void * data [EC_MAXBUF]
uint16 length [EC_MAXBUF]
-

Detailed Description

-

stack structure to store segmented LRD/LWR/LRW constructs

-

Field Documentation

- -
-
- - - - -
void* ec_idxstackT::data[EC_MAXBUF]
-
-
- -
-
- -
-
- - - - -
uint8 ec_idxstackT::idx[EC_MAXBUF]
-
-
- -
-
- -
-
- - - - -
uint16 ec_idxstackT::length[EC_MAXBUF]
-
-
- -
-
- -
-
- - - - -
uint8 ec_idxstackT::pulled
-
-
- -
-
- -
-
- - - - -
uint8 ec_idxstackT::pushed
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__mbxerrorlist__t.html b/doc/html/structec__mbxerrorlist__t.html deleted file mode 100644 index 3456e7c..0000000 --- a/doc/html/structec__mbxerrorlist__t.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -SOEM: ec_mbxerrorlist_t Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_mbxerrorlist_t Struct Reference
-
-
- - - - -

-Data Fields

uint16 errorcode
char errordescription [EC_MAXERRORNAME+1]
-

Detailed Description

-

MBX error list type definition

-

Field Documentation

- -
-
- - - - -
uint16 ec_mbxerrorlist_t::errorcode
-
-
-

MBX error code

- -
-
- -
-
- - - - -
char ec_mbxerrorlist_t::errordescription[EC_MAXERRORNAME+1]
-
-
-

Readable description

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__mbxerrort.html b/doc/html/structec__mbxerrort.html deleted file mode 100644 index 03f55c4..0000000 --- a/doc/html/structec__mbxerrort.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -SOEM: ec_mbxerrort Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_mbxerrort Struct Reference
-
-
- - - - - -

-Data Fields

ec_mbxheadert MbxHeader
uint16 Type
uint16 Detail
-

Detailed Description

-

mailbox error structure

-

Field Documentation

- -
-
- - - - -
uint16 ec_mbxerrort::Detail
-
-
- -
-
- -
- -
- -
-
- -
-
- - - - -
uint16 ec_mbxerrort::Type
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__mbxheadert.html b/doc/html/structec__mbxheadert.html deleted file mode 100644 index a66357d..0000000 --- a/doc/html/structec__mbxheadert.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - -SOEM: ec_mbxheadert Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_mbxheadert Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - - -

-Data Fields

uint16 length
uint16 address
uint8 priority
uint8 mbxtype
-

Detailed Description

-

standard ethercat mailbox header

-

Field Documentation

- -
-
- - - - -
uint16 ec_mbxheadert::address
-
-
- -
-
- -
-
- - - - -
uint16 ec_mbxheadert::length
-
-
- -
-
- -
-
- - - - -
uint8 ec_mbxheadert::mbxtype
-
-
- -
-
- -
-
- - - - -
uint8 ec_mbxheadert::priority
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__sdoerrorlist__t.html b/doc/html/structec__sdoerrorlist__t.html deleted file mode 100644 index 8eedaa7..0000000 --- a/doc/html/structec__sdoerrorlist__t.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -SOEM: ec_sdoerrorlist_t Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_sdoerrorlist_t Struct Reference
-
-
- - - - -

-Data Fields

uint32 errorcode
char errordescription [EC_MAXERRORNAME+1]
-

Detailed Description

-

SDO error list type definition

-

Field Documentation

- -
-
- - - - -
uint32 ec_sdoerrorlist_t::errorcode
-
-
-

Error code returned from SDO

- -
-
- -
-
- - - - -
char ec_sdoerrorlist_t::errordescription[EC_MAXERRORNAME+1]
-
-
-

Readable error description

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__slavet.html b/doc/html/structec__slavet.html deleted file mode 100644 index 4f4b600..0000000 --- a/doc/html/structec__slavet.html +++ /dev/null @@ -1,1006 +0,0 @@ - - - - -SOEM: ec_slavet Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_slavet Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Data Fields

uint16 state
uint16 ALstatuscode
uint16 configadr
uint16 aliasadr
uint32 eep_man
uint32 eep_id
uint32 eep_rev
uint16 Itype
uint16 Dtype
uint16 Obits
uint32 Obytes
uint8 * outputs
uint8 Ostartbit
uint16 Ibits
uint32 Ibytes
uint8 * inputs
uint8 Istartbit
ec_smt SM [EC_MAXSM]
uint8 SMtype [EC_MAXSM]
ec_fmmut FMMU [EC_MAXFMMU]
uint8 FMMU0func
uint8 FMMU1func
uint8 FMMU2func
uint8 FMMU3func
uint16 mbx_l
uint16 mbx_wo
uint16 mbx_rl
uint16 mbx_ro
uint16 mbx_proto
uint8 mbx_cnt
boolean hasdc
uint8 ptype
uint8 topology
uint8 activeports
uint8 consumedports
uint16 parent
uint8 parentport
uint8 entryport
int32 DCrtA
int32 DCrtB
int32 DCrtC
int32 DCrtD
int32 pdelay
uint16 DCnext
uint16 DCprevious
int32 DCcycle
int32 DCshift
uint8 DCactive
uint16 configindex
uint16 SIIindex
uint8 eep_8byte
uint8 eep_pdi
uint8 CoEdetails
uint8 FoEdetails
uint8 EoEdetails
uint8 SoEdetails
int16 Ebuscurrent
uint8 blockLRW
uint8 group
uint8 FMMUunused
boolean islost
int(* PO2SOconfig )(uint16 slave)
char name [EC_MAXNAME+1]
-

Detailed Description

-

for list of ethercat slaves detected

-

Field Documentation

- -
-
- - - - -
uint8 ec_slavet::activeports
-
-
-

active ports bitmap : ....3210 , set if respective port is active

- -
-
- -
-
- - - - -
uint16 ec_slavet::aliasadr
-
-
-

Alias address

- -
-
- -
-
- - - - -
uint16 ec_slavet::ALstatuscode
-
-
-

AL status code

- -
-
- -
-
- - - - -
uint8 ec_slavet::blockLRW
-
-
-

if >0 block use of LRW in processdata

- -
-
- -
-
- - - - -
uint8 ec_slavet::CoEdetails
-
-
-

CoE details

- -
-
- -
-
- - - - -
uint16 ec_slavet::configadr
-
-
-

Configured address

- -
-
- -
-
- - - - -
uint16 ec_slavet::configindex
-
-
-

link to config table

- -
-
- -
-
- - - - -
uint8 ec_slavet::consumedports
-
-
-

consumed ports bitmap : ....3210, used for internal delay measurement

- -
-
- -
-
- - - - -
uint8 ec_slavet::DCactive
-
-
-

DC sync activation, 0=off, 1=on

- -
-
- -
-
- - - - -
int32 ec_slavet::DCcycle
-
-
-

DC cyle time in ns

- -
-
- -
-
- - - - -
uint16 ec_slavet::DCnext
-
-
-

next DC slave

- -
-
- -
-
- - - - -
uint16 ec_slavet::DCprevious
-
-
-

previous DC slave

- -
-
- -
-
- - - - -
int32 ec_slavet::DCrtA
-
-
-

DC receivetimes on port A

- -
-
- -
-
- - - - -
int32 ec_slavet::DCrtB
-
-
-

DC receivetimes on port B

- -
-
- -
-
- - - - -
int32 ec_slavet::DCrtC
-
-
-

DC receivetimes on port C

- -
-
- -
-
- - - - -
int32 ec_slavet::DCrtD
-
-
-

DC receivetimes on port D

- -
-
- -
-
- - - - -
int32 ec_slavet::DCshift
-
-
-

DC shift from clock modulus boundary

- -
-
- -
-
- - - - -
uint16 ec_slavet::Dtype
-
-
-

Device type

- -
-
- -
-
- - - - -
int16 ec_slavet::Ebuscurrent
-
-
-

E-bus current

- -
-
- -
-
- - - - -
uint8 ec_slavet::eep_8byte
-
-
-

1 = 8 bytes per read, 0 = 4 bytes per read

- -
-
- -
-
- - - - -
uint32 ec_slavet::eep_id
-
-
-

ID from EEprom

- -
-
- -
-
- - - - -
uint32 ec_slavet::eep_man
-
-
-

Manufacturer from EEprom

- -
-
- -
-
- - - - -
uint8 ec_slavet::eep_pdi
-
-
-

0 = eeprom to master , 1 = eeprom to PDI

- -
-
- -
-
- - - - -
uint32 ec_slavet::eep_rev
-
-
-

revision from EEprom

- -
-
- -
-
- - - - -
uint8 ec_slavet::entryport
-
-
-

port number on this slave the parent is connected to

- -
-
- -
-
- - - - -
uint8 ec_slavet::EoEdetails
-
-
-

EoE details

- -
-
- -
-
- - - - -
ec_fmmut ec_slavet::FMMU[EC_MAXFMMU]
-
-
-

FMMU structure

- -
-
- -
-
- - - - -
uint8 ec_slavet::FMMU0func
-
-
-

FMMU0 function

- -
-
- -
-
- - - - -
uint8 ec_slavet::FMMU1func
-
-
-

FMMU1 function

- -
-
- -
-
- - - - -
uint8 ec_slavet::FMMU2func
-
-
-

FMMU2 function

- -
-
- -
-
- - - - -
uint8 ec_slavet::FMMU3func
-
-
-

FMMU3 function

- -
-
- -
-
- - - - -
uint8 ec_slavet::FMMUunused
-
-
-

first unused FMMU

- -
-
- -
-
- - - - -
uint8 ec_slavet::FoEdetails
-
-
-

FoE details

- -
-
- -
-
- - - - -
uint8 ec_slavet::group
-
-
-

group

- -
-
- -
-
- - - - -
boolean ec_slavet::hasdc
-
-
-

has DC capabillity

- -
-
- -
-
- - - - -
uint16 ec_slavet::Ibits
-
-
-

input bits

- -
-
- -
-
- - - - -
uint32 ec_slavet::Ibytes
-
-
-

input bytes, if Ibits < 8 then Ibytes = 0

- -
-
- -
-
- - - - -
uint8* ec_slavet::inputs
-
-
-

input pointer in IOmap buffer

- -
-
- -
-
- - - - -
boolean ec_slavet::islost
-
-
-

TRUE is slave is not responding at all

- -
-
- -
-
- - - - -
uint8 ec_slavet::Istartbit
-
-
-

startbit in first input byte

- -
-
- -
-
- - - - -
uint16 ec_slavet::Itype
-
-
-

Interface type

- -
-
- -
-
- - - - -
uint8 ec_slavet::mbx_cnt
-
-
-

Counter value of mailbox link layer protocol 1..7

- -
-
- -
-
- - - - -
uint16 ec_slavet::mbx_l
-
-
-

length of write mailbox in bytes, if no mailbox then 0

- -
-
- -
-
- - - - -
uint16 ec_slavet::mbx_proto
-
-
-

mailbox supported protocols

- -
-
- -
-
- - - - -
uint16 ec_slavet::mbx_rl
-
-
-

length of read mailbox in bytes

- -
-
- -
-
- - - - -
uint16 ec_slavet::mbx_ro
-
-
-

mailbox read offset

- -
-
- -
-
- - - - -
uint16 ec_slavet::mbx_wo
-
-
-

mailbox write offset

- -
-
- -
-
- - - - -
char ec_slavet::name[EC_MAXNAME+1]
-
-
-

readable name

- -
-
- -
-
- - - - -
uint16 ec_slavet::Obits
-
-
-

output bits

- -
-
- -
-
- - - - -
uint32 ec_slavet::Obytes
-
-
-

output bytes, if Obits < 8 then Obytes = 0

- -
-
- -
-
- - - - -
uint8 ec_slavet::Ostartbit
-
-
-

startbit in first output byte

- -
-
- -
-
- - - - -
uint8* ec_slavet::outputs
-
-
-

output pointer in IOmap buffer

- -
-
- -
-
- - - - -
uint16 ec_slavet::parent
-
-
-

slave number for parent, 0=master

- -
-
- -
-
- - - - -
uint8 ec_slavet::parentport
-
-
-

port number on parent this slave is connected to

- -
-
- -
-
- - - - -
int32 ec_slavet::pdelay
-
-
-

propagation delay

- -
-
- -
-
- - - - -
int(* ec_slavet::PO2SOconfig)(uint16 slave)
-
-
-

registered configuration function PO->SO

- -
-
- -
-
- - - - -
uint8 ec_slavet::ptype
-
-
-

Physical type; Ebus, EtherNet combinations

- -
-
- -
-
- - - - -
uint16 ec_slavet::SIIindex
-
-
-

link to SII config

- -
-
- -
-
- - - - -
ec_smt ec_slavet::SM[EC_MAXSM]
-
-
-

SM structure

- -
-
- -
-
- - - - -
uint8 ec_slavet::SMtype[EC_MAXSM]
-
-
-

SM type 0=unused 1=MbxWr 2=MbxRd 3=Outputs 4=Inputs

- -
-
- -
-
- - - - -
uint8 ec_slavet::SoEdetails
-
-
-

SoE details

- -
-
- -
-
- - - - -
uint16 ec_slavet::state
-
-
-

state of slave

- -
-
- -
-
- - - - -
uint8 ec_slavet::topology
-
-
-

topology: 1 to 3 links

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__smt.html b/doc/html/structec__smt.html deleted file mode 100644 index 48ab13f..0000000 --- a/doc/html/structec__smt.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -SOEM: ec_smt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_smt Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - -

-Data Fields

uint16 StartAddr
uint16 SMlength
uint32 SMflags
-

Detailed Description

-

record for sync manager

-

Field Documentation

- -
-
- - - - -
uint32 ec_smt::SMflags
-
-
- -
-
- -
-
- - - - -
uint16 ec_smt::SMlength
-
-
- -
-
- -
-
- - - - -
uint16 ec_smt::StartAddr
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__soeerrorlist__t.html b/doc/html/structec__soeerrorlist__t.html deleted file mode 100644 index 1197099..0000000 --- a/doc/html/structec__soeerrorlist__t.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -SOEM: ec_soeerrorlist_t Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_soeerrorlist_t Struct Reference
-
-
- - - - -

-Data Fields

uint16 errorcode
char errordescription [EC_MAXERRORNAME+1]
-

Detailed Description

-

SoE error list type definition

-

Field Documentation

- -
-
- - - - -
uint16 ec_soeerrorlist_t::errorcode
-
-
-

SoE error code

- -
-
- -
-
- - - - -
char ec_soeerrorlist_t::errordescription[EC_MAXERRORNAME+1]
-
-
-

Readable description

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structec__state__status.html b/doc/html/structec__state__status.html deleted file mode 100644 index d4d7a6a..0000000 --- a/doc/html/structec__state__status.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -SOEM: ec_state_status Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ec_state_status Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - -

-Data Fields

uint16 State
uint16 Unused
uint16 ALstatuscode
-

Field Documentation

- -
-
- - - - -
uint16 ec_state_status::ALstatuscode
-
-
- -
-
- -
-
- - - - -
uint16 ec_state_status::State
-
-
- -
-
- -
-
- - - - -
uint16 ec_state_status::Unused
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structecx__contextt.html b/doc/html/structecx__contextt.html deleted file mode 100644 index 6946c62..0000000 --- a/doc/html/structecx__contextt.html +++ /dev/null @@ -1,376 +0,0 @@ - - - - -SOEM: ecx_contextt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ecx_contextt Struct Reference
-
-
- -

#include <ethercatmain.h>

- - - - - - - - - - - - - - - - - - - - - - - -

-Data Fields

ecx_portt * port
ec_slavetslavelist
int * slavecount
int maxslave
ec_grouptgrouplist
int maxgroup
uint8 * esibuf
uint32 * esimap
uint16 esislave
ec_eringtelist
ec_idxstackTidxstack
boolean * ecaterror
uint16 DCtO
uint16 DCl
int64 * DCtime
ec_SMcommtypetSMcommtype
ec_PDOassigntPDOassign
ec_PDOdesctPDOdesc
ec_eepromSMteepSM
ec_eepromFMMUteepFMMU
int(* FOEhook )(uint16 slave, int packetnumber, int datasize)
-

Detailed Description

-

Context structure , referenced by all ecx functions

-

Field Documentation

- -
-
- - - - -
uint16 ecx_contextt::DCl
-
-
-

internal, length of DC datagram

- -
-
- -
-
- - - - -
int64* ecx_contextt::DCtime
-
-
-

reference to last DC time from slaves

- -
-
- -
-
- - - - -
uint16 ecx_contextt::DCtO
-
-
-

internal, position of DC datagram in process data packet

- -
-
- -
-
- - - - -
boolean* ecx_contextt::ecaterror
-
-
-

reference to ecaterror state

- -
-
- -
- -
-

internal, FMMU list from eeprom

- -
-
- -
- -
-

internal, SM list from eeprom

- -
-
- -
- -
-

internal, reference to error list

- -
-
- -
-
- - - - -
uint8* ecx_contextt::esibuf
-
-
-

internal, reference to eeprom cache buffer

- -
-
- -
-
- - - - -
uint32* ecx_contextt::esimap
-
-
-

internal, reference to eeprom cache map

- -
-
- -
-
- - - - -
uint16 ecx_contextt::esislave
-
-
-

internal, current slave for eeprom cache

- -
-
- -
-
- - - - -
int(* ecx_contextt::FOEhook)(uint16 slave, int packetnumber, int datasize)
-
-
-

registered FoE hook

- -
-
- -
- -
-

grouplist reference

- -
-
- -
- -
-

internal, reference to processdata stack buffer info

- -
-
- -
-
- - - - -
int ecx_contextt::maxgroup
-
-
-

maximum number of groups allowed in grouplist

- -
-
- -
-
- - - - -
int ecx_contextt::maxslave
-
-
-

maximum number of slaves allowed in slavelist

- -
-
- -
- -
-

internal, PDO assign list

- -
-
- -
- -
-

internal, PDO description list

- -
-
- -
-
- - - - -
ecx_portt* ecx_contextt::port
-
-
-

port reference, may include red_port

- -
-
- -
-
- - - - -
int* ecx_contextt::slavecount
-
-
-

number of slaves found in configuration

- -
-
- -
- -
-

slavelist reference

- -
-
- -
- -
-

internal, SM buffer

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structecx__mapt__t.html b/doc/html/structecx__mapt__t.html deleted file mode 100644 index 701936a..0000000 --- a/doc/html/structecx__mapt__t.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - -SOEM: ecx_mapt_t Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
ecx_mapt_t Struct Reference
-
-
- - - - - -

-Data Fields

int running
ecx_contexttcontext
uint16 slave
-

Field Documentation

- -
- -
- -
-
- -
-
- - - - -
int ecx_mapt_t::running
-
-
- -
-
- -
-
- - - - -
uint16 ecx_mapt_t::slave
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structin__EBOX__streamt.html b/doc/html/structin__EBOX__streamt.html deleted file mode 100644 index fb3c250..0000000 --- a/doc/html/structin__EBOX__streamt.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -SOEM: in_EBOX_streamt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
in_EBOX_streamt Struct Reference
-
-
- - - - -

-Data Fields

uint8 counter
int16 stream [100]
-

Field Documentation

- -
-
- - - - -
uint8 in_EBOX_streamt::counter
-
-
- -
-
- -
-
- - - - -
int16 in_EBOX_streamt::stream[100]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structin__EBOXt.html b/doc/html/structin__EBOXt.html deleted file mode 100644 index fa71c05..0000000 --- a/doc/html/structin__EBOXt.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - -SOEM: in_EBOXt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
in_EBOXt Struct Reference
-
-
- - - - - - - - -

-Data Fields

uint8 status
uint8 counter
uint8 din
int32 ain [2]
uint32 tsain
int32 enc [2]
-

Field Documentation

- -
-
- - - - -
int32 in_EBOXt::ain[2]
-
-
- -
-
- -
-
- - - - -
uint8 in_EBOXt::counter
-
-
- -
-
- -
-
- - - - -
uint8 in_EBOXt::din
-
-
- -
-
- -
-
- - - - -
int32 in_EBOXt::enc[2]
-
-
- -
-
- -
-
- - - - -
uint8 in_EBOXt::status
-
-
- -
-
- -
-
- - - - -
uint32 in_EBOXt::tsain
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structout__EBOX__streamt.html b/doc/html/structout__EBOX__streamt.html deleted file mode 100644 index 7a345cb..0000000 --- a/doc/html/structout__EBOX__streamt.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -SOEM: out_EBOX_streamt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
out_EBOX_streamt Struct Reference
-
-
- - - -

-Data Fields

uint8 control
-

Field Documentation

- -
-
- - - - -
uint8 out_EBOX_streamt::control
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/structout__EBOXt.html b/doc/html/structout__EBOXt.html deleted file mode 100644 index c55680e..0000000 --- a/doc/html/structout__EBOXt.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - -SOEM: out_EBOXt Struct Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
- -
-
out_EBOXt Struct Reference
-
-
- - - - - - -

-Data Fields

uint8 control
uint8 dout
int16 aout [2]
uint16 pwmout [2]
-

Field Documentation

- -
-
- - - - -
int16 out_EBOXt::aout[2]
-
-
- -
-
- -
-
- - - - -
uint8 out_EBOXt::control
-
-
- -
-
- -
-
- - - - -
uint8 out_EBOXt::dout
-
-
- -
-
- -
-
- - - - -
uint16 out_EBOXt::pwmout[2]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/doc/html/tab_a.png b/doc/html/tab_a.png deleted file mode 100644 index 2d99ef2..0000000 Binary files a/doc/html/tab_a.png and /dev/null differ diff --git a/doc/html/tab_b.png b/doc/html/tab_b.png deleted file mode 100644 index b2c3d2b..0000000 Binary files a/doc/html/tab_b.png and /dev/null differ diff --git a/doc/html/tab_h.png b/doc/html/tab_h.png deleted file mode 100644 index c11f48f..0000000 Binary files a/doc/html/tab_h.png and /dev/null differ diff --git a/doc/html/tab_s.png b/doc/html/tab_s.png deleted file mode 100644 index 978943a..0000000 Binary files a/doc/html/tab_s.png and /dev/null differ diff --git a/doc/html/tabs.css b/doc/html/tabs.css deleted file mode 100644 index 2192056..0000000 --- a/doc/html/tabs.css +++ /dev/null @@ -1,59 +0,0 @@ -.tabs, .tabs2, .tabs3 { - background-image: url('tab_b.png'); - width: 100%; - z-index: 101; - font-size: 13px; -} - -.tabs2 { - font-size: 10px; -} -.tabs3 { - font-size: 9px; -} - -.tablist { - margin: 0; - padding: 0; - display: table; -} - -.tablist li { - float: left; - display: table-cell; - background-image: url('tab_b.png'); - line-height: 36px; - list-style: none; -} - -.tablist a { - display: block; - padding: 0 20px; - font-weight: bold; - background-image:url('tab_s.png'); - background-repeat:no-repeat; - background-position:right; - color: #283A5D; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; - outline: none; -} - -.tabs3 .tablist a { - padding: 0 10px; -} - -.tablist a:hover { - background-image: url('tab_h.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); - text-decoration: none; -} - -.tablist li.current a { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} diff --git a/doc/html/tutorial_8txt.html b/doc/html/tutorial_8txt.html deleted file mode 100644 index da703b1..0000000 --- a/doc/html/tutorial_8txt.html +++ /dev/null @@ -1,266 +0,0 @@ - - - - -SOEM: tutorial.txt File Reference - - - - - -
-
- - - - - - -
-
SOEM v1.3.1
-
-
- - -
-
-
-
tutorial.txt File Reference
-
-
- -
-

Detailed Description

-

-General

-

The SOEM is a library that provides the user application with the means to send and receive EtherCAT frames. It is up to the application to provide means for:

-
    -
  • Reading and writing process data to be sent/received by SOEM
  • -
  • Keeping local IO data synchronised with the global IOmap
  • -
  • Detecting errors reported by SOEM
  • -
  • Managing errors reported by SOEM
  • -
-

The following sections show some basic examples on how to get the SOEM up and running, as well as making use of the process data and checking for errors. Since all code is local to the application or global variables, it is possible to tweak and optimize when possible.

-

The following example shows how to add a main function that will be called by startup code. In this example main's only purpose is to spawn a new task that executes SOEM.

-
int main (void)
-{
-   rprintp("SOEM (Simple Open EtherCAT Master)\nSimple test\n");
-
-   task_spawn ("simpletest", simpletest, 9, 8192, NULL);
-

-Configuration

-

Followed by start of the application we need to set up the NIC to be used as EtherCAT Ethernet interface. In a simple setup we call ec_init(ifname) and if SOEM comes with support for cable redundancy we call ec_init_redundant that will open a second port as backup. You can send NULL as ifname if you have a dedicated NIC selected in the nicdrv.c. It returns >0 if succeeded.

-
   /* initialise SOEM, bind socket to ifname */
-   if (ec_init(ifname))
-

SOEM is a light weight ethercat master library used in embedded systems, It supports only runtime configuration. It requests a BRD (Broad Cast Read) of address 0, all fully functional slaves in the network will respond to this request, and therefore we will get a working counter equal to the number of slaves in the network. ec_config_init also sets up the mailboxes for slaves that support it. When ec_config_init finishes it will have requested all slaves to state PRE_OP. All data read and configured are stored in a global array which acts as a placeholder for key values, consult ec_slave for detailed information.

-
   /* find and auto-config slaves */
-   if ( ec_config_init(FALSE) > 0 )
-   {
-      rprintp("%d slaves found and configured.\n",ec_slavecount);
-

SOEM has now discovered and configured the network it is connected to. Now we can verify that all slaves are present as expected. These definitions could be generated by an external tool in an offline .h file. The definitions could be replaced by a struct keeping slave number.

-
#define EK1100_1           1
-#define EL4001_1           2
-...
-#define EL2622_3           8
-#define EL2622_4           9
-#define NUMBER_OF_SLAVES   9
-
-snippet
-...
-
-uint32 network_configuration(void)
-{
-   /* Do we got expected number of slaves from config */
-   if (ec_slavecount < NUMBER_OF_SLAVES)
-      return 0;
-
-   /* Verify slave by slave that it is correct*/
-   if (strcmp(ec_slave[EK1100_1].name,"EK1100"))
-      return 0;
-   else if (strcmp(ec_slave[EL4001_1].name,"EL4001"))
-      return 0;
-...
-   else if (strcmp(ec_slave[EL2622_4].name,"EL2622"))
-      return 0;
-
-  return 1;
-}
-
-simpletest
-...
-   if (network_configuration())
-      ...
-   else
-      rprintp("Mismatch of network units!\n");      
-

We now have the network up and configured. Mailboxes are up for slaves that support it. Next we will create an IOmap and configure the SyncManager's and FMMU's to link the EtherCAT master and the slaves. The IO mapping is done automatically, SOEM strives to keep the logical process image as compact as possible. It is done by trying to fit Bit oriented slaves together in single bytes. Below is an example of 8 slaves and how they are ordered. During mapping SOEM also calculates an expected WKC for the IO mapped together. That is the primary key to detect errors.

-
    -
  • Outputs are placed together in the beginning of the IOmap
  • -
  • Inputs follow
  • -
-

When the mapping is done SOEM requests slaves to enter SAFE_OP.

-
char IOmap[128];
-...
-      ec_config_map(&IOmap);
-...
-
-memory_layout.png -
-memory layout, mapping between physical and logical
-

To enter state OP we need to send valid data to outputs. The EtherCAT frame handling is split into ec_send_processdata and ec_receive_processdata.

-
    -
  • ec_send_processdata sends the frame on the NIC and saves the frame on the stack for receive to fetch.
  • -
  • ec_receive_processdata(EC_TIMEOUTRET) tries to fetch the frames on the stack. We send an argument for how long we will try to fetch the frame. ec_receive_processdata returns the working counter.
  • -
-
   /* send one valid process data to make outputs in slaves happy*/
-   ec_send_processdata();
-   wkc = ec_receive_processdata(EC_TIMEOUTRET);
-...
-   ec_writestate(0);
-   /* wait for all slaves to reach OP state */
-   ec_statecheck(0, EC_STATE_OPERATIONAL,  EC_TIMEOUTSTATE);
-
    -
  • Now we have a system up and running, all slaves are in state operational.
  • -
-

-Application

-

IO data is accessed through the IOmap, the ec_slave struct keep pointers to the start byte in the IO map on slave level together with start bit within the start byte. This way we can bit mask IO on bit level even though SOEM has combined slave data to minimize the frame size to be sent. We'll use slave 8 in the picture above as an example. From a printout from ec_slave we have the following:

-
    -
  • Slave:8
      -
    • Name:EL2622
    • -
    • Output size: 2bits
    • -
    • Input size: 0bits
    • -
    • Configured address: 1008
    • -
    • Outputs address: 18cf6
    • -
    • Inputs address: 0
    • -
    • FMMU0 Ls:2 Ll: 1 Lsb:4 Leb:5 Ps:f00 Psb:0 Ty:2 Act:1
    • -
    -
  • -
-

The Outputs address: 18cf6 is the pointer to slave 8's start byte. The FMMU's Lsb:4 (LogicalStartBit) = ec_slave.Ostartbit telling us how to mask for the individual bits in the combined byte. The same goes for byte addressed slaves, but byte slaves only need the byte start address since they are byte aligned, the start bit will be 0.

-

Some example on how to access different types of data

-

Set an output int 16 value when memory alignment needs to be considered, arguments is:

-
    -
  • slave number in ethercat network
  • -
  • module index as index internal to the slave in case more than one channel
  • -
  • value to write
  • -
-
#define EL4001_1           2
-...
-void set_output_int16 (uint16 slave_no, uint8 module_index, int16 value)
-{
-   uint8 *data_ptr;
-
-   data_ptr = ec_slave[slave_no].outputs;
-   /* Move pointer to correct module index*/
-   data_ptr += module_index * 2;
-   /* Read value byte by byte since all targets can't handle misaligned
- addresses
-    */
-   *data_ptr++ = (value >> 0) & 0xFF;
-   *data_ptr++ = (value >> 8) & 0xFF;
-}
-...
-set_output_int16(EL4001_1,0,slave_EL4001_1.out1);
-

Target can handle non aligned pointers to the IOmap

-
typedef struct PACKED
-{
-        int16      outvalue1;
-        int16      outvalue2;
-} out_EL4132t;
-
-out_EL4132t             *out_EL4132;
-...
-   /* connect struct pointers to slave I/O pointers */
-   out_EL4132 = (out_EL4132t*) ec_slave[3].outputs;
-   out_EL4132->outvalue2 = 0x3FFF;
-   
-...      
-

Identify and manage errors. The key is the Working Counter, CRC errors and errors local to the slave causing a state change can be detected by loss of Working Counter since the syncmanagers won't get updated. When returning Working Counter don't match Expected Working Counter something is wrong, then it is up to an error handler to act, locate the erroneous slave and decide what action to perform. The error may not be fatal. Some basic code from simple_test.

-
wkc = ec_receive_processdata(EC_TIMEOUTRET);
-expectedWKC = (ec_group[0].outputsWKC * 2) + ec_group[0].inputsWKC;
-
-if( inOP && ((wkc < expectedWKC) || ec_group[currentgroup].docheckstate))
-{
-    if (needlf)
-    {
-       needlf = FALSE;
-       printf("\n");
-    }
-    /* one ore more slaves are not responding */
-    ec_group[currentgroup].docheckstate = FALSE;
-    ec_readstate();
-    for (slave = 1; slave <= ec_slavecount; slave++)
-    {
-       if ((ec_slave[slave].group == currentgroup) && (ec_slave[slave].state != EC_STATE_OPERATIONAL))
-       {
-          ec_group[currentgroup].docheckstate = TRUE;
-          if (ec_slave[slave].state == (EC_STATE_SAFE_OP + EC_STATE_ERROR))
-          {
-             printf("ERROR : slave %d is in SAFE_OP + ERROR, attempting ack.\n", slave);
-             ec_slave[slave].state = (EC_STATE_SAFE_OP + EC_STATE_ACK);
-             ec_writestate(slave);
-          }
-          else if(ec_slave[slave].state == EC_STATE_SAFE_OP)
-          {
-             printf("WARNING : slave %d is in SAFE_OP, change to OPERATIONAL.\n", slave);
-             ec_slave[slave].state = EC_STATE_OPERATIONAL;
-             ec_writestate(slave);      
-          }
-          else if(ec_slave[slave].state > 0)
-          { 
-             if (ec_reconfig_slave(slave, EC_TIMEOUTMON))
-             {
-               ec_slave[slave].islost = FALSE;
-               printf("MESSAGE : slave %d reconfigured\n",slave);   
-             }
-          } 
-          else if(!ec_slave[slave].islost)
-          {
-            /* re-check state */
-            ec_statecheck(slave, EC_STATE_OPERATIONAL, EC_TIMEOUTRET);
-            if (!ec_slave[slave].state)
-            {
-              ec_slave[slave].islost = TRUE;
-              printf("ERROR : slave %d lost\n",slave);   
-            }
-          }
-       }
-       if (ec_slave[slave].islost)
-       {
-         if(!ec_slave[slave].state)
-         {
-           if (ec_recover_slave(slave, EC_TIMEOUTMON))
-           {
-             ec_slave[slave].islost = FALSE;
-             printf("MESSAGE : slave %d recovered\n",slave);   
-           }
-         }
-         else
-         {
-           ec_slave[slave].islost = FALSE;
-           printf("MESSAGE : slave %d found\n",slave);   
-         }
-       }
-    }
-    if(!ec_group[currentgroup].docheckstate)
-       printf("OK : all slaves resumed OPERATIONAL.\n");
-}   
-

This tutorial is just one way of doing it. Enjoy and happy coding!

-

Andreas Karlsson, rt-labs AB, www.rt-labs.com

-
- - - diff --git a/doc/soem.dox b/doc/soem.dox index 920ad7f..96587e4 100644 --- a/doc/soem.dox +++ b/doc/soem.dox @@ -3,7 +3,7 @@ * * \section start Tutorial * For a tutorial on SOEM See tutorial.txt - * + * * \section overview Overview * SOEM is an EtherCAT master library written in c. Its purpose is to learn and * to use. All users are invited to study the source to get an understanding @@ -55,7 +55,7 @@ * - Support for Little and Big endian targets. * * Features as of 1.1.3 : - * - CoE, TxPDO and RxPDO, master is client (beta). + * - CoE, TxPDO and RxPDO, master is client (beta). * - FoE, Read and Write file (beta). * * Features as of 1.1.4 : @@ -114,24 +114,16 @@ * - Error messages updated to latest ETG1020 document. * - FoE transfers now support busy response. * - * \section start Getting started + * \section build Build instructions * - * For Linux - * - go to project directory - * - source ./setup.sh linux - * - make all + * See README.md in the root folder. + * + * \section start Getting started * * For examples see simple_test.c in ~/test/linux/simple_test. * First try (assume EtherCAT on eth0): sudo ./simple_test eth0 * As SOEM uses RAW sockets it will need to run as root. * - * For Windows - * - have winpcap installed (included with WireShark) - * - go to project directory - * - for VC, run vcvarsall.bat - * f.e. : C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat x86 - * - run make_test_win32_all.bat - * * \section bugs Squashed bugs * Version 1.1.3 * - Added missing Big-Endian conversion in ethercatconfig.c @@ -186,7 +178,7 @@ * - Added intime target. * - Added rtk\fec target. * - Compiles under gcc / visual-c / intime / borland-c . - * - Added multi-threaded configuration for parallel configurations of slaves + * - Added multi-threaded configuration for parallel configurations of slaves * * \section legal Legal notice * Copyright© 2005-2015 Speciaal Machinefabriek Ketels v.o.f. \n @@ -222,4 +214,4 @@ * In case you did not receive a copy of the EtherCAT Master License along with * SOEM write to Beckhoff Automation GmbH, Eiserstrasse 5, D-33415 Verl, Germany * (www.beckhoff.com). - */ + */ diff --git a/osal/intime/osal.c b/osal/intime/osal.c index be58286..7880a22 100644 --- a/osal/intime/osal.c +++ b/osal/intime/osal.c @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ @@ -122,4 +122,3 @@ osal_mutex_t * osal_mtx_create(void) /* return (void*)RtCreateMutex(NULL, FALSE, NULL); */ return (void *)0; } - diff --git a/osal/intime/osal_defs.h b/osal/intime/osal_defs.h index b76b328..4ef9dee 100644 --- a/osal/intime/osal_defs.h +++ b/osal/intime/osal_defs.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/osal/linux/osal.c b/osal/linux/osal.c index 5fd9d44..ac51b31 100644 --- a/osal/linux/osal.c +++ b/osal/linux/osal.c @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ @@ -175,4 +175,3 @@ int osal_thread_create_rt(void *thandle, int stacksize, void *func, void *param) return 1; } - diff --git a/osal/linux/osal_defs.h b/osal/linux/osal_defs.h index eaa2123..eeb5d28 100644 --- a/osal/linux/osal_defs.h +++ b/osal/linux/osal_defs.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/osal/rtk/osal.c b/osal/rtk/osal.c index c1936b5..a7b1741 100644 --- a/osal/rtk/osal.c +++ b/osal/rtk/osal.c @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/osal/win32/osal.c b/osal/win32/osal.c index 673ab66..a42186f 100644 --- a/osal/win32/osal.c +++ b/osal/win32/osal.c @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ @@ -157,4 +157,3 @@ int osal_thread_create_rt(void **thandle, int stacksize, void *func, void *param } return ret; } - diff --git a/osal/win32/osal_defs.h b/osal/win32/osal_defs.h index e10e7ec..af27c53 100644 --- a/osal/win32/osal_defs.h +++ b/osal/win32/osal_defs.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ #ifndef _osal_defs_ diff --git a/osal/win32/osal_win32.h b/osal/win32/osal_win32.h index 59c2e07..17579df 100644 --- a/osal/win32/osal_win32.h +++ b/osal/win32/osal_win32.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/oshw/intime/nicdrv.h b/oshw/intime/nicdrv.h index b34b340..c29acf8 100644 --- a/oshw/intime/nicdrv.h +++ b/oshw/intime/nicdrv.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/oshw/intime/oshw.c b/oshw/intime/oshw.c index a5b6cb0..f33fe0a 100644 --- a/oshw/intime/oshw.c +++ b/oshw/intime/oshw.c @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/oshw/intime/oshw.h b/oshw/intime/oshw.h index 79c93fe..3e9de5c 100644 --- a/oshw/intime/oshw.h +++ b/oshw/intime/oshw.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/oshw/linux/oshw.c b/oshw/linux/oshw.c index 38da811..5ecf793 100644 --- a/oshw/linux/oshw.c +++ b/oshw/linux/oshw.c @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/oshw/linux/oshw.h b/oshw/linux/oshw.h index 9e4f4e1..38a1953 100644 --- a/oshw/linux/oshw.h +++ b/oshw/linux/oshw.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/oshw/rtk/oshw.c b/oshw/rtk/oshw.c index 69e2e80..898f12d 100644 --- a/oshw/rtk/oshw.c +++ b/oshw/rtk/oshw.c @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/oshw/rtk/oshw.h b/oshw/rtk/oshw.h index b6e1b0c..7e1f8eb 100644 --- a/oshw/rtk/oshw.h +++ b/oshw/rtk/oshw.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/oshw/win32/oshw.c b/oshw/win32/oshw.c index e7b469f..e7f1fb3 100644 --- a/oshw/win32/oshw.c +++ b/oshw/win32/oshw.c @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ @@ -165,4 +165,4 @@ void oshw_free_adapters (ec_adaptert * adapter) free (adapter); } } -} \ No newline at end of file +} diff --git a/oshw/win32/oshw.h b/oshw/win32/oshw.h index 0389ede..1efdf0c 100644 --- a/oshw/win32/oshw.h +++ b/oshw/win32/oshw.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */ diff --git a/soem/ethercatmain.h b/soem/ethercatmain.h index 91b52d1..0380f1a 100644 --- a/soem/ethercatmain.h +++ b/soem/ethercatmain.h @@ -28,14 +28,14 @@ * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * - * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual + * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for * the sole purpose of creating, using and/or selling or otherwise distributing * an EtherCAT network master provided that an EtherCAT Master License is obtained * from Beckhoff Automation GmbH. * * In case you did not receive a copy of the EtherCAT Master License along with - * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany + * SOEM write to Beckhoff Automation GmbH, EiserstraĂźe 5, D-33415 Verl, Germany * (www.beckhoff.com). */