Шаблон проекта для разработки и отработки библиотеки librscs
Правила написания кода на проекте:
-
Заголовочные файлы должны располагаться в каталоге
/rscs/
, все исходники в каталоге/rscs/_source
. -
Все публичные сущности (которые выносятся в .h файлы соответсвующих модулей) должны быть прокомментированны.
-
Все именуемые функции и типы должны именоваться начиная с префикса
rscs_<имя_модуля>
. Напримерrscs_uart_init
. -
Все значения перечисляемых типов (enum). должны быть написаны заглавными буквами, начинаться с префикса
RSCS_<имя_модуля>_<имя_перечисляемого_типа>
. НапримерRSCS_UART_STOP_BITS_ONE
. -
Библиотека должна поддерживать по меньшей мере два микроконтроллера, используемых в проекта - ATMega328p и ATmega128. Для обеспечения этой поддержки можно управлять кодом с помощью макросов - неплохой пример виден в драйвере АЦП - (adc.h)[https://github.com/cansat-rsce/librscs/blob/master/rscs/adc.h] и (adc.c)[https://github.com/cansat-rsce/librscs/blob/master/rscs/_source/adc.c]
-
Если функция способна завершиться с ошибкой, следует оформить её возвращающей код ошидки типа
rscs_error_t
(определен в файле/rscs/error.h
). Можно добавить в этот файл свой код ошибки (если подходящего там еще нет). -
Ветвь master - основная суперветвь. Код в любой её версии всегда должен компилироваться и (в идеале конечно же) правильно работать. Поэтому туда не должны попадать никакие непроверенные измнения. Строго говоря - прямые коммиты в неё заблокированны - это запрещено средствами гитхаба, поэтому нужно работать через промежуточную ветвь, как описанно в следующем пункте.
-
Рабочая ветвь - ветвь develop. Изменения на один коммит следует вносить в нее. Любой более серьезный (на несколько коммитов) новый функционал следует оформлять в ветвях. Скажем, Если Вы хотите добавить драйвер для барометра BMP280 - создаете новую ветвь с именем BMP280 от текущей головы ветви develop и работаете с ней. ПО завершению работы пушите ветвь на сервер и создаете пул реквест этой ветви в девелоп или же сразу в мастер (если уверены в качестве нововведений)