32 namespace dispatch_model {
48 template<
typename Storage,
typename Overflow = overflow::reject_newest>
51 template<
typename DispatchModel,
52 typename QueueOrStorage,
53 typename Scheduler = void,
55 typename Transport =
void>
58 template<
typename DispatchModel>
60 std::same_as<DispatchModel, dispatch_model::direct> ||
61 std::same_as<DispatchModel, dispatch_model::queued> ||
62 std::same_as<DispatchModel, dispatch_model::per_region_queued>;
64 template<
typename Overflow>
66 std::same_as<Overflow, overflow::drop_oldest> ||
67 std::same_as<Overflow, overflow::overwrite_latest>;
97 struct external_executor;
101 using ::tsm::dispatch_context;
113 template<
typename Queue,
typename Event>
116 typename Queue::value_type;
117 requires std::same_as<typename Queue::value_type, Event>;
120 } -> std::convertible_to<bool>;
123 } -> std::convertible_to<bool>;
126 } -> std::convertible_to<bool>;
129 } -> std::convertible_to<bool>;
132 } -> std::convertible_to<bool>;
135 } -> std::convertible_to<std::size_t>;
138 template<
typename Storage,
typename Event>
143 &&queue_storage<typename Storage::template queue<Event>, Event>;
145 template<
typename Policy>
148 typename Policy::storage;
149 typename Policy::overflow;
151 &&::tsm::overflow_policy<typename Policy::overflow>;
153 template<
typename Sink,
typename Event>
157 sink.send_event(event)
158 } -> std::convertible_to<bool>;
161 template<
typename Source,
typename Event>
165 source.try_receive(event)
166 } -> std::convertible_to<bool>;
169 template<
typename Runtime>
174 } -> std::convertible_to<bool>;
177 } -> std::convertible_to<std::size_t>;
180 } -> std::convertible_to<bool>;
182 runtime.pending_events()
183 } -> std::convertible_to<std::size_t>;
185 runtime.last_event_handled()
186 } -> std::convertible_to<bool>;
196 template<
typename Executor>
201 } -> std::convertible_to<bool>;
204 } -> std::convertible_to<std::size_t>;
214 template<
typename Executor>
219 executor.wake_from_isr();
220 executor.wait_for_work();
223 template<
typename Policy>
226 typename Policy::dispatch_model;
227 typename Policy::queue;
229 &&::tsm::dispatch_model_policy<typename Policy::dispatch_model>&&
230 runtime_queue_policy<typename Policy::queue>;
Definition: static_ring.h:190
bool try_pop(T &value)
Definition: static_ring.h:213
std::size_t size() const
Definition: static_ring.h:226
bool full() const
Definition: static_ring.h:222
bool empty() const
Definition: static_ring.h:218
bool try_push(T const &value)
Definition: static_ring.h:203
requires(!has_transition_type_c< T > &&has_transition_member_c< T >) struct transitions_of< T >
Definition: transition.h:479
Definition: concepts.h:40
::tsm::overflow::reject_newest reject_newest
Definition: concepts.h:87
::tsm::overflow::drop_oldest drop_oldest
Definition: concepts.h:88
::tsm::overflow::overwrite_latest overwrite_latest
Definition: concepts.h:89
concept caller_driven_runtime
Definition: concepts.h:170
detail::runtime_impl< Definition, Policy, MachinePolicy > Runtime
Definition: runtime.h:531
concept queue_storage_policy
Definition: concepts.h:139
concept event_sink
Definition: concepts.h:154
concept event_source
Definition: concepts.h:162
concept queue_storage
Definition: concepts.h:114
concept runtime_queue_policy
Definition: concepts.h:146
concept wake_executor_backend
Definition: concepts.h:215
concept executor_backend
Definition: concepts.h:197
Definition: bare_metal.h:20
concept dispatch_model_policy
Definition: concepts.h:59
std::chrono::duration< tick_rep, tick_period > tick_duration
Chrono duration type used for semantic scheduler ticks.
Definition: ticks.h:50
concept overflow_policy
Definition: concepts.h:65
Definition: concepts.h:70
tsm::tick_duration tick
Definition: concepts.h:71
std::uint32_t sequence
Definition: concepts.h:72
Target-neutral tick value type.