tool/cmd_sii_read.cpp
changeset 1136 a0982873d655
parent 1130 bb1c11adb2db
child 1137 a73c0f54be42
equal deleted inserted replaced
1135:807ec6498502 1136:a0982873d655
    64     const uint16_t *categoryHeader;
    64     const uint16_t *categoryHeader;
    65     uint16_t categoryType, categorySize;
    65     uint16_t categoryType, categorySize;
    66     stringstream err;
    66     stringstream err;
    67 
    67 
    68     if (slavePosition < 0) {
    68     if (slavePosition < 0) {
    69         stringstream err;
    69         err << "'" << commandName << "' requires a slave! "
    70         err << "'sii_read' requires a slave! Please specify --slave.";
    70             << "Please specify --slave.";
    71         throw MasterDeviceException(err.str());
    71         throw InvalidUsageException(err);
    72     }
    72     }
    73     data.slave_position = slavePosition;
    73     data.slave_position = slavePosition;
    74 
    74 
    75     masterDev.open(MasterDevice::Read);
    75     masterDev.open(MasterDevice::Read);
    76 
    76 
   111                     << setw(4) << categoryType
   111                     << setw(4) << categoryType
   112                     << " (" << getCategoryName(categoryType) << ")" << flush;
   112                     << " (" << getCategoryName(categoryType) << ")" << flush;
   113 
   113 
   114                 if (categoryHeader + 1 > data.words + data.nwords) {
   114                 if (categoryHeader + 1 > data.words + data.nwords) {
   115                     err << "SII data seem to be corrupted!";
   115                     err << "SII data seem to be corrupted!";
   116                     throw MasterDeviceException(err.str());
   116                     throw CommandException(err);
   117                 }
   117                 }
   118                 categorySize = le16tocpu(*(categoryHeader + 1));
   118                 categorySize = le16tocpu(*(categoryHeader + 1));
   119                 cout << ", " << dec << categorySize << " words" << flush;
   119                 cout << ", " << dec << categorySize << " words" << flush;
   120 
   120 
   121                 if (categoryHeader + 2 + categorySize
   121                 if (categoryHeader + 2 + categorySize
   122                         > data.words + data.nwords) {
   122                         > data.words + data.nwords) {
   123                     err << "SII data seem to be corrupted!";
   123                     err << "SII data seem to be corrupted!";
   124                     throw MasterDeviceException(err.str());
   124                     throw CommandException(err);
   125                 }
   125                 }
   126 
   126 
   127                 cout << hex;
   127                 cout << hex;
   128                 for (i = 0; i < categorySize * 2U; i++) {
   128                 for (i = 0; i < categorySize * 2U; i++) {
   129                     if (i % BreakAfterBytes) {
   129                     if (i % BreakAfterBytes) {
   137                 cout << endl;
   137                 cout << endl;
   138 
   138 
   139                 if (categoryHeader + 2 + categorySize + 1
   139                 if (categoryHeader + 2 + categorySize + 1
   140                         > data.words + data.nwords) {
   140                         > data.words + data.nwords) {
   141                     err << "SII data seem to be corrupted!"; 
   141                     err << "SII data seem to be corrupted!"; 
   142                     throw MasterDeviceException(err.str());
   142                     throw CommandException(err);
   143                 }
   143                 }
   144                 categoryHeader += 2 + categorySize;
   144                 categoryHeader += 2 + categorySize;
   145                 categoryType = le16tocpu(*categoryHeader);
   145                 categoryType = le16tocpu(*categoryHeader);
   146             }
   146             }
   147         }
   147         }