Skip to content
Snippets Groups Projects
Select Git revision
  • 5e2f0e81bb2bccfb08341a06c06e45fb78fd49ca
  • master default protected
2 results

rtic_bare1.rs

Blame
  • dma.rs 6.57 KiB
    #![allow(dead_code)]
    #![allow(unused_code)]
    #![allow(missing_docs)]
    
    use core::marker::{PhantomData, Unsize};
    use core::ops;
    
    use rcc::AHB1;
    use stm32f4x::USART2;
    use stm32f4x::{DMA1, dma2};
    
    #[derive(Debug)]
    pub enum Error {
        Overrun,
        #[doc(hidden)] _Extensible,
    }
    
    pub enum Event {
        HalfTransfer,
        TransferComplete,
    }
    
    #[derive(Clone, Copy, PartialEq)]
    pub enum Half {
        First,
        Second,
    }
    
    pub struct CircBuffer<BUFFER, STREAM>
    where
        BUFFER: 'static,
    {
        buffer: &'static mut [BUFFER; 2],
        channel: STREAM,
        readable_half: Half,
    }
    
    impl<BUFFER, STREAM> CircBuffer<BUFFER, STREAM> {
        pub(crate) fn new(buf: &'static mut [BUFFER; 2], chan: STREAM) -> Self {
            CircBuffer {
                buffer: buf,
                channel: chan,
                readable_half: Half::Second,
            }
        }
    }
    
    pub trait Static<B> {
        fn borrow(&self) -> &B;
    }
    
    impl<B> Static<B> for &'static B {
        fn borrow(&self) -> &B {
            *self
        }
    }
    
    impl<B> Static<B> for &'static mut B {
        fn borrow(&self) -> &B {
            *self
        }
    }
    
    pub trait DmaExt {
        type Streams;
    
        fn split(self, ahb: &mut AHB1) -> Self::Streams;
    }
    
    //