mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-06-10 23:28:22 +02:00
7ee82e6afa
note: only weather message definition and data tested so far also enable weather support for Instinct 2S and vivomove style also cleanup some unused constants that have been migrated to new enums in GFDIMessage additionally switch to new local implementation of GarminTimeUtils with needed methods
56 lines
2.0 KiB
Java
56 lines
2.0 KiB
Java
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.GlobalDefinitionsEnum;
|
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.RecordData;
|
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.RecordHeader;
|
|
|
|
public class FitDataMessage extends GFDIMessage {
|
|
private final List<RecordData> recordDataList;
|
|
private final int messageType;
|
|
|
|
public FitDataMessage(List<RecordData> recordDataList, int messageType) {
|
|
this.recordDataList = recordDataList;
|
|
this.messageType = messageType;
|
|
}
|
|
|
|
public FitDataMessage(List<RecordData> recordDataList) {
|
|
this.recordDataList = recordDataList;
|
|
this.messageType = GarminMessage.FIT_DATA.getId();
|
|
}
|
|
|
|
public static FitDataMessage parseIncoming(MessageReader reader, int messageType) {
|
|
List<RecordData> recordDataList = new ArrayList<>();
|
|
|
|
|
|
while (!reader.isEndOfPayload()) {
|
|
RecordHeader recordHeader = new RecordHeader((byte) reader.readByte());
|
|
if (recordHeader.isDefinition())
|
|
return null;
|
|
RecordData recordData = new RecordData(GlobalDefinitionsEnum.getRecordDefinitionfromMesgType(recordHeader.getMesgType()));
|
|
recordData.parseDataMessage(reader);
|
|
recordDataList.add(recordData);
|
|
}
|
|
|
|
return new FitDataMessage(recordDataList, messageType);
|
|
}
|
|
|
|
public List<RecordData> getRecordDataList() {
|
|
return recordDataList;
|
|
}
|
|
|
|
@Override
|
|
protected boolean generateOutgoing() {
|
|
final MessageWriter writer = new MessageWriter(response);
|
|
writer.writeShort(0); // packet size will be filled below
|
|
writer.writeShort(messageType);
|
|
for (RecordData recordData : recordDataList) {
|
|
recordData.generateOutgoingDataPayload(writer);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
}
|