Enable Sonos devices discovering in config.lua | Allow networking in config.lua

This commit is contained in:
2020-07-07 16:23:21 +02:00
parent fde05671d3
commit fc9a40571d
3 changed files with 26 additions and 3 deletions

View File

@@ -29,6 +29,8 @@ android {
dependencies { dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7"
implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0' implementation 'androidx.core:core-ktx:1.2.0'
implementation 'org.nanohttpd:nanohttpd:2.2.0' implementation 'org.nanohttpd:nanohttpd:2.2.0'

View File

@@ -3,6 +3,9 @@ package com.bartlomiejpluta.ttsserver.core.lua.sandbox
import android.content.Context import android.content.Context
import com.bartlomiejpluta.ttsserver.core.lua.lib.* import com.bartlomiejpluta.ttsserver.core.lua.lib.*
import com.bartlomiejpluta.ttsserver.core.lua.loader.ConfigLoader import com.bartlomiejpluta.ttsserver.core.lua.loader.ConfigLoader
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import org.luaj.vm2.Globals import org.luaj.vm2.Globals
import org.luaj.vm2.LoadState import org.luaj.vm2.LoadState
import org.luaj.vm2.compiler.LuaC import org.luaj.vm2.compiler.LuaC
@@ -23,7 +26,13 @@ class SandboxFactory(
private val ttsLibrary: TTSLibrary, private val ttsLibrary: TTSLibrary,
private val sonosLibrary: SonosLibrary private val sonosLibrary: SonosLibrary
) { ) {
fun createSandbox() = Globals().also { sandbox -> fun createSandbox() = runBlocking {
withContext(Dispatchers.Default) {
createLuaGlobals()
}
}
private fun createLuaGlobals() = Globals().also { sandbox ->
loadStandardLibraries(sandbox) loadStandardLibraries(sandbox)
loadApplicationLibraries(sandbox) loadApplicationLibraries(sandbox)
install(sandbox) install(sandbox)

View File

@@ -14,6 +14,18 @@ function silenceMode()
else return from <= now or now <= to end else return from <= now or now <= to end
end end
function discoverSonosDevices()
local output = {}
local devices = sonos.discover()
for _, device in ipairs(devices) do
output[device:getZoneGroupState():getName()] = device
end
return output
end
return { return {
silenceMode = silenceMode silenceMode = silenceMode,
sonosDevices = discoverSonosDevices()
} }