tool/Command.cpp
changeset 1160 f02ff486b313
parent 1159 25cc77cf3993
child 1166 006244d53f68
equal deleted inserted replaced
1159:25cc77cf3993 1160:f02ff486b313
   106 
   106 
   107 /*****************************************************************************/
   107 /*****************************************************************************/
   108 
   108 
   109 Command::SlaveList Command::selectedSlaves(MasterDevice &m)
   109 Command::SlaveList Command::selectedSlaves(MasterDevice &m)
   110 {
   110 {
   111     unsigned int numSlaves = m.slaveCount(), i, aliasIndex;
   111     ec_ioctl_master_t master;
       
   112     unsigned int i, aliasIndex;
   112     uint16_t lastAlias;
   113     uint16_t lastAlias;
   113     ec_ioctl_slave_t slave;
   114     ec_ioctl_slave_t slave;
   114     SlaveList list;
   115     SlaveList list;
   115 
   116 
       
   117     m.getMaster(&master);
       
   118 
   116     if (alias == -1) { // no alias given
   119     if (alias == -1) { // no alias given
   117         if (position == -1) { // no alias and position given
   120         if (position == -1) { // no alias and position given
   118             // all items
   121             // all items
   119             for (i = 0; i < numSlaves; i++) {
   122             for (i = 0; i < master.slave_count; i++) {
   120                 m.getSlave(&slave, i);
   123                 m.getSlave(&slave, i);
   121                 list.push_back(slave);
   124                 list.push_back(slave);
   122             }
   125             }
   123         } else { // no alias, but position given
   126         } else { // no alias, but position given
   124             // one item by position
   127             // one item by position
   127         }
   130         }
   128     } else { // alias given
   131     } else { // alias given
   129         if (position == -1) { // alias, but no position given
   132         if (position == -1) { // alias, but no position given
   130             // take all items with a given alias
   133             // take all items with a given alias
   131             lastAlias = 0;
   134             lastAlias = 0;
   132             for (i = 0; i < numSlaves; i++) {
   135             for (i = 0; i < master.slave_count; i++) {
   133                 m.getSlave(&slave, i);
   136                 m.getSlave(&slave, i);
   134                 if (slave.alias) {
   137                 if (slave.alias) {
   135                     lastAlias = slave.alias;
   138                     lastAlias = slave.alias;
   136                 }
   139                 }
   137                 if (lastAlias == (uint16_t) alias) {
   140                 if (lastAlias == (uint16_t) alias) {
   139                 }
   142                 }
   140             }
   143             }
   141         } else { // alias and position given
   144         } else { // alias and position given
   142             lastAlias = 0;
   145             lastAlias = 0;
   143             aliasIndex = 0;
   146             aliasIndex = 0;
   144             for (i = 0; i < numSlaves; i++) {
   147             for (i = 0; i < master.slave_count; i++) {
   145                 m.getSlave(&slave, i);
   148                 m.getSlave(&slave, i);
   146                 if (slave.alias && slave.alias == (uint16_t) alias) {
   149                 if (slave.alias && slave.alias == (uint16_t) alias) {
   147                     lastAlias = slave.alias;
   150                     lastAlias = slave.alias;
   148                     aliasIndex = 0;
   151                     aliasIndex = 0;
   149                 }
   152                 }