psoc-drivers 0.1.0

Hardware driver implementations for psoc-rs
//! Rust drivers for PSOC devices
//!
//! This crate implements peripheral drivers for SoCs from Infineon's ModusToolbox platform. Do not
//! depend on this crate directly; use the `psoc-rs` crate instead, which configures and reexports
//! the appropriate drivers for your specific device.
//!
// Copyright (c) 2026, Infineon Technologies AG or an affiliate of Infineon Technologies AG.
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
// in compliance with the License. You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
// express or implied. See the License for the specific language governing permissions and
// limitations under the License.
#![no_std]
#![warn(missing_docs, missing_debug_implementations)]

#[cfg(feature = "fault-handler")]
pub mod fault;
pub mod gpio;
pub mod interrupt;
pub mod regs;
pub mod security;
pub mod sys;

/// Helper type used to mark structures as non-exhaustive without disabling struct update syntax.
///
/// This type is used within configuration structures whose fields may vary across driver and
/// hardware revisions. Instead of creating such a structure directly, use the `new()` or
/// `default()` function to obtain the default configuration and apply updates to that so that your
/// code will not break if ported to a different device or driver version.
///
/// ```rust
/// use mtb_drivers:::gpio::{PinConfig, PinState};
///
/// let my_pin_config = PinConfig {
///     initial_state: PinState::High,
///     ..PinConfig::new()
/// };
/// ```
#[non_exhaustive]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub struct NonExhaustive;

psoc_macros::hsiom!(UartTx<N>, scb.uart_tx, gpio::mode::Strong::<false>);