master.h
Go to the documentation of this file.
1 /*********************************************************************
2  *
3  * Software License Agreement
4  *
5  * Copyright (c) 2020,
6  * TU Dortmund - Institute of Control Theory and Systems Engineering.
7  * All rights reserved.
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program. If not, see <https://www.gnu.org/licenses/>.
21  *
22  * Authors: Christoph Rösmann
23  *********************************************************************/
24 
25 #ifndef SRC_MASTER_INCLUDE_CORBO_MASTER_MASTER_H_
26 #define SRC_MASTER_INCLUDE_CORBO_MASTER_MASTER_H_
27 
28 #include <corbo-communication/messages/corbo_parameters.pb.h>
29 #include <corbo-communication/services/master_service.grpc.pb.h>
31 #include <corbo-core/console.h>
39 
40 #include <grpc++/grpc++.h>
41 
42 #include <iostream>
43 #include <memory>
44 #include <string>
45 
46 namespace corbo {
47 
64 class Master : public services::MasterService::Service
65 {
66  public:
68  Master() {}
69 
80  void start(const std::string& server_address, bool blocking = true);
81 
83  void setDefault();
84 
85  bool loadFromFile(const std::string& filename);
86 
87  bool setcorboMessage(const corbo::messages::corboParameters& msg, std::stringstream* issues);
88 
89  bool setPlant(const messages::Plant& msg, std::stringstream* issues = nullptr);
90  bool setController(const corbo::messages::Controller& msg, std::stringstream* issues = nullptr);
91  bool setObserver(const corbo::messages::Observer& msg, std::stringstream* issues = nullptr);
92  bool setTask(const corbo::messages::Task& msg, std::stringstream* issues = nullptr);
93 
94  protected:
96  grpc::Status setPlant(grpc::ServerContext* context, const corbo::messages::Plant* request, corbo::messages::Status* response) override;
98  grpc::Status getPlant(grpc::ServerContext* context, const corbo::messages::Void* request, corbo::messages::Plant* response) override;
99 
101  grpc::Status setController(grpc::ServerContext* context, const corbo::messages::Controller* request, corbo::messages::Status* response) override;
103  grpc::Status getController(grpc::ServerContext* context, const corbo::messages::Void* request, corbo::messages::Controller* response) override;
104 
106  grpc::Status setObserver(grpc::ServerContext* context, const corbo::messages::Observer* request, corbo::messages::Status* response) override;
108  grpc::Status getObserver(grpc::ServerContext* context, const corbo::messages::Void* request, corbo::messages::Observer* response) override;
109 
111  grpc::Status setTask(grpc::ServerContext* context, const corbo::messages::Task* request, corbo::messages::Status* response) override;
113  grpc::Status getTask(grpc::ServerContext* context, const corbo::messages::Void* request, corbo::messages::Task* response) override;
114 
116  grpc::Status getAvailableSignals(grpc::ServerContext* context, const corbo::messages::Void* request,
117  grpc::ServerWriter<corbo::messages::Signal>* response_stream) override;
118 
120  grpc::Status performTask(grpc::ServerContext* context, const corbo::messages::Void* request,
121  grpc::ServerWriter<corbo::messages::Signal>* response_stream) override;
122 
124  grpc::Status verifyConfig(grpc::ServerContext* context, const corbo::messages::Void* request, corbo::messages::Status* response) override;
125 
127  grpc::Status ping(grpc::ServerContext* context, const corbo::messages::Void* request, corbo::messages::Status* response) override;
129  grpc::Status stop(grpc::ServerContext* context, const corbo::messages::Void* request, corbo::messages::Void* response) override;
130 
131  private:
134 
135  std::unique_ptr<grpc::Server> _server;
136 };
137 
138 } // namespace corbo
139 
140 #endif // SRC_MASTER_INCLUDE_CORBO_MASTER_MASTER_H_
corbo::Master::_server
std::unique_ptr< grpc::Server > _server
Definition: master.h:179
corbo::Master::_task
TaskInterface::Ptr _task
Definition: master.h:177
corbo::Master::loadFromFile
bool loadFromFile(const std::string &filename)
Definition: master.cpp:107
corbo::TaskInterface::Ptr
std::shared_ptr< TaskInterface > Ptr
Definition: task_interface.h:107
corbo
Definition: communication/include/corbo-communication/utilities.h:37
corbo_observers.h
corbo::Environment
Standard environment for control tasks.
Definition: environment.h:71
corbo::Master::_environment
Environment _environment
Definition: master.h:176
corbo_tasks.h
corbo::Master::ping
grpc::Status ping(grpc::ServerContext *context, const corbo::messages::Void *request, corbo::messages::Status *response) override
Send and receive dummy message in order to check the connectivity between master and client.
Definition: master.cpp:418
corbo::Master::getTask
grpc::Status getTask(grpc::ServerContext *context, const corbo::messages::Void *request, corbo::messages::Task *response) override
Get current task configuration.
Definition: master.cpp:366
corbo::Master::getPlant
grpc::Status getPlant(grpc::ServerContext *context, const corbo::messages::Void *request, corbo::messages::Plant *response) override
Get current plant configuration.
Definition: master.cpp:300
console.h
corbo_optimization.h
corbo::Master::getController
grpc::Status getController(grpc::ServerContext *context, const corbo::messages::Void *request, corbo::messages::Controller *response) override
Get current controller configuration.
Definition: master.cpp:322
corbo_systems.h
corbo::Master::verifyConfig
grpc::Status verifyConfig(grpc::ServerContext *context, const corbo::messages::Void *request, corbo::messages::Status *response) override
Check if the current configuration seems to be valid (refer to TaskInterface::verify())
Definition: master.cpp:403
corbo::Master::setTask
bool setTask(const corbo::messages::Task &msg, std::stringstream *issues=nullptr)
corbo::Master::setcorboMessage
bool setcorboMessage(const corbo::messages::corboParameters &msg, std::stringstream *issues)
Definition: master.cpp:135
relicense.filename
filename
Definition: relicense.py:57
corbo::Master::start
void start(const std::string &server_address, bool blocking=true)
Start master server (blocking call)
Definition: master.cpp:59
Eigen::LevenbergMarquardtSpace::Status
Status
Definition: LevenbergMarquardt/LevenbergMarquardt.h:25
corbo_optimal_control.h
corbo::Master::setPlant
bool setPlant(const messages::Plant &msg, std::stringstream *issues=nullptr)
Definition: master.cpp:152
corbo_numerics.h
corbo::Master::stop
grpc::Status stop(grpc::ServerContext *context, const corbo::messages::Void *request, corbo::messages::Void *response) override
Execution stop of the current task requested (setting global ok() variable to false,...
Definition: master.cpp:425
corbo::Master::setObserver
bool setObserver(const corbo::messages::Observer &msg, std::stringstream *issues=nullptr)
corbo::Master::setDefault
void setDefault()
Restore default master settings.
Definition: master.cpp:83
corbo_controllers.h
corbo::Master::getAvailableSignals
grpc::Status getAvailableSignals(grpc::ServerContext *context, const corbo::messages::Void *request, grpc::ServerWriter< corbo::messages::Signal > *response_stream) override
Retrieve available signals from task (and included modules)
Definition: master.cpp:373
corbo_plants.h
corbo::Master::performTask
grpc::Status performTask(grpc::ServerContext *context, const corbo::messages::Void *request, grpc::ServerWriter< corbo::messages::Signal > *response_stream) override
Perform the current task and broadcast stream of signals.
Definition: master.cpp:384
corbo::Master::setController
bool setController(const corbo::messages::Controller &msg, std::stringstream *issues=nullptr)
corbo::Master::Master
Master()
Default constructor.
Definition: master.h:112
corbo::Master::getObserver
grpc::Status getObserver(grpc::ServerContext *context, const corbo::messages::Void *request, corbo::messages::Observer *response) override
Get current observer configuration.
Definition: master.cpp:344


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:05:55