diff --git a/profile/src/main/java/no/nordicsemi/android/toolbox/profile/view/uart/OutputSection.kt b/profile/src/main/java/no/nordicsemi/android/toolbox/profile/view/uart/OutputSection.kt index 3dee07d5..5863df6e 100644 --- a/profile/src/main/java/no/nordicsemi/android/toolbox/profile/view/uart/OutputSection.kt +++ b/profile/src/main/java/no/nordicsemi/android/toolbox/profile/view/uart/OutputSection.kt @@ -141,7 +141,7 @@ private fun MessageItemInput(record: UARTRecord) { horizontalAlignment = Alignment.End ) { Text( - text = record.text, + text = record.text.visualizeNewlines(), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onPrimaryContainer ) @@ -182,7 +182,7 @@ private fun MessageItemOutput(record: UARTRecord) { horizontalAlignment = Alignment.Start ) { Text( - text = record.text, + text = record.text.visualizeNewlines(), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onPrimary ) @@ -224,4 +224,18 @@ private val datFormatter = SimpleDateFormat("dd MMMM yyyy, HH:mm:ss", Locale.ENG private fun UARTRecord.timeToString(): String { return datFormatter.format(timestamp) -} \ No newline at end of file +} + +/** + * Visualizes newlines in a string by replacing them with Unicode characters. + * - `\n` is replaced with `␤` (U+240A) + * - `\r` is replaced with `␍` (U+240D) + * - `\r\n` is replaced with `␤␍` (U+240A U+240D) + */ +internal fun String.visualizeNewlines(): String { + return this + .replace("\r\n", "\u240A\u240D\r") + .replace(Regex("(? this.replace("\n", "\r") } } - -fun String.toMacroEolUnicodeCharDisplay(newLineChar: MacroEol): String { - return when (newLineChar) { - MacroEol.CR -> this.replace("\n", "\u240D\r\n") - MacroEol.LF -> this + "\u240A" - MacroEol.CR_LF -> this.replace("\n", "\u240A\u240D\r") - } -} diff --git a/profile_manager/src/main/java/no/nordicsemi/android/toolbox/profile/manager/UARTManager.kt b/profile_manager/src/main/java/no/nordicsemi/android/toolbox/profile/manager/UARTManager.kt index dcb458a8..955a322e 100644 --- a/profile_manager/src/main/java/no/nordicsemi/android/toolbox/profile/manager/UARTManager.kt +++ b/profile_manager/src/main/java/no/nordicsemi/android/toolbox/profile/manager/UARTManager.kt @@ -67,7 +67,6 @@ internal class UARTManager : ServiceManager { device: String, message: String, maxWriteLength: Int, - macroEolUnicodeMessage: String? = null, ) { val messageBytes = message.toByteArray() try { @@ -82,7 +81,7 @@ internal class UARTManager : ServiceManager { } catch (e: Exception) { Timber.tag("UARTService").e("Error ${e.message}") } finally { - UartRepository.onNewMessageSent(device, macroEolUnicodeMessage ?: message) + UartRepository.onNewMessageSent(device, message) } } } diff --git a/profile_manager/src/main/java/no/nordicsemi/android/toolbox/profile/manager/repository/UartRepository.kt b/profile_manager/src/main/java/no/nordicsemi/android/toolbox/profile/manager/repository/UartRepository.kt index d235fbd0..a3ef8600 100644 --- a/profile_manager/src/main/java/no/nordicsemi/android/toolbox/profile/manager/repository/UartRepository.kt +++ b/profile_manager/src/main/java/no/nordicsemi/android/toolbox/profile/manager/repository/UartRepository.kt @@ -10,7 +10,6 @@ import no.nordicsemi.android.toolbox.profile.data.uart.MacroEol import no.nordicsemi.android.toolbox.profile.data.uart.UARTConfiguration import no.nordicsemi.android.toolbox.profile.data.uart.UARTMacro import no.nordicsemi.android.toolbox.profile.data.uart.parseWithNewLineChar -import no.nordicsemi.android.toolbox.profile.data.uart.toMacroEolUnicodeCharDisplay import no.nordicsemi.android.toolbox.profile.manager.UARTManager object UartRepository { @@ -60,7 +59,6 @@ object UartRepository { deviceId, macro.command!!.parseWithNewLineChar(macro.newLineChar), getMaxWriteLength(deviceId), - macro.command!!.toMacroEolUnicodeCharDisplay(macro.newLineChar) ) } } @@ -130,7 +128,7 @@ object UartRepository { // Save the new configuration and edited position. val newConfiguration = it.uartViewState.configurations.map { config -> if (config.id == selectedConfiguration.id) { - newConfig!! + newConfig } else { config }