igpsport: Get SN from device

* need to find way to use it as idintifier in DB since it is constant for each device,
but MAC changes on unpair
This commit is contained in:
Vitaliy Tomin
2026-05-13 23:33:24 +02:00
committed by José Rebelo
parent b0308d01b7
commit f6aa398316
@@ -180,6 +180,12 @@ public class IGPSportDeviceSupport extends AbstractBTLEDeviceSupport {
builder.write(writeCharacteristic, factoryGetBatterydata);
Factory.factory_msg.Builder snFfactoryBuilder = Factory.factory_msg.newBuilder();
snFfactoryBuilder.setServiceType(Common.service_type_index.enum_SERVICE_TYPE_INDEX_FACTORY);
snFfactoryBuilder.setFactoryOperateType(Factory.FACTORY_OPERATE_TYPE.enum_FACTORY_OPERATE_TYPE_SN_GET);
byte[] factoryGetSNdata = craftData(snFfactoryBuilder.getServiceType().getNumber(), 0xff, snFfactoryBuilder.getFactoryOperateType().getNumber(), snFfactoryBuilder.build().toByteArray());
builder.write(writeCharacteristic, factoryGetSNdata);
// set device firmware to prevent the following error when you (later) try to save data to database and
// device firmware has not been set yet
// Error executing 'the bind value at index 2 is null'java.lang.IllegalArgumentException: the bind value at index 2 is null
@@ -281,6 +287,11 @@ public class IGPSportDeviceSupport extends AbstractBTLEDeviceSupport {
if (factoryMsg.hasBattaryMsg()) {
gbDevice.setBatteryLevel(factoryMsg.getBattaryMsg().getPowerPercent());
}
if (factoryMsg.getFactorySnMsgList().size() > 0) {
// save serial to volatile address now, need to find way to use it as identifier in database
// instead of MAc, because MAC changes on rebind for this devices
gbDevice.setVolatileAddress(factoryMsg.getFactorySnMsg(0).getSn());
}
}
public void handleFirmwareData(byte[] data) throws InvalidProtocolBufferException {