# Settings for the screen agent. Edited on the board over SSH or serial;
# a fresh image is not needed to move a fleet to another server.

# The DashDash server this screen reports to.
BACKEND_URL=__BACKEND_URL__

# Shown in the organisation's device list, so a person can tell which board
# is which without reading uuids.
DASHDASH_MODEL=bananapim2zero

# Identity and token live here. Survives everything except reflashing.
DASHDASH_STATE_DIR=/etc/dashdash

# nmcli on the board; "fake" is for a developer's laptop only.
DASHDASH_NETWORK=nmcli

SCREEN_PORT=3000
PORTAL_PORT=80

# Проверять обновления самому: после запуска и дальше раз в сутки. Экраны
# висят на стенах годами, и ждать, пока кто-то нажмёт кнопку в админке для
# каждого, — способ навсегда остаться на первой версии.
#
# Обновление ставится только целиком успешное: если после установки агент не
# отвечает, плата сама возвращает предыдущую версию.
DASHDASH_AUTO_UPDATE=yes
DASHDASH_UPDATE_CHECK_HOURS=24

# Кэш программы и медиа: экран продолжает показывать последние данные и те же
# картинки, пока сервер недоступен. Каталог создаёт systemd (StateDirectory).
DASHDASH_CACHE_DIR=/var/lib/dashdash
# Сколько места на карте отдаём под картинки и видео.
DASHDASH_MEDIA_CACHE_MB=512

# Подкачка. Две ступени: сжатая память, потом файл на карте.
#
# ---- ступень первая: zram -------------------------------------------------
#
# Размер в процентах от объёма платы; DASHDASH_ZRAM_MB, если задан, важнее.
# Это не «сколько памяти добавится»: zram хранит страницы сжатыми в той же
# оперативной памяти. 50% от 452 МБ — это 226 МБ подкачки, за которые плата
# платит 70–110 МБ настоящей памяти, потому что страницы браузера жмутся
# примерно втрое.
#
# 0 — выключить. Если подкачка на плате уже есть (её поднял Armbian), эти
# настройки не делают ничего.
DASHDASH_ZRAM_PERCENT=50
#DASHDASH_ZRAM_MB=512
DASHDASH_ZRAM_ALGO=lz4

# Потолок настоящей памяти под сжатое хранилище, в процентах от объёма платы.
#
# Именно он, а не размер, решает, безопасен ли большой zram. Размер — это
# сколько страниц влезет, если они сожмутся как обещано; сколько памяти
# займёт само хранилище, из него не следует. На плохо сжимаемых данных
# отношение стремится к единице, и тогда ядро вытесняет страницы, чтобы
# освободить память, в хранилище, которое от этого растёт. Потолок обрывает
# эту спираль: упёрлись — ядро идёт на следующую ступень. 0 — без потолка.
DASHDASH_ZRAM_MEM_LIMIT_PERCENT=40

# ---- ступень вторая: файл на карте ----------------------------------------
#
# Включается только когда сжатая память упёрлась в потолок (приоритет ниже).
# Оперативной не отнимает ни байта, но карта отвечает миллисекундами вместо
# микросекунд и от записи изнашивается. Для экрана, которому важнее дожить до
# утра, чем ответить быстро, — разумный последний рубеж. 0 — не создавать.
DASHDASH_SWAPFILE_MB=256
DASHDASH_SWAPFILE=/var/swap

# Дополнительные аргументы браузера.
#
# Киоск запускает `cage -- cog --platform=wl`; сюда можно добавить своё, не
# пересобирая образ. Платформа здесь именно wl, а не drm: в drm cog забирает
# DRM master себе, и проигрывателю видео, который рисует вторым окном поверх
# браузера, рисовать становится некуда.
#   COG_EXTRA_FLAGS=--ignore-tls-errors
COG_EXTRA_FLAGS=

# Про видео: готовьте ролики под экран.
#
# Аппаратного декодирования на этой плате нам недоступно. VA-API на sunxi не
# существует, а мейнлайновый Cedrus через v4l2codecs не договаривается о
# формате: «DMABuf caps negotiated without the mandatory support of VideoMeta»,
# после чего конвейер разваливается. В Chromium поддержка V4L2 в сборке есть
# (видно в strings), но с --enable-features=V4L2FlatStatelessVideoDecoder
# ничего не меняется.
#
# Измерено на плате: программное декодирование 1080p30 даёт около 24 кадров в
# секунду при нужных 30 — отсюда заметные подёргивания. 720p идёт ровно.
# Поэтому уменьшение видео на стороне сервера при загрузке файла — не
# пожелание, а требование.
