examples/user/main.c
author Patrick Bruenn <p.bruenn@beckhoff.com>
Tue, 12 Apr 2016 11:17:36 +0200
branchstable-1.5
changeset 2654 b3f6b3e5ef29
parent 2565 f7b06b264646
child 2664 14a18eae7e3b
permissions -rw-r--r--
devices/ccat: revert "limit rx processing to one frame per poll"

revert "limit rx processing to one frame per poll", which caused etherlab
frame timeouts in setups with more than one frame per cycle.
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
     1
/*****************************************************************************
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
     2
 *
2556
Florian Pose <fp@igh-essen.com>
parents: 2555
diff changeset
     3
 *  $Id$
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
     4
 *
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
     5
 *  Copyright (C) 2007-2009  Florian Pose, Ingenieurgemeinschaft IgH
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
     6
 *
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
     7
 *  This file is part of the IgH EtherCAT Master.
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
     8
 *
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
     9
 *  The IgH EtherCAT Master is free software; you can redistribute it and/or
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    10
 *  modify it under the terms of the GNU General Public License version 2, as
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    11
 *  published by the Free Software Foundation.
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    12
 *
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    13
 *  The IgH EtherCAT Master is distributed in the hope that it will be useful,
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    14
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    15
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    16
 *  Public License for more details.
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    17
 *
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    18
 *  You should have received a copy of the GNU General Public License along
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    19
 *  with the IgH EtherCAT Master; if not, write to the Free Software
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    20
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    21
 *
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    22
 *  ---
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    23
 *
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    24
 *  The license mentioned above concerns the source code only. Using the
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    25
 *  EtherCAT technology and brand is only permitted in compliance with the
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    26
 *  industrial property and similar rights of Beckhoff Automation GmbH.
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    27
 *
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    28
 ****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    29
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    30
#include <errno.h>
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    31
#include <signal.h>
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    32
#include <stdio.h>
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    33
#include <string.h>
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    34
#include <sys/resource.h>
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    35
#include <sys/time.h>
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    36
#include <sys/types.h>
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    37
#include <unistd.h>
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    38
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    39
/****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    40
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    41
#include "ecrt.h"
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    42
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    43
/****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    44
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    45
// Application parameters
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    46
#define FREQUENCY 100
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    47
#define PRIORITY 1
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    48
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    49
// Optional features
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    50
#define CONFIGURE_PDOS  1
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    51
#define SDO_ACCESS      0
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    52
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    53
/****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    54
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    55
// EtherCAT
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    56
static ec_master_t *master = NULL;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    57
static ec_master_state_t master_state = {};
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    58
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    59
static ec_domain_t *domain1 = NULL;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    60
static ec_domain_state_t domain1_state = {};
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    61
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    62
static ec_slave_config_t *sc_ana_in = NULL;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    63
static ec_slave_config_state_t sc_ana_in_state = {};
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    64
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    65
// Timer
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    66
static unsigned int sig_alarms = 0;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    67
static unsigned int user_alarms = 0;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    68
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    69
/****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    70
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    71
// process data
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    72
static uint8_t *domain1_pd = NULL;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    73
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    74
#define BusCouplerPos  0, 0
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    75
#define DigOutSlavePos 0, 2
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    76
#define AnaInSlavePos  0, 3
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    77
#define AnaOutSlavePos 0, 4
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    78
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    79
#define Beckhoff_EK1100 0x00000002, 0x044c2c52
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    80
#define Beckhoff_EL2004 0x00000002, 0x07d43052
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    81
#define Beckhoff_EL2032 0x00000002, 0x07f03052
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    82
#define Beckhoff_EL3152 0x00000002, 0x0c503052
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    83
#define Beckhoff_EL3102 0x00000002, 0x0c1e3052
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    84
#define Beckhoff_EL4102 0x00000002, 0x10063052
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    85
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
    86
// offsets for PDO entries
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    87
static unsigned int off_ana_in_status;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    88
static unsigned int off_ana_in_value;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    89
static unsigned int off_ana_out;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    90
static unsigned int off_dig_out;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    91
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    92
const static ec_pdo_entry_reg_t domain1_regs[] = {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    93
    {AnaInSlavePos,  Beckhoff_EL3102, 0x3101, 1, &off_ana_in_status},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    94
    {AnaInSlavePos,  Beckhoff_EL3102, 0x3101, 2, &off_ana_in_value},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    95
    {AnaOutSlavePos, Beckhoff_EL4102, 0x3001, 1, &off_ana_out},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    96
    {DigOutSlavePos, Beckhoff_EL2032, 0x3001, 1, &off_dig_out},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    97
    {}
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    98
};
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
    99
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   100
static unsigned int counter = 0;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   101
static unsigned int blink = 0;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   102
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   103
/*****************************************************************************/
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   104
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   105
#if CONFIGURE_PDOS
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   106
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   107
// Analog in --------------------------
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   108
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   109
static ec_pdo_entry_info_t el3102_pdo_entries[] = {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   110
    {0x3101, 1,  8}, // channel 1 status
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   111
    {0x3101, 2, 16}, // channel 1 value
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   112
    {0x3102, 1,  8}, // channel 2 status
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   113
    {0x3102, 2, 16}, // channel 2 value
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   114
    {0x6401, 1, 16}, // channel 1 value (alt.)
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   115
    {0x6401, 2, 16}  // channel 2 value (alt.)
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   116
};
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   117
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   118
static ec_pdo_info_t el3102_pdos[] = {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   119
    {0x1A00, 2, el3102_pdo_entries},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   120
    {0x1A01, 2, el3102_pdo_entries + 2}
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   121
};
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   122
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   123
static ec_sync_info_t el3102_syncs[] = {
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   124
    {2, EC_DIR_OUTPUT},
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   125
    {3, EC_DIR_INPUT, 2, el3102_pdos},
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   126
    {0xff}
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   127
};
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   128
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   129
// Analog out -------------------------
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   130
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   131
static ec_pdo_entry_info_t el4102_pdo_entries[] = {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   132
    {0x3001, 1, 16}, // channel 1 value
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   133
    {0x3002, 1, 16}, // channel 2 value
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   134
};
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   135
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   136
static ec_pdo_info_t el4102_pdos[] = {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   137
    {0x1600, 1, el4102_pdo_entries},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   138
    {0x1601, 1, el4102_pdo_entries + 1}
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   139
};
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   140
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   141
static ec_sync_info_t el4102_syncs[] = {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   142
    {2, EC_DIR_OUTPUT, 2, el4102_pdos},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   143
    {3, EC_DIR_INPUT},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   144
    {0xff}
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   145
};
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   146
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   147
// Digital out ------------------------
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   148
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   149
static ec_pdo_entry_info_t el2004_channels[] = {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   150
    {0x3001, 1, 1}, // Value 1
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   151
    {0x3001, 2, 1}, // Value 2
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   152
    {0x3001, 3, 1}, // Value 3
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   153
    {0x3001, 4, 1}  // Value 4
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   154
};
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   155
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   156
static ec_pdo_info_t el2004_pdos[] = {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   157
    {0x1600, 1, &el2004_channels[0]},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   158
    {0x1601, 1, &el2004_channels[1]},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   159
    {0x1602, 1, &el2004_channels[2]},
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   160
    {0x1603, 1, &el2004_channels[3]}
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   161
};
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   162
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   163
static ec_sync_info_t el2004_syncs[] = {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   164
    {0, EC_DIR_OUTPUT, 4, el2004_pdos},
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   165
    {1, EC_DIR_INPUT},
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   166
    {0xff}
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   167
};
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   168
#endif
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   169
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   170
/*****************************************************************************/
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   171
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   172
#if SDO_ACCESS
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   173
static ec_sdo_request_t *sdo;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   174
#endif
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   175
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   176
/*****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   177
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   178
void check_domain1_state(void)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   179
{
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   180
    ec_domain_state_t ds;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   181
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   182
    ecrt_domain_state(domain1, &ds);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   183
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   184
    if (ds.working_counter != domain1_state.working_counter)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   185
        printf("Domain1: WC %u.\n", ds.working_counter);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   186
    if (ds.wc_state != domain1_state.wc_state)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   187
        printf("Domain1: State %u.\n", ds.wc_state);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   188
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   189
    domain1_state = ds;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   190
}
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   191
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   192
/*****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   193
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   194
void check_master_state(void)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   195
{
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   196
    ec_master_state_t ms;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   197
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   198
    ecrt_master_state(master, &ms);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   199
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   200
    if (ms.slaves_responding != master_state.slaves_responding)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   201
        printf("%u slave(s).\n", ms.slaves_responding);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   202
    if (ms.al_states != master_state.al_states)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   203
        printf("AL states: 0x%02X.\n", ms.al_states);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   204
    if (ms.link_up != master_state.link_up)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   205
        printf("Link is %s.\n", ms.link_up ? "up" : "down");
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   206
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   207
    master_state = ms;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   208
}
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   209
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   210
/*****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   211
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   212
void check_slave_config_states(void)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   213
{
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   214
    ec_slave_config_state_t s;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   215
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   216
    ecrt_slave_config_state(sc_ana_in, &s);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   217
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   218
    if (s.al_state != sc_ana_in_state.al_state)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   219
        printf("AnaIn: State 0x%02X.\n", s.al_state);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   220
    if (s.online != sc_ana_in_state.online)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   221
        printf("AnaIn: %s.\n", s.online ? "online" : "offline");
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   222
    if (s.operational != sc_ana_in_state.operational)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   223
        printf("AnaIn: %soperational.\n",
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   224
                s.operational ? "" : "Not ");
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   225
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   226
    sc_ana_in_state = s;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   227
}
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   228
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   229
/*****************************************************************************/
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   230
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   231
#if SDO_ACCESS
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   232
void read_sdo(void)
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   233
{
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   234
    switch (ecrt_sdo_request_state(sdo)) {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   235
        case EC_REQUEST_UNUSED: // request was not used yet
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   236
            ecrt_sdo_request_read(sdo); // trigger first read
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   237
            break;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   238
        case EC_REQUEST_BUSY:
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   239
            fprintf(stderr, "Still busy...\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   240
            break;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   241
        case EC_REQUEST_SUCCESS:
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   242
            fprintf(stderr, "SDO value: 0x%04X\n",
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   243
                    EC_READ_U16(ecrt_sdo_request_data(sdo)));
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   244
            ecrt_sdo_request_read(sdo); // trigger next read
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   245
            break;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   246
        case EC_REQUEST_ERROR:
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   247
            fprintf(stderr, "Failed to read SDO!\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   248
            ecrt_sdo_request_read(sdo); // retry reading
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   249
            break;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   250
    }
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   251
}
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   252
#endif
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   253
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   254
/****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   255
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   256
void cyclic_task()
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   257
{
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   258
    // receive process data
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   259
    ecrt_master_receive(master);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   260
    ecrt_domain_process(domain1);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   261
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   262
    // check process data state (optional)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   263
    check_domain1_state();
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   264
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   265
    if (counter) {
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   266
        counter--;
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   267
    } else { // do this at 1 Hz
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   268
        counter = FREQUENCY;
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   269
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   270
        // calculate new process data
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   271
        blink = !blink;
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   272
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   273
        // check for master state (optional)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   274
        check_master_state();
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   275
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   276
        // check for islave configuration state(s) (optional)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   277
        check_slave_config_states();
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   278
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   279
#if SDO_ACCESS
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   280
        // read process data SDO
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   281
        read_sdo();
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   282
#endif
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   283
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   284
    }
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   285
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   286
#if 0
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   287
    // read process data
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   288
    printf("AnaIn: state %u value %u\n",
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   289
            EC_READ_U8(domain1_pd + off_ana_in_status),
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   290
            EC_READ_U16(domain1_pd + off_ana_in_value));
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   291
#endif
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   292
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   293
#if 1
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   294
    // write process data
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   295
    EC_WRITE_U8(domain1_pd + off_dig_out, blink ? 0x06 : 0x09);
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   296
#endif
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   297
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   298
    // send process data
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   299
    ecrt_domain_queue(domain1);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   300
    ecrt_master_send(master);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   301
}
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   302
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   303
/****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   304
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   305
void signal_handler(int signum) {
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   306
    switch (signum) {
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   307
        case SIGALRM:
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   308
            sig_alarms++;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   309
            break;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   310
    }
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   311
}
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   312
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   313
/****************************************************************************/
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   314
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   315
int main(int argc, char **argv)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   316
{
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   317
    ec_slave_config_t *sc;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   318
    struct sigaction sa;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   319
    struct itimerval tv;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   320
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   321
    master = ecrt_request_master(0);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   322
    if (!master)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   323
        return -1;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   324
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   325
    domain1 = ecrt_master_create_domain(master);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   326
    if (!domain1)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   327
        return -1;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   328
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   329
    if (!(sc_ana_in = ecrt_master_slave_config(
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   330
                    master, AnaInSlavePos, Beckhoff_EL3102))) {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   331
        fprintf(stderr, "Failed to get slave configuration.\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   332
        return -1;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   333
    }
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   334
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   335
#if SDO_ACCESS
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   336
    fprintf(stderr, "Creating SDO requests...\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   337
    if (!(sdo = ecrt_slave_config_create_sdo_request(sc_ana_in, 0x3102, 2, 2))) {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   338
        fprintf(stderr, "Failed to create SDO request.\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   339
        return -1;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   340
    }
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   341
    ecrt_sdo_request_timeout(sdo, 500); // ms
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   342
#endif
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   343
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   344
#if CONFIGURE_PDOS
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   345
    printf("Configuring PDOs...\n");
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   346
    if (ecrt_slave_config_pdos(sc_ana_in, EC_END, el3102_syncs)) {
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   347
        fprintf(stderr, "Failed to configure PDOs.\n");
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   348
        return -1;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   349
    }
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   350
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   351
    if (!(sc = ecrt_master_slave_config(
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   352
                    master, AnaOutSlavePos, Beckhoff_EL4102))) {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   353
        fprintf(stderr, "Failed to get slave configuration.\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   354
        return -1;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   355
    }
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   356
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   357
    if (ecrt_slave_config_pdos(sc, EC_END, el4102_syncs)) {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   358
        fprintf(stderr, "Failed to configure PDOs.\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   359
        return -1;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   360
    }
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   361
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   362
    if (!(sc = ecrt_master_slave_config(
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   363
                    master, DigOutSlavePos, Beckhoff_EL2032))) {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   364
        fprintf(stderr, "Failed to get slave configuration.\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   365
        return -1;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   366
    }
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   367
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   368
    if (ecrt_slave_config_pdos(sc, EC_END, el2004_syncs)) {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   369
        fprintf(stderr, "Failed to configure PDOs.\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   370
        return -1;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   371
    }
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   372
#endif
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   373
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   374
    // Create configuration for bus coupler
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   375
    sc = ecrt_master_slave_config(master, BusCouplerPos, Beckhoff_EK1100);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   376
    if (!sc)
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   377
        return -1;
2565
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   378
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   379
    if (ecrt_domain_reg_pdo_entry_list(domain1, domain1_regs)) {
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   380
        fprintf(stderr, "PDO entry registration failed!\n");
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   381
        return -1;
f7b06b264646 - restored examples/user/
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2556
diff changeset
   382
    }
2555
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   383
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   384
    printf("Activating master...\n");
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   385
    if (ecrt_master_activate(master))
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   386
        return -1;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   387
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   388
    if (!(domain1_pd = ecrt_domain_data(domain1))) {
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   389
        return -1;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   390
    }
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   391
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   392
#if PRIORITY
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   393
    pid_t pid = getpid();
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   394
    if (setpriority(PRIO_PROCESS, pid, -19))
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   395
        fprintf(stderr, "Warning: Failed to set priority: %s\n",
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   396
                strerror(errno));
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   397
#endif
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   398
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   399
    sa.sa_handler = signal_handler;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   400
    sigemptyset(&sa.sa_mask);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   401
    sa.sa_flags = 0;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   402
    if (sigaction(SIGALRM, &sa, 0)) {
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   403
        fprintf(stderr, "Failed to install signal handler!\n");
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   404
        return -1;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   405
    }
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   406
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   407
    printf("Starting timer...\n");
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   408
    tv.it_interval.tv_sec = 0;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   409
    tv.it_interval.tv_usec = 1000000 / FREQUENCY;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   410
    tv.it_value.tv_sec = 0;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   411
    tv.it_value.tv_usec = 1000;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   412
    if (setitimer(ITIMER_REAL, &tv, NULL)) {
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   413
        fprintf(stderr, "Failed to start timer: %s\n", strerror(errno));
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   414
        return 1;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   415
    }
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   416
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   417
    printf("Started.\n");
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   418
    while (1) {
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   419
        pause();
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   420
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   421
#if 0
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   422
        struct timeval t;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   423
        gettimeofday(&t, NULL);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   424
        printf("%u.%06u\n", t.tv_sec, t.tv_usec);
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   425
#endif
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   426
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   427
        while (sig_alarms != user_alarms) {
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   428
            cyclic_task();
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   429
            user_alarms++;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   430
        }
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   431
    }
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   432
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   433
    return 0;
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   434
}
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   435
18c226b66533 replace symlink in example with the real file
Patrick Bruenn <p.bruenn@beckhoff.com>
parents: 2549
diff changeset
   436
/****************************************************************************/