#pragma once #include #include #include #include #include #include #include #include #include namespace custom { class Controller { public: explicit Controller(const std::string& networkInterface); ~Controller(); bool initialize(); bool start(); bool stop(); bool isRunning() const { return running_; } // Sport bool StandUp(); bool StandDown(); bool Sit(); bool Lie(); bool Damp(); bool RecoveryStand(); bool StopMove(); bool BalanceStand(); bool Dance1(); bool Dance2(); bool Hello(); // Obstacle bool SwitchSet(bool enable); bool SwitchGet(bool& enable); bool UseRemoteCommandFromApi(bool isRemoteCommandsFromApi); bool MoveToAbsolutePosition(float x, float y, float yaw); bool MoveToIncrementPosition(float x, float y, float yaw); private: std::unique_ptr sportClient_; std::unique_ptr obstacleClient_; std::atomic running_; std::atomic initialized_; std::string networkInterface_; }; } // namespace custom