mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Huawei: debug. Save RAW files.
This commit is contained in:
+2
@@ -597,6 +597,8 @@ public class DeviceSettingsPreferenceConst {
|
||||
public static final String PREF_FORCE_ENABLE_SPO2_SUPPORT = "pref_force_enable_spo2_support";
|
||||
public static final String PREF_IGNORE_WAKEUP_STATUS_START = "pref_force_ignore_wakeup_status_start";
|
||||
public static final String PREF_IGNORE_WAKEUP_STATUS_END = "pref_force_ignore_wakeup_status_end";
|
||||
public static final String PREF_HUAWEI_SAVE_RAW_FILES = "pref_huawei_save_raw_files";
|
||||
|
||||
|
||||
public static final String PREF_FEMOMETER_MEASUREMENT_MODE = "femometer_measurement_mode";
|
||||
|
||||
|
||||
+40
-3
@@ -26,6 +26,8 @@ import androidx.annotation.Nullable;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.security.MessageDigest;
|
||||
@@ -33,6 +35,8 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiPacket;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.packets.FileDownloadService0A;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.packets.FileDownloadService2C;
|
||||
@@ -44,6 +48,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetF
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetFileInfoRequest;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetFileParametersRequest;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.Request;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
public class HuaweiFileDownloadManager {
|
||||
@@ -140,7 +145,7 @@ public class HuaweiFileDownloadManager {
|
||||
private final FileType fileType;
|
||||
private final boolean newSync;
|
||||
|
||||
private final FileDownloadCallback fileDownloadCallback;
|
||||
private final FileDownloadCallback fileDownloadCallback;
|
||||
|
||||
// Sleep type only - for 2C GPS they are set to zero
|
||||
private int startTime = 0;
|
||||
@@ -604,11 +609,11 @@ public class HuaweiFileDownloadManager {
|
||||
|
||||
if (currentFileRequest.fileType == HuaweiFileDownloadManager.FileType.DEBUG)
|
||||
fileType = 0x00;
|
||||
else if(currentFileRequest.fileType == FileType.SLEEP_STATE || currentFileRequest.fileType == FileType.SLEEP_DATA)
|
||||
else if (currentFileRequest.fileType == FileType.SLEEP_STATE || currentFileRequest.fileType == FileType.SLEEP_DATA)
|
||||
fileType = 0x01;
|
||||
else if (currentFileRequest.fileType == HuaweiFileDownloadManager.FileType.GPS)
|
||||
fileType = 0x02;
|
||||
else if(currentFileRequest.fileType == HuaweiFileDownloadManager.FileType.RRI)
|
||||
else if (currentFileRequest.fileType == HuaweiFileDownloadManager.FileType.RRI)
|
||||
fileType = 0x04;
|
||||
else {
|
||||
currentFileRequest.fileDownloadCallback.downloadException(new HuaweiFileDownloadException(currentFileRequest, "Unknown download type"));
|
||||
@@ -778,6 +783,37 @@ public class HuaweiFileDownloadManager {
|
||||
} // Else we're expecting more data to arrive automatically
|
||||
}
|
||||
|
||||
private void saveRawFileData(FileRequest fileRequest) {
|
||||
boolean saveRawFilesEnabled = GBApplication
|
||||
.getDeviceSpecificSharedPrefs(supportProvider.getDevice().getAddress())
|
||||
.getBoolean(DeviceSettingsPreferenceConst.PREF_HUAWEI_SAVE_RAW_FILES, false);
|
||||
if (!saveRawFilesEnabled)
|
||||
return;
|
||||
|
||||
try {
|
||||
String filename = FileUtils.makeValidFileName(System.currentTimeMillis() + "_" + fileRequest.getFileId() + "_" + fileRequest.getFilename());
|
||||
File dir = new File(supportProvider.getDevice().getDeviceCoordinator().getWritableExportDirectory(supportProvider.getDevice()) + File.separator + "raw");
|
||||
if (!dir.isDirectory()) {
|
||||
if (!dir.mkdir()) {
|
||||
LOG.error("Error save raw file");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
File targetFile = new File(
|
||||
dir,
|
||||
filename
|
||||
);
|
||||
try (FileOutputStream fos = new FileOutputStream(targetFile)) {
|
||||
fos.write(fileRequest.getData());
|
||||
}
|
||||
LOG.info("RAW file saved to: {}", targetFile.getAbsolutePath());
|
||||
} catch (IOException e) {
|
||||
LOG.error("Could save RAW file", e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void fileComplete() {
|
||||
// Stop timeout from hitting
|
||||
this.handler.removeCallbacks(this.timeout);
|
||||
@@ -827,6 +863,7 @@ public class HuaweiFileDownloadManager {
|
||||
GB.toast("Workout GPX file could not be parsed.", Toast.LENGTH_SHORT, GB.ERROR, e);
|
||||
}
|
||||
|
||||
saveRawFileData(currentFileRequest);
|
||||
|
||||
if (!this.currentFileRequest.newSync && !this.fileRequests.isEmpty() && !this.fileRequests.get(0).newSync) {
|
||||
// Old sync can potentially take a shortcut
|
||||
|
||||
@@ -15,6 +15,13 @@
|
||||
android:title="Reparse workout data"
|
||||
android:summary="This will only do something after certain updates" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="false"
|
||||
android:key="pref_huawei_save_raw_files"
|
||||
android:layout="@layout/preference_checkbox"
|
||||
android:title="Save RAW files"
|
||||
android:summary="Save RAW files." />
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="pref_force_options"
|
||||
android:title="@string/pref_force_options">
|
||||
|
||||
Reference in New Issue
Block a user