refactor shared
This commit is contained in:
57
BasaltPresenter/Presenter/cmd_client.hpp
Normal file
57
BasaltPresenter/Presenter/cmd_client.hpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#pragma once
|
||||
#include <basalt/pipe_operator.hpp>
|
||||
#include <cstdint>
|
||||
|
||||
namespace basalt::presenter::cmd_client {
|
||||
|
||||
// Protocol codes
|
||||
enum class ProtocolCode : std::uint8_t {
|
||||
HANDSHAKE_REQUEST = 0x61, ///< Trainer -> Presenter
|
||||
HANDSHAKE_RESPONSE = 0x62, ///< Presenter -> Trainer
|
||||
DATA_READY = 0x01, ///< Presenter -> Trainer
|
||||
DATA_RECEIVED = 0x02, ///< Trainer -> Presenter
|
||||
ACTIVELY_STOP = 0x21, ///< Presenter-->Trainer
|
||||
STOP_REQUEST = 0X71, ///< Presenter<--Trainer
|
||||
STOP_RESPONSE = 0x72, //< Presenter-->Trainer
|
||||
};
|
||||
|
||||
// Pixel kind values
|
||||
enum class PixelKind : std::uint8_t {
|
||||
GRAY_FLOAT32 = 0x01, ///< Grayscale represented by one float32
|
||||
GRAY_U8 = 0x02, ///< Grayscale represented by one u8
|
||||
RGB_FLOAT32 = 0x03, ///< RGB represented by three float32
|
||||
RGB_U8 = 0x04 ///< RGB represented by three u8
|
||||
};
|
||||
|
||||
#pragma pack(push, 1)
|
||||
struct HandshakePayload {
|
||||
PixelKind pixel_kind;
|
||||
std::uint32_t width;
|
||||
std::uint32_t height;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
// Status
|
||||
enum class ClientStatus {
|
||||
Ready,
|
||||
Running,
|
||||
Stop,
|
||||
};
|
||||
|
||||
class CommandClient {
|
||||
public:
|
||||
CommandClient();
|
||||
~CommandClient();
|
||||
|
||||
public:
|
||||
// Wait for handshake from Trainer, send response with data properties
|
||||
HandshakePayload WaitHandshake();
|
||||
// Tick function called every frame to send data ready and wait for response
|
||||
bool Tick(bool actively_stop = false);
|
||||
|
||||
private:
|
||||
Shared::PipeOperator m_PipeOperator;
|
||||
ClientStatus m_Status;
|
||||
};
|
||||
|
||||
} // namespace Basalt::Presenter
|
||||
Reference in New Issue
Block a user