tool/CommandFoeRead.cpp
changeset 1336 e27b37e80a99
parent 1335 09c6fce1ae45
child 1357 b065f49113f4
equal deleted inserted replaced
1335:09c6fce1ae45 1336:e27b37e80a99
     7 #include <iostream>
     7 #include <iostream>
     8 #include <iomanip>
     8 #include <iomanip>
     9 using namespace std;
     9 using namespace std;
    10 
    10 
    11 #include "CommandFoeRead.h"
    11 #include "CommandFoeRead.h"
       
    12 #include "foe.h"
    12 
    13 
    13 /*****************************************************************************/
    14 /*****************************************************************************/
    14 
    15 
    15 CommandFoeRead::CommandFoeRead():
    16 CommandFoeRead::CommandFoeRead():
    16     FoeCommand("foe_read", "Read a file from a slave via FoE.")
    17     FoeCommand("foe_read", "Read a file from a slave via FoE.")
    80 
    81 
    81 	try {
    82 	try {
    82 		m.readFoe(&data);
    83 		m.readFoe(&data);
    83 	} catch (MasterDeviceException &e) {
    84 	} catch (MasterDeviceException &e) {
    84         delete [] data.buffer;
    85         delete [] data.buffer;
    85 		throw e;
    86         if (data.result) {
       
    87             if (data.result == FOE_OPCODE_ERROR) {
       
    88                 err << "FoE read aborted with error code 0x"
       
    89                     << setw(8) << setfill('0') << hex << data.error_code
       
    90                     << ": " << errorText(data.error_code);
       
    91             } else {
       
    92                 err << "Failed to write via FoE: "
       
    93                     << resultText(data.result);
       
    94             }
       
    95             throwCommandException(err);
       
    96         } else {
       
    97             throw e;
       
    98         }
    86 	}
    99 	}
    87 
   100 
    88     // TODO --output-file
   101     // TODO --output-file
    89 	for (i = 0; i < data.data_size; i++) {
   102 	for (i = 0; i < data.data_size; i++) {
    90 		uint8_t *w = data.buffer + i;
   103 		uint8_t *w = data.buffer + i;