ATC_TLSR_Paper: support getting/setting the ble advertising interval

This commit is contained in:
Andreas Shimokawa
2025-07-03 15:36:17 +02:00
parent d2981a7ec8
commit c34885974a
6 changed files with 64 additions and 19 deletions
@@ -650,5 +650,6 @@ public class DeviceSettingsPreferenceConst {
public static final String PREF_DEVICE_STRESS_TEST_CONNECT_PARALLEL = "pref_device_stress_test_connect_parallel";
public static final String PREF_DEVICE_STRESS_TEST_DISPOSE = "pref_device_stress_test_dispose";
public static final String PREF_ATC_TSLR_PAPER_MODEL = "pref_atc_tslr_paper_model";
public static final String PREF_ATC_TLSR_PAPER_MODEL = "pref_atc_tlsr_paper_model";
public static final String PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL = "pref_atc_tlsr_ble_adv_interval";
}
@@ -967,7 +967,8 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
addPreferenceHandlerFor(PREF_CALENDAR_MAX_DESC_LENGTH);
addPreferenceHandlerFor(PREF_CALENDAR_TARGET_APP);
addPreferenceHandlerFor(PREF_ATC_TSLR_PAPER_MODEL);
addPreferenceHandlerFor(PREF_ATC_TLSR_PAPER_MODEL);
addPreferenceHandlerFor(PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL);
final Preference dischargeIntervalsSet = findPreference(PREF_BATTERY_DISCHARGE_INTERVALS_SET);
if (dischargeIntervalsSet != null) {
@@ -240,14 +240,18 @@ public class ATCTLSRPaperDeviceSupport extends AbstractBTLESingleDeviceSupport {
buf.position(32);
epaper_colors = buf.get();
buf.position(41);
int ble_adv_interval = buf.getShort() & 0xffff;
if (epaper_width == 200 && epaper_height == 200 && model == 0x26) {
model = 10000; //HACK for unsupported HS 154 BWRY JD
}
LOG.info("decoded data: version={}, width={}, height={}, nr_colors={}, w/h swapped={}, model={}", version, epaper_width, epaper_height, epaper_colors, is_wh_swapped, model);
LOG.info("decoded data: version={}, width={}, height={}, nr_colors={}, w/h swapped={}, model={} ble_adv_interval={}", version, epaper_width, epaper_height, epaper_colors, is_wh_swapped, model, ble_adv_interval);
SharedPreferences.Editor editor = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).edit();
editor.putString(DeviceSettingsPreferenceConst.PREF_ATC_TSLR_PAPER_MODEL, String.valueOf(model));
editor.putString(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_MODEL, String.valueOf(model));
editor.putString(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL, String.valueOf(ble_adv_interval));
editor.apply();
final TransactionBuilder builder = new TransactionBuilder("set initialized");
@@ -257,12 +261,15 @@ public class ATCTLSRPaperDeviceSupport extends AbstractBTLESingleDeviceSupport {
@Override
public void onSendConfiguration(String config) {
if (DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_MODEL.equals(config)
|| DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL.equals(config)
) {
TransactionBuilder builder;
SharedPreferences sharedPrefs = GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress());
try {
builder = performInitialized("Sending configuration for option: " + config);
if (DeviceSettingsPreferenceConst.PREF_ATC_TSLR_PAPER_MODEL.equals(config)) {
SharedPreferences sharedPrefs = GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress());
String display_model = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_ATC_TSLR_PAPER_MODEL, "1");
if (DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_MODEL.equals(config)) {
String display_model = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_MODEL, "1");
int model = Integer.parseInt(display_model);
if (model == 10000) {// HACK: this is for the HS 213 BWRY JD type
builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), COMMAND_CONFIGURE_HS_154_BWRY_JD);
@@ -270,11 +277,17 @@ public class ATCTLSRPaperDeviceSupport extends AbstractBTLESingleDeviceSupport {
builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), new byte[]{0x00, 0x04, 0x00, (byte) model});
}
}
if (DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL.equals(config)) {
String bt_adv_interval = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL, "1000");
int interval = Integer.parseInt(bt_adv_interval);
builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), new byte[]{0x00, 0x08, (byte) (interval & 0xff), (byte) ((interval >> 8) & 0xff)});
}
builder.queue(getQueue());
} catch (IOException e) {
GB.toast("Error setting configuration", Toast.LENGTH_LONG, GB.ERROR, e);
}
}
}
@Override
public void onInstallApp(Uri uri) {
+22
View File
@@ -5090,4 +5090,26 @@
<item>36</item>
<item>39</item>
</string-array>
<string-array name="atc_tlsr_paper_ble_adv_interval">
<item name="1000">625ms</item>
<item name="3200">2000ms</item>
<item name="4000">2500ms</item>
<item name="5000">3125ms</item>
<item name="6000">3750ms</item>
<item name="7000">4375ms</item>
<item name="8000">5000ms</item>
<item name="10000">6250ms</item>
</string-array>
<string-array name="atc_tlsr_paper_ble_adv_interval_values">
<item>1000</item>
<item>3200</item>
<item>4000</item>
<item>5000</item>
<item>6000</item>
<item>7000</item>
<item>8000</item>
<item>10000</item>
</string-array>
</resources>
+1
View File
@@ -4086,4 +4086,5 @@
<string name="same_image_already_on_device">same image already on device</string>
<string name="sending_image">sending image</string>
<string name="pref_atc_tlsr_model_title">Display Model</string>
<string name="pref_atc_tlsr_ble_adv_interval_title">BLE Advertising Interval</string>
</resources>
@@ -4,7 +4,14 @@
android:defaultValue="1"
android:entries="@array/atc_tlsr_paper_models"
android:entryValues="@array/atc_tlsr_paper_models_values"
android:key="pref_atc_tslr_paper_model"
android:key="pref_atc_tlsr_paper_model"
android:summary="%s"
android:title="@string/pref_atc_tlsr_model_title" />
<ListPreference
android:defaultValue="1"
android:entries="@array/atc_tlsr_paper_ble_adv_interval"
android:entryValues="@array/atc_tlsr_paper_ble_adv_interval_values"
android:key="pref_atc_tlsr_ble_adv_interval"
android:summary="%s"
android:title="@string/pref_atc_tlsr_ble_adv_interval_title" />
</androidx.preference.PreferenceScreen>