Работа с проектом
Сборка
# Для запуска сборки, нужно запустить скрипт b:
# Написать путь к скрипту b.
./b
Запуск
# Аналогично запуску сборки, запуск собранного приложения.
./build/bin/app
Сборка и запуск
# Аналогично
./b && ./build/bin/app
Структура файлов
Общая:
Путь | Назначение |
---|---|
./b | Скрипт сборки проекта |
./CmakeLists.txt | Файл описывающий сборку проекта на cmake |
./src/CmakeLists.txt | Файл описывающий сборку директории ./src на cmake |
./compile_commands.json | Сгенерированный файл, необходимый для поддержки ide фич при разработке проекта |
./build | Директория с кэшом сборки и бинарником |
./build/bin/app | Итоговый файл сборки (бинарник) |
./src | Директория с исходниками проекта |
Исходников (в src):
Путь | Назначение |
---|---|
./main.cpp | Главный файл, откуда происходит запуск приложения. |
./ptos.h | Функции, отвечающие за взаимодействие с операционкой. (Эмулированный интерфейс ptos'а через linux) |
./gpio/gpio_interface.h | Интерфейс gpio (Описание того, что из себя представляет gpio). |
./gpio/gpio_cli.h | Интерфейс класса Gpio_cli, реализующий Gpio_interface. |
./gpio/gpio_cli.cpp | Реализация класса Gpio_cli. |
./numeric_blinker/numeric_blinker.h | Интерфейс класса необходимый реализовать. |
./numeric_blinker/numeric_blinker.cpp | Реализация класса необходимую реализовать. |
Заметки
Файл ./compile_commands.json
не нужен, но может понадобится, если
захочется использовать lsp
(language server protocol). lsp - добавляет
фичи текстовому редактору (ide фичи). Пока это тебе не нужно.
Собери и запустить проект. Посмотри, что происходит.
Почитай и попробуй понять исходники (cpp, h файлы).
Попробуй поменять в main.cpp
bool clear_terminal = false;
Gpio_cli gpio(clear_terminal);
// на
bool clear_terminal = true;
Gpio_cli gpio(clear_terminal);
Посмотри что изменится. При true, терминал очищается при изменеии светодиода. При false нет.
Нам нужно чтобы терминал очищался и светодиод был на месте, но если
терминал очищается, то все логи (cout
), будут тоже стираться.
Поэтому я оставил возожность менять поведение через флаг.
Первым делом. Попробуй, чтобы светодиод мигал. Используй ptos::delay
.
На самом деле ptos::delay
использоваться в твоей задаче не должен,
но чтобы получилось что-то простое, можно его временно использовать.