service - Фонові сервіси

Запуск, зупинка та перегляд скриптів, які працюють у фоні.

class service

Фонові сервіси - скрипти, які працюють у фоні, поки ви користуєтесь іншими програмами.

Фоновий сервіс не має доступу до екрана та кнопок, тому модулі display, controller, resources, transforms, UI та audio в ньому недоступні. Помилки сервісу виводяться в серійний порт.

Сервіс спочатку виконує скрипт повністю, а потім викликає lilka.init() та раз на service.interval секунд - lilka.update(delta), якщо ці функції визначені. Можна також просто написати нескінченний цикл з util.sleep().

Ім’я сервісу складається з префікса мови та імені файлу без розширення: lua:autorun, js:blink. Одночасно може працювати лише один сервіс з таким іменем.

Автозапуск: якщо в корені SD-карти є файли autorun.lua або autorun.js, вони запускаються як фонові сервіси при старті Keira. Автозапуск вимикається в меню «Налаштування» → «Сервіси» → «Автозапуск».

Примітка

Сервіс зупиняється під час наступного util.sleep() або, для Lua, після кількох інструкцій. Блокуючі виклики (наприклад, http.execute) не перериваються. JavaScript-сервіс зупиняється лише під час util.sleep().

Usage:

 1-- autorun.lua: блимає світлодіодом на піні 10 у фоні
 2local on = false
 3gpio.set_mode(10, gpio.OUTPUT)
 4
 5service.interval = 0.5 -- викликати lilka.update() двічі на секунду
 6
 7function lilka.update(delta)
 8    on = not on
 9    gpio.write(10, on and gpio.HIGH or gpio.LOW)
10end
static start(path)

Запускає Lua (.lua) або JavaScript (.js) скрипт як фоновий сервіс.

Відносний шлях рахується від директорії поточного скрипта.

Parameters:

path (str) – шлях до скрипта

Returns:

name ім’я запущеного сервісу, або nil у разі помилки

Return type:

str or nil

Returns:

err опис помилки

Return type:

str or nil

Usage:

1local name, err = service.start("blink.lua")
2if name == nil then
3    print("Не вдалося запустити сервіс: " .. err)
4end
static stop(name)

Зупиняє фоновий сервіс з вказаним ім’ям. Щоб зупинити поточний сервіс, використовуйте util.exit().

Parameters:

name (str) – ім’я сервісу

Returns:

stopped true, якщо сервіс знайдено та попрошено зупинитись

Return type:

boolean

Usage:

1service.stop("lua:blink")
static list()

Повертає імена всіх запущених фонових сервісів.

Return type:

list[str]

Usage:

1for _, name in ipairs(service.list()) do
2    print(name)
3end
static is_running(name)

Перевіряє, чи працює фоновий сервіс з вказаним ім’ям.

Parameters:

name (str) – ім’я сервісу

Return type:

boolean