fix for address check for -s/-d in read and write command (was never interpreted as destination address), allow master addresses for -d in write command
This commit is contained in:
@@ -713,16 +713,16 @@ result_t MainLoop::executeRead(const vector<string>& args, const string& levels,
|
|||||||
}
|
}
|
||||||
circuit = args[argPos];
|
circuit = args[argPos];
|
||||||
} else if (args[argPos] == "-s" || args[argPos] == "-d") {
|
} else if (args[argPos] == "-s" || args[argPos] == "-d") {
|
||||||
|
bool dest = args[argPos] == "-d";
|
||||||
argPos++;
|
argPos++;
|
||||||
if (argPos >= args.size()) {
|
if (argPos >= args.size()) {
|
||||||
argPos = 0; // print usage
|
argPos = 0; // print usage
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
bool dest = args[argPos] == "-d";
|
|
||||||
result_t ret;
|
result_t ret;
|
||||||
symbol_t address = (symbol_t)parseInt(args[argPos].c_str(), 16, 0, 0xff, &ret);
|
symbol_t address = (symbol_t)parseInt(args[argPos].c_str(), 16, 0, 0xff, &ret);
|
||||||
if (ret != RESULT_OK || !isValidAddress(address, dest) || dest == isMaster(address)) {
|
if (ret != RESULT_OK || !isValidAddress(address, dest) || (dest == isMaster(address))) {
|
||||||
return RESULT_ERR_INVALID_ADDR;
|
return RESULT_ERR_INVALID_ADDR; // deny send from slave address and to master addresses
|
||||||
}
|
}
|
||||||
if (dest) {
|
if (dest) {
|
||||||
dstAddress = address;
|
dstAddress = address;
|
||||||
@@ -940,16 +940,16 @@ result_t MainLoop::executeWrite(const vector<string>& args, const string levels,
|
|||||||
if (args[argPos] == "-h") {
|
if (args[argPos] == "-h") {
|
||||||
hex = true;
|
hex = true;
|
||||||
} else if (args[argPos] == "-s" || args[argPos] == "-d") {
|
} else if (args[argPos] == "-s" || args[argPos] == "-d") {
|
||||||
|
bool dest = args[argPos] == "-d";
|
||||||
argPos++;
|
argPos++;
|
||||||
if (argPos >= args.size()) {
|
if (argPos >= args.size()) {
|
||||||
argPos = 0; // print usage
|
argPos = 0; // print usage
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
bool dest = args[argPos] == "-d";
|
|
||||||
result_t ret;
|
result_t ret;
|
||||||
symbol_t address = (symbol_t)parseInt(args[argPos].c_str(), 16, 0, 0xff, &ret);
|
symbol_t address = (symbol_t)parseInt(args[argPos].c_str(), 16, 0, 0xff, &ret);
|
||||||
if (ret != RESULT_OK || !isValidAddress(address, dest) || dest == isMaster(address)) {
|
if (ret != RESULT_OK || !isValidAddress(address, dest) || (!dest && !isMaster(address))) {
|
||||||
return RESULT_ERR_INVALID_ADDR;
|
return RESULT_ERR_INVALID_ADDR; // deny send from slave address
|
||||||
}
|
}
|
||||||
if (dest) {
|
if (dest) {
|
||||||
dstAddress = address;
|
dstAddress = address;
|
||||||
|
|||||||
Reference in New Issue
Block a user