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 } |