Здравствуйте, kov_serg, Вы писали:
_>Пиши обычный класс и не компостируй мозг.
С таким подходом, как минимум, одна проблема — в конструкторе происходит неявная инициализация. Если об этом не знать, то можно дважды инициализировать устройство. Либо везде передавать ссылку на Serial, что тоже неудобно. А чем плох вариант с namespace? Состояние хранится в двух переменных — rx_buffer, tx_buffer. Они делаются статическими и перестают быть видимыми вне модуля. Инициализировать их не надо.