Skip to content

Commit 9339958

Browse files
authored
Revert "Feat/1919 pax graphs" (#2479)
1 parent ce3450d commit 9339958

File tree

7 files changed

+11
-506
lines changed

7 files changed

+11
-506
lines changed

app/src/main/java/com/geeksville/mesh/model/DebugViewModel.kt

Lines changed: 9 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,6 @@ import com.geeksville.mesh.Portnums.PortNum
4242
import kotlinx.coroutines.flow.MutableStateFlow
4343
import kotlinx.coroutines.flow.asStateFlow
4444
import com.geeksville.mesh.repository.datastore.RadioConfigRepository
45-
import com.google.protobuf.InvalidProtocolBufferException
46-
import com.geeksville.mesh.MeshProtos
47-
import com.geeksville.mesh.TelemetryProtos
48-
import com.geeksville.mesh.AdminProtos
49-
import com.geeksville.mesh.PaxcountProtos
50-
import com.geeksville.mesh.StoreAndForwardProtos
5145

5246
data class SearchMatch(
5347
val logIndex: Int,
@@ -162,7 +156,6 @@ class LogFilterManager {
162156
}
163157
}
164158

165-
@Suppress("TooManyFunctions")
166159
@HiltViewModel
167160
class DebugViewModel @Inject constructor(
168161
private val meshLogRepository: MeshLogRepository,
@@ -213,41 +206,29 @@ class DebugViewModel @Inject constructor(
213206
messageType = log.message_type,
214207
formattedReceivedDate = TIME_FORMAT.format(log.received_date),
215208
logMessage = annotateMeshLogMessage(log),
216-
decodedPayload = decodePayloadFromMeshLog(log),
217209
)
218210
}.toImmutableList()
219211

220212
/**
221213
* Transform the input [MeshLog] by enhancing the raw message with annotations.
222214
*/
223215
private fun annotateMeshLogMessage(meshLog: MeshLog): String {
224-
return when (meshLog.message_type) {
216+
val annotated = when (meshLog.message_type) {
225217
"Packet" -> meshLog.meshPacket?.let { packet ->
226-
annotatePacketLog(packet)
227-
} ?: meshLog.raw_message
218+
annotateRawMessage(meshLog.raw_message, packet.from, packet.to)
219+
}
220+
228221
"NodeInfo" -> meshLog.nodeInfo?.let { nodeInfo ->
229222
annotateRawMessage(meshLog.raw_message, nodeInfo.num)
230-
} ?: meshLog.raw_message
223+
}
224+
231225
"MyNodeInfo" -> meshLog.myNodeInfo?.let { nodeInfo ->
232226
annotateRawMessage(meshLog.raw_message, nodeInfo.myNodeNum)
233-
} ?: meshLog.raw_message
234-
else -> meshLog.raw_message
235-
}
236-
}
227+
}
237228

238-
private fun annotatePacketLog(packet: MeshProtos.MeshPacket): String {
239-
val builder = packet.toBuilder()
240-
val hasDecoded = builder.hasDecoded()
241-
val decoded = if (hasDecoded) builder.decoded else null
242-
if (hasDecoded) builder.clearDecoded()
243-
val baseText = builder.build().toString().trimEnd()
244-
val result = if (hasDecoded && decoded != null) {
245-
val decodedText = decoded.toString().trimEnd().prependIndent(" ")
246-
"$baseText\ndecoded {\n$decodedText\n}"
247-
} else {
248-
baseText
229+
else -> null
249230
}
250-
return annotateRawMessage(result, packet.from, packet.to)
231+
return annotated ?: meshLog.raw_message
251232
}
252233

253234
/**
@@ -293,7 +274,6 @@ class DebugViewModel @Inject constructor(
293274
val messageType: String,
294275
val formattedReceivedDate: String,
295276
val logMessage: String,
296-
val decodedPayload: String? = null,
297277
)
298278

299279
companion object {
@@ -315,54 +295,4 @@ class DebugViewModel @Inject constructor(
315295
}
316296

317297
fun setSelectedLogId(id: String?) { _selectedLogId.value = id }
318-
319-
/**
320-
* Attempts to fully decode the payload of a MeshLog's MeshPacket using the appropriate protobuf definition,
321-
* based on the portnum of the packet.
322-
*
323-
* For known portnums, the payload is parsed into its corresponding proto message and returned as a string.
324-
* For text and alert messages, the payload is interpreted as UTF-8 text.
325-
* For unknown portnums, the payload is shown as a hex string.
326-
*
327-
* @param log The MeshLog containing the packet and payload to decode.
328-
* @return A human-readable string representation of the decoded payload, or an error message if decoding fails,
329-
* or null if the log does not contain a decodable packet.
330-
*/
331-
private fun decodePayloadFromMeshLog(log: MeshLog): String? {
332-
var result: String? = null
333-
val packet = log.meshPacket
334-
if (packet == null || !packet.hasDecoded()) {
335-
result = null
336-
} else {
337-
val portnum = packet.decoded.portnumValue
338-
val payload = packet.decoded.payload.toByteArray()
339-
result = try {
340-
when (portnum) {
341-
PortNum.TEXT_MESSAGE_APP_VALUE,
342-
PortNum.ALERT_APP_VALUE ->
343-
payload.toString(Charsets.UTF_8)
344-
PortNum.POSITION_APP_VALUE ->
345-
MeshProtos.Position.parseFrom(payload).toString()
346-
PortNum.WAYPOINT_APP_VALUE ->
347-
MeshProtos.Waypoint.parseFrom(payload).toString()
348-
PortNum.NODEINFO_APP_VALUE ->
349-
MeshProtos.User.parseFrom(payload).toString()
350-
PortNum.TELEMETRY_APP_VALUE ->
351-
TelemetryProtos.Telemetry.parseFrom(payload).toString()
352-
PortNum.ROUTING_APP_VALUE ->
353-
MeshProtos.Routing.parseFrom(payload).toString()
354-
PortNum.ADMIN_APP_VALUE ->
355-
AdminProtos.AdminMessage.parseFrom(payload).toString()
356-
PortNum.PAXCOUNTER_APP_VALUE ->
357-
PaxcountProtos.Paxcount.parseFrom(payload).toString()
358-
PortNum.STORE_FORWARD_APP_VALUE ->
359-
StoreAndForwardProtos.StoreAndForward.parseFrom(payload).toString()
360-
else -> payload.joinToString(" ") { "%02x".format(it) }
361-
}
362-
} catch (e: InvalidProtocolBufferException) {
363-
"Failed to decode payload: ${e.message}"
364-
}
365-
}
366-
return result
367-
}
368298
}

app/src/main/java/com/geeksville/mesh/model/MetricsViewModel.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ import com.geeksville.mesh.repository.api.FirmwareReleaseRepository
4747
import com.geeksville.mesh.repository.datastore.RadioConfigRepository
4848
import com.geeksville.mesh.service.ServiceAction
4949
import com.geeksville.mesh.ui.map.MAP_STYLE_ID
50-
import com.geeksville.mesh.Portnums
5150
import dagger.hilt.android.lifecycle.HiltViewModel
5251
import kotlinx.coroutines.flow.MutableStateFlow
5352
import kotlinx.coroutines.flow.StateFlow
@@ -89,15 +88,13 @@ data class MetricsState(
8988
val isLocalDevice: Boolean = false,
9089
val latestStableFirmware: FirmwareRelease = FirmwareRelease(),
9190
val latestAlphaFirmware: FirmwareRelease = FirmwareRelease(),
92-
val paxMetrics: List<MeshLog> = emptyList(),
9391
) {
9492
fun hasDeviceMetrics() = deviceMetrics.isNotEmpty()
9593
fun hasSignalMetrics() = signalMetrics.isNotEmpty()
9694
fun hasPowerMetrics() = powerMetrics.isNotEmpty()
9795
fun hasTracerouteLogs() = tracerouteRequests.isNotEmpty()
9896
fun hasPositionLogs() = positionLogs.isNotEmpty()
9997
fun hasHostMetrics() = hostMetrics.isNotEmpty()
100-
fun hasPaxMetrics() = paxMetrics.isNotEmpty()
10198

10299
fun deviceMetricsFiltered(timeFrame: TimeFrame): List<Telemetry> {
103100
val oldestTime = timeFrame.calculateOldestTime()
@@ -267,7 +264,7 @@ class MetricsViewModel @Inject constructor(
267264
val timeFrame: StateFlow<TimeFrame> = _timeFrame
268265

269266
init {
270-
if (destNum != null) {
267+
destNum?.let {
271268
radioConfigRepository.nodeDBbyNum
272269
.mapLatest { nodes -> nodes[destNum] to nodes.keys.firstOrNull() }
273270
.distinctUntilChanged()
@@ -347,12 +344,6 @@ class MetricsViewModel @Inject constructor(
347344
}
348345
}.launchIn(viewModelScope)
349346

350-
meshLogRepository.getLogsFrom(destNum, Portnums.PortNum.PAXCOUNTER_APP_VALUE).onEach { logs ->
351-
_state.update { state ->
352-
state.copy(paxMetrics = logs)
353-
}
354-
}.launchIn(viewModelScope)
355-
356347
firmwareReleaseRepository.stableRelease.filterNotNull().onEach { latestStable ->
357348
_state.update { state ->
358349
state.copy(latestStableFirmware = latestStable)
@@ -366,8 +357,6 @@ class MetricsViewModel @Inject constructor(
366357
}.launchIn(viewModelScope)
367358

368359
debug("MetricsViewModel created")
369-
} else {
370-
debug("MetricsViewModel: destNum is null, skipping metrics flows initialization.")
371360
}
372361
}
373362

app/src/main/java/com/geeksville/mesh/navigation/NodesRoutes.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import androidx.compose.material.icons.filled.LightMode
2424
import androidx.compose.material.icons.filled.LocationOn
2525
import androidx.compose.material.icons.filled.Memory
2626
import androidx.compose.material.icons.filled.PermScanWifi
27-
import androidx.compose.material.icons.filled.People
2827
import androidx.compose.material.icons.filled.Power
2928
import androidx.compose.material.icons.filled.Router
3029
import androidx.compose.runtime.remember
@@ -43,7 +42,6 @@ import com.geeksville.mesh.ui.metrics.PositionLogScreen
4342
import com.geeksville.mesh.ui.metrics.PowerMetricsScreen
4443
import com.geeksville.mesh.ui.metrics.SignalMetricsScreen
4544
import com.geeksville.mesh.ui.metrics.TracerouteLogScreen
46-
import com.geeksville.mesh.ui.metrics.PaxMetricsScreen
4745
import com.geeksville.mesh.ui.node.NodeDetailScreen
4846
import com.geeksville.mesh.ui.node.NodeMapScreen
4947
import com.geeksville.mesh.ui.node.NodeScreen
@@ -88,9 +86,6 @@ sealed class NodeDetailRoutes {
8886

8987
@Serializable
9088
data object HostMetricsLog : Route
91-
92-
@Serializable
93-
data object PaxMetrics : Route
9489
}
9590

9691
fun NavGraphBuilder.nodesGraph(
@@ -166,7 +161,6 @@ fun NavGraphBuilder.nodeDetailGraph(
166161

167162
NodeDetailRoute.POWER -> PowerMetricsScreen(hiltViewModel(parentEntry))
168163
NodeDetailRoute.HOST -> HostMetricsLogScreen(hiltViewModel(parentEntry))
169-
NodeDetailRoute.PAX -> PaxMetricsScreen(hiltViewModel(parentEntry))
170164
}
171165
}
172166
}
@@ -186,5 +180,4 @@ enum class NodeDetailRoute(
186180
TRACEROUTE(R.string.traceroute, NodeDetailRoutes.TracerouteLog, Icons.Default.PermScanWifi),
187181
POWER(R.string.power, NodeDetailRoutes.PowerMetrics, Icons.Default.Power),
188182
HOST(R.string.host, NodeDetailRoutes.HostMetricsLog, Icons.Default.Memory),
189-
PAX(R.string.pax, NodeDetailRoutes.PaxMetrics, Icons.Default.People),
190183
}

app/src/main/java/com/geeksville/mesh/ui/debug/Debug.kt

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -237,14 +237,6 @@ internal fun DebugItem(
237237
color = colorScheme.onSurface
238238
)
239239
)
240-
// Show decoded payload if available
241-
if (!log.decodedPayload.isNullOrBlank()) {
242-
DecodedPayloadBlock(
243-
decodedPayload = log.decodedPayload,
244-
isSelected = isSelected,
245-
colorScheme = colorScheme
246-
)
247-
}
248240
}
249241
}
250242
}
@@ -788,48 +780,3 @@ private suspend fun exportAllLogs(context: Context, logs: List<UiMeshLog>) = wit
788780
warn("Error:IOException: " + e.toString())
789781
}
790782
}
791-
792-
@Composable
793-
private fun DecodedPayloadBlock(
794-
decodedPayload: String,
795-
isSelected: Boolean,
796-
colorScheme: ColorScheme
797-
) {
798-
Text(
799-
text = stringResource(id = R.string.debug_decoded_payload),
800-
style = TextStyle(
801-
fontSize = if (isSelected) 10.sp else 8.sp,
802-
fontWeight = FontWeight.Bold,
803-
color = colorScheme.primary
804-
),
805-
modifier = Modifier.padding(top = 8.dp, bottom = 4.dp)
806-
)
807-
Text(
808-
text = "{",
809-
style = TextStyle(
810-
fontSize = if (isSelected) 10.sp else 8.sp,
811-
fontWeight = FontWeight.Bold,
812-
color = colorScheme.primary
813-
),
814-
modifier = Modifier.padding(start = 8.dp, bottom = 2.dp)
815-
)
816-
Text(
817-
text = decodedPayload,
818-
softWrap = true,
819-
style = TextStyle(
820-
fontSize = if (isSelected) 10.sp else 8.sp,
821-
fontFamily = FontFamily.Monospace,
822-
color = colorScheme.onSurface.copy(alpha = 0.8f)
823-
),
824-
modifier = Modifier.padding(start = 16.dp, bottom = 0.dp)
825-
)
826-
Text(
827-
text = "}",
828-
style = TextStyle(
829-
fontSize = if (isSelected) 10.sp else 8.sp,
830-
fontWeight = FontWeight.Bold,
831-
color = colorScheme.primary
832-
),
833-
modifier = Modifier.padding(start = 8.dp, bottom = 4.dp)
834-
)
835-
}

0 commit comments

Comments
 (0)