Apollo  6.0
Open source self driving car software
trigger_base.h
Go to the documentation of this file.
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 
26 namespace apollo {
27 namespace data {
28 
33 class TriggerBase {
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
std::string trigger_name_
Definition: trigger_base.h:59
Basic data struct of record message.
Definition: record_message.h:34
uint64_t GetValidValueInRange(const double desired_value, const double min_limit, const double max_limit) const
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
virtual bool ShouldRestore(const cyber::record::RecordMessage &msg) const =0
virtual ~TriggerBase()=default
Base class of triggers that defines interfaces.
Definition: trigger_base.h:33
virtual void Pull(const cyber::record::RecordMessage &msg)=0
const std::string & GetTriggerName() const
Definition: trigger_base.h:47
uint64_t SecondsToNanoSeconds(const double seconds) const
std::unique_ptr< Trigger > trigger_obj_
Definition: trigger_base.h:60
virtual bool Init(const SmartRecordTrigger &trigger_conf)
void TriggerIt(const uint64_t msg_time) const