Add broadcast state (for temperature sensor)
This commit is contained in:
parent
2134d64c80
commit
2d83c0296b
@ -210,10 +210,27 @@ void NetworkSync::PublishClient() {
|
||||
#endif
|
||||
}
|
||||
|
||||
void NetworkSync::BroadcastState(Sensor* sensor) {
|
||||
unsigned char ix = 0;
|
||||
buffer[ix++] = StateMsg;
|
||||
buffer[ix++] = sensor->type;
|
||||
float* value = (float*)sensor->GetValue();
|
||||
SendFloat16(buffer, &ix, *value);
|
||||
SendBuffer(ix);
|
||||
}
|
||||
|
||||
void NetworkSync::BroadcastPerception(Roboid *roboid) {
|
||||
if (roboid->perception == nullptr)
|
||||
Perception* perception = roboid->perception;
|
||||
if (perception == nullptr)
|
||||
return;
|
||||
|
||||
|
||||
for (int sensorIx = 0; sensorIx < perception->sensorCount; sensorIx++) {
|
||||
Sensor* sensor = perception->sensors[sensorIx];
|
||||
if (sensor == nullptr)
|
||||
continue;
|
||||
// sensor->BroadcastState();
|
||||
BroadcastState(sensor);
|
||||
}
|
||||
PublishTrackedObjects(roboid, roboid->perception->GetTrackedObjects());
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@ namespace RoboidControl {
|
||||
/// @brief Interface for synchronizaing state between clients across a network
|
||||
class NetworkSync {
|
||||
public:
|
||||
NetworkSync() {};
|
||||
NetworkSync(Roboid* roboid);
|
||||
|
||||
unsigned char networkId;
|
||||
@ -29,6 +30,7 @@ class NetworkSync {
|
||||
static const unsigned char PoseMsg = 0x10;
|
||||
static const unsigned char PoseTypeMsg = 0x11;
|
||||
static const unsigned char RelativePoseMsg = 0x12;
|
||||
static const unsigned char StateMsg = 0x18;
|
||||
/// @brief A bit pattern for the pose, stating that this message contains a
|
||||
/// position in world coordinates
|
||||
static const unsigned char Pose_Position = 0x01;
|
||||
@ -82,6 +84,8 @@ class NetworkSync {
|
||||
Roboid* roboid;
|
||||
NetworkPerception* networkPerception;
|
||||
|
||||
void BroadcastState(Sensor* sensor);
|
||||
|
||||
void PublishTrackedObject(Roboid* roboid, InterestingThing* object);
|
||||
void PublishRelativeObject(Buffer sendBuffer,
|
||||
UInt8 parentId,
|
||||
|
10
Sensor.h
10
Sensor.h
@ -10,10 +10,18 @@ class Sensor : public Thing {
|
||||
public:
|
||||
/// @brief Default Constructor for a Sensor
|
||||
Sensor();
|
||||
|
||||
|
||||
/// @brief Sets the parent Thing
|
||||
/// @param parent The Thing which should become the parent
|
||||
virtual void SetParent(Thing *parent) override;
|
||||
|
||||
virtual void BroadcastState() {};
|
||||
|
||||
enum SensorType {
|
||||
Unknown = 0,
|
||||
Temperature = 1,
|
||||
};
|
||||
virtual void* GetValue() { return nullptr; };
|
||||
};
|
||||
|
||||
} // namespace RoboidControl
|
||||
|
15
TemperatureSensor.cpp
Normal file
15
TemperatureSensor.cpp
Normal file
@ -0,0 +1,15 @@
|
||||
#include "TemperatureSensor.h"
|
||||
|
||||
TemperatureSensor::TemperatureSensor()
|
||||
{
|
||||
this->type = (unsigned int) SensorType::Temperature;
|
||||
}
|
||||
|
||||
float TemperatureSensor::InCelsius()
|
||||
{
|
||||
return this->temperature;
|
||||
}
|
||||
|
||||
void* TemperatureSensor::GetValue() {
|
||||
return &this->temperature;
|
||||
}
|
19
TemperatureSensor.h
Normal file
19
TemperatureSensor.h
Normal file
@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include "Sensor.h"
|
||||
#include "NetworkSync.h"
|
||||
|
||||
namespace Passer::RoboidControl
|
||||
{
|
||||
class TemperatureSensor : public Sensor {
|
||||
public:
|
||||
TemperatureSensor();
|
||||
|
||||
float InCelsius();
|
||||
virtual void* GetValue() override;
|
||||
// virtual void BroadcastState() override;
|
||||
protected:
|
||||
float temperature = 0; // in Celsius
|
||||
};
|
||||
} // namespace Passer::RoboidControl
|
||||
using namespace Passer::RoboidControl;
|
Loading…
x
Reference in New Issue
Block a user