trait UartChip {
void init(unsigned long base, unsigned int baud, unsigned int clock_hz) const;
int tx_ready(unsigned long base) const;
int rx_ready(unsigned long base) const;
void put(unsigned long base, unsigned char c) const;
unsigned char get(unsigned long base) const;
}What a UART block type provides; Uart<C> requires it.