syntax = "proto2";
|
|
package garmin_vivomovehr;
|
|
option java_package = "nodomain.freeyourgadget.gadgetbridge.proto.garmin";
|
|
message SettingsService {
|
optional ScreenDefinitionRequest definitionRequest = 1;
|
optional ScreenDefinitionResponse definitionResponse = 2;
|
|
optional ScreenStateRequest stateRequest = 3;
|
optional ScreenStateResponse stateResponse = 4;
|
|
optional ChangeRequest changeRequest = 5;
|
optional ChangeResponse changeResponse = 6;
|
|
optional InitRequest initRequest = 8;
|
optional InitResponse initResponse = 9;
|
}
|
|
message ScreenDefinitionRequest {
|
optional uint32 screenId = 1;
|
optional uint32 unk2 = 2; // 0
|
optional string language = 3; // en_US
|
}
|
|
message ScreenDefinitionResponse {
|
optional uint32 unk1 = 1; // 0, status?
|
optional ScreenDefinition definition = 2;
|
}
|
|
message ScreenDefinition {
|
optional uint32 screenId = 1;
|
optional uint32 unk2 = 2; // 0
|
optional uint32 unk3 = 3; // 928002
|
optional Label title = 4;
|
repeated ScreenEntry entry = 5;
|
}
|
|
message Label {
|
optional string id = 1;
|
optional string text = 2;
|
}
|
|
message ScreenEntry {
|
optional uint32 id = 1;
|
optional uint32 type = 2;
|
optional Label title = 3;
|
optional uint32 icon = 5;
|
optional Target target = 9;
|
optional SortOptions sortOptions = 12;
|
optional TextOption textOption = 13;
|
}
|
|
message SortOptions {
|
optional uint32 unk3 = 3; // 1
|
repeated SortEntry entries = 5;
|
}
|
|
message SortEntry {
|
optional uint32 id = 1;
|
optional Label title = 2;
|
optional uint32 unk5 = 5; // 1
|
}
|
|
message TextOption {
|
optional TextLimits limits = 1;
|
optional uint32 unk2 = 2; // 0
|
}
|
|
message TextLimits {
|
optional uint32 maxLength = 1;
|
}
|
|
message Target {
|
optional uint32 type = 1; // 0 subscreen, 1 list preference, 6 other activity, 7 hidden, 9 subscreen with options
|
optional uint32 subscreen = 2; // when 0
|
optional uint32 activity = 3; // when 6
|
optional TargetOptions options = 4; // when 1
|
optional TargetNumberPicker numberPicker = 8;
|
}
|
|
message ScreenStateRequest {
|
optional uint32 screenId = 1;
|
}
|
|
message TargetOptions {
|
repeated TargetOptionEntry option = 1;
|
}
|
|
message TargetOptionEntry {
|
optional Label title = 3;
|
}
|
|
message TargetNumberPicker {
|
optional uint32 min = 1;
|
optional uint32 max = 2;
|
optional uint32 step = 3; // maybe? 1 on weight
|
}
|
|
message ScreenStateResponse {
|
optional uint32 unk1 = 1; // 0
|
optional ScreenState state = 2;
|
}
|
|
message ScreenState {
|
optional uint32 screenId = 1;
|
optional uint32 unk2 = 2; // 0
|
optional uint32 unk3 = 3; // 928002
|
repeated EntryState state = 4;
|
}
|
|
message EntryState {
|
optional uint32 id = 1;
|
optional uint32 state = 2;
|
optional Switch switch = 3;
|
optional Summary summary = 4;
|
}
|
|
message Switch {
|
optional bool enabled = 1;
|
optional Label title = 2;
|
}
|
|
message Summary {
|
optional Label title = 1;
|
optional ValueList valueList = 2;
|
optional ValueTime valueTime = 4;
|
optional ValueNumber valueNumber = 6;
|
optional ValueDate valueDate = 8;
|
optional ValueHeight valueHeight = 10;
|
}
|
|
message ValueList {
|
optional uint32 index = 1;
|
}
|
|
message ValueTime {
|
optional uint32 seconds = 1;
|
optional uint32 timeFormat = 3; // 0 12h, 1 24h
|
}
|
|
message ValueNumber {
|
optional uint32 value = 1;
|
optional Label subtitle = 2;
|
optional Label title = 3;
|
optional Label unit = 4;
|
}
|
|
message ValueDate {
|
optional Label subtitle = 1;
|
optional Date currentDate = 2;
|
optional Date minDate = 3;
|
optional Date maxDate = 4;
|
}
|
|
message ValueHeight {
|
optional Label subtitle = 1;
|
optional uint32 value = 2;
|
optional uint32 unit = 3; // 0 cm
|
}
|
|
message Date {
|
optional uint32 month = 1;
|
optional uint32 day = 2;
|
optional uint32 year = 3;
|
}
|
|
message ChangeRequest {
|
optional uint32 screenId = 1;
|
optional uint32 entryId = 2;
|
optional Switch switch = 3;
|
optional Option option = 4;
|
optional Time time = 6;
|
optional Number number = 8;
|
optional Position position = 11;
|
optional NewDate newDate = 12;
|
optional Text text = 14;
|
optional Height height = 15;
|
|
message Switch {
|
required bool value = 1;
|
}
|
message Option {
|
optional uint32 index = 1;
|
}
|
message Time {
|
optional uint32 seconds = 1;
|
}
|
message Number {
|
optional uint32 value = 1;
|
}
|
message Position {
|
optional uint32 index = 1;
|
optional bool delete = 2;
|
}
|
message NewDate {
|
optional Date value = 1;
|
}
|
message Text {
|
optional string value = 1;
|
}
|
message Height {
|
optional uint32 value = 1;
|
optional uint32 unit = 2;
|
}
|
}
|
|
message ChangeResponse {
|
optional ResponseStatus status = 1;
|
optional ScreenState state = 3;
|
optional bool shouldReturn = 5;
|
}
|
|
message InitRequest {
|
optional string language = 1; // en_US
|
optional string region = 2; // us
|
}
|
|
message InitResponse {
|
optional string unk1 = 1;
|
optional string unk2 = 2;
|
}
|
|
enum ResponseStatus {
|
SUCCESS = 0;
|
GENERIC_ERROR = 1;
|
}
|