Optimise sending of messages
This commit is contained in:
parent
9a2ce4dd5e
commit
c2ac149df6
@ -62,7 +62,7 @@ bool Participant::Send(IMessage* msg) {
|
||||
return true;
|
||||
|
||||
// std::cout << "send msg " << (static_cast<int>(this->buffer[0]) & 0xff)
|
||||
// << " to " << remoteParticipant->ipAddress << std::endl;
|
||||
// << " to " << this->ipAddress << std::endl;
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
Windows::ParticipantUDP* thisWindows =
|
||||
|
@ -97,7 +97,7 @@ void ParticipantUDP::Update() {
|
||||
if (this->remoteSite == nullptr)
|
||||
this->Publish(msg);
|
||||
else
|
||||
this->remoteSite->Send(msg);
|
||||
this->Send(msg);
|
||||
|
||||
delete msg;
|
||||
|
||||
@ -127,19 +127,19 @@ void ParticipantUDP::UpdateMyThings() {
|
||||
continue;
|
||||
|
||||
// std::cout << thing->name << "\n";
|
||||
if (thing->hierarchyChanged) {
|
||||
if (!(this->isIsolated || this->networkId == 0)) {
|
||||
ThingMsg* thingMsg = new ThingMsg(this->networkId, thing);
|
||||
this->remoteSite->Send(thingMsg);
|
||||
delete thingMsg;
|
||||
// if (thing->hierarchyChanged) {
|
||||
// if (!(this->isIsolated || this->networkId == 0)) {
|
||||
// ThingMsg* thingMsg = new ThingMsg(this->networkId, thing);
|
||||
// this->remoteSite->Send(thingMsg);
|
||||
// delete thingMsg;
|
||||
|
||||
if (thing->nameChanged) {
|
||||
NameMsg* nameMsg = new NameMsg(this->networkId, thing);
|
||||
this->remoteSite->Send(nameMsg);
|
||||
delete nameMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (thing->nameChanged) {
|
||||
// NameMsg* nameMsg = new NameMsg(this->networkId, thing);
|
||||
// this->remoteSite->Send(nameMsg);
|
||||
// delete nameMsg;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// std::cout << "B\n";
|
||||
// Why don't we do recursive?
|
||||
@ -149,26 +149,26 @@ void ParticipantUDP::UpdateMyThings() {
|
||||
thing->Update(false);
|
||||
|
||||
// std::cout << "C\n";
|
||||
if (!(this->isIsolated || this->networkId == 0)) {
|
||||
if (thing->terminate) {
|
||||
DestroyMsg* destroyMsg = new DestroyMsg(this->networkId, thing);
|
||||
this->remoteSite->Send(destroyMsg);
|
||||
delete destroyMsg;
|
||||
} else {
|
||||
// Send to remote site
|
||||
if (thing->nameChanged) {
|
||||
NameMsg* nameMsg = new NameMsg(this->networkId, thing);
|
||||
this->remoteSite->Send(nameMsg);
|
||||
delete nameMsg;
|
||||
}
|
||||
PoseMsg* poseMsg = new PoseMsg(this->networkId, thing);
|
||||
this->remoteSite->Send(poseMsg);
|
||||
delete poseMsg;
|
||||
BinaryMsg* binaryMsg = new BinaryMsg(this->networkId, thing);
|
||||
this->remoteSite->Send(binaryMsg);
|
||||
delete binaryMsg;
|
||||
}
|
||||
}
|
||||
// if (!(this->isIsolated || this->networkId == 0)) {
|
||||
// if (thing->terminate) {
|
||||
// DestroyMsg* destroyMsg = new DestroyMsg(this->networkId, thing);
|
||||
// this->remoteSite->Send(destroyMsg);
|
||||
// delete destroyMsg;
|
||||
// } else {
|
||||
// // Send to remote site
|
||||
// if (thing->nameChanged) {
|
||||
// NameMsg* nameMsg = new NameMsg(this->networkId, thing);
|
||||
// this->remoteSite->Send(nameMsg);
|
||||
// delete nameMsg;
|
||||
// }
|
||||
// PoseMsg* poseMsg = new PoseMsg(this->networkId, thing);
|
||||
// this->remoteSite->Send(poseMsg);
|
||||
// delete poseMsg;
|
||||
// BinaryMsg* binaryMsg = new BinaryMsg(this->networkId, thing);
|
||||
// this->remoteSite->Send(binaryMsg);
|
||||
// delete binaryMsg;
|
||||
// }
|
||||
// }
|
||||
// std::cout << "D\n";
|
||||
if (thing->terminate)
|
||||
this->Remove(thing);
|
||||
@ -230,34 +230,10 @@ void ParticipantUDP::SendThingInfo(Participant* remoteParticipant,
|
||||
delete binaryMsg;
|
||||
}
|
||||
|
||||
// bool ParticipantUDP::Send(Participant* remoteParticipant, IMessage* msg) {
|
||||
// int bufferSize = msg->Serialize(this->buffer);
|
||||
// if (bufferSize <= 0)
|
||||
// return true;
|
||||
|
||||
// // std::cout << "send msg " << (static_cast<int>(this->buffer[0]) & 0xff)
|
||||
// // << " to " << remoteParticipant->ipAddress << std::endl;
|
||||
|
||||
// #if defined(_WIN32) || defined(_WIN64)
|
||||
// Windows::ParticipantUDP* thisWindows =
|
||||
// static_cast<Windows::ParticipantUDP*>(this);
|
||||
// return thisWindows->Send(remoteParticipant, bufferSize);
|
||||
// #elif defined(__unix__) || defined(__APPLE__)
|
||||
// Posix::ParticipantUDP* thisPosix =
|
||||
// static_cast<Posix::ParticipantUDP*>(this); return
|
||||
// thisPosix->Send(remoteParticipant, bufferSize);
|
||||
// #elif defined(ARDUINO)
|
||||
// Arduino::ParticipantUDP* thisArduino =
|
||||
// static_cast<Arduino::ParticipantUDP*>(this);
|
||||
// return thisArduino->Send(remoteParticipant, bufferSize);
|
||||
// #elif defined(IDF_VER)
|
||||
// EspIdf::ParticipantUDP* thisEspIdf =
|
||||
// static_cast<EspIdf::ParticipantUDP*>(this);
|
||||
// return thisEspIdf->Send(remoteParticipant, bufferSize);
|
||||
// #else
|
||||
// return false;
|
||||
// #endif
|
||||
// }
|
||||
bool ParticipantUDP::Send(IMessage* msg) {
|
||||
if (this->remoteSite != nullptr)
|
||||
this->remoteSite->Send(msg);
|
||||
}
|
||||
|
||||
void ParticipantUDP::PublishThingInfo(Thing* thing) {
|
||||
// std::cout << "Publish thing info" << thing->networkId << "\n";
|
||||
|
@ -77,7 +77,6 @@ public:
|
||||
long publishInterval = 3000; // 3 seconds
|
||||
|
||||
protected:
|
||||
char buffer[1024];
|
||||
|
||||
#if !defined(ARDUINO)
|
||||
#if defined(__unix__) || defined(__APPLE__)
|
||||
@ -114,7 +113,7 @@ public:
|
||||
void SendThingInfo(Participant* remoteParticipant, Thing* thing);
|
||||
void PublishThingInfo(Thing* thing);
|
||||
|
||||
//bool Send(Participant* remoteParticipant, IMessage* msg);
|
||||
virtual bool Send(IMessage* msg) override;
|
||||
bool Publish(IMessage* msg);
|
||||
|
||||
#pragma endregion Send
|
||||
|
@ -39,8 +39,8 @@ void ControlledMotor::Update(bool recurse) {
|
||||
this->lastError = error;
|
||||
|
||||
float output = p_term + i_term + d_term;
|
||||
std::cout << "target " << this->targetVelocity << " actual "
|
||||
<< this->actualVelocity << " output = " << output << std::endl;
|
||||
// std::cout << "target " << this->targetVelocity << " actual "
|
||||
// << this->actualVelocity << " output = " << output << std::endl;
|
||||
// float acceleration =
|
||||
// error * timeStep * pidP; // Just P is used at this moment
|
||||
// std::cout << "motor acc. " << acceleration << std::endl;
|
||||
|
@ -1,5 +1,8 @@
|
||||
#include "Motor.h"
|
||||
|
||||
#include "Messages/BinaryMsg.h"
|
||||
#include "Participant.h"
|
||||
|
||||
namespace RoboidControl {
|
||||
|
||||
Motor::Motor(Thing* parent) : Thing(parent) {
|
||||
@ -7,7 +10,20 @@ Motor::Motor(Thing* parent) : Thing(parent) {
|
||||
}
|
||||
|
||||
void Motor::SetTargetVelocity(float targetSpeed) {
|
||||
if (targetSpeed != this->targetVelocity) {
|
||||
this->targetVelocity = targetSpeed;
|
||||
|
||||
if (this->owner->networkId != 0) {
|
||||
// in other word: if we are connected...
|
||||
BinaryMsg* binaryMsg = new BinaryMsg(this->owner->networkId, this);
|
||||
this->owner->Send(binaryMsg);
|
||||
delete binaryMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
float Motor::GetTargetVelocity() {
|
||||
return this->targetVelocity;
|
||||
}
|
||||
|
||||
int Motor::GenerateBinary(char* data, unsigned char* ix) {
|
||||
|
@ -14,11 +14,11 @@ class Motor : public Thing {
|
||||
Direction direction;
|
||||
|
||||
virtual void SetTargetVelocity(float velocity); // -1..0..1
|
||||
virtual float GetTargetVelocity();
|
||||
|
||||
int GenerateBinary(char* bytes, unsigned char* ix) override;
|
||||
// virtual void ProcessBinary(char* bytes) override;
|
||||
|
||||
//protected:
|
||||
protected:
|
||||
float targetVelocity = 0;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user