tool/CommandRegWrite.cpp
changeset 1870 0cee1fb7f0fd
parent 1869 14f634f5b613
child 1968 4f682084c643
equal deleted inserted replaced
1869:14f634f5b613 1870:0cee1fb7f0fd
    79 
    79 
    80 /****************************************************************************/
    80 /****************************************************************************/
    81 
    81 
    82 void CommandRegWrite::execute(const StringVector &args)
    82 void CommandRegWrite::execute(const StringVector &args)
    83 {
    83 {
    84 	MasterIndexList masterIndices;
       
    85     stringstream strOffset, err;
    84     stringstream strOffset, err;
    86     ec_ioctl_slave_reg_t data;
    85     ec_ioctl_slave_reg_t data;
    87     ifstream file;
    86     ifstream file;
    88     SlaveList slaves;
    87     SlaveList slaves;
    89 
    88 
    99     if (strOffset.fail()) {
    98     if (strOffset.fail()) {
   100         err << "Invalid offset '" << args[0] << "'!";
    99         err << "Invalid offset '" << args[0] << "'!";
   101         throwInvalidUsageException(err);
   100         throwInvalidUsageException(err);
   102     }
   101     }
   103   
   102   
   104 	masterIndices = getMasterIndices();
       
   105     if (masterIndices.size() != 1) {
       
   106         err << getName() << " requires to select a single master!";
       
   107         throwInvalidUsageException(err);
       
   108     }
       
   109     MasterDevice m(masterIndices.front());
       
   110 
       
   111     if (getDataType().empty()) {
   103     if (getDataType().empty()) {
   112         if (args[1] == "-") {
   104         if (args[1] == "-") {
   113             loadRegData(&data, cin);
   105             loadRegData(&data, cin);
   114         } else {
   106         } else {
   115             file.open(args[1].c_str(), ifstream::in | ifstream::binary);
   107             file.open(args[1].c_str(), ifstream::in | ifstream::binary);
   155         err << "Offset and length exceeding 64k!";
   147         err << "Offset and length exceeding 64k!";
   156         delete [] data.data;
   148         delete [] data.data;
   157         throwInvalidUsageException(err);
   149         throwInvalidUsageException(err);
   158     }
   150     }
   159 
   151 
       
   152     MasterDevice m(getSingleMasterIndex());
   160     try {
   153     try {
   161         m.open(MasterDevice::ReadWrite);
   154         m.open(MasterDevice::ReadWrite);
   162     } catch (MasterDeviceException &e) {
   155     } catch (MasterDeviceException &e) {
   163         delete [] data.data;
   156         delete [] data.data;
   164         throw e;
   157         throw e;