Описание функциональных характеристик

Встроенное программное обеспечение видеоларингоскопа «СЕНСАР»

Версия ПО: 1.15
Дата: 23.02.2026

1. Общие сведения

Встроенное программное обеспечение видеоларингоскопа «СЕНСАР» является управляющим программным обеспечением видеоларингоскопа, предназначенного для визуализации дыхательных путей и голосовых связок во время эндотрахеальной интубации, а также для осмотра и обследования верхних дыхательных путей, в том числе при проведении отдельных ЛОР-процедур.

Программное обеспечение обеспечивает захват изображения с эндоскопической камеры в режиме реального времени, отображение видеопотока на встроенном дисплее, фотосъёмку и видеозапись, просмотр медиатеки, передачу видеопотока по сети, а также управление системными параметрами устройства.

Целевое аппаратное обеспечение: встраиваемая платформа на базе системы-на-кристалле Rockchip RV1126 с процессорным ядром ARM Cortex-A7 (4 ядра).

Программное обеспечение разработано на языке C++11 с применением фреймворка Qt версии 5.9.4 и декларативного языка разметки интерфейса QML.

Версия программного обеспечения: 1.15

Область применения: медицинские учреждения, скорая медицинская помощь, анестезиология и реаниматология.

Идентификационные наименования компонентов:

Исполняемый файл: sensar
Файл проекта Qt: src/sensar.pro
Точка входа: src/main.cpp
QML точка входа: qrc:/qml/main.qml

2. Архитектура системы

2.1. Общая структура

Программное обеспечение построено по модульной архитектуре. Ядро системы реализовано на языке C++11 и отвечает за бизнес-логику, взаимодействие с аппаратным обеспечением и управление ресурсами.

Пользовательский интерфейс реализован на декларативном языке QML с применением фреймворка Qt Quick.

Основной паттерн организации: синглтон — каждый функциональный модуль представлен единственным экземпляром объекта, созданным в функции main() и зарегистрированным в контексте QML.

Взаимодействие между модулями осуществляется через механизм сигналов и слотов Qt.

2.2. Реестр синглтонов

Имя в QML Класс C++11 Описание
splashScreenSplashScreenУправление экраном загрузки
navigationControllerNavigationControllerСтековая навигация между экранами
cameraManagerCameraManagerУправление жизненным циклом камеры
mediaStorageMediaStorageУправление хранилищем медиафайлов
photoCapturePhotoCaptureФотосъёмка
videoEncoderVideoEncoderВидеозапись
inputHandlerInputHandlerОбработка аппаратных кнопок
galleryModelGalleryModelМодель фотогалереи
videoGalleryModelVideoGalleryModelМодель видеогалереи
systemMetricsSystemMetricsСбор метрик производительности
diskSpaceMonitorDiskSpaceMonitorМониторинг дискового пространства
batteryWarningControllerBatteryWarningControllerПредупреждения о заряде батареи
autoCleanupAutoCleanupАвтоматическая очистка хранилища
settingsManagerSettingsManagerУправление настройками
wifiManagerWiFiManagerУправление Wi-Fi подключением
mjpegServerMjpegStreamingServerHTTP MJPEG стриминг
tcpStreamTcpStreamClientTCP мониторинг
nfcReaderNfcConfigReaderСчитывание конфигурации с NFC
TranslationsTranslationsЛокализация интерфейса
brightnessControllerBrightnessControllerУправление яркостью
inactivityMonitorInactivityMonitorМониторинг бездействия

2.3. QML-типы

MjpegAviPlayer — воспроизведение видеозаписей в формате MJPEG AVI;
CameraPreviewItem — отображение кадров с камеры в режиме реального времени.

2.4. Диаграмма межмодульных зависимостей

nfcReader → wifiManager: передача параметров Wi-Fi;
wifiManager → tcpStream: изменение состояния подключения;
nfcReader → tcpStream: передача TCP конфигурации;
cameraManager → tcpStream: передача JPEG кадров;
cameraManager → systemMetrics: подсчёт FPS.

3. Аппаратная платформа

Компонент Характеристика
ПроцессорRockchip RV1126, ARM Cortex-A7 x4
ОЗУ1.75 ГБ DDR
НакопительeMMC
Дисплей4.5” IPS, 854×480
КамераUSB UVC, до 1280×720
БатареяLi-ion
Wi-Fi802.11 b/g/n
NFCFM17580
Кнопки6 аппаратных
LEDwork_led
USBType-C
Подсветка0–255

4. Модуль управления камерой

4.1. Состав модуля

V4L2Camera — низкоуровневое взаимодействие с камерой через Video4Linux2;
CameraManager — управление жизненным циклом камеры;
CameraWatchdog — мониторинг подключения камеры.

4.2. Инициализация и автообнаружение

При запуске выполняется сканирование устройств /dev/video0 — /dev/video9. После обнаружения камера инициализируется с выбором оптимального формата и разрешения.

CameraWatchdog работает в отдельном потоке и проверяет состояние камеры каждую секунду.

4.3. Поддерживаемые форматы и разрешения

Приоритет форматов:

1. MJPEG
2. YUYV
3. RGB24

Разрешения:

1920×1080
1280×720
960×540
640×480

4.4. Буферизация

Используется V4L2 mmap:

VIDIOC_REQBUFS
VIDIOC_QBUF
VIDIOC_DQBUF

4.5. Декодирование

Используется libturbojpeg:

Формат: TJPF_BGRA
Флаг: TJFLAG_FASTDCT
Аппаратное ускорение: SIMD NEON

При 720p выполняется downscale до 640×360.

4.6. Публикация кадров

frameReady(QImage) — кадр для UI
rawFrameReady — JPEG данные

5. Модуль фотосъёмки

Класс: PhotoCapture

Формат: JPEG
Разрешение: максимальное
Имя файла: photo_yyyyMMdd_HHmmss.jpg
Путь: /userdata/media/photos/

После сохранения обновляется GalleryModel.

6. Модуль видеозаписи

Класс: VideoEncoder

Контейнер: AVI
Кодек: MJPEG
Частота: 30 fps
Имя: video_yyyyMMdd_HHmmss.avi
Путь: /userdata/media/videos/

Создаётся thumbnail для галереи.

Запись управляется кнопкой SENSAR_TRIGGER.

Во время записи InactivityMonitor не даёт устройству уснуть.

7. Модуль воспроизведения видео

7.1. Состав

MjpegAviPlayer — QML компонент
MjpegDecoderWorker — поток декодирования

7.2. Парсинг AVI

Проверка RIFF сигнатуры.
Чтение usPerFrame (смещение 0x20).
Если отсутствует — используется 15 fps.

7.3. Индексирование кадров

Используется chunk idx1.
При отсутствии — полный скан файла.

Файл мапится в память (mmap).

7.4. Декодирование

libturbojpeg:
TJPF_BGRA
TJFLAG_FASTDCT

При ширине ≥1280 выполняется downscale.

7.5. Тайминг воспроизведения

Цепочечный таймер — следующий кадр после рендера предыдущего.

Адаптивное планирование:

Компенсация задержек
Сброс при отставании >3 кадров

7.6. QML API

Свойство / Метод Тип Описание
sourcestringПуть к файлу
playingboolСостояние
durationintДлительность
positionintПозиция
play()методЗапуск
pause()методПауза
stop()методСтоп
seek(pos)методПереход
seekRelative(delta)методОтносительный переход

8. Модуль галерей

8.1. Классы

GalleryModel — модель фотогалереи
VideoGalleryModel — модель видеогалереи

8.2. Фотогалерея

Файлы: /userdata/media/photos/
Сортировка: от новых к старым

8.3. Видеогалерея

Файлы: /userdata/media/videos/
Отображается длительность
Сортировка: от новых к старым

8.4. Кэш миниатюр

Тип: in-memory
Размер: 50 элементов
Размер миниатюры: 210×155

9. Модуль отображения

9.1. Классы

CameraPreviewItem — отображение кадра
FrameProvider — поставщик изображений

9.2. Рендеринг

Используется QPainter::drawImage.
Синхронизация через QMutex.

При отсутствии сигнала — чёрный экран.

10. Сетевой модуль: Wi-Fi

Класс: WiFiManager

10.1. Аппаратный интерфейс

Интерфейс: wlan0
Стандарт: 802.11 b/g/n
Управление: wpa_cli
IP: udhcpc

10.2. Управление питанием

iw dev wlan0 set power_save off

10.3. Таймеры

Таймер Интервал Назначение
Статус подключения5 секПроверка состояния
Сигнал изменения10 секУведомление UI
Сканирование3 секЧтение сетей

10.4. Шкала сигнала

RSSI Уровень
≥ −504 (отличный)
−60 … −513
−70 … −612
−80 … −711
< −800

10.5. Парсинг

Формат: bssid, freq, signal, flags, ssid

11. Сетевой модуль: MJPEG стриминг

Класс: MjpegStreamingServer

Протокол: HTTP
GET /stream
Порт: 8080
Content-Type: multipart/x-mixed-replace

Каждый кадр:
Content-Type: image/jpeg
Content-Length + JPEG данные

Поддержка нескольких клиентов.

Стриминг активен при наличии Wi-Fi.

12. Сетевой модуль: TCP монитор

Класс: TcpStreamClient

12.1. Назначение

Передача видеопотока по TCP (ImagePDU)

12.2. Параметры

Порты: 6123, 1312
SO_SNDBUF 512 КБ
TCP_NODELAY
MSG_NOSIGNAL

12.3. Протокол

Префикс: ##100006##
Длина: 4 байта
Данные: JPEG

12.4. Handshake

1. Отправка ##100002##
2. Таймаут 3 сек
3. Проверка ответа

12.5. Перекомпрессия

JPEG → quality=30
TJFLAG_FASTDCT

12.6. Тайм-ауты

50 мс — отмена начала
500 мс — отмена отправки

12.7. Сканирование

Приоритетные хосты:
1, 100, 200, 50, 2, 254, 101, 10, 81

Таймауты:
150 мс — приоритет
100 мс — остальные

12.8. Переподключение

Параметр Значение
Задержка3 сек
Циклы5
Пауза5 сек
Попытки10
Пауза попыток1 сек

12.9. LED индикация

Подключено — постоянный свет
Нет — мигание

13. Сетевой модуль: NFC

Классы: NfcConfigReader, NfcUartWorker

13.1. Аппаратное обеспечение

Чип: FM17580
Интерфейс: UART (/dev/ttyS4)
Скорость: 115200 бод

13.2. Протокол

Инициализация: 6 байт
Poll: 16 байт (каждую секунду)

13.3. Формат данных

SSID|PASSWORD

Минимум: 5 байт
Длина: recv_buf[3]

13.4. Поллинг

Отдельный поток pthread
select таймаут: 10 сек

13.5. Передача

tagRead → wifiConfigReceived → WiFiManager

14. Модуль настроек

Класс: SettingsManager

14.1. Хранение

Формат: JSON
Путь: /userdata/settings.json

14.2. Параметры

Параметр Тип Значения Описание
Wi-Fibooltrue/falseВкл/выкл
Дата/времяstringISO 8601Системное время
Формат времениenum24h/12hОтображение
Яркостьint0–255Подсветка
ЯзыкenumRU/ENИнтерфейс

14.3. Сохранение

Debounce: запись через 500 мс после изменения

15. Модуль яркости

Класс: BrightnessController

Путь: /sys/class/backlight/backlight/brightness
Диапазон: 0–255

Значение сохраняется в SettingsManager.

16. Модуль энергосбережения

Класс: InactivityMonitor

16.1. Состояния

Активное
Ожидание
Сон

16.2. Таймеры

Таймер Интервал Действие
Бездействие600000 мсСон
Обратный отсчёт10 секПереход
Автовыключение1800000 мсpoweroff

16.3. Переход в сон

Остановка камеры
Сохранение яркости
brightness = 0
LED off
Отключение питания

16.4. Пробуждение

USB on
LED on
Восстановление яркости
execv() перезапуск

16.5. Исключение

При видеозаписи сон отключён

16.6. Сброс таймера

InactivityMonitor::resetActivity()

17. Модуль батареи

Класс: BatteryWarningController

17.1. Источник

/sys/class/power_supply/rk-bat/capacity

17.2. Пороги

Уровень Действие
35%Предупреждение
30%Предупреждение
25%Предупреждение
20%Предупреждение
15%Предупреждение
10%Предупреждение
5%Предупреждение

17.3. Цвета

Заряд Цвет
≥ 60%Зелёный
40–59%Жёлтый
20–35%Оранжевый
< 20%Красный

18. Модуль дискового пространства

Классы: DiskSpaceMonitor, AutoCleanup

18.1. Мониторинг

Интервал: 30 сек

18.2. Индикация

Заполненность Цвет
< 70%Зелёный
70–89%Жёлтый
≥ 90%Красный

18.3. Автоочистка

Запуск при >70%
Очистка до 30%
Удаляются старые файлы

19. Модуль ввода

Класс: InputHandler

19.1. Архитектура

/dev/input/event0–4
O_RDONLY | O_NONBLOCK
QSocketNotifier
EV_KEY

19.2. Таблица кнопок

Имя Код Значение Назначение
SENSAR_TRIGGER59KEY_F1Фото/видео
SENSAR_OK30KEY_AПодтверждение
SENSAR_UP103KEY_UPВверх
SENSAR_DOWN108KEY_DOWNВниз
SENSAR_MENU48KEY_BМеню
SENSAR_POWER116KEY_POWERПитание

19.3. Кнопка питания

Удержание >2 сек:
Отключение подсветки
sync()
/sbin/poweroff
_exit(0)

19.4. Сброс таймера

InactivityMonitor::resetActivity()

20. Модуль локализации

Класс: Translations

Языки:
RU
EN

Хранение строк в C++.
Обновление без перезапуска.

21. Модуль логирования

Класс: Logger

Путь: /tmp/sensar.log
Пересоздаётся при запуске

Уровни:
DEBUG
INFO
WARNING
CRITICAL

22. Модуль метрик

Класс: SystemMetrics

Файл: /userdata/logs/sensar_metrics.csv
Формат: CSV

Метрика Источник
FPSCameraManager
RAM/proc/meminfo
CPU/proc/stat
Температура/sys/class/thermal
Дискstatvfs()
Батарея/sys/class/power_supply

23. Пользовательский интерфейс

23.1. Технология

Qt Quick / QML
854×480
Сенсор + кнопки

23.2. Экраны

Экран Описание
SplashScreenЗагрузка
MainMenuМеню
CameraViewКамера
PhotoGalleryФото
PhotoViewerПросмотр фото
VideoGalleryВидео
VideoPlayerПлеер
GuideScreenИнструкция
SettingsScreenНастройки
WifiSettingsScreenWi-Fi

23.3. Оверлеи

Оверлей Назначение
StatusBarСтатус
BatteryWarningБатарея
SleepCountdownСон
DiskWarningДиск
NfcOverlayNFC

23.4. Навигация

NavigationController
Стек экранов

23.5. Руководство

Текст + изображения
Локализация

23.6. Настройки

Язык
Яркость
Формат времени
Дата/время
Диск

23.7. Wi-Fi экран

Вкл/выкл
Сканирование
Подключение
Статус

24. Форматы данных

Тип Формат Расширение Путь Описание
ФотоJPEG.jpg/userdata/media/photos/Полное
ВидеоMJPEG AVI.avi/userdata/media/videos/30 fps
НастройкиJSON.json/userdata/settings.jsonПараметры
МетрикиCSV.csv/userdata/logs/Данные
ЛогText.log/tmp/Журнал

25. Библиотеки и зависимости

Библиотека Назначение
Qt 5.9.4UI
FFmpegAVI
libturbojpegJPEG
POSIXСистемные API
wpa_supplicantWi-Fi
udhcpcDHCP

Компиляция: ARM Cortex-A7 (armhf), C++11

26. Системные требования

26.1. Ресурсы

Ресурс Требование
ОЗУ~100 МБ
Диск≥ 500 МБ
CPU≥ 1 ГГц

26.2. Ограничения

Нет H.264 — используется MJPEG
LED не отключается программно
Графика: linuxfb / DRM

26.3. ОС

Linux
V4L2, evdev, sysfs
wpa_supplicant
udhcpc
iw

Сведения о документе

Версия: 1.15
Дата: 23.02.2026
Разработчик: ООО «ШИФТАПП»

Контакты
+7 (495) 161-60-21
info@sensar.su

Фактический адрес:
г. Москва, ул. 3-я Рыбинская, д. 18с22

Юридический адрес:
105122, г. Москва, вн. тер. г. муниципальный округ Измайлово, Сиреневый бульвар, д. 4, к. 3, помещ. 1/1

Обработка персональных данных на основании 152-ФЗ

OK
© ООО "СЕНСАР" 2024