36 lines
		
	
	
		
			965 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			965 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <cstdint>
 | |
| #include <span>
 | |
| #include <string_view>
 | |
| 
 | |
| void InitUarts();
 | |
| 
 | |
| // block until the provided buffer is full
 | |
| void UartReadBlocking(std::span<std::byte> data);
 | |
| inline uint8_t UartReadByteBlocking() {
 | |
|     std::byte byte;
 | |
|     UartReadBlocking(std::span{&byte, 1});
 | |
|     return static_cast<uint8_t>(byte);
 | |
| }
 | |
| 
 | |
| // send and poll the uart until transmitted
 | |
| void UartWriteCrash(std::span<const std::byte> data);
 | |
| inline void UartWriteCrash(std::string_view s) {
 | |
|     return UartWriteCrash(std::as_bytes(std::span{s.data(), s.size()}));
 | |
| }
 | |
| 
 | |
| // block until room is available in tx fifo, then send
 | |
| void UartWriteBlocking(std::span<const std::byte> data);
 | |
| inline void UartWriteBlocking(std::string_view s) {
 | |
|     return UartWriteBlocking(std::as_bytes(std::span{s.data(), s.size()}));
 | |
| }
 | |
| 
 | |
| void HandleUartTxFromIsr(void*, unsigned int transmitted);
 | |
| void HandleUartRxFromIsr(void*, unsigned int);
 | |
| void HandleUartIsr();
 | |
| 
 | |
| uint8_t UartStatus();
 | |
| 
 | |
| void LogStuff();
 |