summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--structure.txt60
1 files changed, 60 insertions, 0 deletions
diff --git a/structure.txt b/structure.txt
new file mode 100644
index 0000000..23be605
--- /dev/null
+++ b/structure.txt
@@ -0,0 +1,60 @@
+Состав аппаратуры и её нагрузка на периферию
+- Датчик освещённости (ADC)
+ - ADC1 CH6
+ - GPIO PA6(ADC_IN6)
+ - DMA ?
+- Две сенсорные кнопки (TSC)
+ - TIM15
+ - GPIO PA2(Button2, TSC_G1_IO3), PA3(SEMCAP), PB3(Button1, TSC_G5_IO1),
+ PB4(SEMCAP)
+- Шесть индикаторных ламп (SPI, GPIO)
+ - SPI 1 (в сдвиговый регистр)
+ - GPIO PA4(ST), PA5(SH), PA7(DATA), PB12(dp2), PB14(dp1)
+ - DMA ?
+- Шесть разноцветных светодиодов (SPI, GPIO)
+ - SPI 2
+ - GPIO PB15(DATA)
+ - DMA ?
+- Отладочные логи (UART)
+ - UART1 115200 8N1 RX,TX
+ - GPIO PA9(TX), PA10(RX)
+ - DMA ?
+- GPS (UART)
+ - UART4 9600 8N1 RX,TX
+ - GPIO PA0(TX), PA1(RX)
+ - DMA ?
+- WIFI/BLE (UART, GPIO)
+ - UART3 115200 8N1 RX,TX,RTS,CTS
+ - GPIO PA15(IO0), PB0(EN), PB1(RTS), PB10(TX), PB11(RX), PB13(CTS)
+ - DMA ?
+
+Предполагаемый состав ПО:
+- Объект управления лампами
+ - Установить яркость конкретной лампы или всех ламп сразу SetBrightness()
+ - Установить текущее значение для отображения (строка или что-то посложнее,
+ потому что там можно ещё запятые у каждой лампы включать) ApplyValue()
+- Объект кнопки
+ - Геттер состояния IsPressed(), больше ничего
+- Объект управления подсветкой
+ - Установить массив из 6-ти цветов RGB Apply()
+- UART'ы - просто дескрипторы
+ - Дескрипторы 0, 1 и 2 - UART1, при использовании дескриптора 2 запись и
+ чтение производятся мимо буфера, напрямую в периферию, чтобы работало даже
+ когда прерывания отключены
+ - Дескриптор 3 - WIFI (UART3)
+ - Дескриптор 4 - GPS (UART4)
+ - Кольцевые буферы на RX и TX
+ - Чтобы работал fcntl(O_NONBLOCK)
+- Объект датчика овещённости
+ - Из платформы более или менее сырое значение через GetValue(), чтобы
+ сравнивать его с порогом, который можно менять в рантайме
+ - IsObscured() для сравнения с порогом
+ - GetValue() для получения сырого значения
+ - SetThreshold() для установки нового порога
+- Объект хранилища настроек
+ - Зависимость яркости ламп от освещённости
+ - Настройки хранятся в энергонезависимой памяти RTC
+- Основной поток с логикой
+ - Режим меню с настройкой по кнопкам
+ - Обработка команд от WIFI
+ - Обработка данных от GPS и корректировка времени