Files
gunner47-GyverLamp/android/Декомпозиция.txt

132 lines
15 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Функциональная декомпозиция, диаграмма "классов"
UI всё, что связано с отображением
1. ScreenManager выор отображаемого экрана
2. MainScreen управление UI'ем главного экрана (видимость, enable, цвета, позиции и т.д.)
3. ConnectivityScreen управление UI'ем функций главного экрана (видимость, enable, цвета, позиции и т.д.)
4. ModesScreen управление UI'ем функций экрана выбора эффектов (видимость, enable, цвета, позиции и т.д.)
5. FavoritesScreen управление UI'ем функций экрана избранных эффектов (видимость, enable, цвета, позиции и т.д.)
6. AlarmScreen управление UI'ем функций экрана будильника (видимость, enable, цвета, позиции и т.д.)
7. TimerScreen управление UI'ем функций экрана таймера (видимость, enable, цвета, позиции и т.д.)
Backend всё, что связано с логикой
8. DeviceManager backend функции, связанных с управлением лампами (состояние, эффекты, подключение и т.д.)
9. DiscoverManager
10. PollingManager
11. StringHelper
System все системные объекты и функции
11. System_DB хранилище
12. System_WiFi модуль работы с WiFi
Свойства и методы "классов"
ScreenManager
ShowScreen метод: принимает номер "экрана", устанавливает свойство видимости в true для этого экрана и в false для остальных экранов; вызывает перерисовку "экранов"
RebuildAllScreens метод: перерисовывает "экраны", делает их блоки видимыми или видимыми в зависимости от выставленных свойств видимости
CloseApplication метод: закрывает приложение
MainScreen
Visible свойство: "Видимость главного экрана"
BlockControlEventsEmitting свойство: "Не генерировать события от элементов управления" (слайдеров, кнопок и т.д.); нужно, например, чтобы предотвратить slider.setPosition при его enable/disable
Initialize метод (событие): действия при инициализации "экрана" (однократно)
BackPressed метод (событие): действия при нажатии системной кнопки "Назад" на главном "экране"
ConnectivityButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" устройств
ModesButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" эффектов
FavoritesButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" избранных эффектов
AlarmButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" будильника
TimerButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" таймера
OnOffButtonClick метод (событие): действия при нажатии кнопки Вкл/Выкл
BrightnessSliderPositionChanged метод (событие): действия при изменении слайдера яркости
SpeedSliderPositionChanged метод (событие): действия при изменении слайдера скокрости
ScaleSliderPositionChanged метод (событие): действия при изменении слайдера масштаба
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
SetDebugText метод: установить отладочный текст основной отладочной текстовой метке
SetDebugTimeText метод: установить отладочный текст дополнительной отладочной текстовой метке
ConnectivityScreen
Visible свойство: "Видимость экрана устройств"
IpAddressInputLostFocus метод (событие): действия при потери фокуса поля ввода IP адреса
PortInputLostFocus метод (событие): действия при потери фокуса поля ввода порта
SaveConnectionButtonClick метод (событие): действия при нажатии на кнопку "Добавить"
RemoveConnectionButtonClick метод (событие): действия при нажатии на кнопку "Удалить"
SaveAllConnectionButtonClick метод (событие): действия при нажатии на кнопку "Сканировать и добавить"
DeviceSocketListViewAfterPicking метод (событие): действия при выборе устройства из списка сохранённых и его подключение
BaсkButtonClick метод (событие): действия при UI кнопки "Назад" на "экране" устройств
UpdateConnectivityStatus метод: обновить статус устройства "Подключен"/"Отключен" на "экране" устройств
UpdateCurrentDeviceSocket метод: отобразить текущее устройство (DeviceManager.CurrentDeviceSocket) в полях ввода IP адреса и порта на "экране" устройств
UpdateCurrentDevicesSockets метод: отобразить текущий список сохранённых устройств (DeviceManager.Devices) на "экране" устройств
ValidateAndAddDeviceSocketToList метод: валидировать значения полей ввода IP адреса и порта и добавть запись в список сохранённых устройств; перерисовать этот список
SetConnectionStatus метод: установить статус Подлкючен/Отключен соответствующей текстовой метке на этом экране
UpdateScreen метод: обновить все элементы управления на "экране" устройств согласно модели данных
ModesScreen
Visible свойство: "Видимость экрана эффектов"
ModesListViewAfterPicking метод (событие): действия при выборе эффекта из списка эффектов
BaсkButtonClick метод (событие): действия при UI кнопки "Назад" на "экране" эффектов
FavoritesScreen
Visible свойство: "Видимость экрана устройств"
BaсkButtonClick метод (событие): действия при UI кнопки "Назад" на "экране" избранных эффектов
AlarmScreen
Visible свойство: "Видимость экрана устройств"
BaсkButtonClick метод (событие): действия при UI кнопки "Назад" на "экране" будильника
TimerScreen
Visible свойство: "Видимость экрана устройств"
BaсkButtonClick метод (событие): действия при UI кнопки "Назад" на "экране" таймера
DeviceManager
Connected свойство: подключено ли устройство (лампа)? точнее, был ли получен ответ на последнюю высланную ему команду
State свойство: полученное командой GET состояние устройства (CURR...)
Devices свойство: список устройств (хранимое свойство)
CurrentDeviceSocket свойство: текущее устройство (хранимое свойство)
Modes свойство: список доступных режимов, захардкожен одновременно в лампе и в приложении, должен совпадать
Initialize метод: вычитывание хранимых свойств и инициализация соответствующих переменных
ConnectDeviceSocket метод: стартовать таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство
DisconnectDeviceSocket метод: остановить таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство; очистить свойства Connected и State
GetCurrentModeId метод: получить номер текущего эффекта из свойства State
GetCurrentModeId метод: получить имя текущего эффекта из свойства State
GetCurrentBrightness метод: получить значение текущей яркости из свойства State
GetCurrentSpeed метод: получить значение текущей скорости из свойства State
GetCurrentScale метод: получить значение текущего масштаба из свойства State
GetCurrentOn метод: получить значение текущей состояния Вкл/Выкл из свойства State
GetCurrentEspMode метод: получить значение текущей состояния ESP_MODE из свойства State
GetCurrentUseNtp метод: получить значение текущей состояния USE_NTP из свойства State
SaveDeviceSocketSettings метод: сохранить с базу данных приложения хранимые значения (текущее стройство и список устройств)
ValidateIpPort метод: валидировать переданное в качестве параметра значение IP адреса или порта
DiscoverManager
TimeoutMs свойство: время ожидания ответа от устройств на multicast команду DISCOVER
SendMulticastCommand метод: стартовать UDP сервер (для отправки multicast команды DISCOVER на адрес широковещательных сообщений сети и получения ответа)
UdpServerStarted метод (событие): отправить multicast команду DISCOVER на адрес широковещательных сообщений сети; стартовать таймер завершения работы сервера
UdpServerDataRecieved метод (событие): получить и обработать ответы от устройств на multicast команду DISCOVER
TimerTimerNow метод (событие): завершить работу UDP сервера и таймера (при первом срабатывании события таймера)
GetBroacdastIP метод: получить адрес широковещательных сообщений мобильного устройства, используя текущий IP адрес WiFi подключения
PollingManager
Timeout свойство: время ожидания ответа от устройств на команды управления
UdpPort свойство: номер UDP порта
TimerIntervalMs свойство: время работы таймера (ограничение используемого компонента), по его истечении таймер постоянно перезапускается для непрерывной работы
TimerTickMs свойство: интервал времени, через который будет сгенерировано событие таймера
TimerTickCounter свойство: счётчик срабатываний таймера, нужен чтобы вызывать команды управления/запроса состяния устройств по очереди x из n - одна команда (GET), y из n - другая (DEB)
StartTimer метод: старт polling таймера
TimerTimerNow метод (событие): действия при срабатывании события polling таймера (отправка команд и перезапуск таймера)
UdpClientRecieved метод (событие): действия при получении ответа на отправленные команды от подключенного устройства
SendUdpCommand метод: отправить команду, принятую в качестве входного параметра на подключенное устройство
SendGetDebCommandToDevice метод: отправить команды GET или DEB (в зависимости от входного параметра) на подключенное устройство
SendPowerOnOffCommandToDevice метод: отправить команды On/Off (в зависимости от входного параметра) на подключенное устройство
SendSetModeCommandToDevice метод: отправить команду смены эффекта на подключенное устройство
SendSetBrightnessCommandToDevice метод: отправить команду установки яркости на подключенное устройство
SendSetSpeedCommandToDevice метод: отправить команду установки скорости на подключенное устройство
SendSetScaleCommandToDevice метод: отправить команду установки масштаба на подключенное устройство
HandleDeviceResponse метод: обработка ответа от подключенного устройства на отправленные команды
StringHelper
GetIpPortString метод: получить строку формата IP:PORT из входных параметров IP и PORT
GetIpFromIpPortString метод: получить IP из входного параметра формата IP:PORT
GgetPortFromIpPortString метод: получить PORT из входного параметра формата IP:PORT