diff --git a/kable-core/src/appleMain/kotlin/logs/LogMessage.kt b/kable-core/src/appleMain/kotlin/logs/LogMessage.kt index ade9b7073..c54b8e722 100644 --- a/kable-core/src/appleMain/kotlin/logs/LogMessage.kt +++ b/kable-core/src/appleMain/kotlin/logs/LogMessage.kt @@ -19,21 +19,50 @@ internal fun LogMessage.detail(error: NSError?) { if (error != null) detail("error", error.toString()) } -internal fun LogMessage.detail(service: CBService) { - detail("service", service.UUID.UUIDString) +private fun LogMessage.detail(service: CBService? = null) { + detail("service", service?.UUID?.UUIDString ?: "null UUID") } -internal fun LogMessage.detail(characteristic: CBCharacteristic) { - detail( - characteristic.service!!.UUID.toUuid(), - characteristic.UUID.toUuid(), - ) +private fun LogMessage.detail(characteristic: CBCharacteristic) { + val serviceUuid = characteristic.service + ?.UUID + ?.toUuid() + if (serviceUuid == null) { + detail("service", "null UUID") + return + } + + detail(serviceUuid, characteristic.UUID.toUuid()) } -internal fun LogMessage.detail(descriptor: CBDescriptor) { +private fun LogMessage.detail(descriptor: CBDescriptor) { + val characteristic = descriptor.characteristic + if (characteristic == null) { + detail("characteristic", "null UUID") + return + } + + val serviceUuid = characteristic.service + ?.UUID + ?.toUuid() + + if (serviceUuid == null) { + detail("service", "null UUID") + return + } + detail( - descriptor.characteristic!!.service!!.UUID.toUuid(), - descriptor.characteristic!!.UUID.toUuid(), + serviceUuid, + characteristic.UUID.toUuid(), descriptor.UUID.toUuid(), ) } + +internal fun LogMessage.detail(attribute: CBAttribute) { + when (attribute) { + is CBService -> detail(attribute) + is CBCharacteristic -> detail(attribute) + is CBDescriptor -> detail(attribute) + else -> detail("unknown attribute", attribute.UUID.toUuid()) + } +}