#include "DixonBrain.h" #include #include #include DixonBrain::DixonBrain() : heart_(), state_(DixonNodeState::instance()) { std::cout << "DixonBrain initialised\n"; } DixonBrain::~DixonBrain() { stop(); std::cout << "DixonBrain destroyed\n"; } void DixonBrain::start() { if (state_.getNodeStatus() != NodeStatus::Stopped) return; state_.setNodeStatus(NodeStatus::Running); loopThread_ = std::thread(&DixonBrain::runLoop, this); std::cout << "DixonBrain started\n"; } void DixonBrain::stop() { if (state_.getNodeStatus() == NodeStatus::Stopped) return; state_.setNodeStatus(NodeStatus::Stopping); if (loopThread_.joinable()) loopThread_.join(); heart_.stop(); state_.setNodeStatus(NodeStatus::Stopped); std::cout << "DixonBrain stopped\n"; } void DixonBrain::runLoop() { while (state_.getNodeStatus() != NodeStatus::Stopped) { heart_.beat(); // TODO: main control logic std::this_thread::sleep_for(std::chrono::milliseconds(10)); } }