Estoy escribiendo una biblioteca de C para microcontroladores PIC18 que se comunicarán con el chip ESP8266 sobre el bus UART. Me gustaría usar la función printf()
para enviar cadenas formateadas al chip.
En XC8, printf()
usa la función putch()
que el usuario debe definir como salida. De esta manera, el usuario puede decidir si usar UART, LCD, ... para la salida estándar.
Esto me da un problema. En la biblioteca, quiero usar printf()
que se basa en putch()
, pero no puedo (no debería) declarar putch()
en la biblioteca porque eso daría un conflicto cuando un usuario quiera usar el ESP8266 en combinación con un LCD para el que ya definió putch()
. ¿Cómo puedo resolver este problema?
Podría usar sprintf()
para almacenar temporalmente la cadena en la memoria y luego escribir mi propio código para escribir este byte a byte en el ESP, pero prefiero no hacerlo debido a la ineficiencia de la memoria y el tiempo.
También podría rodar mi propio esp8266_printf()
con una funcionalidad limitada y usarlo en su lugar, pero eso tampoco se siente bien.
¿Hay una solución limpia (er) para esto?