diff --git a/master/cdev.c b/master/cdev.c index 94f0fa8f93dd819246b9505a21f0b57c5c4ee7ac..7f6dbf6efd4b81321b186902b69c190bbcb7ebf9 100644 --- a/master/cdev.c +++ b/master/cdev.c @@ -858,6 +858,8 @@ long eccdev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) } data.sdo_count = ec_slave_config_sdo_count(sc); data.attached = sc->slave != NULL; + data.operational = sc->slave && + sc->slave->current_state == EC_SLAVE_STATE_OP; if (copy_to_user((void __user *) arg, &data, sizeof(data))) retval = -EFAULT; diff --git a/master/ioctl.h b/master/ioctl.h index 4f3cb7ab2f7cf7d5e2eef3c632aa1dba9e78da81..deb265db679ffb6df2ba0afa9dc27959204180cb 100644 --- a/master/ioctl.h +++ b/master/ioctl.h @@ -296,7 +296,9 @@ typedef struct { uint32_t pdo_count; } syncs[16]; uint32_t sdo_count; - uint8_t attached; + uint8_t attached : 1, + operational : 1; + } ec_ioctl_config_t; /*****************************************************************************/ diff --git a/tools/Master.cpp b/tools/Master.cpp index 63e72e9e8118e29791ed5f22fd2abfaad3b666c4..f23b02fa9e8b752560b99481e7a18087d8b85b9e 100644 --- a/tools/Master.cpp +++ b/tools/Master.cpp @@ -198,7 +198,8 @@ void Master::showConfig() << hex << setw(8) << config.vendor_id << endl << "Product code: 0x" << hex << setw(8) << config.product_code << endl - << "Attached: " << (config.attached ? "yes" : "no") << endl; + << "Attached: " << (config.attached ? "yes" : "no") << endl + << "Operational: " << (config.operational ? "yes" : "no") << endl; for (j = 0; j < 16; j++) { if (config.syncs[j].pdo_count) {