mirror of
https://github.com/gunner47/GyverLamp.git
synced 2025-08-07 09:00:30 +03:00
242 lines
36 KiB
Plaintext
242 lines
36 KiB
Plaintext
Функциональная декомпозиция, диаграмма "классов"
|
||
|
||
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, цвета, позиции и т.д.)
|
||
8. SettingsScreen управление UI'ем экрана настроек (OTA)
|
||
|
||
Backend всё, что связано с логикой
|
||
9. DeviceManager backend функции, связанных с управлением лампами (состояние, эффекты, подключение и т.д.)
|
||
10. DiscoverManager функции обнаружения ламп в локальной WiFi сети
|
||
11. PollingManager функции регулярного опроса ламп по таймеру для получения актуальных настроек
|
||
12. StringHelper разные вспомогательные функции для работы со строками
|
||
|
||
System все системные объекты и функции
|
||
13. System_DB хранилище
|
||
14. System_WiFi модуль работы с WiFi
|
||
|
||
|
||
|
||
Свойства и методы "классов"
|
||
|
||
ScreenManager
|
||
CurrentScreenId свойство: "Текущий отображаемый 'экран'"
|
||
ShowScreen метод: принимает номер "экрана", устанавливает свойство видимости в true для этого экрана и в false для остальных экранов; вызывает перерисовку "экранов"
|
||
RebuildAllScreens метод: перерисовывает "экраны", делает их блоки видимыми или видимыми в зависимости от выставленных свойств видимости
|
||
CloseApplication метод: закрывает приложение
|
||
Color_DarkGrey свойство (константа): код цвета "тёмно-серый"
|
||
Color_LightGrey свойство (константа): код цвета "светло-серый"
|
||
Color_LightLightGrey свойство (константа): код цвета "светло-светло-серый"
|
||
Color_LightGreyBackground свойство (константа): код цвета "светло-серый" для фона
|
||
Color_Red свойство (константа): код цвета "красный"
|
||
|
||
MainScreen
|
||
Visible свойство: "Видимость главного экрана"
|
||
BlockControlEventsEmitting свойство: "Не генерировать события от элементов управления" (слайдеров, кнопок и т.д.); нужно, например, чтобы предотвратить slider.setPosition при его enable/disable
|
||
HideSyncIcon свойство: "Скрыть/показать иконку обновления статуса"
|
||
Initialize метод (событие): действия при инициализации "экрана" (однократно)
|
||
BackPressed метод (событие): действия при нажатии системной кнопки "Назад" на главном "экране"
|
||
ConnectivityButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" устройств
|
||
ModesButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" эффектов
|
||
FavoritesButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" избранных эффектов
|
||
AlarmButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" будильника
|
||
TimerButtonClick метод (событие): действия при нажатии кнопки перехода на "экран" таймера
|
||
OnOffButtonClick метод (событие): действия при нажатии кнопки Вкл/Выкл
|
||
BrightnessSliderPositionChanged метод (событие): действия при изменении слайдера яркости
|
||
SpeedSliderPositionChanged метод (событие): действия при изменении слайдера скокрости
|
||
ScaleSliderPositionChanged метод (событие): действия при изменении слайдера масштаба
|
||
BrightnessListPickerAfterPicking метод (событие): действия при выборе точного значения яркости из контекстного списка
|
||
SpeedListPickerAfterPicking метод (событие): действия при выборе точного значения скорости из контекстного списка
|
||
ScaleListPickerAfterPicking метод (событие): действия при выборе точного значения масштаба из контекстного списка
|
||
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
|
||
PopulateListPickerElements метод: заполнить контекстный список яркости/скорости/масштаба эффектов значениями, близкими к текущей позиции соответствующего слайдера
|
||
SetDebugText метод: установить отладочный текст основной отладочной текстовой метке
|
||
|
||
ConnectivityScreen
|
||
Visible свойство: "Видимость экрана устройств"
|
||
HideSyncIcon свойство: "Скрыть/показать иконку обновления статуса"
|
||
IpAddressInputLostFocus метод (событие): действия при потери фокуса поля ввода IP адреса
|
||
PortInputLostFocus метод (событие): действия при потери фокуса поля ввода порта
|
||
SaveConnectionButtonClick метод (событие): действия при нажатии на кнопку "Добавить"
|
||
RemoveConnectionButtonClick метод (событие): действия при нажатии на кнопку "Удалить"
|
||
SaveAllConnectionButtonClick метод (событие): действия при нажатии на кнопку "Сканировать и добавить"
|
||
DeviceSocketListViewAfterPicking метод (событие): действия при выборе устройства из списка сохранённых и его подключение
|
||
BaсkButtonClick метод (событие): действия при нажатии кнопки "Назад" на "экране" устройств
|
||
SettingsButtonClick метод: отобразить экран настроек
|
||
UpdateConnectivityStatus метод: обновить статус устройства "Подключен"/"Отключен" на "экране" устройств
|
||
UpdateCurrentDeviceSocket метод: отобразить текущее устройство (DeviceManager.CurrentDeviceSocket) в полях ввода IP адреса и порта на "экране" устройств
|
||
UpdateCurrentDevicesSockets метод: отобразить текущий список сохранённых устройств (DeviceManager.Devices) на "экране" устройств
|
||
ValidateAndAddDeviceSocketToList метод: валидировать значения полей ввода IP адреса и порта и добавть запись в список сохранённых устройств; перерисовать этот список
|
||
UpdateScreen метод: обновить все элементы управления на "экране" устройств согласно модели данных
|
||
|
||
ModesScreen
|
||
Visible свойство: "Видимость экрана эффектов"
|
||
ModesListViewAfterPicking метод (событие): действия при выборе эффекта из списка эффектов
|
||
BaсkButtonClick метод (событие): действия при нажатии кнопки "Назад" на "экране" эффектов
|
||
|
||
FavoritesScreen
|
||
Visible свойство: "Видимость экрана устройств"
|
||
Initialized свойство: "Экран автоматического переключения избранных эффектов инициализирован"
|
||
BlockControlEventsEmitting свойство: "Не генерировать события от элементов управления" (переключателей, лист пикеров и т.д.)
|
||
BaсkButtonClick метод (событие): действия при нажатии кнопки "Назад" на "экране" избранных эффектов
|
||
OnOffSwitchChanged метод (событие): действия при установке/снятии переключателя включения режима избранных эффектов
|
||
IntervalListPickerAfterPicking метод (событие): действия при выборе интервала времени (статической состявляющей) между автоматическими переключениями избранных эффектов
|
||
DispersionListPickerAfterPicking метод (событие): действия при выборе разброса времени (случайной состявляющей) между автоматическими переключениями избранных эффектов
|
||
UseSavedOnOffSwitchChanged метод (событие): действия при сохранении/удалении сохранённого состояния переключателя включения режима избранных эффектов
|
||
ListViewIconClick метод (событие): действия при добавлении/удалении эффекта в/из список избранных
|
||
ListViewelementTouchUp метод (событие): служебный метод, необходимый для корректной отрисовки фона элемента в списке избранных эффектов
|
||
Initialize метод: настраивает и заполняющий специфический (кастомный) компонент ListViewer
|
||
MarkListItemAsFavorite метод: устанавливает признак включения/исключения эффекта в избранные в свойстве "состояние режима избранных эффектов"
|
||
UpdateScreen метод: обновить все элементы управления на "экране" избранных эффектов согласно модели данных
|
||
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
|
||
SetFavoriteSettings метод: меняет состояние "экрана" избранных эффектов (устанавливает недоступность элементов управления и отображает анимацию) и вызывает DeviceManager.SetFavoriteSettings
|
||
SetIntervalListPicker метод: иниицализирует значение поля выбора интервала времени автоматической смены избранных эффектов согласно модели данных
|
||
SetDispersionListPicker метод: иниицализирует значение поля выбора разброса времени автоматической смены избранных эффектов согласно модели данных
|
||
|
||
AlarmScreen
|
||
Visible свойство: "Видимость экрана устройств"
|
||
Initialized свойство: "Экран управления будильниками инициализирован"
|
||
BlockControlEventsEmitting свойство: "Не генерировать события от элементов управления" (переключателей, тайм пикеров и т.д.); нужно, например, чтобы предотвратить switch.changed при его enable/disable
|
||
BaсkButtonClick метод (событие): действия при нажатии кнопки "Назад" на "экране" будильника
|
||
MonSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
|
||
TueSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
|
||
WedSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
|
||
ThuSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
|
||
FriSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
|
||
SatSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
|
||
SunSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
|
||
MonTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
|
||
TueTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
|
||
FriTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
|
||
WedTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
|
||
ThuTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
|
||
SatTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
|
||
SunTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
|
||
TimeBeforeAlarmListPickerAfterPicking метод (событие): действия при выборе времени срабатывания будильника перед "рассветом"
|
||
UpdateScreen метод: обновить все элементы управления на "экране" управления будильниками согласно модели данных
|
||
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
|
||
|
||
TimerScreen
|
||
Visible свойство: "Видимость экрана устройств"
|
||
Initialized свойство: "Экран управления таймером инициализирован"
|
||
BlockControlEventsEmitting свойство: "Не генерировать события от элементов управления" (лист пикера); нужно, например, чтобы предотвратить listpicker.afterpicking при его enable/disable
|
||
AnimationTimerOn свойство: "таймер, управляющий анимацией функции таймера лампы, включен"
|
||
RemainingSeconds свойство: "время до срабатывания таймера лампы" и одновремнно "время до окончания работы таймера, управляющего анимацией функции таймера лампы"
|
||
TimerTickMs свойство: "шаг таймера, управляющего анимацией функции таймера лампы"
|
||
BaсkButtonClick метод (событие): действия при нажатии кнопки "Назад" на "экране" таймера
|
||
TimeListPickerAfterPicking метод (событие): действия при выборе пользователем времени до срабатывания таймера лампы (отправка команды модулю)
|
||
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
|
||
UpdateScreen метод: обновить все элементы управления на "экране" управления таймером согласно модели данных
|
||
GetRemainingLabelText метод: получить текст для вывода на метке оставшегося до срабатывания таймера времени
|
||
GetTimerSecondsToFire метод: получить количество секунд до срабатывания таймера из полученного в качестве аргумента значения TimeListPicker (выбранной пользователем опции)
|
||
HandleAnimation метод: обработать таймер, управляющий анимацией функции таймера лампы (запуск, если не запущен, принудительная остановка, если нужно)
|
||
AnimationTimerTimerNow метод: действия при срабатывании события таймера, управляющий анимацией функции таймера лампы (показать/скрыть иконку, обновить текст оставшегося времени)
|
||
StopAnimationTimer метод: остановить таймер, управляющий анимацией функции таймера лампы, сбросить его сохранённое состояние в исходное (модель данных)
|
||
|
||
SettingsScreen
|
||
Visible свойство: "Видимость экрана настроек"
|
||
Initialized свойство: "Экран настроек инициализирован"
|
||
BlockControlEventsEmitting свойство: "Не генерировать события от элементов управления" (переключателя); нужно, например, чтобы предотвратить switch.changed при его enable/disable
|
||
BaсkButtonClick метод (событие): действия при нажатии кнопки "Назад" на "экране" настроек
|
||
OtaButtonClick метод (событие): действия при нажатии кнопки "Режим обновления" на "экране" настроек
|
||
ButtonEnabledSwitchChanged метод (событие): действия при установке/снятии переключателя разблокировки аппаратной кнопки на лампе
|
||
UpdateScreen метод: обновить все элементы управления на "экране" настроек согласно модели данных
|
||
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
|
||
|
||
DeviceManager
|
||
Connected свойство: подключено ли устройство (лампа) точнее, был ли получен ответ на последнюю высланную ему команду
|
||
State свойство: полученное командой GET состояние устройства (CURR...), список (не строка)
|
||
Devices свойство: список устройств (хранимое свойство)
|
||
CurrentDeviceSocket свойство: текущее устройство (хранимое свойство)
|
||
FavoritesState свойство: текущее состояние избранных эффектов (вкл/выкл, интервал, разброс, список эффектов)
|
||
AlarmState свойство: текущее состояние будильников по дням (вкл/выкл, время каждого, время срабатывания перед "рассветом")
|
||
TimerState свойство: текущее состояние таймера (ответ команды TMR_GET)
|
||
Modes свойство: список доступных режимов, захардкожен одновременно в лампе и в приложении, должен совпадать
|
||
Initialize метод: вычитывание хранимых свойств и инициализация соответствующих переменных
|
||
ConnectDeviceSocket метод: стартовать таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство
|
||
DisconnectDeviceSocket метод: остановить таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство; очистить свойства Connected и State
|
||
GetCurrentModeId метод: получить номер текущего эффекта (из свойства State)
|
||
GetCurrentModeName метод: получить имя текущего эффекта (из свойства State)
|
||
GetCurrentBrightness метод: получить значение текущей яркости (из свойства State)
|
||
GetCurrentSpeed метод: получить значение текущей скорости (из свойства State)
|
||
GetCurrentScale метод: получить значение текущего масштаба (из свойства State)
|
||
GetCurrentOn метод: получить значение текущего состояния Вкл/Выкл (из свойства State)
|
||
GetCurrentEspMode метод: получить значение текущего состояния ESP_MODE (из свойства State)
|
||
GetCurrentUseNtp метод: получить значение текущего состояния USE_NTP 9из свойства State)
|
||
GetTimerOnOffFromState метод: получить значение текущего состояния таймера (из свойства State)
|
||
GetButtonEnabled метод: получить значение текущего состояния (заблокирована/разблокирована) аппаратной кнопки на лампе
|
||
GetCurrentTime метод: получить значение текущего времени на устройстве (из свойства State)
|
||
SaveDeviceSocketSettings метод: сохранить с базу данных приложения хранимые значения (текущее стройство и список устройств)
|
||
SetDeviceOffline метод: установить свойства Connected и State в начальное состояние (очистить), соответствует состоянию "устройство не подключено"
|
||
ResetCurrentDevice метод: установить свойство CurrentDeviceSocket в начальное состояние (очистить), соответствует состоянию "устройство не выбрано"
|
||
ResetCurrentDevices метод: установить свойство Devices в начальное состояние (очистить), соответствует состоянию "профили устройств не заданы"
|
||
ValidateIpPort метод: валидировать переданное в качестве параметра значение IP адреса или порта
|
||
SendUdpCommand метод: отправить команду, приянтую в качестве входного аргумента, на подключенное устройствоС (обобщённый метод)
|
||
HandleDeviceResponse метод: обработать ответ от подключенного устройства на отправленные команды
|
||
ResetAlarmState метод: "забыть" состояние будильников в android приложении (перед последующим запросом этого состояния)
|
||
GetAlarmsSettings метод: отправить команду запроса состояния будильников ALM_GET на устройство
|
||
GetAlarmOnOff метод: получить состояние вкл/выкл будильника для указанного во входном аргументе дня (из свойства AlarmState)
|
||
GetAlarmTime метод: получить время срабатывания будильника для указанного во входном аргументе дня (из свойства AlarmState)
|
||
GetTimeBeforeAlarmIndex метод: получить время срабатывания будильника перед "рассветом"
|
||
SetAlarmOnOff метод: отправить команду вкл/выкл будильника для заданного дня ALM_SET на устройство
|
||
SetAlarmTime метод: отправить команду установки времени срабатывания будильника для заданного дня ALM_SET на устройство
|
||
SetTimeBeforeAlarm метод: отправить команду установки времени срабатывания будильника перед "рассветом" DAWN на устройство
|
||
ResetTimerState метод: "забыть" состояние таймера в android приложении (перед последующим запросом этого состояния)
|
||
GetTimerSettings метод: отправить команду запроса состояния таймера TMR_GET на устройство
|
||
GetTimerOnOff метод: получить значение текущего состояния таймера (из свойства TimerState)
|
||
GetTimerTimeOption метод: получить выбранное пользователем значение предуст ановки времени таймера (из свойства TimerState)
|
||
GetTimerRemainingSeconds метод: получить оставшееся до срабатывания таймера время (из свойства TimerState)
|
||
SetTimerSettings метод: отправить команду установки таймера TMR_SET
|
||
GetFavoriteSettings метод: отправить команду запроса состояния избранных эффектов FAV_GET на устройство
|
||
SetFavoriteSettings метод: отправить команду установки состояния избранных эффектов FAV_SET
|
||
GeFavoritesModeOnOff метод: получить состояние (включен/исключён в избранные) для заданного эффекта (из свойства FavoritesState)
|
||
SeFavoritesModeOnOff метод: установить состояние (включен/исключён в избранные) для заданного эффекта (из свойства FavoritesState)
|
||
GeFavoritesOnOff метод: получить состояние вкл/выкл режима избранных эффектов (из свойства FavoritesState)
|
||
GeFavoritesInterval метод: получить интервал времени смены избранных эффектов (из свойства FavoritesState)
|
||
GeFavoritesDispersion метод: получить разброс времени смены избранных эффектов (из свойства FavoritesState)
|
||
GetFavoritesUseSavedOnOff метод: получить сохранённое состояние переключателя включения режима избранных эффектов
|
||
GeFavoritesModesList метод: получить список эффектов с указанным состояние (включен/исключён в избранные) для каждого из них
|
||
RequestOtaUpdate метод: перевести лампу в состояние ожидания прошивки по воздуху
|
||
SendEnableHardwareButtonCommand метод: установить состояние (заблокирована/разблокирована) аппаратной кнопки на лампе
|
||
|
||
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 свойство: интервал времени, через который будет сгенерировано событие таймера
|
||
LastResponse свойство: текст последнего полученного ответа от модуля esp
|
||
LastResponseTime свойство: время последнего полученного ответа от модуля esp
|
||
TimerTimerNow метод (событие): действия при срабатывании события polling таймера (отправка команд и перезапуск таймера)
|
||
UdpClientRecieved метод (событие): действия при получении ответа на отправленные команды от подключенного устройства
|
||
StartPolling метод: старт polling таймера
|
||
StopPolling метод: стоп polling таймера
|
||
UpdateDeviceStatus метод: обновить сворйство DeviceManager.Connected, если не установлена (или пропала) связь с устройством; ввиду специфики реализации библиотечного компонента UDP Client приложение постоянно получает его события Recieved с последней строкой-ответом от модуля esp; отсутствие связи с модулем определяется как повторяющийся ответ (он уникален, потому что содержит время) или устаревший ответ (время последнего ответа больше интервала таймера)
|
||
RequestDeviceState метод: запросить состояние устройства (определить команду и отправить её в udp пакете)
|
||
SendGetCommandToDevice метод: отправить команду GET на подключенное устройство
|
||
SendPowerOnOffCommandToDevice метод: отправить команды On/Off (в зависимости от входного параметра) на подключенное устройство
|
||
SendSetModeCommandToDevice метод: отправить команду смены эффекта на подключенное устройство
|
||
SendSetBrightnessCommandToDevice метод: отправить команду установки яркости на подключенное устройство
|
||
SendSetSpeedCommandToDevice метод: отправить команду установки скорости на подключенное устройство
|
||
SendSetScaleCommandToDevice метод: отправить команду установки масштаба на подключенное устройство
|
||
|
||
StringHelper
|
||
GetIpPortString метод: получить строку формата IP:PORT из входных параметров IP и PORT
|
||
GetIpFromIpPortString метод: получить IP из входного параметра формата IP:PORT
|
||
GetPortFromIpPortString метод: получить PORT из входного параметра формата IP:PORT
|
||
GetFormattedTimeFromMinutes метод: получить строку с временем в формате hh:mm из входного аргумента (количество минут)
|
||
GetMinutesFromFormattedTime метод: получить количество минут из форматированной строки (hh:mm), переданной в качестве входного аргумента
|
||
|