diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraNexSGC.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraNexSGC.java index 875f569bd9..8183e077b6 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraNexSGC.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraNexSGC.java @@ -96,6 +96,7 @@ import com.augmentos.augmentos_core.audio.Lc3Player; import com.google.gson.Gson; import com.augmentos.smartglassesmanager.cpp.L3cCpp; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.ButtonPressEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BatteryLevelEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.CaseEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BrightnessLevelEvent; @@ -3281,13 +3282,10 @@ private void decodeProtobufs(byte[] protobufBytes, String packetHex) { break; case BUTTON_EVENT: { final ButtonEvent buttonEvent = glassesToPhone.getButtonEvent(); - Log.d(TAG, "buttonEvent: " + buttonEvent.toString()); - // buttonEvent.getButton().getNumber() - // EventBus.getDefault().post(new ButtonPressEvent( - // smartGlassesDevice.deviceModelName, - // buttonId, - // pressType, - // timestamp)); + Log.d(TAG, "Received Button Event: " + buttonEvent.toString()); + final ButtonEvent.Button button = buttonEvent.getButton(); + final ButtonEvent.Event event = buttonEvent.getEvent(); + EventBus.getDefault().post(new ButtonPressEvent(smartGlassesDevice.deviceModelName, button.name(), event.name())); } break; case HEAD_GESTURE: { diff --git a/android_core/app/src/main/java/mentraos/ble/MentraosBle.java b/android_core/app/src/main/java/mentraos/ble/MentraosBle.java index 10eb7da800..cd50f6ddeb 100644 --- a/android_core/app/src/main/java/mentraos/ble/MentraosBle.java +++ b/android_core/app/src/main/java/mentraos/ble/MentraosBle.java @@ -1,22 +1,11 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! -// NO CHECKED-IN PROTOBUF GENCODE // source: mentraos_ble.proto -// Protobuf Java Version: 4.32.0 +// Protobuf Java Version: 3.25.3 package mentraos.ble; -@com.google.protobuf.Generated public final class MentraosBle { private MentraosBle() {} - static { - com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( - com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, - /* major= */ 4, - /* minor= */ 32, - /* patch= */ 0, - /* suffix= */ "", - MentraosBle.class.getName()); - } public static void registerAllExtensions( com.google.protobuf.ExtensionRegistryLite registry) { registry.add(mentraos.ble.MentraosBle.mentraSchemaVersion); @@ -785,34 +774,32 @@ public interface PhoneToGlassesOrBuilder extends * Protobuf type {@code mentraos.ble.PhoneToGlasses} */ public static final class PhoneToGlasses extends - com.google.protobuf.GeneratedMessage implements + com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:mentraos.ble.PhoneToGlasses) PhoneToGlassesOrBuilder { private static final long serialVersionUID = 0L; - static { - com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( - com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, - /* major= */ 4, - /* minor= */ 32, - /* patch= */ 0, - /* suffix= */ "", - PhoneToGlasses.class.getName()); - } // Use PhoneToGlasses.newBuilder() to construct. - private PhoneToGlasses(com.google.protobuf.GeneratedMessage.Builder builder) { + private PhoneToGlasses(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } private PhoneToGlasses() { msgId_ = ""; } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new PhoneToGlasses(); + } + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PhoneToGlasses_descriptor; } @java.lang.Override - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PhoneToGlasses_fieldAccessorTable .ensureFieldAccessorsInitialized( @@ -2362,8 +2349,8 @@ public final boolean isInitialized() { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) { - com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_); } if (payloadCase_ == 10) { output.writeMessage(10, (mentraos.ble.MentraosBle.DisconnectRequest) payload_); @@ -2494,8 +2481,8 @@ public int getSerializedSize() { if (size != -1) return size; size = 0; - if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) { - size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_); } if (payloadCase_ == 10) { size += com.google.protobuf.CodedOutputStream @@ -3055,20 +3042,20 @@ public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( } public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom(java.io.InputStream input) throws java.io.IOException { - return com.google.protobuf.GeneratedMessage + return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return com.google.protobuf.GeneratedMessage + return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } public static mentraos.ble.MentraosBle.PhoneToGlasses parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - return com.google.protobuf.GeneratedMessage + return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } @@ -3076,20 +3063,20 @@ public static mentraos.ble.MentraosBle.PhoneToGlasses parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return com.google.protobuf.GeneratedMessage + return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return com.google.protobuf.GeneratedMessage + return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return com.google.protobuf.GeneratedMessage + return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } @@ -3109,7 +3096,7 @@ public Builder toBuilder() { @java.lang.Override protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { Builder builder = new Builder(parent); return builder; } @@ -3121,7 +3108,7 @@ protected Builder newBuilderForType( * Protobuf type {@code mentraos.ble.PhoneToGlasses} */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder implements + com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:mentraos.ble.PhoneToGlasses) mentraos.ble.MentraosBle.PhoneToGlassesOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor @@ -3130,7 +3117,7 @@ public static final class Builder extends } @java.lang.Override - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PhoneToGlasses_fieldAccessorTable .ensureFieldAccessorsInitialized( @@ -3143,7 +3130,7 @@ private Builder() { } private Builder( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); } @@ -3484,6 +3471,38 @@ private void buildPartialOneofs(mentraos.ble.MentraosBle.PhoneToGlasses result) } } + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof mentraos.ble.MentraosBle.PhoneToGlasses) { @@ -3699,280 +3718,280 @@ public Builder mergeFrom( } // case 10 case 82: { input.readMessage( - internalGetDisconnectFieldBuilder().getBuilder(), + getDisconnectFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 10; break; } // case 82 case 90: { input.readMessage( - internalGetBatteryStateFieldBuilder().getBuilder(), + getBatteryStateFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 11; break; } // case 90 case 98: { input.readMessage( - internalGetGlassesInfoFieldBuilder().getBuilder(), + getGlassesInfoFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 12; break; } // case 98 case 106: { input.readMessage( - internalGetPairingModeFieldBuilder().getBuilder(), + getPairingModeFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 13; break; } // case 106 case 114: { input.readMessage( - internalGetHeadPositionFieldBuilder().getBuilder(), + getHeadPositionFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 14; break; } // case 114 case 122: { input.readMessage( - internalGetHeadUpAngleFieldBuilder().getBuilder(), + getHeadUpAngleFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 15; break; } // case 122 case 130: { input.readMessage( - internalGetPongFieldBuilder().getBuilder(), + getPongFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 16; break; } // case 130 case 162: { input.readMessage( - internalGetMicStateFieldBuilder().getBuilder(), + getMicStateFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 20; break; } // case 162 case 186: { input.readMessage( - internalGetSetVadEnabledFieldBuilder().getBuilder(), + getSetVadEnabledFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 23; break; } // case 186 case 194: { input.readMessage( - internalGetSetVadConfigFieldBuilder().getBuilder(), + getSetVadConfigFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 24; break; } // case 194 case 202: { input.readMessage( - internalGetRequestVadStatusFieldBuilder().getBuilder(), + getRequestVadStatusFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 25; break; } // case 202 case 242: { input.readMessage( - internalGetDisplayTextFieldBuilder().getBuilder(), + getDisplayTextFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 30; break; } // case 242 case 250: { input.readMessage( - internalGetDisplayImageFieldBuilder().getBuilder(), + getDisplayImageFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 31; break; } // case 250 case 258: { input.readMessage( - internalGetCacheImageFieldBuilder().getBuilder(), + getCacheImageFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 32; break; } // case 258 case 266: { input.readMessage( - internalGetDisplayCachedImageFieldBuilder().getBuilder(), + getDisplayCachedImageFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 33; break; } // case 266 case 274: { input.readMessage( - internalGetClearCachedImageFieldBuilder().getBuilder(), + getClearCachedImageFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 34; break; } // case 274 case 282: { input.readMessage( - internalGetDisplayScrollingTextFieldBuilder().getBuilder(), + getDisplayScrollingTextFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 35; break; } // case 282 case 290: { input.readMessage( - internalGetDisplayPowerFieldBuilder().getBuilder(), + getDisplayPowerFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 36; break; } // case 290 case 298: { input.readMessage( - internalGetBrightnessFieldBuilder().getBuilder(), + getBrightnessFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 37; break; } // case 298 case 306: { input.readMessage( - internalGetAutoBrightnessFieldBuilder().getBuilder(), + getAutoBrightnessFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 38; break; } // case 306 case 314: { input.readMessage( - internalGetAutoBrightnessMultFieldBuilder().getBuilder(), + getAutoBrightnessMultFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 39; break; } // case 314 case 322: { input.readMessage( - internalGetDrawLineFieldBuilder().getBuilder(), + getDrawLineFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 40; break; } // case 322 case 330: { input.readMessage( - internalGetDrawRectFieldBuilder().getBuilder(), + getDrawRectFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 41; break; } // case 330 case 338: { input.readMessage( - internalGetDrawCircleFieldBuilder().getBuilder(), + getDrawCircleFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 42; break; } // case 338 case 346: { input.readMessage( - internalGetCommitFieldBuilder().getBuilder(), + getCommitFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 43; break; } // case 346 case 354: { input.readMessage( - internalGetDisplayDistanceFieldBuilder().getBuilder(), + getDisplayDistanceFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 44; break; } // case 354 case 362: { input.readMessage( - internalGetDisplayHeightFieldBuilder().getBuilder(), + getDisplayHeightFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 45; break; } // case 362 case 370: { input.readMessage( - internalGetClearDisplayFieldBuilder().getBuilder(), + getClearDisplayFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 46; break; } // case 370 case 378: { input.readMessage( - internalGetCacheDashboardFieldBuilder().getBuilder(), + getCacheDashboardFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 47; break; } // case 378 case 386: { input.readMessage( - internalGetClearDashboardFieldBuilder().getBuilder(), + getClearDashboardFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 48; break; } // case 386 case 394: { input.readMessage( - internalGetDashboardTriggerFieldBuilder().getBuilder(), + getDashboardTriggerFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 49; break; } // case 394 case 410: { input.readMessage( - internalGetQueueStatusRequestFieldBuilder().getBuilder(), + getQueueStatusRequestFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 51; break; } // case 410 case 418: { input.readMessage( - internalGetDisplayBatchFieldBuilder().getBuilder(), + getDisplayBatchFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 52; break; } // case 418 case 442: { input.readMessage( - internalGetImuEnabledFieldBuilder().getBuilder(), + getImuEnabledFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 55; break; } // case 442 case 450: { input.readMessage( - internalGetImuSingleFieldBuilder().getBuilder(), + getImuSingleFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 56; break; } // case 450 case 458: { input.readMessage( - internalGetImuStreamFieldBuilder().getBuilder(), + getImuStreamFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 57; break; } // case 458 case 466: { input.readMessage( - internalGetHeadGestureFieldBuilder().getBuilder(), + getHeadGestureFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 58; break; } // case 466 case 482: { input.readMessage( - internalGetRestartFieldBuilder().getBuilder(), + getRestartFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 60; break; } // case 482 case 490: { input.readMessage( - internalGetFactoryResetFieldBuilder().getBuilder(), + getFactoryResetFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 61; break; } // case 490 case 562: { input.readMessage( - internalGetVersionRequestFieldBuilder().getBuilder(), + getVersionRequestFieldBuilder().getBuilder(), extensionRegistry); payloadCase_ = 70; break; @@ -4082,7 +4101,7 @@ public Builder setMsgIdBytes( return this; } - private com.google.protobuf.SingleFieldBuilder< + private com.google.protobuf.SingleFieldBuilderV3< mentraos.ble.MentraosBle.DisconnectRequest, mentraos.ble.MentraosBle.DisconnectRequest.Builder, mentraos.ble.MentraosBle.DisconnectRequestOrBuilder> disconnectBuilder_; /** *
@@ -4214,7 +4233,7 @@ public Builder clearDisconnect() {
        * .mentraos.ble.DisconnectRequest disconnect = 10;
        */
       public mentraos.ble.MentraosBle.DisconnectRequest.Builder getDisconnectBuilder() {
-        return internalGetDisconnectFieldBuilder().getBuilder();
+        return getDisconnectFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -4241,14 +4260,14 @@ public mentraos.ble.MentraosBle.DisconnectRequestOrBuilder getDisconnectOrBuilde
        *
        * .mentraos.ble.DisconnectRequest disconnect = 10;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisconnectRequest, mentraos.ble.MentraosBle.DisconnectRequest.Builder, mentraos.ble.MentraosBle.DisconnectRequestOrBuilder> 
-          internalGetDisconnectFieldBuilder() {
+          getDisconnectFieldBuilder() {
         if (disconnectBuilder_ == null) {
           if (!(payloadCase_ == 10)) {
             payload_ = mentraos.ble.MentraosBle.DisconnectRequest.getDefaultInstance();
           }
-          disconnectBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          disconnectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisconnectRequest, mentraos.ble.MentraosBle.DisconnectRequest.Builder, mentraos.ble.MentraosBle.DisconnectRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.DisconnectRequest) payload_,
                   getParentForChildren(),
@@ -4260,7 +4279,7 @@ public mentraos.ble.MentraosBle.DisconnectRequestOrBuilder getDisconnectOrBuilde
         return disconnectBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.BatteryStateRequest, mentraos.ble.MentraosBle.BatteryStateRequest.Builder, mentraos.ble.MentraosBle.BatteryStateRequestOrBuilder> batteryStateBuilder_;
       /**
        * .mentraos.ble.BatteryStateRequest battery_state = 11;
@@ -4364,7 +4383,7 @@ public Builder clearBatteryState() {
        * .mentraos.ble.BatteryStateRequest battery_state = 11;
        */
       public mentraos.ble.MentraosBle.BatteryStateRequest.Builder getBatteryStateBuilder() {
-        return internalGetBatteryStateFieldBuilder().getBuilder();
+        return getBatteryStateFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.BatteryStateRequest battery_state = 11;
@@ -4383,14 +4402,14 @@ public mentraos.ble.MentraosBle.BatteryStateRequestOrBuilder getBatteryStateOrBu
       /**
        * .mentraos.ble.BatteryStateRequest battery_state = 11;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.BatteryStateRequest, mentraos.ble.MentraosBle.BatteryStateRequest.Builder, mentraos.ble.MentraosBle.BatteryStateRequestOrBuilder> 
-          internalGetBatteryStateFieldBuilder() {
+          getBatteryStateFieldBuilder() {
         if (batteryStateBuilder_ == null) {
           if (!(payloadCase_ == 11)) {
             payload_ = mentraos.ble.MentraosBle.BatteryStateRequest.getDefaultInstance();
           }
-          batteryStateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          batteryStateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.BatteryStateRequest, mentraos.ble.MentraosBle.BatteryStateRequest.Builder, mentraos.ble.MentraosBle.BatteryStateRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.BatteryStateRequest) payload_,
                   getParentForChildren(),
@@ -4402,7 +4421,7 @@ public mentraos.ble.MentraosBle.BatteryStateRequestOrBuilder getBatteryStateOrBu
         return batteryStateBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.GlassesInfoRequest, mentraos.ble.MentraosBle.GlassesInfoRequest.Builder, mentraos.ble.MentraosBle.GlassesInfoRequestOrBuilder> glassesInfoBuilder_;
       /**
        * .mentraos.ble.GlassesInfoRequest glasses_info = 12;
@@ -4506,7 +4525,7 @@ public Builder clearGlassesInfo() {
        * .mentraos.ble.GlassesInfoRequest glasses_info = 12;
        */
       public mentraos.ble.MentraosBle.GlassesInfoRequest.Builder getGlassesInfoBuilder() {
-        return internalGetGlassesInfoFieldBuilder().getBuilder();
+        return getGlassesInfoFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.GlassesInfoRequest glasses_info = 12;
@@ -4525,14 +4544,14 @@ public mentraos.ble.MentraosBle.GlassesInfoRequestOrBuilder getGlassesInfoOrBuil
       /**
        * .mentraos.ble.GlassesInfoRequest glasses_info = 12;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.GlassesInfoRequest, mentraos.ble.MentraosBle.GlassesInfoRequest.Builder, mentraos.ble.MentraosBle.GlassesInfoRequestOrBuilder> 
-          internalGetGlassesInfoFieldBuilder() {
+          getGlassesInfoFieldBuilder() {
         if (glassesInfoBuilder_ == null) {
           if (!(payloadCase_ == 12)) {
             payload_ = mentraos.ble.MentraosBle.GlassesInfoRequest.getDefaultInstance();
           }
-          glassesInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          glassesInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.GlassesInfoRequest, mentraos.ble.MentraosBle.GlassesInfoRequest.Builder, mentraos.ble.MentraosBle.GlassesInfoRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.GlassesInfoRequest) payload_,
                   getParentForChildren(),
@@ -4544,7 +4563,7 @@ public mentraos.ble.MentraosBle.GlassesInfoRequestOrBuilder getGlassesInfoOrBuil
         return glassesInfoBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.PairingModeRequest, mentraos.ble.MentraosBle.PairingModeRequest.Builder, mentraos.ble.MentraosBle.PairingModeRequestOrBuilder> pairingModeBuilder_;
       /**
        * .mentraos.ble.PairingModeRequest pairing_mode = 13;
@@ -4648,7 +4667,7 @@ public Builder clearPairingMode() {
        * .mentraos.ble.PairingModeRequest pairing_mode = 13;
        */
       public mentraos.ble.MentraosBle.PairingModeRequest.Builder getPairingModeBuilder() {
-        return internalGetPairingModeFieldBuilder().getBuilder();
+        return getPairingModeFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.PairingModeRequest pairing_mode = 13;
@@ -4667,14 +4686,14 @@ public mentraos.ble.MentraosBle.PairingModeRequestOrBuilder getPairingModeOrBuil
       /**
        * .mentraos.ble.PairingModeRequest pairing_mode = 13;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.PairingModeRequest, mentraos.ble.MentraosBle.PairingModeRequest.Builder, mentraos.ble.MentraosBle.PairingModeRequestOrBuilder> 
-          internalGetPairingModeFieldBuilder() {
+          getPairingModeFieldBuilder() {
         if (pairingModeBuilder_ == null) {
           if (!(payloadCase_ == 13)) {
             payload_ = mentraos.ble.MentraosBle.PairingModeRequest.getDefaultInstance();
           }
-          pairingModeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          pairingModeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.PairingModeRequest, mentraos.ble.MentraosBle.PairingModeRequest.Builder, mentraos.ble.MentraosBle.PairingModeRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.PairingModeRequest) payload_,
                   getParentForChildren(),
@@ -4686,7 +4705,7 @@ public mentraos.ble.MentraosBle.PairingModeRequestOrBuilder getPairingModeOrBuil
         return pairingModeBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadPositionRequest, mentraos.ble.MentraosBle.HeadPositionRequest.Builder, mentraos.ble.MentraosBle.HeadPositionRequestOrBuilder> headPositionBuilder_;
       /**
        * .mentraos.ble.HeadPositionRequest head_position = 14;
@@ -4790,7 +4809,7 @@ public Builder clearHeadPosition() {
        * .mentraos.ble.HeadPositionRequest head_position = 14;
        */
       public mentraos.ble.MentraosBle.HeadPositionRequest.Builder getHeadPositionBuilder() {
-        return internalGetHeadPositionFieldBuilder().getBuilder();
+        return getHeadPositionFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.HeadPositionRequest head_position = 14;
@@ -4809,14 +4828,14 @@ public mentraos.ble.MentraosBle.HeadPositionRequestOrBuilder getHeadPositionOrBu
       /**
        * .mentraos.ble.HeadPositionRequest head_position = 14;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadPositionRequest, mentraos.ble.MentraosBle.HeadPositionRequest.Builder, mentraos.ble.MentraosBle.HeadPositionRequestOrBuilder> 
-          internalGetHeadPositionFieldBuilder() {
+          getHeadPositionFieldBuilder() {
         if (headPositionBuilder_ == null) {
           if (!(payloadCase_ == 14)) {
             payload_ = mentraos.ble.MentraosBle.HeadPositionRequest.getDefaultInstance();
           }
-          headPositionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          headPositionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.HeadPositionRequest, mentraos.ble.MentraosBle.HeadPositionRequest.Builder, mentraos.ble.MentraosBle.HeadPositionRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.HeadPositionRequest) payload_,
                   getParentForChildren(),
@@ -4828,7 +4847,7 @@ public mentraos.ble.MentraosBle.HeadPositionRequestOrBuilder getHeadPositionOrBu
         return headPositionBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadUpAngleConfig, mentraos.ble.MentraosBle.HeadUpAngleConfig.Builder, mentraos.ble.MentraosBle.HeadUpAngleConfigOrBuilder> headUpAngleBuilder_;
       /**
        * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15;
@@ -4932,7 +4951,7 @@ public Builder clearHeadUpAngle() {
        * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15;
        */
       public mentraos.ble.MentraosBle.HeadUpAngleConfig.Builder getHeadUpAngleBuilder() {
-        return internalGetHeadUpAngleFieldBuilder().getBuilder();
+        return getHeadUpAngleFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15;
@@ -4951,14 +4970,14 @@ public mentraos.ble.MentraosBle.HeadUpAngleConfigOrBuilder getHeadUpAngleOrBuild
       /**
        * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadUpAngleConfig, mentraos.ble.MentraosBle.HeadUpAngleConfig.Builder, mentraos.ble.MentraosBle.HeadUpAngleConfigOrBuilder> 
-          internalGetHeadUpAngleFieldBuilder() {
+          getHeadUpAngleFieldBuilder() {
         if (headUpAngleBuilder_ == null) {
           if (!(payloadCase_ == 15)) {
             payload_ = mentraos.ble.MentraosBle.HeadUpAngleConfig.getDefaultInstance();
           }
-          headUpAngleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          headUpAngleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.HeadUpAngleConfig, mentraos.ble.MentraosBle.HeadUpAngleConfig.Builder, mentraos.ble.MentraosBle.HeadUpAngleConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.HeadUpAngleConfig) payload_,
                   getParentForChildren(),
@@ -4970,7 +4989,7 @@ public mentraos.ble.MentraosBle.HeadUpAngleConfigOrBuilder getHeadUpAngleOrBuild
         return headUpAngleBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.PongResponse, mentraos.ble.MentraosBle.PongResponse.Builder, mentraos.ble.MentraosBle.PongResponseOrBuilder> pongBuilder_;
       /**
        * .mentraos.ble.PongResponse pong = 16;
@@ -5074,7 +5093,7 @@ public Builder clearPong() {
        * .mentraos.ble.PongResponse pong = 16;
        */
       public mentraos.ble.MentraosBle.PongResponse.Builder getPongBuilder() {
-        return internalGetPongFieldBuilder().getBuilder();
+        return getPongFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.PongResponse pong = 16;
@@ -5093,14 +5112,14 @@ public mentraos.ble.MentraosBle.PongResponseOrBuilder getPongOrBuilder() {
       /**
        * .mentraos.ble.PongResponse pong = 16;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.PongResponse, mentraos.ble.MentraosBle.PongResponse.Builder, mentraos.ble.MentraosBle.PongResponseOrBuilder> 
-          internalGetPongFieldBuilder() {
+          getPongFieldBuilder() {
         if (pongBuilder_ == null) {
           if (!(payloadCase_ == 16)) {
             payload_ = mentraos.ble.MentraosBle.PongResponse.getDefaultInstance();
           }
-          pongBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          pongBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.PongResponse, mentraos.ble.MentraosBle.PongResponse.Builder, mentraos.ble.MentraosBle.PongResponseOrBuilder>(
                   (mentraos.ble.MentraosBle.PongResponse) payload_,
                   getParentForChildren(),
@@ -5112,7 +5131,7 @@ public mentraos.ble.MentraosBle.PongResponseOrBuilder getPongOrBuilder() {
         return pongBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.MicStateConfig, mentraos.ble.MentraosBle.MicStateConfig.Builder, mentraos.ble.MentraosBle.MicStateConfigOrBuilder> micStateBuilder_;
       /**
        * 
@@ -5244,7 +5263,7 @@ public Builder clearMicState() {
        * .mentraos.ble.MicStateConfig mic_state = 20;
        */
       public mentraos.ble.MentraosBle.MicStateConfig.Builder getMicStateBuilder() {
-        return internalGetMicStateFieldBuilder().getBuilder();
+        return getMicStateFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -5271,14 +5290,14 @@ public mentraos.ble.MentraosBle.MicStateConfigOrBuilder getMicStateOrBuilder() {
        *
        * .mentraos.ble.MicStateConfig mic_state = 20;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.MicStateConfig, mentraos.ble.MentraosBle.MicStateConfig.Builder, mentraos.ble.MentraosBle.MicStateConfigOrBuilder> 
-          internalGetMicStateFieldBuilder() {
+          getMicStateFieldBuilder() {
         if (micStateBuilder_ == null) {
           if (!(payloadCase_ == 20)) {
             payload_ = mentraos.ble.MentraosBle.MicStateConfig.getDefaultInstance();
           }
-          micStateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          micStateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.MicStateConfig, mentraos.ble.MentraosBle.MicStateConfig.Builder, mentraos.ble.MentraosBle.MicStateConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.MicStateConfig) payload_,
                   getParentForChildren(),
@@ -5290,7 +5309,7 @@ public mentraos.ble.MentraosBle.MicStateConfigOrBuilder getMicStateOrBuilder() {
         return micStateBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadEnabledRequest, mentraos.ble.MentraosBle.VadEnabledRequest.Builder, mentraos.ble.MentraosBle.VadEnabledRequestOrBuilder> setVadEnabledBuilder_;
       /**
        * .mentraos.ble.VadEnabledRequest set_vad_enabled = 23;
@@ -5394,7 +5413,7 @@ public Builder clearSetVadEnabled() {
        * .mentraos.ble.VadEnabledRequest set_vad_enabled = 23;
        */
       public mentraos.ble.MentraosBle.VadEnabledRequest.Builder getSetVadEnabledBuilder() {
-        return internalGetSetVadEnabledFieldBuilder().getBuilder();
+        return getSetVadEnabledFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.VadEnabledRequest set_vad_enabled = 23;
@@ -5413,14 +5432,14 @@ public mentraos.ble.MentraosBle.VadEnabledRequestOrBuilder getSetVadEnabledOrBui
       /**
        * .mentraos.ble.VadEnabledRequest set_vad_enabled = 23;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadEnabledRequest, mentraos.ble.MentraosBle.VadEnabledRequest.Builder, mentraos.ble.MentraosBle.VadEnabledRequestOrBuilder> 
-          internalGetSetVadEnabledFieldBuilder() {
+          getSetVadEnabledFieldBuilder() {
         if (setVadEnabledBuilder_ == null) {
           if (!(payloadCase_ == 23)) {
             payload_ = mentraos.ble.MentraosBle.VadEnabledRequest.getDefaultInstance();
           }
-          setVadEnabledBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          setVadEnabledBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.VadEnabledRequest, mentraos.ble.MentraosBle.VadEnabledRequest.Builder, mentraos.ble.MentraosBle.VadEnabledRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.VadEnabledRequest) payload_,
                   getParentForChildren(),
@@ -5432,7 +5451,7 @@ public mentraos.ble.MentraosBle.VadEnabledRequestOrBuilder getSetVadEnabledOrBui
         return setVadEnabledBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadConfigRequest, mentraos.ble.MentraosBle.VadConfigRequest.Builder, mentraos.ble.MentraosBle.VadConfigRequestOrBuilder> setVadConfigBuilder_;
       /**
        * .mentraos.ble.VadConfigRequest set_vad_config = 24;
@@ -5536,7 +5555,7 @@ public Builder clearSetVadConfig() {
        * .mentraos.ble.VadConfigRequest set_vad_config = 24;
        */
       public mentraos.ble.MentraosBle.VadConfigRequest.Builder getSetVadConfigBuilder() {
-        return internalGetSetVadConfigFieldBuilder().getBuilder();
+        return getSetVadConfigFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.VadConfigRequest set_vad_config = 24;
@@ -5555,14 +5574,14 @@ public mentraos.ble.MentraosBle.VadConfigRequestOrBuilder getSetVadConfigOrBuild
       /**
        * .mentraos.ble.VadConfigRequest set_vad_config = 24;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadConfigRequest, mentraos.ble.MentraosBle.VadConfigRequest.Builder, mentraos.ble.MentraosBle.VadConfigRequestOrBuilder> 
-          internalGetSetVadConfigFieldBuilder() {
+          getSetVadConfigFieldBuilder() {
         if (setVadConfigBuilder_ == null) {
           if (!(payloadCase_ == 24)) {
             payload_ = mentraos.ble.MentraosBle.VadConfigRequest.getDefaultInstance();
           }
-          setVadConfigBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          setVadConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.VadConfigRequest, mentraos.ble.MentraosBle.VadConfigRequest.Builder, mentraos.ble.MentraosBle.VadConfigRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.VadConfigRequest) payload_,
                   getParentForChildren(),
@@ -5574,7 +5593,7 @@ public mentraos.ble.MentraosBle.VadConfigRequestOrBuilder getSetVadConfigOrBuild
         return setVadConfigBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadStatusRequest, mentraos.ble.MentraosBle.VadStatusRequest.Builder, mentraos.ble.MentraosBle.VadStatusRequestOrBuilder> requestVadStatusBuilder_;
       /**
        * .mentraos.ble.VadStatusRequest request_vad_status = 25;
@@ -5678,7 +5697,7 @@ public Builder clearRequestVadStatus() {
        * .mentraos.ble.VadStatusRequest request_vad_status = 25;
        */
       public mentraos.ble.MentraosBle.VadStatusRequest.Builder getRequestVadStatusBuilder() {
-        return internalGetRequestVadStatusFieldBuilder().getBuilder();
+        return getRequestVadStatusFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.VadStatusRequest request_vad_status = 25;
@@ -5697,14 +5716,14 @@ public mentraos.ble.MentraosBle.VadStatusRequestOrBuilder getRequestVadStatusOrB
       /**
        * .mentraos.ble.VadStatusRequest request_vad_status = 25;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadStatusRequest, mentraos.ble.MentraosBle.VadStatusRequest.Builder, mentraos.ble.MentraosBle.VadStatusRequestOrBuilder> 
-          internalGetRequestVadStatusFieldBuilder() {
+          getRequestVadStatusFieldBuilder() {
         if (requestVadStatusBuilder_ == null) {
           if (!(payloadCase_ == 25)) {
             payload_ = mentraos.ble.MentraosBle.VadStatusRequest.getDefaultInstance();
           }
-          requestVadStatusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          requestVadStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.VadStatusRequest, mentraos.ble.MentraosBle.VadStatusRequest.Builder, mentraos.ble.MentraosBle.VadStatusRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.VadStatusRequest) payload_,
                   getParentForChildren(),
@@ -5716,7 +5735,7 @@ public mentraos.ble.MentraosBle.VadStatusRequestOrBuilder getRequestVadStatusOrB
         return requestVadStatusBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayText, mentraos.ble.MentraosBle.DisplayText.Builder, mentraos.ble.MentraosBle.DisplayTextOrBuilder> displayTextBuilder_;
       /**
        * 
@@ -5848,7 +5867,7 @@ public Builder clearDisplayText() {
        * .mentraos.ble.DisplayText display_text = 30;
        */
       public mentraos.ble.MentraosBle.DisplayText.Builder getDisplayTextBuilder() {
-        return internalGetDisplayTextFieldBuilder().getBuilder();
+        return getDisplayTextFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -5875,14 +5894,14 @@ public mentraos.ble.MentraosBle.DisplayTextOrBuilder getDisplayTextOrBuilder() {
        *
        * .mentraos.ble.DisplayText display_text = 30;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayText, mentraos.ble.MentraosBle.DisplayText.Builder, mentraos.ble.MentraosBle.DisplayTextOrBuilder> 
-          internalGetDisplayTextFieldBuilder() {
+          getDisplayTextFieldBuilder() {
         if (displayTextBuilder_ == null) {
           if (!(payloadCase_ == 30)) {
             payload_ = mentraos.ble.MentraosBle.DisplayText.getDefaultInstance();
           }
-          displayTextBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          displayTextBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayText, mentraos.ble.MentraosBle.DisplayText.Builder, mentraos.ble.MentraosBle.DisplayTextOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayText) payload_,
                   getParentForChildren(),
@@ -5894,7 +5913,7 @@ public mentraos.ble.MentraosBle.DisplayTextOrBuilder getDisplayTextOrBuilder() {
         return displayTextBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayImage, mentraos.ble.MentraosBle.DisplayImage.Builder, mentraos.ble.MentraosBle.DisplayImageOrBuilder> displayImageBuilder_;
       /**
        * .mentraos.ble.DisplayImage display_image = 31;
@@ -5998,7 +6017,7 @@ public Builder clearDisplayImage() {
        * .mentraos.ble.DisplayImage display_image = 31;
        */
       public mentraos.ble.MentraosBle.DisplayImage.Builder getDisplayImageBuilder() {
-        return internalGetDisplayImageFieldBuilder().getBuilder();
+        return getDisplayImageFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DisplayImage display_image = 31;
@@ -6017,14 +6036,14 @@ public mentraos.ble.MentraosBle.DisplayImageOrBuilder getDisplayImageOrBuilder()
       /**
        * .mentraos.ble.DisplayImage display_image = 31;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayImage, mentraos.ble.MentraosBle.DisplayImage.Builder, mentraos.ble.MentraosBle.DisplayImageOrBuilder> 
-          internalGetDisplayImageFieldBuilder() {
+          getDisplayImageFieldBuilder() {
         if (displayImageBuilder_ == null) {
           if (!(payloadCase_ == 31)) {
             payload_ = mentraos.ble.MentraosBle.DisplayImage.getDefaultInstance();
           }
-          displayImageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          displayImageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayImage, mentraos.ble.MentraosBle.DisplayImage.Builder, mentraos.ble.MentraosBle.DisplayImageOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayImage) payload_,
                   getParentForChildren(),
@@ -6036,7 +6055,7 @@ public mentraos.ble.MentraosBle.DisplayImageOrBuilder getDisplayImageOrBuilder()
         return displayImageBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.CacheImage, mentraos.ble.MentraosBle.CacheImage.Builder, mentraos.ble.MentraosBle.CacheImageOrBuilder> cacheImageBuilder_;
       /**
        * .mentraos.ble.CacheImage cache_image = 32;
@@ -6140,7 +6159,7 @@ public Builder clearCacheImage() {
        * .mentraos.ble.CacheImage cache_image = 32;
        */
       public mentraos.ble.MentraosBle.CacheImage.Builder getCacheImageBuilder() {
-        return internalGetCacheImageFieldBuilder().getBuilder();
+        return getCacheImageFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.CacheImage cache_image = 32;
@@ -6159,14 +6178,14 @@ public mentraos.ble.MentraosBle.CacheImageOrBuilder getCacheImageOrBuilder() {
       /**
        * .mentraos.ble.CacheImage cache_image = 32;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.CacheImage, mentraos.ble.MentraosBle.CacheImage.Builder, mentraos.ble.MentraosBle.CacheImageOrBuilder> 
-          internalGetCacheImageFieldBuilder() {
+          getCacheImageFieldBuilder() {
         if (cacheImageBuilder_ == null) {
           if (!(payloadCase_ == 32)) {
             payload_ = mentraos.ble.MentraosBle.CacheImage.getDefaultInstance();
           }
-          cacheImageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          cacheImageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.CacheImage, mentraos.ble.MentraosBle.CacheImage.Builder, mentraos.ble.MentraosBle.CacheImageOrBuilder>(
                   (mentraos.ble.MentraosBle.CacheImage) payload_,
                   getParentForChildren(),
@@ -6178,7 +6197,7 @@ public mentraos.ble.MentraosBle.CacheImageOrBuilder getCacheImageOrBuilder() {
         return cacheImageBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayCachedImage, mentraos.ble.MentraosBle.DisplayCachedImage.Builder, mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder> displayCachedImageBuilder_;
       /**
        * .mentraos.ble.DisplayCachedImage display_cached_image = 33;
@@ -6282,7 +6301,7 @@ public Builder clearDisplayCachedImage() {
        * .mentraos.ble.DisplayCachedImage display_cached_image = 33;
        */
       public mentraos.ble.MentraosBle.DisplayCachedImage.Builder getDisplayCachedImageBuilder() {
-        return internalGetDisplayCachedImageFieldBuilder().getBuilder();
+        return getDisplayCachedImageFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DisplayCachedImage display_cached_image = 33;
@@ -6301,14 +6320,14 @@ public mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder getDisplayCachedImag
       /**
        * .mentraos.ble.DisplayCachedImage display_cached_image = 33;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayCachedImage, mentraos.ble.MentraosBle.DisplayCachedImage.Builder, mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder> 
-          internalGetDisplayCachedImageFieldBuilder() {
+          getDisplayCachedImageFieldBuilder() {
         if (displayCachedImageBuilder_ == null) {
           if (!(payloadCase_ == 33)) {
             payload_ = mentraos.ble.MentraosBle.DisplayCachedImage.getDefaultInstance();
           }
-          displayCachedImageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          displayCachedImageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayCachedImage, mentraos.ble.MentraosBle.DisplayCachedImage.Builder, mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayCachedImage) payload_,
                   getParentForChildren(),
@@ -6320,7 +6339,7 @@ public mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder getDisplayCachedImag
         return displayCachedImageBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ClearCachedImage, mentraos.ble.MentraosBle.ClearCachedImage.Builder, mentraos.ble.MentraosBle.ClearCachedImageOrBuilder> clearCachedImageBuilder_;
       /**
        * .mentraos.ble.ClearCachedImage clear_cached_image = 34;
@@ -6424,7 +6443,7 @@ public Builder clearClearCachedImage() {
        * .mentraos.ble.ClearCachedImage clear_cached_image = 34;
        */
       public mentraos.ble.MentraosBle.ClearCachedImage.Builder getClearCachedImageBuilder() {
-        return internalGetClearCachedImageFieldBuilder().getBuilder();
+        return getClearCachedImageFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.ClearCachedImage clear_cached_image = 34;
@@ -6443,14 +6462,14 @@ public mentraos.ble.MentraosBle.ClearCachedImageOrBuilder getClearCachedImageOrB
       /**
        * .mentraos.ble.ClearCachedImage clear_cached_image = 34;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ClearCachedImage, mentraos.ble.MentraosBle.ClearCachedImage.Builder, mentraos.ble.MentraosBle.ClearCachedImageOrBuilder> 
-          internalGetClearCachedImageFieldBuilder() {
+          getClearCachedImageFieldBuilder() {
         if (clearCachedImageBuilder_ == null) {
           if (!(payloadCase_ == 34)) {
             payload_ = mentraos.ble.MentraosBle.ClearCachedImage.getDefaultInstance();
           }
-          clearCachedImageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          clearCachedImageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ClearCachedImage, mentraos.ble.MentraosBle.ClearCachedImage.Builder, mentraos.ble.MentraosBle.ClearCachedImageOrBuilder>(
                   (mentraos.ble.MentraosBle.ClearCachedImage) payload_,
                   getParentForChildren(),
@@ -6462,7 +6481,7 @@ public mentraos.ble.MentraosBle.ClearCachedImageOrBuilder getClearCachedImageOrB
         return clearCachedImageBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayScrollingText, mentraos.ble.MentraosBle.DisplayScrollingText.Builder, mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder> displayScrollingTextBuilder_;
       /**
        * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35;
@@ -6566,7 +6585,7 @@ public Builder clearDisplayScrollingText() {
        * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35;
        */
       public mentraos.ble.MentraosBle.DisplayScrollingText.Builder getDisplayScrollingTextBuilder() {
-        return internalGetDisplayScrollingTextFieldBuilder().getBuilder();
+        return getDisplayScrollingTextFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35;
@@ -6585,14 +6604,14 @@ public mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder getDisplayScrollin
       /**
        * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayScrollingText, mentraos.ble.MentraosBle.DisplayScrollingText.Builder, mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder> 
-          internalGetDisplayScrollingTextFieldBuilder() {
+          getDisplayScrollingTextFieldBuilder() {
         if (displayScrollingTextBuilder_ == null) {
           if (!(payloadCase_ == 35)) {
             payload_ = mentraos.ble.MentraosBle.DisplayScrollingText.getDefaultInstance();
           }
-          displayScrollingTextBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          displayScrollingTextBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayScrollingText, mentraos.ble.MentraosBle.DisplayScrollingText.Builder, mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayScrollingText) payload_,
                   getParentForChildren(),
@@ -6604,7 +6623,7 @@ public mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder getDisplayScrollin
         return displayScrollingTextBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DrawLine, mentraos.ble.MentraosBle.DrawLine.Builder, mentraos.ble.MentraosBle.DrawLineOrBuilder> drawLineBuilder_;
       /**
        * .mentraos.ble.DrawLine draw_line = 40;
@@ -6708,7 +6727,7 @@ public Builder clearDrawLine() {
        * .mentraos.ble.DrawLine draw_line = 40;
        */
       public mentraos.ble.MentraosBle.DrawLine.Builder getDrawLineBuilder() {
-        return internalGetDrawLineFieldBuilder().getBuilder();
+        return getDrawLineFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DrawLine draw_line = 40;
@@ -6727,14 +6746,14 @@ public mentraos.ble.MentraosBle.DrawLineOrBuilder getDrawLineOrBuilder() {
       /**
        * .mentraos.ble.DrawLine draw_line = 40;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DrawLine, mentraos.ble.MentraosBle.DrawLine.Builder, mentraos.ble.MentraosBle.DrawLineOrBuilder> 
-          internalGetDrawLineFieldBuilder() {
+          getDrawLineFieldBuilder() {
         if (drawLineBuilder_ == null) {
           if (!(payloadCase_ == 40)) {
             payload_ = mentraos.ble.MentraosBle.DrawLine.getDefaultInstance();
           }
-          drawLineBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          drawLineBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DrawLine, mentraos.ble.MentraosBle.DrawLine.Builder, mentraos.ble.MentraosBle.DrawLineOrBuilder>(
                   (mentraos.ble.MentraosBle.DrawLine) payload_,
                   getParentForChildren(),
@@ -6746,7 +6765,7 @@ public mentraos.ble.MentraosBle.DrawLineOrBuilder getDrawLineOrBuilder() {
         return drawLineBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DrawRect, mentraos.ble.MentraosBle.DrawRect.Builder, mentraos.ble.MentraosBle.DrawRectOrBuilder> drawRectBuilder_;
       /**
        * .mentraos.ble.DrawRect draw_rect = 41;
@@ -6850,7 +6869,7 @@ public Builder clearDrawRect() {
        * .mentraos.ble.DrawRect draw_rect = 41;
        */
       public mentraos.ble.MentraosBle.DrawRect.Builder getDrawRectBuilder() {
-        return internalGetDrawRectFieldBuilder().getBuilder();
+        return getDrawRectFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DrawRect draw_rect = 41;
@@ -6869,14 +6888,14 @@ public mentraos.ble.MentraosBle.DrawRectOrBuilder getDrawRectOrBuilder() {
       /**
        * .mentraos.ble.DrawRect draw_rect = 41;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DrawRect, mentraos.ble.MentraosBle.DrawRect.Builder, mentraos.ble.MentraosBle.DrawRectOrBuilder> 
-          internalGetDrawRectFieldBuilder() {
+          getDrawRectFieldBuilder() {
         if (drawRectBuilder_ == null) {
           if (!(payloadCase_ == 41)) {
             payload_ = mentraos.ble.MentraosBle.DrawRect.getDefaultInstance();
           }
-          drawRectBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          drawRectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DrawRect, mentraos.ble.MentraosBle.DrawRect.Builder, mentraos.ble.MentraosBle.DrawRectOrBuilder>(
                   (mentraos.ble.MentraosBle.DrawRect) payload_,
                   getParentForChildren(),
@@ -6888,7 +6907,7 @@ public mentraos.ble.MentraosBle.DrawRectOrBuilder getDrawRectOrBuilder() {
         return drawRectBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DrawCircle, mentraos.ble.MentraosBle.DrawCircle.Builder, mentraos.ble.MentraosBle.DrawCircleOrBuilder> drawCircleBuilder_;
       /**
        * .mentraos.ble.DrawCircle draw_circle = 42;
@@ -6992,7 +7011,7 @@ public Builder clearDrawCircle() {
        * .mentraos.ble.DrawCircle draw_circle = 42;
        */
       public mentraos.ble.MentraosBle.DrawCircle.Builder getDrawCircleBuilder() {
-        return internalGetDrawCircleFieldBuilder().getBuilder();
+        return getDrawCircleFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DrawCircle draw_circle = 42;
@@ -7011,14 +7030,14 @@ public mentraos.ble.MentraosBle.DrawCircleOrBuilder getDrawCircleOrBuilder() {
       /**
        * .mentraos.ble.DrawCircle draw_circle = 42;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DrawCircle, mentraos.ble.MentraosBle.DrawCircle.Builder, mentraos.ble.MentraosBle.DrawCircleOrBuilder> 
-          internalGetDrawCircleFieldBuilder() {
+          getDrawCircleFieldBuilder() {
         if (drawCircleBuilder_ == null) {
           if (!(payloadCase_ == 42)) {
             payload_ = mentraos.ble.MentraosBle.DrawCircle.getDefaultInstance();
           }
-          drawCircleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          drawCircleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DrawCircle, mentraos.ble.MentraosBle.DrawCircle.Builder, mentraos.ble.MentraosBle.DrawCircleOrBuilder>(
                   (mentraos.ble.MentraosBle.DrawCircle) payload_,
                   getParentForChildren(),
@@ -7030,7 +7049,7 @@ public mentraos.ble.MentraosBle.DrawCircleOrBuilder getDrawCircleOrBuilder() {
         return drawCircleBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayBatch, mentraos.ble.MentraosBle.DisplayBatch.Builder, mentraos.ble.MentraosBle.DisplayBatchOrBuilder> displayBatchBuilder_;
       /**
        * 
@@ -7162,7 +7181,7 @@ public Builder clearDisplayBatch() {
        * .mentraos.ble.DisplayBatch display_batch = 52;
        */
       public mentraos.ble.MentraosBle.DisplayBatch.Builder getDisplayBatchBuilder() {
-        return internalGetDisplayBatchFieldBuilder().getBuilder();
+        return getDisplayBatchFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -7189,14 +7208,14 @@ public mentraos.ble.MentraosBle.DisplayBatchOrBuilder getDisplayBatchOrBuilder()
        *
        * .mentraos.ble.DisplayBatch display_batch = 52;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayBatch, mentraos.ble.MentraosBle.DisplayBatch.Builder, mentraos.ble.MentraosBle.DisplayBatchOrBuilder> 
-          internalGetDisplayBatchFieldBuilder() {
+          getDisplayBatchFieldBuilder() {
         if (displayBatchBuilder_ == null) {
           if (!(payloadCase_ == 52)) {
             payload_ = mentraos.ble.MentraosBle.DisplayBatch.getDefaultInstance();
           }
-          displayBatchBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          displayBatchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayBatch, mentraos.ble.MentraosBle.DisplayBatch.Builder, mentraos.ble.MentraosBle.DisplayBatchOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayBatch) payload_,
                   getParentForChildren(),
@@ -7208,7 +7227,7 @@ public mentraos.ble.MentraosBle.DisplayBatchOrBuilder getDisplayBatchOrBuilder()
         return displayBatchBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.CommitDisplay, mentraos.ble.MentraosBle.CommitDisplay.Builder, mentraos.ble.MentraosBle.CommitDisplayOrBuilder> commitBuilder_;
       /**
        * 
@@ -7340,7 +7359,7 @@ public Builder clearCommit() {
        * .mentraos.ble.CommitDisplay commit = 43;
        */
       public mentraos.ble.MentraosBle.CommitDisplay.Builder getCommitBuilder() {
-        return internalGetCommitFieldBuilder().getBuilder();
+        return getCommitFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -7367,14 +7386,14 @@ public mentraos.ble.MentraosBle.CommitDisplayOrBuilder getCommitOrBuilder() {
        *
        * .mentraos.ble.CommitDisplay commit = 43;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.CommitDisplay, mentraos.ble.MentraosBle.CommitDisplay.Builder, mentraos.ble.MentraosBle.CommitDisplayOrBuilder> 
-          internalGetCommitFieldBuilder() {
+          getCommitFieldBuilder() {
         if (commitBuilder_ == null) {
           if (!(payloadCase_ == 43)) {
             payload_ = mentraos.ble.MentraosBle.CommitDisplay.getDefaultInstance();
           }
-          commitBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          commitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.CommitDisplay, mentraos.ble.MentraosBle.CommitDisplay.Builder, mentraos.ble.MentraosBle.CommitDisplayOrBuilder>(
                   (mentraos.ble.MentraosBle.CommitDisplay) payload_,
                   getParentForChildren(),
@@ -7386,7 +7405,7 @@ public mentraos.ble.MentraosBle.CommitDisplayOrBuilder getCommitOrBuilder() {
         return commitBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayPowerConfig, mentraos.ble.MentraosBle.DisplayPowerConfig.Builder, mentraos.ble.MentraosBle.DisplayPowerConfigOrBuilder> displayPowerBuilder_;
       /**
        * 
@@ -7518,7 +7537,7 @@ public Builder clearDisplayPower() {
        * .mentraos.ble.DisplayPowerConfig display_power = 36;
        */
       public mentraos.ble.MentraosBle.DisplayPowerConfig.Builder getDisplayPowerBuilder() {
-        return internalGetDisplayPowerFieldBuilder().getBuilder();
+        return getDisplayPowerFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -7545,14 +7564,14 @@ public mentraos.ble.MentraosBle.DisplayPowerConfigOrBuilder getDisplayPowerOrBui
        *
        * .mentraos.ble.DisplayPowerConfig display_power = 36;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayPowerConfig, mentraos.ble.MentraosBle.DisplayPowerConfig.Builder, mentraos.ble.MentraosBle.DisplayPowerConfigOrBuilder> 
-          internalGetDisplayPowerFieldBuilder() {
+          getDisplayPowerFieldBuilder() {
         if (displayPowerBuilder_ == null) {
           if (!(payloadCase_ == 36)) {
             payload_ = mentraos.ble.MentraosBle.DisplayPowerConfig.getDefaultInstance();
           }
-          displayPowerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          displayPowerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayPowerConfig, mentraos.ble.MentraosBle.DisplayPowerConfig.Builder, mentraos.ble.MentraosBle.DisplayPowerConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayPowerConfig) payload_,
                   getParentForChildren(),
@@ -7564,7 +7583,7 @@ public mentraos.ble.MentraosBle.DisplayPowerConfigOrBuilder getDisplayPowerOrBui
         return displayPowerBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.BrightnessConfig, mentraos.ble.MentraosBle.BrightnessConfig.Builder, mentraos.ble.MentraosBle.BrightnessConfigOrBuilder> brightnessBuilder_;
       /**
        * .mentraos.ble.BrightnessConfig brightness = 37;
@@ -7668,7 +7687,7 @@ public Builder clearBrightness() {
        * .mentraos.ble.BrightnessConfig brightness = 37;
        */
       public mentraos.ble.MentraosBle.BrightnessConfig.Builder getBrightnessBuilder() {
-        return internalGetBrightnessFieldBuilder().getBuilder();
+        return getBrightnessFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.BrightnessConfig brightness = 37;
@@ -7687,14 +7706,14 @@ public mentraos.ble.MentraosBle.BrightnessConfigOrBuilder getBrightnessOrBuilder
       /**
        * .mentraos.ble.BrightnessConfig brightness = 37;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.BrightnessConfig, mentraos.ble.MentraosBle.BrightnessConfig.Builder, mentraos.ble.MentraosBle.BrightnessConfigOrBuilder> 
-          internalGetBrightnessFieldBuilder() {
+          getBrightnessFieldBuilder() {
         if (brightnessBuilder_ == null) {
           if (!(payloadCase_ == 37)) {
             payload_ = mentraos.ble.MentraosBle.BrightnessConfig.getDefaultInstance();
           }
-          brightnessBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          brightnessBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.BrightnessConfig, mentraos.ble.MentraosBle.BrightnessConfig.Builder, mentraos.ble.MentraosBle.BrightnessConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.BrightnessConfig) payload_,
                   getParentForChildren(),
@@ -7706,7 +7725,7 @@ public mentraos.ble.MentraosBle.BrightnessConfigOrBuilder getBrightnessOrBuilder
         return brightnessBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.AutoBrightnessConfig, mentraos.ble.MentraosBle.AutoBrightnessConfig.Builder, mentraos.ble.MentraosBle.AutoBrightnessConfigOrBuilder> autoBrightnessBuilder_;
       /**
        * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38;
@@ -7810,7 +7829,7 @@ public Builder clearAutoBrightness() {
        * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38;
        */
       public mentraos.ble.MentraosBle.AutoBrightnessConfig.Builder getAutoBrightnessBuilder() {
-        return internalGetAutoBrightnessFieldBuilder().getBuilder();
+        return getAutoBrightnessFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38;
@@ -7829,14 +7848,14 @@ public mentraos.ble.MentraosBle.AutoBrightnessConfigOrBuilder getAutoBrightnessO
       /**
        * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.AutoBrightnessConfig, mentraos.ble.MentraosBle.AutoBrightnessConfig.Builder, mentraos.ble.MentraosBle.AutoBrightnessConfigOrBuilder> 
-          internalGetAutoBrightnessFieldBuilder() {
+          getAutoBrightnessFieldBuilder() {
         if (autoBrightnessBuilder_ == null) {
           if (!(payloadCase_ == 38)) {
             payload_ = mentraos.ble.MentraosBle.AutoBrightnessConfig.getDefaultInstance();
           }
-          autoBrightnessBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          autoBrightnessBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.AutoBrightnessConfig, mentraos.ble.MentraosBle.AutoBrightnessConfig.Builder, mentraos.ble.MentraosBle.AutoBrightnessConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.AutoBrightnessConfig) payload_,
                   getParentForChildren(),
@@ -7848,7 +7867,7 @@ public mentraos.ble.MentraosBle.AutoBrightnessConfigOrBuilder getAutoBrightnessO
         return autoBrightnessBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.AutoBrightnessMultiplier, mentraos.ble.MentraosBle.AutoBrightnessMultiplier.Builder, mentraos.ble.MentraosBle.AutoBrightnessMultiplierOrBuilder> autoBrightnessMultBuilder_;
       /**
        * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39;
@@ -7952,7 +7971,7 @@ public Builder clearAutoBrightnessMult() {
        * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39;
        */
       public mentraos.ble.MentraosBle.AutoBrightnessMultiplier.Builder getAutoBrightnessMultBuilder() {
-        return internalGetAutoBrightnessMultFieldBuilder().getBuilder();
+        return getAutoBrightnessMultFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39;
@@ -7971,14 +7990,14 @@ public mentraos.ble.MentraosBle.AutoBrightnessMultiplierOrBuilder getAutoBrightn
       /**
        * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.AutoBrightnessMultiplier, mentraos.ble.MentraosBle.AutoBrightnessMultiplier.Builder, mentraos.ble.MentraosBle.AutoBrightnessMultiplierOrBuilder> 
-          internalGetAutoBrightnessMultFieldBuilder() {
+          getAutoBrightnessMultFieldBuilder() {
         if (autoBrightnessMultBuilder_ == null) {
           if (!(payloadCase_ == 39)) {
             payload_ = mentraos.ble.MentraosBle.AutoBrightnessMultiplier.getDefaultInstance();
           }
-          autoBrightnessMultBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          autoBrightnessMultBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.AutoBrightnessMultiplier, mentraos.ble.MentraosBle.AutoBrightnessMultiplier.Builder, mentraos.ble.MentraosBle.AutoBrightnessMultiplierOrBuilder>(
                   (mentraos.ble.MentraosBle.AutoBrightnessMultiplier) payload_,
                   getParentForChildren(),
@@ -7990,7 +8009,7 @@ public mentraos.ble.MentraosBle.AutoBrightnessMultiplierOrBuilder getAutoBrightn
         return autoBrightnessMultBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayDistanceConfig, mentraos.ble.MentraosBle.DisplayDistanceConfig.Builder, mentraos.ble.MentraosBle.DisplayDistanceConfigOrBuilder> displayDistanceBuilder_;
       /**
        * .mentraos.ble.DisplayDistanceConfig display_distance = 44;
@@ -8094,7 +8113,7 @@ public Builder clearDisplayDistance() {
        * .mentraos.ble.DisplayDistanceConfig display_distance = 44;
        */
       public mentraos.ble.MentraosBle.DisplayDistanceConfig.Builder getDisplayDistanceBuilder() {
-        return internalGetDisplayDistanceFieldBuilder().getBuilder();
+        return getDisplayDistanceFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DisplayDistanceConfig display_distance = 44;
@@ -8113,14 +8132,14 @@ public mentraos.ble.MentraosBle.DisplayDistanceConfigOrBuilder getDisplayDistanc
       /**
        * .mentraos.ble.DisplayDistanceConfig display_distance = 44;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayDistanceConfig, mentraos.ble.MentraosBle.DisplayDistanceConfig.Builder, mentraos.ble.MentraosBle.DisplayDistanceConfigOrBuilder> 
-          internalGetDisplayDistanceFieldBuilder() {
+          getDisplayDistanceFieldBuilder() {
         if (displayDistanceBuilder_ == null) {
           if (!(payloadCase_ == 44)) {
             payload_ = mentraos.ble.MentraosBle.DisplayDistanceConfig.getDefaultInstance();
           }
-          displayDistanceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          displayDistanceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayDistanceConfig, mentraos.ble.MentraosBle.DisplayDistanceConfig.Builder, mentraos.ble.MentraosBle.DisplayDistanceConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayDistanceConfig) payload_,
                   getParentForChildren(),
@@ -8132,7 +8151,7 @@ public mentraos.ble.MentraosBle.DisplayDistanceConfigOrBuilder getDisplayDistanc
         return displayDistanceBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayHeightConfig, mentraos.ble.MentraosBle.DisplayHeightConfig.Builder, mentraos.ble.MentraosBle.DisplayHeightConfigOrBuilder> displayHeightBuilder_;
       /**
        * .mentraos.ble.DisplayHeightConfig display_height = 45;
@@ -8236,7 +8255,7 @@ public Builder clearDisplayHeight() {
        * .mentraos.ble.DisplayHeightConfig display_height = 45;
        */
       public mentraos.ble.MentraosBle.DisplayHeightConfig.Builder getDisplayHeightBuilder() {
-        return internalGetDisplayHeightFieldBuilder().getBuilder();
+        return getDisplayHeightFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DisplayHeightConfig display_height = 45;
@@ -8255,14 +8274,14 @@ public mentraos.ble.MentraosBle.DisplayHeightConfigOrBuilder getDisplayHeightOrB
       /**
        * .mentraos.ble.DisplayHeightConfig display_height = 45;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayHeightConfig, mentraos.ble.MentraosBle.DisplayHeightConfig.Builder, mentraos.ble.MentraosBle.DisplayHeightConfigOrBuilder> 
-          internalGetDisplayHeightFieldBuilder() {
+          getDisplayHeightFieldBuilder() {
         if (displayHeightBuilder_ == null) {
           if (!(payloadCase_ == 45)) {
             payload_ = mentraos.ble.MentraosBle.DisplayHeightConfig.getDefaultInstance();
           }
-          displayHeightBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          displayHeightBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayHeightConfig, mentraos.ble.MentraosBle.DisplayHeightConfig.Builder, mentraos.ble.MentraosBle.DisplayHeightConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayHeightConfig) payload_,
                   getParentForChildren(),
@@ -8274,7 +8293,7 @@ public mentraos.ble.MentraosBle.DisplayHeightConfigOrBuilder getDisplayHeightOrB
         return displayHeightBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ClearDisplay, mentraos.ble.MentraosBle.ClearDisplay.Builder, mentraos.ble.MentraosBle.ClearDisplayOrBuilder> clearDisplayBuilder_;
       /**
        * .mentraos.ble.ClearDisplay clear_display = 46;
@@ -8378,7 +8397,7 @@ public Builder clearClearDisplay() {
        * .mentraos.ble.ClearDisplay clear_display = 46;
        */
       public mentraos.ble.MentraosBle.ClearDisplay.Builder getClearDisplayBuilder() {
-        return internalGetClearDisplayFieldBuilder().getBuilder();
+        return getClearDisplayFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.ClearDisplay clear_display = 46;
@@ -8397,14 +8416,14 @@ public mentraos.ble.MentraosBle.ClearDisplayOrBuilder getClearDisplayOrBuilder()
       /**
        * .mentraos.ble.ClearDisplay clear_display = 46;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ClearDisplay, mentraos.ble.MentraosBle.ClearDisplay.Builder, mentraos.ble.MentraosBle.ClearDisplayOrBuilder> 
-          internalGetClearDisplayFieldBuilder() {
+          getClearDisplayFieldBuilder() {
         if (clearDisplayBuilder_ == null) {
           if (!(payloadCase_ == 46)) {
             payload_ = mentraos.ble.MentraosBle.ClearDisplay.getDefaultInstance();
           }
-          clearDisplayBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          clearDisplayBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ClearDisplay, mentraos.ble.MentraosBle.ClearDisplay.Builder, mentraos.ble.MentraosBle.ClearDisplayOrBuilder>(
                   (mentraos.ble.MentraosBle.ClearDisplay) payload_,
                   getParentForChildren(),
@@ -8416,7 +8435,7 @@ public mentraos.ble.MentraosBle.ClearDisplayOrBuilder getClearDisplayOrBuilder()
         return clearDisplayBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayQueueStatus, mentraos.ble.MentraosBle.DisplayQueueStatus.Builder, mentraos.ble.MentraosBle.DisplayQueueStatusOrBuilder> queueStatusRequestBuilder_;
       /**
        * 
@@ -8548,7 +8567,7 @@ public Builder clearQueueStatusRequest() {
        * .mentraos.ble.DisplayQueueStatus queue_status_request = 51;
        */
       public mentraos.ble.MentraosBle.DisplayQueueStatus.Builder getQueueStatusRequestBuilder() {
-        return internalGetQueueStatusRequestFieldBuilder().getBuilder();
+        return getQueueStatusRequestFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -8575,14 +8594,14 @@ public mentraos.ble.MentraosBle.DisplayQueueStatusOrBuilder getQueueStatusReques
        *
        * .mentraos.ble.DisplayQueueStatus queue_status_request = 51;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayQueueStatus, mentraos.ble.MentraosBle.DisplayQueueStatus.Builder, mentraos.ble.MentraosBle.DisplayQueueStatusOrBuilder> 
-          internalGetQueueStatusRequestFieldBuilder() {
+          getQueueStatusRequestFieldBuilder() {
         if (queueStatusRequestBuilder_ == null) {
           if (!(payloadCase_ == 51)) {
             payload_ = mentraos.ble.MentraosBle.DisplayQueueStatus.getDefaultInstance();
           }
-          queueStatusRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          queueStatusRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayQueueStatus, mentraos.ble.MentraosBle.DisplayQueueStatus.Builder, mentraos.ble.MentraosBle.DisplayQueueStatusOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayQueueStatus) payload_,
                   getParentForChildren(),
@@ -8594,7 +8613,7 @@ public mentraos.ble.MentraosBle.DisplayQueueStatusOrBuilder getQueueStatusReques
         return queueStatusRequestBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.CacheDashboard, mentraos.ble.MentraosBle.CacheDashboard.Builder, mentraos.ble.MentraosBle.CacheDashboardOrBuilder> cacheDashboardBuilder_;
       /**
        * 
@@ -8726,7 +8745,7 @@ public Builder clearCacheDashboard() {
        * .mentraos.ble.CacheDashboard cache_dashboard = 47;
        */
       public mentraos.ble.MentraosBle.CacheDashboard.Builder getCacheDashboardBuilder() {
-        return internalGetCacheDashboardFieldBuilder().getBuilder();
+        return getCacheDashboardFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -8753,14 +8772,14 @@ public mentraos.ble.MentraosBle.CacheDashboardOrBuilder getCacheDashboardOrBuild
        *
        * .mentraos.ble.CacheDashboard cache_dashboard = 47;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.CacheDashboard, mentraos.ble.MentraosBle.CacheDashboard.Builder, mentraos.ble.MentraosBle.CacheDashboardOrBuilder> 
-          internalGetCacheDashboardFieldBuilder() {
+          getCacheDashboardFieldBuilder() {
         if (cacheDashboardBuilder_ == null) {
           if (!(payloadCase_ == 47)) {
             payload_ = mentraos.ble.MentraosBle.CacheDashboard.getDefaultInstance();
           }
-          cacheDashboardBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          cacheDashboardBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.CacheDashboard, mentraos.ble.MentraosBle.CacheDashboard.Builder, mentraos.ble.MentraosBle.CacheDashboardOrBuilder>(
                   (mentraos.ble.MentraosBle.CacheDashboard) payload_,
                   getParentForChildren(),
@@ -8772,7 +8791,7 @@ public mentraos.ble.MentraosBle.CacheDashboardOrBuilder getCacheDashboardOrBuild
         return cacheDashboardBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ClearDashboard, mentraos.ble.MentraosBle.ClearDashboard.Builder, mentraos.ble.MentraosBle.ClearDashboardOrBuilder> clearDashboardBuilder_;
       /**
        * .mentraos.ble.ClearDashboard clear_dashboard = 48;
@@ -8876,7 +8895,7 @@ public Builder clearClearDashboard() {
        * .mentraos.ble.ClearDashboard clear_dashboard = 48;
        */
       public mentraos.ble.MentraosBle.ClearDashboard.Builder getClearDashboardBuilder() {
-        return internalGetClearDashboardFieldBuilder().getBuilder();
+        return getClearDashboardFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.ClearDashboard clear_dashboard = 48;
@@ -8895,14 +8914,14 @@ public mentraos.ble.MentraosBle.ClearDashboardOrBuilder getClearDashboardOrBuild
       /**
        * .mentraos.ble.ClearDashboard clear_dashboard = 48;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ClearDashboard, mentraos.ble.MentraosBle.ClearDashboard.Builder, mentraos.ble.MentraosBle.ClearDashboardOrBuilder> 
-          internalGetClearDashboardFieldBuilder() {
+          getClearDashboardFieldBuilder() {
         if (clearDashboardBuilder_ == null) {
           if (!(payloadCase_ == 48)) {
             payload_ = mentraos.ble.MentraosBle.ClearDashboard.getDefaultInstance();
           }
-          clearDashboardBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          clearDashboardBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ClearDashboard, mentraos.ble.MentraosBle.ClearDashboard.Builder, mentraos.ble.MentraosBle.ClearDashboardOrBuilder>(
                   (mentraos.ble.MentraosBle.ClearDashboard) payload_,
                   getParentForChildren(),
@@ -8914,7 +8933,7 @@ public mentraos.ble.MentraosBle.ClearDashboardOrBuilder getClearDashboardOrBuild
         return clearDashboardBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ConfigureDashboardTrigger, mentraos.ble.MentraosBle.ConfigureDashboardTrigger.Builder, mentraos.ble.MentraosBle.ConfigureDashboardTriggerOrBuilder> dashboardTriggerBuilder_;
       /**
        * .mentraos.ble.ConfigureDashboardTrigger dashboard_trigger = 49;
@@ -9018,7 +9037,7 @@ public Builder clearDashboardTrigger() {
        * .mentraos.ble.ConfigureDashboardTrigger dashboard_trigger = 49;
        */
       public mentraos.ble.MentraosBle.ConfigureDashboardTrigger.Builder getDashboardTriggerBuilder() {
-        return internalGetDashboardTriggerFieldBuilder().getBuilder();
+        return getDashboardTriggerFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.ConfigureDashboardTrigger dashboard_trigger = 49;
@@ -9037,14 +9056,14 @@ public mentraos.ble.MentraosBle.ConfigureDashboardTriggerOrBuilder getDashboardT
       /**
        * .mentraos.ble.ConfigureDashboardTrigger dashboard_trigger = 49;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ConfigureDashboardTrigger, mentraos.ble.MentraosBle.ConfigureDashboardTrigger.Builder, mentraos.ble.MentraosBle.ConfigureDashboardTriggerOrBuilder> 
-          internalGetDashboardTriggerFieldBuilder() {
+          getDashboardTriggerFieldBuilder() {
         if (dashboardTriggerBuilder_ == null) {
           if (!(payloadCase_ == 49)) {
             payload_ = mentraos.ble.MentraosBle.ConfigureDashboardTrigger.getDefaultInstance();
           }
-          dashboardTriggerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          dashboardTriggerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ConfigureDashboardTrigger, mentraos.ble.MentraosBle.ConfigureDashboardTrigger.Builder, mentraos.ble.MentraosBle.ConfigureDashboardTriggerOrBuilder>(
                   (mentraos.ble.MentraosBle.ConfigureDashboardTrigger) payload_,
                   getParentForChildren(),
@@ -9056,7 +9075,7 @@ public mentraos.ble.MentraosBle.ConfigureDashboardTriggerOrBuilder getDashboardT
         return dashboardTriggerBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImuEnabledConfig, mentraos.ble.MentraosBle.ImuEnabledConfig.Builder, mentraos.ble.MentraosBle.ImuEnabledConfigOrBuilder> imuEnabledBuilder_;
       /**
        * 
@@ -9188,7 +9207,7 @@ public Builder clearImuEnabled() {
        * .mentraos.ble.ImuEnabledConfig imu_enabled = 55;
        */
       public mentraos.ble.MentraosBle.ImuEnabledConfig.Builder getImuEnabledBuilder() {
-        return internalGetImuEnabledFieldBuilder().getBuilder();
+        return getImuEnabledFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -9215,14 +9234,14 @@ public mentraos.ble.MentraosBle.ImuEnabledConfigOrBuilder getImuEnabledOrBuilder
        *
        * .mentraos.ble.ImuEnabledConfig imu_enabled = 55;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImuEnabledConfig, mentraos.ble.MentraosBle.ImuEnabledConfig.Builder, mentraos.ble.MentraosBle.ImuEnabledConfigOrBuilder> 
-          internalGetImuEnabledFieldBuilder() {
+          getImuEnabledFieldBuilder() {
         if (imuEnabledBuilder_ == null) {
           if (!(payloadCase_ == 55)) {
             payload_ = mentraos.ble.MentraosBle.ImuEnabledConfig.getDefaultInstance();
           }
-          imuEnabledBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          imuEnabledBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ImuEnabledConfig, mentraos.ble.MentraosBle.ImuEnabledConfig.Builder, mentraos.ble.MentraosBle.ImuEnabledConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.ImuEnabledConfig) payload_,
                   getParentForChildren(),
@@ -9234,7 +9253,7 @@ public mentraos.ble.MentraosBle.ImuEnabledConfigOrBuilder getImuEnabledOrBuilder
         return imuEnabledBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImuSingleRequest, mentraos.ble.MentraosBle.ImuSingleRequest.Builder, mentraos.ble.MentraosBle.ImuSingleRequestOrBuilder> imuSingleBuilder_;
       /**
        * .mentraos.ble.ImuSingleRequest imu_single = 56;
@@ -9338,7 +9357,7 @@ public Builder clearImuSingle() {
        * .mentraos.ble.ImuSingleRequest imu_single = 56;
        */
       public mentraos.ble.MentraosBle.ImuSingleRequest.Builder getImuSingleBuilder() {
-        return internalGetImuSingleFieldBuilder().getBuilder();
+        return getImuSingleFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.ImuSingleRequest imu_single = 56;
@@ -9357,14 +9376,14 @@ public mentraos.ble.MentraosBle.ImuSingleRequestOrBuilder getImuSingleOrBuilder(
       /**
        * .mentraos.ble.ImuSingleRequest imu_single = 56;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImuSingleRequest, mentraos.ble.MentraosBle.ImuSingleRequest.Builder, mentraos.ble.MentraosBle.ImuSingleRequestOrBuilder> 
-          internalGetImuSingleFieldBuilder() {
+          getImuSingleFieldBuilder() {
         if (imuSingleBuilder_ == null) {
           if (!(payloadCase_ == 56)) {
             payload_ = mentraos.ble.MentraosBle.ImuSingleRequest.getDefaultInstance();
           }
-          imuSingleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          imuSingleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ImuSingleRequest, mentraos.ble.MentraosBle.ImuSingleRequest.Builder, mentraos.ble.MentraosBle.ImuSingleRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.ImuSingleRequest) payload_,
                   getParentForChildren(),
@@ -9376,7 +9395,7 @@ public mentraos.ble.MentraosBle.ImuSingleRequestOrBuilder getImuSingleOrBuilder(
         return imuSingleBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImuStreamConfig, mentraos.ble.MentraosBle.ImuStreamConfig.Builder, mentraos.ble.MentraosBle.ImuStreamConfigOrBuilder> imuStreamBuilder_;
       /**
        * .mentraos.ble.ImuStreamConfig imu_stream = 57;
@@ -9480,7 +9499,7 @@ public Builder clearImuStream() {
        * .mentraos.ble.ImuStreamConfig imu_stream = 57;
        */
       public mentraos.ble.MentraosBle.ImuStreamConfig.Builder getImuStreamBuilder() {
-        return internalGetImuStreamFieldBuilder().getBuilder();
+        return getImuStreamFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.ImuStreamConfig imu_stream = 57;
@@ -9499,14 +9518,14 @@ public mentraos.ble.MentraosBle.ImuStreamConfigOrBuilder getImuStreamOrBuilder()
       /**
        * .mentraos.ble.ImuStreamConfig imu_stream = 57;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImuStreamConfig, mentraos.ble.MentraosBle.ImuStreamConfig.Builder, mentraos.ble.MentraosBle.ImuStreamConfigOrBuilder> 
-          internalGetImuStreamFieldBuilder() {
+          getImuStreamFieldBuilder() {
         if (imuStreamBuilder_ == null) {
           if (!(payloadCase_ == 57)) {
             payload_ = mentraos.ble.MentraosBle.ImuStreamConfig.getDefaultInstance();
           }
-          imuStreamBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          imuStreamBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ImuStreamConfig, mentraos.ble.MentraosBle.ImuStreamConfig.Builder, mentraos.ble.MentraosBle.ImuStreamConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.ImuStreamConfig) payload_,
                   getParentForChildren(),
@@ -9518,7 +9537,7 @@ public mentraos.ble.MentraosBle.ImuStreamConfigOrBuilder getImuStreamOrBuilder()
         return imuStreamBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadGestureConfig, mentraos.ble.MentraosBle.HeadGestureConfig.Builder, mentraos.ble.MentraosBle.HeadGestureConfigOrBuilder> headGestureBuilder_;
       /**
        * .mentraos.ble.HeadGestureConfig head_gesture = 58;
@@ -9622,7 +9641,7 @@ public Builder clearHeadGesture() {
        * .mentraos.ble.HeadGestureConfig head_gesture = 58;
        */
       public mentraos.ble.MentraosBle.HeadGestureConfig.Builder getHeadGestureBuilder() {
-        return internalGetHeadGestureFieldBuilder().getBuilder();
+        return getHeadGestureFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.HeadGestureConfig head_gesture = 58;
@@ -9641,14 +9660,14 @@ public mentraos.ble.MentraosBle.HeadGestureConfigOrBuilder getHeadGestureOrBuild
       /**
        * .mentraos.ble.HeadGestureConfig head_gesture = 58;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadGestureConfig, mentraos.ble.MentraosBle.HeadGestureConfig.Builder, mentraos.ble.MentraosBle.HeadGestureConfigOrBuilder> 
-          internalGetHeadGestureFieldBuilder() {
+          getHeadGestureFieldBuilder() {
         if (headGestureBuilder_ == null) {
           if (!(payloadCase_ == 58)) {
             payload_ = mentraos.ble.MentraosBle.HeadGestureConfig.getDefaultInstance();
           }
-          headGestureBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          headGestureBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.HeadGestureConfig, mentraos.ble.MentraosBle.HeadGestureConfig.Builder, mentraos.ble.MentraosBle.HeadGestureConfigOrBuilder>(
                   (mentraos.ble.MentraosBle.HeadGestureConfig) payload_,
                   getParentForChildren(),
@@ -9660,7 +9679,7 @@ public mentraos.ble.MentraosBle.HeadGestureConfigOrBuilder getHeadGestureOrBuild
         return headGestureBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.RestartRequest, mentraos.ble.MentraosBle.RestartRequest.Builder, mentraos.ble.MentraosBle.RestartRequestOrBuilder> restartBuilder_;
       /**
        * 
@@ -9792,7 +9811,7 @@ public Builder clearRestart() {
        * .mentraos.ble.RestartRequest restart = 60;
        */
       public mentraos.ble.MentraosBle.RestartRequest.Builder getRestartBuilder() {
-        return internalGetRestartFieldBuilder().getBuilder();
+        return getRestartFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -9819,14 +9838,14 @@ public mentraos.ble.MentraosBle.RestartRequestOrBuilder getRestartOrBuilder() {
        *
        * .mentraos.ble.RestartRequest restart = 60;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.RestartRequest, mentraos.ble.MentraosBle.RestartRequest.Builder, mentraos.ble.MentraosBle.RestartRequestOrBuilder> 
-          internalGetRestartFieldBuilder() {
+          getRestartFieldBuilder() {
         if (restartBuilder_ == null) {
           if (!(payloadCase_ == 60)) {
             payload_ = mentraos.ble.MentraosBle.RestartRequest.getDefaultInstance();
           }
-          restartBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          restartBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.RestartRequest, mentraos.ble.MentraosBle.RestartRequest.Builder, mentraos.ble.MentraosBle.RestartRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.RestartRequest) payload_,
                   getParentForChildren(),
@@ -9838,7 +9857,7 @@ public mentraos.ble.MentraosBle.RestartRequestOrBuilder getRestartOrBuilder() {
         return restartBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.FactoryResetRequest, mentraos.ble.MentraosBle.FactoryResetRequest.Builder, mentraos.ble.MentraosBle.FactoryResetRequestOrBuilder> factoryResetBuilder_;
       /**
        * .mentraos.ble.FactoryResetRequest factory_reset = 61;
@@ -9942,7 +9961,7 @@ public Builder clearFactoryReset() {
        * .mentraos.ble.FactoryResetRequest factory_reset = 61;
        */
       public mentraos.ble.MentraosBle.FactoryResetRequest.Builder getFactoryResetBuilder() {
-        return internalGetFactoryResetFieldBuilder().getBuilder();
+        return getFactoryResetFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.FactoryResetRequest factory_reset = 61;
@@ -9961,14 +9980,14 @@ public mentraos.ble.MentraosBle.FactoryResetRequestOrBuilder getFactoryResetOrBu
       /**
        * .mentraos.ble.FactoryResetRequest factory_reset = 61;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.FactoryResetRequest, mentraos.ble.MentraosBle.FactoryResetRequest.Builder, mentraos.ble.MentraosBle.FactoryResetRequestOrBuilder> 
-          internalGetFactoryResetFieldBuilder() {
+          getFactoryResetFieldBuilder() {
         if (factoryResetBuilder_ == null) {
           if (!(payloadCase_ == 61)) {
             payload_ = mentraos.ble.MentraosBle.FactoryResetRequest.getDefaultInstance();
           }
-          factoryResetBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          factoryResetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.FactoryResetRequest, mentraos.ble.MentraosBle.FactoryResetRequest.Builder, mentraos.ble.MentraosBle.FactoryResetRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.FactoryResetRequest) payload_,
                   getParentForChildren(),
@@ -9980,7 +9999,7 @@ public mentraos.ble.MentraosBle.FactoryResetRequestOrBuilder getFactoryResetOrBu
         return factoryResetBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VersionRequest, mentraos.ble.MentraosBle.VersionRequest.Builder, mentraos.ble.MentraosBle.VersionRequestOrBuilder> versionRequestBuilder_;
       /**
        * 
@@ -10112,7 +10131,7 @@ public Builder clearVersionRequest() {
        * .mentraos.ble.VersionRequest version_request = 70;
        */
       public mentraos.ble.MentraosBle.VersionRequest.Builder getVersionRequestBuilder() {
-        return internalGetVersionRequestFieldBuilder().getBuilder();
+        return getVersionRequestFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -10139,14 +10158,14 @@ public mentraos.ble.MentraosBle.VersionRequestOrBuilder getVersionRequestOrBuild
        *
        * .mentraos.ble.VersionRequest version_request = 70;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VersionRequest, mentraos.ble.MentraosBle.VersionRequest.Builder, mentraos.ble.MentraosBle.VersionRequestOrBuilder> 
-          internalGetVersionRequestFieldBuilder() {
+          getVersionRequestFieldBuilder() {
         if (versionRequestBuilder_ == null) {
           if (!(payloadCase_ == 70)) {
             payload_ = mentraos.ble.MentraosBle.VersionRequest.getDefaultInstance();
           }
-          versionRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          versionRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.VersionRequest, mentraos.ble.MentraosBle.VersionRequest.Builder, mentraos.ble.MentraosBle.VersionRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.VersionRequest) payload_,
                   getParentForChildren(),
@@ -10157,6 +10176,18 @@ public mentraos.ble.MentraosBle.VersionRequestOrBuilder getVersionRequestOrBuild
         onChanged();
         return versionRequestBuilder_;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.PhoneToGlasses)
     }
@@ -10586,33 +10617,31 @@ public interface GlassesToPhoneOrBuilder extends
    * Protobuf type {@code mentraos.ble.GlassesToPhone}
    */
   public static final class GlassesToPhone extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.GlassesToPhone)
       GlassesToPhoneOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        GlassesToPhone.class.getName());
-    }
     // Use GlassesToPhone.newBuilder() to construct.
-    private GlassesToPhone(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private GlassesToPhone(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private GlassesToPhone() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new GlassesToPhone();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_GlassesToPhone_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_GlassesToPhone_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -11678,20 +11707,20 @@ public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom(
     }
     public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.GlassesToPhone parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -11699,20 +11728,20 @@ public static mentraos.ble.MentraosBle.GlassesToPhone parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -11732,7 +11761,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -11744,7 +11773,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.GlassesToPhone}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.GlassesToPhone)
         mentraos.ble.MentraosBle.GlassesToPhoneOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -11753,7 +11782,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_GlassesToPhone_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -11766,7 +11795,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -11936,6 +11965,38 @@ private void buildPartialOneofs(mentraos.ble.MentraosBle.GlassesToPhone result)
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.GlassesToPhone) {
@@ -12049,119 +12110,119 @@ public Builder mergeFrom(
                 break;
               case 82: {
                 input.readMessage(
-                    internalGetBatteryStatusFieldBuilder().getBuilder(),
+                    getBatteryStatusFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 10;
                 break;
               } // case 82
               case 90: {
                 input.readMessage(
-                    internalGetChargingStateFieldBuilder().getBuilder(),
+                    getChargingStateFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 11;
                 break;
               } // case 90
               case 98: {
                 input.readMessage(
-                    internalGetDeviceInfoFieldBuilder().getBuilder(),
+                    getDeviceInfoFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 12;
                 break;
               } // case 98
               case 106: {
                 input.readMessage(
-                    internalGetHeadPositionFieldBuilder().getBuilder(),
+                    getHeadPositionFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 13;
                 break;
               } // case 106
               case 114: {
                 input.readMessage(
-                    internalGetHeadUpAngleSetFieldBuilder().getBuilder(),
+                    getHeadUpAngleSetFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 14;
                 break;
               } // case 114
               case 122: {
                 input.readMessage(
-                    internalGetPingFieldBuilder().getBuilder(),
+                    getPingFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 15;
                 break;
               } // case 122
               case 162: {
                 input.readMessage(
-                    internalGetVadEventFieldBuilder().getBuilder(),
+                    getVadEventFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 20;
                 break;
               } // case 162
               case 170: {
                 input.readMessage(
-                    internalGetVadEnabledSetFieldBuilder().getBuilder(),
+                    getVadEnabledSetFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 21;
                 break;
               } // case 170
               case 178: {
                 input.readMessage(
-                    internalGetVadConfiguredFieldBuilder().getBuilder(),
+                    getVadConfiguredFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 22;
                 break;
               } // case 178
               case 186: {
                 input.readMessage(
-                    internalGetVadStatusFieldBuilder().getBuilder(),
+                    getVadStatusFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 23;
                 break;
               } // case 186
               case 242: {
                 input.readMessage(
-                    internalGetImageTransferCompleteFieldBuilder().getBuilder(),
+                    getImageTransferCompleteFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 30;
                 break;
               } // case 242
               case 250: {
                 input.readMessage(
-                    internalGetDisplayQueueInfoFieldBuilder().getBuilder(),
+                    getDisplayQueueInfoFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 31;
                 break;
               } // case 250
               case 322: {
                 input.readMessage(
-                    internalGetImuDataFieldBuilder().getBuilder(),
+                    getImuDataFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 40;
                 break;
               } // case 322
               case 330: {
                 input.readMessage(
-                    internalGetButtonEventFieldBuilder().getBuilder(),
+                    getButtonEventFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 41;
                 break;
               } // case 330
               case 338: {
                 input.readMessage(
-                    internalGetHeadGestureFieldBuilder().getBuilder(),
+                    getHeadGestureFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 42;
                 break;
               } // case 338
               case 346: {
                 input.readMessage(
-                    internalGetDashboardShownFieldBuilder().getBuilder(),
+                    getDashboardShownFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 43;
                 break;
               } // case 346
               case 562: {
                 input.readMessage(
-                    internalGetVersionResponseFieldBuilder().getBuilder(),
+                    getVersionResponseFieldBuilder().getBuilder(),
                     extensionRegistry);
                 payloadCase_ = 70;
                 break;
@@ -12198,7 +12259,7 @@ public Builder clearPayload() {
 
       private int bitField0_;
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.BatteryStatus, mentraos.ble.MentraosBle.BatteryStatus.Builder, mentraos.ble.MentraosBle.BatteryStatusOrBuilder> batteryStatusBuilder_;
       /**
        * 
@@ -12330,7 +12391,7 @@ public Builder clearBatteryStatus() {
        * .mentraos.ble.BatteryStatus battery_status = 10;
        */
       public mentraos.ble.MentraosBle.BatteryStatus.Builder getBatteryStatusBuilder() {
-        return internalGetBatteryStatusFieldBuilder().getBuilder();
+        return getBatteryStatusFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -12357,14 +12418,14 @@ public mentraos.ble.MentraosBle.BatteryStatusOrBuilder getBatteryStatusOrBuilder
        *
        * .mentraos.ble.BatteryStatus battery_status = 10;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.BatteryStatus, mentraos.ble.MentraosBle.BatteryStatus.Builder, mentraos.ble.MentraosBle.BatteryStatusOrBuilder> 
-          internalGetBatteryStatusFieldBuilder() {
+          getBatteryStatusFieldBuilder() {
         if (batteryStatusBuilder_ == null) {
           if (!(payloadCase_ == 10)) {
             payload_ = mentraos.ble.MentraosBle.BatteryStatus.getDefaultInstance();
           }
-          batteryStatusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          batteryStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.BatteryStatus, mentraos.ble.MentraosBle.BatteryStatus.Builder, mentraos.ble.MentraosBle.BatteryStatusOrBuilder>(
                   (mentraos.ble.MentraosBle.BatteryStatus) payload_,
                   getParentForChildren(),
@@ -12376,7 +12437,7 @@ public mentraos.ble.MentraosBle.BatteryStatusOrBuilder getBatteryStatusOrBuilder
         return batteryStatusBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ChargingState, mentraos.ble.MentraosBle.ChargingState.Builder, mentraos.ble.MentraosBle.ChargingStateOrBuilder> chargingStateBuilder_;
       /**
        * .mentraos.ble.ChargingState charging_state = 11;
@@ -12480,7 +12541,7 @@ public Builder clearChargingState() {
        * .mentraos.ble.ChargingState charging_state = 11;
        */
       public mentraos.ble.MentraosBle.ChargingState.Builder getChargingStateBuilder() {
-        return internalGetChargingStateFieldBuilder().getBuilder();
+        return getChargingStateFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.ChargingState charging_state = 11;
@@ -12499,14 +12560,14 @@ public mentraos.ble.MentraosBle.ChargingStateOrBuilder getChargingStateOrBuilder
       /**
        * .mentraos.ble.ChargingState charging_state = 11;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ChargingState, mentraos.ble.MentraosBle.ChargingState.Builder, mentraos.ble.MentraosBle.ChargingStateOrBuilder> 
-          internalGetChargingStateFieldBuilder() {
+          getChargingStateFieldBuilder() {
         if (chargingStateBuilder_ == null) {
           if (!(payloadCase_ == 11)) {
             payload_ = mentraos.ble.MentraosBle.ChargingState.getDefaultInstance();
           }
-          chargingStateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          chargingStateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ChargingState, mentraos.ble.MentraosBle.ChargingState.Builder, mentraos.ble.MentraosBle.ChargingStateOrBuilder>(
                   (mentraos.ble.MentraosBle.ChargingState) payload_,
                   getParentForChildren(),
@@ -12518,7 +12579,7 @@ public mentraos.ble.MentraosBle.ChargingStateOrBuilder getChargingStateOrBuilder
         return chargingStateBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DeviceInfo, mentraos.ble.MentraosBle.DeviceInfo.Builder, mentraos.ble.MentraosBle.DeviceInfoOrBuilder> deviceInfoBuilder_;
       /**
        * .mentraos.ble.DeviceInfo device_info = 12;
@@ -12622,7 +12683,7 @@ public Builder clearDeviceInfo() {
        * .mentraos.ble.DeviceInfo device_info = 12;
        */
       public mentraos.ble.MentraosBle.DeviceInfo.Builder getDeviceInfoBuilder() {
-        return internalGetDeviceInfoFieldBuilder().getBuilder();
+        return getDeviceInfoFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DeviceInfo device_info = 12;
@@ -12641,14 +12702,14 @@ public mentraos.ble.MentraosBle.DeviceInfoOrBuilder getDeviceInfoOrBuilder() {
       /**
        * .mentraos.ble.DeviceInfo device_info = 12;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DeviceInfo, mentraos.ble.MentraosBle.DeviceInfo.Builder, mentraos.ble.MentraosBle.DeviceInfoOrBuilder> 
-          internalGetDeviceInfoFieldBuilder() {
+          getDeviceInfoFieldBuilder() {
         if (deviceInfoBuilder_ == null) {
           if (!(payloadCase_ == 12)) {
             payload_ = mentraos.ble.MentraosBle.DeviceInfo.getDefaultInstance();
           }
-          deviceInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          deviceInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DeviceInfo, mentraos.ble.MentraosBle.DeviceInfo.Builder, mentraos.ble.MentraosBle.DeviceInfoOrBuilder>(
                   (mentraos.ble.MentraosBle.DeviceInfo) payload_,
                   getParentForChildren(),
@@ -12660,7 +12721,7 @@ public mentraos.ble.MentraosBle.DeviceInfoOrBuilder getDeviceInfoOrBuilder() {
         return deviceInfoBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadPosition, mentraos.ble.MentraosBle.HeadPosition.Builder, mentraos.ble.MentraosBle.HeadPositionOrBuilder> headPositionBuilder_;
       /**
        * .mentraos.ble.HeadPosition head_position = 13;
@@ -12764,7 +12825,7 @@ public Builder clearHeadPosition() {
        * .mentraos.ble.HeadPosition head_position = 13;
        */
       public mentraos.ble.MentraosBle.HeadPosition.Builder getHeadPositionBuilder() {
-        return internalGetHeadPositionFieldBuilder().getBuilder();
+        return getHeadPositionFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.HeadPosition head_position = 13;
@@ -12783,14 +12844,14 @@ public mentraos.ble.MentraosBle.HeadPositionOrBuilder getHeadPositionOrBuilder()
       /**
        * .mentraos.ble.HeadPosition head_position = 13;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadPosition, mentraos.ble.MentraosBle.HeadPosition.Builder, mentraos.ble.MentraosBle.HeadPositionOrBuilder> 
-          internalGetHeadPositionFieldBuilder() {
+          getHeadPositionFieldBuilder() {
         if (headPositionBuilder_ == null) {
           if (!(payloadCase_ == 13)) {
             payload_ = mentraos.ble.MentraosBle.HeadPosition.getDefaultInstance();
           }
-          headPositionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          headPositionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.HeadPosition, mentraos.ble.MentraosBle.HeadPosition.Builder, mentraos.ble.MentraosBle.HeadPositionOrBuilder>(
                   (mentraos.ble.MentraosBle.HeadPosition) payload_,
                   getParentForChildren(),
@@ -12802,7 +12863,7 @@ public mentraos.ble.MentraosBle.HeadPositionOrBuilder getHeadPositionOrBuilder()
         return headPositionBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadUpAngleResponse, mentraos.ble.MentraosBle.HeadUpAngleResponse.Builder, mentraos.ble.MentraosBle.HeadUpAngleResponseOrBuilder> headUpAngleSetBuilder_;
       /**
        * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14;
@@ -12906,7 +12967,7 @@ public Builder clearHeadUpAngleSet() {
        * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14;
        */
       public mentraos.ble.MentraosBle.HeadUpAngleResponse.Builder getHeadUpAngleSetBuilder() {
-        return internalGetHeadUpAngleSetFieldBuilder().getBuilder();
+        return getHeadUpAngleSetFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14;
@@ -12925,14 +12986,14 @@ public mentraos.ble.MentraosBle.HeadUpAngleResponseOrBuilder getHeadUpAngleSetOr
       /**
        * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadUpAngleResponse, mentraos.ble.MentraosBle.HeadUpAngleResponse.Builder, mentraos.ble.MentraosBle.HeadUpAngleResponseOrBuilder> 
-          internalGetHeadUpAngleSetFieldBuilder() {
+          getHeadUpAngleSetFieldBuilder() {
         if (headUpAngleSetBuilder_ == null) {
           if (!(payloadCase_ == 14)) {
             payload_ = mentraos.ble.MentraosBle.HeadUpAngleResponse.getDefaultInstance();
           }
-          headUpAngleSetBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          headUpAngleSetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.HeadUpAngleResponse, mentraos.ble.MentraosBle.HeadUpAngleResponse.Builder, mentraos.ble.MentraosBle.HeadUpAngleResponseOrBuilder>(
                   (mentraos.ble.MentraosBle.HeadUpAngleResponse) payload_,
                   getParentForChildren(),
@@ -12944,7 +13005,7 @@ public mentraos.ble.MentraosBle.HeadUpAngleResponseOrBuilder getHeadUpAngleSetOr
         return headUpAngleSetBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.PingRequest, mentraos.ble.MentraosBle.PingRequest.Builder, mentraos.ble.MentraosBle.PingRequestOrBuilder> pingBuilder_;
       /**
        * .mentraos.ble.PingRequest ping = 15;
@@ -13048,7 +13109,7 @@ public Builder clearPing() {
        * .mentraos.ble.PingRequest ping = 15;
        */
       public mentraos.ble.MentraosBle.PingRequest.Builder getPingBuilder() {
-        return internalGetPingFieldBuilder().getBuilder();
+        return getPingFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.PingRequest ping = 15;
@@ -13067,14 +13128,14 @@ public mentraos.ble.MentraosBle.PingRequestOrBuilder getPingOrBuilder() {
       /**
        * .mentraos.ble.PingRequest ping = 15;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.PingRequest, mentraos.ble.MentraosBle.PingRequest.Builder, mentraos.ble.MentraosBle.PingRequestOrBuilder> 
-          internalGetPingFieldBuilder() {
+          getPingFieldBuilder() {
         if (pingBuilder_ == null) {
           if (!(payloadCase_ == 15)) {
             payload_ = mentraos.ble.MentraosBle.PingRequest.getDefaultInstance();
           }
-          pingBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          pingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.PingRequest, mentraos.ble.MentraosBle.PingRequest.Builder, mentraos.ble.MentraosBle.PingRequestOrBuilder>(
                   (mentraos.ble.MentraosBle.PingRequest) payload_,
                   getParentForChildren(),
@@ -13086,7 +13147,7 @@ public mentraos.ble.MentraosBle.PingRequestOrBuilder getPingOrBuilder() {
         return pingBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadEvent, mentraos.ble.MentraosBle.VadEvent.Builder, mentraos.ble.MentraosBle.VadEventOrBuilder> vadEventBuilder_;
       /**
        * 
@@ -13218,7 +13279,7 @@ public Builder clearVadEvent() {
        * .mentraos.ble.VadEvent vad_event = 20;
        */
       public mentraos.ble.MentraosBle.VadEvent.Builder getVadEventBuilder() {
-        return internalGetVadEventFieldBuilder().getBuilder();
+        return getVadEventFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -13245,14 +13306,14 @@ public mentraos.ble.MentraosBle.VadEventOrBuilder getVadEventOrBuilder() {
        *
        * .mentraos.ble.VadEvent vad_event = 20;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadEvent, mentraos.ble.MentraosBle.VadEvent.Builder, mentraos.ble.MentraosBle.VadEventOrBuilder> 
-          internalGetVadEventFieldBuilder() {
+          getVadEventFieldBuilder() {
         if (vadEventBuilder_ == null) {
           if (!(payloadCase_ == 20)) {
             payload_ = mentraos.ble.MentraosBle.VadEvent.getDefaultInstance();
           }
-          vadEventBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          vadEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.VadEvent, mentraos.ble.MentraosBle.VadEvent.Builder, mentraos.ble.MentraosBle.VadEventOrBuilder>(
                   (mentraos.ble.MentraosBle.VadEvent) payload_,
                   getParentForChildren(),
@@ -13264,7 +13325,7 @@ public mentraos.ble.MentraosBle.VadEventOrBuilder getVadEventOrBuilder() {
         return vadEventBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadEnabledResponse, mentraos.ble.MentraosBle.VadEnabledResponse.Builder, mentraos.ble.MentraosBle.VadEnabledResponseOrBuilder> vadEnabledSetBuilder_;
       /**
        * 
@@ -13396,7 +13457,7 @@ public Builder clearVadEnabledSet() {
        * .mentraos.ble.VadEnabledResponse vad_enabled_set = 21;
        */
       public mentraos.ble.MentraosBle.VadEnabledResponse.Builder getVadEnabledSetBuilder() {
-        return internalGetVadEnabledSetFieldBuilder().getBuilder();
+        return getVadEnabledSetFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -13423,14 +13484,14 @@ public mentraos.ble.MentraosBle.VadEnabledResponseOrBuilder getVadEnabledSetOrBu
        *
        * .mentraos.ble.VadEnabledResponse vad_enabled_set = 21;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadEnabledResponse, mentraos.ble.MentraosBle.VadEnabledResponse.Builder, mentraos.ble.MentraosBle.VadEnabledResponseOrBuilder> 
-          internalGetVadEnabledSetFieldBuilder() {
+          getVadEnabledSetFieldBuilder() {
         if (vadEnabledSetBuilder_ == null) {
           if (!(payloadCase_ == 21)) {
             payload_ = mentraos.ble.MentraosBle.VadEnabledResponse.getDefaultInstance();
           }
-          vadEnabledSetBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          vadEnabledSetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.VadEnabledResponse, mentraos.ble.MentraosBle.VadEnabledResponse.Builder, mentraos.ble.MentraosBle.VadEnabledResponseOrBuilder>(
                   (mentraos.ble.MentraosBle.VadEnabledResponse) payload_,
                   getParentForChildren(),
@@ -13442,7 +13503,7 @@ public mentraos.ble.MentraosBle.VadEnabledResponseOrBuilder getVadEnabledSetOrBu
         return vadEnabledSetBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadConfigResponse, mentraos.ble.MentraosBle.VadConfigResponse.Builder, mentraos.ble.MentraosBle.VadConfigResponseOrBuilder> vadConfiguredBuilder_;
       /**
        * 
@@ -13574,7 +13635,7 @@ public Builder clearVadConfigured() {
        * .mentraos.ble.VadConfigResponse vad_configured = 22;
        */
       public mentraos.ble.MentraosBle.VadConfigResponse.Builder getVadConfiguredBuilder() {
-        return internalGetVadConfiguredFieldBuilder().getBuilder();
+        return getVadConfiguredFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -13601,14 +13662,14 @@ public mentraos.ble.MentraosBle.VadConfigResponseOrBuilder getVadConfiguredOrBui
        *
        * .mentraos.ble.VadConfigResponse vad_configured = 22;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadConfigResponse, mentraos.ble.MentraosBle.VadConfigResponse.Builder, mentraos.ble.MentraosBle.VadConfigResponseOrBuilder> 
-          internalGetVadConfiguredFieldBuilder() {
+          getVadConfiguredFieldBuilder() {
         if (vadConfiguredBuilder_ == null) {
           if (!(payloadCase_ == 22)) {
             payload_ = mentraos.ble.MentraosBle.VadConfigResponse.getDefaultInstance();
           }
-          vadConfiguredBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          vadConfiguredBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.VadConfigResponse, mentraos.ble.MentraosBle.VadConfigResponse.Builder, mentraos.ble.MentraosBle.VadConfigResponseOrBuilder>(
                   (mentraos.ble.MentraosBle.VadConfigResponse) payload_,
                   getParentForChildren(),
@@ -13620,7 +13681,7 @@ public mentraos.ble.MentraosBle.VadConfigResponseOrBuilder getVadConfiguredOrBui
         return vadConfiguredBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadStatus, mentraos.ble.MentraosBle.VadStatus.Builder, mentraos.ble.MentraosBle.VadStatusOrBuilder> vadStatusBuilder_;
       /**
        * 
@@ -13752,7 +13813,7 @@ public Builder clearVadStatus() {
        * .mentraos.ble.VadStatus vad_status = 23;
        */
       public mentraos.ble.MentraosBle.VadStatus.Builder getVadStatusBuilder() {
-        return internalGetVadStatusFieldBuilder().getBuilder();
+        return getVadStatusFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -13779,14 +13840,14 @@ public mentraos.ble.MentraosBle.VadStatusOrBuilder getVadStatusOrBuilder() {
        *
        * .mentraos.ble.VadStatus vad_status = 23;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VadStatus, mentraos.ble.MentraosBle.VadStatus.Builder, mentraos.ble.MentraosBle.VadStatusOrBuilder> 
-          internalGetVadStatusFieldBuilder() {
+          getVadStatusFieldBuilder() {
         if (vadStatusBuilder_ == null) {
           if (!(payloadCase_ == 23)) {
             payload_ = mentraos.ble.MentraosBle.VadStatus.getDefaultInstance();
           }
-          vadStatusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          vadStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.VadStatus, mentraos.ble.MentraosBle.VadStatus.Builder, mentraos.ble.MentraosBle.VadStatusOrBuilder>(
                   (mentraos.ble.MentraosBle.VadStatus) payload_,
                   getParentForChildren(),
@@ -13798,7 +13859,7 @@ public mentraos.ble.MentraosBle.VadStatusOrBuilder getVadStatusOrBuilder() {
         return vadStatusBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImageTransferComplete, mentraos.ble.MentraosBle.ImageTransferComplete.Builder, mentraos.ble.MentraosBle.ImageTransferCompleteOrBuilder> imageTransferCompleteBuilder_;
       /**
        * 
@@ -13930,7 +13991,7 @@ public Builder clearImageTransferComplete() {
        * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30;
        */
       public mentraos.ble.MentraosBle.ImageTransferComplete.Builder getImageTransferCompleteBuilder() {
-        return internalGetImageTransferCompleteFieldBuilder().getBuilder();
+        return getImageTransferCompleteFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -13957,14 +14018,14 @@ public mentraos.ble.MentraosBle.ImageTransferCompleteOrBuilder getImageTransferC
        *
        * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImageTransferComplete, mentraos.ble.MentraosBle.ImageTransferComplete.Builder, mentraos.ble.MentraosBle.ImageTransferCompleteOrBuilder> 
-          internalGetImageTransferCompleteFieldBuilder() {
+          getImageTransferCompleteFieldBuilder() {
         if (imageTransferCompleteBuilder_ == null) {
           if (!(payloadCase_ == 30)) {
             payload_ = mentraos.ble.MentraosBle.ImageTransferComplete.getDefaultInstance();
           }
-          imageTransferCompleteBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          imageTransferCompleteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ImageTransferComplete, mentraos.ble.MentraosBle.ImageTransferComplete.Builder, mentraos.ble.MentraosBle.ImageTransferCompleteOrBuilder>(
                   (mentraos.ble.MentraosBle.ImageTransferComplete) payload_,
                   getParentForChildren(),
@@ -13976,7 +14037,7 @@ public mentraos.ble.MentraosBle.ImageTransferCompleteOrBuilder getImageTransferC
         return imageTransferCompleteBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayQueueInfo, mentraos.ble.MentraosBle.DisplayQueueInfo.Builder, mentraos.ble.MentraosBle.DisplayQueueInfoOrBuilder> displayQueueInfoBuilder_;
       /**
        * .mentraos.ble.DisplayQueueInfo display_queue_info = 31;
@@ -14080,7 +14141,7 @@ public Builder clearDisplayQueueInfo() {
        * .mentraos.ble.DisplayQueueInfo display_queue_info = 31;
        */
       public mentraos.ble.MentraosBle.DisplayQueueInfo.Builder getDisplayQueueInfoBuilder() {
-        return internalGetDisplayQueueInfoFieldBuilder().getBuilder();
+        return getDisplayQueueInfoFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DisplayQueueInfo display_queue_info = 31;
@@ -14099,14 +14160,14 @@ public mentraos.ble.MentraosBle.DisplayQueueInfoOrBuilder getDisplayQueueInfoOrB
       /**
        * .mentraos.ble.DisplayQueueInfo display_queue_info = 31;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayQueueInfo, mentraos.ble.MentraosBle.DisplayQueueInfo.Builder, mentraos.ble.MentraosBle.DisplayQueueInfoOrBuilder> 
-          internalGetDisplayQueueInfoFieldBuilder() {
+          getDisplayQueueInfoFieldBuilder() {
         if (displayQueueInfoBuilder_ == null) {
           if (!(payloadCase_ == 31)) {
             payload_ = mentraos.ble.MentraosBle.DisplayQueueInfo.getDefaultInstance();
           }
-          displayQueueInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          displayQueueInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayQueueInfo, mentraos.ble.MentraosBle.DisplayQueueInfo.Builder, mentraos.ble.MentraosBle.DisplayQueueInfoOrBuilder>(
                   (mentraos.ble.MentraosBle.DisplayQueueInfo) payload_,
                   getParentForChildren(),
@@ -14118,7 +14179,7 @@ public mentraos.ble.MentraosBle.DisplayQueueInfoOrBuilder getDisplayQueueInfoOrB
         return displayQueueInfoBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImuData, mentraos.ble.MentraosBle.ImuData.Builder, mentraos.ble.MentraosBle.ImuDataOrBuilder> imuDataBuilder_;
       /**
        * 
@@ -14250,7 +14311,7 @@ public Builder clearImuData() {
        * .mentraos.ble.ImuData imu_data = 40;
        */
       public mentraos.ble.MentraosBle.ImuData.Builder getImuDataBuilder() {
-        return internalGetImuDataFieldBuilder().getBuilder();
+        return getImuDataFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -14277,14 +14338,14 @@ public mentraos.ble.MentraosBle.ImuDataOrBuilder getImuDataOrBuilder() {
        *
        * .mentraos.ble.ImuData imu_data = 40;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ImuData, mentraos.ble.MentraosBle.ImuData.Builder, mentraos.ble.MentraosBle.ImuDataOrBuilder> 
-          internalGetImuDataFieldBuilder() {
+          getImuDataFieldBuilder() {
         if (imuDataBuilder_ == null) {
           if (!(payloadCase_ == 40)) {
             payload_ = mentraos.ble.MentraosBle.ImuData.getDefaultInstance();
           }
-          imuDataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          imuDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ImuData, mentraos.ble.MentraosBle.ImuData.Builder, mentraos.ble.MentraosBle.ImuDataOrBuilder>(
                   (mentraos.ble.MentraosBle.ImuData) payload_,
                   getParentForChildren(),
@@ -14296,7 +14357,7 @@ public mentraos.ble.MentraosBle.ImuDataOrBuilder getImuDataOrBuilder() {
         return imuDataBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ButtonEvent, mentraos.ble.MentraosBle.ButtonEvent.Builder, mentraos.ble.MentraosBle.ButtonEventOrBuilder> buttonEventBuilder_;
       /**
        * .mentraos.ble.ButtonEvent button_event = 41;
@@ -14400,7 +14461,7 @@ public Builder clearButtonEvent() {
        * .mentraos.ble.ButtonEvent button_event = 41;
        */
       public mentraos.ble.MentraosBle.ButtonEvent.Builder getButtonEventBuilder() {
-        return internalGetButtonEventFieldBuilder().getBuilder();
+        return getButtonEventFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.ButtonEvent button_event = 41;
@@ -14419,14 +14480,14 @@ public mentraos.ble.MentraosBle.ButtonEventOrBuilder getButtonEventOrBuilder() {
       /**
        * .mentraos.ble.ButtonEvent button_event = 41;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.ButtonEvent, mentraos.ble.MentraosBle.ButtonEvent.Builder, mentraos.ble.MentraosBle.ButtonEventOrBuilder> 
-          internalGetButtonEventFieldBuilder() {
+          getButtonEventFieldBuilder() {
         if (buttonEventBuilder_ == null) {
           if (!(payloadCase_ == 41)) {
             payload_ = mentraos.ble.MentraosBle.ButtonEvent.getDefaultInstance();
           }
-          buttonEventBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          buttonEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.ButtonEvent, mentraos.ble.MentraosBle.ButtonEvent.Builder, mentraos.ble.MentraosBle.ButtonEventOrBuilder>(
                   (mentraos.ble.MentraosBle.ButtonEvent) payload_,
                   getParentForChildren(),
@@ -14438,7 +14499,7 @@ public mentraos.ble.MentraosBle.ButtonEventOrBuilder getButtonEventOrBuilder() {
         return buttonEventBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadGesture, mentraos.ble.MentraosBle.HeadGesture.Builder, mentraos.ble.MentraosBle.HeadGestureOrBuilder> headGestureBuilder_;
       /**
        * .mentraos.ble.HeadGesture head_gesture = 42;
@@ -14542,7 +14603,7 @@ public Builder clearHeadGesture() {
        * .mentraos.ble.HeadGesture head_gesture = 42;
        */
       public mentraos.ble.MentraosBle.HeadGesture.Builder getHeadGestureBuilder() {
-        return internalGetHeadGestureFieldBuilder().getBuilder();
+        return getHeadGestureFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.HeadGesture head_gesture = 42;
@@ -14561,14 +14622,14 @@ public mentraos.ble.MentraosBle.HeadGestureOrBuilder getHeadGestureOrBuilder() {
       /**
        * .mentraos.ble.HeadGesture head_gesture = 42;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.HeadGesture, mentraos.ble.MentraosBle.HeadGesture.Builder, mentraos.ble.MentraosBle.HeadGestureOrBuilder> 
-          internalGetHeadGestureFieldBuilder() {
+          getHeadGestureFieldBuilder() {
         if (headGestureBuilder_ == null) {
           if (!(payloadCase_ == 42)) {
             payload_ = mentraos.ble.MentraosBle.HeadGesture.getDefaultInstance();
           }
-          headGestureBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          headGestureBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.HeadGesture, mentraos.ble.MentraosBle.HeadGesture.Builder, mentraos.ble.MentraosBle.HeadGestureOrBuilder>(
                   (mentraos.ble.MentraosBle.HeadGesture) payload_,
                   getParentForChildren(),
@@ -14580,7 +14641,7 @@ public mentraos.ble.MentraosBle.HeadGestureOrBuilder getHeadGestureOrBuilder() {
         return headGestureBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DashboardShown, mentraos.ble.MentraosBle.DashboardShown.Builder, mentraos.ble.MentraosBle.DashboardShownOrBuilder> dashboardShownBuilder_;
       /**
        * 
@@ -14712,7 +14773,7 @@ public Builder clearDashboardShown() {
        * .mentraos.ble.DashboardShown dashboard_shown = 43;
        */
       public mentraos.ble.MentraosBle.DashboardShown.Builder getDashboardShownBuilder() {
-        return internalGetDashboardShownFieldBuilder().getBuilder();
+        return getDashboardShownFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -14739,14 +14800,14 @@ public mentraos.ble.MentraosBle.DashboardShownOrBuilder getDashboardShownOrBuild
        *
        * .mentraos.ble.DashboardShown dashboard_shown = 43;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DashboardShown, mentraos.ble.MentraosBle.DashboardShown.Builder, mentraos.ble.MentraosBle.DashboardShownOrBuilder> 
-          internalGetDashboardShownFieldBuilder() {
+          getDashboardShownFieldBuilder() {
         if (dashboardShownBuilder_ == null) {
           if (!(payloadCase_ == 43)) {
             payload_ = mentraos.ble.MentraosBle.DashboardShown.getDefaultInstance();
           }
-          dashboardShownBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          dashboardShownBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DashboardShown, mentraos.ble.MentraosBle.DashboardShown.Builder, mentraos.ble.MentraosBle.DashboardShownOrBuilder>(
                   (mentraos.ble.MentraosBle.DashboardShown) payload_,
                   getParentForChildren(),
@@ -14758,7 +14819,7 @@ public mentraos.ble.MentraosBle.DashboardShownOrBuilder getDashboardShownOrBuild
         return dashboardShownBuilder_;
       }
 
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VersionResponse, mentraos.ble.MentraosBle.VersionResponse.Builder, mentraos.ble.MentraosBle.VersionResponseOrBuilder> versionResponseBuilder_;
       /**
        * 
@@ -14890,7 +14951,7 @@ public Builder clearVersionResponse() {
        * .mentraos.ble.VersionResponse version_response = 70;
        */
       public mentraos.ble.MentraosBle.VersionResponse.Builder getVersionResponseBuilder() {
-        return internalGetVersionResponseFieldBuilder().getBuilder();
+        return getVersionResponseFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -14917,14 +14978,14 @@ public mentraos.ble.MentraosBle.VersionResponseOrBuilder getVersionResponseOrBui
        *
        * .mentraos.ble.VersionResponse version_response = 70;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.VersionResponse, mentraos.ble.MentraosBle.VersionResponse.Builder, mentraos.ble.MentraosBle.VersionResponseOrBuilder> 
-          internalGetVersionResponseFieldBuilder() {
+          getVersionResponseFieldBuilder() {
         if (versionResponseBuilder_ == null) {
           if (!(payloadCase_ == 70)) {
             payload_ = mentraos.ble.MentraosBle.VersionResponse.getDefaultInstance();
           }
-          versionResponseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          versionResponseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.VersionResponse, mentraos.ble.MentraosBle.VersionResponse.Builder, mentraos.ble.MentraosBle.VersionResponseOrBuilder>(
                   (mentraos.ble.MentraosBle.VersionResponse) payload_,
                   getParentForChildren(),
@@ -14935,6 +14996,18 @@ public mentraos.ble.MentraosBle.VersionResponseOrBuilder getVersionResponseOrBui
         onChanged();
         return versionResponseBuilder_;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.GlassesToPhone)
     }
@@ -14995,33 +15068,31 @@ public interface DisconnectRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisconnectRequest}
    */
   public static final class DisconnectRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisconnectRequest)
       DisconnectRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisconnectRequest.class.getName());
-    }
     // Use DisconnectRequest.newBuilder() to construct.
-    private DisconnectRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisconnectRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisconnectRequest() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisconnectRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisconnectRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisconnectRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -15116,20 +15187,20 @@ public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisconnectRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -15137,20 +15208,20 @@ public static mentraos.ble.MentraosBle.DisconnectRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -15170,7 +15241,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -15178,7 +15249,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisconnectRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisconnectRequest)
         mentraos.ble.MentraosBle.DisconnectRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -15187,7 +15258,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisconnectRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -15200,7 +15271,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -15237,6 +15308,38 @@ public mentraos.ble.MentraosBle.DisconnectRequest buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisconnectRequest) {
@@ -15290,6 +15393,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisconnectRequest)
     }
@@ -15350,33 +15465,31 @@ public interface BatteryStateRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.BatteryStateRequest}
    */
   public static final class BatteryStateRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.BatteryStateRequest)
       BatteryStateRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        BatteryStateRequest.class.getName());
-    }
     // Use BatteryStateRequest.newBuilder() to construct.
-    private BatteryStateRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private BatteryStateRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private BatteryStateRequest() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new BatteryStateRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_BatteryStateRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_BatteryStateRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -15471,20 +15584,20 @@ public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.BatteryStateRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -15492,20 +15605,20 @@ public static mentraos.ble.MentraosBle.BatteryStateRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -15525,7 +15638,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -15533,7 +15646,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.BatteryStateRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.BatteryStateRequest)
         mentraos.ble.MentraosBle.BatteryStateRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -15542,7 +15655,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_BatteryStateRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -15555,7 +15668,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -15592,6 +15705,38 @@ public mentraos.ble.MentraosBle.BatteryStateRequest buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.BatteryStateRequest) {
@@ -15645,6 +15790,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.BatteryStateRequest)
     }
@@ -15721,33 +15878,31 @@ public interface BatteryStatusOrBuilder extends
    * Protobuf type {@code mentraos.ble.BatteryStatus}
    */
   public static final class BatteryStatus extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.BatteryStatus)
       BatteryStatusOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        BatteryStatus.class.getName());
-    }
     // Use BatteryStatus.newBuilder() to construct.
-    private BatteryStatus(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private BatteryStatus(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private BatteryStatus() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new BatteryStatus();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_BatteryStatus_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_BatteryStatus_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -15891,20 +16046,20 @@ public static mentraos.ble.MentraosBle.BatteryStatus parseFrom(
     }
     public static mentraos.ble.MentraosBle.BatteryStatus parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.BatteryStatus parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.BatteryStatus parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -15912,20 +16067,20 @@ public static mentraos.ble.MentraosBle.BatteryStatus parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.BatteryStatus parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.BatteryStatus parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -15945,7 +16100,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -15953,7 +16108,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.BatteryStatus}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.BatteryStatus)
         mentraos.ble.MentraosBle.BatteryStatusOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -15962,7 +16117,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_BatteryStatus_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -15975,7 +16130,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -16026,6 +16181,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.BatteryStatus result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.BatteryStatus) {
@@ -16172,6 +16359,18 @@ public Builder clearCharging() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.BatteryStatus)
     }
@@ -16243,34 +16442,32 @@ public interface ChargingStateOrBuilder extends
    * Protobuf type {@code mentraos.ble.ChargingState}
    */
   public static final class ChargingState extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ChargingState)
       ChargingStateOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ChargingState.class.getName());
-    }
     // Use ChargingState.newBuilder() to construct.
-    private ChargingState(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ChargingState(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ChargingState() {
       state_ = 0;
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ChargingState();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ChargingState_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ChargingState_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -16293,15 +16490,6 @@ public enum State
       UNRECOGNIZED(-1),
       ;
 
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          State.class.getName());
-      }
       /**
        * NOT_CHARGING = 0;
        */
@@ -16366,7 +16554,7 @@ public State findValueByNumber(int number) {
           getDescriptorForType() {
         return getDescriptor();
       }
-      public static com.google.protobuf.Descriptors.EnumDescriptor
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.ChargingState.getDescriptor().getEnumTypes().get(0);
       }
@@ -16510,20 +16698,20 @@ public static mentraos.ble.MentraosBle.ChargingState parseFrom(
     }
     public static mentraos.ble.MentraosBle.ChargingState parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ChargingState parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ChargingState parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -16531,20 +16719,20 @@ public static mentraos.ble.MentraosBle.ChargingState parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ChargingState parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ChargingState parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -16564,7 +16752,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -16572,7 +16760,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ChargingState}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ChargingState)
         mentraos.ble.MentraosBle.ChargingStateOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -16581,7 +16769,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ChargingState_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -16594,7 +16782,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -16641,6 +16829,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.ChargingState result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ChargingState) {
@@ -16738,7 +16958,9 @@ public mentraos.ble.MentraosBle.ChargingState.State getState() {
        * @return This builder for chaining.
        */
       public Builder setState(mentraos.ble.MentraosBle.ChargingState.State value) {
-        if (value == null) { throw new NullPointerException(); }
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000001;
         state_ = value.getNumber();
         onChanged();
@@ -16754,6 +16976,18 @@ public Builder clearState() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ChargingState)
     }
@@ -16814,33 +17048,31 @@ public interface GlassesInfoRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.GlassesInfoRequest}
    */
   public static final class GlassesInfoRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.GlassesInfoRequest)
       GlassesInfoRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        GlassesInfoRequest.class.getName());
-    }
     // Use GlassesInfoRequest.newBuilder() to construct.
-    private GlassesInfoRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private GlassesInfoRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private GlassesInfoRequest() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new GlassesInfoRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_GlassesInfoRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_GlassesInfoRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -16935,20 +17167,20 @@ public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.GlassesInfoRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -16956,20 +17188,20 @@ public static mentraos.ble.MentraosBle.GlassesInfoRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -16989,7 +17221,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -16997,7 +17229,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.GlassesInfoRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.GlassesInfoRequest)
         mentraos.ble.MentraosBle.GlassesInfoRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -17006,7 +17238,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_GlassesInfoRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -17019,7 +17251,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -17056,6 +17288,38 @@ public mentraos.ble.MentraosBle.GlassesInfoRequest buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.GlassesInfoRequest) {
@@ -17109,6 +17373,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.GlassesInfoRequest)
     }
@@ -17208,21 +17484,12 @@ public interface DeviceInfoOrBuilder extends
    * Protobuf type {@code mentraos.ble.DeviceInfo}
    */
   public static final class DeviceInfo extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DeviceInfo)
       DeviceInfoOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DeviceInfo.class.getName());
-    }
     // Use DeviceInfo.newBuilder() to construct.
-    private DeviceInfo(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DeviceInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DeviceInfo() {
@@ -17230,13 +17497,20 @@ private DeviceInfo() {
       hwModel_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DeviceInfo();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DeviceInfo_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DeviceInfo_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -17362,11 +17636,11 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(fwVersion_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, fwVersion_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fwVersion_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, fwVersion_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(hwModel_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 2, hwModel_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hwModel_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, hwModel_);
       }
       if (((bitField0_ & 0x00000001) != 0)) {
         output.writeMessage(3, getFeatures());
@@ -17380,11 +17654,11 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(fwVersion_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, fwVersion_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fwVersion_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, fwVersion_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(hwModel_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, hwModel_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hwModel_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, hwModel_);
       }
       if (((bitField0_ & 0x00000001) != 0)) {
         size += com.google.protobuf.CodedOutputStream
@@ -17472,20 +17746,20 @@ public static mentraos.ble.MentraosBle.DeviceInfo parseFrom(
     }
     public static mentraos.ble.MentraosBle.DeviceInfo parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DeviceInfo parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DeviceInfo parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -17493,20 +17767,20 @@ public static mentraos.ble.MentraosBle.DeviceInfo parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DeviceInfo parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DeviceInfo parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -17526,7 +17800,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -17534,7 +17808,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DeviceInfo}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DeviceInfo)
         mentraos.ble.MentraosBle.DeviceInfoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -17543,7 +17817,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DeviceInfo_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -17556,14 +17830,14 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage
+        if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          internalGetFeaturesFieldBuilder();
+          getFeaturesFieldBuilder();
         }
       }
       @java.lang.Override
@@ -17626,6 +17900,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DeviceInfo result) {
         result.bitField0_ |= to_bitField0_;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DeviceInfo) {
@@ -17689,7 +17995,7 @@ public Builder mergeFrom(
               } // case 18
               case 26: {
                 input.readMessage(
-                    internalGetFeaturesFieldBuilder().getBuilder(),
+                    getFeaturesFieldBuilder().getBuilder(),
                     extensionRegistry);
                 bitField0_ |= 0x00000004;
                 break;
@@ -17856,7 +18162,7 @@ public Builder setHwModelBytes(
       }
 
       private mentraos.ble.MentraosBle.DeviceFeatures features_;
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DeviceFeatures, mentraos.ble.MentraosBle.DeviceFeatures.Builder, mentraos.ble.MentraosBle.DeviceFeaturesOrBuilder> featuresBuilder_;
       /**
        * .mentraos.ble.DeviceFeatures features = 3;
@@ -17946,7 +18252,7 @@ public Builder clearFeatures() {
       public mentraos.ble.MentraosBle.DeviceFeatures.Builder getFeaturesBuilder() {
         bitField0_ |= 0x00000004;
         onChanged();
-        return internalGetFeaturesFieldBuilder().getBuilder();
+        return getFeaturesFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.DeviceFeatures features = 3;
@@ -17962,11 +18268,11 @@ public mentraos.ble.MentraosBle.DeviceFeaturesOrBuilder getFeaturesOrBuilder() {
       /**
        * .mentraos.ble.DeviceFeatures features = 3;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DeviceFeatures, mentraos.ble.MentraosBle.DeviceFeatures.Builder, mentraos.ble.MentraosBle.DeviceFeaturesOrBuilder> 
-          internalGetFeaturesFieldBuilder() {
+          getFeaturesFieldBuilder() {
         if (featuresBuilder_ == null) {
-          featuresBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          featuresBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DeviceFeatures, mentraos.ble.MentraosBle.DeviceFeatures.Builder, mentraos.ble.MentraosBle.DeviceFeaturesOrBuilder>(
                   getFeatures(),
                   getParentForChildren(),
@@ -17975,6 +18281,18 @@ public mentraos.ble.MentraosBle.DeviceFeaturesOrBuilder getFeaturesOrBuilder() {
         }
         return featuresBuilder_;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DeviceInfo)
     }
@@ -18087,33 +18405,31 @@ public interface DeviceFeaturesOrBuilder extends
    * Protobuf type {@code mentraos.ble.DeviceFeatures}
    */
   public static final class DeviceFeatures extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DeviceFeatures)
       DeviceFeaturesOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DeviceFeatures.class.getName());
-    }
     // Use DeviceFeatures.newBuilder() to construct.
-    private DeviceFeatures(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DeviceFeatures(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DeviceFeatures() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DeviceFeatures();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DeviceFeatures_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DeviceFeatures_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -18395,20 +18711,20 @@ public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom(
     }
     public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DeviceFeatures parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -18416,20 +18732,20 @@ public static mentraos.ble.MentraosBle.DeviceFeatures parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -18449,7 +18765,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -18457,7 +18773,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DeviceFeatures}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DeviceFeatures)
         mentraos.ble.MentraosBle.DeviceFeaturesOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -18466,7 +18782,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DeviceFeatures_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -18479,7 +18795,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -18554,6 +18870,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DeviceFeatures result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DeviceFeatures) {
@@ -18940,6 +19288,18 @@ public Builder clearImageChunkBuffer() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DeviceFeatures)
     }
@@ -19000,33 +19360,31 @@ public interface PairingModeRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.PairingModeRequest}
    */
   public static final class PairingModeRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.PairingModeRequest)
       PairingModeRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        PairingModeRequest.class.getName());
-    }
     // Use PairingModeRequest.newBuilder() to construct.
-    private PairingModeRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private PairingModeRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private PairingModeRequest() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new PairingModeRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PairingModeRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PairingModeRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -19121,20 +19479,20 @@ public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.PairingModeRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -19142,20 +19500,20 @@ public static mentraos.ble.MentraosBle.PairingModeRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -19175,7 +19533,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -19183,7 +19541,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.PairingModeRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.PairingModeRequest)
         mentraos.ble.MentraosBle.PairingModeRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -19192,7 +19550,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PairingModeRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -19205,7 +19563,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -19242,6 +19600,38 @@ public mentraos.ble.MentraosBle.PairingModeRequest buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.PairingModeRequest) {
@@ -19295,6 +19685,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.PairingModeRequest)
     }
@@ -19355,33 +19757,31 @@ public interface HeadPositionRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.HeadPositionRequest}
    */
   public static final class HeadPositionRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.HeadPositionRequest)
       HeadPositionRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        HeadPositionRequest.class.getName());
-    }
     // Use HeadPositionRequest.newBuilder() to construct.
-    private HeadPositionRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private HeadPositionRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private HeadPositionRequest() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new HeadPositionRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadPositionRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadPositionRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -19476,20 +19876,20 @@ public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.HeadPositionRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -19497,20 +19897,20 @@ public static mentraos.ble.MentraosBle.HeadPositionRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -19530,7 +19930,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -19538,7 +19938,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.HeadPositionRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadPositionRequest)
         mentraos.ble.MentraosBle.HeadPositionRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -19547,7 +19947,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadPositionRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -19560,7 +19960,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -19597,6 +19997,38 @@ public mentraos.ble.MentraosBle.HeadPositionRequest buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.HeadPositionRequest) {
@@ -19650,6 +20082,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadPositionRequest)
     }
@@ -19720,33 +20164,31 @@ public interface HeadPositionOrBuilder extends
    * Protobuf type {@code mentraos.ble.HeadPosition}
    */
   public static final class HeadPosition extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.HeadPosition)
       HeadPositionOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        HeadPosition.class.getName());
-    }
     // Use HeadPosition.newBuilder() to construct.
-    private HeadPosition(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private HeadPosition(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private HeadPosition() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new HeadPosition();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadPosition_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadPosition_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -19867,20 +20309,20 @@ public static mentraos.ble.MentraosBle.HeadPosition parseFrom(
     }
     public static mentraos.ble.MentraosBle.HeadPosition parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadPosition parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.HeadPosition parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -19888,20 +20330,20 @@ public static mentraos.ble.MentraosBle.HeadPosition parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.HeadPosition parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadPosition parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -19921,7 +20363,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -19929,7 +20371,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.HeadPosition}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadPosition)
         mentraos.ble.MentraosBle.HeadPositionOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -19938,7 +20380,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadPosition_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -19951,7 +20393,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -19998,6 +20440,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.HeadPosition result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.HeadPosition) {
@@ -20104,6 +20578,18 @@ public Builder clearAngle() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadPosition)
     }
@@ -20174,33 +20660,31 @@ public interface HeadUpAngleConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.HeadUpAngleConfig}
    */
   public static final class HeadUpAngleConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.HeadUpAngleConfig)
       HeadUpAngleConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        HeadUpAngleConfig.class.getName());
-    }
     // Use HeadUpAngleConfig.newBuilder() to construct.
-    private HeadUpAngleConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private HeadUpAngleConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private HeadUpAngleConfig() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new HeadUpAngleConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadUpAngleConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadUpAngleConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -20321,20 +20805,20 @@ public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -20342,20 +20826,20 @@ public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -20375,7 +20859,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -20383,7 +20867,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.HeadUpAngleConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadUpAngleConfig)
         mentraos.ble.MentraosBle.HeadUpAngleConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -20392,7 +20876,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadUpAngleConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -20405,7 +20889,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -20452,6 +20936,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.HeadUpAngleConfig result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.HeadUpAngleConfig) {
@@ -20558,6 +21074,18 @@ public Builder clearAngle() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadUpAngleConfig)
     }
@@ -20624,33 +21152,31 @@ public interface HeadUpAngleResponseOrBuilder extends
    * Protobuf type {@code mentraos.ble.HeadUpAngleResponse}
    */
   public static final class HeadUpAngleResponse extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.HeadUpAngleResponse)
       HeadUpAngleResponseOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        HeadUpAngleResponse.class.getName());
-    }
     // Use HeadUpAngleResponse.newBuilder() to construct.
-    private HeadUpAngleResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private HeadUpAngleResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private HeadUpAngleResponse() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new HeadUpAngleResponse();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadUpAngleResponse_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadUpAngleResponse_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -20768,20 +21294,20 @@ public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom(
     }
     public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -20789,20 +21315,20 @@ public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -20822,7 +21348,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -20830,7 +21356,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.HeadUpAngleResponse}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadUpAngleResponse)
         mentraos.ble.MentraosBle.HeadUpAngleResponseOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -20839,7 +21365,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadUpAngleResponse_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -20852,7 +21378,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -20899,6 +21425,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.HeadUpAngleResponse result)
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.HeadUpAngleResponse) {
@@ -20993,6 +21551,18 @@ public Builder clearSuccess() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadUpAngleResponse)
     }
@@ -21065,34 +21635,32 @@ public interface PingRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.PingRequest}
    */
   public static final class PingRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.PingRequest)
       PingRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        PingRequest.class.getName());
-    }
     // Use PingRequest.newBuilder() to construct.
-    private PingRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private PingRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private PingRequest() {
       msgId_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new PingRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PingRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PingRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -21152,8 +21720,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
       }
       getUnknownFields().writeTo(output);
     }
@@ -21164,8 +21732,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
@@ -21236,20 +21804,20 @@ public static mentraos.ble.MentraosBle.PingRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.PingRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.PingRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.PingRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -21257,20 +21825,20 @@ public static mentraos.ble.MentraosBle.PingRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.PingRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.PingRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -21290,7 +21858,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -21298,7 +21866,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.PingRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.PingRequest)
         mentraos.ble.MentraosBle.PingRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -21307,7 +21875,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PingRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -21320,7 +21888,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -21367,6 +21935,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.PingRequest result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.PingRequest) {
@@ -21503,6 +22103,18 @@ public Builder setMsgIdBytes(
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.PingRequest)
     }
@@ -21563,33 +22175,31 @@ public interface PongResponseOrBuilder extends
    * Protobuf type {@code mentraos.ble.PongResponse}
    */
   public static final class PongResponse extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.PongResponse)
       PongResponseOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        PongResponse.class.getName());
-    }
     // Use PongResponse.newBuilder() to construct.
-    private PongResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private PongResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private PongResponse() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new PongResponse();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PongResponse_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PongResponse_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -21684,20 +22294,20 @@ public static mentraos.ble.MentraosBle.PongResponse parseFrom(
     }
     public static mentraos.ble.MentraosBle.PongResponse parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.PongResponse parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.PongResponse parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -21705,20 +22315,20 @@ public static mentraos.ble.MentraosBle.PongResponse parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.PongResponse parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.PongResponse parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -21738,7 +22348,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -21746,7 +22356,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.PongResponse}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.PongResponse)
         mentraos.ble.MentraosBle.PongResponseOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -21755,7 +22365,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_PongResponse_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -21768,7 +22378,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -21805,6 +22415,38 @@ public mentraos.ble.MentraosBle.PongResponse buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.PongResponse) {
@@ -21858,6 +22500,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.PongResponse)
     }
@@ -21924,33 +22578,31 @@ public interface MicStateConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.MicStateConfig}
    */
   public static final class MicStateConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.MicStateConfig)
       MicStateConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        MicStateConfig.class.getName());
-    }
     // Use MicStateConfig.newBuilder() to construct.
-    private MicStateConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private MicStateConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private MicStateConfig() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new MicStateConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_MicStateConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_MicStateConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -22068,20 +22720,20 @@ public static mentraos.ble.MentraosBle.MicStateConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.MicStateConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.MicStateConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.MicStateConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -22089,20 +22741,20 @@ public static mentraos.ble.MentraosBle.MicStateConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.MicStateConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.MicStateConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -22122,7 +22774,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -22130,7 +22782,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.MicStateConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.MicStateConfig)
         mentraos.ble.MentraosBle.MicStateConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -22139,7 +22791,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_MicStateConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -22152,7 +22804,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -22199,6 +22851,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.MicStateConfig result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.MicStateConfig) {
@@ -22293,6 +22977,18 @@ public Builder clearEnabled() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.MicStateConfig)
     }
@@ -22368,34 +23064,32 @@ public interface VadEventOrBuilder extends
    * Protobuf type {@code mentraos.ble.VadEvent}
    */
   public static final class VadEvent extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.VadEvent)
       VadEventOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        VadEvent.class.getName());
-    }
     // Use VadEvent.newBuilder() to construct.
-    private VadEvent(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private VadEvent(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private VadEvent() {
       state_ = 0;
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VadEvent();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadEvent_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadEvent_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -22418,15 +23112,6 @@ public enum State
       UNRECOGNIZED(-1),
       ;
 
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          State.class.getName());
-      }
       /**
        * INACTIVE = 0;
        */
@@ -22491,7 +23176,7 @@ public State findValueByNumber(int number) {
           getDescriptorForType() {
         return getDescriptor();
       }
-      public static com.google.protobuf.Descriptors.EnumDescriptor
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.VadEvent.getDescriptor().getEnumTypes().get(0);
       }
@@ -22635,20 +23320,20 @@ public static mentraos.ble.MentraosBle.VadEvent parseFrom(
     }
     public static mentraos.ble.MentraosBle.VadEvent parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadEvent parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.VadEvent parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -22656,20 +23341,20 @@ public static mentraos.ble.MentraosBle.VadEvent parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.VadEvent parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadEvent parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -22689,7 +23374,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -22701,7 +23386,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.VadEvent}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.VadEvent)
         mentraos.ble.MentraosBle.VadEventOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -22710,7 +23395,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadEvent_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -22723,7 +23408,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -22770,6 +23455,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.VadEvent result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.VadEvent) {
@@ -22867,7 +23584,9 @@ public mentraos.ble.MentraosBle.VadEvent.State getState() {
        * @return This builder for chaining.
        */
       public Builder setState(mentraos.ble.MentraosBle.VadEvent.State value) {
-        if (value == null) { throw new NullPointerException(); }
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000001;
         state_ = value.getNumber();
         onChanged();
@@ -22883,6 +23602,18 @@ public Builder clearState() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.VadEvent)
     }
@@ -22965,34 +23696,32 @@ public interface VadEnabledRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.VadEnabledRequest}
    */
   public static final class VadEnabledRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.VadEnabledRequest)
       VadEnabledRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        VadEnabledRequest.class.getName());
-    }
     // Use VadEnabledRequest.newBuilder() to construct.
-    private VadEnabledRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private VadEnabledRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private VadEnabledRequest() {
       msgId_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VadEnabledRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadEnabledRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadEnabledRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -23063,8 +23792,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
       }
       if (enabled_ != false) {
         output.writeBool(2, enabled_);
@@ -23078,8 +23807,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
       }
       if (enabled_ != false) {
         size += com.google.protobuf.CodedOutputStream
@@ -23159,20 +23888,20 @@ public static mentraos.ble.MentraosBle.VadEnabledRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.VadEnabledRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadEnabledRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.VadEnabledRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -23180,20 +23909,20 @@ public static mentraos.ble.MentraosBle.VadEnabledRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.VadEnabledRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadEnabledRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -23213,7 +23942,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -23225,7 +23954,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.VadEnabledRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.VadEnabledRequest)
         mentraos.ble.MentraosBle.VadEnabledRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -23234,7 +23963,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadEnabledRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -23247,7 +23976,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -23298,6 +24027,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.VadEnabledRequest result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.VadEnabledRequest) {
@@ -23474,6 +24235,18 @@ public Builder clearEnabled() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.VadEnabledRequest)
     }
@@ -23584,21 +24357,12 @@ public interface VadEnabledResponseOrBuilder extends
    * Protobuf type {@code mentraos.ble.VadEnabledResponse}
    */
   public static final class VadEnabledResponse extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.VadEnabledResponse)
       VadEnabledResponseOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        VadEnabledResponse.class.getName());
-    }
     // Use VadEnabledResponse.newBuilder() to construct.
-    private VadEnabledResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private VadEnabledResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private VadEnabledResponse() {
@@ -23606,13 +24370,20 @@ private VadEnabledResponse() {
       error_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VadEnabledResponse();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadEnabledResponse_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadEnabledResponse_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -23738,14 +24509,14 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
       }
       if (success_ != false) {
         output.writeBool(2, success_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(error_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 3, error_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, error_);
       }
       getUnknownFields().writeTo(output);
     }
@@ -23756,15 +24527,15 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
       }
       if (success_ != false) {
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(2, success_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(error_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, error_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, error_);
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
@@ -23844,20 +24615,20 @@ public static mentraos.ble.MentraosBle.VadEnabledResponse parseFrom(
     }
     public static mentraos.ble.MentraosBle.VadEnabledResponse parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadEnabledResponse parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.VadEnabledResponse parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -23865,20 +24636,20 @@ public static mentraos.ble.MentraosBle.VadEnabledResponse parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.VadEnabledResponse parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadEnabledResponse parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -23898,7 +24669,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -23910,7 +24681,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.VadEnabledResponse}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.VadEnabledResponse)
         mentraos.ble.MentraosBle.VadEnabledResponseOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -23919,7 +24690,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadEnabledResponse_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -23932,7 +24703,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -23987,6 +24758,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.VadEnabledResponse result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.VadEnabledResponse) {
@@ -24285,6 +25088,18 @@ public Builder setErrorBytes(
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.VadEnabledResponse)
     }
@@ -24371,34 +25186,32 @@ public interface VadConfigRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.VadConfigRequest}
    */
   public static final class VadConfigRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.VadConfigRequest)
       VadConfigRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        VadConfigRequest.class.getName());
-    }
     // Use VadConfigRequest.newBuilder() to construct.
-    private VadConfigRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private VadConfigRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private VadConfigRequest() {
       msgId_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VadConfigRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadConfigRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadConfigRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -24473,8 +25286,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
       }
       if (sensitivity_ != 0) {
         output.writeUInt32(2, sensitivity_);
@@ -24488,8 +25301,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
       }
       if (sensitivity_ != 0) {
         size += com.google.protobuf.CodedOutputStream
@@ -24568,20 +25381,20 @@ public static mentraos.ble.MentraosBle.VadConfigRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.VadConfigRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadConfigRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.VadConfigRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -24589,20 +25402,20 @@ public static mentraos.ble.MentraosBle.VadConfigRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.VadConfigRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadConfigRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -24622,7 +25435,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -24634,7 +25447,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.VadConfigRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.VadConfigRequest)
         mentraos.ble.MentraosBle.VadConfigRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -24643,7 +25456,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadConfigRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -24656,7 +25469,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -24707,6 +25520,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.VadConfigRequest result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.VadConfigRequest) {
@@ -24895,6 +25740,18 @@ public Builder clearSensitivity() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.VadConfigRequest)
     }
@@ -25005,21 +25862,12 @@ public interface VadConfigResponseOrBuilder extends
    * Protobuf type {@code mentraos.ble.VadConfigResponse}
    */
   public static final class VadConfigResponse extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.VadConfigResponse)
       VadConfigResponseOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        VadConfigResponse.class.getName());
-    }
     // Use VadConfigResponse.newBuilder() to construct.
-    private VadConfigResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private VadConfigResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private VadConfigResponse() {
@@ -25027,13 +25875,20 @@ private VadConfigResponse() {
       error_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VadConfigResponse();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadConfigResponse_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadConfigResponse_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -25159,14 +26014,14 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
       }
       if (success_ != false) {
         output.writeBool(2, success_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(error_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 3, error_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, error_);
       }
       getUnknownFields().writeTo(output);
     }
@@ -25177,15 +26032,15 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
       }
       if (success_ != false) {
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(2, success_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(error_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, error_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, error_);
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
@@ -25265,20 +26120,20 @@ public static mentraos.ble.MentraosBle.VadConfigResponse parseFrom(
     }
     public static mentraos.ble.MentraosBle.VadConfigResponse parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadConfigResponse parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.VadConfigResponse parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -25286,20 +26141,20 @@ public static mentraos.ble.MentraosBle.VadConfigResponse parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.VadConfigResponse parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadConfigResponse parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -25319,7 +26174,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -25331,7 +26186,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.VadConfigResponse}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.VadConfigResponse)
         mentraos.ble.MentraosBle.VadConfigResponseOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -25340,7 +26195,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadConfigResponse_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -25353,7 +26208,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -25408,6 +26263,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.VadConfigResponse result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.VadConfigResponse) {
@@ -25706,6 +26593,18 @@ public Builder setErrorBytes(
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.VadConfigResponse)
     }
@@ -25782,34 +26681,32 @@ public interface VadStatusRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.VadStatusRequest}
    */
   public static final class VadStatusRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.VadStatusRequest)
       VadStatusRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        VadStatusRequest.class.getName());
-    }
     // Use VadStatusRequest.newBuilder() to construct.
-    private VadStatusRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private VadStatusRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private VadStatusRequest() {
       msgId_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VadStatusRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadStatusRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadStatusRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -25869,8 +26766,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
       }
       getUnknownFields().writeTo(output);
     }
@@ -25881,8 +26778,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
@@ -25953,20 +26850,20 @@ public static mentraos.ble.MentraosBle.VadStatusRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.VadStatusRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadStatusRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.VadStatusRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -25974,20 +26871,20 @@ public static mentraos.ble.MentraosBle.VadStatusRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.VadStatusRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadStatusRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -26007,7 +26904,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -26019,7 +26916,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.VadStatusRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.VadStatusRequest)
         mentraos.ble.MentraosBle.VadStatusRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -26028,7 +26925,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadStatusRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -26041,7 +26938,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -26088,6 +26985,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.VadStatusRequest result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.VadStatusRequest) {
@@ -26224,6 +27153,18 @@ public Builder setMsgIdBytes(
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.VadStatusRequest)
     }
@@ -26324,34 +27265,32 @@ public interface VadStatusOrBuilder extends
    * Protobuf type {@code mentraos.ble.VadStatus}
    */
   public static final class VadStatus extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.VadStatus)
       VadStatusOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        VadStatus.class.getName());
-    }
     // Use VadStatus.newBuilder() to construct.
-    private VadStatus(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private VadStatus(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private VadStatus() {
       msgId_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VadStatus();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadStatus_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadStatus_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -26445,8 +27384,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
       }
       if (enabled_ != false) {
         output.writeBool(2, enabled_);
@@ -26463,8 +27402,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
       }
       if (enabled_ != false) {
         size += com.google.protobuf.CodedOutputStream
@@ -26552,20 +27491,20 @@ public static mentraos.ble.MentraosBle.VadStatus parseFrom(
     }
     public static mentraos.ble.MentraosBle.VadStatus parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadStatus parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.VadStatus parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -26573,20 +27512,20 @@ public static mentraos.ble.MentraosBle.VadStatus parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.VadStatus parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VadStatus parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -26606,7 +27545,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -26618,7 +27557,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.VadStatus}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.VadStatus)
         mentraos.ble.MentraosBle.VadStatusOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -26627,7 +27566,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VadStatus_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -26640,7 +27579,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -26695,6 +27634,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.VadStatus result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.VadStatus) {
@@ -26943,6 +27914,18 @@ public Builder clearSensitivity() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.VadStatus)
     }
@@ -27047,34 +28030,32 @@ public interface DisplayTextOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisplayText}
    */
   public static final class DisplayText extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayText)
       DisplayTextOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayText.class.getName());
-    }
     // Use DisplayText.newBuilder() to construct.
-    private DisplayText(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayText(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayText() {
       text_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayText();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayText_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayText_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -27186,8 +28167,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(text_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, text_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, text_);
       }
       if (color_ != 0) {
         output.writeUInt32(2, color_);
@@ -27210,8 +28191,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(text_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, text_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, text_);
       }
       if (color_ != 0) {
         size += com.google.protobuf.CodedOutputStream
@@ -27314,20 +28295,20 @@ public static mentraos.ble.MentraosBle.DisplayText parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayText parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayText parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayText parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -27335,20 +28316,20 @@ public static mentraos.ble.MentraosBle.DisplayText parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayText parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayText parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -27368,7 +28349,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -27376,7 +28357,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayText}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayText)
         mentraos.ble.MentraosBle.DisplayTextOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -27385,7 +28366,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayText_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -27398,7 +28379,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -27461,6 +28442,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DisplayText result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayText) {
@@ -27781,6 +28794,18 @@ public Builder clearSize() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayText)
     }
@@ -27915,21 +28940,12 @@ public interface DisplayImageOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisplayImage}
    */
   public static final class DisplayImage extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayImage)
       DisplayImageOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayImage.class.getName());
-    }
     // Use DisplayImage.newBuilder() to construct.
-    private DisplayImage(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayImage(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayImage() {
@@ -27937,13 +28953,20 @@ private DisplayImage() {
       encoding_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayImage();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayImage_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayImage_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -28113,8 +29136,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(streamId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, streamId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(streamId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, streamId_);
       }
       if (x_ != 0) {
         output.writeUInt32(2, x_);
@@ -28128,8 +29151,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       if (height_ != 0) {
         output.writeUInt32(5, height_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(encoding_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 6, encoding_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(encoding_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, encoding_);
       }
       if (totalChunks_ != 0) {
         output.writeUInt32(7, totalChunks_);
@@ -28143,8 +29166,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(streamId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, streamId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(streamId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, streamId_);
       }
       if (x_ != 0) {
         size += com.google.protobuf.CodedOutputStream
@@ -28162,8 +29185,8 @@ public int getSerializedSize() {
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(5, height_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(encoding_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, encoding_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(encoding_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, encoding_);
       }
       if (totalChunks_ != 0) {
         size += com.google.protobuf.CodedOutputStream
@@ -28262,20 +29285,20 @@ public static mentraos.ble.MentraosBle.DisplayImage parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayImage parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayImage parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayImage parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -28283,20 +29306,20 @@ public static mentraos.ble.MentraosBle.DisplayImage parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayImage parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayImage parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -28316,7 +29339,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -28328,7 +29351,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayImage}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayImage)
         mentraos.ble.MentraosBle.DisplayImageOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -28337,7 +29360,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayImage_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -28350,7 +29373,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -28421,6 +29444,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DisplayImage result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayImage) {
@@ -28879,6 +29934,18 @@ public Builder clearTotalChunks() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayImage)
     }
@@ -28991,21 +30058,12 @@ public interface CacheImageOrBuilder extends
    * Protobuf type {@code mentraos.ble.CacheImage}
    */
   public static final class CacheImage extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.CacheImage)
       CacheImageOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        CacheImage.class.getName());
-    }
     // Use CacheImage.newBuilder() to construct.
-    private CacheImage(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private CacheImage(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private CacheImage() {
@@ -29013,13 +30071,20 @@ private CacheImage() {
       encoding_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new CacheImage();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_CacheImage_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_CacheImage_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -29166,8 +30231,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(streamId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, streamId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(streamId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, streamId_);
       }
       if (imageId_ != 0) {
         output.writeUInt32(2, imageId_);
@@ -29178,8 +30243,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       if (height_ != 0) {
         output.writeUInt32(4, height_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(encoding_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 5, encoding_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(encoding_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, encoding_);
       }
       if (totalChunks_ != 0) {
         output.writeUInt32(6, totalChunks_);
@@ -29193,8 +30258,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(streamId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, streamId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(streamId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, streamId_);
       }
       if (imageId_ != 0) {
         size += com.google.protobuf.CodedOutputStream
@@ -29208,8 +30273,8 @@ public int getSerializedSize() {
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(4, height_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(encoding_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, encoding_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(encoding_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, encoding_);
       }
       if (totalChunks_ != 0) {
         size += com.google.protobuf.CodedOutputStream
@@ -29304,20 +30369,20 @@ public static mentraos.ble.MentraosBle.CacheImage parseFrom(
     }
     public static mentraos.ble.MentraosBle.CacheImage parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.CacheImage parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.CacheImage parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -29325,20 +30390,20 @@ public static mentraos.ble.MentraosBle.CacheImage parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.CacheImage parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.CacheImage parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -29358,7 +30423,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -29366,7 +30431,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.CacheImage}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.CacheImage)
         mentraos.ble.MentraosBle.CacheImageOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -29375,7 +30440,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_CacheImage_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -29388,7 +30453,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -29455,6 +30520,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.CacheImage result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.CacheImage) {
@@ -29845,6 +30942,18 @@ public Builder clearTotalChunks() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.CacheImage)
     }
@@ -29935,33 +31044,31 @@ public interface DisplayCachedImageOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisplayCachedImage}
    */
   public static final class DisplayCachedImage extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayCachedImage)
       DisplayCachedImageOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayCachedImage.class.getName());
-    }
     // Use DisplayCachedImage.newBuilder() to construct.
-    private DisplayCachedImage(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayCachedImage(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayCachedImage() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayCachedImage();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayCachedImage_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayCachedImage_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -30166,20 +31273,20 @@ public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayCachedImage parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -30187,20 +31294,20 @@ public static mentraos.ble.MentraosBle.DisplayCachedImage parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -30220,7 +31327,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -30228,7 +31335,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayCachedImage}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayCachedImage)
         mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -30237,7 +31344,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayCachedImage_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -30250,7 +31357,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -30313,6 +31420,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DisplayCachedImage result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayCachedImage) {
@@ -30567,6 +31706,18 @@ public Builder clearHeight() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayCachedImage)
     }
@@ -30633,33 +31784,31 @@ public interface ClearCachedImageOrBuilder extends
    * Protobuf type {@code mentraos.ble.ClearCachedImage}
    */
   public static final class ClearCachedImage extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ClearCachedImage)
       ClearCachedImageOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ClearCachedImage.class.getName());
-    }
     // Use ClearCachedImage.newBuilder() to construct.
-    private ClearCachedImage(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ClearCachedImage(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ClearCachedImage() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ClearCachedImage();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ClearCachedImage_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ClearCachedImage_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -30776,20 +31925,20 @@ public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom(
     }
     public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ClearCachedImage parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -30797,20 +31946,20 @@ public static mentraos.ble.MentraosBle.ClearCachedImage parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -30830,7 +31979,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -30838,7 +31987,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ClearCachedImage}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ClearCachedImage)
         mentraos.ble.MentraosBle.ClearCachedImageOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -30847,7 +31996,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ClearCachedImage_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -30860,7 +32009,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -30907,6 +32056,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.ClearCachedImage result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ClearCachedImage) {
@@ -31001,6 +32182,18 @@ public Builder clearImageId() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ClearCachedImage)
     }
@@ -31180,21 +32373,12 @@ public interface DisplayScrollingTextOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisplayScrollingText}
    */
   public static final class DisplayScrollingText extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayScrollingText)
       DisplayScrollingTextOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayScrollingText.class.getName());
-    }
     // Use DisplayScrollingText.newBuilder() to construct.
-    private DisplayScrollingText(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayScrollingText(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayScrollingText() {
@@ -31202,13 +32386,20 @@ private DisplayScrollingText() {
       align_ = 0;
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayScrollingText();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayScrollingText_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayScrollingText_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -31235,15 +32426,6 @@ public enum Alignment
       UNRECOGNIZED(-1),
       ;
 
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          Alignment.class.getName());
-      }
       /**
        * LEFT = 0;
        */
@@ -31313,7 +32495,7 @@ public Alignment findValueByNumber(int number) {
           getDescriptorForType() {
         return getDescriptor();
       }
-      public static com.google.protobuf.Descriptors.EnumDescriptor
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.DisplayScrollingText.getDescriptor().getEnumTypes().get(0);
       }
@@ -31558,8 +32740,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(text_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, text_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, text_);
       }
       if (color_ != 0) {
         output.writeUInt32(2, color_);
@@ -31603,8 +32785,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(text_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, text_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, text_);
       }
       if (color_ != 0) {
         size += com.google.protobuf.CodedOutputStream
@@ -31763,20 +32945,20 @@ public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayScrollingText parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -31784,20 +32966,20 @@ public static mentraos.ble.MentraosBle.DisplayScrollingText parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -31817,7 +32999,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -31825,7 +33007,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayScrollingText}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayScrollingText)
         mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -31834,7 +33016,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayScrollingText_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -31847,7 +33029,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -31938,6 +33120,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DisplayScrollingText result)
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayScrollingText) {
@@ -32405,7 +33619,9 @@ public mentraos.ble.MentraosBle.DisplayScrollingText.Alignment getAlign() {
        * @return This builder for chaining.
        */
       public Builder setAlign(mentraos.ble.MentraosBle.DisplayScrollingText.Alignment value) {
-        if (value == null) { throw new NullPointerException(); }
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000040;
         align_ = value.getNumber();
         onChanged();
@@ -32641,6 +33857,18 @@ public Builder clearPauseMs() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayScrollingText)
     }
@@ -32711,33 +33939,31 @@ public interface DisplayPowerConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisplayPowerConfig}
    */
   public static final class DisplayPowerConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayPowerConfig)
       DisplayPowerConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayPowerConfig.class.getName());
-    }
     // Use DisplayPowerConfig.newBuilder() to construct.
-    private DisplayPowerConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayPowerConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayPowerConfig() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayPowerConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayPowerConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayPowerConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -32859,20 +34085,20 @@ public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayPowerConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -32880,20 +34106,20 @@ public static mentraos.ble.MentraosBle.DisplayPowerConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -32913,7 +34139,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -32921,7 +34147,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayPowerConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayPowerConfig)
         mentraos.ble.MentraosBle.DisplayPowerConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -32930,7 +34156,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayPowerConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -32943,7 +34169,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -32990,6 +34216,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DisplayPowerConfig result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayPowerConfig) {
@@ -33096,6 +34354,18 @@ public Builder clearOn() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayPowerConfig)
     }
@@ -33166,33 +34436,31 @@ public interface BrightnessConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.BrightnessConfig}
    */
   public static final class BrightnessConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.BrightnessConfig)
       BrightnessConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        BrightnessConfig.class.getName());
-    }
     // Use BrightnessConfig.newBuilder() to construct.
-    private BrightnessConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private BrightnessConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private BrightnessConfig() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new BrightnessConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_BrightnessConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_BrightnessConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -33313,20 +34581,20 @@ public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.BrightnessConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -33334,20 +34602,20 @@ public static mentraos.ble.MentraosBle.BrightnessConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -33367,7 +34635,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -33375,7 +34643,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.BrightnessConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.BrightnessConfig)
         mentraos.ble.MentraosBle.BrightnessConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -33384,7 +34652,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_BrightnessConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -33397,7 +34665,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -33444,6 +34712,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.BrightnessConfig result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.BrightnessConfig) {
@@ -33550,6 +34850,18 @@ public Builder clearValue() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.BrightnessConfig)
     }
@@ -33616,33 +34928,31 @@ public interface AutoBrightnessConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.AutoBrightnessConfig}
    */
   public static final class AutoBrightnessConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.AutoBrightnessConfig)
       AutoBrightnessConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        AutoBrightnessConfig.class.getName());
-    }
     // Use AutoBrightnessConfig.newBuilder() to construct.
-    private AutoBrightnessConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private AutoBrightnessConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private AutoBrightnessConfig() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new AutoBrightnessConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_AutoBrightnessConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_AutoBrightnessConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -33760,20 +35070,20 @@ public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -33781,20 +35091,20 @@ public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -33814,7 +35124,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -33822,7 +35132,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.AutoBrightnessConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.AutoBrightnessConfig)
         mentraos.ble.MentraosBle.AutoBrightnessConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -33831,7 +35141,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_AutoBrightnessConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -33844,7 +35154,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -33891,6 +35201,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.AutoBrightnessConfig result)
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.AutoBrightnessConfig) {
@@ -33985,6 +35327,18 @@ public Builder clearEnabled() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.AutoBrightnessConfig)
     }
@@ -34055,33 +35409,31 @@ public interface AutoBrightnessMultiplierOrBuilder extends
    * Protobuf type {@code mentraos.ble.AutoBrightnessMultiplier}
    */
   public static final class AutoBrightnessMultiplier extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.AutoBrightnessMultiplier)
       AutoBrightnessMultiplierOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        AutoBrightnessMultiplier.class.getName());
-    }
     // Use AutoBrightnessMultiplier.newBuilder() to construct.
-    private AutoBrightnessMultiplier(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private AutoBrightnessMultiplier(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private AutoBrightnessMultiplier() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new AutoBrightnessMultiplier();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_AutoBrightnessMultiplier_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_AutoBrightnessMultiplier_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -34204,20 +35556,20 @@ public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom(
     }
     public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -34225,20 +35577,20 @@ public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseDelimitedFr
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -34258,7 +35610,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -34266,7 +35618,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.AutoBrightnessMultiplier}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.AutoBrightnessMultiplier)
         mentraos.ble.MentraosBle.AutoBrightnessMultiplierOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -34275,7 +35627,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_AutoBrightnessMultiplier_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -34288,7 +35640,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -34335,6 +35687,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.AutoBrightnessMultiplier res
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.AutoBrightnessMultiplier) {
@@ -34347,7 +35731,7 @@ public Builder mergeFrom(com.google.protobuf.Message other) {
 
       public Builder mergeFrom(mentraos.ble.MentraosBle.AutoBrightnessMultiplier other) {
         if (other == mentraos.ble.MentraosBle.AutoBrightnessMultiplier.getDefaultInstance()) return this;
-        if (java.lang.Float.floatToRawIntBits(other.getMultiplier()) != 0) {
+        if (other.getMultiplier() != 0F) {
           setMultiplier(other.getMultiplier());
         }
         this.mergeUnknownFields(other.getUnknownFields());
@@ -34441,6 +35825,18 @@ public Builder clearMultiplier() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.AutoBrightnessMultiplier)
     }
@@ -34537,33 +35933,31 @@ public interface DrawLineOrBuilder extends
    * Protobuf type {@code mentraos.ble.DrawLine}
    */
   public static final class DrawLine extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DrawLine)
       DrawLineOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DrawLine.class.getName());
-    }
     // Use DrawLine.newBuilder() to construct.
-    private DrawLine(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DrawLine(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DrawLine() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DrawLine();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DrawLine_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DrawLine_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -34790,20 +36184,20 @@ public static mentraos.ble.MentraosBle.DrawLine parseFrom(
     }
     public static mentraos.ble.MentraosBle.DrawLine parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DrawLine parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DrawLine parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -34811,20 +36205,20 @@ public static mentraos.ble.MentraosBle.DrawLine parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DrawLine parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DrawLine parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -34844,7 +36238,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -34852,7 +36246,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DrawLine}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DrawLine)
         mentraos.ble.MentraosBle.DrawLineOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -34861,7 +36255,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DrawLine_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -34874,7 +36268,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -34941,6 +36335,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DrawLine result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DrawLine) {
@@ -35235,6 +36661,18 @@ public Builder clearY2() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DrawLine)
     }
@@ -35331,33 +36769,31 @@ public interface DrawRectOrBuilder extends
    * Protobuf type {@code mentraos.ble.DrawRect}
    */
   public static final class DrawRect extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DrawRect)
       DrawRectOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DrawRect.class.getName());
-    }
     // Use DrawRect.newBuilder() to construct.
-    private DrawRect(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DrawRect(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DrawRect() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DrawRect();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DrawRect_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DrawRect_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -35584,20 +37020,20 @@ public static mentraos.ble.MentraosBle.DrawRect parseFrom(
     }
     public static mentraos.ble.MentraosBle.DrawRect parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DrawRect parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DrawRect parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -35605,20 +37041,20 @@ public static mentraos.ble.MentraosBle.DrawRect parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DrawRect parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DrawRect parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -35638,7 +37074,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -35646,7 +37082,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DrawRect}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DrawRect)
         mentraos.ble.MentraosBle.DrawRectOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -35655,7 +37091,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DrawRect_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -35668,7 +37104,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -35735,6 +37171,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DrawRect result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DrawRect) {
@@ -36029,6 +37497,18 @@ public Builder clearHeight() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DrawRect)
     }
@@ -36119,33 +37599,31 @@ public interface DrawCircleOrBuilder extends
    * Protobuf type {@code mentraos.ble.DrawCircle}
    */
   public static final class DrawCircle extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DrawCircle)
       DrawCircleOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DrawCircle.class.getName());
-    }
     // Use DrawCircle.newBuilder() to construct.
-    private DrawCircle(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DrawCircle(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DrawCircle() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DrawCircle();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DrawCircle_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DrawCircle_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -36350,20 +37828,20 @@ public static mentraos.ble.MentraosBle.DrawCircle parseFrom(
     }
     public static mentraos.ble.MentraosBle.DrawCircle parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DrawCircle parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DrawCircle parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -36371,20 +37849,20 @@ public static mentraos.ble.MentraosBle.DrawCircle parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DrawCircle parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DrawCircle parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -36404,7 +37882,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -36412,7 +37890,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DrawCircle}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DrawCircle)
         mentraos.ble.MentraosBle.DrawCircleOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -36421,7 +37899,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DrawCircle_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -36434,7 +37912,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -36497,6 +37975,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DrawCircle result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DrawCircle) {
@@ -36751,6 +38261,18 @@ public Builder clearRadius() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DrawCircle)
     }
@@ -36839,34 +38361,32 @@ mentraos.ble.MentraosBle.DisplayBatch.DisplayCommandOrBuilder getCommandsOrBuild
    * Protobuf type {@code mentraos.ble.DisplayBatch}
    */
   public static final class DisplayBatch extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayBatch)
       DisplayBatchOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayBatch.class.getName());
-    }
     // Use DisplayBatch.newBuilder() to construct.
-    private DisplayBatch(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayBatch(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayBatch() {
       commands_ = java.util.Collections.emptyList();
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayBatch();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayBatch_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayBatch_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -36973,33 +38493,31 @@ public interface DisplayCommandOrBuilder extends
      * Protobuf type {@code mentraos.ble.DisplayBatch.DisplayCommand}
      */
     public static final class DisplayCommand extends
-        com.google.protobuf.GeneratedMessage implements
+        com.google.protobuf.GeneratedMessageV3 implements
         // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayBatch.DisplayCommand)
         DisplayCommandOrBuilder {
     private static final long serialVersionUID = 0L;
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          DisplayCommand.class.getName());
-      }
       // Use DisplayCommand.newBuilder() to construct.
-      private DisplayCommand(com.google.protobuf.GeneratedMessage.Builder builder) {
+      private DisplayCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) {
         super(builder);
       }
       private DisplayCommand() {
       }
 
+      @java.lang.Override
+      @SuppressWarnings({"unused"})
+      protected java.lang.Object newInstance(
+          UnusedPrivateParameter unused) {
+        return new DisplayCommand();
+      }
+
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayBatch_DisplayCommand_descriptor;
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayBatch_DisplayCommand_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -37429,20 +38947,20 @@ public static mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand parseFrom(
       }
       public static mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return com.google.protobuf.GeneratedMessage
+        return com.google.protobuf.GeneratedMessageV3
             .parseWithIOException(PARSER, input);
       }
       public static mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand parseFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return com.google.protobuf.GeneratedMessage
+        return com.google.protobuf.GeneratedMessageV3
             .parseWithIOException(PARSER, input, extensionRegistry);
       }
 
       public static mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return com.google.protobuf.GeneratedMessage
+        return com.google.protobuf.GeneratedMessageV3
             .parseDelimitedWithIOException(PARSER, input);
       }
 
@@ -37450,20 +38968,20 @@ public static mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand parseDelimite
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return com.google.protobuf.GeneratedMessage
+        return com.google.protobuf.GeneratedMessageV3
             .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
       }
       public static mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand parseFrom(
           com.google.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return com.google.protobuf.GeneratedMessage
+        return com.google.protobuf.GeneratedMessageV3
             .parseWithIOException(PARSER, input);
       }
       public static mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand parseFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return com.google.protobuf.GeneratedMessage
+        return com.google.protobuf.GeneratedMessageV3
             .parseWithIOException(PARSER, input, extensionRegistry);
       }
 
@@ -37483,7 +39001,7 @@ public Builder toBuilder() {
 
       @java.lang.Override
       protected Builder newBuilderForType(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         Builder builder = new Builder(parent);
         return builder;
       }
@@ -37491,7 +39009,7 @@ protected Builder newBuilderForType(
        * Protobuf type {@code mentraos.ble.DisplayBatch.DisplayCommand}
        */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder implements
+          com.google.protobuf.GeneratedMessageV3.Builder implements
           // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayBatch.DisplayCommand)
           mentraos.ble.MentraosBle.DisplayBatch.DisplayCommandOrBuilder {
         public static final com.google.protobuf.Descriptors.Descriptor
@@ -37500,7 +39018,7 @@ public static final class Builder extends
         }
 
         @java.lang.Override
-        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
             internalGetFieldAccessorTable() {
           return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayBatch_DisplayCommand_fieldAccessorTable
               .ensureFieldAccessorsInitialized(
@@ -37513,7 +39031,7 @@ private Builder() {
         }
 
         private Builder(
-            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
           super(parent);
 
         }
@@ -37606,6 +39124,38 @@ private void buildPartialOneofs(mentraos.ble.MentraosBle.DisplayBatch.DisplayCom
           }
         }
 
+        @java.lang.Override
+        public Builder clone() {
+          return super.clone();
+        }
+        @java.lang.Override
+        public Builder setField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return super.setField(field, value);
+        }
+        @java.lang.Override
+        public Builder clearField(
+            com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return super.clearField(field);
+        }
+        @java.lang.Override
+        public Builder clearOneof(
+            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return super.clearOneof(oneof);
+        }
+        @java.lang.Override
+        public Builder setRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            int index, java.lang.Object value) {
+          return super.setRepeatedField(field, index, value);
+        }
+        @java.lang.Override
+        public Builder addRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return super.addRepeatedField(field, value);
+        }
         @java.lang.Override
         public Builder mergeFrom(com.google.protobuf.Message other) {
           if (other instanceof mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand) {
@@ -37675,42 +39225,42 @@ public Builder mergeFrom(
                   break;
                 case 10: {
                   input.readMessage(
-                      internalGetTextFieldBuilder().getBuilder(),
+                      getTextFieldBuilder().getBuilder(),
                       extensionRegistry);
                   commandCase_ = 1;
                   break;
                 } // case 10
                 case 18: {
                   input.readMessage(
-                      internalGetCachedImageFieldBuilder().getBuilder(),
+                      getCachedImageFieldBuilder().getBuilder(),
                       extensionRegistry);
                   commandCase_ = 2;
                   break;
                 } // case 18
                 case 26: {
                   input.readMessage(
-                      internalGetLineFieldBuilder().getBuilder(),
+                      getLineFieldBuilder().getBuilder(),
                       extensionRegistry);
                   commandCase_ = 3;
                   break;
                 } // case 26
                 case 34: {
                   input.readMessage(
-                      internalGetRectFieldBuilder().getBuilder(),
+                      getRectFieldBuilder().getBuilder(),
                       extensionRegistry);
                   commandCase_ = 4;
                   break;
                 } // case 34
                 case 42: {
                   input.readMessage(
-                      internalGetCircleFieldBuilder().getBuilder(),
+                      getCircleFieldBuilder().getBuilder(),
                       extensionRegistry);
                   commandCase_ = 5;
                   break;
                 } // case 42
                 case 50: {
                   input.readMessage(
-                      internalGetScrollingTextFieldBuilder().getBuilder(),
+                      getScrollingTextFieldBuilder().getBuilder(),
                       extensionRegistry);
                   commandCase_ = 6;
                   break;
@@ -37747,7 +39297,7 @@ public Builder clearCommand() {
 
         private int bitField0_;
 
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DisplayText, mentraos.ble.MentraosBle.DisplayText.Builder, mentraos.ble.MentraosBle.DisplayTextOrBuilder> textBuilder_;
         /**
          * .mentraos.ble.DisplayText text = 1;
@@ -37851,7 +39401,7 @@ public Builder clearText() {
          * .mentraos.ble.DisplayText text = 1;
          */
         public mentraos.ble.MentraosBle.DisplayText.Builder getTextBuilder() {
-          return internalGetTextFieldBuilder().getBuilder();
+          return getTextFieldBuilder().getBuilder();
         }
         /**
          * .mentraos.ble.DisplayText text = 1;
@@ -37870,14 +39420,14 @@ public mentraos.ble.MentraosBle.DisplayTextOrBuilder getTextOrBuilder() {
         /**
          * .mentraos.ble.DisplayText text = 1;
          */
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DisplayText, mentraos.ble.MentraosBle.DisplayText.Builder, mentraos.ble.MentraosBle.DisplayTextOrBuilder> 
-            internalGetTextFieldBuilder() {
+            getTextFieldBuilder() {
           if (textBuilder_ == null) {
             if (!(commandCase_ == 1)) {
               command_ = mentraos.ble.MentraosBle.DisplayText.getDefaultInstance();
             }
-            textBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+            textBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                 mentraos.ble.MentraosBle.DisplayText, mentraos.ble.MentraosBle.DisplayText.Builder, mentraos.ble.MentraosBle.DisplayTextOrBuilder>(
                     (mentraos.ble.MentraosBle.DisplayText) command_,
                     getParentForChildren(),
@@ -37889,7 +39439,7 @@ public mentraos.ble.MentraosBle.DisplayTextOrBuilder getTextOrBuilder() {
           return textBuilder_;
         }
 
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DisplayCachedImage, mentraos.ble.MentraosBle.DisplayCachedImage.Builder, mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder> cachedImageBuilder_;
         /**
          * .mentraos.ble.DisplayCachedImage cached_image = 2;
@@ -37993,7 +39543,7 @@ public Builder clearCachedImage() {
          * .mentraos.ble.DisplayCachedImage cached_image = 2;
          */
         public mentraos.ble.MentraosBle.DisplayCachedImage.Builder getCachedImageBuilder() {
-          return internalGetCachedImageFieldBuilder().getBuilder();
+          return getCachedImageFieldBuilder().getBuilder();
         }
         /**
          * .mentraos.ble.DisplayCachedImage cached_image = 2;
@@ -38012,14 +39562,14 @@ public mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder getCachedImageOrBuil
         /**
          * .mentraos.ble.DisplayCachedImage cached_image = 2;
          */
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DisplayCachedImage, mentraos.ble.MentraosBle.DisplayCachedImage.Builder, mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder> 
-            internalGetCachedImageFieldBuilder() {
+            getCachedImageFieldBuilder() {
           if (cachedImageBuilder_ == null) {
             if (!(commandCase_ == 2)) {
               command_ = mentraos.ble.MentraosBle.DisplayCachedImage.getDefaultInstance();
             }
-            cachedImageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+            cachedImageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                 mentraos.ble.MentraosBle.DisplayCachedImage, mentraos.ble.MentraosBle.DisplayCachedImage.Builder, mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder>(
                     (mentraos.ble.MentraosBle.DisplayCachedImage) command_,
                     getParentForChildren(),
@@ -38031,7 +39581,7 @@ public mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder getCachedImageOrBuil
           return cachedImageBuilder_;
         }
 
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DrawLine, mentraos.ble.MentraosBle.DrawLine.Builder, mentraos.ble.MentraosBle.DrawLineOrBuilder> lineBuilder_;
         /**
          * .mentraos.ble.DrawLine line = 3;
@@ -38135,7 +39685,7 @@ public Builder clearLine() {
          * .mentraos.ble.DrawLine line = 3;
          */
         public mentraos.ble.MentraosBle.DrawLine.Builder getLineBuilder() {
-          return internalGetLineFieldBuilder().getBuilder();
+          return getLineFieldBuilder().getBuilder();
         }
         /**
          * .mentraos.ble.DrawLine line = 3;
@@ -38154,14 +39704,14 @@ public mentraos.ble.MentraosBle.DrawLineOrBuilder getLineOrBuilder() {
         /**
          * .mentraos.ble.DrawLine line = 3;
          */
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DrawLine, mentraos.ble.MentraosBle.DrawLine.Builder, mentraos.ble.MentraosBle.DrawLineOrBuilder> 
-            internalGetLineFieldBuilder() {
+            getLineFieldBuilder() {
           if (lineBuilder_ == null) {
             if (!(commandCase_ == 3)) {
               command_ = mentraos.ble.MentraosBle.DrawLine.getDefaultInstance();
             }
-            lineBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+            lineBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                 mentraos.ble.MentraosBle.DrawLine, mentraos.ble.MentraosBle.DrawLine.Builder, mentraos.ble.MentraosBle.DrawLineOrBuilder>(
                     (mentraos.ble.MentraosBle.DrawLine) command_,
                     getParentForChildren(),
@@ -38173,7 +39723,7 @@ public mentraos.ble.MentraosBle.DrawLineOrBuilder getLineOrBuilder() {
           return lineBuilder_;
         }
 
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DrawRect, mentraos.ble.MentraosBle.DrawRect.Builder, mentraos.ble.MentraosBle.DrawRectOrBuilder> rectBuilder_;
         /**
          * .mentraos.ble.DrawRect rect = 4;
@@ -38277,7 +39827,7 @@ public Builder clearRect() {
          * .mentraos.ble.DrawRect rect = 4;
          */
         public mentraos.ble.MentraosBle.DrawRect.Builder getRectBuilder() {
-          return internalGetRectFieldBuilder().getBuilder();
+          return getRectFieldBuilder().getBuilder();
         }
         /**
          * .mentraos.ble.DrawRect rect = 4;
@@ -38296,14 +39846,14 @@ public mentraos.ble.MentraosBle.DrawRectOrBuilder getRectOrBuilder() {
         /**
          * .mentraos.ble.DrawRect rect = 4;
          */
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DrawRect, mentraos.ble.MentraosBle.DrawRect.Builder, mentraos.ble.MentraosBle.DrawRectOrBuilder> 
-            internalGetRectFieldBuilder() {
+            getRectFieldBuilder() {
           if (rectBuilder_ == null) {
             if (!(commandCase_ == 4)) {
               command_ = mentraos.ble.MentraosBle.DrawRect.getDefaultInstance();
             }
-            rectBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+            rectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                 mentraos.ble.MentraosBle.DrawRect, mentraos.ble.MentraosBle.DrawRect.Builder, mentraos.ble.MentraosBle.DrawRectOrBuilder>(
                     (mentraos.ble.MentraosBle.DrawRect) command_,
                     getParentForChildren(),
@@ -38315,7 +39865,7 @@ public mentraos.ble.MentraosBle.DrawRectOrBuilder getRectOrBuilder() {
           return rectBuilder_;
         }
 
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DrawCircle, mentraos.ble.MentraosBle.DrawCircle.Builder, mentraos.ble.MentraosBle.DrawCircleOrBuilder> circleBuilder_;
         /**
          * .mentraos.ble.DrawCircle circle = 5;
@@ -38419,7 +39969,7 @@ public Builder clearCircle() {
          * .mentraos.ble.DrawCircle circle = 5;
          */
         public mentraos.ble.MentraosBle.DrawCircle.Builder getCircleBuilder() {
-          return internalGetCircleFieldBuilder().getBuilder();
+          return getCircleFieldBuilder().getBuilder();
         }
         /**
          * .mentraos.ble.DrawCircle circle = 5;
@@ -38438,14 +39988,14 @@ public mentraos.ble.MentraosBle.DrawCircleOrBuilder getCircleOrBuilder() {
         /**
          * .mentraos.ble.DrawCircle circle = 5;
          */
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DrawCircle, mentraos.ble.MentraosBle.DrawCircle.Builder, mentraos.ble.MentraosBle.DrawCircleOrBuilder> 
-            internalGetCircleFieldBuilder() {
+            getCircleFieldBuilder() {
           if (circleBuilder_ == null) {
             if (!(commandCase_ == 5)) {
               command_ = mentraos.ble.MentraosBle.DrawCircle.getDefaultInstance();
             }
-            circleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+            circleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                 mentraos.ble.MentraosBle.DrawCircle, mentraos.ble.MentraosBle.DrawCircle.Builder, mentraos.ble.MentraosBle.DrawCircleOrBuilder>(
                     (mentraos.ble.MentraosBle.DrawCircle) command_,
                     getParentForChildren(),
@@ -38457,7 +40007,7 @@ public mentraos.ble.MentraosBle.DrawCircleOrBuilder getCircleOrBuilder() {
           return circleBuilder_;
         }
 
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DisplayScrollingText, mentraos.ble.MentraosBle.DisplayScrollingText.Builder, mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder> scrollingTextBuilder_;
         /**
          * .mentraos.ble.DisplayScrollingText scrolling_text = 6;
@@ -38561,7 +40111,7 @@ public Builder clearScrollingText() {
          * .mentraos.ble.DisplayScrollingText scrolling_text = 6;
          */
         public mentraos.ble.MentraosBle.DisplayScrollingText.Builder getScrollingTextBuilder() {
-          return internalGetScrollingTextFieldBuilder().getBuilder();
+          return getScrollingTextFieldBuilder().getBuilder();
         }
         /**
          * .mentraos.ble.DisplayScrollingText scrolling_text = 6;
@@ -38580,14 +40130,14 @@ public mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder getScrollingTextOr
         /**
          * .mentraos.ble.DisplayScrollingText scrolling_text = 6;
          */
-        private com.google.protobuf.SingleFieldBuilder<
+        private com.google.protobuf.SingleFieldBuilderV3<
             mentraos.ble.MentraosBle.DisplayScrollingText, mentraos.ble.MentraosBle.DisplayScrollingText.Builder, mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder> 
-            internalGetScrollingTextFieldBuilder() {
+            getScrollingTextFieldBuilder() {
           if (scrollingTextBuilder_ == null) {
             if (!(commandCase_ == 6)) {
               command_ = mentraos.ble.MentraosBle.DisplayScrollingText.getDefaultInstance();
             }
-            scrollingTextBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+            scrollingTextBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                 mentraos.ble.MentraosBle.DisplayScrollingText, mentraos.ble.MentraosBle.DisplayScrollingText.Builder, mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder>(
                     (mentraos.ble.MentraosBle.DisplayScrollingText) command_,
                     getParentForChildren(),
@@ -38598,6 +40148,18 @@ public mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder getScrollingTextOr
           onChanged();
           return scrollingTextBuilder_;
         }
+        @java.lang.Override
+        public final Builder setUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.setUnknownFields(unknownFields);
+        }
+
+        @java.lang.Override
+        public final Builder mergeUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.mergeUnknownFields(unknownFields);
+        }
+
 
         // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayBatch.DisplayCommand)
       }
@@ -38792,20 +40354,20 @@ public static mentraos.ble.MentraosBle.DisplayBatch parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayBatch parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayBatch parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayBatch parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -38813,20 +40375,20 @@ public static mentraos.ble.MentraosBle.DisplayBatch parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayBatch parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayBatch parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -38846,7 +40408,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -38858,7 +40420,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayBatch}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayBatch)
         mentraos.ble.MentraosBle.DisplayBatchOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -38867,7 +40429,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayBatch_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -38880,7 +40442,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -38943,6 +40505,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DisplayBatch result) {
         int from_bitField0_ = bitField0_;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayBatch) {
@@ -38974,8 +40568,8 @@ public Builder mergeFrom(mentraos.ble.MentraosBle.DisplayBatch other) {
               commands_ = other.commands_;
               bitField0_ = (bitField0_ & ~0x00000001);
               commandsBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   internalGetCommandsFieldBuilder() : null;
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getCommandsFieldBuilder() : null;
             } else {
               commandsBuilder_.addAllMessages(other.commands_);
             }
@@ -39046,7 +40640,7 @@ private void ensureCommandsIsMutable() {
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand, mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.Builder, mentraos.ble.MentraosBle.DisplayBatch.DisplayCommandOrBuilder> commandsBuilder_;
 
       /**
@@ -39217,7 +40811,7 @@ public Builder removeCommands(int index) {
        */
       public mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.Builder getCommandsBuilder(
           int index) {
-        return internalGetCommandsFieldBuilder().getBuilder(index);
+        return getCommandsFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .mentraos.ble.DisplayBatch.DisplayCommand commands = 1;
@@ -39244,7 +40838,7 @@ public mentraos.ble.MentraosBle.DisplayBatch.DisplayCommandOrBuilder getCommands
        * repeated .mentraos.ble.DisplayBatch.DisplayCommand commands = 1;
        */
       public mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.Builder addCommandsBuilder() {
-        return internalGetCommandsFieldBuilder().addBuilder(
+        return getCommandsFieldBuilder().addBuilder(
             mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.getDefaultInstance());
       }
       /**
@@ -39252,7 +40846,7 @@ public mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.Builder addCommandsB
        */
       public mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.Builder addCommandsBuilder(
           int index) {
-        return internalGetCommandsFieldBuilder().addBuilder(
+        return getCommandsFieldBuilder().addBuilder(
             index, mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.getDefaultInstance());
       }
       /**
@@ -39260,13 +40854,13 @@ public mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.Builder addCommandsB
        */
       public java.util.List 
            getCommandsBuilderList() {
-        return internalGetCommandsFieldBuilder().getBuilderList();
+        return getCommandsFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand, mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.Builder, mentraos.ble.MentraosBle.DisplayBatch.DisplayCommandOrBuilder> 
-          internalGetCommandsFieldBuilder() {
+          getCommandsFieldBuilder() {
         if (commandsBuilder_ == null) {
-          commandsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+          commandsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand, mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.Builder, mentraos.ble.MentraosBle.DisplayBatch.DisplayCommandOrBuilder>(
                   commands_,
                   ((bitField0_ & 0x00000001) != 0),
@@ -39276,6 +40870,18 @@ public mentraos.ble.MentraosBle.DisplayBatch.DisplayCommand.Builder addCommandsB
         }
         return commandsBuilder_;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayBatch)
     }
@@ -39351,33 +40957,31 @@ public interface CommitDisplayOrBuilder extends
    * Protobuf type {@code mentraos.ble.CommitDisplay}
    */
   public static final class CommitDisplay extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.CommitDisplay)
       CommitDisplayOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        CommitDisplay.class.getName());
-    }
     // Use CommitDisplay.newBuilder() to construct.
-    private CommitDisplay(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private CommitDisplay(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private CommitDisplay() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new CommitDisplay();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_CommitDisplay_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_CommitDisplay_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -39499,20 +41103,20 @@ public static mentraos.ble.MentraosBle.CommitDisplay parseFrom(
     }
     public static mentraos.ble.MentraosBle.CommitDisplay parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.CommitDisplay parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.CommitDisplay parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -39520,20 +41124,20 @@ public static mentraos.ble.MentraosBle.CommitDisplay parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.CommitDisplay parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.CommitDisplay parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -39553,7 +41157,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -39566,7 +41170,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.CommitDisplay}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.CommitDisplay)
         mentraos.ble.MentraosBle.CommitDisplayOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -39575,7 +41179,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_CommitDisplay_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -39588,7 +41192,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -39635,6 +41239,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.CommitDisplay result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.CommitDisplay) {
@@ -39741,6 +41377,18 @@ public Builder clearClearBefore() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.CommitDisplay)
     }
@@ -39805,33 +41453,31 @@ public interface ClearDisplayOrBuilder extends
    * Protobuf type {@code mentraos.ble.ClearDisplay}
    */
   public static final class ClearDisplay extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ClearDisplay)
       ClearDisplayOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ClearDisplay.class.getName());
-    }
     // Use ClearDisplay.newBuilder() to construct.
-    private ClearDisplay(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ClearDisplay(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ClearDisplay() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ClearDisplay();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ClearDisplay_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ClearDisplay_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -39926,20 +41572,20 @@ public static mentraos.ble.MentraosBle.ClearDisplay parseFrom(
     }
     public static mentraos.ble.MentraosBle.ClearDisplay parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ClearDisplay parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ClearDisplay parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -39947,20 +41593,20 @@ public static mentraos.ble.MentraosBle.ClearDisplay parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ClearDisplay parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ClearDisplay parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -39980,7 +41626,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -39992,7 +41638,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ClearDisplay}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ClearDisplay)
         mentraos.ble.MentraosBle.ClearDisplayOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -40001,7 +41647,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ClearDisplay_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -40014,7 +41660,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -40051,6 +41697,38 @@ public mentraos.ble.MentraosBle.ClearDisplay buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ClearDisplay) {
@@ -40104,6 +41782,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ClearDisplay)
     }
@@ -40168,33 +41858,31 @@ public interface DisplayQueueStatusOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisplayQueueStatus}
    */
   public static final class DisplayQueueStatus extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayQueueStatus)
       DisplayQueueStatusOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayQueueStatus.class.getName());
-    }
     // Use DisplayQueueStatus.newBuilder() to construct.
-    private DisplayQueueStatus(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayQueueStatus(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayQueueStatus() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayQueueStatus();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayQueueStatus_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayQueueStatus_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -40289,20 +41977,20 @@ public static mentraos.ble.MentraosBle.DisplayQueueStatus parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayQueueStatus parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayQueueStatus parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayQueueStatus parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -40310,20 +41998,20 @@ public static mentraos.ble.MentraosBle.DisplayQueueStatus parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayQueueStatus parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayQueueStatus parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -40343,7 +42031,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -40355,7 +42043,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayQueueStatus}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayQueueStatus)
         mentraos.ble.MentraosBle.DisplayQueueStatusOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -40364,7 +42052,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayQueueStatus_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -40377,7 +42065,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -40414,6 +42102,38 @@ public mentraos.ble.MentraosBle.DisplayQueueStatus buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayQueueStatus) {
@@ -40467,6 +42187,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayQueueStatus)
     }
@@ -40571,33 +42303,31 @@ public interface DisplayQueueInfoOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisplayQueueInfo}
    */
   public static final class DisplayQueueInfo extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayQueueInfo)
       DisplayQueueInfoOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayQueueInfo.class.getName());
-    }
     // Use DisplayQueueInfo.newBuilder() to construct.
-    private DisplayQueueInfo(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayQueueInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayQueueInfo() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayQueueInfo();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayQueueInfo_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayQueueInfo_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -40797,20 +42527,20 @@ public static mentraos.ble.MentraosBle.DisplayQueueInfo parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayQueueInfo parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayQueueInfo parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayQueueInfo parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -40818,20 +42548,20 @@ public static mentraos.ble.MentraosBle.DisplayQueueInfo parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayQueueInfo parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayQueueInfo parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -40851,7 +42581,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -40863,7 +42593,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayQueueInfo}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayQueueInfo)
         mentraos.ble.MentraosBle.DisplayQueueInfoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -40872,7 +42602,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayQueueInfo_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -40885,7 +42615,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -40944,6 +42674,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DisplayQueueInfo result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayQueueInfo) {
@@ -41206,6 +42968,18 @@ public Builder clearLastCommitSuccess() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayQueueInfo)
     }
@@ -41272,33 +43046,31 @@ public interface DisplayDistanceConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisplayDistanceConfig}
    */
   public static final class DisplayDistanceConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayDistanceConfig)
       DisplayDistanceConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayDistanceConfig.class.getName());
-    }
     // Use DisplayDistanceConfig.newBuilder() to construct.
-    private DisplayDistanceConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayDistanceConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayDistanceConfig() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayDistanceConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayDistanceConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayDistanceConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -41415,20 +43187,20 @@ public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -41436,20 +43208,20 @@ public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -41469,7 +43241,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -41477,7 +43249,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayDistanceConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayDistanceConfig)
         mentraos.ble.MentraosBle.DisplayDistanceConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -41486,7 +43258,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayDistanceConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -41499,7 +43271,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -41546,6 +43318,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DisplayDistanceConfig result
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayDistanceConfig) {
@@ -41640,6 +43444,18 @@ public Builder clearDistanceCm() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayDistanceConfig)
     }
@@ -41706,33 +43522,31 @@ public interface DisplayHeightConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.DisplayHeightConfig}
    */
   public static final class DisplayHeightConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayHeightConfig)
       DisplayHeightConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DisplayHeightConfig.class.getName());
-    }
     // Use DisplayHeightConfig.newBuilder() to construct.
-    private DisplayHeightConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DisplayHeightConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DisplayHeightConfig() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DisplayHeightConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayHeightConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayHeightConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -41849,20 +43663,20 @@ public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DisplayHeightConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -41870,20 +43684,20 @@ public static mentraos.ble.MentraosBle.DisplayHeightConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -41903,7 +43717,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -41911,7 +43725,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DisplayHeightConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayHeightConfig)
         mentraos.ble.MentraosBle.DisplayHeightConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -41920,7 +43734,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DisplayHeightConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -41933,7 +43747,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -41980,6 +43794,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DisplayHeightConfig result)
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DisplayHeightConfig) {
@@ -42074,6 +43920,18 @@ public Builder clearHeight() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayHeightConfig)
     }
@@ -42186,21 +44044,12 @@ public interface ImageTransferCompleteOrBuilder extends
    * Protobuf type {@code mentraos.ble.ImageTransferComplete}
    */
   public static final class ImageTransferComplete extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ImageTransferComplete)
       ImageTransferCompleteOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ImageTransferComplete.class.getName());
-    }
     // Use ImageTransferComplete.newBuilder() to construct.
-    private ImageTransferComplete(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ImageTransferComplete(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ImageTransferComplete() {
@@ -42209,13 +44058,20 @@ private ImageTransferComplete() {
       missingChunks_ = emptyIntList();
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ImageTransferComplete();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImageTransferComplete_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImageTransferComplete_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -42238,15 +44094,6 @@ public enum Status
       UNRECOGNIZED(-1),
       ;
 
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          Status.class.getName());
-      }
       /**
        * OK = 0;
        */
@@ -42311,7 +44158,7 @@ public Status findValueByNumber(int number) {
           getDescriptorForType() {
         return getDescriptor();
       }
-      public static com.google.protobuf.Descriptors.EnumDescriptor
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.ImageTransferComplete.getDescriptor().getEnumTypes().get(0);
       }
@@ -42453,8 +44300,8 @@ public final boolean isInitialized() {
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(streamId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, streamId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(streamId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, streamId_);
       }
       if (status_ != mentraos.ble.MentraosBle.ImageTransferComplete.Status.OK.getNumber()) {
         output.writeEnum(2, status_);
@@ -42475,8 +44322,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(streamId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, streamId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(streamId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, streamId_);
       }
       if (status_ != mentraos.ble.MentraosBle.ImageTransferComplete.Status.OK.getNumber()) {
         size += com.google.protobuf.CodedOutputStream
@@ -42574,20 +44421,20 @@ public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom(
     }
     public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ImageTransferComplete parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -42595,20 +44442,20 @@ public static mentraos.ble.MentraosBle.ImageTransferComplete parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -42628,7 +44475,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -42636,7 +44483,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ImageTransferComplete}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ImageTransferComplete)
         mentraos.ble.MentraosBle.ImageTransferCompleteOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -42645,7 +44492,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImageTransferComplete_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -42658,7 +44505,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -42714,6 +44561,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.ImageTransferComplete result
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ImageTransferComplete) {
@@ -42920,7 +44799,9 @@ public mentraos.ble.MentraosBle.ImageTransferComplete.Status getStatus() {
        * @return This builder for chaining.
        */
       public Builder setStatus(mentraos.ble.MentraosBle.ImageTransferComplete.Status value) {
-        if (value == null) { throw new NullPointerException(); }
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000002;
         status_ = value.getNumber();
         onChanged();
@@ -43048,6 +44929,18 @@ public Builder clearMissingChunks() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ImageTransferComplete)
     }
@@ -43114,33 +45007,31 @@ public interface ImuEnabledConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.ImuEnabledConfig}
    */
   public static final class ImuEnabledConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ImuEnabledConfig)
       ImuEnabledConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ImuEnabledConfig.class.getName());
-    }
     // Use ImuEnabledConfig.newBuilder() to construct.
-    private ImuEnabledConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ImuEnabledConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ImuEnabledConfig() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ImuEnabledConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuEnabledConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuEnabledConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -43258,20 +45149,20 @@ public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ImuEnabledConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -43279,20 +45170,20 @@ public static mentraos.ble.MentraosBle.ImuEnabledConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -43312,7 +45203,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -43320,7 +45211,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ImuEnabledConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ImuEnabledConfig)
         mentraos.ble.MentraosBle.ImuEnabledConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -43329,7 +45220,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuEnabledConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -43342,7 +45233,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -43389,6 +45280,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.ImuEnabledConfig result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ImuEnabledConfig) {
@@ -43483,6 +45406,18 @@ public Builder clearEnabled() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ImuEnabledConfig)
     }
@@ -43543,33 +45478,31 @@ public interface ImuSingleRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.ImuSingleRequest}
    */
   public static final class ImuSingleRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ImuSingleRequest)
       ImuSingleRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ImuSingleRequest.class.getName());
-    }
     // Use ImuSingleRequest.newBuilder() to construct.
-    private ImuSingleRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ImuSingleRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ImuSingleRequest() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ImuSingleRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuSingleRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuSingleRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -43664,20 +45597,20 @@ public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ImuSingleRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -43685,20 +45618,20 @@ public static mentraos.ble.MentraosBle.ImuSingleRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -43718,7 +45651,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -43726,7 +45659,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ImuSingleRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ImuSingleRequest)
         mentraos.ble.MentraosBle.ImuSingleRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -43735,7 +45668,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuSingleRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -43748,7 +45681,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -43785,6 +45718,38 @@ public mentraos.ble.MentraosBle.ImuSingleRequest buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ImuSingleRequest) {
@@ -43838,6 +45803,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ImuSingleRequest)
     }
@@ -43904,33 +45881,31 @@ public interface ImuStreamConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.ImuStreamConfig}
    */
   public static final class ImuStreamConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ImuStreamConfig)
       ImuStreamConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ImuStreamConfig.class.getName());
-    }
     // Use ImuStreamConfig.newBuilder() to construct.
-    private ImuStreamConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ImuStreamConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ImuStreamConfig() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ImuStreamConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuStreamConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuStreamConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -44048,20 +46023,20 @@ public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ImuStreamConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -44069,20 +46044,20 @@ public static mentraos.ble.MentraosBle.ImuStreamConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -44102,7 +46077,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -44110,7 +46085,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ImuStreamConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ImuStreamConfig)
         mentraos.ble.MentraosBle.ImuStreamConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -44119,7 +46094,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuStreamConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -44132,7 +46107,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -44179,6 +46154,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.ImuStreamConfig result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ImuStreamConfig) {
@@ -44273,6 +46280,18 @@ public Builder clearEnabled() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ImuStreamConfig)
     }
@@ -44378,33 +46397,31 @@ public interface ImuDataOrBuilder extends
    * Protobuf type {@code mentraos.ble.ImuData}
    */
   public static final class ImuData extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ImuData)
       ImuDataOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ImuData.class.getName());
-    }
     // Use ImuData.newBuilder() to construct.
-    private ImuData(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ImuData(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ImuData() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ImuData();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuData_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuData_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -44626,20 +46643,20 @@ public static mentraos.ble.MentraosBle.ImuData parseFrom(
     }
     public static mentraos.ble.MentraosBle.ImuData parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImuData parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ImuData parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -44647,20 +46664,20 @@ public static mentraos.ble.MentraosBle.ImuData parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ImuData parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ImuData parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -44680,7 +46697,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -44688,7 +46705,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ImuData}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ImuData)
         mentraos.ble.MentraosBle.ImuDataOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -44697,7 +46714,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ImuData_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -44710,16 +46727,16 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage
+        if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          internalGetAccelFieldBuilder();
-          internalGetGyroFieldBuilder();
-          internalGetMagFieldBuilder();
+          getAccelFieldBuilder();
+          getGyroFieldBuilder();
+          getMagFieldBuilder();
         }
       }
       @java.lang.Override
@@ -44796,6 +46813,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.ImuData result) {
         result.bitField0_ |= to_bitField0_;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ImuData) {
@@ -44845,21 +46894,21 @@ public Builder mergeFrom(
                 break;
               case 10: {
                 input.readMessage(
-                    internalGetAccelFieldBuilder().getBuilder(),
+                    getAccelFieldBuilder().getBuilder(),
                     extensionRegistry);
                 bitField0_ |= 0x00000001;
                 break;
               } // case 10
               case 18: {
                 input.readMessage(
-                    internalGetGyroFieldBuilder().getBuilder(),
+                    getGyroFieldBuilder().getBuilder(),
                     extensionRegistry);
                 bitField0_ |= 0x00000002;
                 break;
               } // case 18
               case 26: {
                 input.readMessage(
-                    internalGetMagFieldBuilder().getBuilder(),
+                    getMagFieldBuilder().getBuilder(),
                     extensionRegistry);
                 bitField0_ |= 0x00000004;
                 break;
@@ -44882,7 +46931,7 @@ public Builder mergeFrom(
       private int bitField0_;
 
       private mentraos.ble.MentraosBle.Vector3 accel_;
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.Vector3, mentraos.ble.MentraosBle.Vector3.Builder, mentraos.ble.MentraosBle.Vector3OrBuilder> accelBuilder_;
       /**
        * .mentraos.ble.Vector3 accel = 1;
@@ -44972,7 +47021,7 @@ public Builder clearAccel() {
       public mentraos.ble.MentraosBle.Vector3.Builder getAccelBuilder() {
         bitField0_ |= 0x00000001;
         onChanged();
-        return internalGetAccelFieldBuilder().getBuilder();
+        return getAccelFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.Vector3 accel = 1;
@@ -44988,11 +47037,11 @@ public mentraos.ble.MentraosBle.Vector3OrBuilder getAccelOrBuilder() {
       /**
        * .mentraos.ble.Vector3 accel = 1;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.Vector3, mentraos.ble.MentraosBle.Vector3.Builder, mentraos.ble.MentraosBle.Vector3OrBuilder> 
-          internalGetAccelFieldBuilder() {
+          getAccelFieldBuilder() {
         if (accelBuilder_ == null) {
-          accelBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          accelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.Vector3, mentraos.ble.MentraosBle.Vector3.Builder, mentraos.ble.MentraosBle.Vector3OrBuilder>(
                   getAccel(),
                   getParentForChildren(),
@@ -45003,7 +47052,7 @@ public mentraos.ble.MentraosBle.Vector3OrBuilder getAccelOrBuilder() {
       }
 
       private mentraos.ble.MentraosBle.Vector3 gyro_;
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.Vector3, mentraos.ble.MentraosBle.Vector3.Builder, mentraos.ble.MentraosBle.Vector3OrBuilder> gyroBuilder_;
       /**
        * .mentraos.ble.Vector3 gyro = 2;
@@ -45093,7 +47142,7 @@ public Builder clearGyro() {
       public mentraos.ble.MentraosBle.Vector3.Builder getGyroBuilder() {
         bitField0_ |= 0x00000002;
         onChanged();
-        return internalGetGyroFieldBuilder().getBuilder();
+        return getGyroFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.Vector3 gyro = 2;
@@ -45109,11 +47158,11 @@ public mentraos.ble.MentraosBle.Vector3OrBuilder getGyroOrBuilder() {
       /**
        * .mentraos.ble.Vector3 gyro = 2;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.Vector3, mentraos.ble.MentraosBle.Vector3.Builder, mentraos.ble.MentraosBle.Vector3OrBuilder> 
-          internalGetGyroFieldBuilder() {
+          getGyroFieldBuilder() {
         if (gyroBuilder_ == null) {
-          gyroBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          gyroBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.Vector3, mentraos.ble.MentraosBle.Vector3.Builder, mentraos.ble.MentraosBle.Vector3OrBuilder>(
                   getGyro(),
                   getParentForChildren(),
@@ -45124,7 +47173,7 @@ public mentraos.ble.MentraosBle.Vector3OrBuilder getGyroOrBuilder() {
       }
 
       private mentraos.ble.MentraosBle.Vector3 mag_;
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.Vector3, mentraos.ble.MentraosBle.Vector3.Builder, mentraos.ble.MentraosBle.Vector3OrBuilder> magBuilder_;
       /**
        * .mentraos.ble.Vector3 mag = 3;
@@ -45214,7 +47263,7 @@ public Builder clearMag() {
       public mentraos.ble.MentraosBle.Vector3.Builder getMagBuilder() {
         bitField0_ |= 0x00000004;
         onChanged();
-        return internalGetMagFieldBuilder().getBuilder();
+        return getMagFieldBuilder().getBuilder();
       }
       /**
        * .mentraos.ble.Vector3 mag = 3;
@@ -45230,11 +47279,11 @@ public mentraos.ble.MentraosBle.Vector3OrBuilder getMagOrBuilder() {
       /**
        * .mentraos.ble.Vector3 mag = 3;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.Vector3, mentraos.ble.MentraosBle.Vector3.Builder, mentraos.ble.MentraosBle.Vector3OrBuilder> 
-          internalGetMagFieldBuilder() {
+          getMagFieldBuilder() {
         if (magBuilder_ == null) {
-          magBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          magBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.Vector3, mentraos.ble.MentraosBle.Vector3.Builder, mentraos.ble.MentraosBle.Vector3OrBuilder>(
                   getMag(),
                   getParentForChildren(),
@@ -45243,6 +47292,18 @@ public mentraos.ble.MentraosBle.Vector3OrBuilder getMagOrBuilder() {
         }
         return magBuilder_;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ImuData)
     }
@@ -45321,33 +47382,31 @@ public interface Vector3OrBuilder extends
    * Protobuf type {@code mentraos.ble.Vector3}
    */
   public static final class Vector3 extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.Vector3)
       Vector3OrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        Vector3.class.getName());
-    }
     // Use Vector3.newBuilder() to construct.
-    private Vector3(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private Vector3(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private Vector3() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new Vector3();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_Vector3_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_Vector3_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -45514,20 +47573,20 @@ public static mentraos.ble.MentraosBle.Vector3 parseFrom(
     }
     public static mentraos.ble.MentraosBle.Vector3 parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.Vector3 parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.Vector3 parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -45535,20 +47594,20 @@ public static mentraos.ble.MentraosBle.Vector3 parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.Vector3 parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.Vector3 parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -45568,7 +47627,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -45576,7 +47635,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.Vector3}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.Vector3)
         mentraos.ble.MentraosBle.Vector3OrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -45585,7 +47644,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_Vector3_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -45598,7 +47657,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -45653,6 +47712,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.Vector3 result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.Vector3) {
@@ -45665,13 +47756,13 @@ public Builder mergeFrom(com.google.protobuf.Message other) {
 
       public Builder mergeFrom(mentraos.ble.MentraosBle.Vector3 other) {
         if (other == mentraos.ble.MentraosBle.Vector3.getDefaultInstance()) return this;
-        if (java.lang.Float.floatToRawIntBits(other.getX()) != 0) {
+        if (other.getX() != 0F) {
           setX(other.getX());
         }
-        if (java.lang.Float.floatToRawIntBits(other.getY()) != 0) {
+        if (other.getY() != 0F) {
           setY(other.getY());
         }
-        if (java.lang.Float.floatToRawIntBits(other.getZ()) != 0) {
+        if (other.getZ() != 0F) {
           setZ(other.getZ());
         }
         this.mergeUnknownFields(other.getUnknownFields());
@@ -45827,6 +47918,18 @@ public Builder clearZ() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.Vector3)
     }
@@ -45895,40 +47998,38 @@ public interface ButtonEventOrBuilder extends
     mentraos.ble.MentraosBle.ButtonEvent.Button getButton();
 
     /**
-     * .mentraos.ble.ButtonEvent.State state = 2;
-     * @return The enum numeric value on the wire for state.
+     * .mentraos.ble.ButtonEvent.Event event = 2;
+     * @return The enum numeric value on the wire for event.
      */
-    int getStateValue();
+    int getEventValue();
     /**
-     * .mentraos.ble.ButtonEvent.State state = 2;
-     * @return The state.
+     * .mentraos.ble.ButtonEvent.Event event = 2;
+     * @return The event.
      */
-    mentraos.ble.MentraosBle.ButtonEvent.State getState();
+    mentraos.ble.MentraosBle.ButtonEvent.Event getEvent();
   }
   /**
    * Protobuf type {@code mentraos.ble.ButtonEvent}
    */
   public static final class ButtonEvent extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ButtonEvent)
       ButtonEventOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ButtonEvent.class.getName());
-    }
     // Use ButtonEvent.newBuilder() to construct.
-    private ButtonEvent(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ButtonEvent(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ButtonEvent() {
       button_ = 0;
-      state_ = 0;
+      event_ = 0;
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ButtonEvent();
     }
 
     public static final com.google.protobuf.Descriptors.Descriptor
@@ -45937,7 +48038,7 @@ private ButtonEvent() {
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ButtonEvent_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -45950,41 +48051,24 @@ private ButtonEvent() {
     public enum Button
         implements com.google.protobuf.ProtocolMessageEnum {
       /**
-       * CENTER = 0;
+       * LEFT_BACK = 0;
        */
-      CENTER(0),
+      LEFT_BACK(0),
       /**
-       * LEFT = 1;
+       * RIGHT_BACK = 1;
        */
-      LEFT(1),
-      /**
-       * RIGHT = 2;
-       */
-      RIGHT(2),
+      RIGHT_BACK(1),
       UNRECOGNIZED(-1),
       ;
 
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          Button.class.getName());
-      }
       /**
-       * CENTER = 0;
+       * LEFT_BACK = 0;
        */
-      public static final int CENTER_VALUE = 0;
+      public static final int LEFT_BACK_VALUE = 0;
       /**
-       * LEFT = 1;
+       * RIGHT_BACK = 1;
        */
-      public static final int LEFT_VALUE = 1;
-      /**
-       * RIGHT = 2;
-       */
-      public static final int RIGHT_VALUE = 2;
+      public static final int RIGHT_BACK_VALUE = 1;
 
 
       public final int getNumber() {
@@ -46011,9 +48095,8 @@ public static Button valueOf(int value) {
        */
       public static Button forNumber(int value) {
         switch (value) {
-          case 0: return CENTER;
-          case 1: return LEFT;
-          case 2: return RIGHT;
+          case 0: return LEFT_BACK;
+          case 1: return RIGHT_BACK;
           default: return null;
         }
       }
@@ -46042,7 +48125,7 @@ public Button findValueByNumber(int number) {
           getDescriptorForType() {
         return getDescriptor();
       }
-      public static com.google.protobuf.Descriptors.EnumDescriptor
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.ButtonEvent.getDescriptor().getEnumTypes().get(0);
       }
@@ -46071,38 +48154,45 @@ private Button(int value) {
     }
 
     /**
-     * Protobuf enum {@code mentraos.ble.ButtonEvent.State}
+     * Protobuf enum {@code mentraos.ble.ButtonEvent.Event}
      */
-    public enum State
+    public enum Event
         implements com.google.protobuf.ProtocolMessageEnum {
       /**
-       * UP = 0;
+       * SINGLE_TAP = 0;
+       */
+      SINGLE_TAP(0),
+      /**
+       * DOUBLE_TAP = 1;
        */
-      UP(0),
+      DOUBLE_TAP(1),
       /**
-       * DOWN = 1;
+       * TRIPLE_TAP = 2;
        */
-      DOWN(1),
+      TRIPLE_TAP(2),
+      /**
+       * LONG_HOLD = 3;
+       */
+      LONG_HOLD(3),
       UNRECOGNIZED(-1),
       ;
 
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          State.class.getName());
-      }
       /**
-       * UP = 0;
+       * SINGLE_TAP = 0;
+       */
+      public static final int SINGLE_TAP_VALUE = 0;
+      /**
+       * DOUBLE_TAP = 1;
+       */
+      public static final int DOUBLE_TAP_VALUE = 1;
+      /**
+       * TRIPLE_TAP = 2;
        */
-      public static final int UP_VALUE = 0;
+      public static final int TRIPLE_TAP_VALUE = 2;
       /**
-       * DOWN = 1;
+       * LONG_HOLD = 3;
        */
-      public static final int DOWN_VALUE = 1;
+      public static final int LONG_HOLD_VALUE = 3;
 
 
       public final int getNumber() {
@@ -46119,7 +48209,7 @@ public final int getNumber() {
        * @deprecated Use {@link #forNumber(int)} instead.
        */
       @java.lang.Deprecated
-      public static State valueOf(int value) {
+      public static Event valueOf(int value) {
         return forNumber(value);
       }
 
@@ -46127,23 +48217,25 @@ public static State valueOf(int value) {
        * @param value The numeric wire value of the corresponding enum entry.
        * @return The enum associated with the given numeric wire value.
        */
-      public static State forNumber(int value) {
+      public static Event forNumber(int value) {
         switch (value) {
-          case 0: return UP;
-          case 1: return DOWN;
+          case 0: return SINGLE_TAP;
+          case 1: return DOUBLE_TAP;
+          case 2: return TRIPLE_TAP;
+          case 3: return LONG_HOLD;
           default: return null;
         }
       }
 
-      public static com.google.protobuf.Internal.EnumLiteMap
+      public static com.google.protobuf.Internal.EnumLiteMap
           internalGetValueMap() {
         return internalValueMap;
       }
       private static final com.google.protobuf.Internal.EnumLiteMap<
-          State> internalValueMap =
-            new com.google.protobuf.Internal.EnumLiteMap() {
-              public State findValueByNumber(int number) {
-                return State.forNumber(number);
+          Event> internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap() {
+              public Event findValueByNumber(int number) {
+                return Event.forNumber(number);
               }
             };
 
@@ -46159,14 +48251,14 @@ public State findValueByNumber(int number) {
           getDescriptorForType() {
         return getDescriptor();
       }
-      public static com.google.protobuf.Descriptors.EnumDescriptor
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.ButtonEvent.getDescriptor().getEnumTypes().get(1);
       }
 
-      private static final State[] VALUES = values();
+      private static final Event[] VALUES = values();
 
-      public static State valueOf(
+      public static Event valueOf(
           com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
         if (desc.getType() != getDescriptor()) {
           throw new java.lang.IllegalArgumentException(
@@ -46180,11 +48272,11 @@ public static State valueOf(
 
       private final int value;
 
-      private State(int value) {
+      private Event(int value) {
         this.value = value;
       }
 
-      // @@protoc_insertion_point(enum_scope:mentraos.ble.ButtonEvent.State)
+      // @@protoc_insertion_point(enum_scope:mentraos.ble.ButtonEvent.Event)
     }
 
     public static final int BUTTON_FIELD_NUMBER = 1;
@@ -46205,22 +48297,22 @@ private State(int value) {
       return result == null ? mentraos.ble.MentraosBle.ButtonEvent.Button.UNRECOGNIZED : result;
     }
 
-    public static final int STATE_FIELD_NUMBER = 2;
-    private int state_ = 0;
+    public static final int EVENT_FIELD_NUMBER = 2;
+    private int event_ = 0;
     /**
-     * .mentraos.ble.ButtonEvent.State state = 2;
-     * @return The enum numeric value on the wire for state.
+     * .mentraos.ble.ButtonEvent.Event event = 2;
+     * @return The enum numeric value on the wire for event.
      */
-    @java.lang.Override public int getStateValue() {
-      return state_;
+    @java.lang.Override public int getEventValue() {
+      return event_;
     }
     /**
-     * .mentraos.ble.ButtonEvent.State state = 2;
-     * @return The state.
+     * .mentraos.ble.ButtonEvent.Event event = 2;
+     * @return The event.
      */
-    @java.lang.Override public mentraos.ble.MentraosBle.ButtonEvent.State getState() {
-      mentraos.ble.MentraosBle.ButtonEvent.State result = mentraos.ble.MentraosBle.ButtonEvent.State.forNumber(state_);
-      return result == null ? mentraos.ble.MentraosBle.ButtonEvent.State.UNRECOGNIZED : result;
+    @java.lang.Override public mentraos.ble.MentraosBle.ButtonEvent.Event getEvent() {
+      mentraos.ble.MentraosBle.ButtonEvent.Event result = mentraos.ble.MentraosBle.ButtonEvent.Event.forNumber(event_);
+      return result == null ? mentraos.ble.MentraosBle.ButtonEvent.Event.UNRECOGNIZED : result;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -46237,11 +48329,11 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (button_ != mentraos.ble.MentraosBle.ButtonEvent.Button.CENTER.getNumber()) {
+      if (button_ != mentraos.ble.MentraosBle.ButtonEvent.Button.LEFT_BACK.getNumber()) {
         output.writeEnum(1, button_);
       }
-      if (state_ != mentraos.ble.MentraosBle.ButtonEvent.State.UP.getNumber()) {
-        output.writeEnum(2, state_);
+      if (event_ != mentraos.ble.MentraosBle.ButtonEvent.Event.SINGLE_TAP.getNumber()) {
+        output.writeEnum(2, event_);
       }
       getUnknownFields().writeTo(output);
     }
@@ -46252,13 +48344,13 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (button_ != mentraos.ble.MentraosBle.ButtonEvent.Button.CENTER.getNumber()) {
+      if (button_ != mentraos.ble.MentraosBle.ButtonEvent.Button.LEFT_BACK.getNumber()) {
         size += com.google.protobuf.CodedOutputStream
           .computeEnumSize(1, button_);
       }
-      if (state_ != mentraos.ble.MentraosBle.ButtonEvent.State.UP.getNumber()) {
+      if (event_ != mentraos.ble.MentraosBle.ButtonEvent.Event.SINGLE_TAP.getNumber()) {
         size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(2, state_);
+          .computeEnumSize(2, event_);
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
@@ -46276,7 +48368,7 @@ public boolean equals(final java.lang.Object obj) {
       mentraos.ble.MentraosBle.ButtonEvent other = (mentraos.ble.MentraosBle.ButtonEvent) obj;
 
       if (button_ != other.button_) return false;
-      if (state_ != other.state_) return false;
+      if (event_ != other.event_) return false;
       if (!getUnknownFields().equals(other.getUnknownFields())) return false;
       return true;
     }
@@ -46290,8 +48382,8 @@ public int hashCode() {
       hash = (19 * hash) + getDescriptor().hashCode();
       hash = (37 * hash) + BUTTON_FIELD_NUMBER;
       hash = (53 * hash) + button_;
-      hash = (37 * hash) + STATE_FIELD_NUMBER;
-      hash = (53 * hash) + state_;
+      hash = (37 * hash) + EVENT_FIELD_NUMBER;
+      hash = (53 * hash) + event_;
       hash = (29 * hash) + getUnknownFields().hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -46331,20 +48423,20 @@ public static mentraos.ble.MentraosBle.ButtonEvent parseFrom(
     }
     public static mentraos.ble.MentraosBle.ButtonEvent parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ButtonEvent parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ButtonEvent parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -46352,20 +48444,20 @@ public static mentraos.ble.MentraosBle.ButtonEvent parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ButtonEvent parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ButtonEvent parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -46385,7 +48477,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -46393,7 +48485,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ButtonEvent}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ButtonEvent)
         mentraos.ble.MentraosBle.ButtonEventOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -46402,7 +48494,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ButtonEvent_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -46415,7 +48507,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -46424,7 +48516,7 @@ public Builder clear() {
         super.clear();
         bitField0_ = 0;
         button_ = 0;
-        state_ = 0;
+        event_ = 0;
         return this;
       }
 
@@ -46462,10 +48554,42 @@ private void buildPartial0(mentraos.ble.MentraosBle.ButtonEvent result) {
           result.button_ = button_;
         }
         if (((from_bitField0_ & 0x00000002) != 0)) {
-          result.state_ = state_;
+          result.event_ = event_;
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ButtonEvent) {
@@ -46481,8 +48605,8 @@ public Builder mergeFrom(mentraos.ble.MentraosBle.ButtonEvent other) {
         if (other.button_ != 0) {
           setButtonValue(other.getButtonValue());
         }
-        if (other.state_ != 0) {
-          setStateValue(other.getStateValue());
+        if (other.event_ != 0) {
+          setEventValue(other.getEventValue());
         }
         this.mergeUnknownFields(other.getUnknownFields());
         onChanged();
@@ -46516,7 +48640,7 @@ public Builder mergeFrom(
                 break;
               } // case 8
               case 16: {
-                state_ = input.readEnum();
+                event_ = input.readEnum();
                 bitField0_ |= 0x00000002;
                 break;
               } // case 16
@@ -46571,7 +48695,9 @@ public mentraos.ble.MentraosBle.ButtonEvent.Button getButton() {
        * @return This builder for chaining.
        */
       public Builder setButton(mentraos.ble.MentraosBle.ButtonEvent.Button value) {
-        if (value == null) { throw new NullPointerException(); }
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000001;
         button_ = value.getNumber();
         onChanged();
@@ -46588,56 +48714,70 @@ public Builder clearButton() {
         return this;
       }
 
-      private int state_ = 0;
+      private int event_ = 0;
       /**
-       * .mentraos.ble.ButtonEvent.State state = 2;
-       * @return The enum numeric value on the wire for state.
+       * .mentraos.ble.ButtonEvent.Event event = 2;
+       * @return The enum numeric value on the wire for event.
        */
-      @java.lang.Override public int getStateValue() {
-        return state_;
+      @java.lang.Override public int getEventValue() {
+        return event_;
       }
       /**
-       * .mentraos.ble.ButtonEvent.State state = 2;
-       * @param value The enum numeric value on the wire for state to set.
+       * .mentraos.ble.ButtonEvent.Event event = 2;
+       * @param value The enum numeric value on the wire for event to set.
        * @return This builder for chaining.
        */
-      public Builder setStateValue(int value) {
-        state_ = value;
+      public Builder setEventValue(int value) {
+        event_ = value;
         bitField0_ |= 0x00000002;
         onChanged();
         return this;
       }
       /**
-       * .mentraos.ble.ButtonEvent.State state = 2;
-       * @return The state.
+       * .mentraos.ble.ButtonEvent.Event event = 2;
+       * @return The event.
        */
       @java.lang.Override
-      public mentraos.ble.MentraosBle.ButtonEvent.State getState() {
-        mentraos.ble.MentraosBle.ButtonEvent.State result = mentraos.ble.MentraosBle.ButtonEvent.State.forNumber(state_);
-        return result == null ? mentraos.ble.MentraosBle.ButtonEvent.State.UNRECOGNIZED : result;
+      public mentraos.ble.MentraosBle.ButtonEvent.Event getEvent() {
+        mentraos.ble.MentraosBle.ButtonEvent.Event result = mentraos.ble.MentraosBle.ButtonEvent.Event.forNumber(event_);
+        return result == null ? mentraos.ble.MentraosBle.ButtonEvent.Event.UNRECOGNIZED : result;
       }
       /**
-       * .mentraos.ble.ButtonEvent.State state = 2;
-       * @param value The state to set.
+       * .mentraos.ble.ButtonEvent.Event event = 2;
+       * @param value The event to set.
        * @return This builder for chaining.
        */
-      public Builder setState(mentraos.ble.MentraosBle.ButtonEvent.State value) {
-        if (value == null) { throw new NullPointerException(); }
+      public Builder setEvent(mentraos.ble.MentraosBle.ButtonEvent.Event value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000002;
-        state_ = value.getNumber();
+        event_ = value.getNumber();
         onChanged();
         return this;
       }
       /**
-       * .mentraos.ble.ButtonEvent.State state = 2;
+       * .mentraos.ble.ButtonEvent.Event event = 2;
        * @return This builder for chaining.
        */
-      public Builder clearState() {
+      public Builder clearEvent() {
         bitField0_ = (bitField0_ & ~0x00000002);
-        state_ = 0;
+        event_ = 0;
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ButtonEvent)
     }
@@ -46709,34 +48849,32 @@ public interface HeadGestureOrBuilder extends
    * Protobuf type {@code mentraos.ble.HeadGesture}
    */
   public static final class HeadGesture extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.HeadGesture)
       HeadGestureOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        HeadGesture.class.getName());
-    }
     // Use HeadGesture.newBuilder() to construct.
-    private HeadGesture(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private HeadGesture(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private HeadGesture() {
       gesture_ = 0;
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new HeadGesture();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadGesture_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadGesture_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -46775,15 +48913,6 @@ public enum Gesture
       UNRECOGNIZED(-1),
       ;
 
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          Gesture.class.getName());
-      }
       /**
        * NOD = 0;
        */
@@ -46868,7 +48997,7 @@ public Gesture findValueByNumber(int number) {
           getDescriptorForType() {
         return getDescriptor();
       }
-      public static com.google.protobuf.Descriptors.EnumDescriptor
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.HeadGesture.getDescriptor().getEnumTypes().get(0);
       }
@@ -47012,20 +49141,20 @@ public static mentraos.ble.MentraosBle.HeadGesture parseFrom(
     }
     public static mentraos.ble.MentraosBle.HeadGesture parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadGesture parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.HeadGesture parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -47033,20 +49162,20 @@ public static mentraos.ble.MentraosBle.HeadGesture parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.HeadGesture parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadGesture parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -47066,7 +49195,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -47074,7 +49203,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.HeadGesture}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadGesture)
         mentraos.ble.MentraosBle.HeadGestureOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -47083,7 +49212,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadGesture_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -47096,7 +49225,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -47143,6 +49272,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.HeadGesture result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.HeadGesture) {
@@ -47240,7 +49401,9 @@ public mentraos.ble.MentraosBle.HeadGesture.Gesture getGesture() {
        * @return This builder for chaining.
        */
       public Builder setGesture(mentraos.ble.MentraosBle.HeadGesture.Gesture value) {
-        if (value == null) { throw new NullPointerException(); }
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000001;
         gesture_ = value.getNumber();
         onChanged();
@@ -47256,6 +49419,18 @@ public Builder clearGesture() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadGesture)
     }
@@ -47333,34 +49508,32 @@ public interface HeadGestureConfigOrBuilder extends
    * Protobuf type {@code mentraos.ble.HeadGestureConfig}
    */
   public static final class HeadGestureConfig extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.HeadGestureConfig)
       HeadGestureConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        HeadGestureConfig.class.getName());
-    }
     // Use HeadGestureConfig.newBuilder() to construct.
-    private HeadGestureConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private HeadGestureConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private HeadGestureConfig() {
       gesture_ = 0;
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new HeadGestureConfig();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadGestureConfig_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadGestureConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -47506,20 +49679,20 @@ public static mentraos.ble.MentraosBle.HeadGestureConfig parseFrom(
     }
     public static mentraos.ble.MentraosBle.HeadGestureConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadGestureConfig parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.HeadGestureConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -47527,20 +49700,20 @@ public static mentraos.ble.MentraosBle.HeadGestureConfig parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.HeadGestureConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.HeadGestureConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -47560,7 +49733,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -47568,7 +49741,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.HeadGestureConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadGestureConfig)
         mentraos.ble.MentraosBle.HeadGestureConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -47577,7 +49750,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_HeadGestureConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -47590,7 +49763,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -47641,6 +49814,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.HeadGestureConfig result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.HeadGestureConfig) {
@@ -47746,7 +49951,9 @@ public mentraos.ble.MentraosBle.HeadGesture.Gesture getGesture() {
        * @return This builder for chaining.
        */
       public Builder setGesture(mentraos.ble.MentraosBle.HeadGesture.Gesture value) {
-        if (value == null) { throw new NullPointerException(); }
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000001;
         gesture_ = value.getNumber();
         onChanged();
@@ -47794,6 +50001,18 @@ public Builder clearEnabled() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadGestureConfig)
     }
@@ -47854,33 +50073,31 @@ public interface RestartRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.RestartRequest}
    */
   public static final class RestartRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.RestartRequest)
       RestartRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        RestartRequest.class.getName());
-    }
     // Use RestartRequest.newBuilder() to construct.
-    private RestartRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private RestartRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private RestartRequest() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new RestartRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_RestartRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_RestartRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -47975,20 +50192,20 @@ public static mentraos.ble.MentraosBle.RestartRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.RestartRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.RestartRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.RestartRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -47996,20 +50213,20 @@ public static mentraos.ble.MentraosBle.RestartRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.RestartRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.RestartRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -48029,7 +50246,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -48037,7 +50254,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.RestartRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.RestartRequest)
         mentraos.ble.MentraosBle.RestartRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -48046,7 +50263,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_RestartRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -48059,7 +50276,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -48096,6 +50313,38 @@ public mentraos.ble.MentraosBle.RestartRequest buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.RestartRequest) {
@@ -48149,6 +50398,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.RestartRequest)
     }
@@ -48209,33 +50470,31 @@ public interface FactoryResetRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.FactoryResetRequest}
    */
   public static final class FactoryResetRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.FactoryResetRequest)
       FactoryResetRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        FactoryResetRequest.class.getName());
-    }
     // Use FactoryResetRequest.newBuilder() to construct.
-    private FactoryResetRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private FactoryResetRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private FactoryResetRequest() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new FactoryResetRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_FactoryResetRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_FactoryResetRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -48330,20 +50589,20 @@ public static mentraos.ble.MentraosBle.FactoryResetRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.FactoryResetRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.FactoryResetRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.FactoryResetRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -48351,20 +50610,20 @@ public static mentraos.ble.MentraosBle.FactoryResetRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.FactoryResetRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.FactoryResetRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -48384,7 +50643,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -48392,7 +50651,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.FactoryResetRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.FactoryResetRequest)
         mentraos.ble.MentraosBle.FactoryResetRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -48401,7 +50660,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_FactoryResetRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -48414,7 +50673,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -48451,6 +50710,38 @@ public mentraos.ble.MentraosBle.FactoryResetRequest buildPartial() {
         return result;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.FactoryResetRequest) {
@@ -48504,6 +50795,18 @@ public Builder mergeFrom(
         } // finally
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.FactoryResetRequest)
     }
@@ -48608,33 +50911,31 @@ public interface CacheDashboardOrBuilder extends
    * Protobuf type {@code mentraos.ble.CacheDashboard}
    */
   public static final class CacheDashboard extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.CacheDashboard)
       CacheDashboardOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        CacheDashboard.class.getName());
-    }
     // Use CacheDashboard.newBuilder() to construct.
-    private CacheDashboard(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private CacheDashboard(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private CacheDashboard() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new CacheDashboard();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_CacheDashboard_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_CacheDashboard_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -48813,20 +51114,20 @@ public static mentraos.ble.MentraosBle.CacheDashboard parseFrom(
     }
     public static mentraos.ble.MentraosBle.CacheDashboard parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.CacheDashboard parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.CacheDashboard parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -48834,20 +51135,20 @@ public static mentraos.ble.MentraosBle.CacheDashboard parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.CacheDashboard parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.CacheDashboard parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -48867,7 +51168,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -48879,7 +51180,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.CacheDashboard}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.CacheDashboard)
         mentraos.ble.MentraosBle.CacheDashboardOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -48888,7 +51189,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_CacheDashboard_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -48901,14 +51202,14 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage
+        if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          internalGetBatchFieldBuilder();
+          getBatchFieldBuilder();
         }
       }
       @java.lang.Override
@@ -48967,6 +51268,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.CacheDashboard result) {
         result.bitField0_ |= to_bitField0_;
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.CacheDashboard) {
@@ -49018,7 +51351,7 @@ public Builder mergeFrom(
               } // case 8
               case 18: {
                 input.readMessage(
-                    internalGetBatchFieldBuilder().getBuilder(),
+                    getBatchFieldBuilder().getBuilder(),
                     extensionRegistry);
                 bitField0_ |= 0x00000002;
                 break;
@@ -49085,7 +51418,7 @@ public Builder clearDashboardId() {
       }
 
       private mentraos.ble.MentraosBle.DisplayBatch batch_;
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayBatch, mentraos.ble.MentraosBle.DisplayBatch.Builder, mentraos.ble.MentraosBle.DisplayBatchOrBuilder> batchBuilder_;
       /**
        * 
@@ -49210,7 +51543,7 @@ public Builder clearBatch() {
       public mentraos.ble.MentraosBle.DisplayBatch.Builder getBatchBuilder() {
         bitField0_ |= 0x00000002;
         onChanged();
-        return internalGetBatchFieldBuilder().getBuilder();
+        return getBatchFieldBuilder().getBuilder();
       }
       /**
        * 
@@ -49236,11 +51569,11 @@ public mentraos.ble.MentraosBle.DisplayBatchOrBuilder getBatchOrBuilder() {
        *
        * .mentraos.ble.DisplayBatch batch = 2;
        */
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.SingleFieldBuilderV3<
           mentraos.ble.MentraosBle.DisplayBatch, mentraos.ble.MentraosBle.DisplayBatch.Builder, mentraos.ble.MentraosBle.DisplayBatchOrBuilder> 
-          internalGetBatchFieldBuilder() {
+          getBatchFieldBuilder() {
         if (batchBuilder_ == null) {
-          batchBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+          batchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               mentraos.ble.MentraosBle.DisplayBatch, mentraos.ble.MentraosBle.DisplayBatch.Builder, mentraos.ble.MentraosBle.DisplayBatchOrBuilder>(
                   getBatch(),
                   getParentForChildren(),
@@ -49249,6 +51582,18 @@ public mentraos.ble.MentraosBle.DisplayBatchOrBuilder getBatchOrBuilder() {
         }
         return batchBuilder_;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.CacheDashboard)
     }
@@ -49319,33 +51664,31 @@ public interface ClearDashboardOrBuilder extends
    * Protobuf type {@code mentraos.ble.ClearDashboard}
    */
   public static final class ClearDashboard extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ClearDashboard)
       ClearDashboardOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ClearDashboard.class.getName());
-    }
     // Use ClearDashboard.newBuilder() to construct.
-    private ClearDashboard(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ClearDashboard(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ClearDashboard() {
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ClearDashboard();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ClearDashboard_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ClearDashboard_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -49462,20 +51805,20 @@ public static mentraos.ble.MentraosBle.ClearDashboard parseFrom(
     }
     public static mentraos.ble.MentraosBle.ClearDashboard parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ClearDashboard parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ClearDashboard parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -49483,20 +51826,20 @@ public static mentraos.ble.MentraosBle.ClearDashboard parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ClearDashboard parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ClearDashboard parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -49516,7 +51859,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -49528,7 +51871,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ClearDashboard}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ClearDashboard)
         mentraos.ble.MentraosBle.ClearDashboardOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -49537,7 +51880,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ClearDashboard_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -49550,7 +51893,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -49597,6 +51940,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.ClearDashboard result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ClearDashboard) {
@@ -49691,6 +52066,18 @@ public Builder clearDashboardId() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ClearDashboard)
     }
@@ -49782,34 +52169,32 @@ public interface ConfigureDashboardTriggerOrBuilder extends
    * Protobuf type {@code mentraos.ble.ConfigureDashboardTrigger}
    */
   public static final class ConfigureDashboardTrigger extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.ConfigureDashboardTrigger)
       ConfigureDashboardTriggerOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        ConfigureDashboardTrigger.class.getName());
-    }
     // Use ConfigureDashboardTrigger.newBuilder() to construct.
-    private ConfigureDashboardTrigger(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private ConfigureDashboardTrigger(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private ConfigureDashboardTrigger() {
       trigger_ = 0;
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ConfigureDashboardTrigger();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ConfigureDashboardTrigger_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ConfigureDashboardTrigger_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -49852,15 +52237,6 @@ public enum TriggerType
       UNRECOGNIZED(-1),
       ;
 
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          TriggerType.class.getName());
-      }
       /**
        * 
        * Even Realities style - look up
@@ -49947,7 +52323,7 @@ public TriggerType findValueByNumber(int number) {
           getDescriptorForType() {
         return getDescriptor();
       }
-      public static com.google.protobuf.Descriptors.EnumDescriptor
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.ConfigureDashboardTrigger.getDescriptor().getEnumTypes().get(0);
       }
@@ -50139,20 +52515,20 @@ public static mentraos.ble.MentraosBle.ConfigureDashboardTrigger parseFrom(
     }
     public static mentraos.ble.MentraosBle.ConfigureDashboardTrigger parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ConfigureDashboardTrigger parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.ConfigureDashboardTrigger parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -50160,20 +52536,20 @@ public static mentraos.ble.MentraosBle.ConfigureDashboardTrigger parseDelimitedF
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.ConfigureDashboardTrigger parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.ConfigureDashboardTrigger parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -50193,7 +52569,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -50205,7 +52581,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.ConfigureDashboardTrigger}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.ConfigureDashboardTrigger)
         mentraos.ble.MentraosBle.ConfigureDashboardTriggerOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -50214,7 +52590,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_ConfigureDashboardTrigger_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -50227,7 +52603,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -50282,6 +52658,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.ConfigureDashboardTrigger re
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.ConfigureDashboardTrigger) {
@@ -50427,7 +52835,9 @@ public mentraos.ble.MentraosBle.ConfigureDashboardTrigger.TriggerType getTrigger
        * @return This builder for chaining.
        */
       public Builder setTrigger(mentraos.ble.MentraosBle.ConfigureDashboardTrigger.TriggerType value) {
-        if (value == null) { throw new NullPointerException(); }
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000002;
         trigger_ = value.getNumber();
         onChanged();
@@ -50487,6 +52897,18 @@ public Builder clearDurationMs() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.ConfigureDashboardTrigger)
     }
@@ -50568,34 +52990,32 @@ public interface DashboardShownOrBuilder extends
    * Protobuf type {@code mentraos.ble.DashboardShown}
    */
   public static final class DashboardShown extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.DashboardShown)
       DashboardShownOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        DashboardShown.class.getName());
-    }
     // Use DashboardShown.newBuilder() to construct.
-    private DashboardShown(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private DashboardShown(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private DashboardShown() {
       source_ = 0;
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new DashboardShown();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DashboardShown_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DashboardShown_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -50622,15 +53042,6 @@ public enum TriggerSource
       UNRECOGNIZED(-1),
       ;
 
-      static {
-        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-          /* major= */ 4,
-          /* minor= */ 32,
-          /* patch= */ 0,
-          /* suffix= */ "",
-          TriggerSource.class.getName());
-      }
       /**
        * GESTURE = 0;
        */
@@ -50700,7 +53111,7 @@ public TriggerSource findValueByNumber(int number) {
           getDescriptorForType() {
         return getDescriptor();
       }
-      public static com.google.protobuf.Descriptors.EnumDescriptor
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptor() {
         return mentraos.ble.MentraosBle.DashboardShown.getDescriptor().getEnumTypes().get(0);
       }
@@ -50866,20 +53277,20 @@ public static mentraos.ble.MentraosBle.DashboardShown parseFrom(
     }
     public static mentraos.ble.MentraosBle.DashboardShown parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DashboardShown parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.DashboardShown parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -50887,20 +53298,20 @@ public static mentraos.ble.MentraosBle.DashboardShown parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.DashboardShown parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.DashboardShown parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -50920,7 +53331,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -50932,7 +53343,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.DashboardShown}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.DashboardShown)
         mentraos.ble.MentraosBle.DashboardShownOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -50941,7 +53352,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_DashboardShown_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -50954,7 +53365,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -51005,6 +53416,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.DashboardShown result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.DashboardShown) {
@@ -51142,7 +53585,9 @@ public mentraos.ble.MentraosBle.DashboardShown.TriggerSource getSource() {
        * @return This builder for chaining.
        */
       public Builder setSource(mentraos.ble.MentraosBle.DashboardShown.TriggerSource value) {
-        if (value == null) { throw new NullPointerException(); }
+        if (value == null) {
+          throw new NullPointerException();
+        }
         bitField0_ |= 0x00000002;
         source_ = value.getNumber();
         onChanged();
@@ -51158,6 +53603,18 @@ public Builder clearSource() {
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.DashboardShown)
     }
@@ -51239,34 +53696,32 @@ public interface VersionRequestOrBuilder extends
    * Protobuf type {@code mentraos.ble.VersionRequest}
    */
   public static final class VersionRequest extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.VersionRequest)
       VersionRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        VersionRequest.class.getName());
-    }
     // Use VersionRequest.newBuilder() to construct.
-    private VersionRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private VersionRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private VersionRequest() {
       msgId_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VersionRequest();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VersionRequest_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VersionRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -51326,8 +53781,8 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
       }
       getUnknownFields().writeTo(output);
     }
@@ -51338,8 +53793,8 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
@@ -51410,20 +53865,20 @@ public static mentraos.ble.MentraosBle.VersionRequest parseFrom(
     }
     public static mentraos.ble.MentraosBle.VersionRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VersionRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.VersionRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -51431,20 +53886,20 @@ public static mentraos.ble.MentraosBle.VersionRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.VersionRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VersionRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -51464,7 +53919,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -51481,7 +53936,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.VersionRequest}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.VersionRequest)
         mentraos.ble.MentraosBle.VersionRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -51490,7 +53945,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VersionRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -51503,7 +53958,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -51550,6 +54005,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.VersionRequest result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.VersionRequest) {
@@ -51686,6 +54173,18 @@ public Builder setMsgIdBytes(
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.VersionRequest)
     }
@@ -51817,21 +54316,12 @@ public interface VersionResponseOrBuilder extends
    * Protobuf type {@code mentraos.ble.VersionResponse}
    */
   public static final class VersionResponse extends
-      com.google.protobuf.GeneratedMessage implements
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:mentraos.ble.VersionResponse)
       VersionResponseOrBuilder {
   private static final long serialVersionUID = 0L;
-    static {
-      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
-        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
-        /* major= */ 4,
-        /* minor= */ 32,
-        /* patch= */ 0,
-        /* suffix= */ "",
-        VersionResponse.class.getName());
-    }
     // Use VersionResponse.newBuilder() to construct.
-    private VersionResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
+    private VersionResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private VersionResponse() {
@@ -51840,13 +54330,20 @@ private VersionResponse() {
       buildDate_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VersionResponse();
+    }
+
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VersionResponse_descriptor;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VersionResponse_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -52024,17 +54521,17 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
       }
       if (version_ != 0) {
         output.writeUInt32(2, version_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(commit_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 10, commit_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commit_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, commit_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(buildDate_)) {
-        com.google.protobuf.GeneratedMessage.writeString(output, 11, buildDate_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(buildDate_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, buildDate_);
       }
       getUnknownFields().writeTo(output);
     }
@@ -52045,18 +54542,18 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msgId_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
       }
       if (version_ != 0) {
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(2, version_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(commit_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(10, commit_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commit_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, commit_);
       }
-      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(buildDate_)) {
-        size += com.google.protobuf.GeneratedMessage.computeStringSize(11, buildDate_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(buildDate_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, buildDate_);
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
@@ -52139,20 +54636,20 @@ public static mentraos.ble.MentraosBle.VersionResponse parseFrom(
     }
     public static mentraos.ble.MentraosBle.VersionResponse parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VersionResponse parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
     public static mentraos.ble.MentraosBle.VersionResponse parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
 
@@ -52160,20 +54657,20 @@ public static mentraos.ble.MentraosBle.VersionResponse parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static mentraos.ble.MentraosBle.VersionResponse parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
     public static mentraos.ble.MentraosBle.VersionResponse parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessage
+      return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
@@ -52193,7 +54690,7 @@ public Builder toBuilder() {
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
@@ -52201,7 +54698,7 @@ protected Builder newBuilderForType(
      * Protobuf type {@code mentraos.ble.VersionResponse}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder implements
+        com.google.protobuf.GeneratedMessageV3.Builder implements
         // @@protoc_insertion_point(builder_implements:mentraos.ble.VersionResponse)
         mentraos.ble.MentraosBle.VersionResponseOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
@@ -52210,7 +54707,7 @@ public static final class Builder extends
       }
 
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return mentraos.ble.MentraosBle.internal_static_mentraos_ble_VersionResponse_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
@@ -52223,7 +54720,7 @@ private Builder() {
       }
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
 
       }
@@ -52282,6 +54779,38 @@ private void buildPartial0(mentraos.ble.MentraosBle.VersionResponse result) {
         }
       }
 
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof mentraos.ble.MentraosBle.VersionResponse) {
@@ -52697,6 +55226,18 @@ public Builder setBuildDateBytes(
         onChanged();
         return this;
       }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:mentraos.ble.VersionResponse)
     }
@@ -52767,312 +55308,312 @@ public mentraos.ble.MentraosBle.VersionResponse getDefaultInstanceForType() {
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_PhoneToGlasses_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_PhoneToGlasses_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_GlassesToPhone_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_GlassesToPhone_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisconnectRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisconnectRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_BatteryStateRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_BatteryStateRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_BatteryStatus_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_BatteryStatus_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ChargingState_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ChargingState_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_GlassesInfoRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_GlassesInfoRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DeviceInfo_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DeviceInfo_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DeviceFeatures_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DeviceFeatures_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_PairingModeRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_PairingModeRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_HeadPositionRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_HeadPositionRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_HeadPosition_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_HeadPosition_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_HeadUpAngleConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_HeadUpAngleConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_HeadUpAngleResponse_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_HeadUpAngleResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_PingRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_PingRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_PongResponse_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_PongResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_MicStateConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_MicStateConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_VadEvent_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_VadEvent_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_VadEnabledRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_VadEnabledRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_VadEnabledResponse_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_VadEnabledResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_VadConfigRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_VadConfigRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_VadConfigResponse_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_VadConfigResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_VadStatusRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_VadStatusRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_VadStatus_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_VadStatus_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayText_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayText_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayImage_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayImage_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_CacheImage_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_CacheImage_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayCachedImage_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayCachedImage_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ClearCachedImage_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ClearCachedImage_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayScrollingText_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayScrollingText_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayPowerConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayPowerConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_BrightnessConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_BrightnessConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_AutoBrightnessConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_AutoBrightnessConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_AutoBrightnessMultiplier_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_AutoBrightnessMultiplier_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DrawLine_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DrawLine_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DrawRect_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DrawRect_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DrawCircle_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DrawCircle_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayBatch_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayBatch_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayBatch_DisplayCommand_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayBatch_DisplayCommand_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_CommitDisplay_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_CommitDisplay_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ClearDisplay_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ClearDisplay_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayQueueStatus_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayQueueStatus_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayQueueInfo_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayQueueInfo_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayDistanceConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayDistanceConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DisplayHeightConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DisplayHeightConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ImageTransferComplete_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ImageTransferComplete_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ImuEnabledConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ImuEnabledConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ImuSingleRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ImuSingleRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ImuStreamConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ImuStreamConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ImuData_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ImuData_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_Vector3_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_Vector3_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ButtonEvent_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ButtonEvent_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_HeadGesture_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_HeadGesture_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_HeadGestureConfig_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_HeadGestureConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_RestartRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_RestartRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_FactoryResetRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_FactoryResetRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_CacheDashboard_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_CacheDashboard_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ClearDashboard_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ClearDashboard_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_ConfigureDashboardTrigger_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_ConfigureDashboardTrigger_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_DashboardShown_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_DashboardShown_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_VersionRequest_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_VersionRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mentraos_ble_VersionResponse_descriptor;
   private static final 
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_mentraos_ble_VersionResponse_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
@@ -53252,37 +55793,38 @@ public mentraos.ble.MentraosBle.VersionResponse getDefaultInstanceForType() {
       "ata\022$\n\005accel\030\001 \001(\0132\025.mentraos.ble.Vector" +
       "3\022#\n\004gyro\030\002 \001(\0132\025.mentraos.ble.Vector3\022\"" +
       "\n\003mag\030\003 \001(\0132\025.mentraos.ble.Vector3\"*\n\007Ve" +
-      "ctor3\022\t\n\001x\030\001 \001(\002\022\t\n\001y\030\002 \001(\002\022\t\n\001z\030\003 \001(\002\"\265" +
+      "ctor3\022\t\n\001x\030\001 \001(\002\022\t\n\001y\030\002 \001(\002\022\t\n\001z\030\003 \001(\002\"\340" +
       "\001\n\013ButtonEvent\0220\n\006button\030\001 \001(\0162 .mentrao" +
-      "s.ble.ButtonEvent.Button\022.\n\005state\030\002 \001(\0162" +
-      "\037.mentraos.ble.ButtonEvent.State\")\n\006Butt" +
-      "on\022\n\n\006CENTER\020\000\022\010\n\004LEFT\020\001\022\t\n\005RIGHT\020\002\"\031\n\005S" +
-      "tate\022\006\n\002UP\020\000\022\010\n\004DOWN\020\001\"\233\001\n\013HeadGesture\0222" +
-      "\n\007gesture\030\001 \001(\0162!.mentraos.ble.HeadGestu" +
-      "re.Gesture\"X\n\007Gesture\022\007\n\003NOD\020\000\022\t\n\005SHAKE\020" +
-      "\001\022\013\n\007HEAD_UP\020\002\022\r\n\tHEAD_DOWN\020\003\022\r\n\tTILT_LE" +
-      "FT\020\004\022\016\n\nTILT_RIGHT\020\005\"X\n\021HeadGestureConfi" +
-      "g\0222\n\007gesture\030\001 \001(\0162!.mentraos.ble.HeadGe" +
-      "sture.Gesture\022\017\n\007enabled\030\002 \001(\010\"\020\n\016Restar" +
-      "tRequest\"\025\n\023FactoryResetRequest\"Q\n\016Cache" +
-      "Dashboard\022\024\n\014dashboard_id\030\001 \001(\r\022)\n\005batch" +
-      "\030\002 \001(\0132\032.mentraos.ble.DisplayBatch\"&\n\016Cl" +
-      "earDashboard\022\024\n\014dashboard_id\030\001 \001(\r\"\330\001\n\031C" +
-      "onfigureDashboardTrigger\022\024\n\014dashboard_id" +
-      "\030\001 \001(\r\022D\n\007trigger\030\002 \001(\01623.mentraos.ble.C" +
-      "onfigureDashboardTrigger.TriggerType\022\023\n\013" +
-      "duration_ms\030\003 \001(\r\"J\n\013TriggerType\022\013\n\007HEAD" +
-      "_UP\020\000\022\r\n\tHEAD_DOWN\020\001\022\016\n\nBUTTON_TAP\020\002\022\017\n\013" +
-      "MANUAL_ONLY\020\003\"\230\001\n\016DashboardShown\022\024\n\014dash" +
-      "board_id\030\001 \001(\r\022:\n\006source\030\002 \001(\0162*.mentrao" +
-      "s.ble.DashboardShown.TriggerSource\"4\n\rTr" +
-      "iggerSource\022\013\n\007GESTURE\020\000\022\n\n\006BUTTON\020\001\022\n\n\006" +
-      "MANUAL\020\002\" \n\016VersionRequest\022\016\n\006msg_id\030\001 \001" +
-      "(\t\"h\n\017VersionResponse\022\016\n\006msg_id\030\001 \001(\t\022\017\n" +
-      "\007version\030\002 \001(\r\022\016\n\006commit\030\n \001(\t\022\022\n\nbuild_" +
-      "date\030\013 \001(\tJ\004\010\003\020\004J\004\010\004\020\005J\004\010\005\020\006:=\n\025mentra_s" +
-      "chema_version\022\034.google.protobuf.FileOpti" +
-      "ons\030\361\242\004 \001(\rB\004\210\227\"\001b\006proto3"
+      "s.ble.ButtonEvent.Button\022.\n\005event\030\002 \001(\0162" +
+      "\037.mentraos.ble.ButtonEvent.Event\"\'\n\006Butt" +
+      "on\022\r\n\tLEFT_BACK\020\000\022\016\n\nRIGHT_BACK\020\001\"F\n\005Eve" +
+      "nt\022\016\n\nSINGLE_TAP\020\000\022\016\n\nDOUBLE_TAP\020\001\022\016\n\nTR" +
+      "IPLE_TAP\020\002\022\r\n\tLONG_HOLD\020\003\"\233\001\n\013HeadGestur" +
+      "e\0222\n\007gesture\030\001 \001(\0162!.mentraos.ble.HeadGe" +
+      "sture.Gesture\"X\n\007Gesture\022\007\n\003NOD\020\000\022\t\n\005SHA" +
+      "KE\020\001\022\013\n\007HEAD_UP\020\002\022\r\n\tHEAD_DOWN\020\003\022\r\n\tTILT" +
+      "_LEFT\020\004\022\016\n\nTILT_RIGHT\020\005\"X\n\021HeadGestureCo" +
+      "nfig\0222\n\007gesture\030\001 \001(\0162!.mentraos.ble.Hea" +
+      "dGesture.Gesture\022\017\n\007enabled\030\002 \001(\010\"\020\n\016Res" +
+      "tartRequest\"\025\n\023FactoryResetRequest\"Q\n\016Ca" +
+      "cheDashboard\022\024\n\014dashboard_id\030\001 \001(\r\022)\n\005ba" +
+      "tch\030\002 \001(\0132\032.mentraos.ble.DisplayBatch\"&\n" +
+      "\016ClearDashboard\022\024\n\014dashboard_id\030\001 \001(\r\"\330\001" +
+      "\n\031ConfigureDashboardTrigger\022\024\n\014dashboard" +
+      "_id\030\001 \001(\r\022D\n\007trigger\030\002 \001(\01623.mentraos.bl" +
+      "e.ConfigureDashboardTrigger.TriggerType\022" +
+      "\023\n\013duration_ms\030\003 \001(\r\"J\n\013TriggerType\022\013\n\007H" +
+      "EAD_UP\020\000\022\r\n\tHEAD_DOWN\020\001\022\016\n\nBUTTON_TAP\020\002\022" +
+      "\017\n\013MANUAL_ONLY\020\003\"\230\001\n\016DashboardShown\022\024\n\014d" +
+      "ashboard_id\030\001 \001(\r\022:\n\006source\030\002 \001(\0162*.ment" +
+      "raos.ble.DashboardShown.TriggerSource\"4\n" +
+      "\rTriggerSource\022\013\n\007GESTURE\020\000\022\n\n\006BUTTON\020\001\022" +
+      "\n\n\006MANUAL\020\002\" \n\016VersionRequest\022\016\n\006msg_id\030" +
+      "\001 \001(\t\"h\n\017VersionResponse\022\016\n\006msg_id\030\001 \001(\t" +
+      "\022\017\n\007version\030\002 \001(\r\022\016\n\006commit\030\n \001(\t\022\022\n\nbui" +
+      "ld_date\030\013 \001(\tJ\004\010\003\020\004J\004\010\004\020\005J\004\010\005\020\006:=\n\025mentr" +
+      "a_schema_version\022\034.google.protobuf.FileO" +
+      "ptions\030\361\242\004 \001(\rB\004\210\227\"\002b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -53292,383 +55834,382 @@ public mentraos.ble.MentraosBle.VersionResponse getDefaultInstanceForType() {
     internal_static_mentraos_ble_PhoneToGlasses_descriptor =
       getDescriptor().getMessageTypes().get(0);
     internal_static_mentraos_ble_PhoneToGlasses_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_PhoneToGlasses_descriptor,
         new java.lang.String[] { "MsgId", "Disconnect", "BatteryState", "GlassesInfo", "PairingMode", "HeadPosition", "HeadUpAngle", "Pong", "MicState", "SetVadEnabled", "SetVadConfig", "RequestVadStatus", "DisplayText", "DisplayImage", "CacheImage", "DisplayCachedImage", "ClearCachedImage", "DisplayScrollingText", "DrawLine", "DrawRect", "DrawCircle", "DisplayBatch", "Commit", "DisplayPower", "Brightness", "AutoBrightness", "AutoBrightnessMult", "DisplayDistance", "DisplayHeight", "ClearDisplay", "QueueStatusRequest", "CacheDashboard", "ClearDashboard", "DashboardTrigger", "ImuEnabled", "ImuSingle", "ImuStream", "HeadGesture", "Restart", "FactoryReset", "VersionRequest", "Payload", });
     internal_static_mentraos_ble_GlassesToPhone_descriptor =
       getDescriptor().getMessageTypes().get(1);
     internal_static_mentraos_ble_GlassesToPhone_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_GlassesToPhone_descriptor,
         new java.lang.String[] { "BatteryStatus", "ChargingState", "DeviceInfo", "HeadPosition", "HeadUpAngleSet", "Ping", "VadEvent", "VadEnabledSet", "VadConfigured", "VadStatus", "ImageTransferComplete", "DisplayQueueInfo", "ImuData", "ButtonEvent", "HeadGesture", "DashboardShown", "VersionResponse", "Payload", });
     internal_static_mentraos_ble_DisconnectRequest_descriptor =
       getDescriptor().getMessageTypes().get(2);
     internal_static_mentraos_ble_DisconnectRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisconnectRequest_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_BatteryStateRequest_descriptor =
       getDescriptor().getMessageTypes().get(3);
     internal_static_mentraos_ble_BatteryStateRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_BatteryStateRequest_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_BatteryStatus_descriptor =
       getDescriptor().getMessageTypes().get(4);
     internal_static_mentraos_ble_BatteryStatus_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_BatteryStatus_descriptor,
         new java.lang.String[] { "Level", "Charging", });
     internal_static_mentraos_ble_ChargingState_descriptor =
       getDescriptor().getMessageTypes().get(5);
     internal_static_mentraos_ble_ChargingState_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ChargingState_descriptor,
         new java.lang.String[] { "State", });
     internal_static_mentraos_ble_GlassesInfoRequest_descriptor =
       getDescriptor().getMessageTypes().get(6);
     internal_static_mentraos_ble_GlassesInfoRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_GlassesInfoRequest_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_DeviceInfo_descriptor =
       getDescriptor().getMessageTypes().get(7);
     internal_static_mentraos_ble_DeviceInfo_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DeviceInfo_descriptor,
         new java.lang.String[] { "FwVersion", "HwModel", "Features", });
     internal_static_mentraos_ble_DeviceFeatures_descriptor =
       getDescriptor().getMessageTypes().get(8);
     internal_static_mentraos_ble_DeviceFeatures_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DeviceFeatures_descriptor,
         new java.lang.String[] { "Camera", "Display", "AudioTx", "AudioRx", "Imu", "Vad", "MicSwitching", "ImageChunkBuffer", });
     internal_static_mentraos_ble_PairingModeRequest_descriptor =
       getDescriptor().getMessageTypes().get(9);
     internal_static_mentraos_ble_PairingModeRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_PairingModeRequest_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_HeadPositionRequest_descriptor =
       getDescriptor().getMessageTypes().get(10);
     internal_static_mentraos_ble_HeadPositionRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_HeadPositionRequest_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_HeadPosition_descriptor =
       getDescriptor().getMessageTypes().get(11);
     internal_static_mentraos_ble_HeadPosition_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_HeadPosition_descriptor,
         new java.lang.String[] { "Angle", });
     internal_static_mentraos_ble_HeadUpAngleConfig_descriptor =
       getDescriptor().getMessageTypes().get(12);
     internal_static_mentraos_ble_HeadUpAngleConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_HeadUpAngleConfig_descriptor,
         new java.lang.String[] { "Angle", });
     internal_static_mentraos_ble_HeadUpAngleResponse_descriptor =
       getDescriptor().getMessageTypes().get(13);
     internal_static_mentraos_ble_HeadUpAngleResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_HeadUpAngleResponse_descriptor,
         new java.lang.String[] { "Success", });
     internal_static_mentraos_ble_PingRequest_descriptor =
       getDescriptor().getMessageTypes().get(14);
     internal_static_mentraos_ble_PingRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_PingRequest_descriptor,
         new java.lang.String[] { "MsgId", });
     internal_static_mentraos_ble_PongResponse_descriptor =
       getDescriptor().getMessageTypes().get(15);
     internal_static_mentraos_ble_PongResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_PongResponse_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_MicStateConfig_descriptor =
       getDescriptor().getMessageTypes().get(16);
     internal_static_mentraos_ble_MicStateConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_MicStateConfig_descriptor,
         new java.lang.String[] { "Enabled", });
     internal_static_mentraos_ble_VadEvent_descriptor =
       getDescriptor().getMessageTypes().get(17);
     internal_static_mentraos_ble_VadEvent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_VadEvent_descriptor,
         new java.lang.String[] { "State", });
     internal_static_mentraos_ble_VadEnabledRequest_descriptor =
       getDescriptor().getMessageTypes().get(18);
     internal_static_mentraos_ble_VadEnabledRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_VadEnabledRequest_descriptor,
         new java.lang.String[] { "MsgId", "Enabled", });
     internal_static_mentraos_ble_VadEnabledResponse_descriptor =
       getDescriptor().getMessageTypes().get(19);
     internal_static_mentraos_ble_VadEnabledResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_VadEnabledResponse_descriptor,
         new java.lang.String[] { "MsgId", "Success", "Error", });
     internal_static_mentraos_ble_VadConfigRequest_descriptor =
       getDescriptor().getMessageTypes().get(20);
     internal_static_mentraos_ble_VadConfigRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_VadConfigRequest_descriptor,
         new java.lang.String[] { "MsgId", "Sensitivity", });
     internal_static_mentraos_ble_VadConfigResponse_descriptor =
       getDescriptor().getMessageTypes().get(21);
     internal_static_mentraos_ble_VadConfigResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_VadConfigResponse_descriptor,
         new java.lang.String[] { "MsgId", "Success", "Error", });
     internal_static_mentraos_ble_VadStatusRequest_descriptor =
       getDescriptor().getMessageTypes().get(22);
     internal_static_mentraos_ble_VadStatusRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_VadStatusRequest_descriptor,
         new java.lang.String[] { "MsgId", });
     internal_static_mentraos_ble_VadStatus_descriptor =
       getDescriptor().getMessageTypes().get(23);
     internal_static_mentraos_ble_VadStatus_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_VadStatus_descriptor,
         new java.lang.String[] { "MsgId", "Enabled", "Sensitivity", });
     internal_static_mentraos_ble_DisplayText_descriptor =
       getDescriptor().getMessageTypes().get(24);
     internal_static_mentraos_ble_DisplayText_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayText_descriptor,
         new java.lang.String[] { "Text", "Color", "X", "Y", "Size", });
     internal_static_mentraos_ble_DisplayImage_descriptor =
       getDescriptor().getMessageTypes().get(25);
     internal_static_mentraos_ble_DisplayImage_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayImage_descriptor,
         new java.lang.String[] { "StreamId", "X", "Y", "Width", "Height", "Encoding", "TotalChunks", });
     internal_static_mentraos_ble_CacheImage_descriptor =
       getDescriptor().getMessageTypes().get(26);
     internal_static_mentraos_ble_CacheImage_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_CacheImage_descriptor,
         new java.lang.String[] { "StreamId", "ImageId", "Width", "Height", "Encoding", "TotalChunks", });
     internal_static_mentraos_ble_DisplayCachedImage_descriptor =
       getDescriptor().getMessageTypes().get(27);
     internal_static_mentraos_ble_DisplayCachedImage_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayCachedImage_descriptor,
         new java.lang.String[] { "ImageId", "X", "Y", "Width", "Height", });
     internal_static_mentraos_ble_ClearCachedImage_descriptor =
       getDescriptor().getMessageTypes().get(28);
     internal_static_mentraos_ble_ClearCachedImage_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ClearCachedImage_descriptor,
         new java.lang.String[] { "ImageId", });
     internal_static_mentraos_ble_DisplayScrollingText_descriptor =
       getDescriptor().getMessageTypes().get(29);
     internal_static_mentraos_ble_DisplayScrollingText_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayScrollingText_descriptor,
         new java.lang.String[] { "Text", "Color", "X", "Y", "Width", "Height", "Align", "LineSpacing", "Speed", "Size", "Loop", "PauseMs", });
     internal_static_mentraos_ble_DisplayPowerConfig_descriptor =
       getDescriptor().getMessageTypes().get(30);
     internal_static_mentraos_ble_DisplayPowerConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayPowerConfig_descriptor,
         new java.lang.String[] { "On", });
     internal_static_mentraos_ble_BrightnessConfig_descriptor =
       getDescriptor().getMessageTypes().get(31);
     internal_static_mentraos_ble_BrightnessConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_BrightnessConfig_descriptor,
         new java.lang.String[] { "Value", });
     internal_static_mentraos_ble_AutoBrightnessConfig_descriptor =
       getDescriptor().getMessageTypes().get(32);
     internal_static_mentraos_ble_AutoBrightnessConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_AutoBrightnessConfig_descriptor,
         new java.lang.String[] { "Enabled", });
     internal_static_mentraos_ble_AutoBrightnessMultiplier_descriptor =
       getDescriptor().getMessageTypes().get(33);
     internal_static_mentraos_ble_AutoBrightnessMultiplier_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_AutoBrightnessMultiplier_descriptor,
         new java.lang.String[] { "Multiplier", });
     internal_static_mentraos_ble_DrawLine_descriptor =
       getDescriptor().getMessageTypes().get(34);
     internal_static_mentraos_ble_DrawLine_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DrawLine_descriptor,
         new java.lang.String[] { "Color", "Stroke", "X1", "Y1", "X2", "Y2", });
     internal_static_mentraos_ble_DrawRect_descriptor =
       getDescriptor().getMessageTypes().get(35);
     internal_static_mentraos_ble_DrawRect_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DrawRect_descriptor,
         new java.lang.String[] { "Color", "Stroke", "X", "Y", "Width", "Height", });
     internal_static_mentraos_ble_DrawCircle_descriptor =
       getDescriptor().getMessageTypes().get(36);
     internal_static_mentraos_ble_DrawCircle_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DrawCircle_descriptor,
         new java.lang.String[] { "Color", "Stroke", "X", "Y", "Radius", });
     internal_static_mentraos_ble_DisplayBatch_descriptor =
       getDescriptor().getMessageTypes().get(37);
     internal_static_mentraos_ble_DisplayBatch_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayBatch_descriptor,
         new java.lang.String[] { "Commands", });
     internal_static_mentraos_ble_DisplayBatch_DisplayCommand_descriptor =
       internal_static_mentraos_ble_DisplayBatch_descriptor.getNestedTypes().get(0);
     internal_static_mentraos_ble_DisplayBatch_DisplayCommand_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayBatch_DisplayCommand_descriptor,
         new java.lang.String[] { "Text", "CachedImage", "Line", "Rect", "Circle", "ScrollingText", "Command", });
     internal_static_mentraos_ble_CommitDisplay_descriptor =
       getDescriptor().getMessageTypes().get(38);
     internal_static_mentraos_ble_CommitDisplay_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_CommitDisplay_descriptor,
         new java.lang.String[] { "ClearBefore", });
     internal_static_mentraos_ble_ClearDisplay_descriptor =
       getDescriptor().getMessageTypes().get(39);
     internal_static_mentraos_ble_ClearDisplay_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ClearDisplay_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_DisplayQueueStatus_descriptor =
       getDescriptor().getMessageTypes().get(40);
     internal_static_mentraos_ble_DisplayQueueStatus_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayQueueStatus_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_DisplayQueueInfo_descriptor =
       getDescriptor().getMessageTypes().get(41);
     internal_static_mentraos_ble_DisplayQueueInfo_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayQueueInfo_descriptor,
         new java.lang.String[] { "QueuedCommands", "QueueBytes", "MaxQueueSize", "LastCommitSuccess", });
     internal_static_mentraos_ble_DisplayDistanceConfig_descriptor =
       getDescriptor().getMessageTypes().get(42);
     internal_static_mentraos_ble_DisplayDistanceConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayDistanceConfig_descriptor,
         new java.lang.String[] { "DistanceCm", });
     internal_static_mentraos_ble_DisplayHeightConfig_descriptor =
       getDescriptor().getMessageTypes().get(43);
     internal_static_mentraos_ble_DisplayHeightConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DisplayHeightConfig_descriptor,
         new java.lang.String[] { "Height", });
     internal_static_mentraos_ble_ImageTransferComplete_descriptor =
       getDescriptor().getMessageTypes().get(44);
     internal_static_mentraos_ble_ImageTransferComplete_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ImageTransferComplete_descriptor,
         new java.lang.String[] { "StreamId", "Status", "MissingChunks", });
     internal_static_mentraos_ble_ImuEnabledConfig_descriptor =
       getDescriptor().getMessageTypes().get(45);
     internal_static_mentraos_ble_ImuEnabledConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ImuEnabledConfig_descriptor,
         new java.lang.String[] { "Enabled", });
     internal_static_mentraos_ble_ImuSingleRequest_descriptor =
       getDescriptor().getMessageTypes().get(46);
     internal_static_mentraos_ble_ImuSingleRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ImuSingleRequest_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_ImuStreamConfig_descriptor =
       getDescriptor().getMessageTypes().get(47);
     internal_static_mentraos_ble_ImuStreamConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ImuStreamConfig_descriptor,
         new java.lang.String[] { "Enabled", });
     internal_static_mentraos_ble_ImuData_descriptor =
       getDescriptor().getMessageTypes().get(48);
     internal_static_mentraos_ble_ImuData_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ImuData_descriptor,
         new java.lang.String[] { "Accel", "Gyro", "Mag", });
     internal_static_mentraos_ble_Vector3_descriptor =
       getDescriptor().getMessageTypes().get(49);
     internal_static_mentraos_ble_Vector3_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_Vector3_descriptor,
         new java.lang.String[] { "X", "Y", "Z", });
     internal_static_mentraos_ble_ButtonEvent_descriptor =
       getDescriptor().getMessageTypes().get(50);
     internal_static_mentraos_ble_ButtonEvent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ButtonEvent_descriptor,
-        new java.lang.String[] { "Button", "State", });
+        new java.lang.String[] { "Button", "Event", });
     internal_static_mentraos_ble_HeadGesture_descriptor =
       getDescriptor().getMessageTypes().get(51);
     internal_static_mentraos_ble_HeadGesture_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_HeadGesture_descriptor,
         new java.lang.String[] { "Gesture", });
     internal_static_mentraos_ble_HeadGestureConfig_descriptor =
       getDescriptor().getMessageTypes().get(52);
     internal_static_mentraos_ble_HeadGestureConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_HeadGestureConfig_descriptor,
         new java.lang.String[] { "Gesture", "Enabled", });
     internal_static_mentraos_ble_RestartRequest_descriptor =
       getDescriptor().getMessageTypes().get(53);
     internal_static_mentraos_ble_RestartRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_RestartRequest_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_FactoryResetRequest_descriptor =
       getDescriptor().getMessageTypes().get(54);
     internal_static_mentraos_ble_FactoryResetRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_FactoryResetRequest_descriptor,
         new java.lang.String[] { });
     internal_static_mentraos_ble_CacheDashboard_descriptor =
       getDescriptor().getMessageTypes().get(55);
     internal_static_mentraos_ble_CacheDashboard_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_CacheDashboard_descriptor,
         new java.lang.String[] { "DashboardId", "Batch", });
     internal_static_mentraos_ble_ClearDashboard_descriptor =
       getDescriptor().getMessageTypes().get(56);
     internal_static_mentraos_ble_ClearDashboard_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ClearDashboard_descriptor,
         new java.lang.String[] { "DashboardId", });
     internal_static_mentraos_ble_ConfigureDashboardTrigger_descriptor =
       getDescriptor().getMessageTypes().get(57);
     internal_static_mentraos_ble_ConfigureDashboardTrigger_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_ConfigureDashboardTrigger_descriptor,
         new java.lang.String[] { "DashboardId", "Trigger", "DurationMs", });
     internal_static_mentraos_ble_DashboardShown_descriptor =
       getDescriptor().getMessageTypes().get(58);
     internal_static_mentraos_ble_DashboardShown_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_DashboardShown_descriptor,
         new java.lang.String[] { "DashboardId", "Source", });
     internal_static_mentraos_ble_VersionRequest_descriptor =
       getDescriptor().getMessageTypes().get(59);
     internal_static_mentraos_ble_VersionRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_VersionRequest_descriptor,
         new java.lang.String[] { "MsgId", });
     internal_static_mentraos_ble_VersionResponse_descriptor =
       getDescriptor().getMessageTypes().get(60);
     internal_static_mentraos_ble_VersionResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_mentraos_ble_VersionResponse_descriptor,
         new java.lang.String[] { "MsgId", "Version", "Commit", "BuildDate", });
     mentraSchemaVersion.internalInit(descriptor.getExtensions().get(0));
-    descriptor.resolveAllFeaturesImmutable();
-    com.google.protobuf.DescriptorProtos.getDescriptor();
     com.google.protobuf.ExtensionRegistry registry =
         com.google.protobuf.ExtensionRegistry.newInstance();
     registry.add(mentraos.ble.MentraosBle.mentraSchemaVersion);
     com.google.protobuf.Descriptors.FileDescriptor
         .internalUpdateFileDescriptor(descriptor, registry);
+    com.google.protobuf.DescriptorProtos.getDescriptor();
   }
 
   // @@protoc_insertion_point(outer_class_scope)
diff --git a/cloud/packages/sdk/src/types/messages/glasses-to-cloud.ts b/cloud/packages/sdk/src/types/messages/glasses-to-cloud.ts
index bb1d03c140..d9033d856f 100644
--- a/cloud/packages/sdk/src/types/messages/glasses-to-cloud.ts
+++ b/cloud/packages/sdk/src/types/messages/glasses-to-cloud.ts
@@ -64,7 +64,7 @@ export interface OpenDashboard extends BaseMessage {
 export interface ButtonPress extends BaseMessage {
   type: GlassesToCloudMessageType.BUTTON_PRESS;
   buttonId: string;
-  pressType: 'short' | 'long';
+  pressType: string;
 }
 
 /**
diff --git a/mobile/ios/Source/subs/mentraos_ble.pb.swift b/mobile/ios/Source/subs/mentraos_ble.pb.swift
index 72a98d7c73..34f2916ec8 100644
--- a/mobile/ios/Source/subs/mentraos_ble.pb.swift
+++ b/mobile/ios/Source/subs/mentraos_ble.pb.swift
@@ -3,7 +3,7 @@
 // swiftlint:disable all
 //
 // Generated by the Swift generator plugin for the protocol buffer compiler.
-// Source: mcu_client/mentraos_ble.proto
+// Source: mentraos_ble.proto
 //
 // For information on using the generated types, please see the documentation:
 //   https://github.com/apple/swift-protobuf/
@@ -15,3841 +15,5299 @@ import SwiftProtobuf
 // incompatible with the version of SwiftProtobuf to which you are linking.
 // Please ensure that you are building against the same version of the API
 // that was used to generate this file.
-private struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck {
-    struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {}
-    typealias Version = _2
+fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck {
+  struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {}
+  typealias Version = _2
 }
 
 /// All messages from phone to glasses
 struct Mentraos_Ble_PhoneToGlasses: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
-
-    /// Optional message ID for request/response correlation
-    var msgID: String = .init()
-
-    var payload: Mentraos_Ble_PhoneToGlasses.OneOf_Payload?
-
-    /// Connection Management
-    var disconnect: Mentraos_Ble_DisconnectRequest {
-        get {
-            if case let .disconnect(v)? = payload { return v }
-            return Mentraos_Ble_DisconnectRequest()
-        }
-        set { payload = .disconnect(newValue) }
-    }
-
-    var batteryState: Mentraos_Ble_BatteryStateRequest {
-        get {
-            if case let .batteryState(v)? = payload { return v }
-            return Mentraos_Ble_BatteryStateRequest()
-        }
-        set { payload = .batteryState(newValue) }
-    }
-
-    var glassesInfo: Mentraos_Ble_GlassesInfoRequest {
-        get {
-            if case let .glassesInfo(v)? = payload { return v }
-            return Mentraos_Ble_GlassesInfoRequest()
-        }
-        set { payload = .glassesInfo(newValue) }
-    }
-
-    var pairingMode: Mentraos_Ble_PairingModeRequest {
-        get {
-            if case let .pairingMode(v)? = payload { return v }
-            return Mentraos_Ble_PairingModeRequest()
-        }
-        set { payload = .pairingMode(newValue) }
-    }
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var headPosition: Mentraos_Ble_HeadPositionRequest {
-        get {
-            if case let .headPosition(v)? = payload { return v }
-            return Mentraos_Ble_HeadPositionRequest()
-        }
-        set { payload = .headPosition(newValue) }
-    }
+  var msgID: String = String()
 
-    var headUpAngle: Mentraos_Ble_HeadUpAngleConfig {
-        get {
-            if case let .headUpAngle(v)? = payload { return v }
-            return Mentraos_Ble_HeadUpAngleConfig()
-        }
-        set { payload = .headUpAngle(newValue) }
-    }
+  var payload: Mentraos_Ble_PhoneToGlasses.OneOf_Payload? = nil
 
-    var pong: Mentraos_Ble_PongResponse {
-        get {
-            if case let .pong(v)? = payload { return v }
-            return Mentraos_Ble_PongResponse()
-        }
-        set { payload = .pong(newValue) }
+  /// Connection Management
+  var disconnect: Mentraos_Ble_DisconnectRequest {
+    get {
+      if case .disconnect(let v)? = payload {return v}
+      return Mentraos_Ble_DisconnectRequest()
     }
+    set {payload = .disconnect(newValue)}
+  }
 
-    /// Audio System
-    var micState: Mentraos_Ble_MicStateConfig {
-        get {
-            if case let .micState(v)? = payload { return v }
-            return Mentraos_Ble_MicStateConfig()
-        }
-        set { payload = .micState(newValue) }
+  var batteryState: Mentraos_Ble_BatteryStateRequest {
+    get {
+      if case .batteryState(let v)? = payload {return v}
+      return Mentraos_Ble_BatteryStateRequest()
     }
+    set {payload = .batteryState(newValue)}
+  }
 
-    var vadEnabled: Mentraos_Ble_VadEnabledConfig {
-        get {
-            if case let .vadEnabled(v)? = payload { return v }
-            return Mentraos_Ble_VadEnabledConfig()
-        }
-        set { payload = .vadEnabled(newValue) }
+  var glassesInfo: Mentraos_Ble_GlassesInfoRequest {
+    get {
+      if case .glassesInfo(let v)? = payload {return v}
+      return Mentraos_Ble_GlassesInfoRequest()
     }
+    set {payload = .glassesInfo(newValue)}
+  }
 
-    var vadConfig: Mentraos_Ble_VadConfig {
-        get {
-            if case let .vadConfig(v)? = payload { return v }
-            return Mentraos_Ble_VadConfig()
-        }
-        set { payload = .vadConfig(newValue) }
+  var pairingMode: Mentraos_Ble_PairingModeRequest {
+    get {
+      if case .pairingMode(let v)? = payload {return v}
+      return Mentraos_Ble_PairingModeRequest()
     }
+    set {payload = .pairingMode(newValue)}
+  }
 
-    /// Display System
-    var displayText: Mentraos_Ble_DisplayText {
-        get {
-            if case let .displayText(v)? = payload { return v }
-            return Mentraos_Ble_DisplayText()
-        }
-        set { payload = .displayText(newValue) }
+  var headPosition: Mentraos_Ble_HeadPositionRequest {
+    get {
+      if case .headPosition(let v)? = payload {return v}
+      return Mentraos_Ble_HeadPositionRequest()
     }
+    set {payload = .headPosition(newValue)}
+  }
 
-    var displayImage: Mentraos_Ble_DisplayImage {
-        get {
-            if case let .displayImage(v)? = payload { return v }
-            return Mentraos_Ble_DisplayImage()
-        }
-        set { payload = .displayImage(newValue) }
+  var headUpAngle: Mentraos_Ble_HeadUpAngleConfig {
+    get {
+      if case .headUpAngle(let v)? = payload {return v}
+      return Mentraos_Ble_HeadUpAngleConfig()
     }
+    set {payload = .headUpAngle(newValue)}
+  }
 
-    var preloadImage: Mentraos_Ble_PreloadImage {
-        get {
-            if case let .preloadImage(v)? = payload { return v }
-            return Mentraos_Ble_PreloadImage()
-        }
-        set { payload = .preloadImage(newValue) }
+  var pong: Mentraos_Ble_PongResponse {
+    get {
+      if case .pong(let v)? = payload {return v}
+      return Mentraos_Ble_PongResponse()
     }
+    set {payload = .pong(newValue)}
+  }
 
-    var displayCachedImage: Mentraos_Ble_DisplayCachedImage {
-        get {
-            if case let .displayCachedImage(v)? = payload { return v }
-            return Mentraos_Ble_DisplayCachedImage()
-        }
-        set { payload = .displayCachedImage(newValue) }
+  /// Audio System
+  var micState: Mentraos_Ble_MicStateConfig {
+    get {
+      if case .micState(let v)? = payload {return v}
+      return Mentraos_Ble_MicStateConfig()
     }
+    set {payload = .micState(newValue)}
+  }
 
-    var clearCachedImage_p: Mentraos_Ble_ClearCachedImage {
-        get {
-            if case let .clearCachedImage_p(v)? = payload { return v }
-            return Mentraos_Ble_ClearCachedImage()
-        }
-        set { payload = .clearCachedImage_p(newValue) }
+  var setVadEnabled: Mentraos_Ble_VadEnabledRequest {
+    get {
+      if case .setVadEnabled(let v)? = payload {return v}
+      return Mentraos_Ble_VadEnabledRequest()
     }
+    set {payload = .setVadEnabled(newValue)}
+  }
 
-    var displayScrollingText: Mentraos_Ble_DisplayScrollingText {
-        get {
-            if case let .displayScrollingText(v)? = payload { return v }
-            return Mentraos_Ble_DisplayScrollingText()
-        }
-        set { payload = .displayScrollingText(newValue) }
+  var setVadConfig: Mentraos_Ble_VadConfigRequest {
+    get {
+      if case .setVadConfig(let v)? = payload {return v}
+      return Mentraos_Ble_VadConfigRequest()
     }
+    set {payload = .setVadConfig(newValue)}
+  }
 
-    var displayPower: Mentraos_Ble_DisplayPowerConfig {
-        get {
-            if case let .displayPower(v)? = payload { return v }
-            return Mentraos_Ble_DisplayPowerConfig()
-        }
-        set { payload = .displayPower(newValue) }
+  var requestVadStatus: Mentraos_Ble_VadStatusRequest {
+    get {
+      if case .requestVadStatus(let v)? = payload {return v}
+      return Mentraos_Ble_VadStatusRequest()
     }
+    set {payload = .requestVadStatus(newValue)}
+  }
 
-    var brightness: Mentraos_Ble_BrightnessConfig {
-        get {
-            if case let .brightness(v)? = payload { return v }
-            return Mentraos_Ble_BrightnessConfig()
-        }
-        set { payload = .brightness(newValue) }
+  /// Display System - These queue until commit
+  var displayText: Mentraos_Ble_DisplayText {
+    get {
+      if case .displayText(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayText()
     }
-
-    var autoBrightness: Mentraos_Ble_AutoBrightnessConfig {
-        get {
-            if case let .autoBrightness(v)? = payload { return v }
-            return Mentraos_Ble_AutoBrightnessConfig()
-        }
-        set { payload = .autoBrightness(newValue) }
+    set {payload = .displayText(newValue)}
+  }
+
+  var displayImage: Mentraos_Ble_DisplayImage {
+    get {
+      if case .displayImage(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayImage()
+    }
+    set {payload = .displayImage(newValue)}
+  }
+
+  var cacheImage: Mentraos_Ble_CacheImage {
+    get {
+      if case .cacheImage(let v)? = payload {return v}
+      return Mentraos_Ble_CacheImage()
+    }
+    set {payload = .cacheImage(newValue)}
+  }
+
+  var displayCachedImage: Mentraos_Ble_DisplayCachedImage {
+    get {
+      if case .displayCachedImage(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayCachedImage()
+    }
+    set {payload = .displayCachedImage(newValue)}
+  }
+
+  var clearCachedImage_p: Mentraos_Ble_ClearCachedImage {
+    get {
+      if case .clearCachedImage_p(let v)? = payload {return v}
+      return Mentraos_Ble_ClearCachedImage()
+    }
+    set {payload = .clearCachedImage_p(newValue)}
+  }
+
+  var displayScrollingText: Mentraos_Ble_DisplayScrollingText {
+    get {
+      if case .displayScrollingText(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayScrollingText()
+    }
+    set {payload = .displayScrollingText(newValue)}
+  }
+
+  var drawLine: Mentraos_Ble_DrawLine {
+    get {
+      if case .drawLine(let v)? = payload {return v}
+      return Mentraos_Ble_DrawLine()
+    }
+    set {payload = .drawLine(newValue)}
+  }
+
+  var drawRect: Mentraos_Ble_DrawRect {
+    get {
+      if case .drawRect(let v)? = payload {return v}
+      return Mentraos_Ble_DrawRect()
+    }
+    set {payload = .drawRect(newValue)}
+  }
+
+  var drawCircle: Mentraos_Ble_DrawCircle {
+    get {
+      if case .drawCircle(let v)? = payload {return v}
+      return Mentraos_Ble_DrawCircle()
+    }
+    set {payload = .drawCircle(newValue)}
+  }
+
+  /// Send multiple commands at once
+  var displayBatch: Mentraos_Ble_DisplayBatch {
+    get {
+      if case .displayBatch(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayBatch()
+    }
+    set {payload = .displayBatch(newValue)}
+  }
+
+  /// Renders all queued commands
+  var commit: Mentraos_Ble_CommitDisplay {
+    get {
+      if case .commit(let v)? = payload {return v}
+      return Mentraos_Ble_CommitDisplay()
+    }
+    set {payload = .commit(newValue)}
+  }
+
+  /// Display Control - These execute immediately
+  var displayPower: Mentraos_Ble_DisplayPowerConfig {
+    get {
+      if case .displayPower(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayPowerConfig()
+    }
+    set {payload = .displayPower(newValue)}
+  }
+
+  var brightness: Mentraos_Ble_BrightnessConfig {
+    get {
+      if case .brightness(let v)? = payload {return v}
+      return Mentraos_Ble_BrightnessConfig()
+    }
+    set {payload = .brightness(newValue)}
+  }
+
+  var autoBrightness: Mentraos_Ble_AutoBrightnessConfig {
+    get {
+      if case .autoBrightness(let v)? = payload {return v}
+      return Mentraos_Ble_AutoBrightnessConfig()
+    }
+    set {payload = .autoBrightness(newValue)}
+  }
+
+  var autoBrightnessMult: Mentraos_Ble_AutoBrightnessMultiplier {
+    get {
+      if case .autoBrightnessMult(let v)? = payload {return v}
+      return Mentraos_Ble_AutoBrightnessMultiplier()
+    }
+    set {payload = .autoBrightnessMult(newValue)}
+  }
+
+  var displayDistance: Mentraos_Ble_DisplayDistanceConfig {
+    get {
+      if case .displayDistance(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayDistanceConfig()
+    }
+    set {payload = .displayDistance(newValue)}
+  }
+
+  var displayHeight: Mentraos_Ble_DisplayHeightConfig {
+    get {
+      if case .displayHeight(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayHeightConfig()
+    }
+    set {payload = .displayHeight(newValue)}
+  }
+
+  var clearDisplay_p: Mentraos_Ble_ClearDisplay {
+    get {
+      if case .clearDisplay_p(let v)? = payload {return v}
+      return Mentraos_Ble_ClearDisplay()
+    }
+    set {payload = .clearDisplay_p(newValue)}
+  }
+
+  /// Get queue info
+  var queueStatusRequest: Mentraos_Ble_DisplayQueueStatus {
+    get {
+      if case .queueStatusRequest(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayQueueStatus()
     }
-
-    var autoBrightnessMult: Mentraos_Ble_AutoBrightnessMultiplier {
-        get {
-            if case let .autoBrightnessMult(v)? = payload { return v }
-            return Mentraos_Ble_AutoBrightnessMultiplier()
-        }
-        set { payload = .autoBrightnessMult(newValue) }
+    set {payload = .queueStatusRequest(newValue)}
+  }
+
+  /// Dashboard/Cacheboard System
+  var cacheDashboard: Mentraos_Ble_CacheDashboard {
+    get {
+      if case .cacheDashboard(let v)? = payload {return v}
+      return Mentraos_Ble_CacheDashboard()
+    }
+    set {payload = .cacheDashboard(newValue)}
+  }
+
+  var clearDashboard_p: Mentraos_Ble_ClearDashboard {
+    get {
+      if case .clearDashboard_p(let v)? = payload {return v}
+      return Mentraos_Ble_ClearDashboard()
+    }
+    set {payload = .clearDashboard_p(newValue)}
+  }
+
+  var dashboardTrigger: Mentraos_Ble_ConfigureDashboardTrigger {
+    get {
+      if case .dashboardTrigger(let v)? = payload {return v}
+      return Mentraos_Ble_ConfigureDashboardTrigger()
     }
+    set {payload = .dashboardTrigger(newValue)}
+  }
 
-    var drawLine: Mentraos_Ble_DrawLine {
-        get {
-            if case let .drawLine(v)? = payload { return v }
-            return Mentraos_Ble_DrawLine()
-        }
-        set { payload = .drawLine(newValue) }
+  /// User Input
+  var imuEnabled: Mentraos_Ble_ImuEnabledConfig {
+    get {
+      if case .imuEnabled(let v)? = payload {return v}
+      return Mentraos_Ble_ImuEnabledConfig()
     }
+    set {payload = .imuEnabled(newValue)}
+  }
 
-    var drawRect: Mentraos_Ble_DrawRect {
-        get {
-            if case let .drawRect(v)? = payload { return v }
-            return Mentraos_Ble_DrawRect()
-        }
-        set { payload = .drawRect(newValue) }
+  var imuSingle: Mentraos_Ble_ImuSingleRequest {
+    get {
+      if case .imuSingle(let v)? = payload {return v}
+      return Mentraos_Ble_ImuSingleRequest()
     }
+    set {payload = .imuSingle(newValue)}
+  }
 
-    var drawCircle: Mentraos_Ble_DrawCircle {
-        get {
-            if case let .drawCircle(v)? = payload { return v }
-            return Mentraos_Ble_DrawCircle()
-        }
-        set { payload = .drawCircle(newValue) }
+  var imuStream: Mentraos_Ble_ImuStreamConfig {
+    get {
+      if case .imuStream(let v)? = payload {return v}
+      return Mentraos_Ble_ImuStreamConfig()
     }
+    set {payload = .imuStream(newValue)}
+  }
 
-    var commit: Mentraos_Ble_CommitDisplay {
-        get {
-            if case let .commit(v)? = payload { return v }
-            return Mentraos_Ble_CommitDisplay()
-        }
-        set { payload = .commit(newValue) }
+  var headGesture: Mentraos_Ble_HeadGestureConfig {
+    get {
+      if case .headGesture(let v)? = payload {return v}
+      return Mentraos_Ble_HeadGestureConfig()
     }
+    set {payload = .headGesture(newValue)}
+  }
 
-    var displayDistance: Mentraos_Ble_DisplayDistanceConfig {
-        get {
-            if case let .displayDistance(v)? = payload { return v }
-            return Mentraos_Ble_DisplayDistanceConfig()
-        }
-        set { payload = .displayDistance(newValue) }
+  /// System Control
+  var restart: Mentraos_Ble_RestartRequest {
+    get {
+      if case .restart(let v)? = payload {return v}
+      return Mentraos_Ble_RestartRequest()
     }
+    set {payload = .restart(newValue)}
+  }
 
-    var displayHeight: Mentraos_Ble_DisplayHeightConfig {
-        get {
-            if case let .displayHeight(v)? = payload { return v }
-            return Mentraos_Ble_DisplayHeightConfig()
-        }
-        set { payload = .displayHeight(newValue) }
+  var factoryReset: Mentraos_Ble_FactoryResetRequest {
+    get {
+      if case .factoryReset(let v)? = payload {return v}
+      return Mentraos_Ble_FactoryResetRequest()
     }
+    set {payload = .factoryReset(newValue)}
+  }
 
-    var clearDisplay_p: Mentraos_Ble_ClearDisplay {
-        get {
-            if case let .clearDisplay_p(v)? = payload { return v }
-            return Mentraos_Ble_ClearDisplay()
-        }
-        set { payload = .clearDisplay_p(newValue) }
+  /// Runtime protocol version query
+  var versionRequest: Mentraos_Ble_VersionRequest {
+    get {
+      if case .versionRequest(let v)? = payload {return v}
+      return Mentraos_Ble_VersionRequest()
     }
+    set {payload = .versionRequest(newValue)}
+  }
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
+  enum OneOf_Payload: Equatable, Sendable {
+    /// Connection Management
+    case disconnect(Mentraos_Ble_DisconnectRequest)
+    case batteryState(Mentraos_Ble_BatteryStateRequest)
+    case glassesInfo(Mentraos_Ble_GlassesInfoRequest)
+    case pairingMode(Mentraos_Ble_PairingModeRequest)
+    case headPosition(Mentraos_Ble_HeadPositionRequest)
+    case headUpAngle(Mentraos_Ble_HeadUpAngleConfig)
+    case pong(Mentraos_Ble_PongResponse)
+    /// Audio System
+    case micState(Mentraos_Ble_MicStateConfig)
+    case setVadEnabled(Mentraos_Ble_VadEnabledRequest)
+    case setVadConfig(Mentraos_Ble_VadConfigRequest)
+    case requestVadStatus(Mentraos_Ble_VadStatusRequest)
+    /// Display System - These queue until commit
+    case displayText(Mentraos_Ble_DisplayText)
+    case displayImage(Mentraos_Ble_DisplayImage)
+    case cacheImage(Mentraos_Ble_CacheImage)
+    case displayCachedImage(Mentraos_Ble_DisplayCachedImage)
+    case clearCachedImage_p(Mentraos_Ble_ClearCachedImage)
+    case displayScrollingText(Mentraos_Ble_DisplayScrollingText)
+    case drawLine(Mentraos_Ble_DrawLine)
+    case drawRect(Mentraos_Ble_DrawRect)
+    case drawCircle(Mentraos_Ble_DrawCircle)
+    /// Send multiple commands at once
+    case displayBatch(Mentraos_Ble_DisplayBatch)
+    /// Renders all queued commands
+    case commit(Mentraos_Ble_CommitDisplay)
+    /// Display Control - These execute immediately
+    case displayPower(Mentraos_Ble_DisplayPowerConfig)
+    case brightness(Mentraos_Ble_BrightnessConfig)
+    case autoBrightness(Mentraos_Ble_AutoBrightnessConfig)
+    case autoBrightnessMult(Mentraos_Ble_AutoBrightnessMultiplier)
+    case displayDistance(Mentraos_Ble_DisplayDistanceConfig)
+    case displayHeight(Mentraos_Ble_DisplayHeightConfig)
+    case clearDisplay_p(Mentraos_Ble_ClearDisplay)
+    /// Get queue info
+    case queueStatusRequest(Mentraos_Ble_DisplayQueueStatus)
+    /// Dashboard/Cacheboard System
+    case cacheDashboard(Mentraos_Ble_CacheDashboard)
+    case clearDashboard_p(Mentraos_Ble_ClearDashboard)
+    case dashboardTrigger(Mentraos_Ble_ConfigureDashboardTrigger)
     /// User Input
-    var imuEnabled: Mentraos_Ble_ImuEnabledConfig {
-        get {
-            if case let .imuEnabled(v)? = payload { return v }
-            return Mentraos_Ble_ImuEnabledConfig()
-        }
-        set { payload = .imuEnabled(newValue) }
-    }
-
-    var imuSingle: Mentraos_Ble_ImuSingleRequest {
-        get {
-            if case let .imuSingle(v)? = payload { return v }
-            return Mentraos_Ble_ImuSingleRequest()
-        }
-        set { payload = .imuSingle(newValue) }
-    }
-
-    var imuStream: Mentraos_Ble_ImuStreamConfig {
-        get {
-            if case let .imuStream(v)? = payload { return v }
-            return Mentraos_Ble_ImuStreamConfig()
-        }
-        set { payload = .imuStream(newValue) }
-    }
-
-    var headGesture: Mentraos_Ble_HeadGestureConfig {
-        get {
-            if case let .headGesture(v)? = payload { return v }
-            return Mentraos_Ble_HeadGestureConfig()
-        }
-        set { payload = .headGesture(newValue) }
-    }
-
+    case imuEnabled(Mentraos_Ble_ImuEnabledConfig)
+    case imuSingle(Mentraos_Ble_ImuSingleRequest)
+    case imuStream(Mentraos_Ble_ImuStreamConfig)
+    case headGesture(Mentraos_Ble_HeadGestureConfig)
     /// System Control
-    var restart: Mentraos_Ble_RestartRequest {
-        get {
-            if case let .restart(v)? = payload { return v }
-            return Mentraos_Ble_RestartRequest()
-        }
-        set { payload = .restart(newValue) }
-    }
-
-    var factoryReset: Mentraos_Ble_FactoryResetRequest {
-        get {
-            if case let .factoryReset(v)? = payload { return v }
-            return Mentraos_Ble_FactoryResetRequest()
-        }
-        set { payload = .factoryReset(newValue) }
-    }
-
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+    case restart(Mentraos_Ble_RestartRequest)
+    case factoryReset(Mentraos_Ble_FactoryResetRequest)
+    /// Runtime protocol version query
+    case versionRequest(Mentraos_Ble_VersionRequest)
 
-    enum OneOf_Payload: Equatable, Sendable {
-        /// Connection Management
-        case disconnect(Mentraos_Ble_DisconnectRequest)
-        case batteryState(Mentraos_Ble_BatteryStateRequest)
-        case glassesInfo(Mentraos_Ble_GlassesInfoRequest)
-        case pairingMode(Mentraos_Ble_PairingModeRequest)
-        case headPosition(Mentraos_Ble_HeadPositionRequest)
-        case headUpAngle(Mentraos_Ble_HeadUpAngleConfig)
-        case pong(Mentraos_Ble_PongResponse)
-        /// Audio System
-        case micState(Mentraos_Ble_MicStateConfig)
-        case vadEnabled(Mentraos_Ble_VadEnabledConfig)
-        case vadConfig(Mentraos_Ble_VadConfig)
-        /// Display System
-        case displayText(Mentraos_Ble_DisplayText)
-        case displayImage(Mentraos_Ble_DisplayImage)
-        case preloadImage(Mentraos_Ble_PreloadImage)
-        case displayCachedImage(Mentraos_Ble_DisplayCachedImage)
-        case clearCachedImage_p(Mentraos_Ble_ClearCachedImage)
-        case displayScrollingText(Mentraos_Ble_DisplayScrollingText)
-        case displayPower(Mentraos_Ble_DisplayPowerConfig)
-        case brightness(Mentraos_Ble_BrightnessConfig)
-        case autoBrightness(Mentraos_Ble_AutoBrightnessConfig)
-        case autoBrightnessMult(Mentraos_Ble_AutoBrightnessMultiplier)
-        case drawLine(Mentraos_Ble_DrawLine)
-        case drawRect(Mentraos_Ble_DrawRect)
-        case drawCircle(Mentraos_Ble_DrawCircle)
-        case commit(Mentraos_Ble_CommitDisplay)
-        case displayDistance(Mentraos_Ble_DisplayDistanceConfig)
-        case displayHeight(Mentraos_Ble_DisplayHeightConfig)
-        case clearDisplay_p(Mentraos_Ble_ClearDisplay)
-        /// User Input
-        case imuEnabled(Mentraos_Ble_ImuEnabledConfig)
-        case imuSingle(Mentraos_Ble_ImuSingleRequest)
-        case imuStream(Mentraos_Ble_ImuStreamConfig)
-        case headGesture(Mentraos_Ble_HeadGestureConfig)
-        /// System Control
-        case restart(Mentraos_Ble_RestartRequest)
-        case factoryReset(Mentraos_Ble_FactoryResetRequest)
-    }
+  }
 
-    init() {}
+  init() {}
 }
 
 /// All messages from glasses to phone
 struct Mentraos_Ble_GlassesToPhone: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
-
-    var payload: Mentraos_Ble_GlassesToPhone.OneOf_Payload?
-
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  var payload: Mentraos_Ble_GlassesToPhone.OneOf_Payload? = nil
+
+  /// Connection Management
+  var batteryStatus: Mentraos_Ble_BatteryStatus {
+    get {
+      if case .batteryStatus(let v)? = payload {return v}
+      return Mentraos_Ble_BatteryStatus()
+    }
+    set {payload = .batteryStatus(newValue)}
+  }
+
+  var chargingState: Mentraos_Ble_ChargingState {
+    get {
+      if case .chargingState(let v)? = payload {return v}
+      return Mentraos_Ble_ChargingState()
+    }
+    set {payload = .chargingState(newValue)}
+  }
+
+  var deviceInfo: Mentraos_Ble_DeviceInfo {
+    get {
+      if case .deviceInfo(let v)? = payload {return v}
+      return Mentraos_Ble_DeviceInfo()
+    }
+    set {payload = .deviceInfo(newValue)}
+  }
+
+  var headPosition: Mentraos_Ble_HeadPosition {
+    get {
+      if case .headPosition(let v)? = payload {return v}
+      return Mentraos_Ble_HeadPosition()
+    }
+    set {payload = .headPosition(newValue)}
+  }
+
+  var headUpAngleSet: Mentraos_Ble_HeadUpAngleResponse {
+    get {
+      if case .headUpAngleSet(let v)? = payload {return v}
+      return Mentraos_Ble_HeadUpAngleResponse()
+    }
+    set {payload = .headUpAngleSet(newValue)}
+  }
+
+  var ping: Mentraos_Ble_PingRequest {
+    get {
+      if case .ping(let v)? = payload {return v}
+      return Mentraos_Ble_PingRequest()
+    }
+    set {payload = .ping(newValue)}
+  }
+
+  /// Audio System
+  var vadEvent: Mentraos_Ble_VadEvent {
+    get {
+      if case .vadEvent(let v)? = payload {return v}
+      return Mentraos_Ble_VadEvent()
+    }
+    set {payload = .vadEvent(newValue)}
+  }
+
+  /// response to set_vad_enabled
+  var vadEnabledSet: Mentraos_Ble_VadEnabledResponse {
+    get {
+      if case .vadEnabledSet(let v)? = payload {return v}
+      return Mentraos_Ble_VadEnabledResponse()
+    }
+    set {payload = .vadEnabledSet(newValue)}
+  }
+
+  /// response to set_vad_config
+  var vadConfigured: Mentraos_Ble_VadConfigResponse {
+    get {
+      if case .vadConfigured(let v)? = payload {return v}
+      return Mentraos_Ble_VadConfigResponse()
+    }
+    set {payload = .vadConfigured(newValue)}
+  }
+
+  /// response to request_vad_status
+  var vadStatus: Mentraos_Ble_VadStatus {
+    get {
+      if case .vadStatus(let v)? = payload {return v}
+      return Mentraos_Ble_VadStatus()
+    }
+    set {payload = .vadStatus(newValue)}
+  }
+
+  /// Display System
+  var imageTransferComplete: Mentraos_Ble_ImageTransferComplete {
+    get {
+      if case .imageTransferComplete(let v)? = payload {return v}
+      return Mentraos_Ble_ImageTransferComplete()
+    }
+    set {payload = .imageTransferComplete(newValue)}
+  }
+
+  var displayQueueInfo: Mentraos_Ble_DisplayQueueInfo {
+    get {
+      if case .displayQueueInfo(let v)? = payload {return v}
+      return Mentraos_Ble_DisplayQueueInfo()
+    }
+    set {payload = .displayQueueInfo(newValue)}
+  }
+
+  /// User Input
+  var imuData: Mentraos_Ble_ImuData {
+    get {
+      if case .imuData(let v)? = payload {return v}
+      return Mentraos_Ble_ImuData()
+    }
+    set {payload = .imuData(newValue)}
+  }
+
+  var buttonEvent: Mentraos_Ble_ButtonEvent {
+    get {
+      if case .buttonEvent(let v)? = payload {return v}
+      return Mentraos_Ble_ButtonEvent()
+    }
+    set {payload = .buttonEvent(newValue)}
+  }
+
+  var headGesture: Mentraos_Ble_HeadGesture {
+    get {
+      if case .headGesture(let v)? = payload {return v}
+      return Mentraos_Ble_HeadGesture()
+    }
+    set {payload = .headGesture(newValue)}
+  }
+
+  /// Dashboard System
+  var dashboardShown: Mentraos_Ble_DashboardShown {
+    get {
+      if case .dashboardShown(let v)? = payload {return v}
+      return Mentraos_Ble_DashboardShown()
+    }
+    set {payload = .dashboardShown(newValue)}
+  }
+
+  /// Runtime protocol version response
+  var versionResponse: Mentraos_Ble_VersionResponse {
+    get {
+      if case .versionResponse(let v)? = payload {return v}
+      return Mentraos_Ble_VersionResponse()
+    }
+    set {payload = .versionResponse(newValue)}
+  }
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  enum OneOf_Payload: Equatable, Sendable {
     /// Connection Management
-    var batteryStatus: Mentraos_Ble_BatteryStatus {
-        get {
-            if case let .batteryStatus(v)? = payload { return v }
-            return Mentraos_Ble_BatteryStatus()
-        }
-        set { payload = .batteryStatus(newValue) }
-    }
-
-    var chargingState: Mentraos_Ble_ChargingState {
-        get {
-            if case let .chargingState(v)? = payload { return v }
-            return Mentraos_Ble_ChargingState()
-        }
-        set { payload = .chargingState(newValue) }
-    }
-
-    var deviceInfo: Mentraos_Ble_DeviceInfo {
-        get {
-            if case let .deviceInfo(v)? = payload { return v }
-            return Mentraos_Ble_DeviceInfo()
-        }
-        set { payload = .deviceInfo(newValue) }
-    }
-
-    var headPosition: Mentraos_Ble_HeadPosition {
-        get {
-            if case let .headPosition(v)? = payload { return v }
-            return Mentraos_Ble_HeadPosition()
-        }
-        set { payload = .headPosition(newValue) }
-    }
-
-    var headUpAngleSet: Mentraos_Ble_HeadUpAngleResponse {
-        get {
-            if case let .headUpAngleSet(v)? = payload { return v }
-            return Mentraos_Ble_HeadUpAngleResponse()
-        }
-        set { payload = .headUpAngleSet(newValue) }
-    }
-
-    var ping: Mentraos_Ble_PingRequest {
-        get {
-            if case let .ping(v)? = payload { return v }
-            return Mentraos_Ble_PingRequest()
-        }
-        set { payload = .ping(newValue) }
-    }
-
+    case batteryStatus(Mentraos_Ble_BatteryStatus)
+    case chargingState(Mentraos_Ble_ChargingState)
+    case deviceInfo(Mentraos_Ble_DeviceInfo)
+    case headPosition(Mentraos_Ble_HeadPosition)
+    case headUpAngleSet(Mentraos_Ble_HeadUpAngleResponse)
+    case ping(Mentraos_Ble_PingRequest)
     /// Audio System
-    var vadEvent: Mentraos_Ble_VadEvent {
-        get {
-            if case let .vadEvent(v)? = payload { return v }
-            return Mentraos_Ble_VadEvent()
-        }
-        set { payload = .vadEvent(newValue) }
-    }
-
+    case vadEvent(Mentraos_Ble_VadEvent)
+    /// response to set_vad_enabled
+    case vadEnabledSet(Mentraos_Ble_VadEnabledResponse)
+    /// response to set_vad_config
+    case vadConfigured(Mentraos_Ble_VadConfigResponse)
+    /// response to request_vad_status
+    case vadStatus(Mentraos_Ble_VadStatus)
     /// Display System
-    var imageTransferComplete: Mentraos_Ble_ImageTransferComplete {
-        get {
-            if case let .imageTransferComplete(v)? = payload { return v }
-            return Mentraos_Ble_ImageTransferComplete()
-        }
-        set { payload = .imageTransferComplete(newValue) }
-    }
-
+    case imageTransferComplete(Mentraos_Ble_ImageTransferComplete)
+    case displayQueueInfo(Mentraos_Ble_DisplayQueueInfo)
     /// User Input
-    var imuData: Mentraos_Ble_ImuData {
-        get {
-            if case let .imuData(v)? = payload { return v }
-            return Mentraos_Ble_ImuData()
-        }
-        set { payload = .imuData(newValue) }
-    }
-
-    var buttonEvent: Mentraos_Ble_ButtonEvent {
-        get {
-            if case let .buttonEvent(v)? = payload { return v }
-            return Mentraos_Ble_ButtonEvent()
-        }
-        set { payload = .buttonEvent(newValue) }
-    }
+    case imuData(Mentraos_Ble_ImuData)
+    case buttonEvent(Mentraos_Ble_ButtonEvent)
+    case headGesture(Mentraos_Ble_HeadGesture)
+    /// Dashboard System
+    case dashboardShown(Mentraos_Ble_DashboardShown)
+    /// Runtime protocol version response
+    case versionResponse(Mentraos_Ble_VersionResponse)
 
-    var headGesture: Mentraos_Ble_HeadGesture {
-        get {
-            if case let .headGesture(v)? = payload { return v }
-            return Mentraos_Ble_HeadGesture()
-        }
-        set { payload = .headGesture(newValue) }
-    }
-
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  }
 
-    enum OneOf_Payload: Equatable, Sendable {
-        /// Connection Management
-        case batteryStatus(Mentraos_Ble_BatteryStatus)
-        case chargingState(Mentraos_Ble_ChargingState)
-        case deviceInfo(Mentraos_Ble_DeviceInfo)
-        case headPosition(Mentraos_Ble_HeadPosition)
-        case headUpAngleSet(Mentraos_Ble_HeadUpAngleResponse)
-        case ping(Mentraos_Ble_PingRequest)
-        /// Audio System
-        case vadEvent(Mentraos_Ble_VadEvent)
-        /// Display System
-        case imageTransferComplete(Mentraos_Ble_ImageTransferComplete)
-        /// User Input
-        case imuData(Mentraos_Ble_ImuData)
-        case buttonEvent(Mentraos_Ble_ButtonEvent)
-        case headGesture(Mentraos_Ble_HeadGesture)
-    }
-
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_DisconnectRequest: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_BatteryStateRequest: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_BatteryStatus: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    /// 0-100 percentage
-    var level: UInt32 = 0
+  /// 0-100 percentage
+  var level: UInt32 = 0
 
-    var charging: Bool = false
+  var charging: Bool = false
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_ChargingState: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
-
-    var state: Mentraos_Ble_ChargingState.State = .notCharging
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var state: Mentraos_Ble_ChargingState.State = .notCharging
 
-    enum State: SwiftProtobuf.Enum, Swift.CaseIterable {
-        typealias RawValue = Int
-        case notCharging // = 0
-        case charging // = 1
-        case UNRECOGNIZED(Int)
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-        init() {
-            self = .notCharging
-        }
+  enum State: SwiftProtobuf.Enum, Swift.CaseIterable {
+    typealias RawValue = Int
+    case notCharging // = 0
+    case charging // = 1
+    case UNRECOGNIZED(Int)
 
-        init?(rawValue: Int) {
-            switch rawValue {
-            case 0: self = .notCharging
-            case 1: self = .charging
-            default: self = .UNRECOGNIZED(rawValue)
-            }
-        }
+    init() {
+      self = .notCharging
+    }
 
-        var rawValue: Int {
-            switch self {
-            case .notCharging: return 0
-            case .charging: return 1
-            case let .UNRECOGNIZED(i): return i
-            }
-        }
+    init?(rawValue: Int) {
+      switch rawValue {
+      case 0: self = .notCharging
+      case 1: self = .charging
+      default: self = .UNRECOGNIZED(rawValue)
+      }
+    }
 
-        // The compiler won't synthesize support with the UNRECOGNIZED case.
-        static let allCases: [Mentraos_Ble_ChargingState.State] = [
-            .notCharging,
-            .charging,
-        ]
+    var rawValue: Int {
+      switch self {
+      case .notCharging: return 0
+      case .charging: return 1
+      case .UNRECOGNIZED(let i): return i
+      }
     }
 
-    init() {}
+    // The compiler won't synthesize support with the UNRECOGNIZED case.
+    static let allCases: [Mentraos_Ble_ChargingState.State] = [
+      .notCharging,
+      .charging,
+    ]
+
+  }
+
+  init() {}
 }
 
 struct Mentraos_Ble_GlassesInfoRequest: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_DeviceInfo: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
-
-    var fwVersion: String = .init()
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var hwModel: String = .init()
+  var fwVersion: String = String()
 
-    var features: Mentraos_Ble_DeviceFeatures {
-        get { return _features ?? Mentraos_Ble_DeviceFeatures() }
-        set { _features = newValue }
-    }
+  var hwModel: String = String()
 
-    /// Returns true if `features` has been explicitly set.
-    var hasFeatures: Bool { return _features != nil }
-    /// Clears the value of `features`. Subsequent reads from it will return its default value.
-    mutating func clearFeatures() { _features = nil }
+  var features: Mentraos_Ble_DeviceFeatures {
+    get {return _features ?? Mentraos_Ble_DeviceFeatures()}
+    set {_features = newValue}
+  }
+  /// Returns true if `features` has been explicitly set.
+  var hasFeatures: Bool {return self._features != nil}
+  /// Clears the value of `features`. Subsequent reads from it will return its default value.
+  mutating func clearFeatures() {self._features = nil}
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 
-    fileprivate var _features: Mentraos_Ble_DeviceFeatures?
+  fileprivate var _features: Mentraos_Ble_DeviceFeatures? = nil
 }
 
 struct Mentraos_Ble_DeviceFeatures: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var camera: Bool = false
+  var camera: Bool = false
 
-    var display: Bool = false
+  var display: Bool = false
 
-    var audioTx: Bool = false
+  var audioTx: Bool = false
 
-    var audioRx: Bool = false
+  var audioRx: Bool = false
 
-    var imu: Bool = false
+  var imu: Bool = false
 
-    var vad: Bool = false
+  var vad: Bool = false
 
-    var micSwitching: Bool = false
+  var micSwitching: Bool = false
 
-    /// Max chunks that can be buffered
-    var imageChunkBuffer: UInt32 = 0
+  /// Max chunks that can be buffered
+  var imageChunkBuffer: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_PairingModeRequest: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_HeadPositionRequest: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_HeadPosition: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    /// degrees
-    var angle: Int32 = 0
+  /// degrees
+  var angle: Int32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_HeadUpAngleConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    /// degrees
-    var angle: UInt32 = 0
+  /// degrees
+  var angle: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_HeadUpAngleResponse: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var success: Bool = false
+  var success: Bool = false
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_PingRequest: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var msgID: String = String()
 
-    init() {}
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
 }
 
 struct Mentraos_Ble_PongResponse: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_MicStateConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var enabled: Bool = false
+  var enabled: Bool = false
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
-struct Mentraos_Ble_VadEnabledConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+/// Events: emitted when voice activity starts/stops
+struct Mentraos_Ble_VadEvent: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var enabled: Bool = false
+  var state: Mentraos_Ble_VadEvent.State = .inactive
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
-}
+  enum State: SwiftProtobuf.Enum, Swift.CaseIterable {
+    typealias RawValue = Int
+    case inactive // = 0
+    case active // = 1
+    case UNRECOGNIZED(Int)
 
-struct Mentraos_Ble_VadConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+    init() {
+      self = .inactive
+    }
 
-    /// 0-100
-    var sensitivity: UInt32 = 0
+    init?(rawValue: Int) {
+      switch rawValue {
+      case 0: self = .inactive
+      case 1: self = .active
+      default: self = .UNRECOGNIZED(rawValue)
+      }
+    }
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+    var rawValue: Int {
+      switch self {
+      case .inactive: return 0
+      case .active: return 1
+      case .UNRECOGNIZED(let i): return i
+      }
+    }
 
-    init() {}
-}
+    // The compiler won't synthesize support with the UNRECOGNIZED case.
+    static let allCases: [Mentraos_Ble_VadEvent.State] = [
+      .inactive,
+      .active,
+    ]
 
-struct Mentraos_Ble_VadEvent: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  }
 
-    var state: Mentraos_Ble_VadEvent.State = .inactive
+  init() {}
+}
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+/// Enable/disable VAD (request)
+struct Mentraos_Ble_VadEnabledRequest: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    enum State: SwiftProtobuf.Enum, Swift.CaseIterable {
-        typealias RawValue = Int
-        case inactive // = 0
-        case active // = 1
-        case UNRECOGNIZED(Int)
+  var msgID: String = String()
 
-        init() {
-            self = .inactive
-        }
+  var enabled: Bool = false
 
-        init?(rawValue: Int) {
-            switch rawValue {
-            case 0: self = .inactive
-            case 1: self = .active
-            default: self = .UNRECOGNIZED(rawValue)
-            }
-        }
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-        var rawValue: Int {
-            switch self {
-            case .inactive: return 0
-            case .active: return 1
-            case let .UNRECOGNIZED(i): return i
-            }
-        }
+  init() {}
+}
 
-        // The compiler won't synthesize support with the UNRECOGNIZED case.
-        static let allCases: [Mentraos_Ble_VadEvent.State] = [
-            .inactive,
-            .active,
-        ]
-    }
+/// Response to enable/disable VAD
+struct Mentraos_Ble_VadEnabledResponse: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    init() {}
-}
+  /// echoes request
+  var msgID: String = String()
 
-struct Mentraos_Ble_DisplayText: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  var success: Bool = false
 
-    var text: String = .init()
+  /// optional diagnostics
+  var error: String = String()
 
-    /// RGB565 format (e.g., 0xF800 for red)
-    var color: UInt32 = 0
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    /// Font identifier
-    var fontCode: UInt32 = 0
+  init() {}
+}
 
-    var x: UInt32 = 0
+/// Configure VAD sensitivity (request)
+struct Mentraos_Ble_VadConfigRequest: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var y: UInt32 = 0
+  var msgID: String = String()
 
-    /// Font size multiplier
-    var size: UInt32 = 0
+  /// 0-100
+  var sensitivity: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
-/// Initiates bitmap transfer - actual data comes via binary protocol
-struct Mentraos_Ble_DisplayImage: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+/// Response to VAD config
+struct Mentraos_Ble_VadConfigResponse: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    /// 2-byte hex string like "002A"
-    var streamID: String = .init()
+  /// echoes request
+  var msgID: String = String()
 
-    var x: UInt32 = 0
+  var success: Bool = false
 
-    var y: UInt32 = 0
+  /// optional diagnostics
+  var error: String = String()
 
-    var width: UInt32 = 0
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    var height: UInt32 = 0
+  init() {}
+}
 
-    /// "rle", "webp", etc.
-    var encoding: String = .init()
+/// Query current VAD state (request)
+struct Mentraos_Ble_VadStatusRequest: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var totalChunks: UInt32 = 0
+  var msgID: String = String()
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
-struct Mentraos_Ble_PreloadImage: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
-
-    var streamID: String = .init()
-
-    /// ID for later reference
-    var imageID: UInt32 = 0
+/// Current VAD state (response)
+struct Mentraos_Ble_VadStatus: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var width: UInt32 = 0
+  /// echoes request
+  var msgID: String = String()
 
-    var height: UInt32 = 0
+  var enabled: Bool = false
 
-    var encoding: String = .init()
+  /// 0-100
+  var sensitivity: UInt32 = 0
 
-    var totalChunks: UInt32 = 0
-
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
-struct Mentraos_Ble_DisplayCachedImage: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+struct Mentraos_Ble_DisplayText: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var imageID: UInt32 = 0
+  var text: String = String()
 
-    var x: UInt32 = 0
+  /// RGB565 format (e.g., 0xF800 for red)
+  var color: UInt32 = 0
 
-    var y: UInt32 = 0
+  var x: UInt32 = 0
 
-    var width: UInt32 = 0
+  var y: UInt32 = 0
 
-    var height: UInt32 = 0
+  /// Font size as integer
+  var size: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
+}
+
+/// Initiates bitmap transfer - actual data comes via binary protocol
+struct Mentraos_Ble_DisplayImage: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// 2-byte hex string like "002A"
+  var streamID: String = String()
+
+  var x: UInt32 = 0
+
+  var y: UInt32 = 0
+
+  var width: UInt32 = 0
+
+  var height: UInt32 = 0
+
+  /// "rle", "webp", etc.
+  var encoding: String = String()
+
+  var totalChunks: UInt32 = 0
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+struct Mentraos_Ble_CacheImage: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  var streamID: String = String()
+
+  /// ID for later reference
+  var imageID: UInt32 = 0
+
+  var width: UInt32 = 0
+
+  var height: UInt32 = 0
+
+  var encoding: String = String()
+
+  var totalChunks: UInt32 = 0
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+struct Mentraos_Ble_DisplayCachedImage: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  var imageID: UInt32 = 0
+
+  var x: UInt32 = 0
+
+  var y: UInt32 = 0
+
+  var width: UInt32 = 0
+
+  var height: UInt32 = 0
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
 }
 
 struct Mentraos_Ble_ClearCachedImage: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var imageID: UInt32 = 0
+  var imageID: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_DisplayScrollingText: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var text: String = .init()
+  var text: String = String()
 
-    var color: UInt32 = 0
+  var color: UInt32 = 0
 
-    var fontCode: UInt32 = 0
+  /// Text box X position
+  var x: UInt32 = 0
 
-    var x: UInt32 = 0
+  /// Text box Y position
+  var y: UInt32 = 0
 
-    var y: UInt32 = 0
+  /// Text box width (for LVGL wrapping)
+  var width: UInt32 = 0
 
-    var width: UInt32 = 0
+  /// Text box height (truncate with ellipses if exceeded)
+  var height: UInt32 = 0
 
-    var height: UInt32 = 0
+  var align: Mentraos_Ble_DisplayScrollingText.Alignment = .left
 
-    var align: Mentraos_Ble_DisplayScrollingText.Alignment = .left
+  /// pixels between lines
+  var lineSpacing: UInt32 = 0
 
-    /// pixels between lines
-    var lineSpacing: UInt32 = 0
+  /// pixels/sec scrolling up
+  var speed: UInt32 = 0
 
-    /// pixels/sec scrolling up
-    var speed: UInt32 = 0
+  /// Font size as integer
+  var size: UInt32 = 0
 
-    /// font size multiplier
-    var size: UInt32 = 0
+  /// wrap to top when finished
+  var loop: Bool = false
 
-    /// wrap to top when finished
-    var loop: Bool = false
+  /// delay before restart (if looping)
+  var pauseMs: UInt32 = 0
 
-    /// delay before restart (if looping)
-    var pauseMs: UInt32 = 0
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  enum Alignment: SwiftProtobuf.Enum, Swift.CaseIterable {
+    typealias RawValue = Int
+    case left // = 0
+    case center // = 1
+    case right // = 2
+    case UNRECOGNIZED(Int)
 
-    enum Alignment: SwiftProtobuf.Enum, Swift.CaseIterable {
-        typealias RawValue = Int
-        case left // = 0
-        case center // = 1
-        case right // = 2
-        case UNRECOGNIZED(Int)
+    init() {
+      self = .left
+    }
 
-        init() {
-            self = .left
-        }
+    init?(rawValue: Int) {
+      switch rawValue {
+      case 0: self = .left
+      case 1: self = .center
+      case 2: self = .right
+      default: self = .UNRECOGNIZED(rawValue)
+      }
+    }
 
-        init?(rawValue: Int) {
-            switch rawValue {
-            case 0: self = .left
-            case 1: self = .center
-            case 2: self = .right
-            default: self = .UNRECOGNIZED(rawValue)
-            }
-        }
+    var rawValue: Int {
+      switch self {
+      case .left: return 0
+      case .center: return 1
+      case .right: return 2
+      case .UNRECOGNIZED(let i): return i
+      }
+    }
 
-        var rawValue: Int {
-            switch self {
-            case .left: return 0
-            case .center: return 1
-            case .right: return 2
-            case let .UNRECOGNIZED(i): return i
-            }
-        }
+    // The compiler won't synthesize support with the UNRECOGNIZED case.
+    static let allCases: [Mentraos_Ble_DisplayScrollingText.Alignment] = [
+      .left,
+      .center,
+      .right,
+    ]
 
-        // The compiler won't synthesize support with the UNRECOGNIZED case.
-        static let allCases: [Mentraos_Ble_DisplayScrollingText.Alignment] = [
-            .left,
-            .center,
-            .right,
-        ]
-    }
+  }
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_DisplayPowerConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    /// true = turn on, false = turn off
-    var on: Bool = false
+  /// true = turn on, false = turn off
+  var on: Bool = false
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_BrightnessConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    /// 0-100
-    var value: UInt32 = 0
+  /// 0-100
+  var value: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_AutoBrightnessConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var enabled: Bool = false
+  var enabled: Bool = false
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_AutoBrightnessMultiplier: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    /// e.g., 0.8 = 80%
-    var multiplier: Float = 0
+  /// e.g., 0.8 = 80%
+  var multiplier: Float = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_DrawLine: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var color: UInt32 = 0
+  var color: UInt32 = 0
 
-    var stroke: UInt32 = 0
+  var stroke: UInt32 = 0
 
-    var x1: UInt32 = 0
+  var x1: UInt32 = 0
 
-    var y1: UInt32 = 0
+  var y1: UInt32 = 0
 
-    var x2: UInt32 = 0
+  var x2: UInt32 = 0
 
-    var y2: UInt32 = 0
+  var y2: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_DrawRect: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var color: UInt32 = 0
+  var color: UInt32 = 0
 
-    var stroke: UInt32 = 0
+  var stroke: UInt32 = 0
 
-    var x: UInt32 = 0
+  var x: UInt32 = 0
 
-    var y: UInt32 = 0
+  var y: UInt32 = 0
 
-    var width: UInt32 = 0
+  var width: UInt32 = 0
 
-    var height: UInt32 = 0
+  var height: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_DrawCircle: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var color: UInt32 = 0
+  var color: UInt32 = 0
 
-    var stroke: UInt32 = 0
+  var stroke: UInt32 = 0
 
-    var x: UInt32 = 0
+  var x: UInt32 = 0
 
-    var y: UInt32 = 0
+  var y: UInt32 = 0
 
-    var radius: UInt32 = 0
+  var radius: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
-struct Mentraos_Ble_CommitDisplay: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+/// Send multiple display commands in a single message (more efficient)
+struct Mentraos_Ble_DisplayBatch: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var commands: [Mentraos_Ble_DisplayBatch.DisplayCommand] = []
 
-    init() {}
-}
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-struct Mentraos_Ble_ClearDisplay: Sendable {
+  struct DisplayCommand: Sendable {
     // SwiftProtobuf.Message conformance is added in an extension below. See the
     // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
     // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+    var command: Mentraos_Ble_DisplayBatch.DisplayCommand.OneOf_Command? = nil
 
-    init() {}
-}
+    var text: Mentraos_Ble_DisplayText {
+      get {
+        if case .text(let v)? = command {return v}
+        return Mentraos_Ble_DisplayText()
+      }
+      set {command = .text(newValue)}
+    }
 
-struct Mentraos_Ble_DisplayDistanceConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+    var cachedImage: Mentraos_Ble_DisplayCachedImage {
+      get {
+        if case .cachedImage(let v)? = command {return v}
+        return Mentraos_Ble_DisplayCachedImage()
+      }
+      set {command = .cachedImage(newValue)}
+    }
+
+    var line: Mentraos_Ble_DrawLine {
+      get {
+        if case .line(let v)? = command {return v}
+        return Mentraos_Ble_DrawLine()
+      }
+      set {command = .line(newValue)}
+    }
 
-    var distanceCm: UInt32 = 0
+    var rect: Mentraos_Ble_DrawRect {
+      get {
+        if case .rect(let v)? = command {return v}
+        return Mentraos_Ble_DrawRect()
+      }
+      set {command = .rect(newValue)}
+    }
+
+    var circle: Mentraos_Ble_DrawCircle {
+      get {
+        if case .circle(let v)? = command {return v}
+        return Mentraos_Ble_DrawCircle()
+      }
+      set {command = .circle(newValue)}
+    }
+
+    var scrollingText: Mentraos_Ble_DisplayScrollingText {
+      get {
+        if case .scrollingText(let v)? = command {return v}
+        return Mentraos_Ble_DisplayScrollingText()
+      }
+      set {command = .scrollingText(newValue)}
+    }
 
     var unknownFields = SwiftProtobuf.UnknownStorage()
 
+    enum OneOf_Command: Equatable, Sendable {
+      case text(Mentraos_Ble_DisplayText)
+      case cachedImage(Mentraos_Ble_DisplayCachedImage)
+      case line(Mentraos_Ble_DrawLine)
+      case rect(Mentraos_Ble_DrawRect)
+      case circle(Mentraos_Ble_DrawCircle)
+      case scrollingText(Mentraos_Ble_DisplayScrollingText)
+
+    }
+
     init() {}
+  }
+
+  init() {}
 }
 
-struct Mentraos_Ble_DisplayHeightConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+/// Commits all queued display commands to screen atomically
+/// All display commands since last commit are rendered together
+struct Mentraos_Ble_CommitDisplay: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var height: UInt32 = 0
+  /// Optional: clear screen before applying commands
+  var clearBefore_p: Bool = false
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
-struct Mentraos_Ble_ImageTransferComplete: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+/// Clears display immediately (NOT queued, happens right away)
+struct Mentraos_Ble_ClearDisplay: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    var streamID: String = .init()
+  init() {}
+}
 
-    var status: Mentraos_Ble_ImageTransferComplete.Status = .ok
+/// Request status of display queue
+struct Mentraos_Ble_DisplayQueueStatus: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    /// List of missing chunk indices
-    var missingChunks: [UInt32] = []
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  init() {}
+}
 
-    enum Status: SwiftProtobuf.Enum, Swift.CaseIterable {
-        typealias RawValue = Int
-        case ok // = 0
-        case incomplete // = 1
-        case UNRECOGNIZED(Int)
+/// Response with queue information
+struct Mentraos_Ble_DisplayQueueInfo: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-        init() {
-            self = .ok
-        }
+  /// Number of commands waiting for commit
+  var queuedCommands: UInt32 = 0
 
-        init?(rawValue: Int) {
-            switch rawValue {
-            case 0: self = .ok
-            case 1: self = .incomplete
-            default: self = .UNRECOGNIZED(rawValue)
-            }
-        }
+  /// Memory used by queue
+  var queueBytes: UInt32 = 0
 
-        var rawValue: Int {
-            switch self {
-            case .ok: return 0
-            case .incomplete: return 1
-            case let .UNRECOGNIZED(i): return i
-            }
-        }
+  /// Maximum queue size in bytes
+  var maxQueueSize: UInt32 = 0
 
-        // The compiler won't synthesize support with the UNRECOGNIZED case.
-        static let allCases: [Mentraos_Ble_ImageTransferComplete.Status] = [
-            .ok,
-            .incomplete,
-        ]
-    }
+  /// Status of last commit operation
+  var lastCommitSuccess: Bool = false
 
-    init() {}
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
 }
 
-struct Mentraos_Ble_ImuEnabledConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+struct Mentraos_Ble_DisplayDistanceConfig: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var enabled: Bool = false
+  var distanceCm: UInt32 = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
-struct Mentraos_Ble_ImuSingleRequest: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+struct Mentraos_Ble_DisplayHeightConfig: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var height: UInt32 = 0
 
-    init() {}
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
 }
 
-struct Mentraos_Ble_ImuStreamConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+struct Mentraos_Ble_ImageTransferComplete: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var enabled: Bool = false
+  var streamID: String = String()
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var status: Mentraos_Ble_ImageTransferComplete.Status = .ok
 
-    init() {}
-}
+  /// List of missing chunk indices
+  var missingChunks: [UInt32] = []
 
-struct Mentraos_Ble_ImuData: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    var accel: Mentraos_Ble_Vector3 {
-        get { return _accel ?? Mentraos_Ble_Vector3() }
-        set { _accel = newValue }
+  enum Status: SwiftProtobuf.Enum, Swift.CaseIterable {
+    typealias RawValue = Int
+    case ok // = 0
+    case incomplete // = 1
+    case UNRECOGNIZED(Int)
+
+    init() {
+      self = .ok
     }
 
-    /// Returns true if `accel` has been explicitly set.
-    var hasAccel: Bool { return _accel != nil }
-    /// Clears the value of `accel`. Subsequent reads from it will return its default value.
-    mutating func clearAccel() { _accel = nil }
+    init?(rawValue: Int) {
+      switch rawValue {
+      case 0: self = .ok
+      case 1: self = .incomplete
+      default: self = .UNRECOGNIZED(rawValue)
+      }
+    }
 
-    var gyro: Mentraos_Ble_Vector3 {
-        get { return _gyro ?? Mentraos_Ble_Vector3() }
-        set { _gyro = newValue }
+    var rawValue: Int {
+      switch self {
+      case .ok: return 0
+      case .incomplete: return 1
+      case .UNRECOGNIZED(let i): return i
+      }
     }
 
-    /// Returns true if `gyro` has been explicitly set.
-    var hasGyro: Bool { return _gyro != nil }
-    /// Clears the value of `gyro`. Subsequent reads from it will return its default value.
-    mutating func clearGyro() { _gyro = nil }
+    // The compiler won't synthesize support with the UNRECOGNIZED case.
+    static let allCases: [Mentraos_Ble_ImageTransferComplete.Status] = [
+      .ok,
+      .incomplete,
+    ]
 
-    var mag: Mentraos_Ble_Vector3 {
-        get { return _mag ?? Mentraos_Ble_Vector3() }
-        set { _mag = newValue }
-    }
+  }
 
-    /// Returns true if `mag` has been explicitly set.
-    var hasMag: Bool { return _mag != nil }
-    /// Clears the value of `mag`. Subsequent reads from it will return its default value.
-    mutating func clearMag() { _mag = nil }
+  init() {}
+}
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+struct Mentraos_Ble_ImuEnabledConfig: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    init() {}
+  var enabled: Bool = false
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    fileprivate var _accel: Mentraos_Ble_Vector3?
-    fileprivate var _gyro: Mentraos_Ble_Vector3?
-    fileprivate var _mag: Mentraos_Ble_Vector3?
+  init() {}
 }
 
-struct Mentraos_Ble_Vector3: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+struct Mentraos_Ble_ImuSingleRequest: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    var x: Float = 0
+  init() {}
+}
 
-    var y: Float = 0
+struct Mentraos_Ble_ImuStreamConfig: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var z: Float = 0
+  var enabled: Bool = false
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
-struct Mentraos_Ble_ButtonEvent: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+struct Mentraos_Ble_ImuData: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  var accel: Mentraos_Ble_Vector3 {
+    get {return _accel ?? Mentraos_Ble_Vector3()}
+    set {_accel = newValue}
+  }
+  /// Returns true if `accel` has been explicitly set.
+  var hasAccel: Bool {return self._accel != nil}
+  /// Clears the value of `accel`. Subsequent reads from it will return its default value.
+  mutating func clearAccel() {self._accel = nil}
+
+  var gyro: Mentraos_Ble_Vector3 {
+    get {return _gyro ?? Mentraos_Ble_Vector3()}
+    set {_gyro = newValue}
+  }
+  /// Returns true if `gyro` has been explicitly set.
+  var hasGyro: Bool {return self._gyro != nil}
+  /// Clears the value of `gyro`. Subsequent reads from it will return its default value.
+  mutating func clearGyro() {self._gyro = nil}
+
+  var mag: Mentraos_Ble_Vector3 {
+    get {return _mag ?? Mentraos_Ble_Vector3()}
+    set {_mag = newValue}
+  }
+  /// Returns true if `mag` has been explicitly set.
+  var hasMag: Bool {return self._mag != nil}
+  /// Clears the value of `mag`. Subsequent reads from it will return its default value.
+  mutating func clearMag() {self._mag = nil}
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+
+  fileprivate var _accel: Mentraos_Ble_Vector3? = nil
+  fileprivate var _gyro: Mentraos_Ble_Vector3? = nil
+  fileprivate var _mag: Mentraos_Ble_Vector3? = nil
+}
 
-    var button: Mentraos_Ble_ButtonEvent.Button = .center
+struct Mentraos_Ble_Vector3: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var state: Mentraos_Ble_ButtonEvent.State = .up
+  var x: Float = 0
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var y: Float = 0
 
-    enum Button: SwiftProtobuf.Enum, Swift.CaseIterable {
-        typealias RawValue = Int
-        case center // = 0
-        case left // = 1
-        case right // = 2
-        case UNRECOGNIZED(Int)
+  var z: Float = 0
 
-        init() {
-            self = .center
-        }
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-        init?(rawValue: Int) {
-            switch rawValue {
-            case 0: self = .center
-            case 1: self = .left
-            case 2: self = .right
-            default: self = .UNRECOGNIZED(rawValue)
-            }
-        }
+  init() {}
+}
 
-        var rawValue: Int {
-            switch self {
-            case .center: return 0
-            case .left: return 1
-            case .right: return 2
-            case let .UNRECOGNIZED(i): return i
-            }
-        }
+struct Mentraos_Ble_ButtonEvent: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-        // The compiler won't synthesize support with the UNRECOGNIZED case.
-        static let allCases: [Mentraos_Ble_ButtonEvent.Button] = [
-            .center,
-            .left,
-            .right,
-        ]
-    }
+  var button: Mentraos_Ble_ButtonEvent.Button = .leftBack
 
-    enum State: SwiftProtobuf.Enum, Swift.CaseIterable {
-        typealias RawValue = Int
-        case up // = 0
-        case down // = 1
-        case UNRECOGNIZED(Int)
+  var event: Mentraos_Ble_ButtonEvent.Event = .singleTap
 
-        init() {
-            self = .up
-        }
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-        init?(rawValue: Int) {
-            switch rawValue {
-            case 0: self = .up
-            case 1: self = .down
-            default: self = .UNRECOGNIZED(rawValue)
-            }
-        }
+  enum Button: SwiftProtobuf.Enum, Swift.CaseIterable {
+    typealias RawValue = Int
+    case leftBack // = 0
+    case rightBack // = 1
+    case UNRECOGNIZED(Int)
 
-        var rawValue: Int {
-            switch self {
-            case .up: return 0
-            case .down: return 1
-            case let .UNRECOGNIZED(i): return i
-            }
-        }
+    init() {
+      self = .leftBack
+    }
 
-        // The compiler won't synthesize support with the UNRECOGNIZED case.
-        static let allCases: [Mentraos_Ble_ButtonEvent.State] = [
-            .up,
-            .down,
-        ]
+    init?(rawValue: Int) {
+      switch rawValue {
+      case 0: self = .leftBack
+      case 1: self = .rightBack
+      default: self = .UNRECOGNIZED(rawValue)
+      }
     }
 
-    init() {}
-}
+    var rawValue: Int {
+      switch self {
+      case .leftBack: return 0
+      case .rightBack: return 1
+      case .UNRECOGNIZED(let i): return i
+      }
+    }
 
-struct Mentraos_Ble_HeadGesture: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+    // The compiler won't synthesize support with the UNRECOGNIZED case.
+    static let allCases: [Mentraos_Ble_ButtonEvent.Button] = [
+      .leftBack,
+      .rightBack,
+    ]
 
-    var gesture: Mentraos_Ble_HeadGesture.Gesture = .nod
+  }
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  enum Event: SwiftProtobuf.Enum, Swift.CaseIterable {
+    typealias RawValue = Int
+    case singleTap // = 0
+    case doubleTap // = 1
+    case tripleTap // = 2
+    case longHold // = 3
+    case UNRECOGNIZED(Int)
 
-    enum Gesture: SwiftProtobuf.Enum, Swift.CaseIterable {
-        typealias RawValue = Int
-        case nod // = 0
-        case shake // = 1
-        case headUp // = 2
-        case UNRECOGNIZED(Int)
+    init() {
+      self = .singleTap
+    }
 
-        init() {
-            self = .nod
-        }
+    init?(rawValue: Int) {
+      switch rawValue {
+      case 0: self = .singleTap
+      case 1: self = .doubleTap
+      case 2: self = .tripleTap
+      case 3: self = .longHold
+      default: self = .UNRECOGNIZED(rawValue)
+      }
+    }
 
-        init?(rawValue: Int) {
-            switch rawValue {
-            case 0: self = .nod
-            case 1: self = .shake
-            case 2: self = .headUp
-            default: self = .UNRECOGNIZED(rawValue)
-            }
-        }
+    var rawValue: Int {
+      switch self {
+      case .singleTap: return 0
+      case .doubleTap: return 1
+      case .tripleTap: return 2
+      case .longHold: return 3
+      case .UNRECOGNIZED(let i): return i
+      }
+    }
 
-        var rawValue: Int {
-            switch self {
-            case .nod: return 0
-            case .shake: return 1
-            case .headUp: return 2
-            case let .UNRECOGNIZED(i): return i
-            }
-        }
+    // The compiler won't synthesize support with the UNRECOGNIZED case.
+    static let allCases: [Mentraos_Ble_ButtonEvent.Event] = [
+      .singleTap,
+      .doubleTap,
+      .tripleTap,
+      .longHold,
+    ]
 
-        // The compiler won't synthesize support with the UNRECOGNIZED case.
-        static let allCases: [Mentraos_Ble_HeadGesture.Gesture] = [
-            .nod,
-            .shake,
-            .headUp,
-        ]
-    }
+  }
 
-    init() {}
+  init() {}
+}
+
+struct Mentraos_Ble_HeadGesture: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  var gesture: Mentraos_Ble_HeadGesture.Gesture = .nod
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  enum Gesture: SwiftProtobuf.Enum, Swift.CaseIterable {
+    typealias RawValue = Int
+    case nod // = 0
+    case shake // = 1
+    case headUp // = 2
+    case headDown // = 3
+    case tiltLeft // = 4
+    case tiltRight // = 5
+    case UNRECOGNIZED(Int)
+
+    init() {
+      self = .nod
+    }
+
+    init?(rawValue: Int) {
+      switch rawValue {
+      case 0: self = .nod
+      case 1: self = .shake
+      case 2: self = .headUp
+      case 3: self = .headDown
+      case 4: self = .tiltLeft
+      case 5: self = .tiltRight
+      default: self = .UNRECOGNIZED(rawValue)
+      }
+    }
+
+    var rawValue: Int {
+      switch self {
+      case .nod: return 0
+      case .shake: return 1
+      case .headUp: return 2
+      case .headDown: return 3
+      case .tiltLeft: return 4
+      case .tiltRight: return 5
+      case .UNRECOGNIZED(let i): return i
+      }
+    }
+
+    // The compiler won't synthesize support with the UNRECOGNIZED case.
+    static let allCases: [Mentraos_Ble_HeadGesture.Gesture] = [
+      .nod,
+      .shake,
+      .headUp,
+      .headDown,
+      .tiltLeft,
+      .tiltRight,
+    ]
+
+  }
+
+  init() {}
 }
 
 struct Mentraos_Ble_HeadGestureConfig: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var gesture: Mentraos_Ble_HeadGesture.Gesture = .nod
+  var gesture: Mentraos_Ble_HeadGesture.Gesture = .nod
 
-    var enabled: Bool = false
+  var enabled: Bool = false
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_RestartRequest: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
 struct Mentraos_Ble_FactoryResetRequest: Sendable {
-    // SwiftProtobuf.Message conformance is added in an extension below. See the
-    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
-    // methods supported on all messages.
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    var unknownFields = SwiftProtobuf.UnknownStorage()
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    init() {}
+  init() {}
 }
 
-// MARK: - Code below here is support for the SwiftProtobuf runtime.
+/// Cache a complete dashboard/screen that can be triggered instantly
+struct Mentraos_Ble_CacheDashboard: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-private let _protobuf_package = "mentraos.ble"
+  /// ID for this dashboard
+  var dashboardID: UInt32 = 0
 
-extension Mentraos_Ble_PhoneToGlasses: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".PhoneToGlasses"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0\u{2}\u{9}disconnect\0\u{3}battery_state\0\u{3}glasses_info\0\u{3}pairing_mode\0\u{3}head_position\0\u{3}head_up_angle\0\u{1}pong\0\u{4}\u{4}mic_state\0\u{3}vad_enabled\0\u{3}vad_config\0\u{4}\u{8}display_text\0\u{3}display_image\0\u{3}preload_image\0\u{3}display_cached_image\0\u{3}clear_cached_image\0\u{3}display_scrolling_text\0\u{3}display_power\0\u{1}brightness\0\u{3}auto_brightness\0\u{3}auto_brightness_mult\0\u{3}draw_line\0\u{3}draw_rect\0\u{3}draw_circle\0\u{1}commit\0\u{3}display_distance\0\u{3}display_height\0\u{3}clear_display\0\u{4}\u{4}imu_enabled\0\u{3}imu_single\0\u{3}imu_stream\0\u{3}head_gesture\0\u{2}\u{7}restart\0\u{3}factory_reset\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularStringField(value: &msgID)
-            case 10: try {
-                    var v: Mentraos_Ble_DisconnectRequest?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .disconnect(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .disconnect(v)
-                    }
-                }()
-            case 11: try {
-                    var v: Mentraos_Ble_BatteryStateRequest?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .batteryState(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .batteryState(v)
-                    }
-                }()
-            case 12: try {
-                    var v: Mentraos_Ble_GlassesInfoRequest?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .glassesInfo(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .glassesInfo(v)
-                    }
-                }()
-            case 13: try {
-                    var v: Mentraos_Ble_PairingModeRequest?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .pairingMode(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .pairingMode(v)
-                    }
-                }()
-            case 14: try {
-                    var v: Mentraos_Ble_HeadPositionRequest?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .headPosition(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .headPosition(v)
-                    }
-                }()
-            case 15: try {
-                    var v: Mentraos_Ble_HeadUpAngleConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .headUpAngle(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .headUpAngle(v)
-                    }
-                }()
-            case 16: try {
-                    var v: Mentraos_Ble_PongResponse?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .pong(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .pong(v)
-                    }
-                }()
-            case 20: try {
-                    var v: Mentraos_Ble_MicStateConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .micState(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .micState(v)
-                    }
-                }()
-            case 21: try {
-                    var v: Mentraos_Ble_VadEnabledConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .vadEnabled(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .vadEnabled(v)
-                    }
-                }()
-            case 22: try {
-                    var v: Mentraos_Ble_VadConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .vadConfig(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .vadConfig(v)
-                    }
-                }()
-            case 30: try {
-                    var v: Mentraos_Ble_DisplayText?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .displayText(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .displayText(v)
-                    }
-                }()
-            case 31: try {
-                    var v: Mentraos_Ble_DisplayImage?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .displayImage(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .displayImage(v)
-                    }
-                }()
-            case 32: try {
-                    var v: Mentraos_Ble_PreloadImage?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .preloadImage(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .preloadImage(v)
-                    }
-                }()
-            case 33: try {
-                    var v: Mentraos_Ble_DisplayCachedImage?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .displayCachedImage(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .displayCachedImage(v)
-                    }
-                }()
-            case 34: try {
-                    var v: Mentraos_Ble_ClearCachedImage?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .clearCachedImage_p(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .clearCachedImage_p(v)
-                    }
-                }()
-            case 35: try {
-                    var v: Mentraos_Ble_DisplayScrollingText?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .displayScrollingText(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .displayScrollingText(v)
-                    }
-                }()
-            case 36: try {
-                    var v: Mentraos_Ble_DisplayPowerConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .displayPower(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .displayPower(v)
-                    }
-                }()
-            case 37: try {
-                    var v: Mentraos_Ble_BrightnessConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .brightness(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .brightness(v)
-                    }
-                }()
-            case 38: try {
-                    var v: Mentraos_Ble_AutoBrightnessConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .autoBrightness(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .autoBrightness(v)
-                    }
-                }()
-            case 39: try {
-                    var v: Mentraos_Ble_AutoBrightnessMultiplier?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .autoBrightnessMult(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .autoBrightnessMult(v)
-                    }
-                }()
-            case 40: try {
-                    var v: Mentraos_Ble_DrawLine?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .drawLine(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .drawLine(v)
-                    }
-                }()
-            case 41: try {
-                    var v: Mentraos_Ble_DrawRect?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .drawRect(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .drawRect(v)
-                    }
-                }()
-            case 42: try {
-                    var v: Mentraos_Ble_DrawCircle?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .drawCircle(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .drawCircle(v)
-                    }
-                }()
-            case 43: try {
-                    var v: Mentraos_Ble_CommitDisplay?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .commit(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .commit(v)
-                    }
-                }()
-            case 44: try {
-                    var v: Mentraos_Ble_DisplayDistanceConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .displayDistance(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .displayDistance(v)
-                    }
-                }()
-            case 45: try {
-                    var v: Mentraos_Ble_DisplayHeightConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .displayHeight(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .displayHeight(v)
-                    }
-                }()
-            case 46: try {
-                    var v: Mentraos_Ble_ClearDisplay?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .clearDisplay_p(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .clearDisplay_p(v)
-                    }
-                }()
-            case 50: try {
-                    var v: Mentraos_Ble_ImuEnabledConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .imuEnabled(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .imuEnabled(v)
-                    }
-                }()
-            case 51: try {
-                    var v: Mentraos_Ble_ImuSingleRequest?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .imuSingle(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .imuSingle(v)
-                    }
-                }()
-            case 52: try {
-                    var v: Mentraos_Ble_ImuStreamConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .imuStream(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .imuStream(v)
-                    }
-                }()
-            case 53: try {
-                    var v: Mentraos_Ble_HeadGestureConfig?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .headGesture(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .headGesture(v)
-                    }
-                }()
-            case 60: try {
-                    var v: Mentraos_Ble_RestartRequest?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .restart(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .restart(v)
-                    }
-                }()
-            case 61: try {
-                    var v: Mentraos_Ble_FactoryResetRequest?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .factoryReset(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .factoryReset(v)
-                    }
-                }()
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        // The use of inline closures is to circumvent an issue where the compiler
-        // allocates stack space for every if/case branch local when no optimizations
-        // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
-        // https://github.com/apple/swift-protobuf/issues/1182
-        if !msgID.isEmpty {
-            try visitor.visitSingularStringField(value: msgID, fieldNumber: 1)
-        }
-        switch payload {
-        case .disconnect?: try {
-                guard case let .disconnect(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 10)
-            }()
-        case .batteryState?: try {
-                guard case let .batteryState(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 11)
-            }()
-        case .glassesInfo?: try {
-                guard case let .glassesInfo(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 12)
-            }()
-        case .pairingMode?: try {
-                guard case let .pairingMode(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 13)
-            }()
-        case .headPosition?: try {
-                guard case let .headPosition(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 14)
-            }()
-        case .headUpAngle?: try {
-                guard case let .headUpAngle(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 15)
-            }()
-        case .pong?: try {
-                guard case let .pong(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 16)
-            }()
-        case .micState?: try {
-                guard case let .micState(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 20)
-            }()
-        case .vadEnabled?: try {
-                guard case let .vadEnabled(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 21)
-            }()
-        case .vadConfig?: try {
-                guard case let .vadConfig(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 22)
-            }()
-        case .displayText?: try {
-                guard case let .displayText(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 30)
-            }()
-        case .displayImage?: try {
-                guard case let .displayImage(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 31)
-            }()
-        case .preloadImage?: try {
-                guard case let .preloadImage(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 32)
-            }()
-        case .displayCachedImage?: try {
-                guard case let .displayCachedImage(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 33)
-            }()
-        case .clearCachedImage_p?: try {
-                guard case let .clearCachedImage_p(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 34)
-            }()
-        case .displayScrollingText?: try {
-                guard case let .displayScrollingText(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 35)
-            }()
-        case .displayPower?: try {
-                guard case let .displayPower(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 36)
-            }()
-        case .brightness?: try {
-                guard case let .brightness(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 37)
-            }()
-        case .autoBrightness?: try {
-                guard case let .autoBrightness(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 38)
-            }()
-        case .autoBrightnessMult?: try {
-                guard case let .autoBrightnessMult(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 39)
-            }()
-        case .drawLine?: try {
-                guard case let .drawLine(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 40)
-            }()
-        case .drawRect?: try {
-                guard case let .drawRect(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 41)
-            }()
-        case .drawCircle?: try {
-                guard case let .drawCircle(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 42)
-            }()
-        case .commit?: try {
-                guard case let .commit(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 43)
-            }()
-        case .displayDistance?: try {
-                guard case let .displayDistance(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 44)
-            }()
-        case .displayHeight?: try {
-                guard case let .displayHeight(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 45)
-            }()
-        case .clearDisplay_p?: try {
-                guard case let .clearDisplay_p(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 46)
-            }()
-        case .imuEnabled?: try {
-                guard case let .imuEnabled(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 50)
-            }()
-        case .imuSingle?: try {
-                guard case let .imuSingle(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 51)
-            }()
-        case .imuStream?: try {
-                guard case let .imuStream(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 52)
-            }()
-        case .headGesture?: try {
-                guard case let .headGesture(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 53)
-            }()
-        case .restart?: try {
-                guard case let .restart(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 60)
-            }()
-        case .factoryReset?: try {
-                guard case let .factoryReset(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 61)
-            }()
-        case nil: break
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_PhoneToGlasses, rhs: Mentraos_Ble_PhoneToGlasses) -> Bool {
-        if lhs.msgID != rhs.msgID { return false }
-        if lhs.payload != rhs.payload { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
-}
+  /// Series of display commands that make up the dashboard
+  /// When dashboard triggers, these commands are queued and committed atomically
+  var batch: Mentraos_Ble_DisplayBatch {
+    get {return _batch ?? Mentraos_Ble_DisplayBatch()}
+    set {_batch = newValue}
+  }
+  /// Returns true if `batch` has been explicitly set.
+  var hasBatch: Bool {return self._batch != nil}
+  /// Clears the value of `batch`. Subsequent reads from it will return its default value.
+  mutating func clearBatch() {self._batch = nil}
 
-extension Mentraos_Ble_GlassesToPhone: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".GlassesToPhone"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{4}\u{a}battery_status\0\u{3}charging_state\0\u{3}device_info\0\u{3}head_position\0\u{3}head_up_angle_set\0\u{1}ping\0\u{4}\u{5}vad_event\0\u{4}\u{a}image_transfer_complete\0\u{4}\u{a}imu_data\0\u{3}button_event\0\u{3}head_gesture\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 10: try {
-                    var v: Mentraos_Ble_BatteryStatus?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .batteryStatus(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .batteryStatus(v)
-                    }
-                }()
-            case 11: try {
-                    var v: Mentraos_Ble_ChargingState?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .chargingState(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .chargingState(v)
-                    }
-                }()
-            case 12: try {
-                    var v: Mentraos_Ble_DeviceInfo?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .deviceInfo(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .deviceInfo(v)
-                    }
-                }()
-            case 13: try {
-                    var v: Mentraos_Ble_HeadPosition?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .headPosition(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .headPosition(v)
-                    }
-                }()
-            case 14: try {
-                    var v: Mentraos_Ble_HeadUpAngleResponse?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .headUpAngleSet(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .headUpAngleSet(v)
-                    }
-                }()
-            case 15: try {
-                    var v: Mentraos_Ble_PingRequest?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .ping(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .ping(v)
-                    }
-                }()
-            case 20: try {
-                    var v: Mentraos_Ble_VadEvent?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .vadEvent(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .vadEvent(v)
-                    }
-                }()
-            case 30: try {
-                    var v: Mentraos_Ble_ImageTransferComplete?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .imageTransferComplete(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .imageTransferComplete(v)
-                    }
-                }()
-            case 40: try {
-                    var v: Mentraos_Ble_ImuData?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .imuData(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .imuData(v)
-                    }
-                }()
-            case 41: try {
-                    var v: Mentraos_Ble_ButtonEvent?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .buttonEvent(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .buttonEvent(v)
-                    }
-                }()
-            case 42: try {
-                    var v: Mentraos_Ble_HeadGesture?
-                    var hadOneofValue = false
-                    if let current = self.payload {
-                        hadOneofValue = true
-                        if case let .headGesture(m) = current { v = m }
-                    }
-                    try decoder.decodeSingularMessageField(value: &v)
-                    if let v = v {
-                        if hadOneofValue { try decoder.handleConflictingOneOf() }
-                        self.payload = .headGesture(v)
-                    }
-                }()
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        // The use of inline closures is to circumvent an issue where the compiler
-        // allocates stack space for every if/case branch local when no optimizations
-        // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
-        // https://github.com/apple/swift-protobuf/issues/1182
-        switch payload {
-        case .batteryStatus?: try {
-                guard case let .batteryStatus(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 10)
-            }()
-        case .chargingState?: try {
-                guard case let .chargingState(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 11)
-            }()
-        case .deviceInfo?: try {
-                guard case let .deviceInfo(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 12)
-            }()
-        case .headPosition?: try {
-                guard case let .headPosition(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 13)
-            }()
-        case .headUpAngleSet?: try {
-                guard case let .headUpAngleSet(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 14)
-            }()
-        case .ping?: try {
-                guard case let .ping(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 15)
-            }()
-        case .vadEvent?: try {
-                guard case let .vadEvent(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 20)
-            }()
-        case .imageTransferComplete?: try {
-                guard case let .imageTransferComplete(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 30)
-            }()
-        case .imuData?: try {
-                guard case let .imuData(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 40)
-            }()
-        case .buttonEvent?: try {
-                guard case let .buttonEvent(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 41)
-            }()
-        case .headGesture?: try {
-                guard case let .headGesture(v)? = self.payload else { preconditionFailure() }
-                try visitor.visitSingularMessageField(value: v, fieldNumber: 42)
-            }()
-        case nil: break
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_GlassesToPhone, rhs: Mentraos_Ble_GlassesToPhone) -> Bool {
-        if lhs.payload != rhs.payload { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+
+  fileprivate var _batch: Mentraos_Ble_DisplayBatch? = nil
 }
 
-extension Mentraos_Ble_DisconnectRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DisconnectRequest"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+/// Clear a cached dashboard from memory
+struct Mentraos_Ble_ClearDashboard: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
+  var dashboardID: UInt32 = 0
 
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    static func == (lhs: Mentraos_Ble_DisconnectRequest, rhs: Mentraos_Ble_DisconnectRequest) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  init() {}
 }
 
-extension Mentraos_Ble_BatteryStateRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".BatteryStateRequest"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+/// Configure what triggers the dashboard display
+struct Mentraos_Ble_ConfigureDashboardTrigger: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  var dashboardID: UInt32 = 0
+
+  var trigger: Mentraos_Ble_ConfigureDashboardTrigger.TriggerType = .headUp
+
+  /// Optional: minimum duration for gesture (milliseconds)
+  var durationMs: UInt32 = 0
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  enum TriggerType: SwiftProtobuf.Enum, Swift.CaseIterable {
+    typealias RawValue = Int
+
+    /// Even Realities style - look up
+    case headUp // = 0
+    case headDown // = 1
+
+    /// Vuzix Z100 style - tap button
+    case buttonTap // = 2
+
+    /// Only show when explicitly commanded
+    case manualOnly // = 3
+    case UNRECOGNIZED(Int)
+
+    init() {
+      self = .headUp
     }
 
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
+    init?(rawValue: Int) {
+      switch rawValue {
+      case 0: self = .headUp
+      case 1: self = .headDown
+      case 2: self = .buttonTap
+      case 3: self = .manualOnly
+      default: self = .UNRECOGNIZED(rawValue)
+      }
     }
 
-    static func == (lhs: Mentraos_Ble_BatteryStateRequest, rhs: Mentraos_Ble_BatteryStateRequest) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
+    var rawValue: Int {
+      switch self {
+      case .headUp: return 0
+      case .headDown: return 1
+      case .buttonTap: return 2
+      case .manualOnly: return 3
+      case .UNRECOGNIZED(let i): return i
+      }
     }
-}
 
-extension Mentraos_Ble_BatteryStatus: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".BatteryStatus"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}level\0\u{1}charging\0")
+    // The compiler won't synthesize support with the UNRECOGNIZED case.
+    static let allCases: [Mentraos_Ble_ConfigureDashboardTrigger.TriggerType] = [
+      .headUp,
+      .headDown,
+      .buttonTap,
+      .manualOnly,
+    ]
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &level)
-            case 2: try decoder.decodeSingularBoolField(value: &charging)
-            default: break
-            }
-        }
-    }
+  }
 
-    func traverse(visitor: inout V) throws {
-        if level != 0 {
-            try visitor.visitSingularUInt32Field(value: level, fieldNumber: 1)
-        }
-        if charging != false {
-            try visitor.visitSingularBoolField(value: charging, fieldNumber: 2)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_BatteryStatus, rhs: Mentraos_Ble_BatteryStatus) -> Bool {
-        if lhs.level != rhs.level { return false }
-        if lhs.charging != rhs.charging { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  init() {}
 }
 
-extension Mentraos_Ble_ChargingState: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".ChargingState"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}state\0")
+/// Event sent when dashboard is shown by glasses autonomously
+struct Mentraos_Ble_DashboardShown: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularEnumField(value: &state)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if state != .notCharging {
-            try visitor.visitSingularEnumField(value: state, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+  var dashboardID: UInt32 = 0
 
-    static func == (lhs: Mentraos_Ble_ChargingState, rhs: Mentraos_Ble_ChargingState) -> Bool {
-        if lhs.state != rhs.state { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
-}
+  var source: Mentraos_Ble_DashboardShown.TriggerSource = .gesture
 
-extension Mentraos_Ble_ChargingState.State: SwiftProtobuf._ProtoNameProviding {
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0NOT_CHARGING\0\u{1}CHARGING\0")
-}
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-extension Mentraos_Ble_GlassesInfoRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".GlassesInfoRequest"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+  enum TriggerSource: SwiftProtobuf.Enum, Swift.CaseIterable {
+    typealias RawValue = Int
+    case gesture // = 0
+    case button // = 1
+    case manual // = 2
+    case UNRECOGNIZED(Int)
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
+    init() {
+      self = .gesture
     }
 
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
+    init?(rawValue: Int) {
+      switch rawValue {
+      case 0: self = .gesture
+      case 1: self = .button
+      case 2: self = .manual
+      default: self = .UNRECOGNIZED(rawValue)
+      }
     }
 
-    static func == (lhs: Mentraos_Ble_GlassesInfoRequest, rhs: Mentraos_Ble_GlassesInfoRequest) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
+    var rawValue: Int {
+      switch self {
+      case .gesture: return 0
+      case .button: return 1
+      case .manual: return 2
+      case .UNRECOGNIZED(let i): return i
+      }
     }
-}
 
-extension Mentraos_Ble_DeviceInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DeviceInfo"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}fw_version\0\u{3}hw_model\0\u{1}features\0")
+    // The compiler won't synthesize support with the UNRECOGNIZED case.
+    static let allCases: [Mentraos_Ble_DashboardShown.TriggerSource] = [
+      .gesture,
+      .button,
+      .manual,
+    ]
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularStringField(value: &fwVersion)
-            case 2: try decoder.decodeSingularStringField(value: &hwModel)
-            case 3: try decoder.decodeSingularMessageField(value: &_features)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        // The use of inline closures is to circumvent an issue where the compiler
-        // allocates stack space for every if/case branch local when no optimizations
-        // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
-        // https://github.com/apple/swift-protobuf/issues/1182
-        if !fwVersion.isEmpty {
-            try visitor.visitSingularStringField(value: fwVersion, fieldNumber: 1)
-        }
-        if !hwModel.isEmpty {
-            try visitor.visitSingularStringField(value: hwModel, fieldNumber: 2)
-        }
-        try { if let v = self._features {
-            try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
-        } }()
-        try unknownFields.traverse(visitor: &visitor)
-    }
+  }
 
-    static func == (lhs: Mentraos_Ble_DeviceInfo, rhs: Mentraos_Ble_DeviceInfo) -> Bool {
-        if lhs.fwVersion != rhs.fwVersion { return false }
-        if lhs.hwModel != rhs.hwModel { return false }
-        if lhs._features != rhs._features { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  init() {}
 }
 
-extension Mentraos_Ble_DeviceFeatures: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DeviceFeatures"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}camera\0\u{1}display\0\u{3}audio_tx\0\u{3}audio_rx\0\u{1}imu\0\u{1}vad\0\u{3}mic_switching\0\u{3}image_chunk_buffer\0")
+/// ============================================
+/// Versioning Messages (Runtime)
+/// ============================================
+///
+/// Phone sends VersionRequest right after connect.
+/// Glasses respond with VersionResponse.version (single number).
+struct Mentraos_Ble_VersionRequest: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularBoolField(value: &camera)
-            case 2: try decoder.decodeSingularBoolField(value: &display)
-            case 3: try decoder.decodeSingularBoolField(value: &audioTx)
-            case 4: try decoder.decodeSingularBoolField(value: &audioRx)
-            case 5: try decoder.decodeSingularBoolField(value: &imu)
-            case 6: try decoder.decodeSingularBoolField(value: &vad)
-            case 7: try decoder.decodeSingularBoolField(value: &micSwitching)
-            case 8: try decoder.decodeSingularUInt32Field(value: &imageChunkBuffer)
-            default: break
-            }
-        }
-    }
+  var msgID: String = String()
 
-    func traverse(visitor: inout V) throws {
-        if camera != false {
-            try visitor.visitSingularBoolField(value: camera, fieldNumber: 1)
-        }
-        if display != false {
-            try visitor.visitSingularBoolField(value: display, fieldNumber: 2)
-        }
-        if audioTx != false {
-            try visitor.visitSingularBoolField(value: audioTx, fieldNumber: 3)
-        }
-        if audioRx != false {
-            try visitor.visitSingularBoolField(value: audioRx, fieldNumber: 4)
-        }
-        if imu != false {
-            try visitor.visitSingularBoolField(value: imu, fieldNumber: 5)
-        }
-        if vad != false {
-            try visitor.visitSingularBoolField(value: vad, fieldNumber: 6)
-        }
-        if micSwitching != false {
-            try visitor.visitSingularBoolField(value: micSwitching, fieldNumber: 7)
-        }
-        if imageChunkBuffer != 0 {
-            try visitor.visitSingularUInt32Field(value: imageChunkBuffer, fieldNumber: 8)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    static func == (lhs: Mentraos_Ble_DeviceFeatures, rhs: Mentraos_Ble_DeviceFeatures) -> Bool {
-        if lhs.camera != rhs.camera { return false }
-        if lhs.display != rhs.display { return false }
-        if lhs.audioTx != rhs.audioTx { return false }
-        if lhs.audioRx != rhs.audioRx { return false }
-        if lhs.imu != rhs.imu { return false }
-        if lhs.vad != rhs.vad { return false }
-        if lhs.micSwitching != rhs.micSwitching { return false }
-        if lhs.imageChunkBuffer != rhs.imageChunkBuffer { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  init() {}
 }
 
-extension Mentraos_Ble_PairingModeRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".PairingModeRequest"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
+struct Mentraos_Ble_VersionResponse: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
 
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
+  /// echoes request
+  var msgID: String = String()
 
-    static func == (lhs: Mentraos_Ble_PairingModeRequest, rhs: Mentraos_Ble_PairingModeRequest) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
-}
+  /// Single, monotonically increasing runtime protocol version.
+  /// Start at 1. Bump when wire semantics/behavior meaningfully change.
+  var version: UInt32 = 0
 
-extension Mentraos_Ble_HeadPositionRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".HeadPositionRequest"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+  /// Optional diagnostics
+  var commit: String = String()
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
+  /// ISO-8601 date string
+  var buildDate: String = String()
 
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
+  var unknownFields = SwiftProtobuf.UnknownStorage()
 
-    static func == (lhs: Mentraos_Ble_HeadPositionRequest, rhs: Mentraos_Ble_HeadPositionRequest) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  init() {}
 }
 
-extension Mentraos_Ble_HeadPosition: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".HeadPosition"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}angle\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularInt32Field(value: &angle)
-            default: break
-            }
-        }
-    }
+// MARK: - Extension support defined in mentraos_ble.proto.
+
+// MARK: - Extension Properties
+
+// Swift Extensions on the extended Messages to add easy access to the declared
+// extension fields. The names are based on the extension field name from the proto
+// declaration. To avoid naming collisions, the names are prefixed with the name of
+// the scope where the extend directive occurs.
+
+extension SwiftProtobuf.Google_Protobuf_FileOptions {
+
+  /// single, monotonically increasing schema version
+  var Mentraos_Ble_mentraSchemaVersion: UInt32 {
+    get {return getExtensionValue(ext: Mentraos_Ble_Extensions_mentra_schema_version) ?? 0}
+    set {setExtensionValue(ext: Mentraos_Ble_Extensions_mentra_schema_version, value: newValue)}
+  }
+  /// Returns true if extension `Mentraos_Ble_Extensions_mentra_schema_version`
+  /// has been explicitly set.
+  var hasMentraos_Ble_mentraSchemaVersion: Bool {
+    return hasExtensionValue(ext: Mentraos_Ble_Extensions_mentra_schema_version)
+  }
+  /// Clears the value of extension `Mentraos_Ble_Extensions_mentra_schema_version`.
+  /// Subsequent reads from it will return its default value.
+  mutating func clearMentraos_Ble_mentraSchemaVersion() {
+    clearExtensionValue(ext: Mentraos_Ble_Extensions_mentra_schema_version)
+  }
 
-    func traverse(visitor: inout V) throws {
-        if angle != 0 {
-            try visitor.visitSingularInt32Field(value: angle, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_HeadPosition, rhs: Mentraos_Ble_HeadPosition) -> Bool {
-        if lhs.angle != rhs.angle { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
 }
 
-extension Mentraos_Ble_HeadUpAngleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".HeadUpAngleConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}angle\0")
+// MARK: - File's ExtensionMap: Mentraos_Ble_MentraosBle_Extensions
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &angle)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if angle != 0 {
-            try visitor.visitSingularUInt32Field(value: angle, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+/// A `SwiftProtobuf.SimpleExtensionMap` that includes all of the extensions defined by
+/// this .proto file. It can be used any place an `SwiftProtobuf.ExtensionMap` is needed
+/// in parsing, or it can be combined with other `SwiftProtobuf.SimpleExtensionMap`s to create
+/// a larger `SwiftProtobuf.SimpleExtensionMap`.
+let Mentraos_Ble_MentraosBle_Extensions: SwiftProtobuf.SimpleExtensionMap = [
+  Mentraos_Ble_Extensions_mentra_schema_version
+]
 
-    static func == (lhs: Mentraos_Ble_HeadUpAngleConfig, rhs: Mentraos_Ble_HeadUpAngleConfig) -> Bool {
-        if lhs.angle != rhs.angle { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
-}
+// Extension Objects - The only reason these might be needed is when manually
+// constructing a `SimpleExtensionMap`, otherwise, use the above _Extension Properties_
+// accessors for the extension fields on the messages directly.
 
-extension Mentraos_Ble_HeadUpAngleResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".HeadUpAngleResponse"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}success\0")
+/// single, monotonically increasing schema version
+let Mentraos_Ble_Extensions_mentra_schema_version = SwiftProtobuf.MessageExtension, SwiftProtobuf.Google_Protobuf_FileOptions>(
+  _protobuf_fieldNumber: 70001,
+  fieldName: "mentraos.ble.mentra_schema_version"
+)
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularBoolField(value: &success)
-            default: break
-            }
-        }
-    }
+// MARK: - Code below here is support for the SwiftProtobuf runtime.
 
-    func traverse(visitor: inout V) throws {
-        if success != false {
-            try visitor.visitSingularBoolField(value: success, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+fileprivate let _protobuf_package = "mentraos.ble"
 
-    static func == (lhs: Mentraos_Ble_HeadUpAngleResponse, rhs: Mentraos_Ble_HeadUpAngleResponse) -> Bool {
-        if lhs.success != rhs.success { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_PhoneToGlasses: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".PhoneToGlasses"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0\u{2}\u{9}disconnect\0\u{3}battery_state\0\u{3}glasses_info\0\u{3}pairing_mode\0\u{3}head_position\0\u{3}head_up_angle\0\u{1}pong\0\u{4}\u{4}mic_state\0\u{4}\u{3}set_vad_enabled\0\u{3}set_vad_config\0\u{3}request_vad_status\0\u{4}\u{5}display_text\0\u{3}display_image\0\u{3}cache_image\0\u{3}display_cached_image\0\u{3}clear_cached_image\0\u{3}display_scrolling_text\0\u{3}display_power\0\u{1}brightness\0\u{3}auto_brightness\0\u{3}auto_brightness_mult\0\u{3}draw_line\0\u{3}draw_rect\0\u{3}draw_circle\0\u{1}commit\0\u{3}display_distance\0\u{3}display_height\0\u{3}clear_display\0\u{3}cache_dashboard\0\u{3}clear_dashboard\0\u{3}dashboard_trigger\0\u{4}\u{2}queue_status_request\0\u{3}display_batch\0\u{4}\u{3}imu_enabled\0\u{3}imu_single\0\u{3}imu_stream\0\u{3}head_gesture\0\u{2}\u{2}restart\0\u{3}factory_reset\0\u{4}\u{9}version_request\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      case 10: try {
+        var v: Mentraos_Ble_DisconnectRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .disconnect(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .disconnect(v)
+        }
+      }()
+      case 11: try {
+        var v: Mentraos_Ble_BatteryStateRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .batteryState(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .batteryState(v)
+        }
+      }()
+      case 12: try {
+        var v: Mentraos_Ble_GlassesInfoRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .glassesInfo(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .glassesInfo(v)
+        }
+      }()
+      case 13: try {
+        var v: Mentraos_Ble_PairingModeRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .pairingMode(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .pairingMode(v)
+        }
+      }()
+      case 14: try {
+        var v: Mentraos_Ble_HeadPositionRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .headPosition(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .headPosition(v)
+        }
+      }()
+      case 15: try {
+        var v: Mentraos_Ble_HeadUpAngleConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .headUpAngle(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .headUpAngle(v)
+        }
+      }()
+      case 16: try {
+        var v: Mentraos_Ble_PongResponse?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .pong(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .pong(v)
+        }
+      }()
+      case 20: try {
+        var v: Mentraos_Ble_MicStateConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .micState(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .micState(v)
+        }
+      }()
+      case 23: try {
+        var v: Mentraos_Ble_VadEnabledRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .setVadEnabled(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .setVadEnabled(v)
+        }
+      }()
+      case 24: try {
+        var v: Mentraos_Ble_VadConfigRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .setVadConfig(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .setVadConfig(v)
+        }
+      }()
+      case 25: try {
+        var v: Mentraos_Ble_VadStatusRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .requestVadStatus(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .requestVadStatus(v)
+        }
+      }()
+      case 30: try {
+        var v: Mentraos_Ble_DisplayText?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .displayText(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .displayText(v)
+        }
+      }()
+      case 31: try {
+        var v: Mentraos_Ble_DisplayImage?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .displayImage(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .displayImage(v)
+        }
+      }()
+      case 32: try {
+        var v: Mentraos_Ble_CacheImage?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .cacheImage(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .cacheImage(v)
+        }
+      }()
+      case 33: try {
+        var v: Mentraos_Ble_DisplayCachedImage?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .displayCachedImage(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .displayCachedImage(v)
+        }
+      }()
+      case 34: try {
+        var v: Mentraos_Ble_ClearCachedImage?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .clearCachedImage_p(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .clearCachedImage_p(v)
+        }
+      }()
+      case 35: try {
+        var v: Mentraos_Ble_DisplayScrollingText?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .displayScrollingText(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .displayScrollingText(v)
+        }
+      }()
+      case 36: try {
+        var v: Mentraos_Ble_DisplayPowerConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .displayPower(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .displayPower(v)
+        }
+      }()
+      case 37: try {
+        var v: Mentraos_Ble_BrightnessConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .brightness(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .brightness(v)
+        }
+      }()
+      case 38: try {
+        var v: Mentraos_Ble_AutoBrightnessConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .autoBrightness(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .autoBrightness(v)
+        }
+      }()
+      case 39: try {
+        var v: Mentraos_Ble_AutoBrightnessMultiplier?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .autoBrightnessMult(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .autoBrightnessMult(v)
+        }
+      }()
+      case 40: try {
+        var v: Mentraos_Ble_DrawLine?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .drawLine(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .drawLine(v)
+        }
+      }()
+      case 41: try {
+        var v: Mentraos_Ble_DrawRect?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .drawRect(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .drawRect(v)
+        }
+      }()
+      case 42: try {
+        var v: Mentraos_Ble_DrawCircle?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .drawCircle(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .drawCircle(v)
+        }
+      }()
+      case 43: try {
+        var v: Mentraos_Ble_CommitDisplay?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .commit(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .commit(v)
+        }
+      }()
+      case 44: try {
+        var v: Mentraos_Ble_DisplayDistanceConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .displayDistance(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .displayDistance(v)
+        }
+      }()
+      case 45: try {
+        var v: Mentraos_Ble_DisplayHeightConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .displayHeight(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .displayHeight(v)
+        }
+      }()
+      case 46: try {
+        var v: Mentraos_Ble_ClearDisplay?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .clearDisplay_p(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .clearDisplay_p(v)
+        }
+      }()
+      case 47: try {
+        var v: Mentraos_Ble_CacheDashboard?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .cacheDashboard(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .cacheDashboard(v)
+        }
+      }()
+      case 48: try {
+        var v: Mentraos_Ble_ClearDashboard?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .clearDashboard_p(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .clearDashboard_p(v)
+        }
+      }()
+      case 49: try {
+        var v: Mentraos_Ble_ConfigureDashboardTrigger?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .dashboardTrigger(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .dashboardTrigger(v)
+        }
+      }()
+      case 51: try {
+        var v: Mentraos_Ble_DisplayQueueStatus?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .queueStatusRequest(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .queueStatusRequest(v)
+        }
+      }()
+      case 52: try {
+        var v: Mentraos_Ble_DisplayBatch?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .displayBatch(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .displayBatch(v)
+        }
+      }()
+      case 55: try {
+        var v: Mentraos_Ble_ImuEnabledConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .imuEnabled(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .imuEnabled(v)
+        }
+      }()
+      case 56: try {
+        var v: Mentraos_Ble_ImuSingleRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .imuSingle(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .imuSingle(v)
+        }
+      }()
+      case 57: try {
+        var v: Mentraos_Ble_ImuStreamConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .imuStream(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .imuStream(v)
+        }
+      }()
+      case 58: try {
+        var v: Mentraos_Ble_HeadGestureConfig?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .headGesture(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .headGesture(v)
+        }
+      }()
+      case 60: try {
+        var v: Mentraos_Ble_RestartRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .restart(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .restart(v)
+        }
+      }()
+      case 61: try {
+        var v: Mentraos_Ble_FactoryResetRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .factoryReset(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .factoryReset(v)
+        }
+      }()
+      case 70: try {
+        var v: Mentraos_Ble_VersionRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .versionRequest(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .versionRequest(v)
+        }
+      }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    // The use of inline closures is to circumvent an issue where the compiler
+    // allocates stack space for every if/case branch local when no optimizations
+    // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
+    // https://github.com/apple/swift-protobuf/issues/1182
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    switch self.payload {
+    case .disconnect?: try {
+      guard case .disconnect(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 10)
+    }()
+    case .batteryState?: try {
+      guard case .batteryState(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 11)
+    }()
+    case .glassesInfo?: try {
+      guard case .glassesInfo(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 12)
+    }()
+    case .pairingMode?: try {
+      guard case .pairingMode(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 13)
+    }()
+    case .headPosition?: try {
+      guard case .headPosition(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 14)
+    }()
+    case .headUpAngle?: try {
+      guard case .headUpAngle(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 15)
+    }()
+    case .pong?: try {
+      guard case .pong(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 16)
+    }()
+    case .micState?: try {
+      guard case .micState(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 20)
+    }()
+    case .setVadEnabled?: try {
+      guard case .setVadEnabled(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 23)
+    }()
+    case .setVadConfig?: try {
+      guard case .setVadConfig(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 24)
+    }()
+    case .requestVadStatus?: try {
+      guard case .requestVadStatus(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 25)
+    }()
+    case .displayText?: try {
+      guard case .displayText(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 30)
+    }()
+    case .displayImage?: try {
+      guard case .displayImage(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 31)
+    }()
+    case .cacheImage?: try {
+      guard case .cacheImage(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 32)
+    }()
+    case .displayCachedImage?: try {
+      guard case .displayCachedImage(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 33)
+    }()
+    case .clearCachedImage_p?: try {
+      guard case .clearCachedImage_p(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 34)
+    }()
+    case .displayScrollingText?: try {
+      guard case .displayScrollingText(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 35)
+    }()
+    case .displayPower?: try {
+      guard case .displayPower(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 36)
+    }()
+    case .brightness?: try {
+      guard case .brightness(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 37)
+    }()
+    case .autoBrightness?: try {
+      guard case .autoBrightness(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 38)
+    }()
+    case .autoBrightnessMult?: try {
+      guard case .autoBrightnessMult(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 39)
+    }()
+    case .drawLine?: try {
+      guard case .drawLine(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 40)
+    }()
+    case .drawRect?: try {
+      guard case .drawRect(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 41)
+    }()
+    case .drawCircle?: try {
+      guard case .drawCircle(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 42)
+    }()
+    case .commit?: try {
+      guard case .commit(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 43)
+    }()
+    case .displayDistance?: try {
+      guard case .displayDistance(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 44)
+    }()
+    case .displayHeight?: try {
+      guard case .displayHeight(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 45)
+    }()
+    case .clearDisplay_p?: try {
+      guard case .clearDisplay_p(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 46)
+    }()
+    case .cacheDashboard?: try {
+      guard case .cacheDashboard(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 47)
+    }()
+    case .clearDashboard_p?: try {
+      guard case .clearDashboard_p(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 48)
+    }()
+    case .dashboardTrigger?: try {
+      guard case .dashboardTrigger(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 49)
+    }()
+    case .queueStatusRequest?: try {
+      guard case .queueStatusRequest(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 51)
+    }()
+    case .displayBatch?: try {
+      guard case .displayBatch(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 52)
+    }()
+    case .imuEnabled?: try {
+      guard case .imuEnabled(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 55)
+    }()
+    case .imuSingle?: try {
+      guard case .imuSingle(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 56)
+    }()
+    case .imuStream?: try {
+      guard case .imuStream(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 57)
+    }()
+    case .headGesture?: try {
+      guard case .headGesture(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 58)
+    }()
+    case .restart?: try {
+      guard case .restart(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 60)
+    }()
+    case .factoryReset?: try {
+      guard case .factoryReset(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 61)
+    }()
+    case .versionRequest?: try {
+      guard case .versionRequest(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 70)
+    }()
+    case nil: break
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_PhoneToGlasses, rhs: Mentraos_Ble_PhoneToGlasses) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.payload != rhs.payload {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_PingRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".PingRequest"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
-
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_PingRequest, rhs: Mentraos_Ble_PingRequest) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_GlassesToPhone: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".GlassesToPhone"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{4}\u{a}battery_status\0\u{3}charging_state\0\u{3}device_info\0\u{3}head_position\0\u{3}head_up_angle_set\0\u{1}ping\0\u{4}\u{5}vad_event\0\u{3}vad_enabled_set\0\u{3}vad_configured\0\u{3}vad_status\0\u{4}\u{7}image_transfer_complete\0\u{3}display_queue_info\0\u{4}\u{9}imu_data\0\u{3}button_event\0\u{3}head_gesture\0\u{3}dashboard_shown\0\u{4}\u{1b}version_response\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 10: try {
+        var v: Mentraos_Ble_BatteryStatus?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .batteryStatus(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .batteryStatus(v)
+        }
+      }()
+      case 11: try {
+        var v: Mentraos_Ble_ChargingState?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .chargingState(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .chargingState(v)
+        }
+      }()
+      case 12: try {
+        var v: Mentraos_Ble_DeviceInfo?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .deviceInfo(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .deviceInfo(v)
+        }
+      }()
+      case 13: try {
+        var v: Mentraos_Ble_HeadPosition?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .headPosition(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .headPosition(v)
+        }
+      }()
+      case 14: try {
+        var v: Mentraos_Ble_HeadUpAngleResponse?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .headUpAngleSet(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .headUpAngleSet(v)
+        }
+      }()
+      case 15: try {
+        var v: Mentraos_Ble_PingRequest?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .ping(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .ping(v)
+        }
+      }()
+      case 20: try {
+        var v: Mentraos_Ble_VadEvent?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .vadEvent(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .vadEvent(v)
+        }
+      }()
+      case 21: try {
+        var v: Mentraos_Ble_VadEnabledResponse?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .vadEnabledSet(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .vadEnabledSet(v)
+        }
+      }()
+      case 22: try {
+        var v: Mentraos_Ble_VadConfigResponse?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .vadConfigured(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .vadConfigured(v)
+        }
+      }()
+      case 23: try {
+        var v: Mentraos_Ble_VadStatus?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .vadStatus(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .vadStatus(v)
+        }
+      }()
+      case 30: try {
+        var v: Mentraos_Ble_ImageTransferComplete?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .imageTransferComplete(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .imageTransferComplete(v)
+        }
+      }()
+      case 31: try {
+        var v: Mentraos_Ble_DisplayQueueInfo?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .displayQueueInfo(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .displayQueueInfo(v)
+        }
+      }()
+      case 40: try {
+        var v: Mentraos_Ble_ImuData?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .imuData(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .imuData(v)
+        }
+      }()
+      case 41: try {
+        var v: Mentraos_Ble_ButtonEvent?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .buttonEvent(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .buttonEvent(v)
+        }
+      }()
+      case 42: try {
+        var v: Mentraos_Ble_HeadGesture?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .headGesture(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .headGesture(v)
+        }
+      }()
+      case 43: try {
+        var v: Mentraos_Ble_DashboardShown?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .dashboardShown(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .dashboardShown(v)
+        }
+      }()
+      case 70: try {
+        var v: Mentraos_Ble_VersionResponse?
+        var hadOneofValue = false
+        if let current = self.payload {
+          hadOneofValue = true
+          if case .versionResponse(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.payload = .versionResponse(v)
+        }
+      }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    // The use of inline closures is to circumvent an issue where the compiler
+    // allocates stack space for every if/case branch local when no optimizations
+    // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
+    // https://github.com/apple/swift-protobuf/issues/1182
+    switch self.payload {
+    case .batteryStatus?: try {
+      guard case .batteryStatus(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 10)
+    }()
+    case .chargingState?: try {
+      guard case .chargingState(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 11)
+    }()
+    case .deviceInfo?: try {
+      guard case .deviceInfo(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 12)
+    }()
+    case .headPosition?: try {
+      guard case .headPosition(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 13)
+    }()
+    case .headUpAngleSet?: try {
+      guard case .headUpAngleSet(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 14)
+    }()
+    case .ping?: try {
+      guard case .ping(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 15)
+    }()
+    case .vadEvent?: try {
+      guard case .vadEvent(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 20)
+    }()
+    case .vadEnabledSet?: try {
+      guard case .vadEnabledSet(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 21)
+    }()
+    case .vadConfigured?: try {
+      guard case .vadConfigured(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 22)
+    }()
+    case .vadStatus?: try {
+      guard case .vadStatus(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 23)
+    }()
+    case .imageTransferComplete?: try {
+      guard case .imageTransferComplete(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 30)
+    }()
+    case .displayQueueInfo?: try {
+      guard case .displayQueueInfo(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 31)
+    }()
+    case .imuData?: try {
+      guard case .imuData(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 40)
+    }()
+    case .buttonEvent?: try {
+      guard case .buttonEvent(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 41)
+    }()
+    case .headGesture?: try {
+      guard case .headGesture(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 42)
+    }()
+    case .dashboardShown?: try {
+      guard case .dashboardShown(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 43)
+    }()
+    case .versionResponse?: try {
+      guard case .versionResponse(let v)? = self.payload else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 70)
+    }()
+    case nil: break
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_GlassesToPhone, rhs: Mentraos_Ble_GlassesToPhone) -> Bool {
+    if lhs.payload != rhs.payload {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_PongResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".PongResponse"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+extension Mentraos_Ble_DisconnectRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DisconnectRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisconnectRequest, rhs: Mentraos_Ble_DisconnectRequest) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
+extension Mentraos_Ble_BatteryStateRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".BatteryStateRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_BatteryStateRequest, rhs: Mentraos_Ble_BatteryStateRequest) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_BatteryStatus: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".BatteryStatus"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}level\0\u{1}charging\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.level) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.charging) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.level != 0 {
+      try visitor.visitSingularUInt32Field(value: self.level, fieldNumber: 1)
+    }
+    if self.charging != false {
+      try visitor.visitSingularBoolField(value: self.charging, fieldNumber: 2)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_BatteryStatus, rhs: Mentraos_Ble_BatteryStatus) -> Bool {
+    if lhs.level != rhs.level {return false}
+    if lhs.charging != rhs.charging {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_PongResponse, rhs: Mentraos_Ble_PongResponse) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_ChargingState: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".ChargingState"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}state\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularEnumField(value: &self.state) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.state != .notCharging {
+      try visitor.visitSingularEnumField(value: self.state, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ChargingState, rhs: Mentraos_Ble_ChargingState) -> Bool {
+    if lhs.state != rhs.state {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_MicStateConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".MicStateConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}enabled\0")
+extension Mentraos_Ble_ChargingState.State: SwiftProtobuf._ProtoNameProviding {
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0NOT_CHARGING\0\u{1}CHARGING\0")
+}
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularBoolField(value: &enabled)
-            default: break
-            }
-        }
-    }
+extension Mentraos_Ble_GlassesInfoRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".GlassesInfoRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_GlassesInfoRequest, rhs: Mentraos_Ble_GlassesInfoRequest) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        if enabled != false {
-            try visitor.visitSingularBoolField(value: enabled, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_DeviceInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DeviceInfo"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}fw_version\0\u{3}hw_model\0\u{1}features\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.fwVersion) }()
+      case 2: try { try decoder.decodeSingularStringField(value: &self.hwModel) }()
+      case 3: try { try decoder.decodeSingularMessageField(value: &self._features) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    // The use of inline closures is to circumvent an issue where the compiler
+    // allocates stack space for every if/case branch local when no optimizations
+    // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
+    // https://github.com/apple/swift-protobuf/issues/1182
+    if !self.fwVersion.isEmpty {
+      try visitor.visitSingularStringField(value: self.fwVersion, fieldNumber: 1)
+    }
+    if !self.hwModel.isEmpty {
+      try visitor.visitSingularStringField(value: self.hwModel, fieldNumber: 2)
+    }
+    try { if let v = self._features {
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
+    } }()
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DeviceInfo, rhs: Mentraos_Ble_DeviceInfo) -> Bool {
+    if lhs.fwVersion != rhs.fwVersion {return false}
+    if lhs.hwModel != rhs.hwModel {return false}
+    if lhs._features != rhs._features {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_MicStateConfig, rhs: Mentraos_Ble_MicStateConfig) -> Bool {
-        if lhs.enabled != rhs.enabled { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_DeviceFeatures: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DeviceFeatures"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}camera\0\u{1}display\0\u{3}audio_tx\0\u{3}audio_rx\0\u{1}imu\0\u{1}vad\0\u{3}mic_switching\0\u{3}image_chunk_buffer\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularBoolField(value: &self.camera) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.display) }()
+      case 3: try { try decoder.decodeSingularBoolField(value: &self.audioTx) }()
+      case 4: try { try decoder.decodeSingularBoolField(value: &self.audioRx) }()
+      case 5: try { try decoder.decodeSingularBoolField(value: &self.imu) }()
+      case 6: try { try decoder.decodeSingularBoolField(value: &self.vad) }()
+      case 7: try { try decoder.decodeSingularBoolField(value: &self.micSwitching) }()
+      case 8: try { try decoder.decodeSingularUInt32Field(value: &self.imageChunkBuffer) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.camera != false {
+      try visitor.visitSingularBoolField(value: self.camera, fieldNumber: 1)
+    }
+    if self.display != false {
+      try visitor.visitSingularBoolField(value: self.display, fieldNumber: 2)
+    }
+    if self.audioTx != false {
+      try visitor.visitSingularBoolField(value: self.audioTx, fieldNumber: 3)
+    }
+    if self.audioRx != false {
+      try visitor.visitSingularBoolField(value: self.audioRx, fieldNumber: 4)
+    }
+    if self.imu != false {
+      try visitor.visitSingularBoolField(value: self.imu, fieldNumber: 5)
+    }
+    if self.vad != false {
+      try visitor.visitSingularBoolField(value: self.vad, fieldNumber: 6)
+    }
+    if self.micSwitching != false {
+      try visitor.visitSingularBoolField(value: self.micSwitching, fieldNumber: 7)
+    }
+    if self.imageChunkBuffer != 0 {
+      try visitor.visitSingularUInt32Field(value: self.imageChunkBuffer, fieldNumber: 8)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DeviceFeatures, rhs: Mentraos_Ble_DeviceFeatures) -> Bool {
+    if lhs.camera != rhs.camera {return false}
+    if lhs.display != rhs.display {return false}
+    if lhs.audioTx != rhs.audioTx {return false}
+    if lhs.audioRx != rhs.audioRx {return false}
+    if lhs.imu != rhs.imu {return false}
+    if lhs.vad != rhs.vad {return false}
+    if lhs.micSwitching != rhs.micSwitching {return false}
+    if lhs.imageChunkBuffer != rhs.imageChunkBuffer {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_VadEnabledConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".VadEnabledConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}enabled\0")
+extension Mentraos_Ble_PairingModeRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".PairingModeRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_PairingModeRequest, rhs: Mentraos_Ble_PairingModeRequest) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularBoolField(value: &enabled)
-            default: break
-            }
-        }
-    }
+extension Mentraos_Ble_HeadPositionRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".HeadPositionRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_HeadPositionRequest, rhs: Mentraos_Ble_HeadPositionRequest) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        if enabled != false {
-            try visitor.visitSingularBoolField(value: enabled, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_HeadPosition: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".HeadPosition"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}angle\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularInt32Field(value: &self.angle) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.angle != 0 {
+      try visitor.visitSingularInt32Field(value: self.angle, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_HeadPosition, rhs: Mentraos_Ble_HeadPosition) -> Bool {
+    if lhs.angle != rhs.angle {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_VadEnabledConfig, rhs: Mentraos_Ble_VadEnabledConfig) -> Bool {
-        if lhs.enabled != rhs.enabled { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_HeadUpAngleConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".HeadUpAngleConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}angle\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.angle) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.angle != 0 {
+      try visitor.visitSingularUInt32Field(value: self.angle, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_HeadUpAngleConfig, rhs: Mentraos_Ble_HeadUpAngleConfig) -> Bool {
+    if lhs.angle != rhs.angle {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_VadConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".VadConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}sensitivity\0")
+extension Mentraos_Ble_HeadUpAngleResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".HeadUpAngleResponse"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}success\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularBoolField(value: &self.success) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.success != false {
+      try visitor.visitSingularBoolField(value: self.success, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_HeadUpAngleResponse, rhs: Mentraos_Ble_HeadUpAngleResponse) -> Bool {
+    if lhs.success != rhs.success {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &sensitivity)
-            default: break
-            }
-        }
-    }
+extension Mentraos_Ble_PingRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".PingRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_PingRequest, rhs: Mentraos_Ble_PingRequest) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        if sensitivity != 0 {
-            try visitor.visitSingularUInt32Field(value: sensitivity, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_PongResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".PongResponse"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_PongResponse, rhs: Mentraos_Ble_PongResponse) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_VadConfig, rhs: Mentraos_Ble_VadConfig) -> Bool {
-        if lhs.sensitivity != rhs.sensitivity { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_MicStateConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".MicStateConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}enabled\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularBoolField(value: &self.enabled) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.enabled != false {
+      try visitor.visitSingularBoolField(value: self.enabled, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_MicStateConfig, rhs: Mentraos_Ble_MicStateConfig) -> Bool {
+    if lhs.enabled != rhs.enabled {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_VadEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".VadEvent"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}state\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularEnumField(value: &state)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if state != .inactive {
-            try visitor.visitSingularEnumField(value: state, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_VadEvent, rhs: Mentraos_Ble_VadEvent) -> Bool {
-        if lhs.state != rhs.state { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".VadEvent"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}state\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularEnumField(value: &self.state) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.state != .inactive {
+      try visitor.visitSingularEnumField(value: self.state, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_VadEvent, rhs: Mentraos_Ble_VadEvent) -> Bool {
+    if lhs.state != rhs.state {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_VadEvent.State: SwiftProtobuf._ProtoNameProviding {
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0INACTIVE\0\u{1}ACTIVE\0")
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0INACTIVE\0\u{1}ACTIVE\0")
 }
 
-extension Mentraos_Ble_DisplayText: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DisplayText"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}text\0\u{1}color\0\u{3}font_code\0\u{1}x\0\u{1}y\0\u{1}size\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularStringField(value: &text)
-            case 2: try decoder.decodeSingularUInt32Field(value: &color)
-            case 3: try decoder.decodeSingularUInt32Field(value: &fontCode)
-            case 4: try decoder.decodeSingularUInt32Field(value: &x)
-            case 5: try decoder.decodeSingularUInt32Field(value: &y)
-            case 6: try decoder.decodeSingularUInt32Field(value: &size)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if !text.isEmpty {
-            try visitor.visitSingularStringField(value: text, fieldNumber: 1)
-        }
-        if color != 0 {
-            try visitor.visitSingularUInt32Field(value: color, fieldNumber: 2)
-        }
-        if fontCode != 0 {
-            try visitor.visitSingularUInt32Field(value: fontCode, fieldNumber: 3)
-        }
-        if x != 0 {
-            try visitor.visitSingularUInt32Field(value: x, fieldNumber: 4)
-        }
-        if y != 0 {
-            try visitor.visitSingularUInt32Field(value: y, fieldNumber: 5)
-        }
-        if size != 0 {
-            try visitor.visitSingularUInt32Field(value: size, fieldNumber: 6)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_DisplayText, rhs: Mentraos_Ble_DisplayText) -> Bool {
-        if lhs.text != rhs.text { return false }
-        if lhs.color != rhs.color { return false }
-        if lhs.fontCode != rhs.fontCode { return false }
-        if lhs.x != rhs.x { return false }
-        if lhs.y != rhs.y { return false }
-        if lhs.size != rhs.size { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_VadEnabledRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".VadEnabledRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0\u{1}enabled\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.enabled) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    if self.enabled != false {
+      try visitor.visitSingularBoolField(value: self.enabled, fieldNumber: 2)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_VadEnabledRequest, rhs: Mentraos_Ble_VadEnabledRequest) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.enabled != rhs.enabled {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_DisplayImage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DisplayImage"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}stream_id\0\u{1}x\0\u{1}y\0\u{1}width\0\u{1}height\0\u{1}encoding\0\u{3}total_chunks\0")
+extension Mentraos_Ble_VadEnabledResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".VadEnabledResponse"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0\u{1}success\0\u{1}error\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.success) }()
+      case 3: try { try decoder.decodeSingularStringField(value: &self.error) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    if self.success != false {
+      try visitor.visitSingularBoolField(value: self.success, fieldNumber: 2)
+    }
+    if !self.error.isEmpty {
+      try visitor.visitSingularStringField(value: self.error, fieldNumber: 3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_VadEnabledResponse, rhs: Mentraos_Ble_VadEnabledResponse) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.success != rhs.success {return false}
+    if lhs.error != rhs.error {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularStringField(value: &streamID)
-            case 2: try decoder.decodeSingularUInt32Field(value: &x)
-            case 3: try decoder.decodeSingularUInt32Field(value: &y)
-            case 4: try decoder.decodeSingularUInt32Field(value: &width)
-            case 5: try decoder.decodeSingularUInt32Field(value: &height)
-            case 6: try decoder.decodeSingularStringField(value: &encoding)
-            case 7: try decoder.decodeSingularUInt32Field(value: &totalChunks)
-            default: break
-            }
-        }
-    }
+extension Mentraos_Ble_VadConfigRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".VadConfigRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0\u{1}sensitivity\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.sensitivity) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    if self.sensitivity != 0 {
+      try visitor.visitSingularUInt32Field(value: self.sensitivity, fieldNumber: 2)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_VadConfigRequest, rhs: Mentraos_Ble_VadConfigRequest) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.sensitivity != rhs.sensitivity {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        if !streamID.isEmpty {
-            try visitor.visitSingularStringField(value: streamID, fieldNumber: 1)
-        }
-        if x != 0 {
-            try visitor.visitSingularUInt32Field(value: x, fieldNumber: 2)
-        }
-        if y != 0 {
-            try visitor.visitSingularUInt32Field(value: y, fieldNumber: 3)
-        }
-        if width != 0 {
-            try visitor.visitSingularUInt32Field(value: width, fieldNumber: 4)
-        }
-        if height != 0 {
-            try visitor.visitSingularUInt32Field(value: height, fieldNumber: 5)
-        }
-        if !encoding.isEmpty {
-            try visitor.visitSingularStringField(value: encoding, fieldNumber: 6)
-        }
-        if totalChunks != 0 {
-            try visitor.visitSingularUInt32Field(value: totalChunks, fieldNumber: 7)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_VadConfigResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".VadConfigResponse"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0\u{1}success\0\u{1}error\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.success) }()
+      case 3: try { try decoder.decodeSingularStringField(value: &self.error) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    if self.success != false {
+      try visitor.visitSingularBoolField(value: self.success, fieldNumber: 2)
+    }
+    if !self.error.isEmpty {
+      try visitor.visitSingularStringField(value: self.error, fieldNumber: 3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_VadConfigResponse, rhs: Mentraos_Ble_VadConfigResponse) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.success != rhs.success {return false}
+    if lhs.error != rhs.error {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_DisplayImage, rhs: Mentraos_Ble_DisplayImage) -> Bool {
-        if lhs.streamID != rhs.streamID { return false }
-        if lhs.x != rhs.x { return false }
-        if lhs.y != rhs.y { return false }
-        if lhs.width != rhs.width { return false }
-        if lhs.height != rhs.height { return false }
-        if lhs.encoding != rhs.encoding { return false }
-        if lhs.totalChunks != rhs.totalChunks { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_VadStatusRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".VadStatusRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_VadStatusRequest, rhs: Mentraos_Ble_VadStatusRequest) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_PreloadImage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".PreloadImage"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}stream_id\0\u{3}image_id\0\u{1}width\0\u{1}height\0\u{1}encoding\0\u{3}total_chunks\0")
+extension Mentraos_Ble_VadStatus: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".VadStatus"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0\u{1}enabled\0\u{1}sensitivity\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.enabled) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.sensitivity) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    if self.enabled != false {
+      try visitor.visitSingularBoolField(value: self.enabled, fieldNumber: 2)
+    }
+    if self.sensitivity != 0 {
+      try visitor.visitSingularUInt32Field(value: self.sensitivity, fieldNumber: 3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_VadStatus, rhs: Mentraos_Ble_VadStatus) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.enabled != rhs.enabled {return false}
+    if lhs.sensitivity != rhs.sensitivity {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularStringField(value: &streamID)
-            case 2: try decoder.decodeSingularUInt32Field(value: &imageID)
-            case 3: try decoder.decodeSingularUInt32Field(value: &width)
-            case 4: try decoder.decodeSingularUInt32Field(value: &height)
-            case 5: try decoder.decodeSingularStringField(value: &encoding)
-            case 6: try decoder.decodeSingularUInt32Field(value: &totalChunks)
-            default: break
-            }
-        }
-    }
+extension Mentraos_Ble_DisplayText: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DisplayText"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}text\0\u{1}color\0\u{1}x\0\u{1}y\0\u{1}size\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.text) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.color) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.x) }()
+      case 4: try { try decoder.decodeSingularUInt32Field(value: &self.y) }()
+      case 5: try { try decoder.decodeSingularUInt32Field(value: &self.size) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.text.isEmpty {
+      try visitor.visitSingularStringField(value: self.text, fieldNumber: 1)
+    }
+    if self.color != 0 {
+      try visitor.visitSingularUInt32Field(value: self.color, fieldNumber: 2)
+    }
+    if self.x != 0 {
+      try visitor.visitSingularUInt32Field(value: self.x, fieldNumber: 3)
+    }
+    if self.y != 0 {
+      try visitor.visitSingularUInt32Field(value: self.y, fieldNumber: 4)
+    }
+    if self.size != 0 {
+      try visitor.visitSingularUInt32Field(value: self.size, fieldNumber: 5)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayText, rhs: Mentraos_Ble_DisplayText) -> Bool {
+    if lhs.text != rhs.text {return false}
+    if lhs.color != rhs.color {return false}
+    if lhs.x != rhs.x {return false}
+    if lhs.y != rhs.y {return false}
+    if lhs.size != rhs.size {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        if !streamID.isEmpty {
-            try visitor.visitSingularStringField(value: streamID, fieldNumber: 1)
-        }
-        if imageID != 0 {
-            try visitor.visitSingularUInt32Field(value: imageID, fieldNumber: 2)
-        }
-        if width != 0 {
-            try visitor.visitSingularUInt32Field(value: width, fieldNumber: 3)
-        }
-        if height != 0 {
-            try visitor.visitSingularUInt32Field(value: height, fieldNumber: 4)
-        }
-        if !encoding.isEmpty {
-            try visitor.visitSingularStringField(value: encoding, fieldNumber: 5)
-        }
-        if totalChunks != 0 {
-            try visitor.visitSingularUInt32Field(value: totalChunks, fieldNumber: 6)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_DisplayImage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DisplayImage"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}stream_id\0\u{1}x\0\u{1}y\0\u{1}width\0\u{1}height\0\u{1}encoding\0\u{3}total_chunks\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.streamID) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.x) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.y) }()
+      case 4: try { try decoder.decodeSingularUInt32Field(value: &self.width) }()
+      case 5: try { try decoder.decodeSingularUInt32Field(value: &self.height) }()
+      case 6: try { try decoder.decodeSingularStringField(value: &self.encoding) }()
+      case 7: try { try decoder.decodeSingularUInt32Field(value: &self.totalChunks) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.streamID.isEmpty {
+      try visitor.visitSingularStringField(value: self.streamID, fieldNumber: 1)
+    }
+    if self.x != 0 {
+      try visitor.visitSingularUInt32Field(value: self.x, fieldNumber: 2)
+    }
+    if self.y != 0 {
+      try visitor.visitSingularUInt32Field(value: self.y, fieldNumber: 3)
+    }
+    if self.width != 0 {
+      try visitor.visitSingularUInt32Field(value: self.width, fieldNumber: 4)
+    }
+    if self.height != 0 {
+      try visitor.visitSingularUInt32Field(value: self.height, fieldNumber: 5)
+    }
+    if !self.encoding.isEmpty {
+      try visitor.visitSingularStringField(value: self.encoding, fieldNumber: 6)
+    }
+    if self.totalChunks != 0 {
+      try visitor.visitSingularUInt32Field(value: self.totalChunks, fieldNumber: 7)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayImage, rhs: Mentraos_Ble_DisplayImage) -> Bool {
+    if lhs.streamID != rhs.streamID {return false}
+    if lhs.x != rhs.x {return false}
+    if lhs.y != rhs.y {return false}
+    if lhs.width != rhs.width {return false}
+    if lhs.height != rhs.height {return false}
+    if lhs.encoding != rhs.encoding {return false}
+    if lhs.totalChunks != rhs.totalChunks {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_PreloadImage, rhs: Mentraos_Ble_PreloadImage) -> Bool {
-        if lhs.streamID != rhs.streamID { return false }
-        if lhs.imageID != rhs.imageID { return false }
-        if lhs.width != rhs.width { return false }
-        if lhs.height != rhs.height { return false }
-        if lhs.encoding != rhs.encoding { return false }
-        if lhs.totalChunks != rhs.totalChunks { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_CacheImage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".CacheImage"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}stream_id\0\u{3}image_id\0\u{1}width\0\u{1}height\0\u{1}encoding\0\u{3}total_chunks\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.streamID) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.imageID) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.width) }()
+      case 4: try { try decoder.decodeSingularUInt32Field(value: &self.height) }()
+      case 5: try { try decoder.decodeSingularStringField(value: &self.encoding) }()
+      case 6: try { try decoder.decodeSingularUInt32Field(value: &self.totalChunks) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.streamID.isEmpty {
+      try visitor.visitSingularStringField(value: self.streamID, fieldNumber: 1)
+    }
+    if self.imageID != 0 {
+      try visitor.visitSingularUInt32Field(value: self.imageID, fieldNumber: 2)
+    }
+    if self.width != 0 {
+      try visitor.visitSingularUInt32Field(value: self.width, fieldNumber: 3)
+    }
+    if self.height != 0 {
+      try visitor.visitSingularUInt32Field(value: self.height, fieldNumber: 4)
+    }
+    if !self.encoding.isEmpty {
+      try visitor.visitSingularStringField(value: self.encoding, fieldNumber: 5)
+    }
+    if self.totalChunks != 0 {
+      try visitor.visitSingularUInt32Field(value: self.totalChunks, fieldNumber: 6)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_CacheImage, rhs: Mentraos_Ble_CacheImage) -> Bool {
+    if lhs.streamID != rhs.streamID {return false}
+    if lhs.imageID != rhs.imageID {return false}
+    if lhs.width != rhs.width {return false}
+    if lhs.height != rhs.height {return false}
+    if lhs.encoding != rhs.encoding {return false}
+    if lhs.totalChunks != rhs.totalChunks {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_DisplayCachedImage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DisplayCachedImage"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}image_id\0\u{1}x\0\u{1}y\0\u{1}width\0\u{1}height\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &imageID)
-            case 2: try decoder.decodeSingularUInt32Field(value: &x)
-            case 3: try decoder.decodeSingularUInt32Field(value: &y)
-            case 4: try decoder.decodeSingularUInt32Field(value: &width)
-            case 5: try decoder.decodeSingularUInt32Field(value: &height)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if imageID != 0 {
-            try visitor.visitSingularUInt32Field(value: imageID, fieldNumber: 1)
-        }
-        if x != 0 {
-            try visitor.visitSingularUInt32Field(value: x, fieldNumber: 2)
-        }
-        if y != 0 {
-            try visitor.visitSingularUInt32Field(value: y, fieldNumber: 3)
-        }
-        if width != 0 {
-            try visitor.visitSingularUInt32Field(value: width, fieldNumber: 4)
-        }
-        if height != 0 {
-            try visitor.visitSingularUInt32Field(value: height, fieldNumber: 5)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_DisplayCachedImage, rhs: Mentraos_Ble_DisplayCachedImage) -> Bool {
-        if lhs.imageID != rhs.imageID { return false }
-        if lhs.x != rhs.x { return false }
-        if lhs.y != rhs.y { return false }
-        if lhs.width != rhs.width { return false }
-        if lhs.height != rhs.height { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".DisplayCachedImage"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}image_id\0\u{1}x\0\u{1}y\0\u{1}width\0\u{1}height\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.imageID) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.x) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.y) }()
+      case 4: try { try decoder.decodeSingularUInt32Field(value: &self.width) }()
+      case 5: try { try decoder.decodeSingularUInt32Field(value: &self.height) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.imageID != 0 {
+      try visitor.visitSingularUInt32Field(value: self.imageID, fieldNumber: 1)
+    }
+    if self.x != 0 {
+      try visitor.visitSingularUInt32Field(value: self.x, fieldNumber: 2)
+    }
+    if self.y != 0 {
+      try visitor.visitSingularUInt32Field(value: self.y, fieldNumber: 3)
+    }
+    if self.width != 0 {
+      try visitor.visitSingularUInt32Field(value: self.width, fieldNumber: 4)
+    }
+    if self.height != 0 {
+      try visitor.visitSingularUInt32Field(value: self.height, fieldNumber: 5)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayCachedImage, rhs: Mentraos_Ble_DisplayCachedImage) -> Bool {
+    if lhs.imageID != rhs.imageID {return false}
+    if lhs.x != rhs.x {return false}
+    if lhs.y != rhs.y {return false}
+    if lhs.width != rhs.width {return false}
+    if lhs.height != rhs.height {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_ClearCachedImage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".ClearCachedImage"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}image_id\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &imageID)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if imageID != 0 {
-            try visitor.visitSingularUInt32Field(value: imageID, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_ClearCachedImage, rhs: Mentraos_Ble_ClearCachedImage) -> Bool {
-        if lhs.imageID != rhs.imageID { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".ClearCachedImage"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}image_id\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.imageID) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.imageID != 0 {
+      try visitor.visitSingularUInt32Field(value: self.imageID, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ClearCachedImage, rhs: Mentraos_Ble_ClearCachedImage) -> Bool {
+    if lhs.imageID != rhs.imageID {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_DisplayScrollingText: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DisplayScrollingText"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}text\0\u{1}color\0\u{3}font_code\0\u{1}x\0\u{1}y\0\u{1}width\0\u{1}height\0\u{1}align\0\u{3}line_spacing\0\u{1}speed\0\u{1}size\0\u{1}loop\0\u{3}pause_ms\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularStringField(value: &text)
-            case 2: try decoder.decodeSingularUInt32Field(value: &color)
-            case 3: try decoder.decodeSingularUInt32Field(value: &fontCode)
-            case 4: try decoder.decodeSingularUInt32Field(value: &x)
-            case 5: try decoder.decodeSingularUInt32Field(value: &y)
-            case 6: try decoder.decodeSingularUInt32Field(value: &width)
-            case 7: try decoder.decodeSingularUInt32Field(value: &height)
-            case 8: try decoder.decodeSingularEnumField(value: &align)
-            case 9: try decoder.decodeSingularUInt32Field(value: &lineSpacing)
-            case 10: try decoder.decodeSingularUInt32Field(value: &speed)
-            case 11: try decoder.decodeSingularUInt32Field(value: &size)
-            case 12: try decoder.decodeSingularBoolField(value: &loop)
-            case 13: try decoder.decodeSingularUInt32Field(value: &pauseMs)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if !text.isEmpty {
-            try visitor.visitSingularStringField(value: text, fieldNumber: 1)
-        }
-        if color != 0 {
-            try visitor.visitSingularUInt32Field(value: color, fieldNumber: 2)
-        }
-        if fontCode != 0 {
-            try visitor.visitSingularUInt32Field(value: fontCode, fieldNumber: 3)
-        }
-        if x != 0 {
-            try visitor.visitSingularUInt32Field(value: x, fieldNumber: 4)
-        }
-        if y != 0 {
-            try visitor.visitSingularUInt32Field(value: y, fieldNumber: 5)
-        }
-        if width != 0 {
-            try visitor.visitSingularUInt32Field(value: width, fieldNumber: 6)
-        }
-        if height != 0 {
-            try visitor.visitSingularUInt32Field(value: height, fieldNumber: 7)
-        }
-        if align != .left {
-            try visitor.visitSingularEnumField(value: align, fieldNumber: 8)
-        }
-        if lineSpacing != 0 {
-            try visitor.visitSingularUInt32Field(value: lineSpacing, fieldNumber: 9)
-        }
-        if speed != 0 {
-            try visitor.visitSingularUInt32Field(value: speed, fieldNumber: 10)
-        }
-        if size != 0 {
-            try visitor.visitSingularUInt32Field(value: size, fieldNumber: 11)
-        }
-        if loop != false {
-            try visitor.visitSingularBoolField(value: loop, fieldNumber: 12)
-        }
-        if pauseMs != 0 {
-            try visitor.visitSingularUInt32Field(value: pauseMs, fieldNumber: 13)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_DisplayScrollingText, rhs: Mentraos_Ble_DisplayScrollingText) -> Bool {
-        if lhs.text != rhs.text { return false }
-        if lhs.color != rhs.color { return false }
-        if lhs.fontCode != rhs.fontCode { return false }
-        if lhs.x != rhs.x { return false }
-        if lhs.y != rhs.y { return false }
-        if lhs.width != rhs.width { return false }
-        if lhs.height != rhs.height { return false }
-        if lhs.align != rhs.align { return false }
-        if lhs.lineSpacing != rhs.lineSpacing { return false }
-        if lhs.speed != rhs.speed { return false }
-        if lhs.size != rhs.size { return false }
-        if lhs.loop != rhs.loop { return false }
-        if lhs.pauseMs != rhs.pauseMs { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".DisplayScrollingText"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}text\0\u{1}color\0\u{1}x\0\u{1}y\0\u{1}width\0\u{1}height\0\u{1}align\0\u{3}line_spacing\0\u{1}speed\0\u{1}size\0\u{1}loop\0\u{3}pause_ms\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.text) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.color) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.x) }()
+      case 4: try { try decoder.decodeSingularUInt32Field(value: &self.y) }()
+      case 5: try { try decoder.decodeSingularUInt32Field(value: &self.width) }()
+      case 6: try { try decoder.decodeSingularUInt32Field(value: &self.height) }()
+      case 7: try { try decoder.decodeSingularEnumField(value: &self.align) }()
+      case 8: try { try decoder.decodeSingularUInt32Field(value: &self.lineSpacing) }()
+      case 9: try { try decoder.decodeSingularUInt32Field(value: &self.speed) }()
+      case 10: try { try decoder.decodeSingularUInt32Field(value: &self.size) }()
+      case 11: try { try decoder.decodeSingularBoolField(value: &self.loop) }()
+      case 12: try { try decoder.decodeSingularUInt32Field(value: &self.pauseMs) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.text.isEmpty {
+      try visitor.visitSingularStringField(value: self.text, fieldNumber: 1)
+    }
+    if self.color != 0 {
+      try visitor.visitSingularUInt32Field(value: self.color, fieldNumber: 2)
+    }
+    if self.x != 0 {
+      try visitor.visitSingularUInt32Field(value: self.x, fieldNumber: 3)
+    }
+    if self.y != 0 {
+      try visitor.visitSingularUInt32Field(value: self.y, fieldNumber: 4)
+    }
+    if self.width != 0 {
+      try visitor.visitSingularUInt32Field(value: self.width, fieldNumber: 5)
+    }
+    if self.height != 0 {
+      try visitor.visitSingularUInt32Field(value: self.height, fieldNumber: 6)
+    }
+    if self.align != .left {
+      try visitor.visitSingularEnumField(value: self.align, fieldNumber: 7)
+    }
+    if self.lineSpacing != 0 {
+      try visitor.visitSingularUInt32Field(value: self.lineSpacing, fieldNumber: 8)
+    }
+    if self.speed != 0 {
+      try visitor.visitSingularUInt32Field(value: self.speed, fieldNumber: 9)
+    }
+    if self.size != 0 {
+      try visitor.visitSingularUInt32Field(value: self.size, fieldNumber: 10)
+    }
+    if self.loop != false {
+      try visitor.visitSingularBoolField(value: self.loop, fieldNumber: 11)
+    }
+    if self.pauseMs != 0 {
+      try visitor.visitSingularUInt32Field(value: self.pauseMs, fieldNumber: 12)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayScrollingText, rhs: Mentraos_Ble_DisplayScrollingText) -> Bool {
+    if lhs.text != rhs.text {return false}
+    if lhs.color != rhs.color {return false}
+    if lhs.x != rhs.x {return false}
+    if lhs.y != rhs.y {return false}
+    if lhs.width != rhs.width {return false}
+    if lhs.height != rhs.height {return false}
+    if lhs.align != rhs.align {return false}
+    if lhs.lineSpacing != rhs.lineSpacing {return false}
+    if lhs.speed != rhs.speed {return false}
+    if lhs.size != rhs.size {return false}
+    if lhs.loop != rhs.loop {return false}
+    if lhs.pauseMs != rhs.pauseMs {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_DisplayScrollingText.Alignment: SwiftProtobuf._ProtoNameProviding {
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0LEFT\0\u{1}CENTER\0\u{1}RIGHT\0")
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0LEFT\0\u{1}CENTER\0\u{1}RIGHT\0")
 }
 
 extension Mentraos_Ble_DisplayPowerConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DisplayPowerConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}on\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularBoolField(value: &on)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if on != false {
-            try visitor.visitSingularBoolField(value: on, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_DisplayPowerConfig, rhs: Mentraos_Ble_DisplayPowerConfig) -> Bool {
-        if lhs.on != rhs.on { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".DisplayPowerConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}on\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularBoolField(value: &self.on) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.on != false {
+      try visitor.visitSingularBoolField(value: self.on, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayPowerConfig, rhs: Mentraos_Ble_DisplayPowerConfig) -> Bool {
+    if lhs.on != rhs.on {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_BrightnessConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".BrightnessConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}value\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &value)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if value != 0 {
-            try visitor.visitSingularUInt32Field(value: value, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_BrightnessConfig, rhs: Mentraos_Ble_BrightnessConfig) -> Bool {
-        if lhs.value != rhs.value { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".BrightnessConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}value\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.value) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.value != 0 {
+      try visitor.visitSingularUInt32Field(value: self.value, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_BrightnessConfig, rhs: Mentraos_Ble_BrightnessConfig) -> Bool {
+    if lhs.value != rhs.value {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_AutoBrightnessConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".AutoBrightnessConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}enabled\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularBoolField(value: &enabled)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if enabled != false {
-            try visitor.visitSingularBoolField(value: enabled, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_AutoBrightnessConfig, rhs: Mentraos_Ble_AutoBrightnessConfig) -> Bool {
-        if lhs.enabled != rhs.enabled { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".AutoBrightnessConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}enabled\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularBoolField(value: &self.enabled) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.enabled != false {
+      try visitor.visitSingularBoolField(value: self.enabled, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_AutoBrightnessConfig, rhs: Mentraos_Ble_AutoBrightnessConfig) -> Bool {
+    if lhs.enabled != rhs.enabled {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_AutoBrightnessMultiplier: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".AutoBrightnessMultiplier"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}multiplier\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularFloatField(value: &multiplier)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if multiplier.bitPattern != 0 {
-            try visitor.visitSingularFloatField(value: multiplier, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_AutoBrightnessMultiplier, rhs: Mentraos_Ble_AutoBrightnessMultiplier) -> Bool {
-        if lhs.multiplier != rhs.multiplier { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".AutoBrightnessMultiplier"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}multiplier\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularFloatField(value: &self.multiplier) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.multiplier.bitPattern != 0 {
+      try visitor.visitSingularFloatField(value: self.multiplier, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_AutoBrightnessMultiplier, rhs: Mentraos_Ble_AutoBrightnessMultiplier) -> Bool {
+    if lhs.multiplier != rhs.multiplier {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_DrawLine: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DrawLine"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}color\0\u{1}stroke\0\u{1}x1\0\u{1}y1\0\u{1}x2\0\u{1}y2\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &color)
-            case 2: try decoder.decodeSingularUInt32Field(value: &stroke)
-            case 3: try decoder.decodeSingularUInt32Field(value: &x1)
-            case 4: try decoder.decodeSingularUInt32Field(value: &y1)
-            case 5: try decoder.decodeSingularUInt32Field(value: &x2)
-            case 6: try decoder.decodeSingularUInt32Field(value: &y2)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if color != 0 {
-            try visitor.visitSingularUInt32Field(value: color, fieldNumber: 1)
-        }
-        if stroke != 0 {
-            try visitor.visitSingularUInt32Field(value: stroke, fieldNumber: 2)
-        }
-        if x1 != 0 {
-            try visitor.visitSingularUInt32Field(value: x1, fieldNumber: 3)
-        }
-        if y1 != 0 {
-            try visitor.visitSingularUInt32Field(value: y1, fieldNumber: 4)
-        }
-        if x2 != 0 {
-            try visitor.visitSingularUInt32Field(value: x2, fieldNumber: 5)
-        }
-        if y2 != 0 {
-            try visitor.visitSingularUInt32Field(value: y2, fieldNumber: 6)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_DrawLine, rhs: Mentraos_Ble_DrawLine) -> Bool {
-        if lhs.color != rhs.color { return false }
-        if lhs.stroke != rhs.stroke { return false }
-        if lhs.x1 != rhs.x1 { return false }
-        if lhs.y1 != rhs.y1 { return false }
-        if lhs.x2 != rhs.x2 { return false }
-        if lhs.y2 != rhs.y2 { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".DrawLine"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}color\0\u{1}stroke\0\u{1}x1\0\u{1}y1\0\u{1}x2\0\u{1}y2\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.color) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.stroke) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.x1) }()
+      case 4: try { try decoder.decodeSingularUInt32Field(value: &self.y1) }()
+      case 5: try { try decoder.decodeSingularUInt32Field(value: &self.x2) }()
+      case 6: try { try decoder.decodeSingularUInt32Field(value: &self.y2) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.color != 0 {
+      try visitor.visitSingularUInt32Field(value: self.color, fieldNumber: 1)
+    }
+    if self.stroke != 0 {
+      try visitor.visitSingularUInt32Field(value: self.stroke, fieldNumber: 2)
+    }
+    if self.x1 != 0 {
+      try visitor.visitSingularUInt32Field(value: self.x1, fieldNumber: 3)
+    }
+    if self.y1 != 0 {
+      try visitor.visitSingularUInt32Field(value: self.y1, fieldNumber: 4)
+    }
+    if self.x2 != 0 {
+      try visitor.visitSingularUInt32Field(value: self.x2, fieldNumber: 5)
+    }
+    if self.y2 != 0 {
+      try visitor.visitSingularUInt32Field(value: self.y2, fieldNumber: 6)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DrawLine, rhs: Mentraos_Ble_DrawLine) -> Bool {
+    if lhs.color != rhs.color {return false}
+    if lhs.stroke != rhs.stroke {return false}
+    if lhs.x1 != rhs.x1 {return false}
+    if lhs.y1 != rhs.y1 {return false}
+    if lhs.x2 != rhs.x2 {return false}
+    if lhs.y2 != rhs.y2 {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_DrawRect: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DrawRect"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}color\0\u{1}stroke\0\u{1}x\0\u{1}y\0\u{1}width\0\u{1}height\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &color)
-            case 2: try decoder.decodeSingularUInt32Field(value: &stroke)
-            case 3: try decoder.decodeSingularUInt32Field(value: &x)
-            case 4: try decoder.decodeSingularUInt32Field(value: &y)
-            case 5: try decoder.decodeSingularUInt32Field(value: &width)
-            case 6: try decoder.decodeSingularUInt32Field(value: &height)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if color != 0 {
-            try visitor.visitSingularUInt32Field(value: color, fieldNumber: 1)
-        }
-        if stroke != 0 {
-            try visitor.visitSingularUInt32Field(value: stroke, fieldNumber: 2)
-        }
-        if x != 0 {
-            try visitor.visitSingularUInt32Field(value: x, fieldNumber: 3)
-        }
-        if y != 0 {
-            try visitor.visitSingularUInt32Field(value: y, fieldNumber: 4)
-        }
-        if width != 0 {
-            try visitor.visitSingularUInt32Field(value: width, fieldNumber: 5)
-        }
-        if height != 0 {
-            try visitor.visitSingularUInt32Field(value: height, fieldNumber: 6)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_DrawRect, rhs: Mentraos_Ble_DrawRect) -> Bool {
-        if lhs.color != rhs.color { return false }
-        if lhs.stroke != rhs.stroke { return false }
-        if lhs.x != rhs.x { return false }
-        if lhs.y != rhs.y { return false }
-        if lhs.width != rhs.width { return false }
-        if lhs.height != rhs.height { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".DrawRect"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}color\0\u{1}stroke\0\u{1}x\0\u{1}y\0\u{1}width\0\u{1}height\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.color) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.stroke) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.x) }()
+      case 4: try { try decoder.decodeSingularUInt32Field(value: &self.y) }()
+      case 5: try { try decoder.decodeSingularUInt32Field(value: &self.width) }()
+      case 6: try { try decoder.decodeSingularUInt32Field(value: &self.height) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.color != 0 {
+      try visitor.visitSingularUInt32Field(value: self.color, fieldNumber: 1)
+    }
+    if self.stroke != 0 {
+      try visitor.visitSingularUInt32Field(value: self.stroke, fieldNumber: 2)
+    }
+    if self.x != 0 {
+      try visitor.visitSingularUInt32Field(value: self.x, fieldNumber: 3)
+    }
+    if self.y != 0 {
+      try visitor.visitSingularUInt32Field(value: self.y, fieldNumber: 4)
+    }
+    if self.width != 0 {
+      try visitor.visitSingularUInt32Field(value: self.width, fieldNumber: 5)
+    }
+    if self.height != 0 {
+      try visitor.visitSingularUInt32Field(value: self.height, fieldNumber: 6)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DrawRect, rhs: Mentraos_Ble_DrawRect) -> Bool {
+    if lhs.color != rhs.color {return false}
+    if lhs.stroke != rhs.stroke {return false}
+    if lhs.x != rhs.x {return false}
+    if lhs.y != rhs.y {return false}
+    if lhs.width != rhs.width {return false}
+    if lhs.height != rhs.height {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_DrawCircle: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DrawCircle"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}color\0\u{1}stroke\0\u{1}x\0\u{1}y\0\u{1}radius\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &color)
-            case 2: try decoder.decodeSingularUInt32Field(value: &stroke)
-            case 3: try decoder.decodeSingularUInt32Field(value: &x)
-            case 4: try decoder.decodeSingularUInt32Field(value: &y)
-            case 5: try decoder.decodeSingularUInt32Field(value: &radius)
-            default: break
-            }
-        }
-    }
+  static let protoMessageName: String = _protobuf_package + ".DrawCircle"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}color\0\u{1}stroke\0\u{1}x\0\u{1}y\0\u{1}radius\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.color) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.stroke) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.x) }()
+      case 4: try { try decoder.decodeSingularUInt32Field(value: &self.y) }()
+      case 5: try { try decoder.decodeSingularUInt32Field(value: &self.radius) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.color != 0 {
+      try visitor.visitSingularUInt32Field(value: self.color, fieldNumber: 1)
+    }
+    if self.stroke != 0 {
+      try visitor.visitSingularUInt32Field(value: self.stroke, fieldNumber: 2)
+    }
+    if self.x != 0 {
+      try visitor.visitSingularUInt32Field(value: self.x, fieldNumber: 3)
+    }
+    if self.y != 0 {
+      try visitor.visitSingularUInt32Field(value: self.y, fieldNumber: 4)
+    }
+    if self.radius != 0 {
+      try visitor.visitSingularUInt32Field(value: self.radius, fieldNumber: 5)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DrawCircle, rhs: Mentraos_Ble_DrawCircle) -> Bool {
+    if lhs.color != rhs.color {return false}
+    if lhs.stroke != rhs.stroke {return false}
+    if lhs.x != rhs.x {return false}
+    if lhs.y != rhs.y {return false}
+    if lhs.radius != rhs.radius {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        if color != 0 {
-            try visitor.visitSingularUInt32Field(value: color, fieldNumber: 1)
-        }
-        if stroke != 0 {
-            try visitor.visitSingularUInt32Field(value: stroke, fieldNumber: 2)
-        }
-        if x != 0 {
-            try visitor.visitSingularUInt32Field(value: x, fieldNumber: 3)
-        }
-        if y != 0 {
-            try visitor.visitSingularUInt32Field(value: y, fieldNumber: 4)
-        }
-        if radius != 0 {
-            try visitor.visitSingularUInt32Field(value: radius, fieldNumber: 5)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_DisplayBatch: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DisplayBatch"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}commands\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeRepeatedMessageField(value: &self.commands) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.commands.isEmpty {
+      try visitor.visitRepeatedMessageField(value: self.commands, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayBatch, rhs: Mentraos_Ble_DisplayBatch) -> Bool {
+    if lhs.commands != rhs.commands {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_DrawCircle, rhs: Mentraos_Ble_DrawCircle) -> Bool {
-        if lhs.color != rhs.color { return false }
-        if lhs.stroke != rhs.stroke { return false }
-        if lhs.x != rhs.x { return false }
-        if lhs.y != rhs.y { return false }
-        if lhs.radius != rhs.radius { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_DisplayBatch.DisplayCommand: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = Mentraos_Ble_DisplayBatch.protoMessageName + ".DisplayCommand"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}text\0\u{3}cached_image\0\u{1}line\0\u{1}rect\0\u{1}circle\0\u{3}scrolling_text\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try {
+        var v: Mentraos_Ble_DisplayText?
+        var hadOneofValue = false
+        if let current = self.command {
+          hadOneofValue = true
+          if case .text(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.command = .text(v)
+        }
+      }()
+      case 2: try {
+        var v: Mentraos_Ble_DisplayCachedImage?
+        var hadOneofValue = false
+        if let current = self.command {
+          hadOneofValue = true
+          if case .cachedImage(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.command = .cachedImage(v)
+        }
+      }()
+      case 3: try {
+        var v: Mentraos_Ble_DrawLine?
+        var hadOneofValue = false
+        if let current = self.command {
+          hadOneofValue = true
+          if case .line(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.command = .line(v)
+        }
+      }()
+      case 4: try {
+        var v: Mentraos_Ble_DrawRect?
+        var hadOneofValue = false
+        if let current = self.command {
+          hadOneofValue = true
+          if case .rect(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.command = .rect(v)
+        }
+      }()
+      case 5: try {
+        var v: Mentraos_Ble_DrawCircle?
+        var hadOneofValue = false
+        if let current = self.command {
+          hadOneofValue = true
+          if case .circle(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.command = .circle(v)
+        }
+      }()
+      case 6: try {
+        var v: Mentraos_Ble_DisplayScrollingText?
+        var hadOneofValue = false
+        if let current = self.command {
+          hadOneofValue = true
+          if case .scrollingText(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.command = .scrollingText(v)
+        }
+      }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    // The use of inline closures is to circumvent an issue where the compiler
+    // allocates stack space for every if/case branch local when no optimizations
+    // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
+    // https://github.com/apple/swift-protobuf/issues/1182
+    switch self.command {
+    case .text?: try {
+      guard case .text(let v)? = self.command else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
+    }()
+    case .cachedImage?: try {
+      guard case .cachedImage(let v)? = self.command else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
+    }()
+    case .line?: try {
+      guard case .line(let v)? = self.command else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
+    }()
+    case .rect?: try {
+      guard case .rect(let v)? = self.command else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 4)
+    }()
+    case .circle?: try {
+      guard case .circle(let v)? = self.command else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 5)
+    }()
+    case .scrollingText?: try {
+      guard case .scrollingText(let v)? = self.command else { preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 6)
+    }()
+    case nil: break
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayBatch.DisplayCommand, rhs: Mentraos_Ble_DisplayBatch.DisplayCommand) -> Bool {
+    if lhs.command != rhs.command {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_CommitDisplay: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".CommitDisplay"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
-
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_CommitDisplay, rhs: Mentraos_Ble_CommitDisplay) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".CommitDisplay"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}clear_before\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularBoolField(value: &self.clearBefore_p) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.clearBefore_p != false {
+      try visitor.visitSingularBoolField(value: self.clearBefore_p, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_CommitDisplay, rhs: Mentraos_Ble_CommitDisplay) -> Bool {
+    if lhs.clearBefore_p != rhs.clearBefore_p {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_ClearDisplay: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".ClearDisplay"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
-
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_ClearDisplay, rhs: Mentraos_Ble_ClearDisplay) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".ClearDisplay"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ClearDisplay, rhs: Mentraos_Ble_ClearDisplay) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_DisplayDistanceConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DisplayDistanceConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}distance_cm\0")
+extension Mentraos_Ble_DisplayQueueStatus: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DisplayQueueStatus"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &distanceCm)
-            default: break
-            }
-        }
-    }
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
 
-    func traverse(visitor: inout V) throws {
-        if distanceCm != 0 {
-            try visitor.visitSingularUInt32Field(value: distanceCm, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
 
-    static func == (lhs: Mentraos_Ble_DisplayDistanceConfig, rhs: Mentraos_Ble_DisplayDistanceConfig) -> Bool {
-        if lhs.distanceCm != rhs.distanceCm { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static func ==(lhs: Mentraos_Ble_DisplayQueueStatus, rhs: Mentraos_Ble_DisplayQueueStatus) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_DisplayHeightConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".DisplayHeightConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}height\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularUInt32Field(value: &height)
-            default: break
-            }
-        }
-    }
+extension Mentraos_Ble_DisplayQueueInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DisplayQueueInfo"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}queued_commands\0\u{3}queue_bytes\0\u{3}max_queue_size\0\u{3}last_commit_success\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.queuedCommands) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.queueBytes) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.maxQueueSize) }()
+      case 4: try { try decoder.decodeSingularBoolField(value: &self.lastCommitSuccess) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.queuedCommands != 0 {
+      try visitor.visitSingularUInt32Field(value: self.queuedCommands, fieldNumber: 1)
+    }
+    if self.queueBytes != 0 {
+      try visitor.visitSingularUInt32Field(value: self.queueBytes, fieldNumber: 2)
+    }
+    if self.maxQueueSize != 0 {
+      try visitor.visitSingularUInt32Field(value: self.maxQueueSize, fieldNumber: 3)
+    }
+    if self.lastCommitSuccess != false {
+      try visitor.visitSingularBoolField(value: self.lastCommitSuccess, fieldNumber: 4)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayQueueInfo, rhs: Mentraos_Ble_DisplayQueueInfo) -> Bool {
+    if lhs.queuedCommands != rhs.queuedCommands {return false}
+    if lhs.queueBytes != rhs.queueBytes {return false}
+    if lhs.maxQueueSize != rhs.maxQueueSize {return false}
+    if lhs.lastCommitSuccess != rhs.lastCommitSuccess {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        if height != 0 {
-            try visitor.visitSingularUInt32Field(value: height, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_DisplayDistanceConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DisplayDistanceConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}distance_cm\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.distanceCm) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.distanceCm != 0 {
+      try visitor.visitSingularUInt32Field(value: self.distanceCm, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayDistanceConfig, rhs: Mentraos_Ble_DisplayDistanceConfig) -> Bool {
+    if lhs.distanceCm != rhs.distanceCm {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_DisplayHeightConfig, rhs: Mentraos_Ble_DisplayHeightConfig) -> Bool {
-        if lhs.height != rhs.height { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_DisplayHeightConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DisplayHeightConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}height\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.height) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.height != 0 {
+      try visitor.visitSingularUInt32Field(value: self.height, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DisplayHeightConfig, rhs: Mentraos_Ble_DisplayHeightConfig) -> Bool {
+    if lhs.height != rhs.height {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_ImageTransferComplete: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".ImageTransferComplete"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}stream_id\0\u{1}status\0\u{3}missing_chunks\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularStringField(value: &streamID)
-            case 2: try decoder.decodeSingularEnumField(value: &status)
-            case 3: try decoder.decodeRepeatedUInt32Field(value: &missingChunks)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if !streamID.isEmpty {
-            try visitor.visitSingularStringField(value: streamID, fieldNumber: 1)
-        }
-        if status != .ok {
-            try visitor.visitSingularEnumField(value: status, fieldNumber: 2)
-        }
-        if !missingChunks.isEmpty {
-            try visitor.visitPackedUInt32Field(value: missingChunks, fieldNumber: 3)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_ImageTransferComplete, rhs: Mentraos_Ble_ImageTransferComplete) -> Bool {
-        if lhs.streamID != rhs.streamID { return false }
-        if lhs.status != rhs.status { return false }
-        if lhs.missingChunks != rhs.missingChunks { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".ImageTransferComplete"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}stream_id\0\u{1}status\0\u{3}missing_chunks\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.streamID) }()
+      case 2: try { try decoder.decodeSingularEnumField(value: &self.status) }()
+      case 3: try { try decoder.decodeRepeatedUInt32Field(value: &self.missingChunks) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.streamID.isEmpty {
+      try visitor.visitSingularStringField(value: self.streamID, fieldNumber: 1)
+    }
+    if self.status != .ok {
+      try visitor.visitSingularEnumField(value: self.status, fieldNumber: 2)
+    }
+    if !self.missingChunks.isEmpty {
+      try visitor.visitPackedUInt32Field(value: self.missingChunks, fieldNumber: 3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ImageTransferComplete, rhs: Mentraos_Ble_ImageTransferComplete) -> Bool {
+    if lhs.streamID != rhs.streamID {return false}
+    if lhs.status != rhs.status {return false}
+    if lhs.missingChunks != rhs.missingChunks {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_ImageTransferComplete.Status: SwiftProtobuf._ProtoNameProviding {
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0OK\0\u{1}INCOMPLETE\0")
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0OK\0\u{1}INCOMPLETE\0")
 }
 
 extension Mentraos_Ble_ImuEnabledConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".ImuEnabledConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}enabled\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularBoolField(value: &enabled)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if enabled != false {
-            try visitor.visitSingularBoolField(value: enabled, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_ImuEnabledConfig, rhs: Mentraos_Ble_ImuEnabledConfig) -> Bool {
-        if lhs.enabled != rhs.enabled { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".ImuEnabledConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}enabled\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularBoolField(value: &self.enabled) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.enabled != false {
+      try visitor.visitSingularBoolField(value: self.enabled, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ImuEnabledConfig, rhs: Mentraos_Ble_ImuEnabledConfig) -> Bool {
+    if lhs.enabled != rhs.enabled {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_ImuSingleRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".ImuSingleRequest"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
-
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_ImuSingleRequest, rhs: Mentraos_Ble_ImuSingleRequest) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".ImuSingleRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ImuSingleRequest, rhs: Mentraos_Ble_ImuSingleRequest) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_ImuStreamConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".ImuStreamConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}enabled\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularBoolField(value: &enabled)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if enabled != false {
-            try visitor.visitSingularBoolField(value: enabled, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_ImuStreamConfig, rhs: Mentraos_Ble_ImuStreamConfig) -> Bool {
-        if lhs.enabled != rhs.enabled { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".ImuStreamConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}enabled\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularBoolField(value: &self.enabled) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.enabled != false {
+      try visitor.visitSingularBoolField(value: self.enabled, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ImuStreamConfig, rhs: Mentraos_Ble_ImuStreamConfig) -> Bool {
+    if lhs.enabled != rhs.enabled {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_ImuData: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".ImuData"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}accel\0\u{1}gyro\0\u{1}mag\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularMessageField(value: &_accel)
-            case 2: try decoder.decodeSingularMessageField(value: &_gyro)
-            case 3: try decoder.decodeSingularMessageField(value: &_mag)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        // The use of inline closures is to circumvent an issue where the compiler
-        // allocates stack space for every if/case branch local when no optimizations
-        // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
-        // https://github.com/apple/swift-protobuf/issues/1182
-        try { if let v = self._accel {
-            try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
-        } }()
-        try { if let v = self._gyro {
-            try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
-        } }()
-        try { if let v = self._mag {
-            try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
-        } }()
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_ImuData, rhs: Mentraos_Ble_ImuData) -> Bool {
-        if lhs._accel != rhs._accel { return false }
-        if lhs._gyro != rhs._gyro { return false }
-        if lhs._mag != rhs._mag { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".ImuData"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}accel\0\u{1}gyro\0\u{1}mag\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularMessageField(value: &self._accel) }()
+      case 2: try { try decoder.decodeSingularMessageField(value: &self._gyro) }()
+      case 3: try { try decoder.decodeSingularMessageField(value: &self._mag) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    // The use of inline closures is to circumvent an issue where the compiler
+    // allocates stack space for every if/case branch local when no optimizations
+    // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
+    // https://github.com/apple/swift-protobuf/issues/1182
+    try { if let v = self._accel {
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
+    } }()
+    try { if let v = self._gyro {
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
+    } }()
+    try { if let v = self._mag {
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
+    } }()
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ImuData, rhs: Mentraos_Ble_ImuData) -> Bool {
+    if lhs._accel != rhs._accel {return false}
+    if lhs._gyro != rhs._gyro {return false}
+    if lhs._mag != rhs._mag {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_Vector3: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".Vector3"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}x\0\u{1}y\0\u{1}z\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularFloatField(value: &x)
-            case 2: try decoder.decodeSingularFloatField(value: &y)
-            case 3: try decoder.decodeSingularFloatField(value: &z)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if x.bitPattern != 0 {
-            try visitor.visitSingularFloatField(value: x, fieldNumber: 1)
-        }
-        if y.bitPattern != 0 {
-            try visitor.visitSingularFloatField(value: y, fieldNumber: 2)
-        }
-        if z.bitPattern != 0 {
-            try visitor.visitSingularFloatField(value: z, fieldNumber: 3)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_Vector3, rhs: Mentraos_Ble_Vector3) -> Bool {
-        if lhs.x != rhs.x { return false }
-        if lhs.y != rhs.y { return false }
-        if lhs.z != rhs.z { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".Vector3"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}x\0\u{1}y\0\u{1}z\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularFloatField(value: &self.x) }()
+      case 2: try { try decoder.decodeSingularFloatField(value: &self.y) }()
+      case 3: try { try decoder.decodeSingularFloatField(value: &self.z) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.x.bitPattern != 0 {
+      try visitor.visitSingularFloatField(value: self.x, fieldNumber: 1)
+    }
+    if self.y.bitPattern != 0 {
+      try visitor.visitSingularFloatField(value: self.y, fieldNumber: 2)
+    }
+    if self.z.bitPattern != 0 {
+      try visitor.visitSingularFloatField(value: self.z, fieldNumber: 3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_Vector3, rhs: Mentraos_Ble_Vector3) -> Bool {
+    if lhs.x != rhs.x {return false}
+    if lhs.y != rhs.y {return false}
+    if lhs.z != rhs.z {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_ButtonEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".ButtonEvent"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}button\0\u{1}state\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularEnumField(value: &button)
-            case 2: try decoder.decodeSingularEnumField(value: &state)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if button != .center {
-            try visitor.visitSingularEnumField(value: button, fieldNumber: 1)
-        }
-        if state != .up {
-            try visitor.visitSingularEnumField(value: state, fieldNumber: 2)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_ButtonEvent, rhs: Mentraos_Ble_ButtonEvent) -> Bool {
-        if lhs.button != rhs.button { return false }
-        if lhs.state != rhs.state { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".ButtonEvent"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}button\0\u{1}event\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularEnumField(value: &self.button) }()
+      case 2: try { try decoder.decodeSingularEnumField(value: &self.event) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.button != .leftBack {
+      try visitor.visitSingularEnumField(value: self.button, fieldNumber: 1)
+    }
+    if self.event != .singleTap {
+      try visitor.visitSingularEnumField(value: self.event, fieldNumber: 2)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ButtonEvent, rhs: Mentraos_Ble_ButtonEvent) -> Bool {
+    if lhs.button != rhs.button {return false}
+    if lhs.event != rhs.event {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_ButtonEvent.Button: SwiftProtobuf._ProtoNameProviding {
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0CENTER\0\u{1}LEFT\0\u{1}RIGHT\0")
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0LEFT_BACK\0\u{1}RIGHT_BACK\0")
 }
 
-extension Mentraos_Ble_ButtonEvent.State: SwiftProtobuf._ProtoNameProviding {
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0UP\0\u{1}DOWN\0")
+extension Mentraos_Ble_ButtonEvent.Event: SwiftProtobuf._ProtoNameProviding {
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0SINGLE_TAP\0\u{1}DOUBLE_TAP\0\u{1}TRIPLE_TAP\0\u{1}LONG_HOLD\0")
 }
 
 extension Mentraos_Ble_HeadGesture: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".HeadGesture"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}gesture\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularEnumField(value: &gesture)
-            default: break
-            }
-        }
-    }
-
-    func traverse(visitor: inout V) throws {
-        if gesture != .nod {
-            try visitor.visitSingularEnumField(value: gesture, fieldNumber: 1)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
-
-    static func == (lhs: Mentraos_Ble_HeadGesture, rhs: Mentraos_Ble_HeadGesture) -> Bool {
-        if lhs.gesture != rhs.gesture { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+  static let protoMessageName: String = _protobuf_package + ".HeadGesture"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}gesture\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularEnumField(value: &self.gesture) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.gesture != .nod {
+      try visitor.visitSingularEnumField(value: self.gesture, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_HeadGesture, rhs: Mentraos_Ble_HeadGesture) -> Bool {
+    if lhs.gesture != rhs.gesture {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
 extension Mentraos_Ble_HeadGesture.Gesture: SwiftProtobuf._ProtoNameProviding {
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0NOD\0\u{1}SHAKE\0\u{1}HEAD_UP\0")
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0NOD\0\u{1}SHAKE\0\u{1}HEAD_UP\0\u{1}HEAD_DOWN\0\u{1}TILT_LEFT\0\u{1}TILT_RIGHT\0")
 }
 
 extension Mentraos_Ble_HeadGestureConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".HeadGestureConfig"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}gesture\0\u{1}enabled\0")
-
-    mutating func decodeMessage(decoder: inout D) throws {
-        while let fieldNumber = try decoder.nextFieldNumber() {
-            // The use of inline closures is to circumvent an issue where the compiler
-            // allocates stack space for every case branch when no optimizations are
-            // enabled. https://github.com/apple/swift-protobuf/issues/1034
-            switch fieldNumber {
-            case 1: try decoder.decodeSingularEnumField(value: &gesture)
-            case 2: try decoder.decodeSingularBoolField(value: &enabled)
-            default: break
-            }
-        }
-    }
+  static let protoMessageName: String = _protobuf_package + ".HeadGestureConfig"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}gesture\0\u{1}enabled\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularEnumField(value: &self.gesture) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.enabled) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.gesture != .nod {
+      try visitor.visitSingularEnumField(value: self.gesture, fieldNumber: 1)
+    }
+    if self.enabled != false {
+      try visitor.visitSingularBoolField(value: self.enabled, fieldNumber: 2)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_HeadGestureConfig, rhs: Mentraos_Ble_HeadGestureConfig) -> Bool {
+    if lhs.gesture != rhs.gesture {return false}
+    if lhs.enabled != rhs.enabled {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        if gesture != .nod {
-            try visitor.visitSingularEnumField(value: gesture, fieldNumber: 1)
-        }
-        if enabled != false {
-            try visitor.visitSingularBoolField(value: enabled, fieldNumber: 2)
-        }
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_RestartRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".RestartRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_RestartRequest, rhs: Mentraos_Ble_RestartRequest) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_HeadGestureConfig, rhs: Mentraos_Ble_HeadGestureConfig) -> Bool {
-        if lhs.gesture != rhs.gesture { return false }
-        if lhs.enabled != rhs.enabled { return false }
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_FactoryResetRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".FactoryResetRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    // Load everything into unknown fields
+    while try decoder.nextFieldNumber() != nil {}
+  }
+
+  func traverse(visitor: inout V) throws {
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_FactoryResetRequest, rhs: Mentraos_Ble_FactoryResetRequest) -> Bool {
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }
 
-extension Mentraos_Ble_RestartRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".RestartRequest"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+extension Mentraos_Ble_CacheDashboard: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".CacheDashboard"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}dashboard_id\0\u{1}batch\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.dashboardID) }()
+      case 2: try { try decoder.decodeSingularMessageField(value: &self._batch) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    // The use of inline closures is to circumvent an issue where the compiler
+    // allocates stack space for every if/case branch local when no optimizations
+    // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
+    // https://github.com/apple/swift-protobuf/issues/1182
+    if self.dashboardID != 0 {
+      try visitor.visitSingularUInt32Field(value: self.dashboardID, fieldNumber: 1)
+    }
+    try { if let v = self._batch {
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
+    } }()
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_CacheDashboard, rhs: Mentraos_Ble_CacheDashboard) -> Bool {
+    if lhs.dashboardID != rhs.dashboardID {return false}
+    if lhs._batch != rhs._batch {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
+extension Mentraos_Ble_ClearDashboard: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".ClearDashboard"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}dashboard_id\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.dashboardID) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.dashboardID != 0 {
+      try visitor.visitSingularUInt32Field(value: self.dashboardID, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ClearDashboard, rhs: Mentraos_Ble_ClearDashboard) -> Bool {
+    if lhs.dashboardID != rhs.dashboardID {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_ConfigureDashboardTrigger: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".ConfigureDashboardTrigger"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}dashboard_id\0\u{1}trigger\0\u{3}duration_ms\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.dashboardID) }()
+      case 2: try { try decoder.decodeSingularEnumField(value: &self.trigger) }()
+      case 3: try { try decoder.decodeSingularUInt32Field(value: &self.durationMs) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.dashboardID != 0 {
+      try visitor.visitSingularUInt32Field(value: self.dashboardID, fieldNumber: 1)
+    }
+    if self.trigger != .headUp {
+      try visitor.visitSingularEnumField(value: self.trigger, fieldNumber: 2)
+    }
+    if self.durationMs != 0 {
+      try visitor.visitSingularUInt32Field(value: self.durationMs, fieldNumber: 3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_ConfigureDashboardTrigger, rhs: Mentraos_Ble_ConfigureDashboardTrigger) -> Bool {
+    if lhs.dashboardID != rhs.dashboardID {return false}
+    if lhs.trigger != rhs.trigger {return false}
+    if lhs.durationMs != rhs.durationMs {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_RestartRequest, rhs: Mentraos_Ble_RestartRequest) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_ConfigureDashboardTrigger.TriggerType: SwiftProtobuf._ProtoNameProviding {
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0HEAD_UP\0\u{1}HEAD_DOWN\0\u{1}BUTTON_TAP\0\u{1}MANUAL_ONLY\0")
 }
 
-extension Mentraos_Ble_FactoryResetRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
-    static let protoMessageName: String = _protobuf_package + ".FactoryResetRequest"
-    static let _protobuf_nameMap = SwiftProtobuf._NameMap()
+extension Mentraos_Ble_DashboardShown: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DashboardShown"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}dashboard_id\0\u{1}source\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularUInt32Field(value: &self.dashboardID) }()
+      case 2: try { try decoder.decodeSingularEnumField(value: &self.source) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if self.dashboardID != 0 {
+      try visitor.visitSingularUInt32Field(value: self.dashboardID, fieldNumber: 1)
+    }
+    if self.source != .gesture {
+      try visitor.visitSingularEnumField(value: self.source, fieldNumber: 2)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_DashboardShown, rhs: Mentraos_Ble_DashboardShown) -> Bool {
+    if lhs.dashboardID != rhs.dashboardID {return false}
+    if lhs.source != rhs.source {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    mutating func decodeMessage(decoder: inout D) throws {
-        // Load everything into unknown fields
-        while try decoder.nextFieldNumber() != nil {}
-    }
+extension Mentraos_Ble_DashboardShown.TriggerSource: SwiftProtobuf._ProtoNameProviding {
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{2}\0GESTURE\0\u{1}BUTTON\0\u{1}MANUAL\0")
+}
 
-    func traverse(visitor: inout V) throws {
-        try unknownFields.traverse(visitor: &visitor)
-    }
+extension Mentraos_Ble_VersionRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".VersionRequest"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_VersionRequest, rhs: Mentraos_Ble_VersionRequest) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
 
-    static func == (lhs: Mentraos_Ble_FactoryResetRequest, rhs: Mentraos_Ble_FactoryResetRequest) -> Bool {
-        if lhs.unknownFields != rhs.unknownFields { return false }
-        return true
-    }
+extension Mentraos_Ble_VersionResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".VersionResponse"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}msg_id\0\u{1}version\0\u{2}\u{8}commit\0\u{3}build_date\0\u{c}\u{3}\u{1}\u{c}\u{4}\u{1}\u{c}\u{5}\u{1}")
+
+  mutating func decodeMessage(decoder: inout D) throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.msgID) }()
+      case 2: try { try decoder.decodeSingularUInt32Field(value: &self.version) }()
+      case 10: try { try decoder.decodeSingularStringField(value: &self.commit) }()
+      case 11: try { try decoder.decodeSingularStringField(value: &self.buildDate) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse(visitor: inout V) throws {
+    if !self.msgID.isEmpty {
+      try visitor.visitSingularStringField(value: self.msgID, fieldNumber: 1)
+    }
+    if self.version != 0 {
+      try visitor.visitSingularUInt32Field(value: self.version, fieldNumber: 2)
+    }
+    if !self.commit.isEmpty {
+      try visitor.visitSingularStringField(value: self.commit, fieldNumber: 10)
+    }
+    if !self.buildDate.isEmpty {
+      try visitor.visitSingularStringField(value: self.buildDate, fieldNumber: 11)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Mentraos_Ble_VersionResponse, rhs: Mentraos_Ble_VersionResponse) -> Bool {
+    if lhs.msgID != rhs.msgID {return false}
+    if lhs.version != rhs.version {return false}
+    if lhs.commit != rhs.commit {return false}
+    if lhs.buildDate != rhs.buildDate {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
 }