Problema do dia: como definir uma API para uma porta serial, quando ela não existe e é emulada em software através de uma porta USB? Condições de contorno, pra variar não são triviais: não há libc, não há kernel, nem select’s, nem fopen’s.
Fazer a USB se anunciar como um device serial foi a parte trivial do problema, ok, não tão trivial, pois a spec da USB é bastante gigante.
Update: Decidida a API necessária, com essas quatro funções pode-se manipular a vontade uma porta serial-usb:
- getc
- putc
- read
- write