ble api update

This commit is contained in:
Vineyro 2024-11-15 17:01:42 +07:00
parent a2cc797320
commit 2d8ec33c6c
9 changed files with 97 additions and 18 deletions

View File

@ -4,6 +4,14 @@
<selectionStates> <selectionStates>
<SelectionState runConfigName="app"> <SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" /> <option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2024-11-15T06:34:28.043049200Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=55381e0a" />
</handle>
</Target>
</DropdownSelection>
<DialogSelection />
</SelectionState> </SelectionState>
</selectionStates> </selectionStates>
</component> </component>

View File

@ -4,6 +4,7 @@
<component name="GradleSettings"> <component name="GradleSettings">
<option name="linkedExternalProjectsSettings"> <option name="linkedExternalProjectsSettings">
<GradleProjectSettings> <GradleProjectSettings>
<option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" /> <option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules"> <option name="modules">

View File

@ -1,12 +1,39 @@
<component name="InspectionProjectProfileManager"> <component name="InspectionProjectProfileManager">
<profile version="1.0"> <profile version="1.0">
<option name="myName" value="Project Default" /> <option name="myName" value="Project Default" />
<inspection_tool class="ComposePreviewDimensionRespectsLimit" enabled="true" level="WARNING" enabled_by_default="true">
<option name="composableFile" value="true" />
</inspection_tool>
<inspection_tool class="ComposePreviewMustBeTopLevelFunction" enabled="true" level="ERROR" enabled_by_default="true">
<option name="composableFile" value="true" />
</inspection_tool>
<inspection_tool class="ComposePreviewNeedsComposableAnnotation" enabled="true" level="ERROR" enabled_by_default="true">
<option name="composableFile" value="true" />
</inspection_tool>
<inspection_tool class="ComposePreviewNotSupportedInUnitTestFiles" enabled="true" level="ERROR" enabled_by_default="true">
<option name="composableFile" value="true" />
</inspection_tool>
<inspection_tool class="GlancePreviewDimensionRespectsLimit" enabled="true" level="WARNING" enabled_by_default="true">
<option name="composableFile" value="true" />
</inspection_tool>
<inspection_tool class="GlancePreviewMustBeTopLevelFunction" enabled="true" level="ERROR" enabled_by_default="true">
<option name="composableFile" value="true" />
</inspection_tool>
<inspection_tool class="GlancePreviewNeedsComposableAnnotation" enabled="true" level="ERROR" enabled_by_default="true">
<option name="composableFile" value="true" />
</inspection_tool>
<inspection_tool class="GlancePreviewNotSupportedInUnitTestFiles" enabled="true" level="ERROR" enabled_by_default="true">
<option name="composableFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewAnnotationInFunctionWithParameters" enabled="true" level="ERROR" enabled_by_default="true"> <inspection_tool class="PreviewAnnotationInFunctionWithParameters" enabled="true" level="ERROR" enabled_by_default="true">
<option name="composableFile" value="true" /> <option name="composableFile" value="true" />
</inspection_tool> </inspection_tool>
<inspection_tool class="PreviewApiLevelMustBeValid" enabled="true" level="ERROR" enabled_by_default="true"> <inspection_tool class="PreviewApiLevelMustBeValid" enabled="true" level="ERROR" enabled_by_default="true">
<option name="composableFile" value="true" /> <option name="composableFile" value="true" />
</inspection_tool> </inspection_tool>
<inspection_tool class="PreviewDeviceShouldUseNewSpec" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="composableFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewDimensionRespectsLimit" enabled="true" level="WARNING" enabled_by_default="true"> <inspection_tool class="PreviewDimensionRespectsLimit" enabled="true" level="WARNING" enabled_by_default="true">
<option name="composableFile" value="true" /> <option name="composableFile" value="true" />
</inspection_tool> </inspection_tool>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -19,8 +19,8 @@ android {
applicationId "llc.arma.ble" applicationId "llc.arma.ble"
minSdk 26 minSdk 26
targetSdk 34 targetSdk 34
versionCode 44 versionCode 46
versionName "1.4.16" versionName "1.4.18"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables { vectorDrawables {

View File

@ -119,7 +119,13 @@ class BleListViewModel @Inject constructor(
state: BleListContract.State, state: BleListContract.State,
event: BleListContract.Event.OnMacFilterChanged event: BleListContract.Event.OnMacFilterChanged
) { ) {
setState {
copy(bleFilter = state.bleFilter.copy(mac = event.mac))
}
viewModelScope.launch { viewModelScope.launch {
saveFilter( saveFilter(
bleFilter = state.bleFilter.copy(mac = event.mac) bleFilter = state.bleFilter.copy(mac = event.mac)
) )
@ -130,33 +136,51 @@ class BleListViewModel @Inject constructor(
state: BleListContract.State, state: BleListContract.State,
event: BleListContract.Event.OnSortOrderChanged event: BleListContract.Event.OnSortOrderChanged
) { ) {
setState {
copy(bleFilter = state.bleFilter.copy(sortOrder = event.order))
}
viewModelScope.launch { viewModelScope.launch {
saveFilter( saveFilter(
bleFilter = state.bleFilter.copy(sortOrder = event.order) bleFilter = state.bleFilter.copy(sortOrder = event.order)
) )
} }
} }
private fun reduce( private fun reduce(
state: BleListContract.State, state: BleListContract.State,
event: BleListContract.Event.OnSortFieldChanged event: BleListContract.Event.OnSortFieldChanged
) { ) {
setState {
copy(bleFilter = state.bleFilter.copy(sortField = event.field))
}
viewModelScope.launch { viewModelScope.launch {
saveFilter( saveFilter(
bleFilter = state.bleFilter.copy(sortField = event.field) bleFilter = state.bleFilter.copy(sortField = event.field)
) )
} }
} }
private fun reduce( private fun reduce(
state: BleListContract.State, state: BleListContract.State,
event: BleListContract.Event.OnNameFilterChanged event: BleListContract.Event.OnNameFilterChanged
) { ) {
setState {
copy(bleFilter = state.bleFilter.copy(name = event.name))
}
viewModelScope.launch { viewModelScope.launch {
saveFilter( saveFilter(
bleFilter = state.bleFilter.copy(name = event.name) bleFilter = state.bleFilter.copy(name = event.name)
) )
} }
} }
private fun reduce( private fun reduce(
@ -164,6 +188,10 @@ class BleListViewModel @Inject constructor(
event: BleListContract.Event.OnResetFilter event: BleListContract.Event.OnResetFilter
) { ) {
setState {
copy(bleFilter = BleFilter())
}
viewModelScope.launch { viewModelScope.launch {
saveFilter(BleFilter()) saveFilter(BleFilter())
@ -180,33 +208,43 @@ class BleListViewModel @Inject constructor(
state: BleListContract.State, state: BleListContract.State,
event: BleListContract.Event.OnRssiRangeChanged event: BleListContract.Event.OnRssiRangeChanged
) { ) {
viewModelScope.launch { viewModelScope.launch {
saveFilter( saveFilter(
bleFilter = state.bleFilter.copy(rssi = event.rssi) bleFilter = state.bleFilter.copy(rssi = event.rssi)
) )
} }
} }
private fun reduce( private fun reduce(
state: BleListContract.State, state: BleListContract.State,
event: BleListContract.Event.OnBatteryRangeChanged event: BleListContract.Event.OnBatteryRangeChanged
) { ) {
viewModelScope.launch { viewModelScope.launch {
saveFilter( saveFilter(
bleFilter = state.bleFilter.copy(battery = event.battery) bleFilter = state.bleFilter.copy(battery = event.battery)
) )
} }
} }
private fun reduce( private fun reduce(
state: BleListContract.State, state: BleListContract.State,
event: BleListContract.Event.OnTypeChanged event: BleListContract.Event.OnTypeChanged
) { ) {
setState {
copy(bleFilter = state.bleFilter.copy(bleType = event.type))
}
viewModelScope.launch { viewModelScope.launch {
saveFilter( saveFilter(
bleFilter = state.bleFilter.copy(bleType = event.type) bleFilter = state.bleFilter.copy(bleType = event.type)
) )
} }
} }
private fun reduce( private fun reduce(

View File

@ -48,7 +48,7 @@ fun IntervalEdit(
} }
val maxInterval = 10 * 24 * 60 * 60 * 1000 val maxInterval = 10 * 24 * 60 * 60 * 1000
val minInterval = 10_000 val minInterval = 1_000
if(value > maxInterval){ if(value > maxInterval){
value = maxInterval value = maxInterval

View File

@ -348,15 +348,15 @@ class BleRepositoryImpl @Inject constructor(
onSuccess = { it } onSuccess = { it }
) )
/*characteristic.write(DataByteArray.from(2, 0, 0, 0)) //characteristic.write(DataByteArray.from(2, 0, 0, 0, 0))
val readTimeout = characteristic.read().value.let { //val readTimeout = characteristic.read().value.let {
if(it.size == 4){ // if(it.size == 4){
it.get4byteUIntAt(0).toLong() // it.get4byteUIntAt(0).toLong()
} else { // } else {
0 // 0
} // }
}*/ //}
return Result.success( return Result.success(
Ble.Host.HostState( Ble.Host.HostState(

View File

@ -94,11 +94,19 @@ fun readHostHistory(
var tableSize = value.get2byteUIntAt(0) var tableSize = value.get2byteUIntAt(0)
//Чтение без удаления
characteristic.write(DataByteArray.from(1, 0, 0, -2, -1))
val firstTableHeader = characteristic.read().value.asList()
firstTablePackage.addAll(firstTableHeader.subList(4, firstTableHeader.size))
secondTablePackage.addAll(
readTable(characteristic, byteArrayOf(6), byteArrayOf(6))
)
firstTablePackage.addAll( firstTablePackage.addAll(
readTable( readTable(
characteristic, characteristic,
//Чтение без удаления byteArrayOf(5),
byteArrayOf(1, 0, 0, -1, -1),
byteArrayOf(5) byteArrayOf(5)
) )
) )
@ -110,9 +118,7 @@ fun readHostHistory(
val bleRealTime = firstTablePackage.toByteArray().get4byteUIntAt(8).toLong() val bleRealTime = firstTablePackage.toByteArray().get4byteUIntAt(8).toLong()
val lastMeasureSystemTime = System.currentTimeMillis() - ((bleRealTime - bleLastMeasureTime) * 1_000) val lastMeasureSystemTime = System.currentTimeMillis() - ((bleRealTime - bleLastMeasureTime) * 1_000)
secondTablePackage.addAll( Log.i("BLEK-LOG", "Вермя последнего: ${bleLastMeasureTime} Реальное время: ${bleRealTime}")
readTable(characteristic, byteArrayOf(6), byteArrayOf(6))
)
fun getBleIdIndex(bytes: ByteArray): UInt{ fun getBleIdIndex(bytes: ByteArray): UInt{