mars_lib  0.1.0.3dc76ee85e09
Modular and Robust Sensor-Fusion
buffer_data_type.h
Go to the documentation of this file.
1 // Copyright (C) 2021 Christian Brommer, Control of Networked Systems, University of Klagenfurt, Austria.
2 //
3 // All rights reserved.
4 //
5 // This software is licensed under the terms of the BSD-2-Clause-License with
6 // no commercial use allowed, the full terms of which are made available
7 // in the LICENSE file. No license in patents is granted.
8 //
9 // You can contact the author at <christian.brommer@ieee.org>
10 
11 #ifndef BUFFERDATATYPE_H
12 #define BUFFERDATATYPE_H
13 
14 #include <memory>
15 #include <utility>
16 
17 namespace mars
18 {
36 {
37 public:
38  BufferDataType() = default;
39 
47  BufferDataType(std::shared_ptr<void> meas)
48  {
49  set_measurement(meas);
50  }
51 
52  BufferDataType(std::shared_ptr<void> core, std::shared_ptr<void> sensor)
53  {
54  set_states(core, sensor);
55  }
56 
57  inline void set_core_state(std::shared_ptr<void> core)
58  {
59  core_state_ = core;
60  has_core_state_ = true;
61  }
62 
63  inline void set_sensor_state(std::shared_ptr<void> sensor)
64  {
65  sensor_state_ = sensor;
66  has_sensor_state_ = true;
67  }
68 
69  inline void set_states(std::shared_ptr<void> core, std::shared_ptr<void> sensor)
70  {
71  set_core_state(core);
72  set_sensor_state(sensor);
73  }
74 
75  inline void set_measurement(std::shared_ptr<void> meas)
76  {
77  measurement_ = meas;
78  }
79 
80  void ClearStates(void)
81  {
82  core_state_ = nullptr;
83  sensor_state_ = nullptr;
84  has_core_state_ = false;
85  has_sensor_state_ = false;
86  }
87 
88  inline bool HasCoreStates(void) const
89  {
90  return has_core_state_;
91  }
92 
93  inline bool HasSensorStates(void) const
94  {
95  return has_sensor_state_;
96  }
97 
98  inline bool HasStates(void) const
99  {
100  return HasCoreStates() || HasSensorStates();
101  }
102 
103  std::shared_ptr<void> core_state_{ nullptr };
104  std::shared_ptr<void> sensor_state_{ nullptr };
105  std::shared_ptr<void> measurement_{ nullptr };
106 
107 private:
108  bool has_core_state_ = { false };
109  bool has_sensor_state_ = { false };
110 };
111 } // namespace mars
112 #endif // BUFFERDATATYPE_H
The BufferDataType binds the core and sensor state in form of a shared void pointer.
Definition: buffer_data_type.h:36
bool HasCoreStates(void) const
Definition: buffer_data_type.h:88
void set_measurement(std::shared_ptr< void > meas)
Definition: buffer_data_type.h:75
std::shared_ptr< void > core_state_
Core state data.
Definition: buffer_data_type.h:103
bool HasSensorStates(void) const
Definition: buffer_data_type.h:93
void set_core_state(std::shared_ptr< void > core)
Definition: buffer_data_type.h:57
void ClearStates(void)
Definition: buffer_data_type.h:80
BufferDataType(std::shared_ptr< void > core, std::shared_ptr< void > sensor)
Definition: buffer_data_type.h:52
bool has_sensor_state_
Definition: buffer_data_type.h:109
bool HasStates(void) const
Definition: buffer_data_type.h:98
void set_states(std::shared_ptr< void > core, std::shared_ptr< void > sensor)
Definition: buffer_data_type.h:69
BufferDataType()=default
BufferDataType(std::shared_ptr< void > meas)
BufferDataType.
Definition: buffer_data_type.h:47
void set_sensor_state(std::shared_ptr< void > sensor)
Definition: buffer_data_type.h:63
std::shared_ptr< void > sensor_state_
Sensor state data.
Definition: buffer_data_type.h:104
std::shared_ptr< void > measurement_
Sensor measurement.
Definition: buffer_data_type.h:105
bool has_core_state_
Definition: buffer_data_type.h:108
Definition: buffer.h:27