diff -r 6c632c8f45cc -r 88f242b722ce lib/common.c --- a/lib/common.c Fri Jul 10 09:36:50 2009 +0000 +++ b/lib/common.c Fri Jul 10 09:38:07 2009 +0000 @@ -50,15 +50,37 @@ /*****************************************************************************/ +#define MAX_PATH_LEN 64 + ec_master_t *ecrt_request_master(unsigned int master_index) { - ec_master_t *master = ecrt_open_master(master_index); - if (master) { - if (ecrt_master_reserve(master) < 0) { - close(master->fd); - free(master); - master = 0; - } + char path[MAX_PATH_LEN]; + ec_master_t *master; + + master = malloc(sizeof(ec_master_t)); + if (!master) { + fprintf(stderr, "Failed to allocate memory.\n"); + return 0; + } + + master->process_data = NULL; + master->process_data_size = 0; + + snprintf(path, MAX_PATH_LEN - 1, "/dev/EtherCAT%u", master_index); + + master->fd = open(path, O_RDWR); + if (master->fd == -1) { + fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); + free(master); + return 0; + } + + if (ioctl(master->fd, EC_IOCTL_REQUEST, NULL) == -1) { + fprintf(stderr, "Failed to request master %u: %s\n", + master_index, strerror(errno)); + close(master->fd); + free(master); + return 0; } return master; @@ -66,36 +88,6 @@ /*****************************************************************************/ -#define MAX_PATH_LEN 64 - -ec_master_t *ecrt_open_master(unsigned int master_index) -{ - char path[MAX_PATH_LEN]; - ec_master_t *master; - - master = malloc(sizeof(ec_master_t)); - if (!master) { - fprintf(stderr, "Failed to allocate memory.\n"); - return 0; - } - - master->process_data = NULL; - master->process_data_size = 0; - - snprintf(path, MAX_PATH_LEN - 1, "/dev/EtherCAT%u", master_index); - - master->fd = open(path, O_RDWR); - if (master->fd == -1) { - fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); - free(master); - return 0; - } - - return master; -} - -/*****************************************************************************/ - void ecrt_release_master(ec_master_t *master) { if (master->process_data) {