Add proto data store for macros

This commit is contained in:
Sylwester Zieliński
2022-02-17 16:30:17 +01:00
parent 7b1b91e5da
commit 56433a8f16
8 changed files with 103 additions and 7 deletions

View File

@@ -0,0 +1,23 @@
package no.nordicsemi.android.uart.data
import androidx.datastore.core.Serializer
import no.nordicsemi.android.Macro
import java.io.InputStream
import java.io.OutputStream
object MacroSerializer : Serializer<Macro> {
override val defaultValue: UARTMacro = Macro.getDefaultInstance()
override suspend fun readFrom(input: InputStream): UARTMacro {
try {
return Settings.parseFrom(input)
} catch (exception: InvalidProtocolBufferException) {
throw CorruptionException("Cannot read proto.", exception)
}
}
override suspend fun writeTo(
t: UARTMacro,
output: OutputStream
) = t.writeTo(output)
}

View File

@@ -1,9 +1,9 @@
package no.nordicsemi.android.uart.data
fun NewLineChar.parseString(text: String): String {
return when (this) {
NewLineChar.LF -> text
NewLineChar.CR_LF -> text.replace("\n", "\r\n")
NewLineChar.CR -> text.replace("\n", "\r")
fun String.parseWithNewLineChar(newLineChar: NewLineChar): String {
return when (newLineChar) {
NewLineChar.LF -> this
NewLineChar.CR_LF -> this.replace("\n", "\r\n")
NewLineChar.CR -> this.replace("\n", "\r")
}
}

View File

@@ -0,0 +1,26 @@
package no.nordicsemi.android.uart.data
import android.content.Context
import androidx.datastore.core.DataStore
import androidx.datastore.dataStore
import dagger.hilt.android.qualifiers.ApplicationContext
import java.util.prefs.Preferences
import javax.inject.Inject
private const val MACRO_FILE = "macro.proto"
internal class UARTSharedPrefDataSource @Inject constructor(
@ApplicationContext
context: Context
) {
// val Context.dataStore: DataStore<Preferences> by dataStore(fileName = MACRO_FILE, MacroSerializer)
//
// private val sp = context.getSharedPreferences(PREFS_FILE, Context.MODE_PRIVATE)
//
//// val macros:
//
// init {
//
// sp.edit()
// }
}

View File

@@ -10,8 +10,8 @@ import no.nordicsemi.android.ble.ktx.suspend
import no.nordicsemi.android.service.BleManagerResult
import no.nordicsemi.android.service.ConnectingResult
import no.nordicsemi.android.service.ServiceManager
import no.nordicsemi.android.uart.data.*
import no.nordicsemi.android.uart.data.UARTData
import no.nordicsemi.android.uart.data.UARTMacro
import no.nordicsemi.android.uart.data.UARTManager
import javax.inject.Inject
import javax.inject.Singleton
@@ -48,7 +48,7 @@ class UARTRepository @Inject constructor(
}
fun runMacro(macro: UARTMacro) {
manager?.send(macro.command)
manager?.send(macro.command.parseWithNewLineChar(macro.newLineChar))
}
private suspend fun UARTManager.start(device: BluetoothDevice) {

View File

@@ -0,0 +1,18 @@
syntax = "proto3";
option java_package = "no.nordicsemi.android";
option java_multiple_files = true;
message Macro {
string name = 1;
enum NewLineType {
LF = 0;
LF_CR = 1;
CR = 2;
}
NewLineType newLineType = 2;
}
message MacroSettings {
string macros = 1;
}