tool/Command.cpp
changeset 1157 04d1c950cf9d
parent 1156 ecaf2a896ea3
child 1159 25cc77cf3993
equal deleted inserted replaced
1156:ecaf2a896ea3 1157:04d1c950cf9d
   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         }