Apollo 10.0
自动驾驶开放平台
obu_interface_grpc_impl.h
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2018 The Apollo Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *****************************************************************************/
16
22#pragma once
23
24#include <condition_variable>
25#include <memory>
26#include <mutex>
27#include <thread>
28
29#include <grpc++/grpc++.h>
30
34
35namespace apollo {
36namespace v2x {
37
39 public:
42
43 /* function that init grpc server
44 */
45 bool InitialServer() override;
46
47 /* function that init grpc client
48 */
49 bool InitialClient() override;
50
51 /* function that get v2x traffic light through grpc
52 @param output return latest v2x traffic light
53 */
55 std::shared_ptr<::apollo::v2x::obu::ObuTrafficLight> *msg) override;
56
58 std::shared_ptr<::apollo::v2x::V2XObstacles> *msg) override;
59
61 std::shared_ptr<::apollo::v2x::obu::ObuRsi> *msg) override;
62
63 /* function that send car status through grpc
64 @param input send car status msg to grpc
65 */
67 const std::shared_ptr<::apollo::v2x::CarStatus> &msg) override;
68
69 /* function that return init flag
70 */
71 bool InitFlag() { return init_succ_; }
72
73 private:
74 /* thread function that run server
75 */
76 void ThreadRunServer();
77
78 std::shared_ptr<GrpcClientImpl> grpc_client_;
79 std::unique_ptr<GrpcServerImpl> grpc_server_;
80 std::unique_ptr<grpc::Server> server_;
81
82 bool cli_init_ = false;
83 bool srv_init_ = false;
84
85 bool init_succ_ = false;
86 bool exit_flag_ = false;
87 std::unique_ptr<std::thread> thread_grpc_;
88 std::mutex mutex_;
89 std::condition_variable condition_;
90};
91
92} // namespace v2x
93} // namespace apollo
void GetV2xRsiFromObu(std::shared_ptr<::apollo::v2x::obu::ObuRsi > *msg) override
void GetV2xTrafficLightFromObu(std::shared_ptr<::apollo::v2x::obu::ObuTrafficLight > *msg) override
void GetV2xObstaclesFromObu(std::shared_ptr<::apollo::v2x::V2XObstacles > *msg) override
void SendCarStatusToObu(const std::shared_ptr<::apollo::v2x::CarStatus > &msg) override
define v2x proxy module and onboard unit interface grpc implement
define v2x proxy module and onboard unit interface grpc implement
class register implement
Definition arena_queue.h:37
define v2x proxy module and onboard unit interface base class