@@ -37,6 +37,8 @@ namespace sdk {
3737using google::protobuf::RepeatedPtrField;
3838using viam::common::v1::Transform;
3939using viam::robot::v1::FrameSystemConfig;
40+ using viam::robot::v1::JobStatus;
41+ using viam::robot::v1::GetMachineStatusResponse;
4042using viam::robot::v1::Operation;
4143using viam::robot::v1::RobotService;
4244
@@ -59,6 +61,33 @@ RobotClient::frame_system_config from_proto_impl<FrameSystemConfig>::operator()(
5961 return fsconfig;
6062}
6163
64+ JobStatus from_proto_impl<viam::robot::v1::JobStatus>::operator ()(
65+ const viam::robot::v1::JobStatus* proto) const {
66+ JobStatus job_status;
67+ job_status.job_name = proto->job_name ();
68+ job_status.recent_successful_runs = sdk::impl::from_repeated_field (proto->recent_successful_runs ());
69+ job_status.recent_failed_runs = sdk::impl::from_repeated_field (proto->recent_failed_runs ());
70+ return job_status;
71+ }
72+
73+ GetMachineStatusResponse from_proto_impl<viam::robot::v1::GetMachineStatusResponse>::operator ()(
74+ const viam::robot::v1::GetMachineStatusResponse* proto) const {
75+ MachineStatus machine_status;
76+ switch (proto->state ()) {
77+ case robot::v1::GetMachineStatusResponse_State_STATE_INITIALIZING:
78+ machine_status.state = RobotClient::status::k_initializing;
79+ break ;
80+ case robot::v1::GetMachineStatusResponse_State_STATE_RUNNING:
81+ machine_status.state = RobotClient::status::k_running;
82+ break ;
83+ case robot::v1::GetMachineStatusResponse_State_STATE_UNSPECIFIED:
84+ default :
85+ machine_status.state = RobotClient::status::k_unspecified;
86+ }
87+ machine_status.job_statuses = sdk::impl::from_repeated_field (proto->job_statuses ());
88+ return machine_status;
89+ }
90+
6291RobotClient::operation from_proto_impl<Operation>::operator ()(const Operation* proto) const {
6392 RobotClient::operation op;
6493 op.id = proto->id ();
@@ -83,6 +112,16 @@ bool operator==(const RobotClient::frame_system_config& lhs,
83112 to_proto (rhs.kinematics ).SerializeAsString ();
84113}
85114
115+ bool operator ==(const JobStatus& lhs, const JobStatus& rhs) {
116+ return lhs.job_name == rhs.job_name &&
117+ lhs.recent_successful_runs == rhs.recent_successful_runs &&
118+ lhs.recent_failed_runs == rhs.recent_failed_runs ;
119+ }
120+
121+ bool operator ==(const MachineStatus& lhs, const MachineStatus& rhs) {
122+ return lhs.state == rhs.state && lhs.job_statuses == rhs.job_statuses ;
123+ }
124+
86125bool operator ==(const RobotClient::operation& lhs, const RobotClient::operation& rhs) {
87126 return lhs.id == rhs.id && lhs.method == rhs.method && lhs.session_id == rhs.session_id &&
88127 lhs.arguments == rhs.arguments && lhs.started == rhs.started ;
@@ -444,17 +483,7 @@ std::ostream& operator<<(std::ostream& os, const RobotClient::status& v) {
444483
445484RobotClient::status RobotClient::get_machine_status () const {
446485 return impl::client_helper (impl_, &RobotService::Stub::GetMachineStatus)
447- .invoke ([](const auto & resp) {
448- switch (resp.state ()) {
449- case robot::v1::GetMachineStatusResponse_State_STATE_INITIALIZING:
450- return RobotClient::status::k_initializing;
451- case robot::v1::GetMachineStatusResponse_State_STATE_RUNNING:
452- return RobotClient::status::k_running;
453- case robot::v1::GetMachineStatusResponse_State_STATE_UNSPECIFIED:
454- default :
455- return RobotClient::status::k_unspecified;
456- }
457- });
486+ .invoke ([](const auto & resp) { return from_proto (resp); });
458487}
459488
460489} // namespace sdk
0 commit comments