fix: correctly send functional descriptor
The functional descriptor was not sent correctly,
specifically, it was pointed to its address,
instead of the pointer itself. That meant bunch
of irrelevant stuff was sent instead.
         
        
        
          
feat: use task_result to indicate blocking
There should be no spin loops inside of the
interrupts, so this change removes them,
and instead uses a result system that has
WOULD_BLOCK result. When this result is returned,
it is expected there was no side-effect and the
function can safely be reran later.
         
        
        
          
feat: implement enumeration fully
         
        
        
          
chore: update pin, exti, delay
         
        
        
          
fix: fifo has to be volatile
         
        
        
          
docs: add documentation comments to most functions
         
        
        
          
feat: implement usb devicd cdc descriptors, init, setup
         
        
        
          
feat: move all sending instructions to generic send functions
         
        
        
          
fix: make sure to error if endpoint id not found in interrupt
This generally shouldn't happen,
but it needs to be ensured that the
memory at incorrect place won't be read
or written to!
Otherwise there could be undefined behavior!
This would possibly write to the fifos,
meaning the data the usb sends could be
different than what the application intended!
         
        
        
        
        
          
feat: implement most of enumeration
         
        
        
          
chore: fix envrc c include path variable
         
        
        
          
chore: debug config via dape
         
        
        
        
        
          
feat: receive setup packets
         
        
        
          
feat: implement simple control usb read, writes
         
        
        
          
refactor: use usb descriptor common struct header
         
        
        
          
feat: usb control types definitions
         
        
        
          
fix: Makefile correct dynamic header dependencies