tool/CommandRegRead.cpp
changeset 1826 ec6223c3b7ec
parent 1804 742607c464c4
child 1835 20748e9d2238
equal deleted inserted replaced
1825:65781b048a47 1826:ec6223c3b7ec
    30 #include <iostream>
    30 #include <iostream>
    31 #include <iomanip>
    31 #include <iomanip>
    32 using namespace std;
    32 using namespace std;
    33 
    33 
    34 #include "CommandRegRead.h"
    34 #include "CommandRegRead.h"
       
    35 #include "MasterDevice.h"
    35 
    36 
    36 /*****************************************************************************/
    37 /*****************************************************************************/
    37 
    38 
    38 CommandRegRead::CommandRegRead():
    39 CommandRegRead::CommandRegRead():
    39     CommandReg("reg_read", "Output a slave's register contents.")
    40     CommandReg("reg_read", "Output a slave's register contents.")
    76     return str.str();
    77     return str.str();
    77 }
    78 }
    78 
    79 
    79 /****************************************************************************/
    80 /****************************************************************************/
    80 
    81 
    81 void CommandRegRead::execute(MasterDevice &m, const StringVector &args)
    82 void CommandRegRead::execute(const StringVector &args)
    82 {
    83 {
    83     SlaveList slaves;
    84     SlaveList slaves;
    84     ec_ioctl_slave_reg_t data;
    85     ec_ioctl_slave_reg_t data;
    85     stringstream strOffset, err;
    86     stringstream strOffset, err;
    86     const DataType *dataType = NULL;
    87     const DataType *dataType = NULL;
   139     if ((uint32_t) data.offset + data.length > 0xffff) {
   140     if ((uint32_t) data.offset + data.length > 0xffff) {
   140         err << "Offset and length exceeding 64k!";
   141         err << "Offset and length exceeding 64k!";
   141         throwInvalidUsageException(err);
   142         throwInvalidUsageException(err);
   142     }
   143     }
   143     
   144     
       
   145     if (getMasterIndices().size() != 1) {
       
   146         err << getName() << " requires to select a single master!";
       
   147         throwInvalidUsageException(err);
       
   148     }
       
   149     MasterDevice m(getMasterIndices().front());
   144     m.open(MasterDevice::Read);
   150     m.open(MasterDevice::Read);
   145     slaves = selectedSlaves(m);
   151     slaves = selectedSlaves(m);
   146 
   152 
   147     if (slaves.size() != 1) {
   153     if (slaves.size() != 1) {
   148         throwSingleSlaveRequired(slaves.size());
   154         throwSingleSlaveRequired(slaves.size());