diff --git a/zeapp/android/src/main/java/de/berlindroid/zeapp/zeservices/ZeBadgeManager.kt b/zeapp/android/src/main/java/de/berlindroid/zeapp/zeservices/ZeBadgeManager.kt index 58686ad8..0ff495d4 100644 --- a/zeapp/android/src/main/java/de/berlindroid/zeapp/zeservices/ZeBadgeManager.kt +++ b/zeapp/android/src/main/java/de/berlindroid/zeapp/zeservices/ZeBadgeManager.kt @@ -4,8 +4,15 @@ import android.content.Context import android.graphics.Bitmap import dagger.hilt.android.qualifiers.ApplicationContext import de.berlindroid.zeapp.zeui.pixelBuffer -import de.berlindroid.zekompanion.BadgePayload +import de.berlindroid.zekompanion.ConfigCommand +import de.berlindroid.zekompanion.ConfigListCommand +import de.berlindroid.zekompanion.ConfigSaveCommand +import de.berlindroid.zekompanion.ConfigUpdateCommand import de.berlindroid.zekompanion.Environment +import de.berlindroid.zekompanion.ListCommand +import de.berlindroid.zekompanion.PreviewCommand +import de.berlindroid.zekompanion.ShowCommand +import de.berlindroid.zekompanion.StoreCommand import de.berlindroid.zekompanion.base64 import de.berlindroid.zekompanion.buildBadgeManager import de.berlindroid.zekompanion.toBinary @@ -35,7 +42,7 @@ class ZeBadgeManager @Inject constructor( .zipit() .base64() - val payload = BadgePayload.PreviewPayload( + val payload = PreviewCommand( payload = binaryPayload, ) @@ -55,8 +62,8 @@ class ZeBadgeManager @Inject constructor( .zipit() .base64() - val payload = BadgePayload.StorePayload( - filename = name, + val payload = StoreCommand( + meta = name, payload = binaryPayload, ) @@ -69,9 +76,7 @@ class ZeBadgeManager @Inject constructor( * @param name a file name on the badge to be shown */ suspend fun showPage(name: String): Result { - val payload = BadgePayload.ShowPayload( - filename = name, - ) + val payload = ShowCommand(meta = name) return badgeManager.sendPayload(payload) } @@ -80,8 +85,7 @@ class ZeBadgeManager @Inject constructor( * Return the name of the pages stored on the badge. */ suspend fun requestPagesStored(): Result { - val payload = BadgePayload.ListPayload() - + val payload = ListCommand() return if (badgeManager.sendPayload(payload).isSuccess) { badgeManager.readResponse() } else { @@ -94,13 +98,13 @@ class ZeBadgeManager @Inject constructor( */ suspend fun listConfiguration(): Result> { badgeManager.sendPayload( - BadgePayload.ConfigLoadPayload(), + ConfigCommand(), ) badgeManager.readResponse() delay(300) - val payload = BadgePayload.ConfigListPayload() + val payload = ConfigListCommand() if (badgeManager.sendPayload(payload).isSuccess) { val response = badgeManager.readResponse() @@ -135,8 +139,8 @@ class ZeBadgeManager @Inject constructor( val config = detypedConfig.entries.joinToString(separator = " ") - val payload = BadgePayload.ConfigUpdatePayload( - config = config, + val payload = ConfigUpdateCommand( + payload = config, ) if (badgeManager.sendPayload(payload).isSuccess) { @@ -144,7 +148,7 @@ class ZeBadgeManager @Inject constructor( delay(300) return if (badgeManager.sendPayload( - BadgePayload.ConfigSavePayload(), + ConfigSaveCommand(), ).isSuccess ) { Result.success(true) diff --git a/zeapp/badge/src/commonMain/kotlin/de/berlindroid/zekompanion/BadgeManager.kt b/zeapp/badge/src/commonMain/kotlin/de/berlindroid/zekompanion/BadgeManager.kt index 85722e54..58804d63 100644 --- a/zeapp/badge/src/commonMain/kotlin/de/berlindroid/zekompanion/BadgeManager.kt +++ b/zeapp/badge/src/commonMain/kotlin/de/berlindroid/zekompanion/BadgeManager.kt @@ -7,78 +7,172 @@ package de.berlindroid.zekompanion * @param meta any meta information you want to receive back? * @param payload the payload of the command of type 'type'. */ -sealed class BadgePayload( - val debug: Boolean, +open class BadgePayload( + open val debug: Boolean = false, val type: String, - val meta: String, - val payload: String, + open val meta: String, + open val payload: String, ) { /** * Convert the payload to a format the badge understands */ fun toBadgeCommand(): String = "${if (debug) "debug:" else ""}$type:$meta:${payload}" - - class RawPayload(debug: Boolean = false, type: String, meta: String, payload: String) : BadgePayload( - debug, type, meta, payload, - ) - - class HelpPayload(debug: Boolean = false) : BadgePayload( - debug, type = "help", meta = "", payload = "", - ) - - class ReloadPayload(debug: Boolean = false) : BadgePayload( - debug, type = "reload", meta = "", payload = "", - ) - - class ExitPayload(debug: Boolean = false) : BadgePayload( - debug, type = "exit", meta = "", payload = "", - ) - - class TerminalPayload(debug: Boolean = false) : BadgePayload( - debug, type = "terminal", meta = "", payload = "", - ) - - class RefreshPayload(debug: Boolean = false) : BadgePayload( - debug, type = "refresh", meta = "", payload = "", - ) - - class ConfigSavePayload(debug: Boolean = false) : BadgePayload( - debug, type = "config_save", meta = "", payload = "", - ) - - class ConfigLoadPayload(debug: Boolean = false) : BadgePayload( - debug, type = "config_load", meta = "", payload = "", - ) - - class ConfigUpdatePayload(debug: Boolean = false, config: String) : BadgePayload( - debug, type = "config_update", meta = "", payload = config, - ) - - class ConfigListPayload(debug: Boolean = false) : BadgePayload( - debug, type = "config_list", meta = "", payload = "", - ) - - class ShowPayload(debug: Boolean = false, filename: String) : BadgePayload( - debug, type = "show", meta = filename, payload = "", - ) - - class StorePayload(debug: Boolean = false, filename: String, payload: String) : BadgePayload( - debug, type = "store", meta = filename, payload = payload, - ) - - class PreviewPayload(debug: Boolean = false, payload: String) : BadgePayload( - debug, type = "preview", meta = "", payload = payload, - ) - - class ListPayload(debug: Boolean = false) : BadgePayload( - debug, type = "list", meta = "", payload = "", - ) - - class DeletePayload(debug: Boolean = false, filename: String) : BadgePayload( - debug, type = "delete", meta = filename, payload = "", - ) } +class HelpCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +): BadgePayload( + debug = debug, + type = "help", + meta = meta, + payload = payload, +) + +data class ReloadCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +): BadgePayload( + debug = debug, + type = "reload", + meta = meta, + payload = payload, +) + +data class ExitCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +): BadgePayload( + debug = debug, + type = "exit", + meta = meta, + payload = payload, +) + +data class TerminalCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +): BadgePayload( + debug = debug, + type = "terminal", + meta = meta, + payload = payload, +) + +data class RefreshCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +): BadgePayload( + debug = debug, + type = "refresh", + meta = meta, + payload = payload, +) + +data class ConfigSaveCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +): BadgePayload( + debug = debug, + type = "config_save", + meta = meta, + payload = payload, +) + +data class ConfigCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +) : BadgePayload( + debug = debug, + type = "config_load", + meta = meta, + payload = payload, +) + +data class ConfigUpdateCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +) : BadgePayload( + debug = debug, + type = "config_update", + meta = meta, + payload = payload, +) + +data class ConfigListCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +) : BadgePayload( + debug = debug, + type = "config_list", + meta = meta, + payload = payload, +) + +data class ShowCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +) : BadgePayload( + debug = debug, + type = "show", + meta = meta, + payload = payload, +) + +data class StoreCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +) : BadgePayload( + debug = debug, + type = "store", + meta = meta, + payload = payload, +) + +data class PreviewCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +): BadgePayload( + debug = debug, + type = "preview", + meta = meta, + payload = payload, +) + +data class ListCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +) : BadgePayload( + debug = debug, + type = "list", + meta = meta, + payload = payload, +) + +data class DeleteCommand( + override val debug: Boolean = false, + override val meta: String = "", + override val payload: String = "", +) : BadgePayload( + debug = debug, + type = "delete", + meta = meta, + payload = payload, +) + interface BadgeManager { companion object { const val DEVICE_PRODUCT_NAME = "Badger 2040" diff --git a/zeapp/terminal/src/main/kotlin/de/berlindroid/zekompanion/terminal/Main.kt b/zeapp/terminal/src/main/kotlin/de/berlindroid/zekompanion/terminal/Main.kt index 5b2dc2cf..6cf0dbb6 100644 --- a/zeapp/terminal/src/main/kotlin/de/berlindroid/zekompanion/terminal/Main.kt +++ b/zeapp/terminal/src/main/kotlin/de/berlindroid/zekompanion/terminal/Main.kt @@ -1,5 +1,6 @@ package de.berlindroid.zekompanion.terminal +import de.berlindroid.zekompanion.BadgePayload import de.berlindroid.zekompanion.base64 import de.berlindroid.zekompanion.buildBadgeManager import de.berlindroid.zekompanion.ditherFloydSteinberg @@ -13,7 +14,9 @@ import de.berlindroid.zekompanion.toBinary import de.berlindroid.zekompanion.zipit import de.berlindroid.zekompanion.BADGE_WIDTH import de.berlindroid.zekompanion.BADGE_HEIGHT -import de.berlindroid.zekompanion.BadgePayload.* +import de.berlindroid.zekompanion.DeleteCommand +import de.berlindroid.zekompanion.PreviewCommand +import de.berlindroid.zekompanion.StoreCommand import kotlinx.coroutines.runBlocking import java.awt.image.BufferedImage import java.awt.image.BufferedImage.TYPE_INT_RGB @@ -232,8 +235,9 @@ private fun resizeFluidImageCallback(size: String?): IntBuffer.(width: Int, heig private fun storeBufferOntoBadge(filename: String): IntBuffer.(width: Int, height: Int) -> IntBuffer = { _, _ -> - val payload = StorePayload( - filename = filename, + val payload = StoreCommand( + debug = false, + meta = filename, payload = toBinary().zipit().base64(), ) @@ -280,7 +284,7 @@ private fun rawCommand( command: String, meta: String = "", payload: String = "", resultTransformer: (result: Result) -> String = ::defaultTransformer, ) { - val badgePayload = RawPayload( + val badgePayload = BadgePayload( debug = false, type = command, meta = meta, @@ -314,8 +318,9 @@ private fun rawCommand( } private fun deleteStoredImageOnBadge(filename: String?): StorageOperation = { - val payload = DeletePayload( - filename = filename ?: "" + val payload = DeleteCommand( + debug = false, + meta = filename ?: "", ) runBlocking { @@ -335,7 +340,8 @@ private fun deleteStoredImageOnBadge(filename: String?): StorageOperation = { } private fun previewImageOnBadge(): IntBuffer.(width: Int, height: Int) -> IntBuffer = { _, _ -> - val payload = PreviewPayload( + val payload = PreviewCommand( + debug = false, payload = toBinary().zipit().base64(), )