Это тоже лажа, вы пытаетесь придумать HAL. Гораздо проще сделать
набор фукций bsp - board support package - с которым работает
логика. Выглядит примерно как bspAlarmLedOn();
Туда же запихиваете порты библиотек, lwip например. В результате ваш код работает с ограниченным набором функций, который, по необходимости, можно перетащить на другие платформы без лишней работы над своим HAL.
Строго говоря, все мои либины, вроде IO, написаны в образовательных и исследовательских целях. В рабочих проектах стараюсь по максимуму использовать код от вендоров, это быстрее, дешевле и удобнее при работе в команде.