AbsentOrWrongFileLicense:LazyColumnDragAndDropDemo.kt$com.geeksville.mesh.ui.components.LazyColumnDragAndDropDemo.kt
ChainWrapping:Channel.kt$Channel$&&
ChainWrapping:CustomTileSource.kt$CustomTileSource.Companion.<no name provided>$+
ChainWrapping:SqlTileWriterExt.kt$SqlTileWriterExt$+
CommentSpacing:AppIntroduction.kt$AppIntroduction$//addSlide(SlideTwoFragment())
CommentSpacing:BLEException.kt$BLEConnectionClosing$/// Our interface is being shut down
CommentSpacing:BTScanModel.kt$BTScanModel$/// Use the string for the NopInterface
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$/// Attempt to read from the fromRadio mailbox, if data is found broadcast it to android apps
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$/// For testing
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$/// Our BLE device
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$/// Our service - note - it is possible to get back a null response for getService if the device services haven't yet been found
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$/// Send a packet/command out the radio link
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$/// Start a connection attempt
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$/// We gracefully handle safe being null because this can occur if someone has unpaired from our device - just abandon the reconnect attempt
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$/// We only force service refresh the _first_ time we connect to the device. Thereafter it is assumed the firmware didn't change
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$/// We only try to set MTU once, because some buggy implementations fail
CommentSpacing:BluetoothInterface.kt$BluetoothInterface$//needForceRefresh = false // In fact, because of tearing down BLE in sleep on the ESP32, our handle # assignments are not stable across sleep - so we much refetch every time
CommentSpacing:BluetoothInterface.kt$BluetoothInterface.Companion$/// this service UUID is publicly visible for scanning
CommentSpacing:Constants.kt$/// a bool true means we expect this condition to continue until, false means device might come back
CommentSpacing:ContextExtensions.kt$/// Utility function to hide the soft keyboard per stack overflow
CommentSpacing:ContextExtensions.kt$/// show a toast
CommentSpacing:Coroutines.kt$/// Wrap launch with an exception handler, FIXME, move into a utility lib
CommentSpacing:DeferredExecution.kt$DeferredExecution$/// Queue some new work
CommentSpacing:DeferredExecution.kt$DeferredExecution$/// run all work in the queue and clear it to be ready to accept new work
CommentSpacing:DownloadButton.kt$//@Composable
CommentSpacing:DownloadButton.kt$//@Preview(showBackground = true)
CommentSpacing:DownloadButton.kt$//private fun DownloadButtonPreview() {
CommentSpacing:DownloadButton.kt$//}
CommentSpacing:Exceptions.kt$/// Convert any exceptions in this service call into a RemoteException that the client can
CommentSpacing:Exceptions.kt$/// then handle
CommentSpacing:Exceptions.kt$Exceptions$/// Set in Application.onCreate
CommentSpacing:Logging.kt$Logging$/// Kotlin assertions are disabled on android, so instead we use this assert helper
CommentSpacing:Logging.kt$Logging$/// Report an error (including messaging our crash reporter service if allowed
CommentSpacing:Logging.kt$Logging.Companion$/// If false debug logs will not be shown (but others might)
CommentSpacing:Logging.kt$Logging.Companion$/// if false NO logs will be shown, set this in the application based on BuildConfig.DEBUG
CommentSpacing:MeshServiceStarter.kt$/// Helper function to start running our service
CommentSpacing:MockInterface.kt$MockInterface$/// Generate a fake node info entry
CommentSpacing:MockInterface.kt$MockInterface$/// Generate a fake text message from a node
CommentSpacing:MockInterface.kt$MockInterface$/// Send a fake ack packet back if the sender asked for want_ack
CommentSpacing:NOAAWmsTileSource.kt$NOAAWmsTileSource$//array indexes for that data
CommentSpacing:NOAAWmsTileSource.kt$NOAAWmsTileSource$//used by geo server
CommentSpacing:NodeInfo.kt$NodeInfo$/// @return a nice human readable string for the distance, or null for unknown
CommentSpacing:NodeInfo.kt$NodeInfo$/// @return bearing to the other position in degrees
CommentSpacing:NodeInfo.kt$NodeInfo$/// @return distance in meters to some other node (or null if unknown)
CommentSpacing:NodeInfo.kt$NodeInfo$/// return the position if it is valid, else null
CommentSpacing:NodeInfo.kt$Position$/// @return bearing to the other position in degrees
CommentSpacing:NodeInfo.kt$Position$/// @return distance in meters to some other node (or null if unknown)
CommentSpacing:NodeInfo.kt$Position.Companion$/// Convert to a double representation of degrees
CommentSpacing:SafeBluetooth.kt$/// Return a standard BLE 128 bit UUID from the short 16 bit versions
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// Drop our current connection and then requeue a connect as needed
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// If we have work we can do, start doing it.
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// Restart any previous connect attempts
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// Timeout before we declare a bluetooth operation failed (used for synchronous API operations only)
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// True if the current active connection is auto (possible for this to be false but autoConnect to be true
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// Users can access the GATT directly as needed
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// asyncronously turn notification on/off for a characteristic
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// from characteristic UUIDs to the handler function for notfies
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// helper glue to make sync continuations and then wait for the result
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$/// if we are in the first non-automated lowLevel connect.
CommentSpacing:SafeBluetooth.kt$SafeBluetooth$//com.geeksville.mesh.service.SafeBluetooth.closeGatt
CommentSpacing:SafeBluetooth.kt$SafeBluetooth.<no name provided>$//throw Exception("Mystery bluetooth failure - debug me")
CommentSpacing:SafeBluetooth.kt$SafeBluetooth.BluetoothContinuation$/// Connection work items are treated specially
CommentSpacing:SafeBluetooth.kt$SafeBluetooth.BluetoothContinuation$/// Start running a queued bit of work, return true for success or false for fatal bluetooth error
ConstructorParameterNaming:MeshLog.kt$MeshLog$@ColumnInfo(name = "message") val raw_message: String
ConstructorParameterNaming:MeshLog.kt$MeshLog$@ColumnInfo(name = "received_date") val received_date: Long
ConstructorParameterNaming:MeshLog.kt$MeshLog$@ColumnInfo(name = "type") val message_type: String
ConstructorParameterNaming:Packet.kt$ContactSettings$@PrimaryKey val contact_key: String
ConstructorParameterNaming:Packet.kt$Packet$@ColumnInfo(name = "contact_key") val contact_key: String
ConstructorParameterNaming:Packet.kt$Packet$@ColumnInfo(name = "port_num") val port_num: Int
ConstructorParameterNaming:Packet.kt$Packet$@ColumnInfo(name = "received_time") val received_time: Long
CyclomaticComplexMethod:MainActivity.kt$MainActivity$override fun onOptionsItemSelected(item: MenuItem): Boolean
CyclomaticComplexMethod:MapFragment.kt$@Composable fun MapView( model: UIViewModel = viewModel(), )
CyclomaticComplexMethod:MeshService.kt$MeshService$private fun handleReceivedData(packet: MeshPacket)
CyclomaticComplexMethod:RadioConfigViewModel.kt$RadioConfigViewModel$private fun processPacketResponse(packet: MeshProtos.MeshPacket)
CyclomaticComplexMethod:UIState.kt$UIViewModel$fun saveMessagesCSV(uri: Uri)
EmptyCatchBlock:MeshLog.kt$MeshLog${ }
EmptyClassBlock:DebugLogFile.kt$BinaryLogFile${ }
EmptyDefaultConstructor:SqlTileWriterExt.kt$SqlTileWriterExt$()
EmptyDefaultConstructor:SqlTileWriterExt.kt$SqlTileWriterExt.SourceCount$()
EmptyFunctionBlock:MainActivity.kt$MainActivity.<no name provided>${ }
EmptyFunctionBlock:NopInterface.kt$NopInterface${ }
EmptyFunctionBlock:NsdManager.kt$<no name provided>${ }
EmptyFunctionBlock:TrustAllX509TrustManager.kt$TrustAllX509TrustManager${}
FinalNewline:AppIntroduction.kt$com.geeksville.mesh.AppIntroduction.kt
FinalNewline:AppPrefs.kt$com.geeksville.mesh.android.AppPrefs.kt
FinalNewline:ApplicationModule.kt$com.geeksville.mesh.ApplicationModule.kt
FinalNewline:BLEException.kt$com.geeksville.mesh.service.BLEException.kt
FinalNewline:BluetoothInterfaceFactory.kt$com.geeksville.mesh.repository.radio.BluetoothInterfaceFactory.kt
FinalNewline:BluetoothRepositoryModule.kt$com.geeksville.mesh.repository.bluetooth.BluetoothRepositoryModule.kt
FinalNewline:BluetoothViewModel.kt$com.geeksville.mesh.model.BluetoothViewModel.kt
FinalNewline:BootCompleteReceiver.kt$com.geeksville.mesh.service.BootCompleteReceiver.kt
FinalNewline:Color.kt$com.geeksville.mesh.ui.theme.Color.kt
FinalNewline:CoroutineDispatchers.kt$com.geeksville.mesh.CoroutineDispatchers.kt
FinalNewline:Coroutines.kt$com.geeksville.mesh.concurrent.Coroutines.kt
FinalNewline:CustomTileSource.kt$com.geeksville.mesh.model.map.CustomTileSource.kt
FinalNewline:DatabaseModule.kt$com.geeksville.mesh.database.DatabaseModule.kt
FinalNewline:DateUtils.kt$com.geeksville.mesh.android.DateUtils.kt
FinalNewline:DebugLogFile.kt$com.geeksville.mesh.android.DebugLogFile.kt
FinalNewline:DeferredExecution.kt$com.geeksville.mesh.concurrent.DeferredExecution.kt
FinalNewline:DeviceVersion.kt$com.geeksville.mesh.model.DeviceVersion.kt
FinalNewline:DeviceVersionTest.kt$com.geeksville.mesh.model.DeviceVersionTest.kt
FinalNewline:ElevationInfo.kt$com.geeksville.mesh.ui.compose.ElevationInfo.kt
FinalNewline:ExpireChecker.kt$com.geeksville.mesh.android.ExpireChecker.kt
FinalNewline:InterfaceId.kt$com.geeksville.mesh.repository.radio.InterfaceId.kt
FinalNewline:InterfaceSpec.kt$com.geeksville.mesh.repository.radio.InterfaceSpec.kt
FinalNewline:Logging.kt$com.geeksville.mesh.android.Logging.kt
FinalNewline:MockInterfaceFactory.kt$com.geeksville.mesh.repository.radio.MockInterfaceFactory.kt
FinalNewline:NOAAWmsTileSource.kt$com.geeksville.mesh.model.map.NOAAWmsTileSource.kt
FinalNewline:NopInterface.kt$com.geeksville.mesh.repository.radio.NopInterface.kt
FinalNewline:NopInterfaceFactory.kt$com.geeksville.mesh.repository.radio.NopInterfaceFactory.kt
FinalNewline:OnlineTileSourceAuth.kt$com.geeksville.mesh.model.map.OnlineTileSourceAuth.kt
FinalNewline:PreferenceCategory.kt$com.geeksville.mesh.ui.components.PreferenceCategory.kt
FinalNewline:PreviewParameterProviders.kt$com.geeksville.mesh.ui.preview.PreviewParameterProviders.kt
FinalNewline:ProbeTableProvider.kt$com.geeksville.mesh.repository.usb.ProbeTableProvider.kt
FinalNewline:QuickChatActionRepository.kt$com.geeksville.mesh.database.QuickChatActionRepository.kt
FinalNewline:RadioNotConnectedException.kt$com.geeksville.mesh.service.RadioNotConnectedException.kt
FinalNewline:RadioRepositoryModule.kt$com.geeksville.mesh.repository.radio.RadioRepositoryModule.kt
FinalNewline:RegularPreference.kt$com.geeksville.mesh.ui.components.RegularPreference.kt
FinalNewline:SafeBluetooth.kt$com.geeksville.mesh.service.SafeBluetooth.kt
FinalNewline:SatelliteCountInfo.kt$com.geeksville.mesh.ui.compose.SatelliteCountInfo.kt
FinalNewline:SerialConnection.kt$com.geeksville.mesh.repository.usb.SerialConnection.kt
FinalNewline:SerialConnectionListener.kt$com.geeksville.mesh.repository.usb.SerialConnectionListener.kt
FinalNewline:SerialInterface.kt$com.geeksville.mesh.repository.radio.SerialInterface.kt
FinalNewline:SerialInterfaceFactory.kt$com.geeksville.mesh.repository.radio.SerialInterfaceFactory.kt
FinalNewline:SoftwareUpdateService.kt$com.geeksville.mesh.service.SoftwareUpdateService.kt
FinalNewline:SqlTileWriterExt.kt$com.geeksville.mesh.util.SqlTileWriterExt.kt
FinalNewline:TCPInterfaceFactory.kt$com.geeksville.mesh.repository.radio.TCPInterfaceFactory.kt
FinalNewline:UsbBroadcastReceiver.kt$com.geeksville.mesh.repository.usb.UsbBroadcastReceiver.kt
FinalNewline:UsbRepositoryModule.kt$com.geeksville.mesh.repository.usb.UsbRepositoryModule.kt
ForbiddenComment:MapFragment.kt$// TODO: Accept filename input param from user
ForbiddenComment:SafeBluetooth.kt$SafeBluetooth$// TODO: display some kind of UI about restarting BLE
FunctionNaming:PacketDao.kt$PacketDao$@Query("DELETE FROM packet WHERE uuid=:uuid") suspend fun _delete(uuid: Long)
FunctionNaming:QuickChatActionDao.kt$QuickChatActionDao$@Query("Delete from quick_chat where uuid=:uuid") fun _delete(uuid: Long)
FunctionParameterNaming:LocationUtils.kt$_degIn: Double
FunctionParameterNaming:LocationUtils.kt$lat_a: Double
FunctionParameterNaming:LocationUtils.kt$lat_b: Double
FunctionParameterNaming:LocationUtils.kt$lng_a: Double
FunctionParameterNaming:LocationUtils.kt$lng_b: Double
ImplicitDefaultLocale:LocationUtils.kt$GPSFormat$String.format( "%s%s %.6s %.7s", UTM.zone, UTM.toMGRS().band, UTM.easting, UTM.northing )
ImplicitDefaultLocale:LocationUtils.kt$GPSFormat$String.format( "%s%s %s%s %05d %05d", MGRS.zone, MGRS.band, MGRS.column, MGRS.row, MGRS.easting, MGRS.northing )
ImplicitDefaultLocale:LocationUtils.kt$GPSFormat$String.format("%.5f %.5f", p.latitude, p.longitude)
ImplicitDefaultLocale:LocationUtils.kt$GPSFormat$String.format("%s°%s'%.5s\"%s", a[0], a[1], a[2], a[3])
ImplicitDefaultLocale:NodeInfo.kt$NodeInfo$String.format("%d%%", batteryLevel)
LargeClass:MeshService.kt$MeshService : ServiceLogging
LongMethod:AmbientLightingConfigItemList.kt$@Composable fun AmbientLightingConfigItemList( ambientLightingConfig: ModuleConfigProtos.ModuleConfig.AmbientLightingConfig, enabled: Boolean, onSaveClicked: (ModuleConfigProtos.ModuleConfig.AmbientLightingConfig) -> Unit, )
LongMethod:AudioConfigItemList.kt$@Composable fun AudioConfigItemList( audioConfig: AudioConfig, enabled: Boolean, onSaveClicked: (AudioConfig) -> Unit, )
LongMethod:CannedMessageConfigItemList.kt$@Composable fun CannedMessageConfigItemList( messages: String, cannedMessageConfig: CannedMessageConfig, enabled: Boolean, onSaveClicked: (messages: String, config: CannedMessageConfig) -> Unit, )
LongMethod:ChannelSettingsItemList.kt$@Composable fun ChannelSettingsItemList( settingsList: List<ChannelSettings>, modemPresetName: String = "Default", maxChannels: Int = 8, enabled: Boolean, onNegativeClicked: () -> Unit = { }, onPositiveClicked: (List<ChannelSettings>) -> Unit, )
LongMethod:ContactsFragment.kt$ContactsFragment.ActionModeCallback$override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean
LongMethod:DeviceConfigItemList.kt$@Composable fun DeviceConfigItemList( deviceConfig: DeviceConfig, enabled: Boolean, onSaveClicked: (DeviceConfig) -> Unit, )
LongMethod:DisplayConfigItemList.kt$@Composable fun DisplayConfigItemList( displayConfig: DisplayConfig, enabled: Boolean, onSaveClicked: (DisplayConfig) -> Unit, )
LongMethod:DropDownPreference.kt$@Composable fun <T> DropDownPreference( title: String, enabled: Boolean, items: List<Pair<T, String>>, selectedItem: T, onItemSelected: (T) -> Unit, modifier: Modifier = Modifier, summary: String? = null, )
LongMethod:EditListPreference.kt$@Composable inline fun <reified T> EditListPreference( title: String, list: List<T>, maxCount: Int, enabled: Boolean, keyboardActions: KeyboardActions, crossinline onValuesChanged: (List<T>) -> Unit, modifier: Modifier = Modifier, )
LongMethod:ExternalNotificationConfigItemList.kt$@Composable fun ExternalNotificationConfigItemList( ringtone: String, extNotificationConfig: ExternalNotificationConfig, enabled: Boolean, onSaveClicked: (ringtone: String, config: ExternalNotificationConfig) -> Unit, )
LongMethod:MQTTConfigItemList.kt$@Composable fun MQTTConfigItemList( mqttConfig: MQTTConfig, enabled: Boolean, onSaveClicked: (MQTTConfig) -> Unit, )
LongMethod:MainActivity.kt$MainActivity$override fun onOptionsItemSelected(item: MenuItem): Boolean
LongMethod:MapFragment.kt$@Composable fun MapView( model: UIViewModel = viewModel(), )
LongMethod:MeshService.kt$MeshService$private fun handleReceivedData(packet: MeshPacket)
LongMethod:PowerConfigItemList.kt$@Composable fun PowerConfigItemList( powerConfig: PowerConfig, enabled: Boolean, onSaveClicked: (PowerConfig) -> Unit, )
LongMethod:RadioConfigViewModel.kt$RadioConfigViewModel$private fun processPacketResponse(packet: MeshProtos.MeshPacket)
LongMethod:SerialConfigItemList.kt$@Composable fun SerialConfigItemList( serialConfig: SerialConfig, enabled: Boolean, onSaveClicked: (SerialConfig) -> Unit, )
LongMethod:SettingsFragment.kt$SettingsFragment$private fun initCommonUI()
LongMethod:StoreForwardConfigItemList.kt$@Composable fun StoreForwardConfigItemList( storeForwardConfig: StoreForwardConfig, enabled: Boolean, onSaveClicked: (StoreForwardConfig) -> Unit, )
LongMethod:TelemetryConfigItemList.kt$@Composable fun TelemetryConfigItemList( telemetryConfig: TelemetryConfig, enabled: Boolean, onSaveClicked: (TelemetryConfig) -> Unit, )
LongMethod:UIState.kt$UIViewModel$fun saveMessagesCSV(uri: Uri)
LongMethod:UserConfigItemList.kt$@Composable fun UserConfigItemList( userConfig: MeshProtos.User, enabled: Boolean, onSaveClicked: (MeshProtos.User) -> Unit, )
LongParameterList:BTScanModel.kt$BTScanModel$( private val application: Application, private val serviceRepository: ServiceRepository, private val bluetoothRepository: BluetoothRepository, private val usbRepository: UsbRepository, private val usbManagerLazy: dagger.Lazy<UsbManager>, private val networkRepository: NetworkRepository, private val radioInterfaceService: RadioInterfaceService, )
LongParameterList:NOAAWmsTileSource.kt$NOAAWmsTileSource$( aName: String, aBaseUrl: Array<String>, layername: String, version: String, time: String?, srs: String, style: String?, format: String, )
LongParameterList:OnlineTileSourceAuth.kt$OnlineTileSourceAuth$( aName: String, aZoomLevel: Int, aZoomMaxLevel: Int, aTileSizePixels: Int, aImageFileNameEnding: String, aBaseUrl: Array<String>, pCopyright: String, tileSourcePolicy: TileSourcePolicy, layerName: String?, apiKey: String )
LongParameterList:RadioInterfaceService.kt$RadioInterfaceService$( private val context: Application, private val dispatchers: CoroutineDispatchers, private val bluetoothRepository: BluetoothRepository, private val networkRepository: NetworkRepository, private val processLifecycle: Lifecycle, @RadioRepositoryQualifier private val prefs: SharedPreferences, private val interfaceFactory: InterfaceFactory, )
MagicNumber:BatteryInfo.kt$100
MagicNumber:BatteryInfo.kt$101
MagicNumber:BatteryInfo.kt$14
MagicNumber:BatteryInfo.kt$15
MagicNumber:BatteryInfo.kt$34
MagicNumber:BatteryInfo.kt$35
MagicNumber:BatteryInfo.kt$4
MagicNumber:BatteryInfo.kt$5
MagicNumber:BatteryInfo.kt$79
MagicNumber:BatteryInfo.kt$80
MagicNumber:BluetoothInterface.kt$BluetoothInterface$1000
MagicNumber:BluetoothInterface.kt$BluetoothInterface$1500
MagicNumber:BluetoothInterface.kt$BluetoothInterface$500
MagicNumber:BluetoothInterface.kt$BluetoothInterface$512
MagicNumber:BuildUtils.kt$BuildUtils$21
MagicNumber:Channel.kt$0xff
MagicNumber:ChannelOption.kt$.03125f
MagicNumber:ChannelOption.kt$.0625f
MagicNumber:ChannelOption.kt$.203125f
MagicNumber:ChannelOption.kt$.40625f
MagicNumber:ChannelOption.kt$.8125f
MagicNumber:ChannelOption.kt$1.6250f
MagicNumber:ChannelOption.kt$1000f
MagicNumber:ChannelOption.kt$1600
MagicNumber:ChannelOption.kt$200
MagicNumber:ChannelOption.kt$3.25f
MagicNumber:ChannelOption.kt$31
MagicNumber:ChannelOption.kt$400
MagicNumber:ChannelOption.kt$5
MagicNumber:ChannelOption.kt$62
MagicNumber:ChannelOption.kt$800
MagicNumber:ChannelOption.kt$ChannelOption.LONG_FAST$.250f
MagicNumber:ChannelOption.kt$ChannelOption.LONG_MODERATE$.125f
MagicNumber:ChannelOption.kt$ChannelOption.LONG_SLOW$.125f
MagicNumber:ChannelOption.kt$ChannelOption.MEDIUM_FAST$.250f
MagicNumber:ChannelOption.kt$ChannelOption.MEDIUM_SLOW$.250f
MagicNumber:ChannelOption.kt$ChannelOption.SHORT_FAST$.250f
MagicNumber:ChannelOption.kt$ChannelOption.SHORT_SLOW$.250f
MagicNumber:ChannelOption.kt$ChannelOption.VERY_LONG_SLOW$.0625f
MagicNumber:ChannelSet.kt$40
MagicNumber:ChannelSet.kt$960
MagicNumber:ContactsFragment.kt$ContactsFragment.ActionModeCallback$7
MagicNumber:ContactsFragment.kt$ContactsFragment.ActionModeCallback$8
MagicNumber:ContextServices.kt$33
MagicNumber:DataPacket.kt$DataPacket.CREATOR$16
MagicNumber:DebugFragment.kt$3
MagicNumber:DeviceVersion.kt$DeviceVersion$100
MagicNumber:DeviceVersion.kt$DeviceVersion$10000
MagicNumber:DownloadButton.kt$1.25f
MagicNumber:EditChannelDialog.kt$16
MagicNumber:EditChannelDialog.kt$32
MagicNumber:EditIPv4Preference.kt$0xff
MagicNumber:EditIPv4Preference.kt$16
MagicNumber:EditIPv4Preference.kt$24
MagicNumber:EditIPv4Preference.kt$8
MagicNumber:EditListPreference.kt$12
MagicNumber:EditListPreference.kt$12345
MagicNumber:EditListPreference.kt$67890
MagicNumber:EditWaypointDialog.kt$123
MagicNumber:EditWaypointDialog.kt$128169
MagicNumber:EditWaypointDialog.kt$128205
MagicNumber:Extensions.kt$1000
MagicNumber:Extensions.kt$1440000
MagicNumber:Extensions.kt$24
MagicNumber:Extensions.kt$2880
MagicNumber:Extensions.kt$60
MagicNumber:LazyColumnDragAndDropDemo.kt$50
MagicNumber:LocationRepository.kt$LocationRepository$1000L
MagicNumber:LocationRepository.kt$LocationRepository$30
MagicNumber:LocationRepository.kt$LocationRepository$31
MagicNumber:LocationUtils.kt$0.8
MagicNumber:LocationUtils.kt$110540
MagicNumber:LocationUtils.kt$111320
MagicNumber:LocationUtils.kt$180
MagicNumber:LocationUtils.kt$1e-7
MagicNumber:LocationUtils.kt$360
MagicNumber:LocationUtils.kt$360.0
MagicNumber:LocationUtils.kt$3600.0
MagicNumber:LocationUtils.kt$60
MagicNumber:LocationUtils.kt$60.0
MagicNumber:LocationUtils.kt$6366000
MagicNumber:LocationUtils.kt$GPSFormat$3
MagicNumber:MQTTRepository.kt$MQTTRepository$512
MagicNumber:MainActivity.kt$MainActivity$30000
MagicNumber:MainActivity.kt$MainActivity$5
MagicNumber:MapFragment.kt$0.5f
MagicNumber:MapFragment.kt$1.3
MagicNumber:MapFragment.kt$1000
MagicNumber:MapFragment.kt$1024.0
MagicNumber:MapFragment.kt$128205
MagicNumber:MapFragment.kt$12F
MagicNumber:MapFragment.kt$1e-7
MagicNumber:MapFragment.kt$<no name provided>$1e7
MagicNumber:MapViewExtensions.kt$1e-5
MagicNumber:MapViewExtensions.kt$1e-7
MagicNumber:MapViewExtensions.kt$3.0f
MagicNumber:MapViewExtensions.kt$40f
MagicNumber:MapViewExtensions.kt$60f
MagicNumber:MapViewExtensions.kt$80f
MagicNumber:MarkerWithLabel.kt$MarkerWithLabel$3
MagicNumber:MeshService.kt$MeshService$0xffffffff
MagicNumber:MeshService.kt$MeshService$100
MagicNumber:MeshService.kt$MeshService$1000
MagicNumber:MeshService.kt$MeshService$1000.0
MagicNumber:MeshService.kt$MeshService$1000L
MagicNumber:MeshService.kt$MeshService$16
MagicNumber:MeshService.kt$MeshService$30
MagicNumber:MeshService.kt$MeshService$32
MagicNumber:MeshService.kt$MeshService$60000
MagicNumber:MeshService.kt$MeshService$8
MagicNumber:MetricsViewModel.kt$MetricsViewModel$1000L
MagicNumber:MetricsViewModel.kt$MetricsViewModel$1e-5
MagicNumber:MetricsViewModel.kt$MetricsViewModel$1e-7
MagicNumber:MockInterface.kt$MockInterface$1.5f
MagicNumber:MockInterface.kt$MockInterface$1000
MagicNumber:MockInterface.kt$MockInterface$16
MagicNumber:MockInterface.kt$MockInterface$2000
MagicNumber:MockInterface.kt$MockInterface$32.776665
MagicNumber:MockInterface.kt$MockInterface$32.960758
MagicNumber:MockInterface.kt$MockInterface$96.733521
MagicNumber:MockInterface.kt$MockInterface$96.796989
MagicNumber:NOAAWmsTileSource.kt$NOAAWmsTileSource$180
MagicNumber:NOAAWmsTileSource.kt$NOAAWmsTileSource$256
MagicNumber:NOAAWmsTileSource.kt$NOAAWmsTileSource$360.0
MagicNumber:NOAAWmsTileSource.kt$NOAAWmsTileSource$4
MagicNumber:NOAAWmsTileSource.kt$NOAAWmsTileSource$5
MagicNumber:NodeInfo.kt$DeviceMetrics.Companion$1000
MagicNumber:NodeInfo.kt$EnvironmentMetrics.Companion$1000
MagicNumber:NodeInfo.kt$NodeInfo$0.114
MagicNumber:NodeInfo.kt$NodeInfo$0.299
MagicNumber:NodeInfo.kt$NodeInfo$0.587
MagicNumber:NodeInfo.kt$NodeInfo$0x0000FF
MagicNumber:NodeInfo.kt$NodeInfo$0x00FF00
MagicNumber:NodeInfo.kt$NodeInfo$0xFF0000
MagicNumber:NodeInfo.kt$NodeInfo$1000
MagicNumber:NodeInfo.kt$NodeInfo$1000.0
MagicNumber:NodeInfo.kt$NodeInfo$15
MagicNumber:NodeInfo.kt$NodeInfo$16
MagicNumber:NodeInfo.kt$NodeInfo$1609
MagicNumber:NodeInfo.kt$NodeInfo$1609.34
MagicNumber:NodeInfo.kt$NodeInfo$255
MagicNumber:NodeInfo.kt$NodeInfo$3.281
MagicNumber:NodeInfo.kt$NodeInfo$60
MagicNumber:NodeInfo.kt$NodeInfo$8
MagicNumber:NodeInfo.kt$Position$180
MagicNumber:NodeInfo.kt$Position$90
MagicNumber:NodeInfo.kt$Position$90.0
MagicNumber:NodeInfo.kt$Position.Companion$1000
MagicNumber:NodeInfo.kt$Position.Companion$1e-7
MagicNumber:NodeInfo.kt$Position.Companion$1e7
MagicNumber:PacketRepository.kt$PacketRepository$500
MagicNumber:PacketResponseStateDialog.kt$100
MagicNumber:ProbeTableProvider.kt$ProbeTableProvider$21972
MagicNumber:ProbeTableProvider.kt$ProbeTableProvider$32809
MagicNumber:ProbeTableProvider.kt$ProbeTableProvider$6790
MagicNumber:ProbeTableProvider.kt$ProbeTableProvider$9114
MagicNumber:SafeBluetooth.kt$SafeBluetooth$10
MagicNumber:SafeBluetooth.kt$SafeBluetooth$100
MagicNumber:SafeBluetooth.kt$SafeBluetooth$1000
MagicNumber:SafeBluetooth.kt$SafeBluetooth$2500
MagicNumber:SafeBluetooth.kt$SafeBluetooth.<no name provided>$2500
MagicNumber:SerialConnectionImpl.kt$SerialConnectionImpl$115200
MagicNumber:SerialConnectionImpl.kt$SerialConnectionImpl$200
MagicNumber:ServiceClient.kt$ServiceClient$500
MagicNumber:SoftwareUpdateService.kt$0xFF
MagicNumber:SoftwareUpdateService.kt$16
MagicNumber:SoftwareUpdateService.kt$24
MagicNumber:SoftwareUpdateService.kt$3
MagicNumber:SoftwareUpdateService.kt$4
MagicNumber:SoftwareUpdateService.kt$8
MagicNumber:StreamInterface.kt$StreamInterface$0xff
MagicNumber:StreamInterface.kt$StreamInterface$3
MagicNumber:StreamInterface.kt$StreamInterface$4
MagicNumber:StreamInterface.kt$StreamInterface$8
MagicNumber:TCPInterface.kt$TCPInterface$1000
MagicNumber:TCPInterface.kt$TCPInterface$180
MagicNumber:TCPInterface.kt$TCPInterface$4403
MagicNumber:TCPInterface.kt$TCPInterface$500
MagicNumber:UIState.kt$4
MatchingDeclarationName:AnalyticsClient.kt$AnalyticsProvider
MatchingDeclarationName:DistanceExtensions.kt$DistanceUnit
MatchingDeclarationName:LocationUtils.kt$GPSFormat
MatchingDeclarationName:MeshServiceStarter.kt$ServiceStarter : Worker
MatchingDeclarationName:PreviewParameterProviders.kt$NodeInfoPreviewParameterProvider : PreviewParameterProvider
MatchingDeclarationName:SortOption.kt$NodeSortOption
MaxLineLength:AppPrefs.kt$FloatPref$fun get(thisRef: AppPrefs, prop: KProperty<Float>): Float
MaxLineLength:AppPrefs.kt$StringPref$fun get(thisRef: AppPrefs, prop: KProperty<String>): String
MaxLineLength:BluetoothInterface.kt$/* Info for the esp32 device side code. See that source for the 'gold' standard docs on this interface. MeshBluetoothService UUID 6ba1b218-15a8-461f-9fa8-5dcae273eafd FIXME - notify vs indication for fromradio output. Using notify for now, not sure if that is best FIXME - in the esp32 mesh management code, occasionally mirror the current net db to flash, so that if we reboot we still have a good guess of users who are out there. FIXME - make sure this protocol is guaranteed robust and won't drop packets "According to the BLE specification the notification length can be max ATT_MTU - 3. The 3 bytes subtracted is the 3-byte header(OP-code (operation, 1 byte) and the attribute handle (2 bytes)). In BLE 4.1 the ATT_MTU is 23 bytes (20 bytes for payload), but in BLE 4.2 the ATT_MTU can be negotiated up to 247 bytes." MAXPACKET is 256? look into what the lora lib uses. FIXME Characteristics: UUID properties description 8ba2bcc2-ee02-4a55-a531-c525c5e454d5 read fromradio - contains a newly received packet destined towards the phone (up to MAXPACKET bytes? per packet). After reading the esp32 will put the next packet in this mailbox. If the FIFO is empty it will put an empty packet in this mailbox. f75c76d2-129e-4dad-a1dd-7866124401e7 write toradio - write ToRadio protobufs to this charstic to send them (up to MAXPACKET len) ed9da18c-a800-4f66-a670-aa7547e34453 read|notify|write fromnum - the current packet # in the message waiting inside fromradio, if the phone sees this notify it should read messages until it catches up with this number. The phone can write to this register to go backwards up to FIXME packets, to handle the rare case of a fromradio packet was dropped after the esp32 callback was called, but before it arrives at the phone. If the phone writes to this register the esp32 will discard older packets and put the next packet >= fromnum in fromradio. When the esp32 advances fromnum, it will delay doing the notify by 100ms, in the hopes that the notify will never actally need to be sent if the phone is already pulling from fromradio. Note: that if the phone ever sees this number decrease, it means the esp32 has rebooted. Re: queue management Not all messages are kept in the fromradio queue (filtered based on SubPacket): * only the most recent Position and User messages for a particular node are kept * all Data SubPackets are kept * No WantNodeNum / DenyNodeNum messages are kept A variable keepAllPackets, if set to true will suppress this behavior and instead keep everything for forwarding to the phone (for debugging) */
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$*
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$// BLE handles stable. So turn the hack off for these devices. FIXME - find a better way to know that the board is NRF52 based
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$// The following optimization is not currently correct - because the device might be sleeping and come back with different BLE handles
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$/// Our service - note - it is possible to get back a null response for getService if the device services haven't yet been found
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$/// We gracefully handle safe being null because this can occur if someone has unpaired from our device - just abandon the reconnect attempt
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$/// We only force service refresh the _first_ time we connect to the device. Thereafter it is assumed the firmware didn't change
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$//needForceRefresh = false // In fact, because of tearing down BLE in sleep on the ESP32, our handle # assignments are not stable across sleep - so we much refetch every time
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$delay(1000)
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$delay(500)
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$if
MaxLineLength:BluetoothInterface.kt$BluetoothInterface$null
MaxLineLength:BluetoothState.kt$BluetoothState$"BluetoothState(hasPermissions=$hasPermissions, enabled=$enabled, bondedDevices=${bondedDevices.map { it.anonymize }})"
MaxLineLength:Channel.kt$Channel$// We have a new style 'empty' channel name. Use the same logic from the device to convert that to a human readable name
MaxLineLength:ContextServices.kt$val Context.locationManager: LocationManager get() = requireNotNull(getSystemService(Context.LOCATION_SERVICE) as? LocationManager?)
MaxLineLength:ContextServices.kt$val Context.notificationManager: NotificationManager get() = requireNotNull(getSystemService(Context.NOTIFICATION_SERVICE) as? NotificationManager?)
MaxLineLength:CustomTileSource.kt$CustomTileSource.Companion$arrayOf("https://new.nowcoast.noaa.gov/arcgis/services/nowcoast/radar_meteo_imagery_nexrad_time/MapServer/WmsServer?")
MaxLineLength:DataPacket.kt$DataPacket$val dataType: Int
MaxLineLength:LoRaConfigItemList.kt$value = if (isFocused || loraInput.overrideFrequency != 0f) loraInput.overrideFrequency else primaryChannel.radioFreq
MaxLineLength:LocationRepository.kt$LocationRepository$info("Starting location updates with $providerList intervalMs=${intervalMs}ms and minDistanceM=${minDistanceM}m")
MaxLineLength:MQTTRepository.kt$MQTTRepository.Companion$*
MaxLineLength:MainActivity.kt$/* UI design material setup instructions: https://material.io/develop/android/docs/getting-started/ dark theme (or use system eventually) https://material.io/develop/android/theming/dark/ NavDrawer is a standard draw which can be dragged in from the left or the menu icon inside the app title. Fragments: SettingsFragment shows "Settings" username shortname bluetooth pairing list (eventually misc device settings that are not channel related) Channel fragment "Channel" qr code, copy link button ch number misc other settings (eventually a way of choosing between past channels) ChatFragment "Messages" a text box to enter new texts a scrolling list of rows. each row is a text and a sender info layout NodeListFragment "Users" a node info row for every node ViewModels: BTScanModel starts/stops bt scan and provides list of devices (manages entire scan lifecycle) MeshModel contains: (manages entire service relationship) current received texts current radio macaddr current node infos (updated dynamically) eventually use bottom navigation bar to switch between, Members, Chat, Channel, Settings. https://material.io/develop/android/components/bottom-navigation-view/ use numbers of # chat messages and # of members in the badges. (per this recommendation to not use top tabs: https://ux.stackexchange.com/questions/102439/android-ux-when-to-use-bottom-navigation-and-when-to-use-tabs ) eventually: make a custom theme: https://github.com/material-components/material-components-android/tree/master/material-theme-builder */
MaxLineLength:MainActivity.kt$MainActivity$/* This problem can occur if we unbind, but there is already an onConnected job waiting to run. That job runs and then makes meshService != null again I think I've fixed this by cancelling connectionJob. We'll see! */
MaxLineLength:MainActivity.kt$MainActivity$// Old samsung phones have a race condition andthis might rarely fail. Which is probably find because the bind will be sufficient most of the time
MaxLineLength:MainActivity.kt$MainActivity$// We now wait for the device to connect, once connected, we ask the user if they want to switch to the new channel
MaxLineLength:MainActivity.kt$MainActivity$// pager.offscreenPageLimit = 0 // Don't keep any offscreen pages around, because we want to make sure our bluetooth scanning stops
MaxLineLength:MainActivity.kt$MainActivity$MeshService.ConnectionState.DEVICE_SLEEP -> R.drawable.ic_twotone_cloud_upload_24 to R.string.device_sleeping
MaxLineLength:MainActivity.kt$MainActivity$debug("Asked to open a channel URL - ask user if they want to switch to that channel. If so send the config to the radio")
MaxLineLength:MeshService.kt$MeshService$*
MaxLineLength:MeshService.kt$MeshService$* Send a mesh packet to the radio, if the radio is not currently connected this function will throw NotConnectedException
MaxLineLength:MeshService.kt$MeshService$// If we've received our initial config, our radio settings and all of our channels, send any queued packets and broadcast connected to clients
MaxLineLength:MeshService.kt$MeshService$// Nodes periodically send out position updates, but those updates might not contain a lat & lon (because no GPS lock)
MaxLineLength:MeshService.kt$MeshService$// Note: we do not haveNodeDB = true because that means we've got a valid db from a real device (rather than this possibly stale hint)
MaxLineLength:MeshService.kt$MeshService$// Update last seen for the node that sent the packet, but also for _our node_ because anytime a packet passes
MaxLineLength:MeshService.kt$MeshService$// Update our last seen based on any valid timestamps. If the device didn't provide a timestamp make one
MaxLineLength:MeshService.kt$MeshService$// We always start foreground because that's how our service is always started (if we didn't then android would kill us)
MaxLineLength:MeshService.kt$MeshService$// We like to look at the local node to see if it has been sending out valid lat/lon, so for the LOCAL node (only)
MaxLineLength:MeshService.kt$MeshService$// We prefer to find nodes based on their assigned IDs, but if no ID has been assigned to a node, we can also find it based on node number
MaxLineLength:MeshService.kt$MeshService$// because apps really only care about important updates of node state - which handledReceivedData will give them
MaxLineLength:MeshService.kt$MeshService$// causes the phone to try and reconnect. If we fail downloading our initial radio state we don't want to
MaxLineLength:MeshService.kt$MeshService$// logAssert(earlyReceivedPackets.size < 128) // The max should normally be about 32, but if the device is messed up it might try to send forever
MaxLineLength:MeshService.kt$MeshService$// note: no need to call startDeviceSleep(), because this exception could only have reached us if it was already called
MaxLineLength:MeshService.kt$MeshService$MeshProtos.FromRadio.MQTTCLIENTPROXYMESSAGE_FIELD_NUMBER -> handleMqttProxyMessage(proto.mqttClientProxyMessage)
MaxLineLength:MeshService.kt$MeshService$debug("Received nodeinfo num=${info.num}, hasUser=${info.hasUser()}, hasPosition=${info.hasPosition()}, hasDeviceMetrics=${info.hasDeviceMetrics()}")
MaxLineLength:MeshService.kt$MeshService.Companion$// generate a RECEIVED action filter string that includes either the portnumber as an int, or preferably a symbolic name from portnums.proto
MaxLineLength:MeshServiceBroadcasts.kt$MeshServiceBroadcasts$context.sendBroadcast(intent)
MaxLineLength:MeshServiceNotifications.kt$MeshServiceNotifications$// If running on really old versions of android (<= 5.1.1) (possibly only cyanogen) we might encounter a bug with setting application specific icons
MaxLineLength:MetricsViewModel.kt$MetricsViewModel$writer.appendLine("$rxDateTime,\"$latitude\",\"$longitude\",\"$altitude\",\"$satsInView\",\"$speed\",\"$heading\"")
MaxLineLength:MetricsViewModel.kt$MetricsViewModel$writer.appendLine("\"date\",\"time\",\"latitude\",\"longitude\",\"altitude\",\"satsInView\",\"speed\",\"heading\"")
MaxLineLength:NodeInfo.kt$NodeInfo$prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE && dist < 1609 -> "%.0f ft".format(dist.toDouble()*3.281)
MaxLineLength:NodeInfo.kt$NodeInfo$prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE && dist >= 1609 -> "%.1f mi".format(dist / 1609.34)
MaxLineLength:NodeInfo.kt$NodeInfo$prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE && dist < 1000 -> "%.0f m".format(dist.toDouble())
MaxLineLength:NodeInfo.kt$NodeInfo$prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE && dist >= 1000 -> "%.1f km".format(dist / 1000.0)
MaxLineLength:NodeInfo.kt$Position$/**
MaxLineLength:NodeInfo.kt$Position$return "Position(lat=${latitude.anonymize}, lon=${longitude.anonymize}, alt=${altitude.anonymize}, time=${time})"
MaxLineLength:PositionConfigItemList.kt$.
MaxLineLength:RadioInterfaceService.kt$RadioInterfaceService$/**
MaxLineLength:RadioInterfaceService.kt$RadioInterfaceService$// If we are running on the emulator we default to the mock interface, so we can have some data to show to the user
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$*
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$* mtu operations seem to hang sometimes. To cope with this we have a 5 second timeout before throwing an exception and cancelling the work
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$// Attempt to invoke virtual method 'com.android.bluetooth.gatt.AdvertiseClient com.android.bluetooth.gatt.AdvertiseManager.getAdvertiseClient(int)' on a null object reference
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$// Set these to null _before_ calling gatt.disconnect(), because we don't want the old lostConnectCallback to get called
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$// We might unexpectedly fail inside here, but we don't want to pass that exception back up to the bluetooth GATT layer
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$// note - we don't need an init fn (because that would normally redo the connectGatt call - which we don't need)
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$06-29 08:47:15.037 29788-29813/com.geeksville.mesh D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=5 device=24:62:AB:F8:40:9A
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$?:
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$if
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$if (enable) BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE else BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE
MaxLineLength:SafeBluetooth.kt$SafeBluetooth$java.lang.NullPointerException: Attempt to invoke virtual method 'void android.bluetooth.BluetoothGattCallback.onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int)' on a null object reference
MaxLineLength:SafeBluetooth.kt$SafeBluetooth.<no name provided>$// After this execute reliable completes - we can continue with normal operations (see onReliableWriteCompleted)
MaxLineLength:SafeBluetooth.kt$SafeBluetooth.<no name provided>$// Note: if no work is pending (likely) we also just totally teardown and restart the connection, because we won't be
MaxLineLength:SafeBluetooth.kt$SafeBluetooth.<no name provided>$// We were not previously connected and we just failed with our non-auto connection attempt. Therefore we now need
MaxLineLength:SafeBluetooth.kt$SafeBluetooth.<no name provided>$// to do an autoconnection attempt. When that attempt succeeds/fails the normal callbacks will be called
MaxLineLength:ServiceClient.kt$ServiceClient$// Some phones seem to ahve a race where if you unbind and quickly rebind bindService returns false. Try
MaxLineLength:ServiceClient.kt$ServiceClient.<no name provided>$// If we start to close a service, it seems that there is a possibility a onServiceConnected event is the queue
MaxLineLength:SettingsFragment.kt$SettingsFragment$// Note: we pull this into a tempvar, because otherwise some other thread can change selectedAddress after our null check
MaxLineLength:SettingsFragment.kt$SettingsFragment$deviceSelectIPAddress.isChecked = scanModel.onSelected(BTScanModel.DeviceListEntry("", "t" + inputIPAddress.text, true))
MaxLineLength:SettingsFragment.kt$SettingsFragment$if
MaxLineLength:SqlTileWriterExt.kt$SqlTileWriterExt$"select " + DatabaseFileArchive.COLUMN_KEY + "," + COLUMN_EXPIRES + "," + DatabaseFileArchive.COLUMN_PROVIDER + " from " + DatabaseFileArchive.TABLE + " limit ? offset ?"
MaxLineLength:StreamInterface.kt$StreamInterface$*
MaxLineLength:StreamInterface.kt$StreamInterface$* An interface that assumes we are talking to a meshtastic device over some sort of stream connection (serial or TCP probably)
MaxLineLength:StreamInterface.kt$StreamInterface$// Note: we have to check if ptr +1 is equal to packet length (for example, for a 1 byte packetlen, this code will be run with ptr of4
MaxLineLength:StreamInterface.kt$StreamInterface$deliverPacket()
MaxLineLength:StreamInterface.kt$StreamInterface$lostSync()
MaxLineLength:StreamInterface.kt$StreamInterface$service.onDisconnect(isPermanent = true)
MaxLineLength:TextDividerPreference.kt$color = if (!enabled) MaterialTheme.colors.onSurface.copy(alpha = ContentAlpha.disabled) else Color.Unspecified
MaxLineLength:UIState.kt$UIViewModel$// date,time,from,sender name,sender lat,sender long,rx lat,rx long,rx elevation,rx snr,distance,hop limit,payload
MaxLineLength:UIState.kt$UIViewModel$writer.appendLine("$rxDateTime,\"$rxFrom\",\"$senderName\",\"$senderLat\",\"$senderLong\",\"$rxLat\",\"$rxLong\",\"$rxAlt\",\"$rxSnr\",\"$dist\",\"$hopLimit\",\"$payload\"")
MaxLineLength:UIState.kt$UIViewModel$writer.appendLine("\"date\",\"time\",\"from\",\"sender name\",\"sender lat\",\"sender long\",\"rx lat\",\"rx long\",\"rx elevation\",\"rx snr\",\"distance\",\"hop limit\",\"payload\"")
MayBeConst:AppPrefs.kt$AppPrefs.Companion$private val baseName = "appPrefs_"
MultiLineIfElse:BluetoothInterface.kt$BluetoothInterface$doDiscoverServicesAndInit()
MultiLineIfElse:BluetoothInterface.kt$BluetoothInterface$s.asyncDiscoverServices { discRes -> try { discRes.getOrThrow() service.serviceScope.handledLaunch { try { debug("Discovered services!") delay(1000) // android BLE is buggy and needs a 500ms sleep before calling getChracteristic, or you might get back null /* if (isFirstTime) { isFirstTime = false throw BLEException("Faking a BLE failure") } */ fromNum = getCharacteristic(BTM_FROMNUM_CHARACTER) // We treat the first send by a client as special isFirstSend = true // Now tell clients they can (finally use the api) service.onConnect() // Immediately broadcast any queued packets sitting on the device doReadFromRadio(true) } catch (ex: BLEException) { scheduleReconnect( "Unexpected error in initial device enumeration, forcing disconnect $ex" ) } } } catch (ex: BLEException) { if (s.gatt == null) warn("GATT was closed while discovering, assume we are shutting down") else scheduleReconnect( "Unexpected error discovering services, forcing disconnect $ex" ) } }
MultiLineIfElse:BluetoothInterface.kt$BluetoothInterface$safe?.asyncRequestMtu(512) { mtuRes -> try { mtuRes.getOrThrow() debug("MTU change attempted") // throw BLEException("Test MTU set failed") doDiscoverServicesAndInit() } catch (ex: BLEException) { shouldSetMtu = false scheduleReconnect( "Giving up on setting MTUs, forcing disconnect $ex" ) } }
MultiLineIfElse:BluetoothInterface.kt$BluetoothInterface$scheduleReconnect( "Unexpected error discovering services, forcing disconnect $ex" )
MultiLineIfElse:BluetoothInterface.kt$BluetoothInterface$startConnect()
MultiLineIfElse:BluetoothInterface.kt$BluetoothInterface$startWatchingFromNum()
MultiLineIfElse:BluetoothInterface.kt$BluetoothInterface$warn("GATT was closed while discovering, assume we are shutting down")
MultiLineIfElse:BluetoothInterface.kt$BluetoothInterface$warn("Interface is shutting down, so skipping discover")
MultiLineIfElse:BluetoothInterface.kt$BluetoothInterface$warn("Not connecting, because safe==null, someone must have closed us")
MultiLineIfElse:BluetoothRepository.kt$BluetoothRepository$bondedDevices.filter { it.name?.matches(Regex(BLE_NAME_PATTERN)) == true }
MultiLineIfElse:BluetoothRepository.kt$BluetoothRepository$emptyList()
MultiLineIfElse:BuildUtils.kt$BuildUtils$return Build.SUPPORTED_64_BIT_ABIS.size > 0
MultiLineIfElse:BuildUtils.kt$BuildUtils$return false
MultiLineIfElse:Channel.kt$Channel$"Custom"
MultiLineIfElse:Channel.kt$Channel$when (loraConfig.modemPreset) { ModemPreset.SHORT_TURBO -> "ShortTurbo" ModemPreset.SHORT_FAST -> "ShortFast" ModemPreset.SHORT_SLOW -> "ShortSlow" ModemPreset.MEDIUM_FAST -> "MediumFast" ModemPreset.MEDIUM_SLOW -> "MediumSlow" ModemPreset.LONG_FAST -> "LongFast" ModemPreset.LONG_SLOW -> "LongSlow" ModemPreset.LONG_MODERATE -> "LongMod" ModemPreset.VERY_LONG_SLOW -> "VLongSlow" else -> "Invalid" }
MultiLineIfElse:ChannelFragment.kt$channelSet = copy { settings.add(it) }
MultiLineIfElse:ChannelFragment.kt$channelSet = copy { settings[index] = it }
MultiLineIfElse:ChannelOption.kt$when (bandwidth) { 31 -> .03125f 62 -> .0625f 200 -> .203125f 400 -> .40625f 800 -> .8125f 1600 -> 1.6250f else -> bandwidth / 1000f }
MultiLineIfElse:ContextServices.kt$MaterialAlertDialogBuilder(this) .setTitle(title) .setMessage(rationale) .setNeutralButton(R.string.cancel) { _, _ -> } .setPositiveButton(R.string.accept) { _, _ -> invokeFun() } .show()
MultiLineIfElse:ContextServices.kt$invokeFun()
MultiLineIfElse:EditListPreference.kt$EditBase64Preference( title = "${index + 1}/$maxCount", value = value, enabled = enabled, keyboardActions = keyboardActions, onValueChange = { listState[index] = it as T onValuesChanged(listState) }, modifier = modifier.fillMaxWidth(), trailingIcon = trailingIcon, )
MultiLineIfElse:EditListPreference.kt$EditTextPreference( title = "${index + 1}/$maxCount", value = value, enabled = enabled, keyboardActions = keyboardActions, onValueChanged = { listState[index] = it as T onValuesChanged(listState) }, modifier = modifier.fillMaxWidth(), trailingIcon = trailingIcon, )
MultiLineIfElse:EditPasswordPreference.kt$painterResource(R.drawable.ic_twotone_visibility_24)
MultiLineIfElse:EditPasswordPreference.kt$painterResource(R.drawable.ic_twotone_visibility_off_24)
MultiLineIfElse:EditTextPreference.kt$it.toDoubleOrNull()?.let { double -> valueState = it onValueChanged(double) }
MultiLineIfElse:EditTextPreference.kt$it.toFloatOrNull()?.let { float -> valueState = it onValueChanged(float) }
MultiLineIfElse:EditTextPreference.kt$it.toUIntOrNull()?.toInt()?.let { int -> valueState = it onValueChanged(int) }
MultiLineIfElse:EditTextPreference.kt$onValueChanged(it)
MultiLineIfElse:EditTextPreference.kt$valueState = it
MultiLineIfElse:EditWaypointDialog.kt$AlertDialog( onDismissRequest = onDismissRequest, shape = RoundedCornerShape(16.dp), backgroundColor = MaterialTheme.colors.background, text = { Column(modifier = modifier.fillMaxWidth()) { Text( text = stringResource(title), style = MaterialTheme.typography.h6.copy( fontWeight = FontWeight.Bold, textAlign = TextAlign.Center, ), modifier = Modifier .fillMaxWidth() .padding(bottom = 16.dp), ) EditTextPreference( title = stringResource(R.string.name), value = waypointInput.name, maxSize = 29, // name max_size:30 enabled = true, isError = false, keyboardOptions = KeyboardOptions.Default.copy( keyboardType = KeyboardType.Text, imeAction = ImeAction.Done ), keyboardActions = KeyboardActions(onDone = { /*TODO*/ }), onValueChanged = { waypointInput = waypointInput.copy { name = it } }, trailingIcon = { IconButton(onClick = { showEmojiPickerView = true }) { Text( text = String(Character.toChars(emoji)), modifier = Modifier .background(MaterialTheme.colors.background, CircleShape) .padding(4.dp), fontSize = 24.sp, color = Color.Unspecified.copy(alpha = 1f), ) } }, ) EditTextPreference(title = stringResource(R.string.description), value = waypointInput.description, maxSize = 99, // description max_size:100 enabled = true, isError = false, keyboardOptions = KeyboardOptions.Default.copy( keyboardType = KeyboardType.Text, imeAction = ImeAction.Done ), keyboardActions = KeyboardActions(onDone = { /*TODO*/ }), onValueChanged = { waypointInput = waypointInput.copy { description = it } } ) Row( modifier = Modifier .fillMaxWidth() .size(48.dp), verticalAlignment = Alignment.CenterVertically ) { Image( painter = painterResource(R.drawable.ic_twotone_lock_24), contentDescription = stringResource(R.string.locked), ) Text(stringResource(R.string.locked)) Switch( modifier = Modifier .fillMaxWidth() .wrapContentWidth(Alignment.End), checked = waypointInput.lockedTo != 0, onCheckedChange = { waypointInput = waypointInput.copy { lockedTo = if (it) 1 else 0 } } ) } } }, buttons = { FlowRow( modifier = modifier.padding(start = 20.dp, end = 20.dp, bottom = 16.dp), horizontalArrangement = Arrangement.spacedBy(8.dp), verticalArrangement = Arrangement.Center, ) { TextButton( modifier = modifier.weight(1f), onClick = onDismissRequest ) { Text(stringResource(R.string.cancel)) } if (waypoint.id != 0) { Button( modifier = modifier.weight(1f), onClick = { onDeleteClicked(waypointInput) }, enabled = waypointInput.name.isNotEmpty(), ) { Text(stringResource(R.string.delete)) } } Button( modifier = modifier.weight(1f), onClick = { onSendClicked(waypointInput) }, enabled = waypointInput.name.isNotEmpty(), ) { Text(stringResource(R.string.send)) } } }, )
MultiLineIfElse:Exceptions.kt$Exceptions.errormsg("ignoring exception", ex)
MultiLineIfElse:ExpireChecker.kt$ExpireChecker$doExpire()
MultiLineIfElse:ExternalNotificationConfigItemList.kt$item { SwitchPreference(title = "Output LED active high", checked = externalNotificationInput.active, enabled = enabled, onCheckedChange = { externalNotificationInput = externalNotificationInput.copy { active = it } }) }
MultiLineIfElse:ExternalNotificationConfigItemList.kt$item { SwitchPreference(title = "Use PWM buzzer", checked = externalNotificationInput.usePwm, enabled = enabled, onCheckedChange = { externalNotificationInput = externalNotificationInput.copy { usePwm = it } }) }
MultiLineIfElse:Logging.kt$Logging$printlog(Log.ERROR, tag(), "$msg (exception ${ex.message})")
MultiLineIfElse:Logging.kt$Logging$printlog(Log.ERROR, tag(), "$msg")
MultiLineIfElse:MapFragment.kt$<no name provided>$showEditWaypointDialog = waypoint { latitudeI = (p.latitude * 1e7).toInt() longitudeI = (p.longitude * 1e7).toInt() }
MultiLineIfElse:MapFragment.kt$CacheLayout( cacheEstimate = cacheEstimate, onExecuteJob = { startDownload() }, onCancelDownload = { downloadRegionBoundingBox = null map.overlays.removeAll { it is Polygon } map.invalidate() }, modifier = Modifier.align(Alignment.BottomCenter) )
MultiLineIfElse:MapFragment.kt$Column( modifier = Modifier .padding(top = 16.dp, end = 16.dp) .align(Alignment.TopEnd), verticalArrangement = Arrangement.spacedBy(8.dp), ) { MapButton( onClick = ::showMapStyleDialog, icon = Icons.Outlined.Layers, contentDescription = R.string.map_style_selection, ) MapButton( enabled = hasGps, icon = if (myLocationOverlay == null) { Icons.Outlined.MyLocation } else { Icons.Default.LocationDisabled }, contentDescription = null, ) { if (context.hasLocationPermission()) { map.toggleMyLocation() } else { requestPermissionAndToggleLauncher.launch(context.getLocationPermissions()) } } }
MultiLineIfElse:MapViewWithLifecycle.kt$try { acquire() } catch (e: SecurityException) { errormsg("WakeLock permission exception: ${e.message}") } catch (e: IllegalStateException) { errormsg("WakeLock acquire() exception: ${e.message}") }
MultiLineIfElse:MapViewWithLifecycle.kt$try { release() } catch (e: IllegalStateException) { errormsg("WakeLock release() exception: ${e.message}") }
MultiLineIfElse:MeshService.kt$MeshService$getDataPacketById(packetId)?.let { p -> if (p.status == m) return@handledLaunch packetRepository.get().updateMessageStatus(p, m) serviceBroadcasts.broadcastMessageStatus(packetId, m) }
MultiLineIfElse:MeshService.kt$MeshService$p
MultiLineIfElse:MeshService.kt$MeshService$p.copy { warn("Public key mismatch from $longName ($shortName)") publicKey = it.errorByteString }
MultiLineIfElse:MeshService.kt$MeshService.<no name provided>$try { sendNow(p) } catch (ex: Exception) { errormsg("Error sending message, so enqueueing", ex) enqueueForSending(p) }
MultiLineIfElse:NOAAWmsTileSource.kt$NOAAWmsTileSource$sb.append("service=WMS")
MultiLineIfElse:NodeInfo.kt$MeshUser$hwModel.name.replace('_', '-').replace('p', '.').lowercase()
MultiLineIfElse:NodeInfo.kt$MeshUser$null
MultiLineIfElse:RadioConfigViewModel.kt$RadioConfigViewModel$viewModelScope.launch { radioConfigRepository.replaceAllSettings(new) }
MultiLineIfElse:RadioInterfaceService.kt$RadioInterfaceService$startInterface()
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth$cb
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth$null
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth$startNewWork()
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth$throw AssertionError("currentWork was not null: $currentWork")
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth$warn("wor completed, but we already killed it via failsafetimer? status=$status, res=$res")
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth$work.completion.resume(Result.success(res) as Result<Nothing>)
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth$work.completion.resumeWithException( BLEStatusException( status, "Bluetooth status=$status while doing ${work.tag}" ) )
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth.<no name provided>$completeWork(status, Unit)
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth.<no name provided>$completeWork(status, characteristic)
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth.<no name provided>$dropAndReconnect()
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth.<no name provided>$errormsg("Ignoring bogus onMtuChanged")
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth.<no name provided>$if (!characteristic.value.contentEquals(reliable)) { errormsg("A reliable write failed!") gatt.abortReliableWrite() completeWork( STATUS_RELIABLE_WRITE_FAILED, characteristic ) // skanky code to indicate failure } else { logAssert(gatt.executeReliableWrite()) // After this execute reliable completes - we can continue with normal operations (see onReliableWriteCompleted) }
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth.<no name provided>$lostConnection("lost connection")
MultiLineIfElse:SafeBluetooth.kt$SafeBluetooth.<no name provided>$warn("Received notification from $characteristic, but no handler registered")
MultiLineIfElse:TextDividerPreference.kt$Icon( trailingIcon, "trailingIcon", modifier = modifier .fillMaxWidth() .wrapContentWidth(Alignment.End), )
MultiLineIfElse:UIState.kt$add(channel { role = when (i) { 0 -> ChannelProtos.Channel.Role.PRIMARY in 1..new.lastIndex -> ChannelProtos.Channel.Role.SECONDARY else -> ChannelProtos.Channel.Role.DISABLED } index = i settings = new.getOrNull(i) ?: channelSettings { } })
NestedBlockDepth:LanguageUtils.kt$LanguageUtils$fun getLanguageTags(context: Context): Map<String, String>
NestedBlockDepth:MainActivity.kt$MainActivity$private fun onMeshConnectionChanged(newConnection: MeshService.ConnectionState)
NestedBlockDepth:MeshService.kt$MeshService$private fun handleReceivedAdmin(fromNodeNum: Int, a: AdminProtos.AdminMessage)
NestedBlockDepth:MeshService.kt$MeshService$private fun handleReceivedData(packet: MeshPacket)
NestedBlockDepth:RadioConfigViewModel.kt$RadioConfigViewModel$private fun processPacketResponse(packet: MeshProtos.MeshPacket)
NewLineAtEndOfFile:AppIntroduction.kt$com.geeksville.mesh.AppIntroduction.kt
NewLineAtEndOfFile:AppPrefs.kt$com.geeksville.mesh.android.AppPrefs.kt
NewLineAtEndOfFile:ApplicationModule.kt$com.geeksville.mesh.ApplicationModule.kt
NewLineAtEndOfFile:BLEException.kt$com.geeksville.mesh.service.BLEException.kt
NewLineAtEndOfFile:BluetoothInterfaceFactory.kt$com.geeksville.mesh.repository.radio.BluetoothInterfaceFactory.kt
NewLineAtEndOfFile:BluetoothRepositoryModule.kt$com.geeksville.mesh.repository.bluetooth.BluetoothRepositoryModule.kt
NewLineAtEndOfFile:BluetoothViewModel.kt$com.geeksville.mesh.model.BluetoothViewModel.kt
NewLineAtEndOfFile:BootCompleteReceiver.kt$com.geeksville.mesh.service.BootCompleteReceiver.kt
NewLineAtEndOfFile:Color.kt$com.geeksville.mesh.ui.theme.Color.kt
NewLineAtEndOfFile:CoroutineDispatchers.kt$com.geeksville.mesh.CoroutineDispatchers.kt
NewLineAtEndOfFile:Coroutines.kt$com.geeksville.mesh.concurrent.Coroutines.kt
NewLineAtEndOfFile:CustomTileSource.kt$com.geeksville.mesh.model.map.CustomTileSource.kt
NewLineAtEndOfFile:DatabaseModule.kt$com.geeksville.mesh.database.DatabaseModule.kt
NewLineAtEndOfFile:DateUtils.kt$com.geeksville.mesh.android.DateUtils.kt
NewLineAtEndOfFile:DebugLogFile.kt$com.geeksville.mesh.android.DebugLogFile.kt
NewLineAtEndOfFile:DeferredExecution.kt$com.geeksville.mesh.concurrent.DeferredExecution.kt
NewLineAtEndOfFile:DeviceVersion.kt$com.geeksville.mesh.model.DeviceVersion.kt
NewLineAtEndOfFile:DeviceVersionTest.kt$com.geeksville.mesh.model.DeviceVersionTest.kt
NewLineAtEndOfFile:ElevationInfo.kt$com.geeksville.mesh.ui.compose.ElevationInfo.kt
NewLineAtEndOfFile:ExpireChecker.kt$com.geeksville.mesh.android.ExpireChecker.kt
NewLineAtEndOfFile:InterfaceId.kt$com.geeksville.mesh.repository.radio.InterfaceId.kt
NewLineAtEndOfFile:InterfaceSpec.kt$com.geeksville.mesh.repository.radio.InterfaceSpec.kt
NewLineAtEndOfFile:Logging.kt$com.geeksville.mesh.android.Logging.kt
NewLineAtEndOfFile:MockInterfaceFactory.kt$com.geeksville.mesh.repository.radio.MockInterfaceFactory.kt
NewLineAtEndOfFile:NOAAWmsTileSource.kt$com.geeksville.mesh.model.map.NOAAWmsTileSource.kt
NewLineAtEndOfFile:NopInterface.kt$com.geeksville.mesh.repository.radio.NopInterface.kt
NewLineAtEndOfFile:NopInterfaceFactory.kt$com.geeksville.mesh.repository.radio.NopInterfaceFactory.kt
NewLineAtEndOfFile:OnlineTileSourceAuth.kt$com.geeksville.mesh.model.map.OnlineTileSourceAuth.kt
NewLineAtEndOfFile:PreferenceCategory.kt$com.geeksville.mesh.ui.components.PreferenceCategory.kt
NewLineAtEndOfFile:PreviewParameterProviders.kt$com.geeksville.mesh.ui.preview.PreviewParameterProviders.kt
NewLineAtEndOfFile:ProbeTableProvider.kt$com.geeksville.mesh.repository.usb.ProbeTableProvider.kt
NewLineAtEndOfFile:QuickChatActionRepository.kt$com.geeksville.mesh.database.QuickChatActionRepository.kt
NewLineAtEndOfFile:RadioNotConnectedException.kt$com.geeksville.mesh.service.RadioNotConnectedException.kt
NewLineAtEndOfFile:RadioRepositoryModule.kt$com.geeksville.mesh.repository.radio.RadioRepositoryModule.kt
NewLineAtEndOfFile:RegularPreference.kt$com.geeksville.mesh.ui.components.RegularPreference.kt
NewLineAtEndOfFile:SafeBluetooth.kt$com.geeksville.mesh.service.SafeBluetooth.kt
NewLineAtEndOfFile:SatelliteCountInfo.kt$com.geeksville.mesh.ui.compose.SatelliteCountInfo.kt
NewLineAtEndOfFile:SerialConnection.kt$com.geeksville.mesh.repository.usb.SerialConnection.kt
NewLineAtEndOfFile:SerialConnectionListener.kt$com.geeksville.mesh.repository.usb.SerialConnectionListener.kt
NewLineAtEndOfFile:SerialInterface.kt$com.geeksville.mesh.repository.radio.SerialInterface.kt
NewLineAtEndOfFile:SerialInterfaceFactory.kt$com.geeksville.mesh.repository.radio.SerialInterfaceFactory.kt
NewLineAtEndOfFile:SoftwareUpdateService.kt$com.geeksville.mesh.service.SoftwareUpdateService.kt
NewLineAtEndOfFile:SqlTileWriterExt.kt$com.geeksville.mesh.util.SqlTileWriterExt.kt
NewLineAtEndOfFile:TCPInterfaceFactory.kt$com.geeksville.mesh.repository.radio.TCPInterfaceFactory.kt
NewLineAtEndOfFile:UsbBroadcastReceiver.kt$com.geeksville.mesh.repository.usb.UsbBroadcastReceiver.kt
NewLineAtEndOfFile:UsbRepositoryModule.kt$com.geeksville.mesh.repository.usb.UsbRepositoryModule.kt
NoBlankLineBeforeRbrace:BluetoothInterface.kt$BluetoothInterface$
NoBlankLineBeforeRbrace:CustomTileSource.kt$CustomTileSource$
NoBlankLineBeforeRbrace:DebugLogFile.kt$BinaryLogFile$
NoBlankLineBeforeRbrace:NOAAWmsTileSource.kt$NOAAWmsTileSource$
NoBlankLineBeforeRbrace:NopInterface.kt$NopInterface$
NoBlankLineBeforeRbrace:OnlineTileSourceAuth.kt$OnlineTileSourceAuth$
NoBlankLineBeforeRbrace:PositionTest.kt$PositionTest$
NoBlankLineBeforeRbrace:PreviewParameterProviders.kt$NodeInfoPreviewParameterProvider$
NoConsecutiveBlankLines:AppIntroduction.kt$AppIntroduction$
NoConsecutiveBlankLines:AppPrefs.kt$
NoConsecutiveBlankLines:BluetoothInterface.kt$
NoConsecutiveBlankLines:BluetoothInterface.kt$BluetoothInterface$
NoConsecutiveBlankLines:BootCompleteReceiver.kt$
NoConsecutiveBlankLines:Constants.kt$
NoConsecutiveBlankLines:CustomTileSource.kt$
NoConsecutiveBlankLines:CustomTileSource.kt$CustomTileSource.Companion$
NoConsecutiveBlankLines:DebugLogFile.kt$
NoConsecutiveBlankLines:DeferredExecution.kt$
NoConsecutiveBlankLines:Exceptions.kt$
NoConsecutiveBlankLines:IRadioInterface.kt$
NoConsecutiveBlankLines:NOAAWmsTileSource.kt$NOAAWmsTileSource$
NoConsecutiveBlankLines:NodeInfo.kt$
NoConsecutiveBlankLines:PreviewParameterProviders.kt$
NoConsecutiveBlankLines:SafeBluetooth.kt$
NoConsecutiveBlankLines:SafeBluetooth.kt$SafeBluetooth$
NoConsecutiveBlankLines:SqlTileWriterExt.kt$
NoEmptyClassBody:DebugLogFile.kt$BinaryLogFile${ }
NoSemicolons:DateUtils.kt$DateUtils$;
NoTrailingSpaces:ExpireChecker.kt$ExpireChecker$
NoWildcardImports:BluetoothInterface.kt$import com.geeksville.mesh.service.*
NoWildcardImports:DeviceVersionTest.kt$import org.junit.Assert.*
NoWildcardImports:ExampleUnitTest.kt$import org.junit.Assert.*
NoWildcardImports:MockInterface.kt$import com.geeksville.mesh.*
NoWildcardImports:PreferenceFooter.kt$import androidx.compose.foundation.layout.*
NoWildcardImports:PreferenceFooter.kt$import androidx.compose.material.*
NoWildcardImports:SafeBluetooth.kt$import android.bluetooth.*
NoWildcardImports:SafeBluetooth.kt$import kotlinx.coroutines.*
NoWildcardImports:SettingsFragment.kt$import com.geeksville.mesh.android.*
NoWildcardImports:UsbRepository.kt$import kotlinx.coroutines.flow.*
OptionalAbstractKeyword:SyncContinuation.kt$Continuation$abstract
ParameterListWrapping:AppPrefs.kt$FloatPref$(thisRef: AppPrefs, prop: KProperty<Float>)
ParameterListWrapping:AppPrefs.kt$StringPref$(thisRef: AppPrefs, prop: KProperty<String>)
ParameterListWrapping:SafeBluetooth.kt$SafeBluetooth$( c: BluetoothGattCharacteristic, cont: Continuation<BluetoothGattCharacteristic>, timeout: Long = 0 )
ParameterListWrapping:SafeBluetooth.kt$SafeBluetooth$( c: BluetoothGattCharacteristic, cont: Continuation<Unit>, timeout: Long = 0 )
ParameterListWrapping:SafeBluetooth.kt$SafeBluetooth$( c: BluetoothGattCharacteristic, v: ByteArray, cont: Continuation<BluetoothGattCharacteristic>, timeout: Long = 0 )
ParameterListWrapping:SafeBluetooth.kt$SafeBluetooth$( c: BluetoothGattDescriptor, cont: Continuation<BluetoothGattDescriptor>, timeout: Long = 0 )
RethrowCaughtException:SyncContinuation.kt$Continuation$throw ex
ReturnCount:ChannelOption.kt$internal fun LoRaConfig.radioFreq(channelNum: Int): Float
ReturnCount:MainActivity.kt$MainActivity$override fun onOptionsItemSelected(item: MenuItem): Boolean
ReturnCount:RadioConfigViewModel.kt$RadioConfigViewModel$private fun processPacketResponse(packet: MeshProtos.MeshPacket)
SpacingAroundColon:PreviewParameterProviders.kt$NodeInfoPreviewParameterProvider$:
SpacingAroundCurly:AppPrefs.kt$FloatPref$}
SpacingAroundKeyword:AppPrefs.kt$AppPrefs$if
SpacingAroundKeyword:Exceptions.kt$if
SpacingAroundKeyword:Exceptions.kt$when
SpacingAroundOperators:NodeInfo.kt$NodeInfo$*
SpacingAroundRangeOperator:BatteryInfo.kt$..
StringTemplate:NodeInfo.kt$Position$${time}
SwallowedException:BluetoothInterface.kt$BluetoothInterface$ex: CancellationException
SwallowedException:ChannelSet.kt$ex: Throwable
SwallowedException:DeviceVersion.kt$DeviceVersion$e: Exception
SwallowedException:Exceptions.kt$ex: Throwable
SwallowedException:MainActivity.kt$MainActivity$ex: BindFailedException
SwallowedException:MainActivity.kt$MainActivity$ex: IllegalStateException
SwallowedException:MeshLog.kt$MeshLog$e: IOException
SwallowedException:MeshService.kt$MeshService$e: Exception
SwallowedException:MeshService.kt$MeshService$e: TimeoutException
SwallowedException:MeshService.kt$MeshService$ex: BLEException
SwallowedException:MeshService.kt$MeshService$ex: CancellationException
SwallowedException:MeshService.kt$MeshService$ex: RadioNotConnectedException
SwallowedException:NsdManager.kt$ex: IllegalArgumentException
SwallowedException:SafeBluetooth.kt$SafeBluetooth$ex: DeadObjectException
SwallowedException:SafeBluetooth.kt$SafeBluetooth$ex: NullPointerException
SwallowedException:ServiceClient.kt$ServiceClient$ex: IllegalArgumentException
SwallowedException:TCPInterface.kt$TCPInterface$ex: SocketTimeoutException
TooGenericExceptionCaught:BTScanModel.kt$BTScanModel$ex: Throwable
TooGenericExceptionCaught:BluetoothInterface.kt$BluetoothInterface$ex: Exception
TooGenericExceptionCaught:ChannelFragment.kt$ex: Exception
TooGenericExceptionCaught:ChannelSet.kt$ex: Throwable
TooGenericExceptionCaught:DeviceVersion.kt$DeviceVersion$e: Exception
TooGenericExceptionCaught:Exceptions.kt$ex: Throwable
TooGenericExceptionCaught:LanguageUtils.kt$LanguageUtils$e: Exception
TooGenericExceptionCaught:LocationRepository.kt$LocationRepository$e: Exception
TooGenericExceptionCaught:MQTTRepository.kt$MQTTRepository$ex: Exception
TooGenericExceptionCaught:MainActivity.kt$MainActivity$ex: Exception
TooGenericExceptionCaught:MainActivity.kt$MainActivity$ex: Throwable
TooGenericExceptionCaught:MapFragment.kt$ex: Exception
TooGenericExceptionCaught:MeshService.kt$MeshService$e: Exception
TooGenericExceptionCaught:MeshService.kt$MeshService$ex: Exception
TooGenericExceptionCaught:MeshService.kt$MeshService.<no name provided>$ex: Exception
TooGenericExceptionCaught:MeshServiceStarter.kt$ServiceStarter$ex: Exception
TooGenericExceptionCaught:RadioConfigViewModel.kt$RadioConfigViewModel$ex: Exception
TooGenericExceptionCaught:SafeBluetooth.kt$SafeBluetooth$ex: Exception
TooGenericExceptionCaught:SafeBluetooth.kt$SafeBluetooth$ex: NullPointerException
TooGenericExceptionCaught:SqlTileWriterExt.kt$SqlTileWriterExt$e: Exception
TooGenericExceptionCaught:SyncContinuation.kt$Continuation$ex: Throwable
TooGenericExceptionCaught:TCPInterface.kt$TCPInterface$ex: Throwable
TooGenericExceptionThrown:DeviceVersion.kt$DeviceVersion$throw Exception("Can't parse version $s")
TooGenericExceptionThrown:MeshService.kt$MeshService$throw Exception("Can't set user without a NodeInfo")
TooGenericExceptionThrown:MeshService.kt$MeshService.<no name provided>$throw Exception("Port numbers must be non-zero!")
TooGenericExceptionThrown:ServiceClient.kt$ServiceClient$throw Exception("Haven't called connect")
TooGenericExceptionThrown:ServiceClient.kt$ServiceClient$throw Exception("Service not bound")
TooGenericExceptionThrown:SyncContinuation.kt$SyncContinuation$throw Exception("SyncContinuation timeout")
TooGenericExceptionThrown:SyncContinuation.kt$SyncContinuation$throw Exception("This shouldn't happen")
TooManyFunctions:AppPrefs.kt$AppPrefs
TooManyFunctions:BluetoothInterface.kt$BluetoothInterface : IRadioInterfaceLogging
TooManyFunctions:ContextServices.kt$com.geeksville.mesh.android.ContextServices.kt
TooManyFunctions:LocationUtils.kt$com.geeksville.mesh.util.LocationUtils.kt
TooManyFunctions:MainActivity.kt$MainActivity : AppCompatActivityLogging
TooManyFunctions:MeshService.kt$MeshService : ServiceLogging
TooManyFunctions:MeshService.kt$MeshService$<no name provided> : Stub
TooManyFunctions:PacketDao.kt$PacketDao
TooManyFunctions:PacketRepository.kt$PacketRepository
TooManyFunctions:RadioConfigRepository.kt$RadioConfigRepository
TooManyFunctions:RadioConfigViewModel.kt$RadioConfigViewModel : ViewModelLogging
TooManyFunctions:RadioInterfaceService.kt$RadioInterfaceService : Logging
TooManyFunctions:SafeBluetooth.kt$SafeBluetooth : LoggingCloseable
TooManyFunctions:SettingsFragment.kt$SettingsFragment : ScreenFragmentLogging
TooManyFunctions:UIState.kt$UIViewModel : ViewModelLogging
TopLevelPropertyNaming:Constants.kt$const val prefix = "com.geeksville.mesh"
UnusedPrivateMember:NOAAWmsTileSource.kt$NOAAWmsTileSource$private fun tile2lat(y: Int, z: Int): Double
UnusedPrivateMember:NOAAWmsTileSource.kt$NOAAWmsTileSource$private fun tile2lon(x: Int, z: Int): Double
UnusedPrivateMember:SafeBluetooth.kt$SafeBluetooth$private fun reconnect()
UnusedPrivateProperty:BluetoothInterface.kt$BluetoothInterface$/// For testing @Volatile private var isFirstTime = true
UnusedPrivateProperty:BluetoothInterface.kt$BluetoothInterface$/// We only force service refresh the _first_ time we connect to the device. Thereafter it is assumed the firmware didn't change private var hasForcedRefresh = false
UnusedPrivateProperty:CustomTileSource.kt$CustomTileSource.Companion$private val SEAMAP: OnlineTileSourceBase = TileSourceFactory.OPEN_SEAMAP
UnusedPrivateProperty:CustomTileSource.kt$CustomTileSource.Companion$private val USGS_HYDRO_CACHE = object : OnlineTileSourceBase( "USGS Hydro Cache", 0, 18, 256, "", arrayOf( "https://basemap.nationalmap.gov/arcgis/rest/services/USGSHydroCached/MapServer/tile/" ), "USGS", TileSourcePolicy( 2, TileSourcePolicy.FLAG_NO_PREVENTIVE or TileSourcePolicy.FLAG_USER_AGENT_MEANINGFUL or TileSourcePolicy.FLAG_USER_AGENT_NORMALIZED ) ) { override fun getTileURLString(pMapTileIndex: Long): String { return baseUrl + (MapTileIndex.getZoom(pMapTileIndex) .toString() + "/" + MapTileIndex.getY(pMapTileIndex) + "/" + MapTileIndex.getX(pMapTileIndex) + mImageFilenameEnding) } }
UnusedPrivateProperty:CustomTileSource.kt$CustomTileSource.Companion$private val USGS_SHADED_RELIEF = object : OnlineTileSourceBase( "USGS Shaded Relief Only", 0, 18, 256, "", arrayOf( "https://basemap.nationalmap.gov/arcgis/rest/services/USGSShadedReliefOnly/MapServer/tile/" ), "USGS", TileSourcePolicy( 2, TileSourcePolicy.FLAG_NO_PREVENTIVE or TileSourcePolicy.FLAG_USER_AGENT_MEANINGFUL or TileSourcePolicy.FLAG_USER_AGENT_NORMALIZED ) ) { override fun getTileURLString(pMapTileIndex: Long): String { return baseUrl + (MapTileIndex.getZoom(pMapTileIndex) .toString() + "/" + MapTileIndex.getY(pMapTileIndex) + "/" + MapTileIndex.getX(pMapTileIndex) + mImageFilenameEnding) } }
UtilityClassWithPublicConstructor:CustomTileSource.kt$CustomTileSource
UtilityClassWithPublicConstructor:NetworkRepositoryModule.kt$NetworkRepositoryModule
VariableNaming:NOAAWmsTileSource.kt$NOAAWmsTileSource$// Size of square world map in meters, using WebMerc projection. private val MAP_SIZE = 20037508.34789244 * 2
VariableNaming:NOAAWmsTileSource.kt$NOAAWmsTileSource$// Web Mercator n/w corner of the map. private val TILE_ORIGIN = doubleArrayOf(-20037508.34789244, 20037508.34789244)
VariableNaming:NOAAWmsTileSource.kt$NOAAWmsTileSource$// array indexes for array to hold bounding boxes. private val MINX = 0
VariableNaming:NOAAWmsTileSource.kt$NOAAWmsTileSource$//array indexes for that data private val ORIG_X = 0
VariableNaming:NOAAWmsTileSource.kt$NOAAWmsTileSource$private val MAXX = 1
VariableNaming:NOAAWmsTileSource.kt$NOAAWmsTileSource$private val MAXY = 3
VariableNaming:NOAAWmsTileSource.kt$NOAAWmsTileSource$private val MINY = 2
VariableNaming:NOAAWmsTileSource.kt$NOAAWmsTileSource$private val ORIG_Y = 1 // "
VariableNaming:SafeBluetooth.kt$SafeBluetooth$// Our own custom BLE status codes private val STATUS_RELIABLE_WRITE_FAILED = 4403
VariableNaming:SafeBluetooth.kt$SafeBluetooth$private val STATUS_NOSTART = 4405
VariableNaming:SafeBluetooth.kt$SafeBluetooth$private val STATUS_SIMFAILURE = 4406
VariableNaming:SafeBluetooth.kt$SafeBluetooth$private val STATUS_TIMEOUT = 4404
WildcardImport:BluetoothInterface.kt$import com.geeksville.mesh.service.*
WildcardImport:DeviceVersionTest.kt$import org.junit.Assert.*
WildcardImport:ExampleUnitTest.kt$import org.junit.Assert.*
WildcardImport:MockInterface.kt$import com.geeksville.mesh.*
WildcardImport:PreferenceFooter.kt$import androidx.compose.foundation.layout.*
WildcardImport:PreferenceFooter.kt$import androidx.compose.material.*
WildcardImport:SafeBluetooth.kt$import android.bluetooth.*
WildcardImport:SafeBluetooth.kt$import kotlinx.coroutines.*
WildcardImport:SettingsFragment.kt$import com.geeksville.mesh.android.*
WildcardImport:UsbRepository.kt$import kotlinx.coroutines.flow.*