173 /*****************************************************************************/ |
173 /*****************************************************************************/ |
174 |
174 |
175 Command::ConfigList Command::selectedConfigs(MasterDevice &m) |
175 Command::ConfigList Command::selectedConfigs(MasterDevice &m) |
176 { |
176 { |
177 unsigned int i; |
177 unsigned int i; |
178 int effAlias; |
|
179 ec_ioctl_master_t master; |
178 ec_ioctl_master_t master; |
180 ec_ioctl_config_t config; |
179 ec_ioctl_config_t config; |
181 ConfigList list; |
180 ConfigList list; |
182 stringstream err; |
181 stringstream err; |
183 |
182 |
184 m.getMaster(&master); |
183 m.getMaster(&master); |
185 |
184 |
186 // Assume alias 0 if only position is given. |
185 if (alias == -1) { // no alias given |
187 if (alias == -1 && position != -1) { |
|
188 effAlias = 0; |
|
189 } else { |
|
190 effAlias = alias; |
|
191 } |
|
192 |
|
193 if (effAlias == -1) { // no alias given |
|
194 if (position == -1) { // no alias and position given |
186 if (position == -1) { // no alias and position given |
195 // all items |
187 // all items |
196 for (i = 0; i < master.config_count; i++) { |
188 for (i = 0; i < master.config_count; i++) { |
197 m.getConfig(&config, i); |
189 m.getConfig(&config, i); |
198 list.push_back(config); |
190 list.push_back(config); |
|
191 } |
|
192 } else { // no alias, but position given |
|
193 for (i = 0; i < master.config_count; i++) { |
|
194 m.getConfig(&config, i); |
|
195 if (!config.alias && config.position == position) { |
|
196 list.push_back(config); |
|
197 break; // there can be at most one matching |
|
198 } |
199 } |
199 } |
200 } |
200 } |
201 } else { // alias given |
201 } else { // alias given |
202 if (position == -1) { // alias, but no position given |
202 if (position == -1) { // alias, but no position given |
203 // take all items with a given alias |
203 // take all items with a given alias |
204 for (i = 0; i < master.config_count; i++) { |
204 for (i = 0; i < master.config_count; i++) { |
205 m.getConfig(&config, i); |
205 m.getConfig(&config, i); |
206 if (config.alias == effAlias) { |
206 if (config.alias == alias) { |
207 list.push_back(config); |
207 list.push_back(config); |
208 } |
208 } |
209 } |
209 } |
210 } else { // alias and position given |
210 } else { // alias and position given |
211 for (i = 0; i < master.config_count; i++) { |
211 for (i = 0; i < master.config_count; i++) { |
212 m.getConfig(&config, i); |
212 m.getConfig(&config, i); |
213 if (config.alias == effAlias && config.position == position) { |
213 if (config.alias == alias && config.position == position) { |
214 list.push_back(config); |
214 list.push_back(config); |
215 break; // there can be at most one matching |
215 break; // there can be at most one matching |
216 } |
216 } |
217 } |
217 } |
218 } |
218 } |