Apollo 10.0
自动驾驶开放平台
trigger_base.h
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2019 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
17#pragma once
18
19#include <memory>
20#include <string>
21#include <unordered_map>
22
24#include "modules/data/tools/smart_recorder/proto/smart_recorder_triggers.pb.h"
25
26namespace apollo {
27namespace data {
28
34 public:
35 TriggerBase() = default;
36
37 // Init the trigger using configuration
38 virtual bool Init(const SmartRecordTrigger& trigger_conf);
39
40 // Decide if the current trigger needs to be caught by input message,
41 // and if yes record the time interval
42 virtual void Pull(const cyber::record::RecordMessage& msg) = 0;
43
44 // Decide if the current message needs to be restored
45 virtual bool ShouldRestore(const cyber::record::RecordMessage& msg) const = 0;
46
47 const std::string& GetTriggerName() const { return trigger_name_; }
48
49 uint64_t SecondsToNanoSeconds(const double seconds) const;
50
51 virtual ~TriggerBase() = default;
52
53 protected:
54 void TriggerIt(const uint64_t msg_time) const;
55 uint64_t GetValidValueInRange(const double desired_value,
56 const double min_limit,
57 const double max_limit) const;
58
59 std::string trigger_name_;
60 std::unique_ptr<Trigger> trigger_obj_ = nullptr;
61
62 private:
63 void LockTrigger(const SmartRecordTrigger& trigger_conf);
64};
65
66} // namespace data
67} // namespace apollo
Base class of triggers that defines interfaces
virtual bool ShouldRestore(const cyber::record::RecordMessage &msg) const =0
uint64_t GetValidValueInRange(const double desired_value, const double min_limit, const double max_limit) const
uint64_t SecondsToNanoSeconds(const double seconds) const
const std::string & GetTriggerName() const
std::unique_ptr< Trigger > trigger_obj_
virtual bool Init(const SmartRecordTrigger &trigger_conf)
virtual void Pull(const cyber::record::RecordMessage &msg)=0
void TriggerIt(const uint64_t msg_time) const
virtual ~TriggerBase()=default
class register implement
Definition arena_queue.h:37
Basic data struct of record message.