diff --git a/.idea/artifacts/EWS_Nanopi_Duo2.xml b/.idea/artifacts/EWS_Nanopi_Duo2.xml
new file mode 100644
index 0000000..df1e760
--- /dev/null
+++ b/.idea/artifacts/EWS_Nanopi_Duo2.xml
@@ -0,0 +1,20 @@
+
+
+ $PROJECT_DIR$/out/artifacts/EWS_Nanopi_Duo2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/artifacts/EWS_POC_jar.xml b/.idea/artifacts/EWS_POC_jar.xml
deleted file mode 100644
index 52e06f8..0000000
--- a/.idea/artifacts/EWS_POC_jar.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
- $PROJECT_DIR$/out/artifacts/EWS_POC_jar
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/deployment.xml b/.idea/deployment.xml
index 1783a26..eb605b8 100644
--- a/.idea/deployment.xml
+++ b/.idea/deployment.xml
@@ -1,6 +1,7 @@
-
+
+
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 7859d32..2a47092 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -4,6 +4,7 @@
+
diff --git a/html/assets/bootstrap/css/bootstrap.min.css b/html/webpage/assets/bootstrap/css/bootstrap.min.css
similarity index 100%
rename from html/assets/bootstrap/css/bootstrap.min.css
rename to html/webpage/assets/bootstrap/css/bootstrap.min.css
diff --git a/html/assets/bootstrap/js/bootstrap.min.js b/html/webpage/assets/bootstrap/js/bootstrap.min.js
similarity index 100%
rename from html/assets/bootstrap/js/bootstrap.min.js
rename to html/webpage/assets/bootstrap/js/bootstrap.min.js
diff --git a/html/assets/css/Navbar-With-Button-icons.css b/html/webpage/assets/css/Navbar-With-Button-icons.css
similarity index 100%
rename from html/assets/css/Navbar-With-Button-icons.css
rename to html/webpage/assets/css/Navbar-With-Button-icons.css
diff --git a/html/assets/js/jquery-3.7.1.min.js b/html/webpage/assets/js/jquery-3.7.1.min.js
similarity index 100%
rename from html/assets/js/jquery-3.7.1.min.js
rename to html/webpage/assets/js/jquery-3.7.1.min.js
diff --git a/html/assets/js/pocreceiver.js b/html/webpage/assets/js/pocreceiver.js
similarity index 100%
rename from html/assets/js/pocreceiver.js
rename to html/webpage/assets/js/pocreceiver.js
diff --git a/html/assets/js/prerecordedbroadcast.js b/html/webpage/assets/js/prerecordedbroadcast.js
similarity index 100%
rename from html/assets/js/prerecordedbroadcast.js
rename to html/webpage/assets/js/prerecordedbroadcast.js
diff --git a/html/assets/js/setting.js b/html/webpage/assets/js/setting.js
similarity index 100%
rename from html/assets/js/setting.js
rename to html/webpage/assets/js/setting.js
diff --git a/html/index.html b/html/webpage/index.html
similarity index 100%
rename from html/index.html
rename to html/webpage/index.html
diff --git a/html/pocreceiver.html b/html/webpage/pocreceiver.html
similarity index 100%
rename from html/pocreceiver.html
rename to html/webpage/pocreceiver.html
diff --git a/html/prerecordedbroadcast.html b/html/webpage/prerecordedbroadcast.html
similarity index 100%
rename from html/prerecordedbroadcast.html
rename to html/webpage/prerecordedbroadcast.html
diff --git a/html/setting.html b/html/webpage/setting.html
similarity index 100%
rename from html/setting.html
rename to html/webpage/setting.html
diff --git a/libs/META-INF/MANIFEST.MF b/libs/META-INF/MANIFEST.MF
deleted file mode 100644
index 82c7964..0000000
--- a/libs/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: MainKt
-
diff --git a/libs/linux-armhf/libbass.so b/libs/linux-arm/libbass.so
similarity index 100%
rename from libs/linux-armhf/libbass.so
rename to libs/linux-arm/libbass.so
diff --git a/libs/linux-armhf/libbassenc.so b/libs/linux-arm/libbassenc.so
similarity index 100%
rename from libs/linux-armhf/libbassenc.so
rename to libs/linux-arm/libbassenc.so
diff --git a/libs/linux-armhf/libbassenc_mp3.so b/libs/linux-arm/libbassenc_mp3.so
similarity index 100%
rename from libs/linux-armhf/libbassenc_mp3.so
rename to libs/linux-arm/libbassenc_mp3.so
diff --git a/libs/linux-armhf/libbassenc_opus.so b/libs/linux-arm/libbassenc_opus.so
similarity index 100%
rename from libs/linux-armhf/libbassenc_opus.so
rename to libs/linux-arm/libbassenc_opus.so
diff --git a/libs/linux-armhf/libbassmix.so b/libs/linux-arm/libbassmix.so
similarity index 100%
rename from libs/linux-armhf/libbassmix.so
rename to libs/linux-arm/libbassmix.so
diff --git a/libs/linux-armhf/libbassopus.so b/libs/linux-arm/libbassopus.so
similarity index 100%
rename from libs/linux-armhf/libbassopus.so
rename to libs/linux-arm/libbassopus.so
diff --git a/meta/nanopi duo2/META-INF/MANIFEST.MF b/meta/nanopi duo2/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..11bf5e8
--- /dev/null
+++ b/meta/nanopi duo2/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Main-Class: MainKt
+Class-Path: kotlinx-coroutines-core-1.10.2.jar kotlinx-coroutines-core-j
+ vm-1.10.2.jar annotations-23.0.0.jar kotlin-stdlib-2.1.0.jar Java-WebSo
+ cket-1.6.0.jar slf4j-api-2.0.13.jar kotlin-stdlib-2.2.0.jar annotations
+ -13.0.jar jna-5.17.0.jar javalin-bundle-6.7.0.jar javalin-6.7.0.jar slf
+ 4j-api-2.0.17.jar jetty-server-11.0.25.jar jetty-http-11.0.25.jar webso
+ cket-jetty-server-11.0.25.jar jetty-servlet-11.0.25.jar jetty-security-
+ 11.0.25.jar jetty-webapp-11.0.25.jar jetty-xml-11.0.25.jar websocket-je
+ tty-api-11.0.25.jar websocket-jetty-common-11.0.25.jar websocket-core-c
+ ommon-11.0.25.jar websocket-servlet-11.0.25.jar websocket-core-server-1
+ 1.0.25.jar javalin-context-mock-6.7.0.jar jetty-jakarta-servlet-api-5.0
+ .2.jar javalin-testtools-6.7.0.jar okhttp-4.12.0.jar okio-3.6.0.jar oki
+ o-jvm-3.6.0.jar kotlin-stdlib-common-1.9.10.jar javalin-micrometer-6.7.
+ 0.jar micrometer-core-1.14.5.jar micrometer-commons-1.14.5.jar micromet
+ er-observation-1.14.5.jar HdrHistogram-2.2.2.jar LatencyUtils-2.0.3.jar
+ micrometer-jetty11-1.14.5.jar jackson-databind-2.18.3.jar jackson-anno
+ tations-2.18.3.jar jackson-core-2.18.3.jar jackson-module-kotlin-2.18.3
+ .jar kotlin-reflect-1.8.10.jar jackson-datatype-jsr310-2.18.3.jar brotl
+ i4j-1.18.0.jar service-1.18.0.jar native-windows-x86_64-1.18.0.jar http
+ 2-server-11.0.25.jar http2-common-11.0.25.jar http2-hpack-11.0.25.jar j
+ etty-alpn-conscrypt-server-11.0.25.jar conscrypt-openjdk-uber-2.5.2.jar
+ jetty-alpn-server-11.0.25.jar jetty-io-11.0.25.jar jetty-util-11.0.25.
+ jar logback-classic-1.5.18.jar logback-core-1.5.18.jar kotlin-stdlib-jd
+ k8-1.9.25.jar kotlin-stdlib-1.9.25.jar annotations-13.0.jar kotlin-stdl
+ ib-jdk7-1.9.25.jar
+
diff --git a/src/Main.kt b/src/Main.kt
index ebcc15e..dc37b7d 100644
--- a/src/Main.kt
+++ b/src/Main.kt
@@ -14,7 +14,10 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
import org.slf4j.LoggerFactory
+import sbc.DigitalOutput
+import sbc.NanopiDuo2
import somecodes.Codes
import web.WsCommand
import java.util.function.BiFunction
@@ -24,11 +27,32 @@ import java.util.function.BiFunction
fun main() {
val logger = LoggerFactory.getLogger("Main")
val objectMapper = jacksonObjectMapper()
+ logger.info("Application started, version 0.0.8")
val cfg = configFile()
cfg.Load()
+
+ var relay1 : DigitalOutput? = null
+ var relay2 : DigitalOutput? = null
+ var commandLED : DigitalOutput? = null
+ var streamingLED : DigitalOutput? = null
+
+ runBlocking {
+ relay1 = DigitalOutput(NanopiDuo2.CLK.linuxGpio, "Relay1", true)
+ relay2 = DigitalOutput(NanopiDuo2.MISO.linuxGpio, "Relay2", true)
+ commandLED = DigitalOutput(NanopiDuo2.TX1.linuxGpio, "CommandLED", true)
+ streamingLED = DigitalOutput(NanopiDuo2.RX1.linuxGpio, "StreamingLED", true)
+ relay1.setOFF()
+ relay2.setOFF()
+ commandLED.setOFF()
+ streamingLED.setOFF()
+ }
+
+
var audioID = 0
- val preferedAudioDevice = "Speakers"
+ val preferedAudioDevice = "USB Audio"
+ AudioUtility.LoadLibraries()
+ AudioUtility.PrintVersion()
AudioUtility.DetectPlaybackDevices().forEach { pair ->
logger.info("Device ID: ${pair.first}, Name: ${pair.second}")
@@ -36,10 +60,9 @@ fun main() {
audioID = pair.first
}
}
- if (audioID!=0){
- val initsuccess = AudioUtility.InitDevice(audioID,44100)
- logger.info("Audio Device $audioID initialized: $initsuccess")
- }
+ if (audioID==0) audioID = 1 // fallback to first device if preferred not found
+ val initsuccess = AudioUtility.InitDevice(audioID,44100)
+ logger.info("Audio Device $audioID initialized: $initsuccess")
// for Zello Client
val o = OpusStreamReceiver(audioID)
@@ -113,12 +136,16 @@ fun main() {
override fun onConnected() {
logger.info("Connected to Zello server.")
+ relay1?.setOFF()
+ relay2?.setOFF()
}
override fun onDisconnected(reason: String) {
logger.info("Disconnected from Zello Server, reason: $reason")
logger.info("Reconnecting after 10 seconds...")
z.Stop()
+ relay1?.setOFF()
+ relay2?.setOFF()
val e = this
CoroutineScope(Dispatchers.Default).launch {
@@ -136,8 +163,10 @@ fun main() {
// stop any previous playback
afp?.Stop()
afp = null
-
+ commandLED?.Blink()
if (o.Start()){
+ relay1?.setON()
+ relay2?.setON()
logger.info("Opus Receiver ready for streaming from $from for $For on channel $channel")
} else {
logger.info("Failed to start Opus Receiver for streaming from $from for $For on channel $channel")
@@ -146,6 +175,9 @@ fun main() {
override fun onStopStreaming(from: String, For: String, channel: String) {
o.Stop()
+ relay1?.setON()
+ relay2?.setOFF()
+ commandLED?.Blink()
logger.info("Opus Receiver stopped streaming from $from for $For on channel $channel")
}
@@ -156,6 +188,7 @@ fun main() {
data: ByteArray
) {
if (o.isPlaying) o.PushData(data)
+ streamingLED?.Blink()
}
}
z.Start(z_event)
@@ -166,6 +199,7 @@ fun main() {
when (source) {
"setting" -> when(cmd.command){
"getConfig" ->{
+ commandLED?.Blink()
val data = mapOf(
"zelloUsername" to cfg.ZelloUsername,
"zelloPassword" to cfg.ZelloPassword,
@@ -187,6 +221,7 @@ fun main() {
WsReply(cmd.command, objectMapper.writeValueAsString(data).trim())
}
"setZelloConfig" -> {
+ commandLED?.Blink()
try{
val xx = objectMapper.readValue(cmd.data, object: TypeReference