18 #include <type_traits>
25 enum class level : unsigned char
66 template<
typename Awaitable>
71 } -> std::convertible_to<bool>;
75 template<
typename Pin>
80 } -> std::same_as<level>;
83 template<
typename Pin>
88 } -> std::convertible_to<bus_status>;
91 template<
typename Pin>
94 template<
typename Pin>
97 template<
typename Pin>
105 template<
typename Converter>
110 } -> std::same_as<adc_sample>;
113 template<
typename Converter>
121 template<
typename Bus>
123 std::span<std::byte> rx,
124 std::span<std::byte const> tx)
128 } -> std::convertible_to<bus_status>;
131 } -> std::convertible_to<bus_status>;
134 template<
typename Bus>
136 requires(Bus bus, std::span<std::byte> rx, std::span<std::byte const> tx)
146 template<
typename Bus>
148 std::span<std::byte const> tx,
149 std::span<std::byte> rx)
153 } -> std::convertible_to<bus_status>;
156 template<
typename Bus>
158 requires(Bus bus, std::span<std::byte const> tx, std::span<std::byte> rx)
161 bus.transfer_async(tx, rx)
165 template<
typename Bus>
167 std::uint16_t address,
168 std::span<std::byte const> tx,
169 std::span<std::byte> rx)
172 bus.write(address, tx)
173 } -> std::convertible_to<bus_status>;
175 bus.read(address, rx)
176 } -> std::convertible_to<bus_status>;
179 template<
typename Bus>
181 std::uint16_t address,
182 std::span<std::byte const> tx,
183 std::span<std::byte> rx)
186 bus.write_async(address, tx)
189 bus.read_async(address, rx)
193 template<
typename Output>
197 output.set_duty(duty)
198 } -> std::convertible_to<bus_status>;
201 } -> std::convertible_to<bus_status>;
204 } -> std::convertible_to<bus_status>;
207 template<
typename Bus>
212 } -> std::convertible_to<bus_status>;
215 } -> std::convertible_to<bus_status>;
218 template<
typename Bus>
223 bus.send_async(frame)
226 bus.receive_async(rx)
231 template<
typename Timer>
233 { timer.ticks() } -> std::convertible_to<tsm::tick_rep>;
236 template<
typename Timer>
238 { timer.ticks() } -> std::convertible_to<tsm::tick_duration>;
242 template<
typename Timer>
243 concept
tick_source = tick_source_rep<Timer> || tick_source_duration<Timer>;
245 template<
typename Sink,
typename Payload>
249 sink.try_send_from_isr(std::forward<Payload>(payload))
250 } -> std::convertible_to<bool>;
253 template<
typename Source>
256 source.notify_from_isr();
259 template<
typename Sink,
typename Payload>
260 requires isr_payload_sink<Sink&, Payload>
264 return sink.try_send_from_isr(std::forward<Payload>(payload));
267 template<adc Converter,
typename Sink>
268 requires isr_payload_sink<Sink&, adc_sample>
275 template<gpio_input Pin,
typename Sink>
276 requires isr_payload_sink<Sink&, digital_input_state>
283 template<isr_notifier Source>
287 source.notify_from_isr();
requires(!has_transition_type_c< T > &&has_transition_member_c< T >) struct transitions_of< T >
Definition: transition.h:479
concept async_spi
Definition: io.h:157
requires isr_payload_sink< Sink &, digital_input_state > bool sample_gpio_from_isr(Pin &pin, Sink &sink)
Definition: io.h:278
concept output_pin
Definition: io.h:95
concept tick_source_rep
Definition: io.h:232
concept isr_payload_sink
Definition: io.h:246
concept pwm
Definition: io.h:194
concept async_i2c
Definition: io.h:180
concept gpio_input
Definition: io.h:76
concept tick_source_duration
Definition: io.h:237
concept gpio_output
Definition: io.h:84
concept adc
Definition: io.h:106
concept tick_source
Definition: io.h:243
concept i2c
Definition: io.h:166
concept uart
Definition: io.h:122
requires isr_payload_sink< Sink &, Payload > bool push_from_isr(Sink &sink, Payload &&payload)
Definition: io.h:262
concept spi
Definition: io.h:147
requires isr_payload_sink< Sink &, adc_sample > bool sample_adc_from_isr(Converter &converter, Sink &sink)
Definition: io.h:270
concept async_adc
Definition: io.h:114
concept async_uart
Definition: io.h:135
concept isr_notifier
Definition: io.h:254
bus_status
Definition: io.h:32
concept input_pin
Definition: io.h:92
void notify_from_isr(Source &source)
Definition: io.h:285
concept awaitable
Definition: io.h:67
concept can
Definition: io.h:208
concept async_can
Definition: io.h:219
concept async_gpio_input
Definition: io.h:98
std::uint16_t millivolts
Definition: io.h:46
std::span< std::byte const > payload
Definition: io.h:63
bool extended
Definition: io.h:57
std::uint32_t value
Definition: io.h:56
std::uint16_t permille
Definition: io.h:51
Target-neutral tick value type.