Add accelerometer descriptor
This commit is contained in:
parent
cccc65153d
commit
c1b76b9ab3
|
|
@ -13,8 +13,8 @@ android {
|
||||||
applicationId "llc.arma.ble"
|
applicationId "llc.arma.ble"
|
||||||
minSdk 26
|
minSdk 26
|
||||||
targetSdk 33
|
targetSdk 33
|
||||||
versionCode 12
|
versionCode 13
|
||||||
versionName "1.2.12"
|
versionName "1.2.13"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables {
|
vectorDrawables {
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ import llc.arma.ble.domain.usecase.FftAxis
|
||||||
import llc.arma.ble.domain.usecase.FftFrequency
|
import llc.arma.ble.domain.usecase.FftFrequency
|
||||||
import llc.arma.ble.domain.usecase.FftViewMode
|
import llc.arma.ble.domain.usecase.FftViewMode
|
||||||
import llc.arma.ble.domain.usecase.GetAccelerometerHistoryBySerial
|
import llc.arma.ble.domain.usecase.GetAccelerometerHistoryBySerial
|
||||||
|
import llc.arma.ble.domain.usecase.GetBleBySerial
|
||||||
import llc.arma.ble.domain.usecase.MeasureData
|
import llc.arma.ble.domain.usecase.MeasureData
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
|
|
@ -78,7 +79,7 @@ fun AccelerometerHistory(
|
||||||
val state = viewModel.viewState.value
|
val state = viewModel.viewState.value
|
||||||
|
|
||||||
LaunchedEffect(ble.serial) {
|
LaunchedEffect(ble.serial) {
|
||||||
viewModel.setEvent(AccelerometerHistoryContract.Event.OnStart(ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
|
viewModel.setEvent(AccelerometerHistoryContract.Event.OnStart(ble.name, ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
|
||||||
}
|
}
|
||||||
|
|
||||||
/*DisposableEffect("ble") {
|
/*DisposableEffect("ble") {
|
||||||
|
|
@ -130,7 +131,7 @@ fun AccelerometerHistory(
|
||||||
|
|
||||||
IconButton(
|
IconButton(
|
||||||
onClick = {
|
onClick = {
|
||||||
viewModel.setEvent(AccelerometerHistoryContract.Event.OnRefreshHistory(ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
|
viewModel.setEvent(AccelerometerHistoryContract.Event.OnRefreshHistory(ble.name, ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
|
||||||
},
|
},
|
||||||
enabled = when(state){
|
enabled = when(state){
|
||||||
is AccelerometerHistoryContract.State.Display -> state.loadingHistoryState is ProgressState.Finished
|
is AccelerometerHistoryContract.State.Display -> state.loadingHistoryState is ProgressState.Finished
|
||||||
|
|
@ -425,6 +426,7 @@ class AccelerometerHistoryContract {
|
||||||
object OnExport : Event()
|
object OnExport : Event()
|
||||||
|
|
||||||
data class OnStart(
|
data class OnStart(
|
||||||
|
val bleName: String,
|
||||||
val serial: String,
|
val serial: String,
|
||||||
val accelScale: AccelScale,
|
val accelScale: AccelScale,
|
||||||
val accelMode: AccelViewMode,
|
val accelMode: AccelViewMode,
|
||||||
|
|
@ -434,6 +436,7 @@ class AccelerometerHistoryContract {
|
||||||
) : Event()
|
) : Event()
|
||||||
|
|
||||||
data class OnRefreshHistory(
|
data class OnRefreshHistory(
|
||||||
|
val bleName: String,
|
||||||
val serial: String,
|
val serial: String,
|
||||||
val accelScale: AccelScale,
|
val accelScale: AccelScale,
|
||||||
val accelMode: AccelViewMode,
|
val accelMode: AccelViewMode,
|
||||||
|
|
@ -447,6 +450,7 @@ class AccelerometerHistoryContract {
|
||||||
sealed class State : ViewState {
|
sealed class State : ViewState {
|
||||||
|
|
||||||
data class Display(
|
data class Display(
|
||||||
|
val bleName: String,
|
||||||
val loadingHistoryState : ProgressState<List<Ble.Accelerometer.HistoryPoint>>
|
val loadingHistoryState : ProgressState<List<Ble.Accelerometer.HistoryPoint>>
|
||||||
) : State()
|
) : State()
|
||||||
|
|
||||||
|
|
@ -465,7 +469,8 @@ class AccelerometerHistoryContract {
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class AccelerometerHistoryViewModel @Inject constructor(
|
class AccelerometerHistoryViewModel @Inject constructor(
|
||||||
private val getAccelerometerHistoryBySerial: GetAccelerometerHistoryBySerial,
|
private val getAccelerometerHistoryBySerial: GetAccelerometerHistoryBySerial,
|
||||||
private val exportToXlsx: ExportToXlsx
|
private val exportToXlsx: ExportToXlsx,
|
||||||
|
private val getBleBySerial: GetBleBySerial
|
||||||
) : BaseViewModel<AccelerometerHistoryContract.State, AccelerometerHistoryContract.Event, AccelerometerHistoryContract.Effect>() {
|
) : BaseViewModel<AccelerometerHistoryContract.State, AccelerometerHistoryContract.Event, AccelerometerHistoryContract.Effect>() {
|
||||||
|
|
||||||
var measureJob: Job? = null
|
var measureJob: Job? = null
|
||||||
|
|
@ -473,6 +478,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
||||||
private var lastSerial: String? = null
|
private var lastSerial: String? = null
|
||||||
|
|
||||||
override fun setInitialState() = AccelerometerHistoryContract.State.Display(
|
override fun setInitialState() = AccelerometerHistoryContract.State.Display(
|
||||||
|
"",
|
||||||
ProgressState.Indeterminate
|
ProgressState.Indeterminate
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -492,7 +498,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
||||||
|
|
||||||
if(state is AccelerometerHistoryContract.State.Display){
|
if(state is AccelerometerHistoryContract.State.Display){
|
||||||
if(state.loadingHistoryState is ProgressState.Finished){
|
if(state.loadingHistoryState is ProgressState.Finished){
|
||||||
exportToXlsx.invoke(state.loadingHistoryState.data)
|
exportToXlsx.invoke(state.bleName, state.loadingHistoryState.data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -526,7 +532,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
||||||
lastSerial = event.serial
|
lastSerial = event.serial
|
||||||
|
|
||||||
setState {
|
setState {
|
||||||
AccelerometerHistoryContract.State.Display(ProgressState.Indeterminate)
|
AccelerometerHistoryContract.State.Display(event.bleName, ProgressState.Indeterminate)
|
||||||
}
|
}
|
||||||
|
|
||||||
measureJob?.cancel()
|
measureJob?.cancel()
|
||||||
|
|
@ -536,7 +542,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
||||||
it.fold(
|
it.fold(
|
||||||
onSuccess = {
|
onSuccess = {
|
||||||
setState {
|
setState {
|
||||||
AccelerometerHistoryContract.State.Display(it)
|
AccelerometerHistoryContract.State.Display(event.bleName, it)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onFailure = {
|
onFailure = {
|
||||||
|
|
@ -562,7 +568,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
|
|
||||||
setState {
|
setState {
|
||||||
AccelerometerHistoryContract.State.Display(ProgressState.Indeterminate)
|
AccelerometerHistoryContract.State.Display("", ProgressState.Indeterminate)
|
||||||
}
|
}
|
||||||
|
|
||||||
measureJob?.cancel()
|
measureJob?.cancel()
|
||||||
|
|
@ -572,7 +578,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
|
||||||
it.fold(
|
it.fold(
|
||||||
onSuccess = {
|
onSuccess = {
|
||||||
setState {
|
setState {
|
||||||
AccelerometerHistoryContract.State.Display(it)
|
AccelerometerHistoryContract.State.Display(event.bleName, it)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onFailure = {
|
onFailure = {
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,17 @@ class XlsxRepositoryImpl @Inject constructor(
|
||||||
private val application: Application
|
private val application: Application
|
||||||
) : XlsxRepository {
|
) : XlsxRepository {
|
||||||
|
|
||||||
override fun exportToXls(data: List<Ble.Accelerometer.HistoryPoint>): File {
|
override fun exportToXls(
|
||||||
|
bleName: String,
|
||||||
|
data: List<Ble.Accelerometer.HistoryPoint>
|
||||||
|
): File {
|
||||||
|
|
||||||
|
val fileNameDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
|
||||||
|
val fileName = "$bleName ${fileNameDateFormat.format(Date(System.currentTimeMillis()))}.xlsx"
|
||||||
|
|
||||||
val formatter = SimpleDateFormat("dd.MM.yyyy HH:mm")
|
val formatter = SimpleDateFormat("dd.MM.yyyy HH:mm")
|
||||||
|
|
||||||
val mailFile = File(application.filesDir, "${UUID.randomUUID()}.xlsx")
|
val mailFile = File(application.filesDir, fileName)
|
||||||
mailFile.createNewFile()
|
mailFile.createNewFile()
|
||||||
|
|
||||||
when(data.firstOrNull()){
|
when(data.firstOrNull()){
|
||||||
|
|
@ -84,7 +90,7 @@ class XlsxRepositoryImpl @Inject constructor(
|
||||||
workbook.write(saveFos)
|
workbook.write(saveFos)
|
||||||
saveFos.close()
|
saveFos.close()
|
||||||
|
|
||||||
val sharedFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "${UUID.randomUUID()}.xlsx")
|
val sharedFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName)
|
||||||
sharedFile.createNewFile()
|
sharedFile.createNewFile()
|
||||||
|
|
||||||
val sharedSaveFos = FileOutputStream(sharedFile)
|
val sharedSaveFos = FileOutputStream(sharedFile)
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,9 @@ import java.io.File
|
||||||
|
|
||||||
interface XlsxRepository {
|
interface XlsxRepository {
|
||||||
|
|
||||||
fun exportToXls(data: List<Ble.Accelerometer.HistoryPoint>): File
|
fun exportToXls(
|
||||||
|
bleName: String,
|
||||||
|
data: List<Ble.Accelerometer.HistoryPoint>
|
||||||
|
): File
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -24,9 +24,12 @@ class ExportToXlsx @Inject constructor(
|
||||||
private val emailRepository: EmailRepository
|
private val emailRepository: EmailRepository
|
||||||
) {
|
) {
|
||||||
|
|
||||||
operator fun invoke(data: List<Ble.Accelerometer.HistoryPoint>){
|
operator fun invoke(
|
||||||
|
bleName: String,
|
||||||
|
data: List<Ble.Accelerometer.HistoryPoint>
|
||||||
|
){
|
||||||
|
|
||||||
val file = xlsxRepository.exportToXls(data)
|
val file = xlsxRepository.exportToXls(bleName, data)
|
||||||
emailRepository.sendFile(file)
|
emailRepository.sendFile(file)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue