1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-07-29 18:13:56 +02:00

Zepp OS: Toggle phone silent mode from band

This commit is contained in:
José Rebelo 2023-12-11 10:50:50 +00:00
parent 4dbf9bb8ac
commit efc8752a66
2 changed files with 26 additions and 5 deletions

View File

@ -419,6 +419,7 @@ public abstract class Huami2021Coordinator extends HuamiCoordinator {
} }
settings.add(R.xml.devicesettings_offline_voice); settings.add(R.xml.devicesettings_offline_voice);
settings.add(R.xml.devicesettings_device_actions_without_not_wear); settings.add(R.xml.devicesettings_device_actions_without_not_wear);
settings.add(R.xml.devicesettings_phone_silent_mode);
settings.add(R.xml.devicesettings_buttonactions_upper_long); settings.add(R.xml.devicesettings_buttonactions_upper_long);
settings.add(R.xml.devicesettings_buttonactions_lower_short); settings.add(R.xml.devicesettings_buttonactions_lower_short);
settings.add(R.xml.devicesettings_weardirection); settings.add(R.xml.devicesettings_weardirection);

View File

@ -72,6 +72,7 @@ import nodomain.freeyourgadget.gadgetbridge.capabilities.loyaltycards.LoyaltyCar
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventDisplayMessage; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventDisplayMessage;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventFindPhone; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventFindPhone;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventScreenshot; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventScreenshot;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSilentMode;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventUpdatePreferences; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventUpdatePreferences;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Service; import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Service;
@ -128,11 +129,11 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.service
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.services.ZeppOsPhoneService; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.services.ZeppOsPhoneService;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.services.ZeppOsWatchfaceService; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.services.ZeppOsWatchfaceService;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.services.ZeppOsWifiService; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.services.ZeppOsWifiService;
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
import nodomain.freeyourgadget.gadgetbridge.util.SilentMode;
public abstract class Huami2021Support extends HuamiSupport implements ZeppOsFileTransferService.Callback { public abstract class Huami2021Support extends HuamiSupport implements ZeppOsFileTransferService.Callback {
private static final Logger LOG = LoggerFactory.getLogger(Huami2021Support.class); private static final Logger LOG = LoggerFactory.getLogger(Huami2021Support.class);
@ -1348,19 +1349,38 @@ public abstract class Huami2021Support extends HuamiSupport implements ZeppOsFil
return; return;
case SILENT_MODE_CMD_QUERY: case SILENT_MODE_CMD_QUERY:
LOG.info("Got silent mode query from band"); LOG.info("Got silent mode query from band");
// TODO sendCurrentSilentMode(); sendPhoneSilentMode(SilentMode.isPhoneInSilenceMode(getDevice().getAddress()));
return; return;
case SILENT_MODE_CMD_SET: case SILENT_MODE_CMD_SET:
LOG.info("Band setting silent mode = {}", payload[1]); LOG.info("Band setting silent mode = {}", payload[1]);
// TODO ackSilentModeSet(); final boolean silentModeEnabled = (payload[1] == 1);
// TODO setSilentMode(payload[1] == 0x01); ackSilentModeSet();
// TODO sendCurrentSilentMode(); sendPhoneSilentMode(silentModeEnabled);
evaluateGBDeviceEvent(new GBDeviceEventSilentMode(silentModeEnabled));
return; return;
default: default:
LOG.warn("Unexpected silent mode payload byte {}", String.format("0x%02x", payload[0])); LOG.warn("Unexpected silent mode payload byte {}", String.format("0x%02x", payload[0]));
} }
} }
private void ackSilentModeSet() {
writeToChunked2021(
"ack silent mode set",
CHUNKED2021_ENDPOINT_SILENT_MODE,
new byte[]{SILENT_MODE_CMD_ACK, 0x01},
false
);
}
private void sendPhoneSilentMode(final boolean enabled) {
writeToChunked2021(
"send phone silent mode to band",
CHUNKED2021_ENDPOINT_SILENT_MODE,
new byte[]{SILENT_MODE_CMD_NOTIFY_BAND, bool(enabled)},
false
);
}
@Override @Override
public void onFileUploadFinish(final boolean success) { public void onFileUploadFinish(final boolean success) {
LOG.warn("Unexpected file upload finish: {}", success); LOG.warn("Unexpected file upload finish: {}", success);