Risolto problema in libURcom
package lenght mismatch per il pacchetto tipo 8 AdditionalInfo, aggiunto uchar foo alla fine per far sparire l'errore.. chi sa perchè?
This commit is contained in:
@@ -5,7 +5,7 @@ RoboGlue_COM::RoboGlue_COM (RoboGlue_SHARED *mem): m(mem) {
|
|||||||
//////// SETUP LOGGER //////////
|
//////// SETUP LOGGER //////////
|
||||||
liblog = spdlog::stdout_logger_mt("URcom_liblog");
|
liblog = spdlog::stdout_logger_mt("URcom_liblog");
|
||||||
modlog = spdlog::stdout_logger_mt("RoboGlue_comlog");
|
modlog = spdlog::stdout_logger_mt("RoboGlue_comlog");
|
||||||
liblog->set_level(spdlog::level::info);
|
liblog->set_level(spdlog::level::debug);
|
||||||
modlog->set_level(spdlog::level::debug);
|
modlog->set_level(spdlog::level::debug);
|
||||||
|
|
||||||
///////// INITIALIZE TCP SERVER ///////////
|
///////// INITIALIZE TCP SERVER ///////////
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ bool UR_CLinterface::connect(const char* ip, uint16_t port) {
|
|||||||
try {
|
try {
|
||||||
rsocket->connect(
|
rsocket->connect(
|
||||||
tcp::endpoint(boost::asio::ip::address::from_string(ip), port));
|
tcp::endpoint(boost::asio::ip::address::from_string(ip), port));
|
||||||
if ((bool) rsocket->is_open()) {
|
if (static_cast<bool>(rsocket->is_open())) {
|
||||||
log->info("Connected to {0} on port {1}", ip, port);
|
log->info("Connected to {0} on port {1}", ip, port);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -75,7 +75,7 @@ void UR_CLinterface::sendCommand(std::string command) {
|
|||||||
char* dataOut=NULL;
|
char* dataOut=NULL;
|
||||||
if (rsocket->is_open()){
|
if (rsocket->is_open()){
|
||||||
command = command + '\n';
|
command = command + '\n';
|
||||||
dataOut = (char*)malloc(command.size());
|
dataOut = static_cast<char*>(malloc(command.size()));
|
||||||
strncpy(dataOut, command.c_str(), command.size());
|
strncpy(dataOut, command.c_str(), command.size());
|
||||||
log->debug("Sending: {}, s:{}",dataOut,command.size());
|
log->debug("Sending: {}, s:{}",dataOut,command.size());
|
||||||
boost::asio::write(*rsocket, boost::asio::buffer(dataOut, command.size()), error);
|
boost::asio::write(*rsocket, boost::asio::buffer(dataOut, command.size()), error);
|
||||||
@@ -106,7 +106,7 @@ void UR_CLinterface::parseData(void){
|
|||||||
subP = new versionSub(lastData, &clientData);
|
subP = new versionSub(lastData, &clientData);
|
||||||
subP->parse();
|
subP->parse();
|
||||||
firstMessage=false;
|
firstMessage=false;
|
||||||
long t=(long)clientData.versonMessage.timestamp;
|
long t=static_cast<long>(clientData.versonMessage.timestamp);
|
||||||
std::string timestr=std::string(asctime(gmtime(&t)));
|
std::string timestr=std::string(asctime(gmtime(&t)));
|
||||||
timestr.pop_back();
|
timestr.pop_back();
|
||||||
log->info("Connection Time: {}", timestr);
|
log->info("Connection Time: {}", timestr);
|
||||||
@@ -185,7 +185,7 @@ void UR_CLinterface::parseData(void){
|
|||||||
subP = new toolModeSub(&lastData[currIndex], &clientData);
|
subP = new toolModeSub(&lastData[currIndex], &clientData);
|
||||||
break;
|
break;
|
||||||
case SAFETY_DATA:
|
case SAFETY_DATA:
|
||||||
//not yet implemented
|
//TODO: not yet implemented
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
log->error("Unknown Subpackage: {}", subPackageType);
|
log->error("Unknown Subpackage: {}", subPackageType);
|
||||||
@@ -194,7 +194,7 @@ void UR_CLinterface::parseData(void){
|
|||||||
if (subP != NULL) subP->parse();
|
if (subP != NULL) subP->parse();
|
||||||
currIndex+=subPackageSize;
|
currIndex+=subPackageSize;
|
||||||
} catch (long sizediff){
|
} catch (long sizediff){
|
||||||
log->error("Package Length Mismatch: {}",sizediff);
|
log->error("Package Length Mismatch: type_{:d}, diff_{:d}",subPackageType,sizediff);
|
||||||
currIndex+=subPackageSize;
|
currIndex+=subPackageSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -225,7 +225,7 @@ void UR_CLinterface::readData(void) {
|
|||||||
// all number are represented in network byte order, conversion required
|
// all number are represented in network byte order, conversion required
|
||||||
packlen = ntohl(packlen);
|
packlen = ntohl(packlen);
|
||||||
// allocate memory for incoming package
|
// allocate memory for incoming package
|
||||||
lastData = (unsigned char*)malloc(packlen);
|
lastData = static_cast<unsigned char*>(malloc(packlen));
|
||||||
// blocking read of exactly packlen bytes
|
// blocking read of exactly packlen bytes
|
||||||
readata += boost::asio::read(*rsocket, receive_buffer,boost::asio::transfer_exactly(packlen), error);
|
readata += boost::asio::read(*rsocket, receive_buffer,boost::asio::transfer_exactly(packlen), error);
|
||||||
//retreive all data from buffer
|
//retreive all data from buffer
|
||||||
|
|||||||
@@ -366,6 +366,7 @@ namespace subpackage {
|
|||||||
v->feedriveButtonPressed = this->getUChar(&dataIn);
|
v->feedriveButtonPressed = this->getUChar(&dataIn);
|
||||||
v->feedriveButtonEnabled = this->getUChar(&dataIn);
|
v->feedriveButtonEnabled = this->getUChar(&dataIn);
|
||||||
v->ioEnableFeedrive = this->getUChar(&dataIn);
|
v->ioEnableFeedrive = this->getUChar(&dataIn);
|
||||||
|
v->foo = this->getUChar(&dataIn);
|
||||||
|
|
||||||
// check if read data is aligned with package size
|
// check if read data is aligned with package size
|
||||||
if (dataIn-begin != size) throw dataIn-begin-size;
|
if (dataIn-begin != size) throw dataIn-begin-size;
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace subpackage {
|
|||||||
robotModeSub(unsigned char* din, clientData_t* dout) {
|
robotModeSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~robotModeSub();
|
virtual ~robotModeSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -51,7 +51,7 @@ namespace subpackage {
|
|||||||
jointDataSub(unsigned char* din, clientData_t* dout) {
|
jointDataSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~jointDataSub();
|
virtual ~jointDataSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -62,7 +62,7 @@ namespace subpackage {
|
|||||||
cartesianInfoSub(unsigned char* din, clientData_t* dout) {
|
cartesianInfoSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~cartesianInfoSub();
|
virtual ~cartesianInfoSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -73,7 +73,7 @@ namespace subpackage {
|
|||||||
masterBoardSub(unsigned char* din, clientData_t* dout) {
|
masterBoardSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~masterBoardSub();
|
virtual ~masterBoardSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -84,7 +84,7 @@ namespace subpackage {
|
|||||||
toolDataSub(unsigned char* din, clientData_t* dout) {
|
toolDataSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~toolDataSub();
|
virtual ~toolDataSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -95,7 +95,7 @@ namespace subpackage {
|
|||||||
kineInfoSub(unsigned char* din, clientData_t* dout) {
|
kineInfoSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~kineInfoSub();
|
virtual ~kineInfoSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -106,7 +106,7 @@ namespace subpackage {
|
|||||||
configurationSub(unsigned char* din, clientData_t* dout) {
|
configurationSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~configurationSub();
|
virtual ~configurationSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -117,7 +117,7 @@ namespace subpackage {
|
|||||||
forceModeSub(unsigned char* din, clientData_t* dout) {
|
forceModeSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~forceModeSub();
|
virtual ~forceModeSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -128,7 +128,7 @@ namespace subpackage {
|
|||||||
additionalInfoSub(unsigned char* din, clientData_t* dout) {
|
additionalInfoSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~additionalInfoSub();
|
virtual ~additionalInfoSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -139,7 +139,7 @@ namespace subpackage {
|
|||||||
calibrationSub(unsigned char* din, clientData_t* dout) {
|
calibrationSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~calibrationSub();
|
virtual ~calibrationSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -150,7 +150,7 @@ namespace subpackage {
|
|||||||
toolComSub(unsigned char* din, clientData_t* dout) {
|
toolComSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~toolComSub();
|
virtual ~toolComSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -161,7 +161,7 @@ namespace subpackage {
|
|||||||
toolModeSub(unsigned char* din, clientData_t* dout) {
|
toolModeSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout;
|
dataOut=dout;
|
||||||
};
|
}
|
||||||
virtual ~toolModeSub();
|
virtual ~toolModeSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
@@ -171,7 +171,8 @@ namespace subpackage {
|
|||||||
public:
|
public:
|
||||||
versionSub(unsigned char* din, clientData_t* dout) {
|
versionSub(unsigned char* din, clientData_t* dout) {
|
||||||
dataIn=din;
|
dataIn=din;
|
||||||
dataOut=dout; };
|
dataOut=dout;
|
||||||
|
}
|
||||||
virtual ~versionSub();
|
virtual ~versionSub();
|
||||||
|
|
||||||
uint32_t parse();
|
uint32_t parse();
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ typedef struct {
|
|||||||
unsigned char feedriveButtonPressed;
|
unsigned char feedriveButtonPressed;
|
||||||
unsigned char feedriveButtonEnabled;
|
unsigned char feedriveButtonEnabled;
|
||||||
unsigned char ioEnableFeedrive;
|
unsigned char ioEnableFeedrive;
|
||||||
|
unsigned char foo;
|
||||||
} additionalInfo_t;
|
} additionalInfo_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user