tin  1.5.9
io.h File Reference

Embedded I/O contracts for driver-to-runtime adapters. More...

#include <concepts>
#include <cstddef>
#include <cstdint>
#include <span>
#include <type_traits>
#include <utility>
#include "tsm/ticks.h"
Include dependency graph for io.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tsm::io::digital_input_state
 
struct  tsm::io::adc_sample
 
struct  tsm::io::pwm_duty
 
struct  tsm::io::can_id
 
struct  tsm::io::can_frame
 

Namespaces

 tsm
 
 tsm::io
 

Enumerations

enum class  tsm::io::level : unsigned char { tsm::io::low , tsm::io::high }
 
enum class  tsm::io::bus_status : unsigned char { tsm::io::ok , tsm::io::busy , tsm::io::error , tsm::io::timeout }
 

Functions

template<typename Sink , typename Payload >
requires isr_payload_sink< Sink &, Payload > bool tsm::io::push_from_isr (Sink &sink, Payload &&payload)
 
template<adc Converter, typename Sink >
requires isr_payload_sink< Sink &, adc_sample > bool tsm::io::sample_adc_from_isr (Converter &converter, Sink &sink)
 
template<gpio_input Pin, typename Sink >
requires isr_payload_sink< Sink &, digital_input_state > bool tsm::io::sample_gpio_from_isr (Pin &pin, Sink &sink)
 
template<isr_notifier Source>
void tsm::io::notify_from_isr (Source &source)
 

Variables

template<typename Awaitable >
concept tsm::io::awaitable
 
template<typename Pin >
concept tsm::io::gpio_input
 
template<typename Pin >
concept tsm::io::gpio_output
 
template<typename Pin >
concept tsm::io::input_pin = gpio_input<Pin>
 
template<typename Pin >
concept tsm::io::output_pin = gpio_output<Pin>
 
template<typename Pin >
concept tsm::io::async_gpio_input
 
template<typename Converter >
concept tsm::io::adc
 
template<typename Converter >
concept tsm::io::async_adc
 
template<typename Bus >
concept tsm::io::uart
 
template<typename Bus >
concept tsm::io::async_uart
 
template<typename Bus >
concept tsm::io::spi
 
template<typename Bus >
concept tsm::io::async_spi
 
template<typename Bus >
concept tsm::io::i2c
 
template<typename Bus >
concept tsm::io::async_i2c
 
template<typename Output >
concept tsm::io::pwm
 
template<typename Bus >
concept tsm::io::can
 
template<typename Bus >
concept tsm::io::async_can
 
template<typename Timer >
concept tsm::io::tick_source_rep
 
template<typename Timer >
concept tsm::io::tick_source_duration
 
template<typename Timer >
concept tsm::io::tick_source = tick_source_rep<Timer> || tick_source_duration<Timer>
 
template<typename Sink , typename Payload >
concept tsm::io::isr_payload_sink
 
template<typename Source >
concept tsm::io::isr_notifier
 

Detailed Description

Embedded I/O contracts for driver-to-runtime adapters.

The HSM core should not know about peripheral registers, DMA descriptors, or RTOS handles. This header gives examples and applications a small vocabulary for driver facades that produce typed events and payloads for a runtime.