bt_hci_transport_uartc.c uses btn_set_error to report fatal errors such as uart error.
the btn_set_error code however is in the TERMINAL implementation and further assumes the TERMINAL to be initialized.
If an application is using Bluetooth but not the TERMINAL this results in an increased code size and a crash if this function is ever called (which is actually without much consequences as it is a 'FATAL' error anyway).
A straight forward way to clean this up is to place btn_set_error in a core library e.g. btn-hardware and provide a callback register function such that the TERMINAL (shouldn't it be DEBUG or LOGGING btw?) can register itself. As a default the callback should be empty, e.g., no callback be done. After all, we don't know if the APP-UART is read by a human e.g.