summaryrefslogtreecommitdiff
path: root/structure.txt
blob: 23be605b4a39bc78198cfcf2437cf32ed1303443 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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 и корректировка времени