25#ifndef SBL_VALIDATION_METHOD_DETECTION_HPP_
26#define SBL_VALIDATION_METHOD_DETECTION_HPP_
55template<
typename T,
typename =
void>
60 T::set_mode(std::declval<const sbl::GpioHandle&>(),
61 std::declval<sbl::hal::gpio::PinMode>()))>>
65template<
typename T,
typename =
void>
70 T::write(std::declval<const sbl::GpioHandle&>(),
71 std::declval<bool>()))>>
75template<
typename T,
typename =
void>
80 T::read(std::declval<const sbl::GpioHandle&>()))>>
84template<
typename T,
typename =
void>
89 T::toggle(std::declval<const sbl::GpioHandle&>()))>>
97template<
typename GpioDriver>
119template<
typename T,
typename =
void>
124 T::busy_wait_ms(std::declval<uint32_t>()))>>
128template<
typename T,
typename =
void>
136template<
typename T,
typename =
void>
144template<
typename T,
typename =
void>
149 T::init(std::declval<uint32_t>()))>>
153template<
typename T,
typename =
void>
158 std::is_same_v<decltype(T::micros()), uint32_t>>> : std::true_type {};
165template<
typename TimerDriver>
193template<
typename T,
typename =
void>
198 T::init(std::declval<const sbl::UartHandle&>()))>>
202template<
typename T,
typename =
void>
207 T::init_rx(std::declval<const sbl::UartHandle&>()))>>
211template<
typename T,
typename =
void>
216 T::write_byte(std::declval<uint8_t>()))>>
220template<
typename T,
typename =
void>
225 T::write_string(std::declval<const char*>()))>>
229template<
typename T,
typename =
void>
237template<
typename T,
typename =
void>
245template<
typename T,
typename =
void>
250 T::try_write_byte(std::declval<uint8_t>()))>>
254template<
typename T,
typename =
void>
259 T::try_write_string(std::declval<const char*>()))>>
263template<
typename T,
typename =
void>
268 std::is_same_v<decltype(T::available()), bool>>> : std::true_type {};
271template<
typename T,
typename =
void>
276 std::is_same_v<decltype(T::read_byte()), uint8_t>>> : std::true_type {};
279template<
typename T,
typename =
void>
284 std::is_same_v<decltype(T::try_write_byte(std::declval<uint8_t>())), bool>>>
288template<
typename T,
typename =
void>
293 T::write(std::declval<const uint8_t*>(),
294 std::declval<std::size_t>()))>>
302template<
typename UartDriver>
328template<
typename T,
typename =
void>
336template<
typename T,
typename =
void>
341 T::configure_channel(std::declval<const sbl::AdcHandle&>(),
342 std::declval<sbl::hal::adc::SampleTime>()))>>
346template<
typename T,
typename =
void>
351 T::start_conversion(std::declval<const sbl::AdcHandle&>()))>>
355template<
typename T,
typename =
void>
363template<
typename T,
typename =
void>
371template<
typename T,
typename =
void>
383template<
typename AdcDriver>
395template<
typename T,
typename =
void>
400 T::start_dma_scan(std::declval<const sbl::AdcHandle*>(),
401 std::declval<uint8_t>(),
402 std::declval<uint16_t*>(),
403 std::declval<sbl::hal::adc::SampleTime>()))>>
407template<
typename T,
typename =
void>
427template<
typename T,
typename =
void>
435template<
typename T,
typename =
void>
440 T::init(std::declval<const sbl::hal::audio::AudioConfig&>()))>>
444template<
typename T,
typename =
void>
449 T::set_callback(std::declval<sbl::hal::audio::AudioCallback>()))>>
453template<
typename T,
typename =
void>
461template<
typename T,
typename =
void>
473template<
typename AudioDriver>
ADC handle type for hardware abstraction.
GPIO handle type for hardware abstraction.
ADC common types and enumerations.
Audio common types and configuration.
GPIO common types and enumerations.
Root namespace for all Sound Byte Libs functionality.
Combined ADC driver interface check.
static constexpr bool value
Combined Audio driver interface check.
static constexpr bool value
Combined GPIO driver interface check.
static constexpr bool value
ADC Driver Method Detection.
Audio Driver Method Detection.
GPIO Driver Method Detection (Handle-First API)
Timer Driver Method Detection.
UART Driver Method Detection.
Combined Timer driver interface check.
static constexpr bool value
Combined UART driver interface check.
static constexpr bool value
UART handle type for hardware abstraction.