From 0d4c1f4159200b376e8de32daf5fe5f6f904bd6f Mon Sep 17 00:00:00 2001 From: Nicolo Micheletti Date: Tue, 12 Aug 2025 11:11:31 +0800 Subject: [PATCH 01/79] Android core changes --- .../augmentos_core/AugmentosService.java | 158 +- .../augmentos_core/audio/PCMAudioPlayer.java | 379 + .../comms/AugmentOsActionsCallback.java | 9 +- .../comms/AugmentOsManagerMessageParser.java | 506 +- .../comms/AugmentosBlePeripheral.java | 38 +- .../SmartGlassesManager.java | 17 +- .../smarterglassesmanager/ble/BleSender.java | 135 + .../eventbusmessages/BleCommandReceiver.java | 14 + .../eventbusmessages/BleCommandSender.java | 14 + .../eventbusmessages/DisplayImageEvent.java | 18 + .../eventbusmessages/DisplayTextEvent.java | 31 + .../GlassesBluetoothSearchDiscoverEvent.java | 7 + .../smartglassescommunicators/AndroidSGC.java | 2 +- .../AudioWearableSGC.java | 2 +- .../EvenRealitiesG1SGC.java | 2 +- .../MentraLiveSGC.java | 2 +- .../MentraNexSGC.java | 3237 +++ .../SmartGlassesCommunicator.java | 75 +- .../UltraliteSGC.java | 2 +- .../smartglassescommunicators/VirtualSGC.java | 2 +- .../special/SelfSGC.java | 2 +- .../SmartGlassesRepresentative.java | 31 +- .../augmentos/SpeechRecAugmentos.java | 8 +- .../supportedglasses/MentraNexGlasses.java | 21 + .../supportedglasses/SmartGlassesDevice.java | 18 + .../SmartGlassesOperatingSystem.java | 1 + .../augmentos_core/ui/SettingsUi.java | 7 +- .../main/java/mentraos/ble/MentraosBle.java | 22602 ++++++++++++++++ .../app/src/main/res/values/strings.xml | 1 + .../app/src/main/res/xml/file_paths.xml | 6 + 30 files changed, 26998 insertions(+), 349 deletions(-) create mode 100644 android_core/app/src/main/java/com/augmentos/augmentos_core/audio/PCMAudioPlayer.java create mode 100644 android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/ble/BleSender.java create mode 100644 android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/BleCommandReceiver.java create mode 100644 android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/BleCommandSender.java create mode 100644 android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/DisplayImageEvent.java create mode 100644 android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/DisplayTextEvent.java create mode 100644 android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraNexSGC.java create mode 100644 android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/MentraNexGlasses.java create mode 100644 android_core/app/src/main/java/mentraos/ble/MentraosBle.java create mode 100644 android_core/app/src/main/res/xml/file_paths.xml diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/AugmentosService.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/AugmentosService.java index 51df69786d..33a0945f83 100755 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/AugmentosService.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/AugmentosService.java @@ -50,6 +50,7 @@ import com.augmentos.augmentos_core.augmentos_backend.WebSocketLifecycleManager; import com.augmentos.augmentos_core.augmentos_backend.WebSocketManager; import com.augmentos.augmentos_core.enums.SpeechRequiredDataType; +import com.augmentos.augmentos_core.enums.SpeechRequiredDataType; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BatteryLevelEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.ButtonPressEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.CaseEvent; @@ -64,6 +65,8 @@ import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.KeepAliveAckEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.MicModeChangedEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.RtmpStreamStatusEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BleCommandReceiver; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BleCommandSender; import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.SmartGlassesDevice; import com.augmentos.augmentos_core.smarterglassesmanager.utils.BitmapJavaUtils; import com.augmentos.augmentos_core.smarterglassesmanager.utils.SmartGlassesConnectionState; @@ -113,6 +116,8 @@ import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.DownloadProgressEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.InstallationProgressEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.GlassesSerialNumberEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.DisplayTextEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.DisplayImageEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.PairFailureEvent; public class AugmentosService extends LifecycleService implements AugmentOsActionsCallback { @@ -164,7 +169,7 @@ private byte[] hexStringToByteArray(String hex) { int len = hex.length(); byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { - data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) + Character.digit(hex.charAt(i+1), 16)); + data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) + Character.digit(hex.charAt(i + 1), 16)); } return data; } @@ -249,7 +254,7 @@ public void onServiceDisconnected(ComponentName className) { // WiFi status for glasses that require WiFi (e.g., Mentra Live) private boolean glassesNeedWifiCredentials = false; private boolean glassesWifiConnected = false; - + // Track current foreground service type private int currentForegroundServiceType = ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC; private String glassesWifiSsid = ""; @@ -340,7 +345,7 @@ public void onGlassesConnectionStateChanged(SmartGlassesDevice device, SmartGlas playStartupSequenceOnSmartGlasses(); asrPlanner.updateAsrLanguages(); ServerComms.getInstance().requestSettingsFromServer(); - + // Upgrade service type to avoid Android 15's 6-hour dataSync timeout upgradeForegroundServiceType(); } else if (connectionState == SmartGlassesConnectionState.DISCONNECTED) { @@ -361,7 +366,7 @@ public void onTriggerSendStatusToAugmentOsManagerEvent(TriggerSendStatusToAugmen } @Subscribe - public void onGlassesHeadUpEvent(GlassesHeadUpEvent event){ + public void onGlassesHeadUpEvent(GlassesHeadUpEvent event) { ServerComms.getInstance().sendHeadPosition("up"); // BATTERY OPTIMIZATION: Directly call method instead of posting additional event if (contextualDashboardEnabled && smartGlassesManager != null) { @@ -374,7 +379,7 @@ public void onGlassesHeadUpEvent(GlassesHeadUpEvent event){ } @Subscribe - public void onGlassesHeadDownEvent(GlassesHeadDownEvent event){ + public void onGlassesHeadDownEvent(GlassesHeadDownEvent event) { ServerComms.getInstance().sendHeadPosition("down"); if (smartGlassesManager != null) smartGlassesManager.windowManager.hideDashboard(); @@ -424,6 +429,7 @@ public void onThirdPartyAppErrorEvent(ThirdPartyEdgeAppErrorEvent event) { public ArrayList notificationList = new ArrayList(); public JSONArray latestNewsArray = new JSONArray(); private int latestNewsIndex = 0; + @Subscribe public void displayGlassesDashboardEvent() throws JSONException { if (!contextualDashboardEnabled) { @@ -431,7 +437,7 @@ public void displayGlassesDashboardEvent() throws JSONException { } if (cachedDashboardDisplayObject != null) { - if(smartGlassesManager != null) { + if (smartGlassesManager != null) { Runnable dashboardDisplayRunnable = parseDisplayEventMessage(cachedDashboardDisplayObject); smartGlassesManager.windowManager.showDashboard(dashboardDisplayRunnable, @@ -439,7 +445,7 @@ public void displayGlassesDashboardEvent() throws JSONException { ); } - if(blePeripheral != null) { + if (blePeripheral != null) { JSONObject newMsg = generateTemplatedJsonFromServer(cachedDashboardDisplayObject); blePeripheral.sendGlassesDisplayEventToManager(newMsg); } @@ -457,7 +463,7 @@ public void displayGlassesDashboardEvent() throws JSONException { // Battery, date/time, etc. String leftHeaderLine = String.format(Locale.getDefault(), "โ—Œ %s %s, %d%%\n", currentTime, currentDate, batteryLevel); - String connString = webSocketStatus == null ? "Not connected" : webSocketStatus.name();; + String connString = webSocketStatus == null ? "Not connected" : webSocketStatus.name(); if (smartGlassesManager != null) { smartGlassesManager.windowManager.showDashboard(() -> @@ -579,7 +585,7 @@ public void onCreate() { // Automatically connect to glasses on service start String preferredWearable = SmartGlassesManager.getPreferredWearable(this); - if(!preferredWearable.isEmpty()) { + if (!preferredWearable.isEmpty()) { SmartGlassesDevice preferredDevice = SmartGlassesManager.getSmartGlassesDeviceFromModelName(preferredWearable); if (preferredDevice != null) { // Initialize SmartGlassesManager @@ -690,7 +696,7 @@ public int onStartCommand(Intent intent, int flags, int startId) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) == PackageManager.PERMISSION_GRANTED) { currentForegroundServiceType = ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC | - ServiceInfo.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE; + ServiceInfo.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE; startForeground(AUGMENTOS_NOTIFICATION_ID, buildSharedForegroundNotification(this), currentForegroundServiceType); @@ -915,8 +921,9 @@ public void onGlassesDisplayPowerEvent(GlassesDisplayPowerEvent event) { /** * Send a dedicated WiFi status change event to the AugmentOS manager + * * @param isConnected Whether the glasses are connected to WiFi - * @param ssid The SSID of the connected network (if connected) + * @param ssid The SSID of the connected network (if connected) */ private void sendWifiStatusChangeEvent(boolean isConnected, String ssid, String localIp) { try { @@ -973,7 +980,7 @@ public void onGlassesWifiScanResultEvent(GlassesWifiScanResultEvent event) { // Send to the manager app if (blePeripheral != null) { blePeripheral.sendDataToAugmentOsManager(wifiScanResultObj.toString()); - //blePeripheral.sendNotifyManager("Found " + event.networks.size() + " WiFi networks", "success"); + blePeripheral.sendNotifyManager("Found " + event.networks.size() + " WiFi networks", "success"); } } catch (JSONException e) { Log.e(TAG, "Error creating WiFi scan results JSON", e); @@ -1115,19 +1122,19 @@ public void onSmartRingButtonEvent(SmartRingButtonOutputEvent event) { long time = event.timestamp; boolean isDown = event.isDown; - if(!isDown || buttonId != 1) return; - Log.d(TAG,"DETECTED BUTTON PRESS W BUTTON ID: " + buttonId); + if (!isDown || buttonId != 1) return; + Log.d(TAG, "DETECTED BUTTON PRESS W BUTTON ID: " + buttonId); currTime = System.currentTimeMillis(); ServerComms.getInstance().sendButtonPress("ring", "single"); //Detect double presses - if(isDown && currTime - lastPressed < doublePressTimeConst) { - Log.d(TAG, "Double tap - CurrTime-lastPressed: "+ (currTime-lastPressed)); + if (isDown && currTime - lastPressed < doublePressTimeConst) { + Log.d(TAG, "Double tap - CurrTime-lastPressed: " + (currTime - lastPressed)); ServerComms.getInstance().sendButtonPress("ring", "double"); } - if(isDown) { + if (isDown) { lastPressed = System.currentTimeMillis(); } } @@ -1218,8 +1225,9 @@ public int compare(JSONObject a, JSONObject b) { } public Runnable parseDisplayEventMessage(JSONObject rawMsg) { - if(isInitializing) { - return () -> {}; + if (isInitializing) { + return () -> { + }; } try { @@ -1404,12 +1412,12 @@ public JSONObject extractDashboardTopLineInfo(String topLine) { } @Subscribe - public void onGlassesBluetoothSearchDiscoverEvent(GlassesBluetoothSearchDiscoverEvent event){ - blePeripheral.sendGlassesBluetoothDiscoverResultToManager(event.modelName, event.deviceName); + public void onGlassesBluetoothSearchDiscoverEvent(GlassesBluetoothSearchDiscoverEvent event) { + blePeripheral.sendGlassesBluetoothDiscoverResultToManager(event.modelName, event.deviceName, event.deviceAddress); } @Subscribe - public void onGlassesBluetoothSearchStopEvent(GlassesBluetoothSearchStopEvent event){ + public void onGlassesBluetoothSearchStopEvent(GlassesBluetoothSearchStopEvent event) { blePeripheral.sendGlassesBluetoothStopToManager(event.modelName); } @@ -1419,6 +1427,16 @@ public void onNewScreenImageEvent(NewScreenImageEvent event) { smartGlassesManager.windowManager.showAppLayer("server", () -> smartGlassesManager.sendBitmap(event.bmp), -1); } + @Subscribe + public void onBleCommandReceiver(BleCommandReceiver event) { + blePeripheral.sendBleCommandReceiverEventToManager(event); + } + + @Subscribe + public void onBleCommandSender(BleCommandSender event) { + blePeripheral.sendBleCommandSenderEventToManager(event); + } + private void startNotificationService() { Intent notificationServiceIntent = new Intent(this, MyNotificationListeners.class); startService(notificationServiceIntent); @@ -1502,13 +1520,13 @@ public JSONObject generateStatusJson() { connectedGlasses.put("glasses_color", glassesColor); } - if(smartGlassesManager != null && smartGlassesManager.getConnectedSmartGlasses() != null) { + if (smartGlassesManager != null && smartGlassesManager.getConnectedSmartGlasses() != null) { connectedGlasses.put("model_name", smartGlassesManager.getConnectedSmartGlasses().deviceModelName); - connectedGlasses.put("battery_level", (batteryLevel == null) ? -1: batteryLevel); //-1 if unknown - connectedGlasses.put("case_battery_level", (caseBatteryLevel == null) ? -1: caseBatteryLevel); //-1 if unknown - connectedGlasses.put("case_charging", (caseCharging == null) ? false: caseCharging); - connectedGlasses.put("case_open", (caseOpen == null) ? false: caseOpen); - connectedGlasses.put("case_removed", (caseRemoved == null) ? true: caseRemoved); + connectedGlasses.put("battery_level", (batteryLevel == null) ? -1 : batteryLevel); //-1 if unknown + connectedGlasses.put("case_battery_level", (caseBatteryLevel == null) ? -1 : caseBatteryLevel); //-1 if unknown + connectedGlasses.put("case_charging", (caseCharging == null) ? false : caseCharging); + connectedGlasses.put("case_open", (caseOpen == null) ? false : caseOpen); + connectedGlasses.put("case_removed", (caseRemoved == null) ? true : caseRemoved); // Add Bluetooth device name if available String bluetoothName = smartGlassesManager.getConnectedSmartGlassesBluetoothName(); @@ -1711,7 +1729,7 @@ public void onDashboardDisplayEvent(JSONObject dashboardDisplayData) { @Override public void onConnectionError(String errorMsg) { - if(blePeripheral != null) { + if (blePeripheral != null) { blePeripheral.sendNotifyManager("Connection error: " + errorMsg, "error"); } } @@ -2017,7 +2035,7 @@ public void sendStatusToAugmentOsManager() { JSONObject status = generateStatusJson(); blePeripheral.sendDataToAugmentOsManager(status.toString()); } - + /** * Upgrades the foreground service type to include connectedDevice when glasses are connected. * This avoids the 6-hour dataSync timeout on Android 15. @@ -2026,29 +2044,29 @@ private void upgradeForegroundServiceType() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { return; // Service types not required before Android Q } - + // Check if we're already using connectedDevice type - int desiredType = ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC | - ServiceInfo.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE; - + int desiredType = ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC | + ServiceInfo.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE; + if (currentForegroundServiceType == desiredType) { Log.d(TAG, "Already using connectedDevice service type"); return; } - + // Check if we have Bluetooth permissions (required for connectedDevice type) - if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) + if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { Log.w(TAG, "Cannot upgrade to connectedDevice type - missing BLUETOOTH_CONNECT permission"); return; } - + try { // Upgrade the service type by calling startForeground again - startForeground(AUGMENTOS_NOTIFICATION_ID, - buildSharedForegroundNotification(this), + startForeground(AUGMENTOS_NOTIFICATION_ID, + buildSharedForegroundNotification(this), desiredType); - + currentForegroundServiceType = desiredType; Log.d(TAG, "Successfully upgraded foreground service type to include connectedDevice"); } catch (Exception e) { @@ -2128,8 +2146,8 @@ public void handleMicModeChangedEvent(MicModeChangedEvent event) { } @Override - public void connectToWearable(String modelName, String deviceName) { - Log.d("AugmentOsService", "Connecting to wearable: " + modelName + ". DeviceName: " + deviceName + "."); + public void connectToWearable(String modelName, String deviceName, String deviceAddress) { + Log.d("AugmentOsService", "Connecting to wearable: " + modelName + ". DeviceName: " + deviceName + ".deviceAddress:" + deviceAddress); SmartGlassesDevice device = SmartGlassesManager.getSmartGlassesDeviceFromModelName(modelName); if (device == null) { @@ -2141,8 +2159,7 @@ public void connectToWearable(String modelName, String deviceName) { if (!deviceName.isEmpty()) { if (modelName.contains("Even Realities")) { savePreferredG1DeviceId(this, deviceName); - } - else if (modelName.equals("Mentra Live")) { + } else if (modelName.equals("Mentra Live")) { // Save Mentra Live device name in its preferences SharedPreferences mentraPrefs = getSharedPreferences("MentraLivePrefs", Context.MODE_PRIVATE); mentraPrefs.edit().putString("LastConnectedDeviceName", deviceName).apply(); @@ -2150,6 +2167,8 @@ else if (modelName.equals("Mentra Live")) { } } + device.setDeviceAddress(deviceAddress); + executeOnceSmartGlassesManagerReady(() -> { smartGlassesManager.connectToSmartGlasses(device); sendStatusToAugmentOsManager(); @@ -2176,6 +2195,7 @@ public void disconnectWearable(String wearableId) { public void forgetSmartGlasses() { Log.d("AugmentOsService", "Forgetting wearable"); SmartGlassesManager.savePreferredWearable(this, ""); + SmartGlassesManager.savePreferredWearableAddress(this, ""); deleteEvenSharedPreferences(this); // Clear MentraLive device name preference @@ -2303,7 +2323,7 @@ public void setMetricSystemEnabled(boolean metricSystemEnabled) { @Override public void setPowerSavingMode(boolean powerSavingMode) { SmartGlassesManager.savePowerSavingMode(this, powerSavingMode); - if(smartGlassesManager != null && smartGlassesManager.getConnectedSmartGlasses() != null) { + if (smartGlassesManager != null && smartGlassesManager.getConnectedSmartGlasses() != null) { blePeripheral.sendNotifyManager(this.getResources().getString(R.string.SETTING_WILL_APPLY_ON_NEXT_GLASSES_CONNECTION), "success"); } sendStatusToBackend(); @@ -2349,7 +2369,7 @@ public void requestAppInfo(String packageNameToGetDetails) { } @Override - public void handleNotificationData(JSONObject notificationData){ + public void handleNotificationData(JSONObject notificationData) { try { if (notificationData != null) { String appName = notificationData.optString("app_name"); @@ -2379,12 +2399,12 @@ public void handleNotificationDismissal(JSONObject dismissalData) { Log.d(TAG, "๐Ÿšจ NOTIFICATION DISMISSED: " + appName + " - " + title); Log.d(TAG, "๐Ÿ“ Dismissal details - Text: " + text + ", Key: " + notificationKey); - + // Send dismissal to server via ServerComms String uuid = java.util.UUID.randomUUID().toString(); ServerComms.getInstance().sendPhoneNotificationDismissal(uuid, appName, title, text, notificationKey); Log.d(TAG, "๐Ÿ“ก Sent notification dismissal to server - UUID: " + uuid); - + } catch (JSONException e) { Log.e(TAG, "Error parsing notification dismissal data", e); } @@ -2503,7 +2523,7 @@ public void setGlassesWifiCredentials(String ssid, String password) { ); // Notify manager app - //blePeripheral.sendNotifyManager("WiFi credentials sent to glasses", "success"); + blePeripheral.sendNotifyManager("WiFi credentials sent to glasses", "success"); sendStatusToAugmentOsManager(); @@ -2566,7 +2586,7 @@ public void setButtonMode(String mode) { Log.d("AugmentOsService", "Setting button mode: " + mode); // Save locally SmartGlassesManager.setButtonPressMode(this, mode); - + // Send to glasses if connected if (smartGlassesManager != null && smartGlassesManagerBound) { smartGlassesManager.sendButtonModeSetting(mode); @@ -2577,7 +2597,7 @@ public void setButtonMode(String mode) { @Override public void setAuthSecretKey(String uniqueUserId, String authSecretKey) { Log.d("AugmentOsService", "Setting auth secret key: " + authSecretKey); - if (authHandler.getCoreToken() == null ||!authHandler.getCoreToken().equals(authSecretKey)) { + if (authHandler.getCoreToken() == null || !authHandler.getCoreToken().equals(authSecretKey)) { authHandler.setAuthSecretKey(authSecretKey); ServerComms.getInstance().disconnectWebSocket(); ServerComms.getInstance().connectWebSocket(authHandler.getCoreToken()); @@ -2646,7 +2666,7 @@ public void updateAppSettings(String targetApp, JSONObject settings) { while (keys.hasNext()) { String key = keys.next(); Object value = settings.get(key); - if(!app.updateSetting(this, key, value)) { + if (!app.updateSetting(this, key, value)) { allSuccess = false; } } @@ -2668,7 +2688,7 @@ private void cleanupAllResources() { Log.d(TAG, "Cleaning up all resources and connections"); // Stop all running apps - if(edgeAppSystem != null) { + if (edgeAppSystem != null) { edgeAppSystem.stopAllThirdPartyApps(); } @@ -2679,12 +2699,12 @@ private void cleanupAllResources() { } // Clean up calendar system - if(calendarSystem != null) { + if (calendarSystem != null) { calendarSystem.cleanup(); } // Clean up screen capture resources - if(screenCaptureRunnable != null) { + if (screenCaptureRunnable != null) { screenCaptureHandler.removeCallbacks(screenCaptureRunnable); } if (virtualDisplay != null) { @@ -2732,7 +2752,7 @@ private void cleanupAllResources() { blePeripheral.destroy(); } - if(edgeAppSystem != null) { + if (edgeAppSystem != null) { edgeAppSystem.destroy(); } } @@ -2781,16 +2801,17 @@ public void onAppStarted(String packageName) { // Check if glasses are disconnected but there is a saved pair, initiate connection if (smartGlassesManager != null && - smartGlassesManager.getSmartGlassesConnectState() == SmartGlassesConnectionState.DISCONNECTED) { + smartGlassesManager.getSmartGlassesConnectState() == SmartGlassesConnectionState.DISCONNECTED) { String preferredWearable = SmartGlassesManager.getPreferredWearable(this); + final String preferredWearableAddress = SmartGlassesManager.getPreferredWearableAddress(this); Log.d(TAG, "Found preferred wearable: " + preferredWearable); if (preferredWearable != null && !preferredWearable.isEmpty()) { SmartGlassesDevice preferredDevice = SmartGlassesManager.getSmartGlassesDeviceFromModelName(preferredWearable); if (preferredDevice != null) { Log.d(TAG, "Auto-connecting to glasses due to app start: " + preferredWearable); - + preferredDevice.setDeviceAddress(preferredWearable); // Always run on main thread to avoid threading issues new Handler(Looper.getMainLooper()).post(() -> { // Use executeOnceSmartGlassesManagerReady to ensure proper connection flow @@ -2816,7 +2837,7 @@ public void onAppStarted(String packageName) { Log.d(TAG, "SmartGlassesManager is null, cannot check connection state for auto-reconnection"); } else { Log.d(TAG, "Glasses already connected or connecting, skipping auto-reconnection. Current state: " + - smartGlassesManager.getSmartGlassesConnectState()); + smartGlassesManager.getSmartGlassesConnectState()); } // Send notification to manager app about app start (existing functionality) @@ -2966,8 +2987,8 @@ public void onAudioStopRequest(JSONObject audioStopParams) { @org.greenrobot.eventbus.Subscribe(threadMode = org.greenrobot.eventbus.ThreadMode.MAIN) public void onDownloadProgressEvent(DownloadProgressEvent event) { Log.d(TAG, "๐ŸŽฏ $#$# EVENT RECEIVED! Download progress: " + event.getStatus() + - " - " + event.getProgress() + "% (" + - event.getBytesDownloaded() + "/" + event.getTotalBytes() + " bytes)"); + " - " + event.getProgress() + "% (" + + event.getBytesDownloaded() + "/" + event.getTotalBytes() + " bytes)"); // Store download progress information downloadStatus = event.getStatus(); @@ -3006,7 +3027,7 @@ public void onDownloadProgressEvent(DownloadProgressEvent event) { @org.greenrobot.eventbus.Subscribe(threadMode = org.greenrobot.eventbus.ThreadMode.MAIN) public void onInstallationProgressEvent(InstallationProgressEvent event) { Log.d(TAG, "๐Ÿ”ง Received installation progress: " + event.getStatus() + - " - APK: " + event.getApkPath()); + " - APK: " + event.getApkPath()); // Store installation progress information installationStatus = event.getStatus(); @@ -3098,6 +3119,19 @@ public void simulateButtonPress(String buttonId, String pressType) { EventBus.getDefault().post(new ButtonPressEvent(deviceModel, buttonId, pressType)); } + @Override + public void onDisplayTextNotified(String text, int size, int x, int y) { + Log.d(TAG, "onDisplayTextNotified text: " + text + " size:" + size + " x:" + x + " y:" + y); + + EventBus.getDefault().post(new DisplayTextEvent(text, size, x, y)); + } + + @Override + public void onDisplayImageNotified(String localImageName) { + Log.d(TAG, "onDisplayImageNotified localImageName: " + localImageName); + EventBus.getDefault().post(new DisplayImageEvent(localImageName)); + } + @Override public void startBufferRecording() { Log.d(TAG, "Starting buffer recording on smart glasses"); diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/audio/PCMAudioPlayer.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/audio/PCMAudioPlayer.java new file mode 100644 index 0000000000..7ca3f64f1b --- /dev/null +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/audio/PCMAudioPlayer.java @@ -0,0 +1,379 @@ +package com.augmentos.augmentos_core.audio; + +import android.media.AudioFormat; +import android.media.AudioManager; +import android.media.AudioTrack; +import android.util.Log; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * PCM Audio Player for playing raw PCM audio data + * Supports different sample rates, bit depths, and channel configurations + */ +public class PCMAudioPlayer { + private static final String TAG = "PCMAudioPlayer"; + + // Audio configuration + private int sampleRate; + private int channelConfig; + private int audioFormat; + private int bufferSize; + + // AudioTrack instance + private AudioTrack audioTrack; + + // Playback state + private AtomicBoolean isPlaying = new AtomicBoolean(false); + private AtomicBoolean isInitialized = new AtomicBoolean(false); + + // Thread for playback + private Thread playbackThread; + + /** + * Constructor with default audio configuration + */ + public PCMAudioPlayer() { + this(16000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); + } + + /** + * Constructor with custom audio configuration + * + * @param sampleRate Sample rate in Hz (e.g., 16000, 44100, 48000) + * @param channelConfig Channel configuration (MONO or STEREO) + * @param audioFormat Audio format (16-bit, 8-bit, float, etc.) + */ + public PCMAudioPlayer(int sampleRate, int channelConfig, int audioFormat) { + this.sampleRate = sampleRate; + this.channelConfig = channelConfig; + this.audioFormat = audioFormat; + + // Calculate buffer size + this.bufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat); + if (this.bufferSize == AudioTrack.ERROR_BAD_VALUE) { + Log.e(TAG, "Invalid audio configuration"); + return; + } + + // Use a larger buffer for better performance + this.bufferSize = Math.max(this.bufferSize * 2, 8192); + + initializeAudioTrack(); + } + + /** + * Initialize the AudioTrack + */ + private void initializeAudioTrack() { + try { + audioTrack = new AudioTrack.Builder() + .setAudioAttributes(new android.media.AudioAttributes.Builder() + .setUsage(android.media.AudioAttributes.USAGE_MEDIA) + .setContentType(android.media.AudioAttributes.CONTENT_TYPE_SPEECH) + .build()) + .setAudioFormat(new android.media.AudioFormat.Builder() + .setEncoding(audioFormat) + .setSampleRate(sampleRate) + .setChannelMask(channelConfig) + .build()) + .setBufferSizeInBytes(bufferSize) + .setTransferMode(AudioTrack.MODE_STREAM) + .build(); + + if (audioTrack.getState() == AudioTrack.STATE_INITIALIZED) { + isInitialized.set(true); + Log.d(TAG, "AudioTrack initialized successfully"); + } else { + Log.e(TAG, "Failed to initialize AudioTrack"); + } + } catch (Exception e) { + Log.e(TAG, "Error initializing AudioTrack", e); + } + } + + /** + * Play PCM audio data + * + * @param pcmData Raw PCM audio data as byte array + * @return true if playback started successfully + */ + public boolean playPCMData(byte[] pcmData) { + if (!isInitialized.get() || audioTrack == null) { + Log.e(TAG, "AudioTrack not initialized"); + return false; + } + + if (isPlaying.get()) { + Log.w(TAG, "Already playing audio"); + return false; + } + + isPlaying.set(true); + + playbackThread = new Thread(() -> { + try { + audioTrack.play(); + + // Write the PCM data + int written = audioTrack.write(pcmData, 0, pcmData.length); + + if (written < 0) { + Log.e(TAG, "Error writing audio data: " + written); + } else { + Log.d(TAG, "Successfully wrote " + written + " bytes of audio data"); + } + + // Wait for playback to complete + audioTrack.stop(); + + } catch (Exception e) { + Log.e(TAG, "Error during playback", e); + } finally { + isPlaying.set(false); + } + }); + + playbackThread.start(); + return true; + } + + /** + * Play PCM audio data with streaming (for real-time audio) + * + * @param pcmData Raw PCM audio data as byte array + * @return true if data was written successfully + */ + public boolean streamPCMData(byte[] pcmData) { + if (!isInitialized.get() || audioTrack == null) { + Log.e(TAG, "AudioTrack not initialized"); + return false; + } + + if (!isPlaying.get()) { + // Start playback if not already playing + audioTrack.play(); + isPlaying.set(true); + } + + try { + int written = audioTrack.write(pcmData, 0, pcmData.length); + + if (written < 0) { + Log.e(TAG, "Error writing audio data: " + written); + return false; + } + + return true; + } catch (Exception e) { + Log.e(TAG, "Error streaming audio data", e); + return false; + } + } + + /** + * Play PCM audio data from short array (16-bit samples) + * + * @param pcmData PCM audio data as short array + * @return true if playback started successfully + */ + public boolean playPCMData(short[] pcmData) { + if (!isInitialized.get() || audioTrack == null) { + Log.e(TAG, "AudioTrack not initialized"); + return false; + } + + if (isPlaying.get()) { + Log.w(TAG, "Already playing audio"); + return false; + } + + isPlaying.set(true); + + playbackThread = new Thread(() -> { + try { + audioTrack.play(); + + // Write the PCM data + int written = audioTrack.write(pcmData, 0, pcmData.length); + + if (written < 0) { + Log.e(TAG, "Error writing audio data: " + written); + } else { + Log.d(TAG, "Successfully wrote " + written + " samples of audio data"); + } + + // Wait for playback to complete + audioTrack.stop(); + + } catch (Exception e) { + Log.e(TAG, "Error during playback", e); + } finally { + isPlaying.set(false); + } + }); + + playbackThread.start(); + return true; + } + + /** + * Stream PCM audio data from short array (16-bit samples) + * + * @param pcmData PCM audio data as short array + * @return true if data was written successfully + */ + public boolean streamPCMData(short[] pcmData) { + if (!isInitialized.get() || audioTrack == null) { + Log.e(TAG, "AudioTrack not initialized"); + return false; + } + + if (!isPlaying.get()) { + // Start playback if not already playing + audioTrack.play(); + isPlaying.set(true); + } + + try { + int written = audioTrack.write(pcmData, 0, pcmData.length); + + if (written < 0) { + Log.e(TAG, "Error writing audio data: " + written); + return false; + } + + return true; + } catch (Exception e) { + Log.e(TAG, "Error streaming audio data", e); + return false; + } + } + + /** + * Convert byte array to short array (for 16-bit PCM) + * + * @param byteData Raw PCM byte data + * @return Short array representation + */ + public static short[] bytesToShorts(byte[] byteData) { + short[] shortData = new short[byteData.length / 2]; + ByteBuffer.wrap(byteData).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(shortData); + return shortData; + } + + /** + * Convert short array to byte array (for 16-bit PCM) + * + * @param shortData PCM short data + * @return Byte array representation + */ + public static byte[] shortsToBytes(short[] shortData) { + byte[] byteData = new byte[shortData.length * 2]; + ByteBuffer.wrap(byteData).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().put(shortData); + return byteData; + } + + /** + * Stop playback + */ + public void stop() { + if (audioTrack != null && isPlaying.get()) { + audioTrack.stop(); + isPlaying.set(false); + } + + if (playbackThread != null && playbackThread.isAlive()) { + playbackThread.interrupt(); + } + } + + /** + * Pause playback + */ + public void pause() { + if (audioTrack != null && isPlaying.get()) { + audioTrack.pause(); + } + } + + /** + * Resume playback + */ + public void resume() { + if (audioTrack != null && isInitialized.get()) { + audioTrack.play(); + isPlaying.set(true); + } + } + + /** + * Set volume (0.0f to 1.0f) + * + * @param volume Volume level + */ + public void setVolume(float volume) { + if (audioTrack != null) { + audioTrack.setVolume(volume); + } + } + + /** + * Check if currently playing + * + * @return true if playing + */ + public boolean isPlaying() { + return isPlaying.get(); + } + + /** + * Check if initialized + * + * @return true if initialized + */ + public boolean isInitialized() { + return isInitialized.get(); + } + + /** + * Get current playback position in frames + * + * @return Playback position + */ + public int getPlaybackHeadPosition() { + if (audioTrack != null) { + return audioTrack.getPlaybackHeadPosition(); + } + return 0; + } + + /** + * Get audio session ID + * + * @return Audio session ID + */ + public int getAudioSessionId() { + if (audioTrack != null) { + return audioTrack.getAudioSessionId(); + } + return AudioManager.ERROR; + } + + /** + * Release resources + */ + public void release() { + stop(); + + if (audioTrack != null) { + audioTrack.release(); + audioTrack = null; + } + + isInitialized.set(false); + isPlaying.set(false); + } +} \ No newline at end of file diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentOsActionsCallback.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentOsActionsCallback.java index 9717b3f9c5..a98463c046 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentOsActionsCallback.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentOsActionsCallback.java @@ -7,7 +7,9 @@ public interface AugmentOsActionsCallback { void requestPing(); void requestStatus(); void searchForCompatibleDeviceNames(String modelName); - void connectToWearable(String modelName, String deviceName); + + void connectToWearable(String modelName, String deviceName, String deviceAddress); + void disconnectWearable(String wearableId); void forgetSmartGlasses(); void startApp(String packageName); @@ -45,6 +47,11 @@ public interface AugmentOsActionsCallback { void onAudioStopRequest(JSONObject audioStopParams); void simulateHeadPosition(String position); void simulateButtonPress(String buttonId, String pressType); + + void onDisplayTextNotified(String text, int size, int x, int y); + + void onDisplayImageNotified(String localImageName); + void handleNotificationDismissal(JSONObject dismissalData); void startBufferRecording(); void stopBufferRecording(); diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentOsManagerMessageParser.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentOsManagerMessageParser.java index a1098ff0d5..2ab3539def 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentOsManagerMessageParser.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentOsManagerMessageParser.java @@ -15,251 +15,269 @@ public AugmentOsManagerMessageParser(AugmentOsActionsCallback callback) { } public void parseMessage(String json) throws JSONException { - JSONObject commandObject = new JSONObject(json); - String command = commandObject.getString("command"); - - switch (command) { - case "ping": - callback.requestPing(); - break; - - case "request_status": - callback.requestStatus(); - break; - - case "search_for_compatible_device_names": - String modelNameToFind = commandObject.getJSONObject("params").getString("model_name"); - callback.searchForCompatibleDeviceNames(modelNameToFind); - break; - - case "connect_wearable": - Log.d(TAG,"GOT A COMMAND TO CONNECT TO WEARABLE"); - String modelName = commandObject.getJSONObject("params").getString("model_name"); - String deviceName = commandObject.getJSONObject("params").getString("device_name"); - Log.d(TAG,"Connect to model: " + modelName + ", device address: " + deviceName); - callback.connectToWearable(modelName, deviceName); - break; - - case "forget_smart_glasses": - callback.forgetSmartGlasses(); - break; - - case "disconnect_wearable": - // String disconnectId = commandObject.getJSONObject("params").getString("target"); - String disconnectId = "notImplemented"; - callback.disconnectWearable(disconnectId); - break; - - case "start_app": - String packageName = commandObject.getJSONObject("params").getString("target"); - callback.startApp(packageName); - break; - - case "stop_app": - String stopPackage = commandObject.getJSONObject("params").getString("target"); - callback.stopApp(stopPackage); - break; - - case "enable_sensing": - boolean sensingEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); - callback.setSensingEnabled(sensingEnabled); - break; - - case "force_core_onboard_mic": - boolean toForceCoreOnboardMic = commandObject.getJSONObject("params").getBoolean("enabled"); - callback.setForceCoreOnboardMic(toForceCoreOnboardMic); - break; - - case "enable_contextual_dashboard": - boolean dashboardEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); - callback.setContextualDashboardEnabled(dashboardEnabled); - break; - - case "set_metric_system_enabled": - // Log.d(TAG, "GOT A COMMAND TO SET METRIC SYSTEM ENABLED"); - boolean metricSystemEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); - // Log.d(TAG, "Metric system enabled: " + metricSystemEnabled); - callback.setMetricSystemEnabled(metricSystemEnabled); - break; - - case "bypass_vad_for_debugging": - boolean bypassVadForDebugging = commandObject.getJSONObject("params").getBoolean("enabled"); - callback.setBypassVadForDebugging(bypassVadForDebugging); - break; - - case "bypass_audio_encoding_for_debugging": - boolean bypassAudioEncodingForDebugging = commandObject.getJSONObject("params").getBoolean("enabled"); - callback.setBypassAudioEncodingForDebugging(bypassAudioEncodingForDebugging); - break; - - case "enforce_local_transcription": - boolean enforceLocalTranscription = commandObject.getJSONObject("params").getBoolean("enabled"); - callback.setEnforceLocalTranscription(enforceLocalTranscription); - break; - - case "enable_always_on_status_bar": - boolean alwaysOnEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); - callback.setAlwaysOnStatusBarEnabled(alwaysOnEnabled); - break; - - case "enable_power_saving_mode": - boolean powerSavingEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); - callback.setPowerSavingMode(powerSavingEnabled); - break; - - case "install_app_from_repository": // TODO: Implement repository handling + JSONObject commandObject = new JSONObject(json); + String command = commandObject.getString("command"); + + switch (command) { + case "ping": + callback.requestPing(); + break; + + case "request_status": + callback.requestStatus(); + break; + + case "search_for_compatible_device_names": + String modelNameToFind = commandObject.getJSONObject("params").getString("model_name"); + callback.searchForCompatibleDeviceNames(modelNameToFind); + break; + + case "connect_wearable": + Log.d(TAG, "GOT A COMMAND TO CONNECT TO WEARABLE"); + JSONObject params = commandObject.getJSONObject("params"); + String modelName = params.getString("model_name"); + String deviceName = params.getString("device_name"); + String deviceAddress = null; + if (params.has("device_address")) { + deviceAddress = params.getString("device_address"); + } + Log.d(TAG, "Connect to model: " + modelName + ", device address: " + deviceName + ",address " + deviceAddress); + callback.connectToWearable(modelName, deviceName, deviceAddress); + break; + + case "forget_smart_glasses": + callback.forgetSmartGlasses(); + break; + + case "disconnect_wearable": + // String disconnectId = commandObject.getJSONObject("params").getString("target"); + String disconnectId = "notImplemented"; + callback.disconnectWearable(disconnectId); + break; + + case "start_app": + String packageName = commandObject.getJSONObject("params").getString("target"); + callback.startApp(packageName); + break; + + case "stop_app": + String stopPackage = commandObject.getJSONObject("params").getString("target"); + callback.stopApp(stopPackage); + break; + + case "enable_sensing": + boolean sensingEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); + callback.setSensingEnabled(sensingEnabled); + break; + + case "force_core_onboard_mic": + boolean toForceCoreOnboardMic = commandObject.getJSONObject("params").getBoolean("enabled"); + callback.setForceCoreOnboardMic(toForceCoreOnboardMic); + break; + + case "enable_contextual_dashboard": + boolean dashboardEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); + callback.setContextualDashboardEnabled(dashboardEnabled); + break; + + case "set_metric_system_enabled": + // Log.d(TAG, "GOT A COMMAND TO SET METRIC SYSTEM ENABLED"); + boolean metricSystemEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); + // Log.d(TAG, "Metric system enabled: " + metricSystemEnabled); + callback.setMetricSystemEnabled(metricSystemEnabled); + break; + + case "bypass_vad_for_debugging": + boolean bypassVadForDebugging = commandObject.getJSONObject("params").getBoolean("enabled"); + callback.setBypassVadForDebugging(bypassVadForDebugging); + break; + + case "bypass_audio_encoding_for_debugging": + boolean bypassAudioEncodingForDebugging = commandObject.getJSONObject("params").getBoolean("enabled"); + callback.setBypassAudioEncodingForDebugging(bypassAudioEncodingForDebugging); + break; + + case "enforce_local_transcription": + boolean enforceLocalTranscription = commandObject.getJSONObject("params").getBoolean("enabled"); + callback.setEnforceLocalTranscription(enforceLocalTranscription); + break; + + case "enable_always_on_status_bar": + boolean alwaysOnEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); + callback.setAlwaysOnStatusBarEnabled(alwaysOnEnabled); + break; + + case "enable_power_saving_mode": + boolean powerSavingEnabled = commandObject.getJSONObject("params").getBoolean("enabled"); + callback.setPowerSavingMode(powerSavingEnabled); + break; + + case "install_app_from_repository": // TODO: Implement repository handling // String repo = commandObject.getJSONObject("params").getString("repository"); - String packageNameToInstall = commandObject.getJSONObject("params").getString("target"); - callback.installAppFromRepository("repo", packageNameToInstall); - break; - - case "uninstall_app": - String uninstallPackage = commandObject.getJSONObject("params").getString("target"); - callback.uninstallApp(uninstallPackage); - break; - - case "phone_notification": - JSONObject notificationData = commandObject.getJSONObject("params"); - Log.d(TAG, notificationData.toString()); - callback.handleNotificationData(notificationData); - break; - - case "phone_notification_dismissed": - JSONObject dismissalData = commandObject.getJSONObject("params"); - Log.d(TAG, "Received notification dismissal: " + dismissalData.toString()); - callback.handleNotificationDismissal(dismissalData); - break; - - case "set_auth_secret_key": - String userId = commandObject.getJSONObject("params").getString("userId"); - String authKey = commandObject.getJSONObject("params").getString("authSecretKey"); - callback.setAuthSecretKey(userId, authKey); - break; - - case "set_server_url": - String url = commandObject.getJSONObject("params").getString("url"); - callback.setServerUrl(url); - break; - - case "verify_auth_secret_key": - callback.verifyAuthSecretKey(); - break; - - case "delete_auth_secret_key": - callback.deleteAuthSecretKey(); - break; - - case "update_app_settings": - String targetApp = commandObject.getJSONObject("params").getString("target"); - JSONObject settings = commandObject.getJSONObject("params").getJSONObject("settings"); - callback.updateAppSettings(targetApp, settings); - break; - case "request_app_info": - String packageNameToGetDetails = commandObject.getJSONObject("params").getString("target"); - callback.requestAppInfo(packageNameToGetDetails); - break; - - case "update_glasses_brightness": - int brightnessLevel = commandObject.getJSONObject("params").getInt("brightness"); - boolean isAutoBrightness = commandObject.getJSONObject("params").getBoolean("autoBrightness"); - Log.d(TAG, "Brightness level: " + brightnessLevel + ", autoBrightness: " + isAutoBrightness); - if (isAutoBrightness) { - callback.updateGlassesAutoBrightness(isAutoBrightness); - } - else { - callback.updateGlassesBrightness(brightnessLevel); - } - break; - - case "update_glasses_head_up_angle": - int headUpAngle = commandObject.getJSONObject("params").getInt("headUpAngle"); - callback.updateGlassesHeadUpAngle(headUpAngle); - break; - - case "update_glasses_height": - int height = commandObject.getJSONObject("params").getInt("height"); - callback.updateGlassesHeight(height); - break; - - case "update_glasses_depth": - int depth = commandObject.getJSONObject("params").getInt("depth"); - callback.updateGlassesDepth(depth); - break; - - case "toggle_updating_screen": - boolean updatingScreen = commandObject.getJSONObject("params").getBoolean("enabled"); - callback.setUpdatingScreen(updatingScreen); - break; - - - case "send_wifi_credentials": - String ssid = commandObject.getJSONObject("params").getString("ssid"); - String password = commandObject.getJSONObject("params").getString("password"); - // Log.d(TAG, "@#@ GOT A COMMAND TO SEND WIFI CREDENTIALS, SSID: " + ssid + ", PASSWORD: " + password); - callback.setGlassesWifiCredentials(ssid, password); - break; - - case "request_wifi_scan": - callback.requestWifiScan(); - break; - - case "set_preferred_mic": - String mic = commandObject.getJSONObject("params").getString("mic"); - callback.setPreferredMic(mic); - break; - case "set_button_mode": - String mode = commandObject.getJSONObject("params").getString("mode"); - callback.setButtonMode(mode); - break; - - case "audio_play_response": - JSONObject audioResponse = commandObject.getJSONObject("params"); - callback.onAudioPlayResponse(audioResponse); - break; - - case "audio_stop_request": - JSONObject audioStopParams = commandObject.getJSONObject("params"); - callback.onAudioStopRequest(audioStopParams); - break; - - case "simulate_head_position": - String position = commandObject.getJSONObject("params").getString("position"); - callback.simulateHeadPosition(position); - break; - - case "simulate_button_press": - String buttonId = commandObject.getJSONObject("params").getString("buttonId"); - String pressType = commandObject.getJSONObject("params").getString("pressType"); - callback.simulateButtonPress(buttonId, pressType); - break; - - case "start_buffer_recording": - callback.startBufferRecording(); - break; - - case "stop_buffer_recording": - callback.stopBufferRecording(); - break; - - case "save_buffer_video": - String bufferRequestId = commandObject.getJSONObject("params").getString("request_id"); - int durationSeconds = commandObject.getJSONObject("params").getInt("duration_seconds"); - callback.saveBufferVideo(bufferRequestId, durationSeconds); - break; - - case "start_video_recording": - String videoRequestId = commandObject.getJSONObject("params").getString("request_id"); - boolean save = commandObject.getJSONObject("params").optBoolean("save", true); - callback.startVideoRecording(videoRequestId, save); - break; - - case "stop_video_recording": - String stopRequestId = commandObject.getJSONObject("params").getString("request_id"); - callback.stopVideoRecording(stopRequestId); - break; - - default: - Log.w(TAG, "Unknown command: " + command); + String packageNameToInstall = commandObject.getJSONObject("params").getString("target"); + callback.installAppFromRepository("repo", packageNameToInstall); + break; + + case "uninstall_app": + String uninstallPackage = commandObject.getJSONObject("params").getString("target"); + callback.uninstallApp(uninstallPackage); + break; + + case "phone_notification": + JSONObject notificationData = commandObject.getJSONObject("params"); + Log.d(TAG, notificationData.toString()); + callback.handleNotificationData(notificationData); + break; + + case "phone_notification_dismissed": + JSONObject dismissalData = commandObject.getJSONObject("params"); + Log.d(TAG, "Received notification dismissal: " + dismissalData.toString()); + callback.handleNotificationDismissal(dismissalData); + break; + + case "set_auth_secret_key": + String userId = commandObject.getJSONObject("params").getString("userId"); + String authKey = commandObject.getJSONObject("params").getString("authSecretKey"); + callback.setAuthSecretKey(userId, authKey); + break; + + case "set_server_url": + String url = commandObject.getJSONObject("params").getString("url"); + callback.setServerUrl(url); + break; + + case "verify_auth_secret_key": + callback.verifyAuthSecretKey(); + break; + + case "delete_auth_secret_key": + callback.deleteAuthSecretKey(); + break; + + case "update_app_settings": + String targetApp = commandObject.getJSONObject("params").getString("target"); + JSONObject settings = commandObject.getJSONObject("params").getJSONObject("settings"); + callback.updateAppSettings(targetApp, settings); + break; + case "request_app_info": + String packageNameToGetDetails = commandObject.getJSONObject("params").getString("target"); + callback.requestAppInfo(packageNameToGetDetails); + break; + + case "update_glasses_brightness": + int brightnessLevel = commandObject.getJSONObject("params").getInt("brightness"); + boolean isAutoBrightness = commandObject.getJSONObject("params").getBoolean("autoBrightness"); + Log.d(TAG, "Brightness level: " + brightnessLevel + ", autoBrightness: " + isAutoBrightness); + if (isAutoBrightness) { + callback.updateGlassesAutoBrightness(isAutoBrightness); + } else { + callback.updateGlassesBrightness(brightnessLevel); + } + break; + + case "update_glasses_head_up_angle": + int headUpAngle = commandObject.getJSONObject("params").getInt("headUpAngle"); + callback.updateGlassesHeadUpAngle(headUpAngle); + break; + + case "update_glasses_height": + int height = commandObject.getJSONObject("params").getInt("height"); + callback.updateGlassesHeight(height); + break; + + case "update_glasses_depth": + int depth = commandObject.getJSONObject("params").getInt("depth"); + callback.updateGlassesDepth(depth); + break; + + case "toggle_updating_screen": + boolean updatingScreen = commandObject.getJSONObject("params").getBoolean("enabled"); + callback.setUpdatingScreen(updatingScreen); + break; + + + case "send_wifi_credentials": + String ssid = commandObject.getJSONObject("params").getString("ssid"); + String password = commandObject.getJSONObject("params").getString("password"); + // Log.d(TAG, "@#@ GOT A COMMAND TO SEND WIFI CREDENTIALS, SSID: " + ssid + ", PASSWORD: " + password); + callback.setGlassesWifiCredentials(ssid, password); + break; + + case "request_wifi_scan": + callback.requestWifiScan(); + break; + + case "set_preferred_mic": + String mic = commandObject.getJSONObject("params").getString("mic"); + callback.setPreferredMic(mic); + break; + case "set_button_mode": + String mode = commandObject.getJSONObject("params").getString("mode"); + callback.setButtonMode(mode); + break; + + case "audio_play_response": + JSONObject audioResponse = commandObject.getJSONObject("params"); + callback.onAudioPlayResponse(audioResponse); + break; + + case "audio_stop_request": + JSONObject audioStopParams = commandObject.getJSONObject("params"); + callback.onAudioStopRequest(audioStopParams); + break; + + case "simulate_head_position": + String position = commandObject.getJSONObject("params").getString("position"); + callback.simulateHeadPosition(position); + break; + + case "simulate_button_press": + String buttonId = commandObject.getJSONObject("params").getString("buttonId"); + String pressType = commandObject.getJSONObject("params").getString("pressType"); + callback.simulateButtonPress(buttonId, pressType); + break; + + case "start_buffer_recording": + callback.startBufferRecording(); + break; + + case "stop_buffer_recording": + callback.stopBufferRecording(); + break; + + case "save_buffer_video": + String bufferRequestId = commandObject.getJSONObject("params").getString("request_id"); + int durationSeconds = commandObject.getJSONObject("params").getInt("duration_seconds"); + callback.saveBufferVideo(bufferRequestId, durationSeconds); + break; + + case "start_video_recording": + String videoRequestId = commandObject.getJSONObject("params").getString("request_id"); + boolean save = commandObject.getJSONObject("params").optBoolean("save", true); + callback.startVideoRecording(videoRequestId, save); + break; + + case "stop_video_recording": + String stopRequestId = commandObject.getJSONObject("params").getString("request_id"); + callback.stopVideoRecording(stopRequestId); + break; + case "display_text": { + final JSONObject paramsObject = commandObject.getJSONObject("params"); + String text = paramsObject.getString("text"); + int x = paramsObject.getInt("x"); + int y = paramsObject.getInt("y"); + int size = paramsObject.getInt("size"); + callback.onDisplayTextNotified(text, size, x, y); + } + break; + case "display_image": { + final JSONObject paramsObject = commandObject.getJSONObject("params"); + String localImageName = paramsObject.getString("localImageName"); + callback.onDisplayImageNotified(localImageName); } + break; + default: + Log.w(TAG, "Unknown command: " + command); + } } } diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentosBlePeripheral.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentosBlePeripheral.java index a24850845c..413a0ec8ac 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentosBlePeripheral.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/comms/AugmentosBlePeripheral.java @@ -24,6 +24,9 @@ import com.augmentos.augmentoslib.events.CoreToManagerOutputEvent; import com.augmentos.augmentoslib.events.ManagerToCoreRequestEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BleCommandReceiver; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BleCommandSender; + import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.json.JSONException; @@ -496,13 +499,14 @@ public void sendAudioStopRequest(JSONObject audioStopParams) { sendDataToAugmentOsManager(message.toString()); } - public void sendGlassesBluetoothDiscoverResultToManager(String modelName, String deviceName) { - Log.d(TAG, "sendGlassesSearchResultsToManager"); + public void sendGlassesBluetoothDiscoverResultToManager(String modelName, String deviceName, String deviceAddress) { + Log.d(TAG, "sendGlassesSearchResultsToManager modelName: " + modelName + " deviceName: " + deviceName + " deviceAddress: " + deviceAddress); JSONObject data = new JSONObject(); JSONObject messageObj = new JSONObject(); - try{ + try { messageObj.put("model_name", modelName); messageObj.put("device_name", deviceName); + messageObj.put("device_address", deviceAddress); data.put("compatible_glasses_search_result", messageObj); } catch (JSONException e) { throw new RuntimeException(e); @@ -536,6 +540,34 @@ public void sendAppIsInstalledEventToManager(String packageName) { sendDataToAugmentOsManager(data.toString()); } + public void sendBleCommandReceiverEventToManager(BleCommandReceiver event) { + Log.d(TAG, "sendBleCommandReceiverEventToManager"); + JSONObject data = new JSONObject(); + JSONObject messageObj = new JSONObject(); + try { + messageObj.put("command", event.command); + messageObj.put("commandText", event.commandText); + data.put("receive_command_from_ble", messageObj); + } catch (JSONException e) { + throw new RuntimeException(e); + } + sendDataToAugmentOsManager(data.toString()); + } + + public void sendBleCommandSenderEventToManager(BleCommandSender event) { + Log.d(TAG, "sendBleCommandSenderEventToManager"); + JSONObject data = new JSONObject(); + JSONObject messageObj = new JSONObject(); + try { + messageObj.put("command", event.command); + messageObj.put("commandText", event.commandText); + data.put("send_command_to_ble", messageObj); + } catch (JSONException e) { + throw new RuntimeException(e); + } + sendDataToAugmentOsManager(data.toString()); + } + @SuppressLint("MissingPermission") public void sendDataToAugmentOsManager(String jsonData) { if(isSimulatedPuck){ diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/SmartGlassesManager.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/SmartGlassesManager.java index 4271a15ce0..8bf183e12c 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/SmartGlassesManager.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/SmartGlassesManager.java @@ -35,6 +35,7 @@ import com.augmentos.augmentos_core.smarterglassesmanager.speechrecognition.SpeechRecSwitchSystem; import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.AudioWearable; import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.EvenRealitiesG1; +import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.MentraNexGlasses; import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.InmoAirOne; import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.MentraMach1; import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.MentraLive; @@ -361,7 +362,7 @@ public void connectToSmartGlasses(SmartGlassesDevice device) { // Connect directly instead of using a handler Log.d(TAG, "CONNECTING TO SMART GLASSES"); - smartGlassesRepresentative.connectToSmartGlasses(); + smartGlassesRepresentative.connectToSmartGlasses(device); // BATTERY OPTIMIZATION: Explicitly register callback with the communicator // This ensures it's immediately available when audio events start coming in @@ -443,6 +444,7 @@ public void sendUiUpdate() { // Save preferred wearable if connected if (connectionState == SmartGlassesConnectionState.CONNECTED) { savePreferredWearable(this, smartGlassesRepresentative.smartGlassesDevice.deviceModelName); + savePreferredWearableAddress(this, smartGlassesRepresentative.smartGlassesDevice.deviceAddress); setFontSize(SmartGlassesFontSize.MEDIUM); } @@ -474,6 +476,18 @@ public static String getPreferredWearable(Context context) { .getString(context.getResources().getString(R.string.PREFERRED_WEARABLE), ""); } + public static void savePreferredWearableAddress(Context context, String deviceAddress) { + PreferenceManager.getDefaultSharedPreferences(context) + .edit() + .putString(context.getResources().getString(R.string.PREFERRED_WEARABLE_ADDRESS), deviceAddress) + .apply(); + } + + public static String getPreferredWearableAddress(Context context) { + return PreferenceManager.getDefaultSharedPreferences(context) + .getString(context.getResources().getString(R.string.PREFERRED_WEARABLE_ADDRESS), ""); + } + public static ASR_FRAMEWORKS getChosenAsrFramework(Context context) { String asrString = PreferenceManager.getDefaultSharedPreferences(context) .getString(context.getResources().getString(R.string.SHARED_PREF_ASR_KEY), ""); @@ -999,6 +1013,7 @@ public static SmartGlassesDevice getSmartGlassesDeviceFromModelName(String model new MentraMach1(), new MentraLive(), new EvenRealitiesG1(), + new MentraNexGlasses(), new VuzixShield(), new InmoAirOne(), new TCLRayNeoXTwo(), diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/ble/BleSender.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/ble/BleSender.java new file mode 100644 index 0000000000..bc851694ed --- /dev/null +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/ble/BleSender.java @@ -0,0 +1,135 @@ +import java.util.Queue; +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +public abstract class BleSender { + private static final int SEND_INTERVAL_DEFAULT=15;// nomal automatic send interval + private int sendInterval=SEND_INTERVAL_DEFAULT; + private boolean automaticSending=true; + + private final BlockingQueue dataQueue = new LinkedBlockingQueue<>(); + private final ExecutorService executor; + private final AtomicBoolean isSending = new AtomicBoolean(false); + private final Lock bluetoothLock = new ReentrantLock(); + + + private BleSender(int poolSize,boolean automaticSending,int sendInterval) { + this.executor = Executors.newFixedThreadPool(poolSize); + this.automaticSending=automaticSending; + this.sendInterval= sendInterval; + } + + public BleSender(boolean automaticSending) { + this(1,automaticSending,SEND_INTERVAL_DEFAULT); + } + + public BleSender(boolean automaticSending,int sendInterval) { + this(1,automaticSending,sendInterval); + } + + // should implement this send method + public abstract void sendViaBluetooth(byte[] data) throws Exception ; + + /** + * release + */ + public void shutdown() { + try { + dataQueue.clear(); + executor.shutdown(); + if (!executor.awaitTermination(5, TimeUnit.SECONDS)) { + executor.shutdownNow(); + } + } catch (InterruptedException e) { + executor.shutdownNow(); + Thread.currentThread().interrupt(); + } + } + + public void clearQueue(){ + dataQueue.clear(); + isSending.set(false); + } + + + public void sendData(byte[] data) { + try { + dataQueue.put(data); + startSendingIfNeeded(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + public void unloadCurrentAndSendNextManual(){ + if(automaticSending){ + return; + } + if (isSending.get()){ + isSending.set(false); + } + startSendingIfNeeded(); + } + private void startSendingIfNeeded() { + if (isSending.compareAndSet(false, true)) { + if(automaticSending){ + executor.submit(this::processQueueAuto); + }else{ + executor.submit(this::processManual); + } + } + } + + /** + * handle sending auto by queue + */ + private void processQueueAuto() { + try { + while (!dataQueue.isEmpty()) { + byte[] data = dataQueue.poll(); + if (data != null) { + sendDataSafely(data); + Thread.sleep(sendInterval); + } + } + + } catch (Exception e) { + }finally { + isSending.set(false); + // ๆฃ€ๆŸฅๆ˜ฏๅฆๆœ‰ๆ–ฐๆ•ฐๆฎๅˆฐ่พพ + if (!dataQueue.isEmpty()) { + startSendingIfNeeded(); + } + + } + } + + /** + * handle sending manual next + */ + private void processManual() { + try { + byte[] data = dataQueue.poll(); + if (data != null) { + sendDataSafely(data); + } + } catch (Exception e) { + }finally { + } + } + + private void sendDataSafely(byte[] data) { + bluetoothLock.lock(); // ็กฎไฟ่“็‰™่ต„ๆบไบ’ๆ–ฅ่ฎฟ้—ฎ + try { + // ๅฎž้™…่“็‰™ๅ‘้€ๆ“ไฝœ๏ผˆ้œ€ๆ›ฟๆขไธบ็œŸๅฎžๅฎž็Žฐ๏ผ‰ + sendViaBluetooth(data); + } catch (Exception e) { + } finally { + bluetoothLock.unlock(); + } + } + + +} \ No newline at end of file diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/BleCommandReceiver.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/BleCommandReceiver.java new file mode 100644 index 0000000000..2c14cddfc8 --- /dev/null +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/BleCommandReceiver.java @@ -0,0 +1,14 @@ +package com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages; + +public class BleCommandReceiver { + public final String command; + public final String commandText; + public final long timestamp; + + + public BleCommandReceiver(String command, String commandText) { + this.command = command; + this.commandText = commandText; + this.timestamp = System.currentTimeMillis(); + } +} \ No newline at end of file diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/BleCommandSender.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/BleCommandSender.java new file mode 100644 index 0000000000..0e6aa6b157 --- /dev/null +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/BleCommandSender.java @@ -0,0 +1,14 @@ +package com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages; + +public class BleCommandSender { + public final String command; + public final String commandText; + public final long timestamp; + + + public BleCommandSender(String command, String commandText) { + this.command = command; + this.commandText = commandText; + this.timestamp = System.currentTimeMillis(); + } +} \ No newline at end of file diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/DisplayImageEvent.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/DisplayImageEvent.java new file mode 100644 index 0000000000..05c4ee9a54 --- /dev/null +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/DisplayImageEvent.java @@ -0,0 +1,18 @@ +package com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages; + + +public class DisplayImageEvent { + public final String localImageName; + // Timestamp + public final long timestamp; + + public DisplayImageEvent(String localImageName, long timestamp) { + this.localImageName = localImageName; + this.timestamp = timestamp; + } + + public DisplayImageEvent(String localImageName) { + this.localImageName = localImageName; + this.timestamp = System.currentTimeMillis(); + } +} \ No newline at end of file diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/DisplayTextEvent.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/DisplayTextEvent.java new file mode 100644 index 0000000000..ef44fb4302 --- /dev/null +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/DisplayTextEvent.java @@ -0,0 +1,31 @@ +package com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages; + +public class DisplayTextEvent { + //display text content + public final String text; + //position x + public final int x; + //position y + public final int y; + //display text size + public final int size; + // Timestamp + public final long timestamp; + + + public DisplayTextEvent(String text, int size, int x, int y, long timestamp) { + this.text = text; + this.size = size; + this.x = x; + this.y = y; + this.timestamp = timestamp; + } + + public DisplayTextEvent(String text, int size, int x, int y) { + this.text = text; + this.size = size; + this.x = x; + this.y = y; + this.timestamp = System.currentTimeMillis(); + } +} \ No newline at end of file diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/GlassesBluetoothSearchDiscoverEvent.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/GlassesBluetoothSearchDiscoverEvent.java index 83276b3497..a7d2c6e486 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/GlassesBluetoothSearchDiscoverEvent.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/eventbusmessages/GlassesBluetoothSearchDiscoverEvent.java @@ -3,9 +3,16 @@ public class GlassesBluetoothSearchDiscoverEvent { public String modelName; public String deviceName; + public String deviceAddress; public GlassesBluetoothSearchDiscoverEvent(String modelName, String deviceName){ this.modelName = modelName; this.deviceName = deviceName; } + + public GlassesBluetoothSearchDiscoverEvent(String modelName, String deviceName,String deviceAddress){ + this.modelName = modelName; + this.deviceName = deviceName; + this.deviceAddress = deviceAddress; + } } diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/AndroidSGC.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/AndroidSGC.java index 1066e0d055..493c0aa922 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/AndroidSGC.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/AndroidSGC.java @@ -128,7 +128,7 @@ protected void setFontSizes(){ SMALL_FONT = 0; } - public void connectToSmartGlasses(){ + public void connectToSmartGlasses(SmartGlassesDevice device){ //open the UDP socket to broadcast our IP address openSocket(); diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/AudioWearableSGC.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/AudioWearableSGC.java index 97a49f76a7..db20489559 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/AudioWearableSGC.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/AudioWearableSGC.java @@ -33,7 +33,7 @@ public AudioWearableSGC(Context context, SmartGlassesDevice smartGlassesDevice){ public void setFontSizes(){ } - public void connectToSmartGlasses(){ + public void connectToSmartGlasses(SmartGlassesDevice device){ connectionEvent(SmartGlassesConnectionState.CONNECTED); } diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/EvenRealitiesG1SGC.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/EvenRealitiesG1SGC.java index 76fea917be..ef7df28a4f 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/EvenRealitiesG1SGC.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/EvenRealitiesG1SGC.java @@ -1278,7 +1278,7 @@ private boolean removeBond(BluetoothDevice device) { } @Override - public void connectToSmartGlasses() { + public void connectToSmartGlasses(SmartGlassesDevice device) { // Register bonding receiver IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED); context.registerReceiver(bondingReceiver, filter); diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraLiveSGC.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraLiveSGC.java index 2bcf890ed0..4845e66b87 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraLiveSGC.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraLiveSGC.java @@ -2223,7 +2223,7 @@ public void findCompatibleDeviceNames() { @Override - public void connectToSmartGlasses() { + public void connectToSmartGlasses(SmartGlassesDevice smartDevice) { Log.d(TAG, "Connecting to Mentra Live glasses"); connectionEvent(SmartGlassesConnectionState.CONNECTING); 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 new file mode 100644 index 0000000000..a962bc951f --- /dev/null +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/MentraNexSGC.java @@ -0,0 +1,3237 @@ +package com.augmentos.augmentos_core.smarterglassesmanager.smartglassescommunicators; + +import android.os.Bundle; + +import com.augmentos.augmentos_core.BuildConfig; + +import mentraos.ble.MentraosBle; +import mentraos.ble.MentraosBle.DisplayText; +import mentraos.ble.MentraosBle.DisplayScrollingText; +import mentraos.ble.MentraosBle.PhoneToGlasses; +//import mentraos.ble.MentraosBle.PhoneToGlasses.PayloadCase; +import mentraos.ble.MentraosBle.GlassesToPhone; +import mentraos.ble.MentraosBle.GlassesToPhone.PayloadCase; +import mentraos.ble.MentraosBle.PingRequest; +import mentraos.ble.MentraosBle.DisplayImage; +import mentraos.ble.MentraosBle.BatteryStatus; +import mentraos.ble.MentraosBle.ChargingState; +import mentraos.ble.MentraosBle.ChargingState.State; +import mentraos.ble.MentraosBle.DeviceInfo; +import mentraos.ble.MentraosBle.HeadPosition; +import mentraos.ble.MentraosBle.HeadUpAngleResponse; +import mentraos.ble.MentraosBle.PongResponse; +import mentraos.ble.MentraosBle.VadEvent; +import mentraos.ble.MentraosBle.ImageTransferComplete; +import mentraos.ble.MentraosBle.ImageTransferComplete.Status; +import mentraos.ble.MentraosBle.ImuData; +import mentraos.ble.MentraosBle.ButtonEvent; +import mentraos.ble.MentraosBle.HeadGesture; +import mentraos.ble.MentraosBle.BatteryStateRequest; +import mentraos.ble.MentraosBle.MicStateConfig; +import mentraos.ble.MentraosBle.BrightnessConfig; +import mentraos.ble.MentraosBle.AutoBrightnessConfig; +import mentraos.ble.MentraosBle.HeadUpAngleConfig; +import mentraos.ble.MentraosBle.DisplayHeightConfig; + +import com.google.protobuf.InvalidProtocolBufferException; + +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCallback; +import android.bluetooth.BluetoothGattCharacteristic; +import android.bluetooth.BluetoothGattDescriptor; +import android.bluetooth.BluetoothGattService; +import android.bluetooth.BluetoothProfile; +import android.bluetooth.le.BluetoothLeScanner; +import android.bluetooth.le.ScanCallback; +import android.bluetooth.le.ScanFilter; +import android.bluetooth.le.ScanResult; +import android.bluetooth.le.ScanSettings; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.graphics.Bitmap; +import android.os.Handler; +import android.os.Message; +import android.os.Handler.Callback; +import android.os.Looper; +import android.util.Log; +import android.util.SparseArray; + +import androidx.preference.PreferenceManager; + +import java.io.IOException; +import java.io.InputStream; +import java.util.concurrent.BlockingQueue; + +import org.json.JSONException; +import org.json.JSONObject; + +//BMP + +import java.util.Random; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.zip.CRC32; +import java.nio.ByteBuffer; + +import com.augmentos.augmentos_core.smarterglassesmanager.SmartGlassesManager; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.isMicEnabledForFrontendEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.smartglassescommunicators.SmartGlassesCommunicator; +import com.augmentos.augmentos_core.smarterglassesmanager.smartglassescommunicators.SmartGlassesFontSize; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.HeadUpAngleEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.DisplayTextEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.DisplayImageEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.utils.BitmapJavaUtils; +import com.augmentos.augmentos_core.smarterglassesmanager.utils.G1FontLoader; +import com.augmentos.augmentos_core.smarterglassesmanager.utils.SmartGlassesConnectionState; +import com.augmentos.augmentos_core.audio.PCMAudioPlayer; +import com.google.gson.Gson; +import com.augmentos.smartglassesmanager.cpp.L3cCpp; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BatteryLevelEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.CaseEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BrightnessLevelEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.GlassesBluetoothSearchDiscoverEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.GlassesBluetoothSearchStopEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.GlassesHeadDownEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.GlassesHeadUpEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BleCommandReceiver; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.BleCommandSender; +import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.SmartGlassesDevice; +import com.augmentos.augmentos_core.smarterglassesmanager.speechrecognition.augmentos.SpeechRecAugmentos; +import com.augmentos.augmentos_core.R; + +import org.greenrobot.eventbus.EventBus; +import org.json.JSONArray; + +import java.lang.reflect.Method; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.UUID; +import java.util.concurrent.Semaphore; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.Map; +import java.util.HashMap; + +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.GlassesSerialNumberEvent; + +public final class MentraNexSGC extends SmartGlassesCommunicator { + private final String TAG = "WearableAi_MentraNexSGC"; + public final String SHARED_PREFS_NAME = "NexGlassesPrefs"; + private final String NEX_MAIN_DEVICE_KEY = "NEX_MAIN_DEVICE_KEY"; + private final String NEX_MAIN_DEVICE_ADDRESS = "NEX_MAIN_DEVICE_ADDRESS"; + private final String SAVED_NEX_ID_KEY = "SAVED_Nex_ID_KEY"; + + private boolean isDebugMode = false; + + private int heartbeatCount = 0; + private int micBeatCount = 0; + private BluetoothAdapter bluetoothAdapter; + + private boolean isKilled = false;// + + private final UUID MAIN_SERVICE_UUID = UUID.fromString("00004860-0000-1000-8000-00805f9b34fb"); + private final UUID WRITE_CHAR_UUID = UUID.fromString("000071FF-0000-1000-8000-00805f9b34fb"); + private final UUID NOTIFY_CHAR_UUID = UUID.fromString("000070FF-0000-1000-8000-00805f9b34fb"); + private final UUID CLIENT_CHARACTERISTIC_CONFIG_UUID = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"); + + private final byte PACKET_TYPE_JSON = (byte) 0x01; + private final byte PACKET_TYPE_PROTOBUF = (byte) 0x02; + private final byte PACKET_TYPE_AUDIO = (byte) 0xA0; + private final byte PACKET_TYPE_IMAGE = (byte) 0xB0; + private final Random random = new Random(); + + private Context context; + private BluetoothGatt mainGlassGatt; + private BluetoothGattCharacteristic mainWriteChar; + private BluetoothGattCharacteristic mainNotifyChar; + private final int MTU_512 = 512; + private final int MTU_256 = 256; + private int currentMTU = 0; + + private volatile boolean isImageSendProgressing = false; + private List currentImageChunks = new ArrayList<>(); + + private SmartGlassesConnectionState connectionState = SmartGlassesConnectionState.DISCONNECTED; + // gatt callbacks + private final int MAIN_TASK_HANDLER_CODE_GATT_STATUS_CHANGED = 110; + private final int MAIN_TASK_HANDLER_CODE_DISCOVER_SERVICES = 120; + private final int MAIN_TASK_HANDLER_CODE_CHARACTERISTIC_VALUE_NOTIFIED = 210; + // actions of device or gatt + private final int MAIN_TASK_HANDLER_CODE_CONNECT_DEVICE = 310; + private final int MAIN_TASK_HANDLER_CODE_DISCONNECT_DEVICE = 320; + private final int MAIN_TASK_HANDLER_CODE_RECONNECT_DEVICE = 350; + private final int MAIN_TASK_HANDLER_CODE_CANCEL_RECONNECT_DEVICE = 360; + private final int MAIN_TASK_HANDLER_CODE_RECONNECT_GATT = 370; + private final int MAIN_TASK_HANDLER_CODE_SCAN_START = 410; + private final int MAIN_TASK_HANDLER_CODE_SCAN_END = 420; + // actions of NEX Glasses + private final int MAIN_TASK_HANDLER_CODE_BATTERY_QUERY = 620; + private final int MAIN_TASK_HANDLER_CODE_HEART_BEAT = 630; + private final Handler mainTaskHandler = new Handler(Looper.getMainLooper(), new Callback() { + @Override + public boolean handleMessage(Message msg) { + final int msgCode = msg.what; + Log.d(TAG, "handleMessage msgCode: " + msgCode); + Log.d(TAG, "handleMessage obj: " + msg.obj); + switch (msgCode) { + case MAIN_TASK_HANDLER_CODE_GATT_STATUS_CHANGED: + break; + case MAIN_TASK_HANDLER_CODE_DISCOVER_SERVICES: + final boolean statusBool = (boolean) msg.obj; + if (statusBool) { + initNexGlasses(mainGlassGatt); + } + break; + case MAIN_TASK_HANDLER_CODE_CHARACTERISTIC_VALUE_NOTIFIED: + final BluetoothGattCharacteristic characteristic = (BluetoothGattCharacteristic) msg.obj; + onCharacteristicChangedHandler(characteristic); + break; + case MAIN_TASK_HANDLER_CODE_CONNECT_DEVICE: + break; + case MAIN_TASK_HANDLER_CODE_DISCONNECT_DEVICE: + break; + case MAIN_TASK_HANDLER_CODE_RECONNECT_DEVICE: { + attemptGattConnection(mainDevice); + } + break; + case MAIN_TASK_HANDLER_CODE_CANCEL_RECONNECT_DEVICE: + break; + case MAIN_TASK_HANDLER_CODE_RECONNECT_GATT: + break; + case MAIN_TASK_HANDLER_CODE_SCAN_START: + break; + case MAIN_TASK_HANDLER_CODE_SCAN_END: + break; + case MAIN_TASK_HANDLER_CODE_BATTERY_QUERY: { + queryBatteryStatus(); + } + break; + case MAIN_TASK_HANDLER_CODE_HEART_BEAT: + sendHeartbeat(); + mainTaskHandler.sendEmptyMessageDelayed(MAIN_TASK_HANDLER_CODE_HEART_BEAT, HEARTBEAT_INTERVAL_MS); + break; + default: + break; + } + return true; + } + }); + private final Semaphore sendSemaphore = new Semaphore(1); + private boolean isMainConnected = false; + private int currentSeq = 0; + private boolean stopper = false; + private boolean debugStopper = false; + private boolean shouldUseAutoBrightness = false; + private int brightnessValue; + private boolean updatingScreen = false; + + private final int DELAY_BETWEEN_SENDS_MS = 5; // not using now + private final int DELAY_BETWEEN_CHUNKS_SEND = 5; // super small just in case + private final int DELAY_BETWEEN_ACTIONS_SEND = 250; // not using now + private final int HEARTBEAT_INTERVAL_MS = 15000; + private final int MICBEAT_INTERVAL_MS = (1000 * 60) * 30; // micbeat every 30 minutes + private int caseBatteryLevel = -1; + private boolean caseCharging = false; + private boolean caseOpen = false; + private boolean caseRemoved = true; + private int batteryMain = -1; + private int mainReconnectAttempts = 0; + private int reconnectAttempts = 0; // Counts the number of reconnect attempts + private final int BASE_RECONNECT_DELAY_MS = 3000; // Start with 3 seconds + private final int MAX_RECONNECT_DELAY_MS = 60000; + + // heartbeat sender + private Handler findCompatibleDevicesHandler; + private boolean isScanningForCompatibleDevices = false; + private boolean isScanning = false; + + private ScanCallback bleScanCallback; + + // mic heartbeat turn on + private Handler micBeatHandler = new Handler(); + private Runnable micBeatRunnable; + + // white list sender + private Handler whiteListHandler = new Handler(); + private boolean whiteListedAlready = false; + + // mic enable Handler + private final Handler micEnableHandler = new Handler(); + private boolean micEnabledAlready = false; + private boolean isMicrophoneEnabled = true; // Track current microphone state + + // notification period sender + private Handler notificationHandler = new Handler(); + private Runnable notificationRunnable; + private boolean notifysStarted = false; + private int notificationNum = 10; + + // text wall periodic sender + private Handler textWallHandler = new Handler(); + private Runnable textWallRunnable; + private boolean textWallsStarted = false; + private int textWallNum = 10; + + private BluetoothDevice mainDevice = null; + private String preferredNexId = null; + private String pendingSavedNexMainName = null; + private String savedNexMainName = null; + private String savedNexMainAddress = null; + private String preferredMainDeviceId = null; + + // Retry handler + private final int BOND_RETRY_DELAY_MS = 5000; // 5-second backoff + + // remember when we connected + private long lastConnectionTimestamp = 0; + private SmartGlassesDevice smartGlassesDevice; + + private final long CONNECTION_TIMEOUT_MS = 10000; // 10 seconds + + // Runnable tasks for handling timeouts + private boolean isBondingReceiverRegistered = false; + private boolean shouldUseGlassesMic = true;// just for test + private boolean lastThingDisplayedWasAnImage = false; + + // lock writing until the last write is successful + // fonts in NexGlasses + private G1FontLoader fontLoader; + + private final int DEBOUNCE_DELAY_MS = 270; // Minimum time between chunk sends + private volatile long lastSendTimestamp = 0; + private long lc3DecoderPtr = 0; + + private final Gson gson = new Gson(); + + private final PCMAudioPlayer pcmAudioPlayer = new PCMAudioPlayer(); + + public MentraNexSGC(Context context, SmartGlassesDevice smartGlassesDevice) { + super(); + this.context = context; + isDebugMode = isDebug(context); + Log.d(TAG, "Init MentraNexSGC"); + loadPairedDeviceNames(); + loadPairedDeviceAddress(); + // goHomeHandler = new Handler(); + this.smartGlassesDevice = smartGlassesDevice; + preferredMainDeviceId = getPreferredMainDeviceId(context); + brightnessValue = getSavedBrightnessValue(context); + shouldUseAutoBrightness = getSavedAutoBrightnessValue(context); + this.bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + this.shouldUseGlassesMic = SmartGlassesManager.getSensingEnabled(context) + && !"phone".equals(SmartGlassesManager.getPreferredMic(context)); + + // setup LC3 decoder + if (lc3DecoderPtr == 0) { + lc3DecoderPtr = L3cCpp.initDecoder(); + Log.d(TAG, "initDecoder lc3DecoderPtr๏ผš" + lc3DecoderPtr); + } + // setup fonts + fontLoader = new G1FontLoader(context); + // SpeechRecAugmentos.getInstance(context); + // SpeechRecAugmentos.getInstance(context).changeBypassVadForDebuggingState(true); + } + + private final BluetoothGattCallback mainGattCallback = createGattCallback(); + + private BluetoothGattCallback createGattCallback() { + return new BluetoothGattCallback() { + @Override + public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { + Log.d(TAG, "onConnectionStateChange status State " + (status == BluetoothGatt.GATT_SUCCESS)); + Log.d(TAG, "onConnectionStateChange connected State " + (newState == BluetoothProfile.STATE_CONNECTED)); + + if (status == BluetoothGatt.GATT_SUCCESS) { + + if (newState == BluetoothProfile.STATE_CONNECTED) { + Log.d(TAG, " glass connected, discovering services..."); + gatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH); + gatt.setPreferredPhy(BluetoothDevice.PHY_LE_2M_MASK, BluetoothDevice.PHY_LE_2M_MASK, + BluetoothDevice.PHY_OPTION_NO_PREFERRED); + + isMainConnected = true; + mainReconnectAttempts = 0; + Log.d(TAG, "Both glasses connected. Stopping BLE scan."); + stopScan(); + Log.d(TAG, "Discover services calling..."); + gatt.discoverServices(); + updateConnectionState(); + if (mainDevice != null) { + savedNexMainName = mainDevice.getName(); + savedNexMainAddress = mainDevice.getAddress(); + savePairedDeviceNames(); + savePairedDeviceAddress(); + } + + // just for test + // EventBus.getDefault().post(new BatteryLevelEvent(20, true)); + } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { + Log.d(TAG, " glass disconnected, stopping heartbeats"); + Log.d(TAG, "Entering STATE_DISCONNECTED branch for side: "); + // Mark both sides as not ready (you could also clear both if one disconnects) + MAX_CHUNK_SIZE = MAX_CHUNK_SIZE_DEFAULT; + BMP_CHUNK_SIZE = MAX_CHUNK_SIZE_DEFAULT; + mainServicesWaiter.setTrue(); + Log.d(TAG, "Set mainServicesWaiter and rightServicesWaiter to true."); + forceSideDisconnection(); + Log.d(TAG, "Called forceSideDisconnection()."); + currentMTU = 0; + // Stop any periodic transmissions + stopHeartbeat(); + stopMicBeat(); + sendQueue.clear(); + Log.d(TAG, "Stopped heartbeat and mic beat; cleared sendQueue."); + updateConnectionState(); + Log.d(TAG, "Updated connection state after disconnection."); + if (gatt.getDevice() != null) { + // Close the current gatt connection + Log.d(TAG, "Closing GATT connection for device: " + gatt.getDevice().getAddress()); + gatt.disconnect(); + gatt.close(); + Log.d(TAG, "GATT connection closed."); + } else { + Log.d(TAG, "No GATT device available to disconnect."); + } + } + } else { + currentMTU = 0; + MAX_CHUNK_SIZE = MAX_CHUNK_SIZE_DEFAULT; + BMP_CHUNK_SIZE = MAX_CHUNK_SIZE_DEFAULT; + Log.d(TAG, "Unexpected connection state encountered for " + " glass: " + newState); + stopHeartbeat(); + stopMicBeat(); + sendQueue.clear(); + + // Mark both sides as not ready (you could also clear both if one disconnects) + mainServicesWaiter.setTrue(); + + Log.d(TAG, "Stopped heartbeat and mic beat; cleared sendQueue due to connection failure."); + + Log.d(TAG, " glass connection failed with status: " + status); + isMainConnected = false; + mainReconnectAttempts++; + if (mainGlassGatt != null) { + mainGlassGatt.disconnect(); + mainGlassGatt.close(); + } + mainGlassGatt = null; + + forceSideDisconnection(); + Log.d(TAG, "Called forceSideDisconnection() after connection failure."); + + // gatt.disconnect(); + // gatt.close(); + Log.d(TAG, "GATT connection disconnected and closed due to failure."); + + mainTaskHandler.sendEmptyMessageDelayed(MAIN_TASK_HANDLER_CODE_RECONNECT_DEVICE, 0); // 1 second + // delay + } + } + + private void forceSideDisconnection() { + Log.d(TAG, "forceSideDisconnection() called for side: "); + // Force disconnection from the other side if necessary + isMainConnected = false; + mainReconnectAttempts++; + Log.d(TAG, "Main glass: Marked as disconnected and incremented mainReconnectAttempts to " + + mainReconnectAttempts); + if (mainGlassGatt != null) { + Log.d(TAG, "Main glass GATT exists. Disconnecting and closing mainGlassGatt."); + mainGlassGatt.disconnect(); + mainGlassGatt.close(); + mainGlassGatt = null; + } else { + Log.d(TAG, "Main glass GATT is already null."); + } + } + + @Override + public void onServicesDiscovered(BluetoothGatt gatt, int status) { + final boolean statusBool = (status == BluetoothGatt.GATT_SUCCESS); + final Message msg = Message.obtain(); + msg.what = MAIN_TASK_HANDLER_CODE_DISCOVER_SERVICES; + msg.obj = statusBool; // Attach any object you want + mainTaskHandler.sendMessage(msg); + } + + @Override + public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, + int status) { + Log.d(TAG, "onCharacteristicWrite callback - "); + final byte[] values = characteristic.getValue(); + if (status == BluetoothGatt.GATT_SUCCESS) { + Log.d(TAG, "onCharacteristicWrite PROC_QUEUE - " + " glass write successful"); + Log.d(TAG, "onCharacteristicWrite len - " + values.length); + final String packetHex = bytesToHex(values); + Log.d(TAG, "onCharacteristicWrite Values - " + packetHex); + final int dataLen = values.length; + if (dataLen > 0) { + final byte packetType = values[0]; + final byte[] protobufData = Arrays.copyOfRange(values, 1, dataLen); + switch (packetType) { + case PACKET_TYPE_PROTOBUF: + // just for test + decodeProtobufsByWrite(protobufData, packetHex); + break; + } + } + } else { + Log.e(TAG, " glass write failed with status: " + status); + if (status == 133) { + Log.d(TAG, "GOT THAT 133 STATUS!"); + } + } + // clear the waiter + mainWaiter.setFalse(); + } + + @Override + public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) { + Log.d(TAG, "PROC - GOT DESCRIPTOR WRITE: " + status); + // clear the waiter + mainServicesWaiter.setFalse(); + } + + @Override + public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) { + final boolean statusBool = status == BluetoothGatt.GATT_SUCCESS; + Log.d(TAG, "onMtuChanged: " + statusBool + " " + mtu); + if (statusBool) { + currentMTU = mtu; + MAX_CHUNK_SIZE = currentMTU - 10; + // BMP has more cofig bytes + BMP_CHUNK_SIZE = currentMTU - 20; + } else { + if (mtu == MTU_512) { + gatt.requestMtu(MTU_256); + } + currentMTU = 0; + MAX_CHUNK_SIZE = MAX_CHUNK_SIZE_DEFAULT; + BMP_CHUNK_SIZE = MAX_CHUNK_SIZE_DEFAULT; + } + } + + @Override + public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { + final Message msg = Message.obtain(); + msg.what = MAIN_TASK_HANDLER_CODE_CHARACTERISTIC_VALUE_NOTIFIED; + msg.obj = characteristic; // Attach any object you want + mainTaskHandler.sendMessage(msg); + } + + }; + } + + private void initNexGlasses(BluetoothGatt gatt) { + gatt.requestMtu(MTU_512); // Request a higher MTU size + Log.d(TAG, "Requested MTU size: 512"); + + BluetoothGattService uartService = gatt.getService(MAIN_SERVICE_UUID); + + if (uartService != null) { + BluetoothGattCharacteristic writeChar = uartService.getCharacteristic(WRITE_CHAR_UUID); + BluetoothGattCharacteristic notifyChar = uartService.getCharacteristic(NOTIFY_CHAR_UUID); + + if (writeChar != null) { + mainWriteChar = writeChar; + // enableNotification(gatt, txChar, side); + // txChar.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT); + Log.d(TAG, " glass TX characteristic found"); + } + + if (notifyChar != null) { + mainNotifyChar = notifyChar; + enableNotification(gatt, notifyChar); + // rxChar.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT); + Log.d(TAG, " glass RX characteristic found"); + } + + // Mark as connected but wait for setup below to update connection state + isMainConnected = true; + Log.d(TAG, "PROC_QUEUE - left side setup complete"); + + // Manufacturer data decoding moved to connection start + + // setup the NexGlasses + if (isMainConnected) { + // do first battery status query + mainTaskHandler.sendEmptyMessageDelayed(MAIN_TASK_HANDLER_CODE_BATTERY_QUERY, 10); + + // setup brightness + // sendBrightnessCommandHandler + // .postDelayed(() -> sendBrightnessCommand(brightnessValue, + // shouldUseAutoBrightness), 10); + + // Maybe start MIC streaming + setMicEnabled(false, 10); // Disable the MIC + + // enable our AugmentOS notification key + sendWhiteListCommand(10); + + // start heartbeat + startHeartbeat(10000); + + // start mic beat + // startMicBeat(30000); + + showHomeScreen(); // turn on the NexGlasses display + + updateConnectionState(); + + // start sending debug notifications + // startPeriodicNotifications(302); + // start sending debug notifications + //just for test + //startPeriodicTextWall(302); + } + } else { + Log.e(TAG, " glass UART service not found"); + } + } + + // working on all phones - must keep the delay + private void enableNotification(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { + Log.d(TAG, "PROC_QUEUE - Starting notification setup for "); + + // Simply enable notifications + Log.d(TAG, "PROC_QUEUE - setting characteristic notification on side: "); + boolean result = gatt.setCharacteristicNotification(characteristic, true); + Log.d(TAG, "PROC_QUEUE - setCharacteristicNotification result for " + ": " + result); + + // Set write type for the characteristic + characteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT); + Log.d(TAG, "PROC_QUEUE - write type set for "); + + // wait + Log.d(TAG, "PROC_QUEUE - waiting to enable it on this side: "); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + Log.e(TAG, "Error sending data: " + e.getMessage()); + } + + Log.d(TAG, "PROC_QUEUE - get descriptor on side: "); + BluetoothGattDescriptor descriptor = characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG_UUID); + if (descriptor != null) { + Log.d(TAG, "PROC_QUEUE - setting descriptor on side: "); + descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); + boolean r_result = gatt.writeDescriptor(descriptor); + Log.d(TAG, "PROC_QUEUE - set descriptor on side: " + " with result: " + r_result); + } + } + + private void updateConnectionState() { + if (isMainConnected) { + connectionState = SmartGlassesConnectionState.CONNECTED; + Log.d(TAG, "Main glasses connected"); + lastConnectionTimestamp = System.currentTimeMillis(); + // try { + // Thread.sleep(100); + // } catch (InterruptedException e) { + // e.printStackTrace(); + // } + connectionEvent(connectionState); + } else { + connectionState = SmartGlassesConnectionState.DISCONNECTED; + Log.d(TAG, "No Main glasses connected"); + connectionEvent(connectionState); + } + } + + public boolean doPendingPairingIdsMatch() { + String mainId = parsePairingIdFromDeviceName(pendingSavedNexMainName); + Log.d(TAG, "MainID: " + mainId); + + // ok, HACKY, but if one of them is null, that means that we connected to the + // other on a previous connect + // this whole function shouldn't matter anymore anyway as we properly filter for + // the device name, so it should be fine + // in the future, the way to actually check this would be to check the final ID + // string, which is the only one guaranteed to be unique + if (mainId == null) { + return true; + } + + return mainId != null; + } + + public String parsePairingIdFromDeviceName(String input) { + if (input == null || input.isEmpty()) + return null; + // Regular expression to match the number after "G1_" + Pattern pattern = Pattern.compile("G1_(\\d+)_"); + Matcher matcher = pattern.matcher(input); + + if (matcher.find()) { + return matcher.group(1); // Group 1 contains the number + } + return null; // Return null if no match is found + } + + public void savePreferredNexGlassesDeviceId(Context context, String deviceName) { + context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE).edit() + .putString(SAVED_NEX_ID_KEY, deviceName).apply(); + } + + public String getPreferredMainDeviceId(Context context) { + SharedPreferences prefs = context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE); + return prefs.getString(SAVED_NEX_ID_KEY, null); + } + + public int getSavedBrightnessValue(Context context) { + return Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(context) + .getString(context.getResources().getString(R.string.SHARED_PREF_BRIGHTNESS), "50")); + } + + public boolean getSavedAutoBrightnessValue(Context context) { + return PreferenceManager.getDefaultSharedPreferences(context) + .getBoolean(context.getResources().getString(R.string.SHARED_PREF_AUTO_BRIGHTNESS), false); + } + + private void savePairedDeviceNames() { + if (savedNexMainName != null) { + context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE).edit() + .putString(NEX_MAIN_DEVICE_KEY, savedNexMainName).apply(); + Log.d(TAG, "Saved paired device names: " + savedNexMainName); + } + } + + private void loadPairedDeviceNames() { + SharedPreferences prefs = context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE); + savedNexMainName = prefs.getString(NEX_MAIN_DEVICE_KEY, null); + Log.d(TAG, "Loaded paired device names: " + savedNexMainName); + } + + private void savePairedDeviceAddress() { + if (savedNexMainAddress != null) { + context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE).edit() + .putString(NEX_MAIN_DEVICE_ADDRESS, savedNexMainAddress).apply(); + Log.d(TAG, "Saved paired device address: " + savedNexMainAddress); + } + } + + private void loadPairedDeviceAddress() { + SharedPreferences prefs = context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE); + savedNexMainAddress = prefs.getString(NEX_MAIN_DEVICE_ADDRESS, null); + Log.d(TAG, "Loaded paired device address: " + savedNexMainAddress); + } + + public void deleteEvenSharedPreferences(Context context) { + savePreferredNexGlassesDeviceId(context, null); + SharedPreferences prefs = context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE); + prefs.edit().clear().apply(); + Log.d(TAG, "Nuked EvenRealities SharedPreferences"); + } + + private void connectToGatt(BluetoothDevice device) { + if (device == null) { + Log.e(TAG, "Cannot connect to GATT: device is null"); + return; + } + + Log.d(TAG, "connectToGatt called for device: " + device.getName() + " (" + device.getAddress() + ")"); + BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) { + Log.e(TAG, "Bluetooth is disabled or not available. Cannot reconnect to glasses."); + return; + } + + // Reset the services waiter based on device name + Log.d(TAG, "Device identified as main side. Resetting ServicesWaiter."); + mainServicesWaiter.setTrue(); + + // Establish GATT connection based on device name and current connection state + Log.d(TAG, "Connecting GATT to main side."); + mainGlassGatt = device.connectGatt(context, false, mainGattCallback); + isMainConnected = false; // Reset connection state + Log.d(TAG, "Main GATT connection initiated. isMainConnected set to false."); + } + + private void reconnectToGatt(BluetoothDevice device) { + if (isKilled) { + return; + } + connectToGatt(device); // Reuse the connectToGatt method + } + + private final ScanCallback modernScanCallback = new ScanCallback() { + @Override + public void onScanResult(int callbackType, ScanResult result) { + BluetoothDevice device = result.getDevice(); + String name = device.getName(); + + // Now you can reference the bluetoothAdapter field if needed: + if (!bluetoothAdapter.isEnabled()) { + Log.e(TAG, "Bluetooth is disabled"); + return; + } + Log.d(TAG, " === New Device is Found ===" + name + " " + device.getAddress()); + Log.d(TAG, " === new Glasses Device Information ==="); + + // Log all available device information for debugging + Log.d(TAG, "=== Device Information ==="); + Log.d(TAG, "Device Name: " + name); + Log.d(TAG, "Device Address: " + device.getAddress()); + Log.d(TAG, "Device Type: " + device.getType()); + Log.d(TAG, "Device Class: " + device.getBluetoothClass()); + Log.d(TAG, "Bond State: " + device.getBondState()); + + // If we already have saved device names for main... + if (name != null && savedNexMainName != null) { + if (!(name.contains(savedNexMainName))) { + return; // Not a matching device + } + } + + // Identify which side (main) + stopScan(); + mainDevice = device; + mainTaskHandler.sendEmptyMessageDelayed(MAIN_TASK_HANDLER_CODE_RECONNECT_DEVICE, 0); // 1 + // second + // delay + } + + @Override + public void onScanFailed(int errorCode) { + Log.e(TAG, "Scan failed with error: " + errorCode); + } + }; + + private void resetAllBondsAndState() { + Log.d(TAG, "Resetting ALL bonds and internal state for complete fresh start"); + + // Remove both bonds if devices exist + if (mainDevice != null) { + removeBond(mainDevice); + } + + // Reset all internal state + isMainConnected = false; + + // Clear saved device names + pendingSavedNexMainName = null; + + // Close any existing GATT connections + if (mainGlassGatt != null) { + mainGlassGatt.disconnect(); + mainGlassGatt.close(); + mainGlassGatt = null; + } + + // Wait briefly for bond removal to complete + new Handler(Looper.getMainLooper()).postDelayed(() -> { + Log.d(TAG, "Restarting scan after complete bond/state reset"); + connectionState = SmartGlassesConnectionState.SCANNING; + connectionEvent(connectionState); + startScan(); + }, 2000); + } + + /** + * Handles a device with a valid bond + */ + private void handleValidBond(BluetoothDevice device, boolean isLeft) { + Log.d(TAG, "Handling valid bond for " + (isLeft ? "left" : "right") + " glass"); + + // Update state + + // If both glasses are bonded, connect to GATT + if (mainDevice != null) { + Log.d(TAG, "Both glasses have valid bonds - ready to connect to GATT"); + + mainTaskHandler.sendEmptyMessageDelayed(MAIN_TASK_HANDLER_CODE_RECONNECT_DEVICE, 0); // 1 second delay + } else { + // Continue scanning for the other glass + Log.d(TAG, "Still need to find " + (isLeft ? "right" : "left") + " glass - resuming scan"); + startScan(); + } + } + + /** + * Removes an existing bond with a Bluetooth device to force fresh pairing + */ + private boolean removeBond(BluetoothDevice device) { + try { + if (device == null) { + Log.e(TAG, "Cannot remove bond: device is null"); + return false; + } + + Method method = device.getClass().getMethod("removeBond"); + boolean result = (Boolean) method.invoke(device); + Log.d(TAG, "Removing bond for device " + device.getName() + ", result: " + result); + return result; + } catch (Exception e) { + Log.e(TAG, "Error removing bond: " + e.getMessage(), e); + return false; + } + } + + @Override + public void connectToSmartGlasses(SmartGlassesDevice device) { + // Register bonding receiver + Log.d(TAG, "connectToSmartGlasses start"); + Log.d(TAG, "try to ConnectToSmartGlassesing deviceModelName:" + device.deviceModelName + " deviceAddress:" + + device.deviceAddress); + + preferredMainDeviceId = getPreferredMainDeviceId(context); + + if (!bluetoothAdapter.isEnabled()) { + return; + } + + if (device.deviceModelName != null && device.deviceAddress != null) { + stopScan(); + mainDevice = bluetoothAdapter.getRemoteDevice(device.deviceAddress); + mainTaskHandler.sendEmptyMessageDelayed(MAIN_TASK_HANDLER_CODE_RECONNECT_DEVICE, 0); + return; + } + if (savedNexMainAddress != null) { + mainDevice = bluetoothAdapter.getRemoteDevice(savedNexMainAddress); + mainTaskHandler.sendEmptyMessageDelayed(MAIN_TASK_HANDLER_CODE_RECONNECT_DEVICE, 0); + return; + } + + // Start scanning for devices + stopScan(); + connectionState = SmartGlassesConnectionState.SCANNING; + connectionEvent(connectionState); + startScan(); + } + + private void startScan() { + BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner(); + if (scanner == null) { + Log.e(TAG, "BluetoothLeScanner not available."); + return; + } + + // Optionally, define filters if needed + List filters = new ArrayList<>(); + // For example, to filter by device name: + // filters.add(new ScanFilter.Builder().setDeviceName("Even G1_").build()); + + // Set desired scan settings + ScanSettings settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build(); + + // Start scanning + isScanning = true; + scanner.startScan(filters, settings, modernScanCallback); + scanner.flushPendingScanResults(modernScanCallback); + Log.d(TAG, "CALL START SCAN - Started scanning for devices..."); + + // Ensure scanning state is immediately communicated to UI + connectionState = SmartGlassesConnectionState.SCANNING; + connectionEvent(connectionState); + + // Stop the scan after some time (e.g., 10-15s instead of 60 to avoid + // throttling) + // handler.postDelayed(() -> stopScan(), 10000); + } + + private void stopScan() { + BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner(); + if (scanner != null) { + scanner.stopScan(modernScanCallback); + } + isScanning = false; + Log.d(TAG, "Stopped scanning for devices"); + if (bleScanCallback != null && isScanningForCompatibleDevices) { + scanner.stopScan(bleScanCallback); + isScanningForCompatibleDevices = false; + } + + } + + private void bondDevice(BluetoothDevice device) { + try { + Log.d(TAG, "Attempting to bond with device: " + device.getName()); + Method method = device.getClass().getMethod("createBond"); + method.invoke(device); + } catch (Exception e) { + Log.e(TAG, "Bonding failed: " + e.getMessage()); + } + } + + private void attemptGattConnection(BluetoothDevice device) { + // if (!isKilled) + + if (device == null) { + Log.d(TAG, "Cannot connect to GATT: Device is null"); + return; + } + + String deviceName = device.getName(); + if (deviceName == null) { + Log.d(TAG, "Skipping null device name: " + device.getAddress() + + "... this means something horriffic has occured. Look into this."); + return; + } + + Log.d(TAG, "attemptGattConnection called for device: " + deviceName + " (" + device.getAddress() + ")"); + + connectionState = SmartGlassesConnectionState.CONNECTING; + Log.d(TAG, "Setting connectionState to CONNECTING. Notifying connectionEvent."); + connectionEvent(connectionState); + + connectLeftDevice(device); + } + + private void connectLeftDevice(BluetoothDevice device) { + if (mainGlassGatt == null) { + Log.d(TAG, "Attempting GATT connection for Main Glass..."); + mainGlassGatt = device.connectGatt(context, false, mainGattCallback); + isMainConnected = false; + Log.d(TAG, "Main GATT connection initiated. isMainConnected set to false."); + } else { + Log.d(TAG, "Main Glass GATT already exists"); + } + } + + private byte[] createTextPackage(String text, int currentPage, int totalPages, int screenStatus) { + byte[] textBytes = text.getBytes(); + ByteBuffer buffer = ByteBuffer.allocate(9 + textBytes.length); + buffer.put((byte) 0x4E); + buffer.put((byte) (currentSeq++ & 0xFF)); + buffer.put((byte) 1); + buffer.put((byte) 0); + buffer.put((byte) screenStatus); + buffer.put((byte) 0); + buffer.put((byte) 0); + buffer.put((byte) currentPage); + buffer.put((byte) totalPages); + buffer.put(textBytes); + + return buffer.array(); + } + + // Data class to represent a send request + private class SendRequest { + final byte[] data; + public int waitTime = -1; + + SendRequest(byte[] data) { + this.data = data; + } + + SendRequest(byte[] data, int waitTime) { + this.data = data; + this.waitTime = waitTime; + } + } + + // Queue to hold pending requests + private final BlockingQueue sendQueue = new LinkedBlockingQueue<>(); + + private volatile boolean isWorkerRunning = false; + + // Non-blocking function to add new send request + private void sendDataSequentially(byte[] data) { + SendRequest[] chunks = {new SendRequest(data)}; + sendQueue.offer(chunks); + startWorkerIfNeeded(); + } + + // Non-blocking function to add new send request + private void sendDataSequentially(byte[] data, int waitTime) { + SendRequest[] chunks = {new SendRequest(data, waitTime)}; + sendQueue.offer(chunks); + startWorkerIfNeeded(); + } + + private void sendDataSequentially(List data) { + SendRequest[] chunks = new SendRequest[data.size()]; + for (int i = 0; i < data.size(); i++) { + chunks[i] = new SendRequest(data.get(i)); + } + sendQueue.offer(chunks); + startWorkerIfNeeded(); + } + + // Start the worker thread if it's not already running + private synchronized void startWorkerIfNeeded() { + if (!isWorkerRunning) { + isWorkerRunning = true; + new Thread(this::processQueue, "MentraNexSGCProcessQueue").start(); + } + } + + public class BooleanWaiter { + private boolean flag = true; // initially true + + public synchronized void waitWhileTrue() throws InterruptedException { + while (flag) { + wait(); + } + } + + public synchronized void setTrue() { + flag = true; + } + + public synchronized void setFalse() { + flag = false; + notifyAll(); + } + } + + private final BooleanWaiter mainWaiter = new BooleanWaiter(); + private final BooleanWaiter mainServicesWaiter = new BooleanWaiter(); + private final long INITIAL_CONNECTION_DELAY_MS = 350; // Adjust this value as needed + + private void processQueue() { + // First wait until the services are setup and ready to receive data + Log.d(TAG, "PROC_QUEUE - waiting on services waiters"); + try { + mainServicesWaiter.waitWhileTrue(); + } catch (InterruptedException e) { + Log.e(TAG, "Interrupted waiting for descriptor writes: " + e); + } + Log.d(TAG, "PROC_QUEUE - DONE waiting on services waiters"); + + while (!isKilled) { + try { + // Make sure services are ready before processing requests + mainServicesWaiter.waitWhileTrue(); + + // This will block until data is available - no CPU spinning! + SendRequest[] requests = sendQueue.take(); + + for (SendRequest request : requests) { + if (request == null) { + isWorkerRunning = false; + break; + } + + try { + // Force an initial delay so BLE gets all setup + long timeSinceConnection = System.currentTimeMillis() - lastConnectionTimestamp; + if (timeSinceConnection < INITIAL_CONNECTION_DELAY_MS) { + Thread.sleep(INITIAL_CONNECTION_DELAY_MS - timeSinceConnection); + } + + // Send to main glass + if (mainGlassGatt != null && mainWriteChar != null && isMainConnected) { + mainWaiter.setTrue(); + mainWriteChar.setValue(request.data); + mainGlassGatt.writeCharacteristic(mainWriteChar); + lastSendTimestamp = System.currentTimeMillis(); + } + + mainWaiter.waitWhileTrue(); + + Thread.sleep(DELAY_BETWEEN_CHUNKS_SEND); + + // If the packet asked us to do a delay, then do it + if (request.waitTime != -1) { + Thread.sleep(request.waitTime); + } + } catch (InterruptedException e) { + Log.e(TAG, "Error sending data: " + e.getMessage()); + if (isKilled) + break; + } + } + } catch (InterruptedException e) { + if (isKilled) { + Log.d(TAG, "Process queue thread interrupted - shutting down"); + break; + } + Log.e(TAG, "Error in queue processing: " + e.getMessage()); + } + } + + Log.d(TAG, "Process queue thread exiting"); + } + + private final int NOTIFICATION = 0x4B; // Notification command + + private String createNotificationJson(String appIdentifier, String title, String subtitle, String message) { + long currentTime = System.currentTimeMillis() / 1000L; // Unix timestamp in seconds + String currentDate = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date()); // Date + // format + // for + // 'date' + // field + + NCSNotification ncsNotification = new NCSNotification(notificationNum++, // Increment sequence ID for uniqueness + 1, // type (e.g., 1 = notification type) + appIdentifier, title, subtitle, message, (int) currentTime, // Cast long to int to match Python + currentDate, // Add the current date to the notification + "AugmentOS" // display_name + ); + + Notification notification = new Notification(ncsNotification, "Add"); + + return gson.toJson(notification); + } + + class Notification { + NCSNotification ncs_notification; + String type; + + public Notification() { + // Default constructor + } + + public Notification(NCSNotification ncs_notification, String type) { + this.ncs_notification = ncs_notification; + this.type = type; + } + } + + class NCSNotification { + int msg_id; + int type; + String app_identifier; + String title; + String subtitle; + String message; + int time_s; // Changed from long to int for consistency + String date; // Added to match Python's date field + String display_name; + + public NCSNotification(int msg_id, int type, String app_identifier, String title, String subtitle, + String message, int time_s, String date, String display_name) { + this.msg_id = msg_id; + this.type = type; + this.app_identifier = app_identifier; + this.title = title; + this.subtitle = subtitle; + this.message = message; + this.time_s = time_s; + this.date = date; // Initialize the date field + this.display_name = display_name; + } + } + + private List createNotificationChunks(String json) { + final int MAX_CHUNK_SIZE = 176; // 180 - 4 header bytes + byte[] jsonBytes = json.getBytes(StandardCharsets.UTF_8); + int totalChunks = (int) Math.ceil((double) jsonBytes.length / MAX_CHUNK_SIZE); + + List chunks = new ArrayList<>(); + for (int i = 0; i < totalChunks; i++) { + int start = i * MAX_CHUNK_SIZE; + int end = Math.min(start + MAX_CHUNK_SIZE, jsonBytes.length); + byte[] payloadChunk = Arrays.copyOfRange(jsonBytes, start, end); + + // Create the header + byte[] header = new byte[]{(byte) NOTIFICATION, 0x00, // notify_id (can be updated as needed) + (byte) totalChunks, (byte) i}; + + // Combine header and payload + ByteBuffer chunk = ByteBuffer.allocate(header.length + payloadChunk.length); + chunk.put(header); + chunk.put(payloadChunk); + + chunks.add(chunk.array()); + } + + return chunks; + } + + @Override + public void displayReferenceCardSimple(String title, String body) { + Log.d(TAG, "displayReferenceCardSimple title: " + title + " body:" + body); + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + byte[] textChunks = createTextWallChunksForNex(title + "\n\n" + body); + sendDataSequentially(textChunks); +// List chunks = createTextWallChunks(title + "\n\n" + body); +// for (int i = 0; i < chunks.size(); i++) { +// byte[] chunk = chunks.get(i); +// boolean isLastChunk = (i == chunks.size() - 1); +// +// if (isLastChunk) { +// sendDataSequentially(chunk); +// } else { +// sendDataSequentially(chunk, 300); +// } +// } + Log.d(TAG, "Send simple reference card"); + } + + @Override + public void destroy() { + Log.d(TAG, "MentraNexSGC ONDESTROY"); + + // SpeechRecAugmentos.getInstance(context).destroy(); + + showHomeScreen(); + isKilled = true; + + // stop BLE scanning + stopScan(); + + // disable the microphone + setMicEnabled(false, 0); + + // stop sending heartbeat + stopHeartbeat(); + + // stop sending micbeat + stopMicBeat(); + + // Stop periodic notifications + stopPeriodicNotifications(); + + // Stop periodic text wall + // stopPeriodicNotifications(); + + if (mainGlassGatt != null) { + mainGlassGatt.disconnect(); + mainGlassGatt.close(); + mainGlassGatt = null; + } + + if (mainTaskHandler != null) { + mainTaskHandler.removeCallbacksAndMessages(null); + } + if (whiteListHandler != null) { + whiteListHandler.removeCallbacksAndMessages(null); + } + if (micEnableHandler != null) { + micEnableHandler.removeCallbacksAndMessages(null); + } + if (notificationHandler != null) { + notificationHandler.removeCallbacks(notificationRunnable); + } + if (textWallHandler != null) { + textWallHandler.removeCallbacks(textWallRunnable); + } + // if (goHomeHandler != null) + // goHomeHandler.removeCallbacks(goHomeRunnable); + if (findCompatibleDevicesHandler != null) { + findCompatibleDevicesHandler.removeCallbacksAndMessages(null); + } + // free LC3 decoder + if (lc3DecoderPtr != 0) { + L3cCpp.freeDecoder(lc3DecoderPtr); + lc3DecoderPtr = 0; + } + + currentImageChunks.clear(); + isImageSendProgressing = false; + + sendQueue.clear(); + + // Add a dummy element to unblock the take() call if needed + sendQueue.offer(new SendRequest[0]); // is this needed? + + isWorkerRunning = false; + + isMainConnected = false; + + Log.d(TAG, "MentraNexSGC cleanup complete"); + } + + @Override + public boolean isConnected() { + return connectionState == SmartGlassesConnectionState.CONNECTED; + } + + // Remaining methods + @Override + public void showNaturalLanguageCommandScreen(String prompt, String naturalLanguageInput) { + Log.d(TAG, + "showNaturalLanguageCommandScreen prompt: " + prompt + " naturalLanguageInput:" + naturalLanguageInput); + + } + + @Override + public void updateNaturalLanguageCommandScreen(String naturalLanguageArgs) { + Log.d(TAG, "updateNaturalLanguageCommandScreen naturalLanguageArgs: " + naturalLanguageArgs); + + } + + @Override + public void scrollingTextViewIntermediateText(String text) { + Log.d(TAG, "scrollingTextViewIntermediateText text: " + text); + + } + + @Override + public void scrollingTextViewFinalText(String text) { + Log.d(TAG, "scrollingTextViewFinalText text: " + text); + } + + @Override + public void stopScrollingTextViewMode() { + Log.d(TAG, "stopScrollingTextViewMode "); + } + + @Override + public void displayPromptView(String title, String[] options) { + Log.d(TAG, "displayPromptView text:" + title); + } + + @Override + public void displayTextLine(String text) { + Log.d(TAG, "displayTextLine text:" + text); + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + if (updatingScreen) { + return; + } + byte[] textChunks = createTextWallChunksForNex(text); + sendDataSequentially(textChunks); + } + + @Override + public void displayBitmap(Bitmap bmp) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "displayBitmap "); + try { + byte[] bmpBytes = BitmapJavaUtils.convertBitmapTo1BitBmpBytes(bmp, false); + displayBitmapImage(bmpBytes); + } catch (Exception e) { + Log.e(TAG, e.getMessage()); + } + } + + @Override + public void blankScreen() { + Log.d(TAG, "blankScreen "); + } + + @Override + public void displayDoubleTextWall(String textTop, String textBottom) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "displayDoubleTextWall textTop:" + textTop + " textBottom:" + textBottom); + if (updatingScreen) { + return; + } + // List chunks = createDoubleTextWallChunks(textTop, textBottom); + // sendChunks(chunks); + StringBuilder textBuilder = new StringBuilder(); + if (textTop != null) { + textBuilder.append(textTop).append("\n"); + } + if (textBottom != null) { + textBuilder.append(textBottom); + } + final String finalText = textBuilder.toString(); + byte[] textChunks = createTextWallChunksForNex(finalText); + sendDataSequentially(textChunks); + } + + @Override + public void showHomeScreen() { + Log.d(TAG, "showHomeScreen "); + // dis for test + // displayTextWall(" "); + + if (lastThingDisplayedWasAnImage) { + // clearNexScreen(); + lastThingDisplayedWasAnImage = false; + } + } + + public void clearNexGlassesScreen() { + Log.d(TAG, "Clearing NexGlasses screen"); + // byte[] exitCommand = new byte[] { (byte) 0x18 }; + // sendDataSequentially(exitCommand, false); + byte[] theClearBitmapOrSomething = loadEmptyBmpFromAssets(); + Bitmap bmp = BitmapJavaUtils.bytesToBitmap(theClearBitmapOrSomething); + try { + byte[] bmpBytes = BitmapJavaUtils.convertBitmapTo1BitBmpBytes(bmp, false); + displayBitmapImage(bmpBytes); + } catch (Exception e) { + Log.e(TAG, "Error displaying clear bitmap: " + e.getMessage()); + } + } + + @Override + public void setFontSize(SmartGlassesFontSize fontSize) { + Log.d(TAG, "setFontSize "); + } + + @Override + public void displayRowsCard(String[] rowStrings) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "displayRowsCard rowStrings:" + rowStrings.toString()); + if (updatingScreen) { + return; + } + if (rowStrings == null || rowStrings.length == 0) { + return; + } + StringBuilder textBuilder = new StringBuilder(); + for (String bullet : rowStrings) { + textBuilder.append(bullet).append("\n"); + } + final String finalText = textBuilder.toString(); + byte[] textChunks = createTextWallChunksForNex(finalText); + sendDataSequentially(textChunks); + } + + @Override + public void displayBulletList(String title, String[] bullets) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "displayBulletList title:" + title + " bullets:" + bullets.toString()); + if (updatingScreen) { + return; + } + StringBuilder textBuilder = new StringBuilder(); + if (title != null) { + textBuilder.append(title).append("\n"); + } + for (String bullet : bullets) { + textBuilder.append(bullet).append("\n"); + } + final String finalText = textBuilder.toString(); + byte[] textChunks = createTextWallChunksForNex(finalText); + sendDataSequentially(textChunks); + } + + @Override + public void displayReferenceCardImage(String title, String body, String imgUrl) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "displayReferenceCardImage title:" + title + " body:" + body); + } + + @Override + public void displayTextWall(String text) { + Log.d(TAG, "displayTextWall updatingScreen: " + updatingScreen + " text:" + text); + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + if (updatingScreen) { + return; + } + byte[] textChunks = createTextWallChunksForNex(text); + sendDataSequentially(textChunks); + } + + @Override + public void setUpdatingScreen(boolean updatingScreen) { + Log.d(TAG, "setUpdatingScreen updatingScreen:" + updatingScreen); + this.updatingScreen = updatingScreen; + } + + @Override + public void setFontSizes() { + Log.d(TAG, "setFontSizes "); + } + + // get the final full binary packet + private byte[] generateProtobufCommandBytes(PhoneToGlasses phoneToGlasses) { + final byte[] contentBytes = phoneToGlasses.toByteArray(); + final ByteBuffer chunk = ByteBuffer.allocate(contentBytes.length + 1); + + chunk.put(PACKET_TYPE_PROTOBUF); + chunk.put(contentBytes); + return chunk.array(); + } + + // Heartbeat methods for Nex Glasses + private byte[] constructHeartbeatForNexGlasses() { + // Create the PhoneToGlasses using its builder and set the pingNewBuilder + PingRequest pingNewBuilder = PingRequest.newBuilder().build(); + + PhoneToGlasses phoneToGlasses = PhoneToGlasses.newBuilder().setPing(pingNewBuilder).build(); + + return generateProtobufCommandBytes(phoneToGlasses); + } + + private byte[] constructBatteryLevelQuery() { + BatteryStateRequest batteryStateRequest = BatteryStateRequest.newBuilder().build(); + + // Create the PhoneToGlasses using its builder and set the batteryStateRequest + PhoneToGlasses phoneToGlasses = PhoneToGlasses.newBuilder().setBatteryState(batteryStateRequest).build(); + + return generateProtobufCommandBytes(phoneToGlasses); + + } + + private void startHeartbeat(int delay) { + Log.d(TAG, "Starting heartbeat"); + if (heartbeatCount > 0) { + stopHeartbeat(); + } + mainTaskHandler.sendEmptyMessageDelayed(MAIN_TASK_HANDLER_CODE_HEART_BEAT, delay); + } + + // periodically send a mic ON request so it never turns off + private void startMicBeat(int delay) { + Log.d(TAG, "Starting micbeat"); + if (micBeatCount > 0) { + stopMicBeat(); + } + setMicEnabled(true, 10); + + micBeatRunnable = new Runnable() { + @Override + public void run() { + Log.d(TAG, "SENDING MIC BEAT"); + setMicEnabled(shouldUseGlassesMic, 1); + micBeatHandler.postDelayed(this, MICBEAT_INTERVAL_MS); + } + }; + + micBeatHandler.postDelayed(micBeatRunnable, delay); + } + + @Override + public void findCompatibleDeviceNames() { + Log.d(TAG, "findCompatibleDeviceNames action"); + findCompatibleDeviceNamesHandler(); + + } + + private void findCompatibleDeviceNamesHandler() { + if (isScanningForCompatibleDevices) { + Log.d(TAG, "Scan already in progress, skipping..."); + return; + } + isScanningForCompatibleDevices = true; + BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner(); + if (scanner == null) { + Log.e(TAG, "BluetoothLeScanner not available"); + isScanningForCompatibleDevices = false; + return; + } + + List foundDeviceNames = new ArrayList<>(); + if (findCompatibleDevicesHandler == null) { + findCompatibleDevicesHandler = new Handler(Looper.getMainLooper()); + } + + // Optional: add filters if you want to narrow the scan + List filters = new ArrayList<>(); + ScanSettings settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_BALANCED).build(); + + // Create a modern ScanCallback instead of the deprecated LeScanCallback + bleScanCallback = new ScanCallback() { + @Override + public void onScanResult(int callbackType, ScanResult result) { + BluetoothDevice device = result.getDevice(); + String name = device.getName(); + String address = device.getAddress(); + // if (name != null && name.contains("Even G1_") && name.contains("_L_")) { + // if (name != null && name.toUpperCase().startsWith("E2:D5")) { + if (name != null) { + Log.d(TAG, "bleScanCallback onScanResult: " + name + " address " + device.getAddress()); + synchronized (foundDeviceNames) { + if (!foundDeviceNames.contains(name)) { + foundDeviceNames.add(name); + Log.d(TAG, "Found smart glasses: " + name); + // String adjustedName = parsePairingIdFromDeviceName(name); + String adjustedName = smartGlassesDevice.deviceModelName;// parsePairingIdFromDeviceName(name); + EventBus.getDefault().post(new GlassesBluetoothSearchDiscoverEvent( + smartGlassesDevice.deviceModelName, name, address)); + } + } + } + } + + @Override + public void onBatchScanResults(List results) { + // If needed, handle batch results here + } + + @Override + public void onScanFailed(int errorCode) { + Log.e(TAG, "BLE scan failed with code: " + errorCode); + } + }; + + // Start scanning + scanner.startScan(filters, settings, bleScanCallback); + Log.d(TAG, "Started scanning for smart glasses with BluetoothLeScanner..."); + scanner.flushPendingScanResults(bleScanCallback); + // Stop scanning after 10 seconds (adjust as needed) + findCompatibleDevicesHandler.postDelayed(() -> { + if (bleScanCallback != null) { + scanner.stopScan(bleScanCallback); + } + isScanningForCompatibleDevices = false; + bleScanCallback = null; + Log.d(TAG, "Stopped scanning for smart glasses."); + EventBus.getDefault().post(new GlassesBluetoothSearchStopEvent(smartGlassesDevice.deviceModelName)); + }, 10000); + } + + private void sendWhiteListCommand(int delay) { + if (whiteListedAlready) { + return; + } + whiteListedAlready = true; + + Log.d(TAG, "Sending whitelist command"); + whiteListHandler.postDelayed(new Runnable() { + @Override + public void run() { + List chunks = getWhitelistChunks(); + sendDataSequentially(chunks); + // for (byte[] chunk : chunks) { + // Log.d(TAG, "Sending this chunk for white list:" + bytesToUtf8(chunk)); + // sendDataSequentially(chunk, false); + // + //// // Sleep for 100 milliseconds between sending each chunk + //// try { + //// Thread.sleep(150); + //// } catch (InterruptedException e) { + //// e.printStackTrace(); + //// } + // } + } + }, delay); + } + + private void stopHeartbeat() { + mainTaskHandler.removeMessages(MAIN_TASK_HANDLER_CODE_HEART_BEAT); + } + + private void stopMicBeat() { + setMicEnabled(false, 10); + if (micBeatHandler != null) { + micBeatHandler.removeCallbacksAndMessages(null); + micBeatHandler.removeCallbacksAndMessages(micBeatRunnable); + micBeatRunnable = null; + micBeatCount = 0; + } + } + + private void sendHeartbeat() { + // for Mentra Nex Glasses + byte[] heartbeatPacket = constructHeartbeatForNexGlasses(); + + sendDataSequentially(heartbeatPacket, 100); + + if (batteryMain == -1 || heartbeatCount % 10 == 0) { + mainTaskHandler.sendEmptyMessageDelayed(MAIN_TASK_HANDLER_CODE_BATTERY_QUERY, 500); + } + + heartbeatCount++; + } + + private void queryBatteryStatus() { + byte[] batteryQueryPacket = constructBatteryLevelQuery(); + // Log.d(TAG, "Sending battery status query: " + + // bytesToHex(batteryQueryPacket)); + + sendDataSequentially(batteryQueryPacket, 250); + } + + public void sendBrightnessCommand(int brightness) { + // Validate brightness range + int validBrightness; + if (brightness != -1) { + validBrightness = (brightness * 63) / 100; + } else { + validBrightness = (30 * 63) / 100; + } + + BrightnessConfig brightnessConfig = BrightnessConfig.newBuilder().setValue(brightness).build(); + + // Create the PhoneToGlasses using its builder and set the brightnessConfig + PhoneToGlasses phoneToGlasses = PhoneToGlasses.newBuilder().setBrightness(brightnessConfig).build(); + + byte[] cmdBytes = generateProtobufCommandBytes(phoneToGlasses); + + sendDataSequentially(cmdBytes, 10); + + Log.d(TAG, "Sent auto light brightness command => Brightness: " + brightness); + EventBus.getDefault().post(new BrightnessLevelEvent(brightness)); + } + + public void sendAutoBrightnessCommand(boolean autoLight) { + AutoBrightnessConfig autoBrightnessConfig = AutoBrightnessConfig.newBuilder().setEnabled(autoLight).build(); + PhoneToGlasses phoneToGlasses = PhoneToGlasses.newBuilder().setAutoBrightness(autoBrightnessConfig).build(); + + final byte[] cmdBytes = generateProtobufCommandBytes(phoneToGlasses); + + sendDataSequentially(cmdBytes, 10); + + Log.d(TAG, "Sent auto light sendAutoBrightnessCommand=> " + autoLight); + + EventBus.getDefault().post(new BrightnessLevelEvent(autoLight)); + } + + public void sendHeadUpAngleCommand(int headUpAngle) { + // Validate headUpAngle range (0 ~ 60) + if (headUpAngle < 0) { + headUpAngle = 0; + } else if (headUpAngle > 60) { + headUpAngle = 60; + } + HeadUpAngleConfig headUpAngleConfig = HeadUpAngleConfig.newBuilder().setAngle(headUpAngle).build(); + PhoneToGlasses phoneToGlasses = PhoneToGlasses.newBuilder().setHeadUpAngle(headUpAngleConfig).build(); + + final byte[] cmdBytes = generateProtobufCommandBytes(phoneToGlasses); + + sendDataSequentially(cmdBytes, 10); + + Log.d(TAG, "Sent headUp angle command => Angle: " + headUpAngle); + EventBus.getDefault().post(new HeadUpAngleEvent(headUpAngle)); + } + + private void sendDashboardPositionCommand(int height, int depth) { + // clamp height and depth to 0-8 and 1-9 respectively: + height = Math.max(0, Math.min(height, 8)); + depth = Math.max(1, Math.min(depth, 9)); + + DisplayHeightConfig displayHeightConfig = DisplayHeightConfig.newBuilder().setHeight(height).setDepth(depth) + .build(); + PhoneToGlasses phoneToGlasses = PhoneToGlasses.newBuilder().setDisplayHeight(displayHeightConfig).build(); + + final byte[] cmdBytes = generateProtobufCommandBytes(phoneToGlasses); + + sendDataSequentially(cmdBytes, 10); + + Log.d(TAG, "Sent dashboard height/depth command => Height: " + height + ", Depth: " + depth); + // EventBus.getDefault().post(new DashboardPositionEvent(height, depth)); + } + + @Override + public void updateGlassesBrightness(int brightness) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "Updating glasses brightness: " + brightness); + sendBrightnessCommand(brightness); + } + + @Override + public void updateGlassesAutoBrightness(boolean autoBrightness) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "Updating glasses auto brightness: " + autoBrightness); + // sendBrightnessCommand(-1, autoBrightness); + // sendAutoBrightnessCommand(autoBrightness); + // sendPeriodicTextWall(); + + // startSendingDisplayImageTest(); + sendAutoBrightnessCommand(autoBrightness); + } + + @Override + public void updateGlassesHeadUpAngle(int headUpAngle) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "updateGlassesHeadUpAngle headUpAngle: " + headUpAngle); + + sendHeadUpAngleCommand(headUpAngle); + } + + @Override + public void updateGlassesDepthHeight(int depth, int height) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "updateGlassesDepthHeight depth: " + depth + " height:" + height); + + sendDashboardPositionCommand(height, depth); + } + + @Override + public void sendExitCommand() { + Log.d(TAG, "sendExitCommand "); + sendDataSequentially(new byte[]{(byte) 0x18}, 100); + } + + private String bytesToHex(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + for (byte b : bytes) { + sb.append(String.format("%02X ", b)); + } + return sb.toString().trim(); + } + + // microphone stuff + public void setMicEnabled(boolean enable, int delay) { + Log.d(TAG, "Running set mic enabled: " + enable); + isMicrophoneEnabled = enable; // Update the state tracker + EventBus.getDefault().post(new isMicEnabledForFrontendEvent(enable)); + micEnableHandler.postDelayed(new Runnable() { + @Override + public void run() { + if (!isConnected()) { + Log.d(TAG, "Tryna start mic: Not connected to glasses"); + return; + } + + MicStateConfig micStateConfig = MicStateConfig.newBuilder().setEnabled(enable).build(); + // micStateConfig.setEnabled(enable); + + // Create the PhoneToGlasses using its builder and set the DisplayText + PhoneToGlasses phoneToGlasses = PhoneToGlasses.newBuilder().setMicState(micStateConfig).build(); + + byte[] micConfigBytes = generateProtobufCommandBytes(phoneToGlasses); + + sendDataSequentially(micConfigBytes, 10); // wait some time to setup the mic + Log.d(TAG, "Sent MIC command: " + bytesToHex(micConfigBytes)); + } + }, delay); + } + + // notifications + private void startPeriodicNotifications(int delay) { + if (notifysStarted) { + return; + } + notifysStarted = true; + + notificationRunnable = new Runnable() { + @Override + public void run() { + // Send notification + sendPeriodicNotification(); + + // Schedule the next notification + notificationHandler.postDelayed(this, 12000); + } + }; + + // Start the first notification after 5 seconds + notificationHandler.postDelayed(notificationRunnable, delay); + } + + private void sendPeriodicNotification() { + if (!isConnected()) { + Log.d(TAG, "Cannot send notification: Not connected to glasses"); + return; + } + + // Example notification data (replace with your actual data) + // String json = createNotificationJson("com.augment.os", "QuestionAnswerer", + // "How much caffeine in dark chocolate?", "25 to 50 grams per piece"); + String json = createNotificationJson("com.augment.os", "QuestionAnswerer", + "How much caffeine in dark chocolate?", "25 to 50 grams per piece"); + Log.d(TAG, "the JSON to send: " + json); + List chunks = createNotificationChunks(json); + // Log.d(TAG, "THE CHUNKS:"); + // Log.d(TAG, chunks.get(0).toString()); + // Log.d(TAG, chunks.get(1).toString()); + for (byte[] chunk : chunks) { + Log.d(TAG, "Sent chunk to glasses: " + bytesToUtf8(chunk)); + } + + // Send each chunk with a short sleep between each send + sendDataSequentially(chunks); + + Log.d(TAG, "Sent periodic notification"); + } + + // text wall debug + private void startPeriodicTextWall(int delay) { + if (textWallsStarted) { + return; + } + textWallsStarted = true; + + textWallRunnable = new Runnable() { + @Override + public void run() { + // Send notification + sendPeriodicTextWall(); + + // Schedule the next notification + textWallHandler.postDelayed(this, 12000); + } + }; + + // Start the first text wall send after 5 seconds + textWallHandler.postDelayed(textWallRunnable, delay); + } + + // Constants for text wall display + private final int TEXT_COMMAND = 0x4E; // Text command + private final int DISPLAY_WIDTH = 488; + private final int DISPLAY_USE_WIDTH = 488; // How much of the display to use + private final float FONT_MULTIPLIER = 1 / 50.0f; + private final int OLD_FONT_SIZE = 21; // Font size + private final float FONT_DIVIDER = 2.0f; + private final int LINES_PER_SCREEN = 5; // Lines per screen + private final int MAX_CHUNK_SIZE_DEFAULT = 176; // Maximum chunk size for BLE packets + private int MAX_CHUNK_SIZE = MAX_CHUNK_SIZE_DEFAULT; // Maximum chunk size for BLE packets + private int BMP_CHUNK_SIZE = 194; + + // private final int INDENT_SPACES = 32; // Number of spaces to indent + // text + + private int textSeqNum = 0; // Sequence number for text packets + + // currently only a single page - 1PAGE CHANGE + private List createTextWallChunks(String text) { + int margin = 5; + + // Get width of single space character + int spaceWidth = calculateTextWidth(" "); + + // Calculate effective display width after accounting for Main margins + // in spaces + int marginWidth = margin * spaceWidth; // Width of left margin in pixels + int effectiveWidth = DISPLAY_WIDTH - (2 * marginWidth); // Subtract left and right margins + + // Split text into lines based on effective display width + List lines = splitIntoLines(text, effectiveWidth); + + // Calculate total pages + int totalPages = 1; // hard set to 1 since we only do 1 page - 1PAGECHANGE + + List allChunks = new ArrayList<>(); + + // Process each page + for (int page = 0; page < totalPages; page++) { + // Get lines for current page + int startLine = page * LINES_PER_SCREEN; + int endLine = Math.min(startLine + LINES_PER_SCREEN, lines.size()); + List pageLines = lines.subList(startLine, endLine); + + // Combine lines for this page with proper indentation + StringBuilder pageText = new StringBuilder(); + + for (String line : pageLines) { + // Add the exact number of spaces for indentation + String indentation = " ".repeat(margin); + pageText.append(indentation).append(line).append("\n"); + } + + byte[] textBytes = pageText.toString().getBytes(StandardCharsets.UTF_8); + int totalChunks = (int) Math.ceil((double) textBytes.length / MAX_CHUNK_SIZE); + + // Create chunks for this page + for (int i = 0; i < totalChunks; i++) { + int start = i * MAX_CHUNK_SIZE; + int end = Math.min(start + MAX_CHUNK_SIZE, textBytes.length); + byte[] payloadChunk = Arrays.copyOfRange(textBytes, start, end); + + // Create header with protocol specifications + byte screenStatus = 0x71; // New content (0x01) + Text Show (0x70) + byte[] header = new byte[]{(byte) TEXT_COMMAND, // Command type + (byte) textSeqNum, // Sequence number + (byte) totalChunks, // Total packages + (byte) i, // Current package number + screenStatus, // Screen status + (byte) 0x00, // new_char_pos0 (high) + (byte) 0x00, // new_char_pos1 (low) + (byte) page, // Current page number + (byte) totalPages // Max page number + }; + + // Combine header and payload + ByteBuffer chunk = ByteBuffer.allocate(header.length + payloadChunk.length); + chunk.put(header); + chunk.put(payloadChunk); + + allChunks.add(chunk.array()); + } + + // Increment sequence number for next page + textSeqNum = (textSeqNum + 1) % 256; + break; // hard set to 1 - 1PAGECHANGE + } + + return allChunks; + } + + // currently only a single page - 1PAGE CHANGE ,for Nex glasses + private byte[] createTextWallChunksForNex(String text) { + DisplayText textNewBuilder = DisplayText + .newBuilder() + .setText(text) + .setSize(20) + .setX(20) + .setY(260) + .setFontCode(20) + .setColor(10000).build(); + + Log.d(TAG, "createTextWallChunksForNex textNewBuilder:" + textNewBuilder.toString()); + // Create the PhoneToGlasses using its builder and set the DisplayText + PhoneToGlasses phoneToGlasses = PhoneToGlasses + .newBuilder() + .setDisplayText(textNewBuilder) + .build(); + + return generateProtobufCommandBytes(phoneToGlasses); + } + + private byte[] createTextWallChunksForNex(DisplayTextEvent displayTextEvent) { + DisplayText textNewBuilder = DisplayText + .newBuilder() + .setText(displayTextEvent.text) + .setSize(displayTextEvent.size) + .setX(displayTextEvent.x) + .setY(displayTextEvent.y) + .setFontCode(20) + .setColor(10000).build(); + + Log.d(TAG, "createTextWallChunksForNex textNewBuilder:" + textNewBuilder.toString()); + // Create the PhoneToGlasses using its builder and set the DisplayText + PhoneToGlasses phoneToGlasses = PhoneToGlasses + .newBuilder() + .setDisplayText(textNewBuilder) + .build(); + + return generateProtobufCommandBytes(phoneToGlasses); + } + + // TextWallChunks for text + private byte[] createTextWallChunksForNexForJson(String text) { + + DisplayTextJson displayText = new DisplayTextJson(); + displayText.setText(text); + displayText.setSize(20); + final String jsonData = gson.toJson(displayText); + + Log.d(TAG, "createTextWallChunksForNext json " + jsonData); + + byte[] contentBytes = jsonData.getBytes(StandardCharsets.UTF_8); + + ByteBuffer chunk = ByteBuffer.allocate(contentBytes.length + 1); + // Create the PhoneToGlasses using its builder and set the DisplayText + + chunk.put(PACKET_TYPE_JSON); + chunk.put(contentBytes); + + byte[] result = new byte[chunk.position()]; + chunk.flip(); + chunk.get(result); + return result; + } + + // create a VerticalScrollingfor Nex glasses + private byte[] createVerticalScrollingTextWallChunksForNex(String text) { + + DisplayScrollingText textNewBuilder = DisplayScrollingText.newBuilder().setText(text).setFontCode(100) + .setHeight(100).setWidth(200).setAlign(DisplayScrollingText.Alignment.CENTER).setLineSpacing(2) + .setLoop(true).setPauseMs(10).setSpeed(50).setX(20).setY(50).build(); + + // Create the PhoneToGlasses using its builder and set the DisplayScrollingText + PhoneToGlasses phoneToGlasses = PhoneToGlasses.newBuilder().setDisplayScrollingText(textNewBuilder).build(); + + return generateProtobufCommandBytes(phoneToGlasses); + } + + // send a tast image and display + private void startSendingDisplayImageTest() { + if (isImageSendProgressing) { + return; + } + isImageSendProgressing = true; + // byte[] exitCommand = new byte[] { (byte) 0x18 }; + // sendDataSequentially(exitCommand, false); + Log.d(TAG, "startSendingDisplayImageTest"); + + byte[] theClearBitmapOrSomething = loadEmptyBmpFromAssets(); + Bitmap bmp = BitmapJavaUtils.bytesToBitmap(theClearBitmapOrSomething); + try { + byte[] bmpBytes = BitmapJavaUtils.convertBitmapTo1BitBmpBytes(bmp, false); + displayBitmapImageForNexGlasses(bmpBytes); + } catch (Exception e) { + Log.e(TAG, "Error displaying clear bitmap: " + e.getMessage()); + } + } + + private byte[] createStartSendingImageChunksCommand(String streamId, int totalChunks) { + DisplayImage displayImage = DisplayImage.newBuilder().setStreamId(streamId).setTotalChunks(totalChunks).setX(20) + .setY(30).setWidth(30).setHeight(100).setEncoding("222").build(); + + // Create the PhoneToGlasses using its builder and set the DisplayText + PhoneToGlasses phoneToGlasses = PhoneToGlasses.newBuilder().setDisplayImage(displayImage).build(); + + return generateProtobufCommandBytes(phoneToGlasses); + } + + private int calculateTextWidth(String text) { + int width = 0; + for (char c : text.toCharArray()) { + G1FontLoader.FontGlyph glyph = fontLoader.getGlyph(c); + width += glyph.width + 1; // Add 1 pixel per character for spacing + } + return width * 2; + } + + private List createDoubleTextWallChunks(String text1, String text2) { + // Define column widths and positions + final int LEFT_COLUMN_WIDTH = (int) (DISPLAY_WIDTH * 0.5); // 40% of display for left column + final int RIGHT_COLUMN_START = (int) (DISPLAY_WIDTH * 0.55); // Right column starts at 60% + + // Split texts into lines with specific width constraints + List lines1 = splitIntoLines(text1, LEFT_COLUMN_WIDTH); + List lines2 = splitIntoLines(text2, DISPLAY_WIDTH - RIGHT_COLUMN_START); + + // Ensure we have exactly LINES_PER_SCREEN lines (typically 5) + while (lines1.size() < LINES_PER_SCREEN) { + lines1.add(""); + } + while (lines2.size() < LINES_PER_SCREEN) { + lines2.add(""); + } + + lines1 = lines1.subList(0, LINES_PER_SCREEN); + lines2 = lines2.subList(0, LINES_PER_SCREEN); + + // Get precise space width + int spaceWidth = calculateTextWidth(" "); + + // Construct the text output by merging the lines with precise positioning + StringBuilder pageText = new StringBuilder(); + for (int i = 0; i < LINES_PER_SCREEN; i++) { + String leftText = lines1.get(i).replace("\u2002", ""); // Drop enspaces + String rightText = lines2.get(i).replace("\u2002", ""); + + // Calculate width of left text in pixels + int leftTextWidth = calculateTextWidth(leftText); + + // Calculate exactly how many spaces are needed to position the right column + // correctly + int spacesNeeded = calculateSpacesForAlignment(leftTextWidth, RIGHT_COLUMN_START, spaceWidth); + + // Log detailed alignment info for debugging + Log.d(TAG, String.format("Line %d: Left='%s' (width=%dpx) | Spaces=%d | Right='%s'", i, leftText, + leftTextWidth, spacesNeeded, rightText)); + + // Construct the full line with precise alignment + pageText.append(leftText).append(" ".repeat(spacesNeeded)).append(rightText).append("\n"); + } + + // Convert to bytes and chunk for transmission + return chunkTextForTransmission(pageText.toString()); + } + + private int calculateSpacesForAlignment(int currentWidth, int targetPosition, int spaceWidth) { + // Calculate space needed in pixels + int pixelsNeeded = targetPosition - currentWidth; + + // Calculate spaces needed (with minimum of 1 space for separation) + if (pixelsNeeded <= 0) { + return 1; // Ensure at least one space between columns + } + + // Calculate the exact number of spaces needed + int spaces = (int) Math.ceil((double) pixelsNeeded / spaceWidth); + + // Cap at a reasonable maximum + return Math.min(spaces, 100); + } + + private List chunkTextForTransmission(String text) { + byte[] textBytes = text.getBytes(StandardCharsets.UTF_8); + int totalChunks = (int) Math.ceil((double) textBytes.length / MAX_CHUNK_SIZE); + + List allChunks = new ArrayList<>(); + for (int i = 0; i < totalChunks; i++) { + int start = i * MAX_CHUNK_SIZE; + int end = Math.min(start + MAX_CHUNK_SIZE, textBytes.length); + byte[] payloadChunk = Arrays.copyOfRange(textBytes, start, end); + + // Create header with protocol specifications + byte screenStatus = 0x71; // New content (0x01) + Text Show (0x70) + byte[] header = new byte[]{(byte) TEXT_COMMAND, // Command type + (byte) textSeqNum, // Sequence number + (byte) totalChunks, // Total packages + (byte) i, // Current package number + screenStatus, // Screen status + (byte) 0x00, // new_char_pos0 (high) + (byte) 0x00, // new_char_pos1 (low) + (byte) 0x00, // Current page number (always 0 for now) + (byte) 0x01 // Max page number (always 1) + }; + + // Combine header and payload + ByteBuffer chunk = ByteBuffer.allocate(header.length + payloadChunk.length); + chunk.put(header); + chunk.put(payloadChunk); + + allChunks.add(chunk.array()); + } + + // Increment sequence number for next page + textSeqNum = (textSeqNum + 1) % 256; + + return allChunks; + } + + private int calculateSubstringWidth(String text, int start, int end) { + return calculateTextWidth(text.substring(start, end)); + } + + private List splitIntoLines(String text, int maxDisplayWidth) { + // Replace specific symbols + text = text.replace("โฌ†", "^").replace("โŸถ", "-"); + + List lines = new ArrayList<>(); + + // Handle empty or single space case + if (text.isEmpty() || " ".equals(text)) { + lines.add(text); + return lines; + } + + // Split by newlines first + String[] rawLines = text.split("\n"); + + Log.d(TAG, "Splitting text into lines..." + Arrays.toString(rawLines)); + + for (String rawLine : rawLines) { + // Add empty lines for newlines + if (rawLine.isEmpty()) { + lines.add(""); + continue; + } + + int lineLength = rawLine.length(); + int startIndex = 0; + + while (startIndex < lineLength) { + // Get maximum possible end index + int endIndex = lineLength; + + // Calculate width of the entire remaining text + int lineWidth = calculateSubstringWidth(rawLine, startIndex, endIndex); + + Log.d(TAG, "Line length: " + rawLine); + Log.d(TAG, "Calculating line width: " + lineWidth); + + // If entire line fits, add it and move to next line + if (lineWidth <= maxDisplayWidth) { + lines.add(rawLine.substring(startIndex)); + break; + } + + // Binary search to find the maximum number of characters that fit + int left = startIndex + 1; + int right = lineLength; + int bestSplitIndex = startIndex + 1; + + while (left <= right) { + int mid = left + (right - left) / 2; + int width = calculateSubstringWidth(rawLine, startIndex, mid); + + if (width <= maxDisplayWidth) { + bestSplitIndex = mid; + left = mid + 1; + } else { + right = mid - 1; + } + } + + // Now find a good place to break (preferably at a space) + int splitIndex = bestSplitIndex; + + // Look for a space to break at + boolean foundSpace = false; + for (int i = bestSplitIndex; i > startIndex; i--) { + if (rawLine.charAt(i - 1) == ' ') { + splitIndex = i; + foundSpace = true; + break; + } + } + + // If we couldn't find a space in a reasonable range, use the calculated split + // point + if (!foundSpace && bestSplitIndex - startIndex > 2) { + splitIndex = bestSplitIndex; + } + + // Add the line + String line = rawLine.substring(startIndex, splitIndex).trim(); + lines.add(line); + + // Skip any spaces at the beginning of the next line + while (splitIndex < lineLength && rawLine.charAt(splitIndex) == ' ') { + splitIndex++; + } + + startIndex = splitIndex; + } + } + + return lines; + } + + private void sendPeriodicTextWall() { + if (!isConnected()) { + Log.d(TAG, "Cannot send text wall: Not connected to glasses"); + return; + } + + Log.d(TAG, "^^^^^^^^^^^^^ SENDING DEBUG TEXT WALL"); + + // Example text wall content - replace with your actual text content + String sampleText = "This is an example of a text wall that will be displayed on the glasses. " + + "It demonstrates how text can be split into multiple pages and displayed sequentially. "; +// + "Each page contains multiple lines, and each line is carefully formatted to fit the display width. " +// + "The text continues across multiple pages, showing how longer content can be handled effectively."; + final boolean isForG1Glasses = false; + // for g1 + if (isForG1Glasses) { + List chunks = createTextWallChunks(sampleText); + // for NEXglasses + // Send each chunk with a delay between sends + for (byte[] chunk : chunks) { + sendDataSequentially(chunk); + + // try { + // Thread.sleep(150); // 150ms delay between chunks + // } catch (InterruptedException e) { + // e.printStackTrace(); + // } + } + + // Log.d(TAG, "Sent text wall"); + } else { + final boolean isDisplayVerticalScrollingText = false; + if (isDisplayVerticalScrollingText) { + Log.d(TAG, "Sent scrolling text wall " + sampleText + " to NexGlasses "); + + byte[] singleChunks = createVerticalScrollingTextWallChunksForNex(sampleText); + sendDataSequentially(singleChunks); + } else { + // sampleText = "Hello world " + random.nextInt(); + sampleText = sampleText + " " + random.nextInt(); + Log.d(TAG, "Sent text wall " + sampleText + " to NexGlasses "); + + byte[] singleChunks = createTextWallChunksForNex(sampleText); + // byte[] singleChunks = createTextWallChunksForNexForJson(sampleText); + sendDataSequentially(singleChunks); + } + } + } + + private String bytesToUtf8(byte[] bytes) { + return new String(bytes, StandardCharsets.UTF_8); + } + + private void stopPeriodicNotifications() { + if (notificationHandler != null && notificationRunnable != null) { + notificationHandler.removeCallbacks(notificationRunnable); + Log.d(TAG, "Stopped periodic notifications"); + } + } + + // handle white list stuff + private final int WHITELIST_CMD = 0x04; // Command ID for whitelist + + public List getWhitelistChunks() { + // Define the hardcoded whitelist JSON + List apps = new ArrayList<>(); + apps.add(new AppInfo("com.augment.os", "AugmentOS")); + String whitelistJson = createWhitelistJson(apps); + + Log.d(TAG, "Creating chunks for hardcoded whitelist: " + whitelistJson); + + // Convert JSON to bytes and split into chunks + return createWhitelistChunks(whitelistJson); + } + + private String createWhitelistJson(List apps) { + JSONArray appList = new JSONArray(); + try { + // Add each app to the list + for (AppInfo app : apps) { + JSONObject appJson = new JSONObject(); + appJson.put("id", app.getId()); + appJson.put("name", app.getName()); + appList.put(appJson); + } + + JSONObject whitelistJson = new JSONObject(); + whitelistJson.put("calendar_enable", false); + whitelistJson.put("call_enable", false); + whitelistJson.put("msg_enable", false); + whitelistJson.put("ios_mail_enable", false); + + JSONObject appObject = new JSONObject(); + appObject.put("list", appList); + appObject.put("enable", true); + + whitelistJson.put("app", appObject); + + return whitelistJson.toString(); + } catch (JSONException e) { + Log.e(TAG, "Error creating whitelist JSON: " + e.getMessage()); + return "{}"; + } + } + + // Simple class to hold app info + class AppInfo { + private String id; + private String name; + + public AppInfo(String id, String name) { + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } + } + + // Helper function to split JSON into chunks + private List createWhitelistChunks(String json) { + // final int MAX_CHUNK_SIZE = 180 - 4; // Reserve space for the header + byte[] jsonBytes = json.getBytes(StandardCharsets.UTF_8); + int totalChunks = (int) Math.ceil((double) jsonBytes.length / MAX_CHUNK_SIZE); + + List chunks = new ArrayList<>(); + for (int i = 0; i < totalChunks; i++) { + int start = i * MAX_CHUNK_SIZE; + int end = Math.min(start + MAX_CHUNK_SIZE, jsonBytes.length); + byte[] payloadChunk = Arrays.copyOfRange(jsonBytes, start, end); + + // Create the header: [WHITELIST_CMD, total_chunks, chunk_index] + byte[] header = new byte[]{(byte) WHITELIST_CMD, // Command ID + (byte) totalChunks, // Total number of chunks + (byte) i // Current chunk index + }; + + // Combine header and payload + ByteBuffer buffer = ByteBuffer.allocate(header.length + payloadChunk.length); + buffer.put(header); + buffer.put(payloadChunk); + + chunks.add(buffer.array()); + } + + return chunks; + } + + @Override + public void onDisplayTextNotified(DisplayTextEvent displayTextEvent) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + byte[] textChunks = createTextWallChunksForNex(displayTextEvent); + sendDataSequentially(textChunks); + } + + @Override + public void onDisplayImageNotified(DisplayImageEvent displayImageEvent) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + startSendingDisplayImageTest(); + } + + @Override + public void displayCustomContent(String content) { + if (!isConnected()) { + Log.d(TAG, "Not connected to glasses"); + return; + } + Log.d(TAG, "displayCustomContent content: " + content); + } + + private void sendChunks(List chunks) { + // Send each chunk with a delay between sends + for (byte[] chunk : chunks) { + sendDataSequentially(chunk); + + // try { + // Thread.sleep(DELAY_BETWEEN_CHUNKS_SEND); // delay between chunks + // } catch (InterruptedException e) { + // e.printStackTrace(); + // } + } + } + + // Add these class variables + private final byte[] GLASSES_ADDRESS = new byte[]{0x00, 0x1c, 0x00, 0x00}; + private final byte[] END_COMMAND = new byte[]{0x20, 0x0d, 0x0e}; + + // for g1 glasses + public void displayBitmapImage(byte[] bmpData) { + Log.d(TAG, "Starting BMP display process"); + + try { + if (bmpData == null || bmpData.length == 0) { + Log.e(TAG, "Invalid BMP data provided"); + return; + } + Log.d(TAG, "Processing BMP data, size: " + bmpData.length + " bytes"); + + // Split into chunks and send + List chunks = createBmpChunks(bmpData); + Log.d(TAG, "Created " + chunks.size() + " chunks"); + + // Send all chunks + sendBmpChunks(chunks); + + // Send end command + sendBmpEndCommand(); + + // Calculate and send CRC + sendBmpCRC(bmpData); + + lastThingDisplayedWasAnImage = true; + + } catch (Exception e) { + Log.e(TAG, "Error in displayBitmapImage: " + e.getMessage()); + } + } + + // for NexGlasses + public void displayBitmapImageForNexGlasses(byte[] bmpData) { + Log.d(TAG, "Starting BMP display process"); + + try { + if (bmpData == null || bmpData.length == 0) { + Log.e(TAG, "Invalid BMP data provided"); + return; + } + Log.d(TAG, "Processing BMP data, size: " + bmpData.length + " bytes"); + + // send the image start command first with the stream id + final int totalChunks = (int) Math.ceil((double) bmpData.length / BMP_CHUNK_SIZE); + final char streamId = (char) random.nextInt(); + final String streamIdText = "streamId" + streamId; + byte[] startImageSendingBytes = createStartSendingImageChunksCommand(streamIdText, totalChunks); + sendDataSequentially(startImageSendingBytes); + // Send all chunks + // Split into chunks and send + List chunks = createBmpChunksForNexGlasses(streamId, bmpData, totalChunks); + + // sendBmpChunks(chunks); + currentImageChunks = chunks; + sendDataSequentially(chunks); + + // Send end command + // sendBmpEndCommand(); + + // Calculate and send CRC + // sendBmpCRC(bmpData); + + // lastThingDisplayedWasAnImage = true; + + } catch (Exception e) { + Log.e(TAG, "Error in displayBitmapImage: " + e.getMessage()); + } + } + + // re send the image chunks that are missing + private void reSendImageMissingChunks(List missingChunksIndexList) { + if (!isImageSendProgressing) { + return; + } + if (currentImageChunks.isEmpty()) { + return; + } + if (missingChunksIndexList.isEmpty()) { + return; + } + List missingChunks = new ArrayList<>(); + for (int i = 0; i < missingChunksIndexList.size(); i++) { + missingChunks.add(currentImageChunks.get(i)); + } + + sendDataSequentially(missingChunks); + } + + // for g1 + private List createBmpChunks(byte[] bmpData) { + List chunks = new ArrayList<>(); + int totalChunks = (int) Math.ceil((double) bmpData.length / BMP_CHUNK_SIZE); + Log.d(TAG, "Creating " + totalChunks + " chunks from " + bmpData.length + " bytes"); + + for (int i = 0; i < totalChunks; i++) { + int start = i * BMP_CHUNK_SIZE; + int end = Math.min(start + BMP_CHUNK_SIZE, bmpData.length); + byte[] chunk = Arrays.copyOfRange(bmpData, start, end); + + // First chunk needs address bytes + if (i == 0) { + byte[] headerWithAddress = new byte[2 + GLASSES_ADDRESS.length + chunk.length]; + headerWithAddress[0] = 0x15; // Command + headerWithAddress[1] = (byte) (i & 0xFF); // Sequence + System.arraycopy(GLASSES_ADDRESS, 0, headerWithAddress, 2, GLASSES_ADDRESS.length); + System.arraycopy(chunk, 0, headerWithAddress, 6, chunk.length); + chunks.add(headerWithAddress); + } else { + byte[] header = new byte[2 + chunk.length]; + header[0] = 0x15; // Command + header[1] = (byte) (i & 0xFF); // Sequence + System.arraycopy(chunk, 0, header, 2, chunk.length); + chunks.add(header); + } + } + return chunks; + } + + // for NexGlasses + private List createBmpChunksForNexGlasses(char streamId, byte[] bmpData, int totalChunks) { + List chunks = new ArrayList<>(); + // int totalChunks = (int) Math.ceil((double) bmpData.length / BMP_CHUNK_SIZE); + Log.d(TAG, "Creating " + totalChunks + " chunks from " + bmpData.length + " bytes"); + int start; + int end; + byte[] chunk; + byte[] header; + for (int i = 0; i < totalChunks; i++) { + start = i * BMP_CHUNK_SIZE; + end = Math.min(start + BMP_CHUNK_SIZE, bmpData.length); + chunk = Arrays.copyOfRange(bmpData, start, end); + header = new byte[4 + chunk.length]; + header[0] = PACKET_TYPE_IMAGE; // Command + header[1] = (byte) ((streamId >> 8) & 0xFF); // Sequence + header[2] = (byte) (streamId & 0xFF); // Sequence + header[3] = (byte) (i & 0xFF); // Sequence + System.arraycopy(chunk, 0, header, 4, chunk.length); + chunks.add(header); + } + return chunks; + } + + private void sendBmpChunks(List chunks) { + if (updatingScreen) + return; + for (int i = 0; i < chunks.size(); i++) { + byte[] chunk = chunks.get(i); + Log.d(TAG, "Sending chunk " + i + " of " + chunks.size() + ", size: " + chunk.length); + sendDataSequentially(chunk); + + // try { + // Thread.sleep(25); // Small delay between chunks + // } catch (InterruptedException e) { + // Log.e(TAG, "Sleep interrupted: " + e.getMessage()); + // } + } + } + + private void sendBmpEndCommand() { + if (updatingScreen) { + return; + } + Log.d(TAG, "Sending BMP end command"); + sendDataSequentially(END_COMMAND); + + // try { + // Thread.sleep(100); // Give it time to process + // } catch (InterruptedException e) { + // Log.e(TAG, "Sleep interrupted: " + e.getMessage()); + // } + } + + private void sendBmpCRC(byte[] bmpData) { + // Create data with address for CRC calculation + byte[] dataWithAddress = new byte[GLASSES_ADDRESS.length + bmpData.length]; + System.arraycopy(GLASSES_ADDRESS, 0, dataWithAddress, 0, GLASSES_ADDRESS.length); + System.arraycopy(bmpData, 0, dataWithAddress, GLASSES_ADDRESS.length, bmpData.length); + + // Calculate CRC32 + CRC32 crc = new CRC32(); + crc.update(dataWithAddress); + long crcValue = crc.getValue(); + + // Create CRC command packet + byte[] crcCommand = new byte[5]; + crcCommand[0] = 0x16; // CRC command + crcCommand[1] = (byte) ((crcValue >> 24) & 0xFF); + crcCommand[2] = (byte) ((crcValue >> 16) & 0xFF); + crcCommand[3] = (byte) ((crcValue >> 8) & 0xFF); + crcCommand[4] = (byte) (crcValue & 0xFF); + + Log.d(TAG, "Sending CRC command, CRC value: " + Long.toHexString(crcValue)); + sendDataSequentially(crcCommand); + } + + private byte[] loadEmptyBmpFromAssets() { + try { + // test_bmp.bmp + // empty_bmp.bmp all black + try (InputStream is = context.getAssets().open("test_bmp.bmp")) { + return is.readAllBytes(); + } + } catch (IOException e) { + Log.e(TAG, "Failed to load BMP from assets: " + e.getMessage()); + return null; + } + } + + public void clearBmpDisplay() { + if (updatingScreen) { + return; + } + Log.d(TAG, "Clearing BMP display with EXIT command"); + byte[] exitCommand = new byte[]{0x18}; + sendDataSequentially(exitCommand); + } + + private void sendLoremIpsum() { + if (updatingScreen) { + return; + } + String text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. "; + sendDataSequentially(createTextWallChunks(text)); + } + + private void quickRestartNexGlasses() { + Log.d(TAG, "Sending restart 0x23 0x72 Command"); + sendDataSequentially(new byte[]{(byte) 0x23, (byte) 0x72}); // quick restart comand + } + + @Override + public void changeSmartGlassesMicrophoneState(boolean isMicrophoneEnabled) { + Log.d(TAG, "Microphone state changed: " + isMicrophoneEnabled); + + // Update the shouldUseGlassesMic flag to reflect the current state + this.shouldUseGlassesMic = isMicrophoneEnabled && SmartGlassesManager.getSensingEnabled(context);// && + // !SmartGlassesManager.getForceCoreOnboardMic(context); + Log.d(TAG, "Updated shouldUseGlassesMic to: " + shouldUseGlassesMic); + + if (isMicrophoneEnabled) { + Log.d(TAG, "Microphone enabled, starting audio input handling"); + setMicEnabled(true, 10); + startMicBeat((int) MICBEAT_INTERVAL_MS); + } else { + Log.d(TAG, "Microphone disabled, stopping audio input handling"); + setMicEnabled(false, 10); + stopMicBeat(); + } + } + + /** + * Returns whether the microphone is currently enabled + * + * @return true if microphone is enabled, false otherwise + */ + public boolean isMicrophoneEnabled() { + return isMicrophoneEnabled; + } + + /** + * Decodes Even NexGlasses serial number to extract style and color information + * + * @param serialNumber The full serial number (e.g., "S110LABD020021") + * @return Array containing [style, color] or ["Unknown", "Unknown"] if invalid + */ + public String[] decodeEvenNexGlassesSerialNumber(String serialNumber) { + if (serialNumber == null || serialNumber.length() < 6) { + return new String[]{"Unknown", "Unknown"}; + } + + // Style mapping: 3rd character (index 2) + String style; + switch (serialNumber.charAt(1)) { + case '0': + style = "Round"; + break; + case '1': + style = "Rectangular"; + break; + default: + style = "Round"; + break; + } + + // Color mapping: 5th character (index 4) + String color; + switch (serialNumber.charAt(4)) { + case 'A': + color = "Grey"; + break; + case 'B': + color = "Brown"; + break; + case 'C': + color = "Green"; + break; + default: + color = "Grey"; + break; + } + + return new String[]{style, color}; + } + + private void onCharacteristicChangedHandler(BluetoothGattCharacteristic characteristic) { + if (characteristic.getUuid().equals(NOTIFY_CHAR_UUID)) { + byte[] data = characteristic.getValue(); + String deviceName = mainGlassGatt.getDevice().getName(); + if (deviceName == null) { + return; + } + final String packetHex = bytesToHex(data); + Log.d(TAG, "onCharacteristicChangedHandler len: " + data.length); + Log.d(TAG, "onCharacteristicChangedHandler: " + packetHex); + final int dataLen = data.length; + if (dataLen == 0) { + return; + } + byte packetType = data[0]; + Log.d(TAG, "onCharacteristicChangedHandler packetType: " + String.format("%02X ", packetType)); + switch (packetType) { + case PACKET_TYPE_JSON: { + byte[] jsonData = Arrays.copyOfRange(data, 1, dataLen); + decodeJsons(jsonData); + } + break; + case PACKET_TYPE_PROTOBUF: { + byte[] protobufData = Arrays.copyOfRange(data, 1, dataLen); + decodeProtobufs(protobufData, packetHex); + } + break; + case PACKET_TYPE_AUDIO: { + // if (shouldUseGlassesMic) { + final int streamId = data[1] & 0xFF; // Sequence number + // eg. LC3 to PCM + final byte[] lc3Data = Arrays.copyOfRange(data, 2, dataLen); + // Log.d(TAG, "Lc3 Audio data received. audioProcessingCallback: " + + // audioProcessingCallback); + Log.d(TAG, "Lc3 Audio data received. lc3 size: " + lc3Data.length); + // Log.d(TAG, "Lc3 Audio data received. lc3 Data: " + bytesToHex(lc3Data)); + // decode the LC3 audio + if (lc3DecoderPtr != 0) { + final byte[] pcmData = L3cCpp.decodeLC3(lc3DecoderPtr, lc3Data); + // send the PCM out + Log.d(TAG, "pcmData size:" + pcmData.length); + // Log.d(TAG, "pcmData hex:" + bytesToHex(pcmData)); + pcmAudioPlayer.playPCMData(pcmData); + if (audioProcessingCallback != null) { + if (pcmData != null && pcmData.length > 0) { + // Log.d(TAG, "set onAudioDataAvailable pcmData"); + audioProcessingCallback.onAudioDataAvailable(pcmData); + } + } else { + // If we get here, it means the callback wasn't properly registered + Log.e(TAG, "Audio processing callback is null - callback registration failed!"); + } + // } + // server does not support lc3 + // send through the LC3 + // Log.d(TAG, "set onAudioDataAvailable Lc3 data"); + // audioProcessingCallback.onLC3AudioDataAvailable(lc3); + } + } + break; + case PACKET_TYPE_IMAGE: + break; + } + } + } + + private void decodeJsons(byte[] jsonBytes) { + final String jsoString = new String(jsonBytes, Charset.defaultCharset()); + try { + JSONObject commandObject = new JSONObject(jsoString); + String type = commandObject.getString("type"); + switch (type) { + case "image_transfer_complete": + break; + case "disconnect": + break; + case "request_battery_state": + break; + case "charging_state": + break; + case "device_info": + // final DeviceInfo deviceInfo = gson.fromJson(jsoString, DeviceInfo.class); + break; + case "enter_pairing_mode": + break; + case "request_head_position": + break; + case "set_head_up_angle": + break; + case "ping": + break; + case "vad_event": + break; + case "imu_data": + break; + case "button_event": + break; + case "head_gesture": + break; + default: + break; + } + } catch (Exception e) { + } + } + + private void decodeProtobufsByWrite(byte[] protobufBytes, String packetHex) { + try { + final PhoneToGlasses phoneToGlasses = PhoneToGlasses.parseFrom(protobufBytes); + Log.d(TAG, "decodeProtobufsByWrite phoneToGlasses: " + phoneToGlasses.toString()); + Log.d(TAG, "decodeProtobufsByWrite phoneToGlasses payloadCase: " + phoneToGlasses.getPayloadCase()); + final String payloadCase = phoneToGlasses.getPayloadCase().toString(); + + if (isDebugMode) { + EventBus.getDefault() + .post(new BleCommandSender(payloadCase, packetHex)); + } + } catch (Exception e) { + } + } + + // decodeProtobufs from binary bytes + private void decodeProtobufs(byte[] protobufBytes, String packetHex) { + try { + final GlassesToPhone glassesToPhone = GlassesToPhone.parseFrom(protobufBytes); + final String payloadCase = glassesToPhone.getPayloadCase().toString(); + Log.d(TAG, "decodeProtobufs glassesToPhone: " + glassesToPhone.toString()); + Log.d(TAG, "decodeProtobufs glassesToPhone payloadCase: " + payloadCase); + if (isDebugMode) { + EventBus.getDefault() + .post(new BleCommandReceiver(payloadCase, packetHex)); + } + switch (glassesToPhone.getPayloadCase()) { + case BATTERY_STATUS: { + final BatteryStatus batteryStatus = glassesToPhone.getBatteryStatus(); + batteryMain = batteryStatus.getLevel(); + EventBus.getDefault() + .post(new BatteryLevelEvent(batteryStatus.getLevel(), batteryStatus.getCharging())); + // EventBus.getDefault().post(new CaseEvent(caseBatteryLevel, caseCharging, + // caseOpen, caseRemoved)); + Log.d(TAG, "batteryStatus: " + batteryStatus.toString()); + } + break; + case CHARGING_STATE: { + final ChargingState chargingState = glassesToPhone.getChargingState(); + + EventBus.getDefault() + .post(new BatteryLevelEvent(batteryMain, chargingState.getState() == State.CHARGING)); + Log.d(TAG, "chargingState: " + chargingState.toString()); + + } + break; + case DEVICE_INFO: { + final DeviceInfo deviceInfo = glassesToPhone.getDeviceInfo(); + Log.d(TAG, "deviceInfo: " + deviceInfo.toString()); + } + break; + case HEAD_POSITION: { + final HeadPosition headPosition = glassesToPhone.getHeadPosition(); + EventBus.getDefault().post(new HeadUpAngleEvent(headPosition.getAngle())); + Log.d(TAG, "headPosition: " + headPosition.toString()); + } + break; + case HEAD_UP_ANGLE_SET: { + final HeadUpAngleResponse headUpAngleResponse = glassesToPhone.getHeadUpAngleSet(); + final boolean setResult = headUpAngleResponse.getSuccess(); + // EventBus.getDefault().post(new + // HeadUpAngleEvent(headUpAngleResponse.getHeadUpAngle())); + // EventBus.getDefault().post(new HeadUpAngleEvent(headUpAngle)); + Log.d(TAG, "headUpAngleResponse: " + headUpAngleResponse.toString()); + } + break; + case VAD_EVENT: { + // final VadEvent vadEvent = glassesToPhone.getVadEvent(); + // EventBus.getDefault().post(new VadEvent(vadEvent.getVad())); + } + break; + case IMAGE_TRANSFER_COMPLETE: { + final ImageTransferComplete transferComplete = glassesToPhone.getImageTransferComplete(); + Log.d(TAG, "transferComplete: " + transferComplete.toString()); + // EventBus.getDefault().post(new + // ImageTransferCompleteEvent(transferComplete.getImageTransferComplete())); + final ImageTransferComplete.Status status = transferComplete.getStatus(); + switch (status) { + case OK: + currentImageChunks.clear(); + isImageSendProgressing = false; + break; + case INCOMPLETE: + List missingChunksList = transferComplete.getMissingChunksList(); + reSendImageMissingChunks(missingChunksList); + break; + } + } + break; + case IMU_DATA: { + final ImuData imuData = glassesToPhone.getImuData(); + Log.d(TAG, "imuData: " + imuData.toString()); + } + 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)); + } + break; + case HEAD_GESTURE: { + final HeadGesture headGesture = glassesToPhone.getHeadGesture(); + Log.d(TAG, "headGesture: " + headGesture.toString()); + // EventBus.getDefault().post(new GlassesHeadUpEvent()); + // EventBus.getDefault().post(new GlassesHeadDownEvent()); + // EventBus.getDefault().post(new GlassesTapOutputEvent(2, isRight, + // System.currentTimeMillis())); + } + break; + case PAYLOAD_NOT_SET: { + } + break; + default: + break; + } + + } catch (InvalidProtocolBufferException e) { + e.printStackTrace(); // Handle parsing error + } + + } + + /** + * Decodes serial number from manufacturer data bytes + * + * @param manufacturerData The manufacturer data bytes + * @return Decoded serial number string or null if not found + */ + private String decodeSerialFromManufacturerData(byte[] manufacturerData) { + if (manufacturerData == null || manufacturerData.length < 10) { + return null; + } + + try { + // Convert hex bytes to ASCII string + StringBuilder serialBuilder = new StringBuilder(); + for (int i = 0; i < manufacturerData.length; i++) { + byte b = manufacturerData[i]; + if (b == 0x00) { + // Stop at null terminator + break; + } + if (b >= 0x20 && b <= 0x7E) { + // Only include printable ASCII characters + serialBuilder.append((char) b); + } + } + + String decodedString = serialBuilder.toString().trim(); + + // Check if it looks like a valid Even NexGlasses serial number + if (decodedString.length() >= 12 && (decodedString.startsWith("S1") || decodedString.startsWith("100") + || decodedString.startsWith("110"))) { + return decodedString; + } + + return null; + } catch (Exception e) { + Log.e(TAG, "Error decoding manufacturer data: " + e.getMessage()); + return null; + } + } + + private Boolean isDebug(Context context) { + return BuildConfig.DEBUG; + } + + private class DisplayTextJson { + private String type; + private String msg_id; + private String text; + private String color; + private String font_code; + private int x; + private int y; + private int size; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getMsg_id() { + return msg_id; + } + + public void setMsg_id(String msg_id) { + this.msg_id = msg_id; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getFont_code() { + return font_code; + } + + public void setFont_code(String font_code) { + this.font_code = font_code; + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + } +} diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/SmartGlassesCommunicator.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/SmartGlassesCommunicator.java index 6307f5dbe5..f583f1853a 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/SmartGlassesCommunicator.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/SmartGlassesCommunicator.java @@ -5,8 +5,11 @@ import android.os.Looper; import android.util.Log; +import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.SmartGlassesDevice; import com.augmentos.augmentoslib.events.GlassesTapOutputEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.SmartGlassesConnectionEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.DisplayTextEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.DisplayImageEvent; import com.augmentos.augmentos_core.smarterglassesmanager.hci.AudioProcessingCallback; import com.augmentos.augmentos_core.smarterglassesmanager.utils.SmartGlassesConnectionState; @@ -21,41 +24,52 @@ public abstract class SmartGlassesCommunicator { // Audio callback for direct processing (replacing EventBus) public AudioProcessingCallback audioProcessingCallback; - public abstract void connectToSmartGlasses(); + public abstract void connectToSmartGlasses(SmartGlassesDevice device); + public abstract void findCompatibleDeviceNames(); + public abstract void blankScreen(); + public abstract void destroy(); + public final String commandNaturalLanguageString = "Command: "; public final String finishNaturalLanguageString = "'finish command' when done"; - public void setUpdatingScreen(boolean updatingScreen) {} + public void setUpdatingScreen(boolean updatingScreen) { + } //reference card public abstract void displayReferenceCardSimple(String title, String body); //display text wall public abstract void displayTextWall(String text); + public abstract void displayDoubleTextWall(String textTop, String textBottom); public abstract void displayReferenceCardImage(String title, String body, String imgUrl); - public abstract void displayBulletList(String title, String [] bullets); + + public abstract void displayBulletList(String title, String[] bullets); + public abstract void displayRowsCard(String[] rowStrings); //voice command UI public abstract void showNaturalLanguageCommandScreen(String prompt, String naturalLanguageArgs); + public abstract void updateNaturalLanguageCommandScreen(String naturalLanguageArgs); //scrolling text view - public void startScrollingTextViewMode(String title){ + public void startScrollingTextViewMode(String title) { setMode(SmartGlassesModes.SCROLLING_TEXT_VIEW); } public abstract void scrollingTextViewIntermediateText(String text); + public abstract void scrollingTextViewFinalText(String text); + public abstract void stopScrollingTextViewMode(); //prompt view card - public abstract void displayPromptView(String title, String [] options); + public abstract void displayPromptView(String title, String[] options); //display text line public abstract void displayTextLine(String text); @@ -69,23 +83,31 @@ public void startScrollingTextViewMode(String title){ public abstract void setFontSize(SmartGlassesFontSize fontSize); + public void onDisplayTextNotified(DisplayTextEvent displayTextEvent) { + + } + + public void onDisplayImageNotified(DisplayImageEvent displayImageEvent) { + + } + //fonts public int LARGE_FONT; public int MEDIUM_FONT; public int SMALL_FONT; - public SmartGlassesCommunicator(){ + public SmartGlassesCommunicator() { setFontSizes(); } //must be run and set font sizes protected abstract void setFontSizes(); - public SmartGlassesConnectionState getConnectionState(){ + public SmartGlassesConnectionState getConnectionState() { return mConnectState; } - protected boolean isConnected(){ + protected boolean isConnected() { return (mConnectState == SmartGlassesConnectionState.CONNECTED); } @@ -120,21 +142,32 @@ public void connectionEvent(SmartGlassesConnectionState connectState) { isPending = false; }, DEBOUNCE_DELAY_MS); } - public void tapEvent(int num){ + + public void tapEvent(int num) { EventBus.getDefault().post(new GlassesTapOutputEvent(num, false, System.currentTimeMillis())); } - public void setMode(SmartGlassesModes mode){ + public void setMode(SmartGlassesModes mode) { currentMode = mode; } - public void updateGlassesBrightness(int brightness) {} - public void updateGlassesAutoBrightness(boolean autoBrightness) {} - public void updateGlassesHeadUpAngle(int headUpAngle) {} - public void updateGlassesDepthHeight(int depth, int height) {} - public void sendExitCommand() {} + public void updateGlassesBrightness(int brightness) { + } + + public void updateGlassesAutoBrightness(boolean autoBrightness) { + } + + public void updateGlassesHeadUpAngle(int headUpAngle) { + } + + public void updateGlassesDepthHeight(int depth, int height) { + } - public void changeSmartGlassesMicrophoneState(boolean isMicrophoneEnabled) {} + public void sendExitCommand() { + } + + public void changeSmartGlassesMicrophoneState(boolean isMicrophoneEnabled) { + } /** * Registers an audio processing callback to receive audio data directly @@ -145,7 +178,7 @@ public void changeSmartGlassesMicrophoneState(boolean isMicrophoneEnabled) {} public void registerAudioProcessingCallback(AudioProcessingCallback callback) { this.audioProcessingCallback = callback; Log.e("SmartGlassesCommunicator", "โญโญโญ REGISTERED AUDIO CALLBACK: " + - (callback != null ? "NOT NULL" : "NULL") + " in " + this.getClass().getSimpleName()); + (callback != null ? "NOT NULL" : "NULL") + " in " + this.getClass().getSimpleName()); } /** @@ -163,8 +196,8 @@ public void sendCustomCommand(String commandJson) { /** * Requests the smart glasses to take a photo * - * @param requestId The unique ID for this photo request - * @param appId The ID of the app requesting the photo + * @param requestId The unique ID for this photo request + * @param appId The ID of the app requesting the photo * @param webhookUrl The webhook URL where the photo should be uploaded directly */ public void requestPhoto(String requestId, String appId, String webhookUrl) { @@ -177,7 +210,7 @@ public void requestPhoto(String requestId, String appId, String webhookUrl) { * Default implementation does nothing - specific communicators should override * * @param requestId The unique ID for this photo request - * @param appId The ID of the app requesting the photo + * @param appId The ID of the app requesting the photo */ public void requestPhoto(String requestId, String appId) { // Default implementation does nothing @@ -228,7 +261,7 @@ public void requestWifiScan() { * Sends WiFi credentials to the smart glasses * Default implementation does nothing - specific communicators should override * - * @param ssid The WiFi network name + * @param ssid The WiFi network name * @param password The WiFi password */ public void sendWifiCredentials(String ssid, String password) { diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/UltraliteSGC.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/UltraliteSGC.java index d60db4d019..0f70139f32 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/UltraliteSGC.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/UltraliteSGC.java @@ -236,7 +236,7 @@ public void findCompatibleDeviceNames() { } @Override - public void connectToSmartGlasses(){ + public void connectToSmartGlasses(SmartGlassesDevice device){ Log.d(TAG, "connectToSmartGlasses running..."); // int mCount = 10; // while ((mConnectState != 2) && (!hasUltraliteControl) && (mCount > 0)){ diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/VirtualSGC.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/VirtualSGC.java index 1ae8535336..621c706036 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/VirtualSGC.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/VirtualSGC.java @@ -28,7 +28,7 @@ public VirtualSGC(Context context, SmartGlassesDevice smartGlassesDevice){ public void setFontSizes(){ } - public void connectToSmartGlasses(){ + public void connectToSmartGlasses(SmartGlassesDevice device){ Log.d(TAG, "Connecting to simulated glasses - enabling audio processing"); connectionEvent(SmartGlassesConnectionState.CONNECTED); } diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/special/SelfSGC.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/special/SelfSGC.java index 4f4c5638f1..f7f5b10959 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/special/SelfSGC.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassescommunicators/special/SelfSGC.java @@ -118,7 +118,7 @@ protected void setFontSizes(){ SMALL_FONT = 0; } - public void connectToSmartGlasses(){ + public void connectToSmartGlasses(SmartGlassesDevice device){ // Right now, this is the code running onboard our android-based meta ray-ban alternative // It has speakers, mic, camera, wifi // Let's just figure out camera for now diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassesconnection/SmartGlassesRepresentative.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassesconnection/SmartGlassesRepresentative.java index eee7282dde..5eaf0cbb94 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassesconnection/SmartGlassesRepresentative.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/smartglassesconnection/SmartGlassesRepresentative.java @@ -27,9 +27,12 @@ import com.augmentos.augmentoslib.events.HomeScreenEvent; import com.augmentos.augmentoslib.events.SendBitmapViewRequestEvent; import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.SetFontSizeEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.DisplayTextEvent; +import com.augmentos.augmentos_core.smarterglassesmanager.eventbusmessages.DisplayImageEvent; import com.augmentos.augmentoslib.events.TextWallViewRequestEvent; import com.augmentos.augmentos_core.smarterglassesmanager.smartglassescommunicators.AudioWearableSGC; import com.augmentos.augmentos_core.smarterglassesmanager.smartglassescommunicators.EvenRealitiesG1SGC; +import com.augmentos.augmentos_core.smarterglassesmanager.smartglassescommunicators.MentraNexSGC; import com.augmentos.augmentos_core.smarterglassesmanager.smartglassescommunicators.MentraLiveSGC; import com.augmentos.augmentos_core.smarterglassesmanager.smartglassescommunicators.UltraliteSGC; import com.augmentos.augmentoslib.events.BulletPointListViewRequestEvent; @@ -127,7 +130,7 @@ public void findCompatibleDeviceNames(){ } } - public void connectToSmartGlasses(){ + public void connectToSmartGlasses(SmartGlassesDevice device) { // Similar to findCompatibleDeviceNames, always create a fresh communicator // This ensures we don't reuse a communicator with null fields after destroy() if (smartGlassesCommunicator != null) { @@ -140,7 +143,7 @@ public void connectToSmartGlasses(){ if (smartGlassesCommunicator != null) { Log.d(TAG, "Connecting to smart glasses with fresh communicator"); - smartGlassesCommunicator.connectToSmartGlasses(); + smartGlassesCommunicator.connectToSmartGlasses(device); } else { Log.e(TAG, "Failed to create SmartGlassesCommunicator for connection"); } @@ -185,6 +188,10 @@ private SmartGlassesCommunicator createCommunicator() { communicator = new EvenRealitiesG1SGC(context, smartGlassesDevice); break; + case MENTRA_NEX_GLASSES: + communicator = new MentraNexSGC(context, smartGlassesDevice); + break; + case SELF_OS_GLASSES: communicator = new SelfSGC(context, smartGlassesDevice); break; @@ -527,7 +534,25 @@ public void onPromptViewRequestEvent(PromptViewRequestEvent receivedEvent) { } } - public void changeMicrophoneState(boolean isMicrophoneEnabled, List requiredData) {} + + @Subscribe + public void onDisplayTextNotified(DisplayTextEvent displayTextEvent) { + Log.d(TAG, "onDisplayTextNotified called"); + if (smartGlassesCommunicator != null) { + smartGlassesCommunicator.onDisplayTextNotified(displayTextEvent); + } + } + + @Subscribe + public void onDisplayImageNotified(DisplayImageEvent displayImageEvent) { + Log.d(TAG, "onDisplayImageNotified called"); + if (smartGlassesCommunicator != null) { + smartGlassesCommunicator.onDisplayImageNotified(displayImageEvent); + } + } + + public void changeMicrophoneState(boolean isMicrophoneEnabled) { + } /** * Sends WiFi credentials to the smart glasses diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/speechrecognition/augmentos/SpeechRecAugmentos.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/speechrecognition/augmentos/SpeechRecAugmentos.java index ff494b28ad..107ac2498f 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/speechrecognition/augmentos/SpeechRecAugmentos.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/speechrecognition/augmentos/SpeechRecAugmentos.java @@ -54,7 +54,7 @@ public class SpeechRecAugmentos extends SpeechRecFramework { // Sherpa ONNX Transcriber private SherpaOnnxTranscriber sherpaTranscriber; - + // Backend data sending control flags private volatile boolean sendPcmToBackend = true; private volatile boolean sendTranscriptionToBackend = false; @@ -468,7 +468,7 @@ public void handleSpeechJson(JSONObject msg) { /** * Handles microphone state changes and propagates to all components - * + * * @param state true if microphone is on, false otherwise * @param requiredData List of required data */ @@ -477,7 +477,7 @@ public void microphoneStateChanged(boolean state, List r if (vadPolicy != null){ vadPolicy.microphoneStateChanged(state); } - + // Pass to transcriber if (sherpaTranscriber != null && sherpaTranscriber.isInitialized()) { sherpaTranscriber.microphoneStateChanged(state); @@ -506,7 +506,7 @@ public void microphoneStateChanged(boolean state, List r this.sendTranscriptionToBackend = false; } } - + Log.d(TAG, "Microphone state changed to: " + (state ? "ON" : "OFF") + " with required data: " + requiredData); } diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/MentraNexGlasses.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/MentraNexGlasses.java new file mode 100644 index 0000000000..d06d3036b3 --- /dev/null +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/MentraNexGlasses.java @@ -0,0 +1,21 @@ +package com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses; + +import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.SmartGlassesDevice; +import com.augmentos.augmentos_core.smarterglassesmanager.supportedglasses.SmartGlassesOperatingSystem; + +public class MentraNexGlasses extends SmartGlassesDevice { + public MentraNexGlasses() { + deviceModelName = "Mentra Nex"; + deviceIconName = "er_g1"; + anySupport = true; + fullSupport = true; + glassesOs = SmartGlassesOperatingSystem.MENTRA_NEX_GLASSES; + hasDisplay = true; + hasSpeakers = false; + hasCamera = false; + hasInMic = true; + hasOutMic = false; + useScoMic = false; + weight = 37; + } +} \ No newline at end of file diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/SmartGlassesDevice.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/SmartGlassesDevice.java index 691d767d7e..8407ae5a92 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/SmartGlassesDevice.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/SmartGlassesDevice.java @@ -7,6 +7,8 @@ public class SmartGlassesDevice implements Serializable { public String deviceModelName; public String deviceIconName; + public String deviceName; + public String deviceAddress; public boolean anySupport; public boolean fullSupport; public SmartGlassesOperatingSystem glassesOs; @@ -115,4 +117,20 @@ public int getConnectionState() { public void setConnectionState(int connectionState) { this.connectionState = connectionState; } + + public String getDeviceAddress() { + return deviceAddress; + } + + public void setDeviceAddress(String deviceAddress) { + this.deviceAddress = deviceAddress; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } } diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/SmartGlassesOperatingSystem.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/SmartGlassesOperatingSystem.java index dbbd77cca3..94a28f889e 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/SmartGlassesOperatingSystem.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/smarterglassesmanager/supportedglasses/SmartGlassesOperatingSystem.java @@ -6,6 +6,7 @@ public enum SmartGlassesOperatingSystem { ACTIVELOOK_OS_GLASSES, ULTRALITE_MCU_OS_GLASSES, EVEN_REALITIES_G1_MCU_OS_GLASSES, + MENTRA_NEX_GLASSES, INMO_GO_MCU_OS_GLASSES, AUDIO_WEARABLE_GLASSES, VIRTUAL_WEARABLE, diff --git a/android_core/app/src/main/java/com/augmentos/augmentos_core/ui/SettingsUi.java b/android_core/app/src/main/java/com/augmentos/augmentos_core/ui/SettingsUi.java index c7139366bd..2fa95793f6 100644 --- a/android_core/app/src/main/java/com/augmentos/augmentos_core/ui/SettingsUi.java +++ b/android_core/app/src/main/java/com/augmentos/augmentos_core/ui/SettingsUi.java @@ -64,7 +64,7 @@ public void onClick(View v) { connectSmartGlassesButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { ((MainActivity)getActivity()).mService.disconnectWearable(""); - ((MainActivity)getActivity()).mService.connectToWearable("",""); + ((MainActivity)getActivity()).mService.connectToWearable("","",""); } }); @@ -77,12 +77,13 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { if (isChecked){ SmartGlassesManager.savePreferredWearable(getContext(), new AudioWearable().deviceModelName); ((MainActivity)getActivity()).mService.disconnectWearable(""); - ((MainActivity)getActivity()).mService.connectToWearable("",""); + ((MainActivity)getActivity()).mService.connectToWearable("","",""); } else { SmartGlassesManager.savePreferredWearable(getContext(), ""); + SmartGlassesManager.savePreferredWearableAddress(getContext(), ""); ((MainActivity)getActivity()).mService.disconnectWearable(""); - ((MainActivity)getActivity()).mService.connectToWearable("",""); + ((MainActivity)getActivity()).mService.connectToWearable("","",""); } } }); diff --git a/android_core/app/src/main/java/mentraos/ble/MentraosBle.java b/android_core/app/src/main/java/mentraos/ble/MentraosBle.java new file mode 100644 index 0000000000..a74511d1b7 --- /dev/null +++ b/android_core/app/src/main/java/mentraos/ble/MentraosBle.java @@ -0,0 +1,22602 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: mentraos_ble.proto + +// Protobuf Java Version: 3.25.1 +package mentraos.ble; + +public final class MentraosBle { + private MentraosBle() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + public interface PhoneToGlassesOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.PhoneToGlasses) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * Optional message ID for request/response correlation
+     * 
+ * + * string msg_id = 1; + * @return The msgId. + */ + java.lang.String getMsgId(); + /** + *
+     * Optional message ID for request/response correlation
+     * 
+ * + * string msg_id = 1; + * @return The bytes for msgId. + */ + com.google.protobuf.ByteString + getMsgIdBytes(); + + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + * @return Whether the disconnect field is set. + */ + boolean hasDisconnect(); + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + * @return The disconnect. + */ + mentraos.ble.MentraosBle.DisconnectRequest getDisconnect(); + + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + * @return Whether the batteryState field is set. + */ + boolean hasBatteryState(); + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + * @return The batteryState. + */ + mentraos.ble.MentraosBle.BatteryStateRequest getBatteryState(); + + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + * @return Whether the glassesInfo field is set. + */ + boolean hasGlassesInfo(); + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + * @return The glassesInfo. + */ + mentraos.ble.MentraosBle.GlassesInfoRequest getGlassesInfo(); + + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + * @return Whether the pairingMode field is set. + */ + boolean hasPairingMode(); + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + * @return The pairingMode. + */ + mentraos.ble.MentraosBle.PairingModeRequest getPairingMode(); + + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + * @return Whether the headPosition field is set. + */ + boolean hasHeadPosition(); + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + * @return The headPosition. + */ + mentraos.ble.MentraosBle.HeadPositionRequest getHeadPosition(); + + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + * @return Whether the headUpAngle field is set. + */ + boolean hasHeadUpAngle(); + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + * @return The headUpAngle. + */ + mentraos.ble.MentraosBle.HeadUpAngleConfig getHeadUpAngle(); + + /** + * .mentraos.ble.PingRequest ping = 16; + * @return Whether the ping field is set. + */ + boolean hasPing(); + /** + * .mentraos.ble.PingRequest ping = 16; + * @return The ping. + */ + mentraos.ble.MentraosBle.PingRequest getPing(); + + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + * @return Whether the micState field is set. + */ + boolean hasMicState(); + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + * @return The micState. + */ + mentraos.ble.MentraosBle.MicStateConfig getMicState(); + + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + * @return Whether the vadEnabled field is set. + */ + boolean hasVadEnabled(); + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + * @return The vadEnabled. + */ + mentraos.ble.MentraosBle.VadEnabledConfig getVadEnabled(); + + /** + * .mentraos.ble.VadConfig vad_config = 22; + * @return Whether the vadConfig field is set. + */ + boolean hasVadConfig(); + /** + * .mentraos.ble.VadConfig vad_config = 22; + * @return The vadConfig. + */ + mentraos.ble.MentraosBle.VadConfig getVadConfig(); + + /** + *
+     * Display System
+     * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + * @return Whether the displayText field is set. + */ + boolean hasDisplayText(); + /** + *
+     * Display System
+     * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + * @return The displayText. + */ + mentraos.ble.MentraosBle.DisplayText getDisplayText(); + + /** + * .mentraos.ble.DisplayImage display_image = 31; + * @return Whether the displayImage field is set. + */ + boolean hasDisplayImage(); + /** + * .mentraos.ble.DisplayImage display_image = 31; + * @return The displayImage. + */ + mentraos.ble.MentraosBle.DisplayImage getDisplayImage(); + + /** + * .mentraos.ble.PreloadImage preload_image = 32; + * @return Whether the preloadImage field is set. + */ + boolean hasPreloadImage(); + /** + * .mentraos.ble.PreloadImage preload_image = 32; + * @return The preloadImage. + */ + mentraos.ble.MentraosBle.PreloadImage getPreloadImage(); + + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + * @return Whether the displayCachedImage field is set. + */ + boolean hasDisplayCachedImage(); + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + * @return The displayCachedImage. + */ + mentraos.ble.MentraosBle.DisplayCachedImage getDisplayCachedImage(); + + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + * @return Whether the clearCachedImage field is set. + */ + boolean hasClearCachedImage(); + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + * @return The clearCachedImage. + */ + mentraos.ble.MentraosBle.ClearCachedImage getClearCachedImage(); + + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + * @return Whether the displayScrollingText field is set. + */ + boolean hasDisplayScrollingText(); + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + * @return The displayScrollingText. + */ + mentraos.ble.MentraosBle.DisplayScrollingText getDisplayScrollingText(); + + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + * @return Whether the displayPower field is set. + */ + boolean hasDisplayPower(); + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + * @return The displayPower. + */ + mentraos.ble.MentraosBle.DisplayPowerConfig getDisplayPower(); + + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + * @return Whether the brightness field is set. + */ + boolean hasBrightness(); + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + * @return The brightness. + */ + mentraos.ble.MentraosBle.BrightnessConfig getBrightness(); + + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + * @return Whether the autoBrightness field is set. + */ + boolean hasAutoBrightness(); + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + * @return The autoBrightness. + */ + mentraos.ble.MentraosBle.AutoBrightnessConfig getAutoBrightness(); + + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + * @return Whether the autoBrightnessMult field is set. + */ + boolean hasAutoBrightnessMult(); + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + * @return The autoBrightnessMult. + */ + mentraos.ble.MentraosBle.AutoBrightnessMultiplier getAutoBrightnessMult(); + + /** + * .mentraos.ble.DrawLine draw_line = 40; + * @return Whether the drawLine field is set. + */ + boolean hasDrawLine(); + /** + * .mentraos.ble.DrawLine draw_line = 40; + * @return The drawLine. + */ + mentraos.ble.MentraosBle.DrawLine getDrawLine(); + + /** + * .mentraos.ble.DrawRect draw_rect = 41; + * @return Whether the drawRect field is set. + */ + boolean hasDrawRect(); + /** + * .mentraos.ble.DrawRect draw_rect = 41; + * @return The drawRect. + */ + mentraos.ble.MentraosBle.DrawRect getDrawRect(); + + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + * @return Whether the drawCircle field is set. + */ + boolean hasDrawCircle(); + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + * @return The drawCircle. + */ + mentraos.ble.MentraosBle.DrawCircle getDrawCircle(); + + /** + * .mentraos.ble.CommitDisplay commit = 43; + * @return Whether the commit field is set. + */ + boolean hasCommit(); + /** + * .mentraos.ble.CommitDisplay commit = 43; + * @return The commit. + */ + mentraos.ble.MentraosBle.CommitDisplay getCommit(); + + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + * @return Whether the displayDistance field is set. + */ + boolean hasDisplayDistance(); + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + * @return The displayDistance. + */ + mentraos.ble.MentraosBle.DisplayDistanceConfig getDisplayDistance(); + + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + * @return Whether the displayHeight field is set. + */ + boolean hasDisplayHeight(); + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + * @return The displayHeight. + */ + mentraos.ble.MentraosBle.DisplayHeightConfig getDisplayHeight(); + + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + * @return Whether the imuEnabled field is set. + */ + boolean hasImuEnabled(); + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + * @return The imuEnabled. + */ + mentraos.ble.MentraosBle.ImuEnabledConfig getImuEnabled(); + + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + * @return Whether the imuSingle field is set. + */ + boolean hasImuSingle(); + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + * @return The imuSingle. + */ + mentraos.ble.MentraosBle.ImuSingleRequest getImuSingle(); + + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + * @return Whether the imuStream field is set. + */ + boolean hasImuStream(); + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + * @return The imuStream. + */ + mentraos.ble.MentraosBle.ImuStreamConfig getImuStream(); + + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + * @return Whether the headGesture field is set. + */ + boolean hasHeadGesture(); + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + * @return The headGesture. + */ + mentraos.ble.MentraosBle.HeadGestureConfig getHeadGesture(); + + /** + *
+     * System Control
+     * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + * @return Whether the restart field is set. + */ + boolean hasRestart(); + /** + *
+     * System Control
+     * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + * @return The restart. + */ + mentraos.ble.MentraosBle.RestartRequest getRestart(); + + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + * @return Whether the factoryReset field is set. + */ + boolean hasFactoryReset(); + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + * @return The factoryReset. + */ + mentraos.ble.MentraosBle.FactoryResetRequest getFactoryReset(); + + public mentraos.ble.MentraosBle.PhoneToGlasses.PayloadCase getPayloadCase(); + } + /** + *
+   * All messages from phone to glasses
+   * 
+ * + * Protobuf type {@code mentraos.ble.PhoneToGlasses} + */ + public static final class PhoneToGlasses extends + com.google.protobuf.GeneratedMessageLite< + PhoneToGlasses, PhoneToGlasses.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.PhoneToGlasses) + PhoneToGlassesOrBuilder { + private PhoneToGlasses() { + msgId_ = ""; + } + private int payloadCase_ = 0; + private java.lang.Object payload_; + public enum PayloadCase { + DISCONNECT(10), + BATTERY_STATE(11), + GLASSES_INFO(12), + PAIRING_MODE(13), + HEAD_POSITION(14), + HEAD_UP_ANGLE(15), + PING(16), + MIC_STATE(20), + VAD_ENABLED(21), + VAD_CONFIG(22), + DISPLAY_TEXT(30), + DISPLAY_IMAGE(31), + PRELOAD_IMAGE(32), + DISPLAY_CACHED_IMAGE(33), + CLEAR_CACHED_IMAGE(34), + DISPLAY_SCROLLING_TEXT(35), + DISPLAY_POWER(36), + BRIGHTNESS(37), + AUTO_BRIGHTNESS(38), + AUTO_BRIGHTNESS_MULT(39), + DRAW_LINE(40), + DRAW_RECT(41), + DRAW_CIRCLE(42), + COMMIT(43), + DISPLAY_DISTANCE(44), + DISPLAY_HEIGHT(45), + IMU_ENABLED(50), + IMU_SINGLE(51), + IMU_STREAM(52), + HEAD_GESTURE(53), + RESTART(60), + FACTORY_RESET(61), + PAYLOAD_NOT_SET(0); + private final int value; + private PayloadCase(int value) { + this.value = value; + } + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static PayloadCase valueOf(int value) { + return forNumber(value); + } + + public static PayloadCase forNumber(int value) { + switch (value) { + case 10: return DISCONNECT; + case 11: return BATTERY_STATE; + case 12: return GLASSES_INFO; + case 13: return PAIRING_MODE; + case 14: return HEAD_POSITION; + case 15: return HEAD_UP_ANGLE; + case 16: return PING; + case 20: return MIC_STATE; + case 21: return VAD_ENABLED; + case 22: return VAD_CONFIG; + case 30: return DISPLAY_TEXT; + case 31: return DISPLAY_IMAGE; + case 32: return PRELOAD_IMAGE; + case 33: return DISPLAY_CACHED_IMAGE; + case 34: return CLEAR_CACHED_IMAGE; + case 35: return DISPLAY_SCROLLING_TEXT; + case 36: return DISPLAY_POWER; + case 37: return BRIGHTNESS; + case 38: return AUTO_BRIGHTNESS; + case 39: return AUTO_BRIGHTNESS_MULT; + case 40: return DRAW_LINE; + case 41: return DRAW_RECT; + case 42: return DRAW_CIRCLE; + case 43: return COMMIT; + case 44: return DISPLAY_DISTANCE; + case 45: return DISPLAY_HEIGHT; + case 50: return IMU_ENABLED; + case 51: return IMU_SINGLE; + case 52: return IMU_STREAM; + case 53: return HEAD_GESTURE; + case 60: return RESTART; + case 61: return FACTORY_RESET; + case 0: return PAYLOAD_NOT_SET; + default: return null; + } + } + public int getNumber() { + return this.value; + } + }; + + @java.lang.Override + public PayloadCase + getPayloadCase() { + return PayloadCase.forNumber( + payloadCase_); + } + + private void clearPayload() { + payloadCase_ = 0; + payload_ = null; + } + + public static final int MSG_ID_FIELD_NUMBER = 1; + private java.lang.String msgId_; + /** + *
+     * Optional message ID for request/response correlation
+     * 
+ * + * string msg_id = 1; + * @return The msgId. + */ + @java.lang.Override + public java.lang.String getMsgId() { + return msgId_; + } + /** + *
+     * Optional message ID for request/response correlation
+     * 
+ * + * string msg_id = 1; + * @return The bytes for msgId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMsgIdBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(msgId_); + } + /** + *
+     * Optional message ID for request/response correlation
+     * 
+ * + * string msg_id = 1; + * @param value The msgId to set. + */ + private void setMsgId( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + msgId_ = value; + } + /** + *
+     * Optional message ID for request/response correlation
+     * 
+ * + * string msg_id = 1; + */ + private void clearMsgId() { + + msgId_ = getDefaultInstance().getMsgId(); + } + /** + *
+     * Optional message ID for request/response correlation
+     * 
+ * + * string msg_id = 1; + * @param value The bytes for msgId to set. + */ + private void setMsgIdBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + msgId_ = value.toStringUtf8(); + + } + + public static final int DISCONNECT_FIELD_NUMBER = 10; + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + @java.lang.Override + public boolean hasDisconnect() { + return payloadCase_ == 10; + } + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisconnectRequest getDisconnect() { + if (payloadCase_ == 10) { + return (mentraos.ble.MentraosBle.DisconnectRequest) payload_; + } + return mentraos.ble.MentraosBle.DisconnectRequest.getDefaultInstance(); + } + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + private void setDisconnect(mentraos.ble.MentraosBle.DisconnectRequest value) { + value.getClass(); + payload_ = value; + payloadCase_ = 10; + } + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + private void mergeDisconnect(mentraos.ble.MentraosBle.DisconnectRequest value) { + value.getClass(); + if (payloadCase_ == 10 && + payload_ != mentraos.ble.MentraosBle.DisconnectRequest.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DisconnectRequest.newBuilder((mentraos.ble.MentraosBle.DisconnectRequest) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 10; + } + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + private void clearDisconnect() { + if (payloadCase_ == 10) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int BATTERY_STATE_FIELD_NUMBER = 11; + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + @java.lang.Override + public boolean hasBatteryState() { + return payloadCase_ == 11; + } + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.BatteryStateRequest getBatteryState() { + if (payloadCase_ == 11) { + return (mentraos.ble.MentraosBle.BatteryStateRequest) payload_; + } + return mentraos.ble.MentraosBle.BatteryStateRequest.getDefaultInstance(); + } + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + private void setBatteryState(mentraos.ble.MentraosBle.BatteryStateRequest value) { + value.getClass(); + payload_ = value; + payloadCase_ = 11; + } + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + private void mergeBatteryState(mentraos.ble.MentraosBle.BatteryStateRequest value) { + value.getClass(); + if (payloadCase_ == 11 && + payload_ != mentraos.ble.MentraosBle.BatteryStateRequest.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.BatteryStateRequest.newBuilder((mentraos.ble.MentraosBle.BatteryStateRequest) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 11; + } + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + private void clearBatteryState() { + if (payloadCase_ == 11) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int GLASSES_INFO_FIELD_NUMBER = 12; + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + @java.lang.Override + public boolean hasGlassesInfo() { + return payloadCase_ == 12; + } + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.GlassesInfoRequest getGlassesInfo() { + if (payloadCase_ == 12) { + return (mentraos.ble.MentraosBle.GlassesInfoRequest) payload_; + } + return mentraos.ble.MentraosBle.GlassesInfoRequest.getDefaultInstance(); + } + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + private void setGlassesInfo(mentraos.ble.MentraosBle.GlassesInfoRequest value) { + value.getClass(); + payload_ = value; + payloadCase_ = 12; + } + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + private void mergeGlassesInfo(mentraos.ble.MentraosBle.GlassesInfoRequest value) { + value.getClass(); + if (payloadCase_ == 12 && + payload_ != mentraos.ble.MentraosBle.GlassesInfoRequest.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.GlassesInfoRequest.newBuilder((mentraos.ble.MentraosBle.GlassesInfoRequest) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 12; + } + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + private void clearGlassesInfo() { + if (payloadCase_ == 12) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int PAIRING_MODE_FIELD_NUMBER = 13; + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + @java.lang.Override + public boolean hasPairingMode() { + return payloadCase_ == 13; + } + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.PairingModeRequest getPairingMode() { + if (payloadCase_ == 13) { + return (mentraos.ble.MentraosBle.PairingModeRequest) payload_; + } + return mentraos.ble.MentraosBle.PairingModeRequest.getDefaultInstance(); + } + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + private void setPairingMode(mentraos.ble.MentraosBle.PairingModeRequest value) { + value.getClass(); + payload_ = value; + payloadCase_ = 13; + } + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + private void mergePairingMode(mentraos.ble.MentraosBle.PairingModeRequest value) { + value.getClass(); + if (payloadCase_ == 13 && + payload_ != mentraos.ble.MentraosBle.PairingModeRequest.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.PairingModeRequest.newBuilder((mentraos.ble.MentraosBle.PairingModeRequest) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 13; + } + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + private void clearPairingMode() { + if (payloadCase_ == 13) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int HEAD_POSITION_FIELD_NUMBER = 14; + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + @java.lang.Override + public boolean hasHeadPosition() { + return payloadCase_ == 14; + } + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadPositionRequest getHeadPosition() { + if (payloadCase_ == 14) { + return (mentraos.ble.MentraosBle.HeadPositionRequest) payload_; + } + return mentraos.ble.MentraosBle.HeadPositionRequest.getDefaultInstance(); + } + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + private void setHeadPosition(mentraos.ble.MentraosBle.HeadPositionRequest value) { + value.getClass(); + payload_ = value; + payloadCase_ = 14; + } + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + private void mergeHeadPosition(mentraos.ble.MentraosBle.HeadPositionRequest value) { + value.getClass(); + if (payloadCase_ == 14 && + payload_ != mentraos.ble.MentraosBle.HeadPositionRequest.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.HeadPositionRequest.newBuilder((mentraos.ble.MentraosBle.HeadPositionRequest) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 14; + } + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + private void clearHeadPosition() { + if (payloadCase_ == 14) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int HEAD_UP_ANGLE_FIELD_NUMBER = 15; + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + @java.lang.Override + public boolean hasHeadUpAngle() { + return payloadCase_ == 15; + } + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadUpAngleConfig getHeadUpAngle() { + if (payloadCase_ == 15) { + return (mentraos.ble.MentraosBle.HeadUpAngleConfig) payload_; + } + return mentraos.ble.MentraosBle.HeadUpAngleConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + private void setHeadUpAngle(mentraos.ble.MentraosBle.HeadUpAngleConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 15; + } + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + private void mergeHeadUpAngle(mentraos.ble.MentraosBle.HeadUpAngleConfig value) { + value.getClass(); + if (payloadCase_ == 15 && + payload_ != mentraos.ble.MentraosBle.HeadUpAngleConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.HeadUpAngleConfig.newBuilder((mentraos.ble.MentraosBle.HeadUpAngleConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 15; + } + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + private void clearHeadUpAngle() { + if (payloadCase_ == 15) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int PING_FIELD_NUMBER = 16; + /** + * .mentraos.ble.PingRequest ping = 16; + */ + @java.lang.Override + public boolean hasPing() { + return payloadCase_ == 16; + } + /** + * .mentraos.ble.PingRequest ping = 16; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.PingRequest getPing() { + if (payloadCase_ == 16) { + return (mentraos.ble.MentraosBle.PingRequest) payload_; + } + return mentraos.ble.MentraosBle.PingRequest.getDefaultInstance(); + } + /** + * .mentraos.ble.PingRequest ping = 16; + */ + private void setPing(mentraos.ble.MentraosBle.PingRequest value) { + value.getClass(); + payload_ = value; + payloadCase_ = 16; + } + /** + * .mentraos.ble.PingRequest ping = 16; + */ + private void mergePing(mentraos.ble.MentraosBle.PingRequest value) { + value.getClass(); + if (payloadCase_ == 16 && + payload_ != mentraos.ble.MentraosBle.PingRequest.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.PingRequest.newBuilder((mentraos.ble.MentraosBle.PingRequest) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 16; + } + /** + * .mentraos.ble.PingRequest ping = 16; + */ + private void clearPing() { + if (payloadCase_ == 16) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int MIC_STATE_FIELD_NUMBER = 20; + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + @java.lang.Override + public boolean hasMicState() { + return payloadCase_ == 20; + } + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.MicStateConfig getMicState() { + if (payloadCase_ == 20) { + return (mentraos.ble.MentraosBle.MicStateConfig) payload_; + } + return mentraos.ble.MentraosBle.MicStateConfig.getDefaultInstance(); + } + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + private void setMicState(mentraos.ble.MentraosBle.MicStateConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 20; + } + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + private void mergeMicState(mentraos.ble.MentraosBle.MicStateConfig value) { + value.getClass(); + if (payloadCase_ == 20 && + payload_ != mentraos.ble.MentraosBle.MicStateConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.MicStateConfig.newBuilder((mentraos.ble.MentraosBle.MicStateConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 20; + } + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + private void clearMicState() { + if (payloadCase_ == 20) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int VAD_ENABLED_FIELD_NUMBER = 21; + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + @java.lang.Override + public boolean hasVadEnabled() { + return payloadCase_ == 21; + } + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.VadEnabledConfig getVadEnabled() { + if (payloadCase_ == 21) { + return (mentraos.ble.MentraosBle.VadEnabledConfig) payload_; + } + return mentraos.ble.MentraosBle.VadEnabledConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + private void setVadEnabled(mentraos.ble.MentraosBle.VadEnabledConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 21; + } + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + private void mergeVadEnabled(mentraos.ble.MentraosBle.VadEnabledConfig value) { + value.getClass(); + if (payloadCase_ == 21 && + payload_ != mentraos.ble.MentraosBle.VadEnabledConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.VadEnabledConfig.newBuilder((mentraos.ble.MentraosBle.VadEnabledConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 21; + } + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + private void clearVadEnabled() { + if (payloadCase_ == 21) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int VAD_CONFIG_FIELD_NUMBER = 22; + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + @java.lang.Override + public boolean hasVadConfig() { + return payloadCase_ == 22; + } + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.VadConfig getVadConfig() { + if (payloadCase_ == 22) { + return (mentraos.ble.MentraosBle.VadConfig) payload_; + } + return mentraos.ble.MentraosBle.VadConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + private void setVadConfig(mentraos.ble.MentraosBle.VadConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 22; + } + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + private void mergeVadConfig(mentraos.ble.MentraosBle.VadConfig value) { + value.getClass(); + if (payloadCase_ == 22 && + payload_ != mentraos.ble.MentraosBle.VadConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.VadConfig.newBuilder((mentraos.ble.MentraosBle.VadConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 22; + } + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + private void clearVadConfig() { + if (payloadCase_ == 22) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DISPLAY_TEXT_FIELD_NUMBER = 30; + /** + *
+     * Display System
+     * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + @java.lang.Override + public boolean hasDisplayText() { + return payloadCase_ == 30; + } + /** + *
+     * Display System
+     * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayText getDisplayText() { + if (payloadCase_ == 30) { + return (mentraos.ble.MentraosBle.DisplayText) payload_; + } + return mentraos.ble.MentraosBle.DisplayText.getDefaultInstance(); + } + /** + *
+     * Display System
+     * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + private void setDisplayText(mentraos.ble.MentraosBle.DisplayText value) { + value.getClass(); + payload_ = value; + payloadCase_ = 30; + } + /** + *
+     * Display System
+     * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + private void mergeDisplayText(mentraos.ble.MentraosBle.DisplayText value) { + value.getClass(); + if (payloadCase_ == 30 && + payload_ != mentraos.ble.MentraosBle.DisplayText.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DisplayText.newBuilder((mentraos.ble.MentraosBle.DisplayText) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 30; + } + /** + *
+     * Display System
+     * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + private void clearDisplayText() { + if (payloadCase_ == 30) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DISPLAY_IMAGE_FIELD_NUMBER = 31; + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + @java.lang.Override + public boolean hasDisplayImage() { + return payloadCase_ == 31; + } + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayImage getDisplayImage() { + if (payloadCase_ == 31) { + return (mentraos.ble.MentraosBle.DisplayImage) payload_; + } + return mentraos.ble.MentraosBle.DisplayImage.getDefaultInstance(); + } + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + private void setDisplayImage(mentraos.ble.MentraosBle.DisplayImage value) { + value.getClass(); + payload_ = value; + payloadCase_ = 31; + } + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + private void mergeDisplayImage(mentraos.ble.MentraosBle.DisplayImage value) { + value.getClass(); + if (payloadCase_ == 31 && + payload_ != mentraos.ble.MentraosBle.DisplayImage.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DisplayImage.newBuilder((mentraos.ble.MentraosBle.DisplayImage) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 31; + } + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + private void clearDisplayImage() { + if (payloadCase_ == 31) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int PRELOAD_IMAGE_FIELD_NUMBER = 32; + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + @java.lang.Override + public boolean hasPreloadImage() { + return payloadCase_ == 32; + } + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.PreloadImage getPreloadImage() { + if (payloadCase_ == 32) { + return (mentraos.ble.MentraosBle.PreloadImage) payload_; + } + return mentraos.ble.MentraosBle.PreloadImage.getDefaultInstance(); + } + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + private void setPreloadImage(mentraos.ble.MentraosBle.PreloadImage value) { + value.getClass(); + payload_ = value; + payloadCase_ = 32; + } + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + private void mergePreloadImage(mentraos.ble.MentraosBle.PreloadImage value) { + value.getClass(); + if (payloadCase_ == 32 && + payload_ != mentraos.ble.MentraosBle.PreloadImage.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.PreloadImage.newBuilder((mentraos.ble.MentraosBle.PreloadImage) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 32; + } + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + private void clearPreloadImage() { + if (payloadCase_ == 32) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DISPLAY_CACHED_IMAGE_FIELD_NUMBER = 33; + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + @java.lang.Override + public boolean hasDisplayCachedImage() { + return payloadCase_ == 33; + } + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayCachedImage getDisplayCachedImage() { + if (payloadCase_ == 33) { + return (mentraos.ble.MentraosBle.DisplayCachedImage) payload_; + } + return mentraos.ble.MentraosBle.DisplayCachedImage.getDefaultInstance(); + } + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + private void setDisplayCachedImage(mentraos.ble.MentraosBle.DisplayCachedImage value) { + value.getClass(); + payload_ = value; + payloadCase_ = 33; + } + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + private void mergeDisplayCachedImage(mentraos.ble.MentraosBle.DisplayCachedImage value) { + value.getClass(); + if (payloadCase_ == 33 && + payload_ != mentraos.ble.MentraosBle.DisplayCachedImage.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DisplayCachedImage.newBuilder((mentraos.ble.MentraosBle.DisplayCachedImage) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 33; + } + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + private void clearDisplayCachedImage() { + if (payloadCase_ == 33) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int CLEAR_CACHED_IMAGE_FIELD_NUMBER = 34; + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + @java.lang.Override + public boolean hasClearCachedImage() { + return payloadCase_ == 34; + } + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ClearCachedImage getClearCachedImage() { + if (payloadCase_ == 34) { + return (mentraos.ble.MentraosBle.ClearCachedImage) payload_; + } + return mentraos.ble.MentraosBle.ClearCachedImage.getDefaultInstance(); + } + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + private void setClearCachedImage(mentraos.ble.MentraosBle.ClearCachedImage value) { + value.getClass(); + payload_ = value; + payloadCase_ = 34; + } + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + private void mergeClearCachedImage(mentraos.ble.MentraosBle.ClearCachedImage value) { + value.getClass(); + if (payloadCase_ == 34 && + payload_ != mentraos.ble.MentraosBle.ClearCachedImage.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.ClearCachedImage.newBuilder((mentraos.ble.MentraosBle.ClearCachedImage) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 34; + } + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + private void clearClearCachedImage() { + if (payloadCase_ == 34) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DISPLAY_SCROLLING_TEXT_FIELD_NUMBER = 35; + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + @java.lang.Override + public boolean hasDisplayScrollingText() { + return payloadCase_ == 35; + } + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayScrollingText getDisplayScrollingText() { + if (payloadCase_ == 35) { + return (mentraos.ble.MentraosBle.DisplayScrollingText) payload_; + } + return mentraos.ble.MentraosBle.DisplayScrollingText.getDefaultInstance(); + } + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + private void setDisplayScrollingText(mentraos.ble.MentraosBle.DisplayScrollingText value) { + value.getClass(); + payload_ = value; + payloadCase_ = 35; + } + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + private void mergeDisplayScrollingText(mentraos.ble.MentraosBle.DisplayScrollingText value) { + value.getClass(); + if (payloadCase_ == 35 && + payload_ != mentraos.ble.MentraosBle.DisplayScrollingText.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DisplayScrollingText.newBuilder((mentraos.ble.MentraosBle.DisplayScrollingText) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 35; + } + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + private void clearDisplayScrollingText() { + if (payloadCase_ == 35) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DISPLAY_POWER_FIELD_NUMBER = 36; + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + @java.lang.Override + public boolean hasDisplayPower() { + return payloadCase_ == 36; + } + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayPowerConfig getDisplayPower() { + if (payloadCase_ == 36) { + return (mentraos.ble.MentraosBle.DisplayPowerConfig) payload_; + } + return mentraos.ble.MentraosBle.DisplayPowerConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + private void setDisplayPower(mentraos.ble.MentraosBle.DisplayPowerConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 36; + } + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + private void mergeDisplayPower(mentraos.ble.MentraosBle.DisplayPowerConfig value) { + value.getClass(); + if (payloadCase_ == 36 && + payload_ != mentraos.ble.MentraosBle.DisplayPowerConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DisplayPowerConfig.newBuilder((mentraos.ble.MentraosBle.DisplayPowerConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 36; + } + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + private void clearDisplayPower() { + if (payloadCase_ == 36) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int BRIGHTNESS_FIELD_NUMBER = 37; + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + @java.lang.Override + public boolean hasBrightness() { + return payloadCase_ == 37; + } + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.BrightnessConfig getBrightness() { + if (payloadCase_ == 37) { + return (mentraos.ble.MentraosBle.BrightnessConfig) payload_; + } + return mentraos.ble.MentraosBle.BrightnessConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + private void setBrightness(mentraos.ble.MentraosBle.BrightnessConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 37; + } + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + private void mergeBrightness(mentraos.ble.MentraosBle.BrightnessConfig value) { + value.getClass(); + if (payloadCase_ == 37 && + payload_ != mentraos.ble.MentraosBle.BrightnessConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.BrightnessConfig.newBuilder((mentraos.ble.MentraosBle.BrightnessConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 37; + } + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + private void clearBrightness() { + if (payloadCase_ == 37) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int AUTO_BRIGHTNESS_FIELD_NUMBER = 38; + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + @java.lang.Override + public boolean hasAutoBrightness() { + return payloadCase_ == 38; + } + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.AutoBrightnessConfig getAutoBrightness() { + if (payloadCase_ == 38) { + return (mentraos.ble.MentraosBle.AutoBrightnessConfig) payload_; + } + return mentraos.ble.MentraosBle.AutoBrightnessConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + private void setAutoBrightness(mentraos.ble.MentraosBle.AutoBrightnessConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 38; + } + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + private void mergeAutoBrightness(mentraos.ble.MentraosBle.AutoBrightnessConfig value) { + value.getClass(); + if (payloadCase_ == 38 && + payload_ != mentraos.ble.MentraosBle.AutoBrightnessConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.AutoBrightnessConfig.newBuilder((mentraos.ble.MentraosBle.AutoBrightnessConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 38; + } + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + private void clearAutoBrightness() { + if (payloadCase_ == 38) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int AUTO_BRIGHTNESS_MULT_FIELD_NUMBER = 39; + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + @java.lang.Override + public boolean hasAutoBrightnessMult() { + return payloadCase_ == 39; + } + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.AutoBrightnessMultiplier getAutoBrightnessMult() { + if (payloadCase_ == 39) { + return (mentraos.ble.MentraosBle.AutoBrightnessMultiplier) payload_; + } + return mentraos.ble.MentraosBle.AutoBrightnessMultiplier.getDefaultInstance(); + } + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + private void setAutoBrightnessMult(mentraos.ble.MentraosBle.AutoBrightnessMultiplier value) { + value.getClass(); + payload_ = value; + payloadCase_ = 39; + } + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + private void mergeAutoBrightnessMult(mentraos.ble.MentraosBle.AutoBrightnessMultiplier value) { + value.getClass(); + if (payloadCase_ == 39 && + payload_ != mentraos.ble.MentraosBle.AutoBrightnessMultiplier.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.AutoBrightnessMultiplier.newBuilder((mentraos.ble.MentraosBle.AutoBrightnessMultiplier) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 39; + } + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + private void clearAutoBrightnessMult() { + if (payloadCase_ == 39) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DRAW_LINE_FIELD_NUMBER = 40; + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + @java.lang.Override + public boolean hasDrawLine() { + return payloadCase_ == 40; + } + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DrawLine getDrawLine() { + if (payloadCase_ == 40) { + return (mentraos.ble.MentraosBle.DrawLine) payload_; + } + return mentraos.ble.MentraosBle.DrawLine.getDefaultInstance(); + } + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + private void setDrawLine(mentraos.ble.MentraosBle.DrawLine value) { + value.getClass(); + payload_ = value; + payloadCase_ = 40; + } + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + private void mergeDrawLine(mentraos.ble.MentraosBle.DrawLine value) { + value.getClass(); + if (payloadCase_ == 40 && + payload_ != mentraos.ble.MentraosBle.DrawLine.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DrawLine.newBuilder((mentraos.ble.MentraosBle.DrawLine) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 40; + } + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + private void clearDrawLine() { + if (payloadCase_ == 40) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DRAW_RECT_FIELD_NUMBER = 41; + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + @java.lang.Override + public boolean hasDrawRect() { + return payloadCase_ == 41; + } + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DrawRect getDrawRect() { + if (payloadCase_ == 41) { + return (mentraos.ble.MentraosBle.DrawRect) payload_; + } + return mentraos.ble.MentraosBle.DrawRect.getDefaultInstance(); + } + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + private void setDrawRect(mentraos.ble.MentraosBle.DrawRect value) { + value.getClass(); + payload_ = value; + payloadCase_ = 41; + } + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + private void mergeDrawRect(mentraos.ble.MentraosBle.DrawRect value) { + value.getClass(); + if (payloadCase_ == 41 && + payload_ != mentraos.ble.MentraosBle.DrawRect.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DrawRect.newBuilder((mentraos.ble.MentraosBle.DrawRect) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 41; + } + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + private void clearDrawRect() { + if (payloadCase_ == 41) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DRAW_CIRCLE_FIELD_NUMBER = 42; + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + @java.lang.Override + public boolean hasDrawCircle() { + return payloadCase_ == 42; + } + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DrawCircle getDrawCircle() { + if (payloadCase_ == 42) { + return (mentraos.ble.MentraosBle.DrawCircle) payload_; + } + return mentraos.ble.MentraosBle.DrawCircle.getDefaultInstance(); + } + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + private void setDrawCircle(mentraos.ble.MentraosBle.DrawCircle value) { + value.getClass(); + payload_ = value; + payloadCase_ = 42; + } + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + private void mergeDrawCircle(mentraos.ble.MentraosBle.DrawCircle value) { + value.getClass(); + if (payloadCase_ == 42 && + payload_ != mentraos.ble.MentraosBle.DrawCircle.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DrawCircle.newBuilder((mentraos.ble.MentraosBle.DrawCircle) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 42; + } + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + private void clearDrawCircle() { + if (payloadCase_ == 42) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int COMMIT_FIELD_NUMBER = 43; + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + @java.lang.Override + public boolean hasCommit() { + return payloadCase_ == 43; + } + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.CommitDisplay getCommit() { + if (payloadCase_ == 43) { + return (mentraos.ble.MentraosBle.CommitDisplay) payload_; + } + return mentraos.ble.MentraosBle.CommitDisplay.getDefaultInstance(); + } + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + private void setCommit(mentraos.ble.MentraosBle.CommitDisplay value) { + value.getClass(); + payload_ = value; + payloadCase_ = 43; + } + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + private void mergeCommit(mentraos.ble.MentraosBle.CommitDisplay value) { + value.getClass(); + if (payloadCase_ == 43 && + payload_ != mentraos.ble.MentraosBle.CommitDisplay.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.CommitDisplay.newBuilder((mentraos.ble.MentraosBle.CommitDisplay) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 43; + } + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + private void clearCommit() { + if (payloadCase_ == 43) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DISPLAY_DISTANCE_FIELD_NUMBER = 44; + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + @java.lang.Override + public boolean hasDisplayDistance() { + return payloadCase_ == 44; + } + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayDistanceConfig getDisplayDistance() { + if (payloadCase_ == 44) { + return (mentraos.ble.MentraosBle.DisplayDistanceConfig) payload_; + } + return mentraos.ble.MentraosBle.DisplayDistanceConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + private void setDisplayDistance(mentraos.ble.MentraosBle.DisplayDistanceConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 44; + } + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + private void mergeDisplayDistance(mentraos.ble.MentraosBle.DisplayDistanceConfig value) { + value.getClass(); + if (payloadCase_ == 44 && + payload_ != mentraos.ble.MentraosBle.DisplayDistanceConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DisplayDistanceConfig.newBuilder((mentraos.ble.MentraosBle.DisplayDistanceConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 44; + } + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + private void clearDisplayDistance() { + if (payloadCase_ == 44) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DISPLAY_HEIGHT_FIELD_NUMBER = 45; + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + @java.lang.Override + public boolean hasDisplayHeight() { + return payloadCase_ == 45; + } + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayHeightConfig getDisplayHeight() { + if (payloadCase_ == 45) { + return (mentraos.ble.MentraosBle.DisplayHeightConfig) payload_; + } + return mentraos.ble.MentraosBle.DisplayHeightConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + private void setDisplayHeight(mentraos.ble.MentraosBle.DisplayHeightConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 45; + } + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + private void mergeDisplayHeight(mentraos.ble.MentraosBle.DisplayHeightConfig value) { + value.getClass(); + if (payloadCase_ == 45 && + payload_ != mentraos.ble.MentraosBle.DisplayHeightConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DisplayHeightConfig.newBuilder((mentraos.ble.MentraosBle.DisplayHeightConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 45; + } + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + private void clearDisplayHeight() { + if (payloadCase_ == 45) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int IMU_ENABLED_FIELD_NUMBER = 50; + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + @java.lang.Override + public boolean hasImuEnabled() { + return payloadCase_ == 50; + } + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImuEnabledConfig getImuEnabled() { + if (payloadCase_ == 50) { + return (mentraos.ble.MentraosBle.ImuEnabledConfig) payload_; + } + return mentraos.ble.MentraosBle.ImuEnabledConfig.getDefaultInstance(); + } + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + private void setImuEnabled(mentraos.ble.MentraosBle.ImuEnabledConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 50; + } + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + private void mergeImuEnabled(mentraos.ble.MentraosBle.ImuEnabledConfig value) { + value.getClass(); + if (payloadCase_ == 50 && + payload_ != mentraos.ble.MentraosBle.ImuEnabledConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.ImuEnabledConfig.newBuilder((mentraos.ble.MentraosBle.ImuEnabledConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 50; + } + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + private void clearImuEnabled() { + if (payloadCase_ == 50) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int IMU_SINGLE_FIELD_NUMBER = 51; + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + @java.lang.Override + public boolean hasImuSingle() { + return payloadCase_ == 51; + } + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImuSingleRequest getImuSingle() { + if (payloadCase_ == 51) { + return (mentraos.ble.MentraosBle.ImuSingleRequest) payload_; + } + return mentraos.ble.MentraosBle.ImuSingleRequest.getDefaultInstance(); + } + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + private void setImuSingle(mentraos.ble.MentraosBle.ImuSingleRequest value) { + value.getClass(); + payload_ = value; + payloadCase_ = 51; + } + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + private void mergeImuSingle(mentraos.ble.MentraosBle.ImuSingleRequest value) { + value.getClass(); + if (payloadCase_ == 51 && + payload_ != mentraos.ble.MentraosBle.ImuSingleRequest.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.ImuSingleRequest.newBuilder((mentraos.ble.MentraosBle.ImuSingleRequest) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 51; + } + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + private void clearImuSingle() { + if (payloadCase_ == 51) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int IMU_STREAM_FIELD_NUMBER = 52; + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + @java.lang.Override + public boolean hasImuStream() { + return payloadCase_ == 52; + } + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImuStreamConfig getImuStream() { + if (payloadCase_ == 52) { + return (mentraos.ble.MentraosBle.ImuStreamConfig) payload_; + } + return mentraos.ble.MentraosBle.ImuStreamConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + private void setImuStream(mentraos.ble.MentraosBle.ImuStreamConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 52; + } + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + private void mergeImuStream(mentraos.ble.MentraosBle.ImuStreamConfig value) { + value.getClass(); + if (payloadCase_ == 52 && + payload_ != mentraos.ble.MentraosBle.ImuStreamConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.ImuStreamConfig.newBuilder((mentraos.ble.MentraosBle.ImuStreamConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 52; + } + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + private void clearImuStream() { + if (payloadCase_ == 52) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int HEAD_GESTURE_FIELD_NUMBER = 53; + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + @java.lang.Override + public boolean hasHeadGesture() { + return payloadCase_ == 53; + } + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadGestureConfig getHeadGesture() { + if (payloadCase_ == 53) { + return (mentraos.ble.MentraosBle.HeadGestureConfig) payload_; + } + return mentraos.ble.MentraosBle.HeadGestureConfig.getDefaultInstance(); + } + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + private void setHeadGesture(mentraos.ble.MentraosBle.HeadGestureConfig value) { + value.getClass(); + payload_ = value; + payloadCase_ = 53; + } + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + private void mergeHeadGesture(mentraos.ble.MentraosBle.HeadGestureConfig value) { + value.getClass(); + if (payloadCase_ == 53 && + payload_ != mentraos.ble.MentraosBle.HeadGestureConfig.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.HeadGestureConfig.newBuilder((mentraos.ble.MentraosBle.HeadGestureConfig) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 53; + } + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + private void clearHeadGesture() { + if (payloadCase_ == 53) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int RESTART_FIELD_NUMBER = 60; + /** + *
+     * System Control
+     * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + @java.lang.Override + public boolean hasRestart() { + return payloadCase_ == 60; + } + /** + *
+     * System Control
+     * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.RestartRequest getRestart() { + if (payloadCase_ == 60) { + return (mentraos.ble.MentraosBle.RestartRequest) payload_; + } + return mentraos.ble.MentraosBle.RestartRequest.getDefaultInstance(); + } + /** + *
+     * System Control
+     * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + private void setRestart(mentraos.ble.MentraosBle.RestartRequest value) { + value.getClass(); + payload_ = value; + payloadCase_ = 60; + } + /** + *
+     * System Control
+     * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + private void mergeRestart(mentraos.ble.MentraosBle.RestartRequest value) { + value.getClass(); + if (payloadCase_ == 60 && + payload_ != mentraos.ble.MentraosBle.RestartRequest.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.RestartRequest.newBuilder((mentraos.ble.MentraosBle.RestartRequest) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 60; + } + /** + *
+     * System Control
+     * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + private void clearRestart() { + if (payloadCase_ == 60) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int FACTORY_RESET_FIELD_NUMBER = 61; + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + @java.lang.Override + public boolean hasFactoryReset() { + return payloadCase_ == 61; + } + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.FactoryResetRequest getFactoryReset() { + if (payloadCase_ == 61) { + return (mentraos.ble.MentraosBle.FactoryResetRequest) payload_; + } + return mentraos.ble.MentraosBle.FactoryResetRequest.getDefaultInstance(); + } + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + private void setFactoryReset(mentraos.ble.MentraosBle.FactoryResetRequest value) { + value.getClass(); + payload_ = value; + payloadCase_ = 61; + } + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + private void mergeFactoryReset(mentraos.ble.MentraosBle.FactoryResetRequest value) { + value.getClass(); + if (payloadCase_ == 61 && + payload_ != mentraos.ble.MentraosBle.FactoryResetRequest.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.FactoryResetRequest.newBuilder((mentraos.ble.MentraosBle.FactoryResetRequest) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 61; + } + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + private void clearFactoryReset() { + if (payloadCase_ == 61) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.PhoneToGlasses parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.PhoneToGlasses parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PhoneToGlasses parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.PhoneToGlasses prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + *
+     * All messages from phone to glasses
+     * 
+ * + * Protobuf type {@code mentraos.ble.PhoneToGlasses} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.PhoneToGlasses, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.PhoneToGlasses) + mentraos.ble.MentraosBle.PhoneToGlassesOrBuilder { + // Construct using mentraos.ble.MentraosBle.PhoneToGlasses.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + @java.lang.Override + public PayloadCase + getPayloadCase() { + return instance.getPayloadCase(); + } + + public Builder clearPayload() { + copyOnWrite(); + instance.clearPayload(); + return this; + } + + + /** + *
+       * Optional message ID for request/response correlation
+       * 
+ * + * string msg_id = 1; + * @return The msgId. + */ + @java.lang.Override + public java.lang.String getMsgId() { + return instance.getMsgId(); + } + /** + *
+       * Optional message ID for request/response correlation
+       * 
+ * + * string msg_id = 1; + * @return The bytes for msgId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMsgIdBytes() { + return instance.getMsgIdBytes(); + } + /** + *
+       * Optional message ID for request/response correlation
+       * 
+ * + * string msg_id = 1; + * @param value The msgId to set. + * @return This builder for chaining. + */ + public Builder setMsgId( + java.lang.String value) { + copyOnWrite(); + instance.setMsgId(value); + return this; + } + /** + *
+       * Optional message ID for request/response correlation
+       * 
+ * + * string msg_id = 1; + * @return This builder for chaining. + */ + public Builder clearMsgId() { + copyOnWrite(); + instance.clearMsgId(); + return this; + } + /** + *
+       * Optional message ID for request/response correlation
+       * 
+ * + * string msg_id = 1; + * @param value The bytes for msgId to set. + * @return This builder for chaining. + */ + public Builder setMsgIdBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setMsgIdBytes(value); + return this; + } + + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + @java.lang.Override + public boolean hasDisconnect() { + return instance.hasDisconnect(); + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisconnectRequest getDisconnect() { + return instance.getDisconnect(); + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + public Builder setDisconnect(mentraos.ble.MentraosBle.DisconnectRequest value) { + copyOnWrite(); + instance.setDisconnect(value); + return this; + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + public Builder setDisconnect( + mentraos.ble.MentraosBle.DisconnectRequest.Builder builderForValue) { + copyOnWrite(); + instance.setDisconnect(builderForValue.build()); + return this; + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + public Builder mergeDisconnect(mentraos.ble.MentraosBle.DisconnectRequest value) { + copyOnWrite(); + instance.mergeDisconnect(value); + return this; + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.DisconnectRequest disconnect = 10; + */ + public Builder clearDisconnect() { + copyOnWrite(); + instance.clearDisconnect(); + return this; + } + + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + @java.lang.Override + public boolean hasBatteryState() { + return instance.hasBatteryState(); + } + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.BatteryStateRequest getBatteryState() { + return instance.getBatteryState(); + } + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + public Builder setBatteryState(mentraos.ble.MentraosBle.BatteryStateRequest value) { + copyOnWrite(); + instance.setBatteryState(value); + return this; + } + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + public Builder setBatteryState( + mentraos.ble.MentraosBle.BatteryStateRequest.Builder builderForValue) { + copyOnWrite(); + instance.setBatteryState(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + public Builder mergeBatteryState(mentraos.ble.MentraosBle.BatteryStateRequest value) { + copyOnWrite(); + instance.mergeBatteryState(value); + return this; + } + /** + * .mentraos.ble.BatteryStateRequest battery_state = 11; + */ + public Builder clearBatteryState() { + copyOnWrite(); + instance.clearBatteryState(); + return this; + } + + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + @java.lang.Override + public boolean hasGlassesInfo() { + return instance.hasGlassesInfo(); + } + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.GlassesInfoRequest getGlassesInfo() { + return instance.getGlassesInfo(); + } + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + public Builder setGlassesInfo(mentraos.ble.MentraosBle.GlassesInfoRequest value) { + copyOnWrite(); + instance.setGlassesInfo(value); + return this; + } + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + public Builder setGlassesInfo( + mentraos.ble.MentraosBle.GlassesInfoRequest.Builder builderForValue) { + copyOnWrite(); + instance.setGlassesInfo(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + public Builder mergeGlassesInfo(mentraos.ble.MentraosBle.GlassesInfoRequest value) { + copyOnWrite(); + instance.mergeGlassesInfo(value); + return this; + } + /** + * .mentraos.ble.GlassesInfoRequest glasses_info = 12; + */ + public Builder clearGlassesInfo() { + copyOnWrite(); + instance.clearGlassesInfo(); + return this; + } + + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + @java.lang.Override + public boolean hasPairingMode() { + return instance.hasPairingMode(); + } + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.PairingModeRequest getPairingMode() { + return instance.getPairingMode(); + } + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + public Builder setPairingMode(mentraos.ble.MentraosBle.PairingModeRequest value) { + copyOnWrite(); + instance.setPairingMode(value); + return this; + } + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + public Builder setPairingMode( + mentraos.ble.MentraosBle.PairingModeRequest.Builder builderForValue) { + copyOnWrite(); + instance.setPairingMode(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + public Builder mergePairingMode(mentraos.ble.MentraosBle.PairingModeRequest value) { + copyOnWrite(); + instance.mergePairingMode(value); + return this; + } + /** + * .mentraos.ble.PairingModeRequest pairing_mode = 13; + */ + public Builder clearPairingMode() { + copyOnWrite(); + instance.clearPairingMode(); + return this; + } + + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + @java.lang.Override + public boolean hasHeadPosition() { + return instance.hasHeadPosition(); + } + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadPositionRequest getHeadPosition() { + return instance.getHeadPosition(); + } + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + public Builder setHeadPosition(mentraos.ble.MentraosBle.HeadPositionRequest value) { + copyOnWrite(); + instance.setHeadPosition(value); + return this; + } + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + public Builder setHeadPosition( + mentraos.ble.MentraosBle.HeadPositionRequest.Builder builderForValue) { + copyOnWrite(); + instance.setHeadPosition(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + public Builder mergeHeadPosition(mentraos.ble.MentraosBle.HeadPositionRequest value) { + copyOnWrite(); + instance.mergeHeadPosition(value); + return this; + } + /** + * .mentraos.ble.HeadPositionRequest head_position = 14; + */ + public Builder clearHeadPosition() { + copyOnWrite(); + instance.clearHeadPosition(); + return this; + } + + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + @java.lang.Override + public boolean hasHeadUpAngle() { + return instance.hasHeadUpAngle(); + } + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadUpAngleConfig getHeadUpAngle() { + return instance.getHeadUpAngle(); + } + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + public Builder setHeadUpAngle(mentraos.ble.MentraosBle.HeadUpAngleConfig value) { + copyOnWrite(); + instance.setHeadUpAngle(value); + return this; + } + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + public Builder setHeadUpAngle( + mentraos.ble.MentraosBle.HeadUpAngleConfig.Builder builderForValue) { + copyOnWrite(); + instance.setHeadUpAngle(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + public Builder mergeHeadUpAngle(mentraos.ble.MentraosBle.HeadUpAngleConfig value) { + copyOnWrite(); + instance.mergeHeadUpAngle(value); + return this; + } + /** + * .mentraos.ble.HeadUpAngleConfig head_up_angle = 15; + */ + public Builder clearHeadUpAngle() { + copyOnWrite(); + instance.clearHeadUpAngle(); + return this; + } + + /** + * .mentraos.ble.PingRequest ping = 16; + */ + @java.lang.Override + public boolean hasPing() { + return instance.hasPing(); + } + /** + * .mentraos.ble.PingRequest ping = 16; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.PingRequest getPing() { + return instance.getPing(); + } + /** + * .mentraos.ble.PingRequest ping = 16; + */ + public Builder setPing(mentraos.ble.MentraosBle.PingRequest value) { + copyOnWrite(); + instance.setPing(value); + return this; + } + /** + * .mentraos.ble.PingRequest ping = 16; + */ + public Builder setPing( + mentraos.ble.MentraosBle.PingRequest.Builder builderForValue) { + copyOnWrite(); + instance.setPing(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.PingRequest ping = 16; + */ + public Builder mergePing(mentraos.ble.MentraosBle.PingRequest value) { + copyOnWrite(); + instance.mergePing(value); + return this; + } + /** + * .mentraos.ble.PingRequest ping = 16; + */ + public Builder clearPing() { + copyOnWrite(); + instance.clearPing(); + return this; + } + + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + @java.lang.Override + public boolean hasMicState() { + return instance.hasMicState(); + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.MicStateConfig getMicState() { + return instance.getMicState(); + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + public Builder setMicState(mentraos.ble.MentraosBle.MicStateConfig value) { + copyOnWrite(); + instance.setMicState(value); + return this; + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + public Builder setMicState( + mentraos.ble.MentraosBle.MicStateConfig.Builder builderForValue) { + copyOnWrite(); + instance.setMicState(builderForValue.build()); + return this; + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + public Builder mergeMicState(mentraos.ble.MentraosBle.MicStateConfig value) { + copyOnWrite(); + instance.mergeMicState(value); + return this; + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.MicStateConfig mic_state = 20; + */ + public Builder clearMicState() { + copyOnWrite(); + instance.clearMicState(); + return this; + } + + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + @java.lang.Override + public boolean hasVadEnabled() { + return instance.hasVadEnabled(); + } + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.VadEnabledConfig getVadEnabled() { + return instance.getVadEnabled(); + } + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + public Builder setVadEnabled(mentraos.ble.MentraosBle.VadEnabledConfig value) { + copyOnWrite(); + instance.setVadEnabled(value); + return this; + } + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + public Builder setVadEnabled( + mentraos.ble.MentraosBle.VadEnabledConfig.Builder builderForValue) { + copyOnWrite(); + instance.setVadEnabled(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + public Builder mergeVadEnabled(mentraos.ble.MentraosBle.VadEnabledConfig value) { + copyOnWrite(); + instance.mergeVadEnabled(value); + return this; + } + /** + * .mentraos.ble.VadEnabledConfig vad_enabled = 21; + */ + public Builder clearVadEnabled() { + copyOnWrite(); + instance.clearVadEnabled(); + return this; + } + + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + @java.lang.Override + public boolean hasVadConfig() { + return instance.hasVadConfig(); + } + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.VadConfig getVadConfig() { + return instance.getVadConfig(); + } + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + public Builder setVadConfig(mentraos.ble.MentraosBle.VadConfig value) { + copyOnWrite(); + instance.setVadConfig(value); + return this; + } + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + public Builder setVadConfig( + mentraos.ble.MentraosBle.VadConfig.Builder builderForValue) { + copyOnWrite(); + instance.setVadConfig(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + public Builder mergeVadConfig(mentraos.ble.MentraosBle.VadConfig value) { + copyOnWrite(); + instance.mergeVadConfig(value); + return this; + } + /** + * .mentraos.ble.VadConfig vad_config = 22; + */ + public Builder clearVadConfig() { + copyOnWrite(); + instance.clearVadConfig(); + return this; + } + + /** + *
+       * Display System
+       * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + @java.lang.Override + public boolean hasDisplayText() { + return instance.hasDisplayText(); + } + /** + *
+       * Display System
+       * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayText getDisplayText() { + return instance.getDisplayText(); + } + /** + *
+       * Display System
+       * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + public Builder setDisplayText(mentraos.ble.MentraosBle.DisplayText value) { + copyOnWrite(); + instance.setDisplayText(value); + return this; + } + /** + *
+       * Display System
+       * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + public Builder setDisplayText( + mentraos.ble.MentraosBle.DisplayText.Builder builderForValue) { + copyOnWrite(); + instance.setDisplayText(builderForValue.build()); + return this; + } + /** + *
+       * Display System
+       * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + public Builder mergeDisplayText(mentraos.ble.MentraosBle.DisplayText value) { + copyOnWrite(); + instance.mergeDisplayText(value); + return this; + } + /** + *
+       * Display System
+       * 
+ * + * .mentraos.ble.DisplayText display_text = 30; + */ + public Builder clearDisplayText() { + copyOnWrite(); + instance.clearDisplayText(); + return this; + } + + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + @java.lang.Override + public boolean hasDisplayImage() { + return instance.hasDisplayImage(); + } + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayImage getDisplayImage() { + return instance.getDisplayImage(); + } + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + public Builder setDisplayImage(mentraos.ble.MentraosBle.DisplayImage value) { + copyOnWrite(); + instance.setDisplayImage(value); + return this; + } + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + public Builder setDisplayImage( + mentraos.ble.MentraosBle.DisplayImage.Builder builderForValue) { + copyOnWrite(); + instance.setDisplayImage(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + public Builder mergeDisplayImage(mentraos.ble.MentraosBle.DisplayImage value) { + copyOnWrite(); + instance.mergeDisplayImage(value); + return this; + } + /** + * .mentraos.ble.DisplayImage display_image = 31; + */ + public Builder clearDisplayImage() { + copyOnWrite(); + instance.clearDisplayImage(); + return this; + } + + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + @java.lang.Override + public boolean hasPreloadImage() { + return instance.hasPreloadImage(); + } + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.PreloadImage getPreloadImage() { + return instance.getPreloadImage(); + } + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + public Builder setPreloadImage(mentraos.ble.MentraosBle.PreloadImage value) { + copyOnWrite(); + instance.setPreloadImage(value); + return this; + } + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + public Builder setPreloadImage( + mentraos.ble.MentraosBle.PreloadImage.Builder builderForValue) { + copyOnWrite(); + instance.setPreloadImage(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + public Builder mergePreloadImage(mentraos.ble.MentraosBle.PreloadImage value) { + copyOnWrite(); + instance.mergePreloadImage(value); + return this; + } + /** + * .mentraos.ble.PreloadImage preload_image = 32; + */ + public Builder clearPreloadImage() { + copyOnWrite(); + instance.clearPreloadImage(); + return this; + } + + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + @java.lang.Override + public boolean hasDisplayCachedImage() { + return instance.hasDisplayCachedImage(); + } + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayCachedImage getDisplayCachedImage() { + return instance.getDisplayCachedImage(); + } + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + public Builder setDisplayCachedImage(mentraos.ble.MentraosBle.DisplayCachedImage value) { + copyOnWrite(); + instance.setDisplayCachedImage(value); + return this; + } + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + public Builder setDisplayCachedImage( + mentraos.ble.MentraosBle.DisplayCachedImage.Builder builderForValue) { + copyOnWrite(); + instance.setDisplayCachedImage(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + public Builder mergeDisplayCachedImage(mentraos.ble.MentraosBle.DisplayCachedImage value) { + copyOnWrite(); + instance.mergeDisplayCachedImage(value); + return this; + } + /** + * .mentraos.ble.DisplayCachedImage display_cached_image = 33; + */ + public Builder clearDisplayCachedImage() { + copyOnWrite(); + instance.clearDisplayCachedImage(); + return this; + } + + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + @java.lang.Override + public boolean hasClearCachedImage() { + return instance.hasClearCachedImage(); + } + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ClearCachedImage getClearCachedImage() { + return instance.getClearCachedImage(); + } + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + public Builder setClearCachedImage(mentraos.ble.MentraosBle.ClearCachedImage value) { + copyOnWrite(); + instance.setClearCachedImage(value); + return this; + } + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + public Builder setClearCachedImage( + mentraos.ble.MentraosBle.ClearCachedImage.Builder builderForValue) { + copyOnWrite(); + instance.setClearCachedImage(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + public Builder mergeClearCachedImage(mentraos.ble.MentraosBle.ClearCachedImage value) { + copyOnWrite(); + instance.mergeClearCachedImage(value); + return this; + } + /** + * .mentraos.ble.ClearCachedImage clear_cached_image = 34; + */ + public Builder clearClearCachedImage() { + copyOnWrite(); + instance.clearClearCachedImage(); + return this; + } + + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + @java.lang.Override + public boolean hasDisplayScrollingText() { + return instance.hasDisplayScrollingText(); + } + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayScrollingText getDisplayScrollingText() { + return instance.getDisplayScrollingText(); + } + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + public Builder setDisplayScrollingText(mentraos.ble.MentraosBle.DisplayScrollingText value) { + copyOnWrite(); + instance.setDisplayScrollingText(value); + return this; + } + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + public Builder setDisplayScrollingText( + mentraos.ble.MentraosBle.DisplayScrollingText.Builder builderForValue) { + copyOnWrite(); + instance.setDisplayScrollingText(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + public Builder mergeDisplayScrollingText(mentraos.ble.MentraosBle.DisplayScrollingText value) { + copyOnWrite(); + instance.mergeDisplayScrollingText(value); + return this; + } + /** + * .mentraos.ble.DisplayScrollingText display_scrolling_text = 35; + */ + public Builder clearDisplayScrollingText() { + copyOnWrite(); + instance.clearDisplayScrollingText(); + return this; + } + + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + @java.lang.Override + public boolean hasDisplayPower() { + return instance.hasDisplayPower(); + } + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayPowerConfig getDisplayPower() { + return instance.getDisplayPower(); + } + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + public Builder setDisplayPower(mentraos.ble.MentraosBle.DisplayPowerConfig value) { + copyOnWrite(); + instance.setDisplayPower(value); + return this; + } + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + public Builder setDisplayPower( + mentraos.ble.MentraosBle.DisplayPowerConfig.Builder builderForValue) { + copyOnWrite(); + instance.setDisplayPower(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + public Builder mergeDisplayPower(mentraos.ble.MentraosBle.DisplayPowerConfig value) { + copyOnWrite(); + instance.mergeDisplayPower(value); + return this; + } + /** + * .mentraos.ble.DisplayPowerConfig display_power = 36; + */ + public Builder clearDisplayPower() { + copyOnWrite(); + instance.clearDisplayPower(); + return this; + } + + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + @java.lang.Override + public boolean hasBrightness() { + return instance.hasBrightness(); + } + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.BrightnessConfig getBrightness() { + return instance.getBrightness(); + } + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + public Builder setBrightness(mentraos.ble.MentraosBle.BrightnessConfig value) { + copyOnWrite(); + instance.setBrightness(value); + return this; + } + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + public Builder setBrightness( + mentraos.ble.MentraosBle.BrightnessConfig.Builder builderForValue) { + copyOnWrite(); + instance.setBrightness(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + public Builder mergeBrightness(mentraos.ble.MentraosBle.BrightnessConfig value) { + copyOnWrite(); + instance.mergeBrightness(value); + return this; + } + /** + * .mentraos.ble.BrightnessConfig brightness = 37; + */ + public Builder clearBrightness() { + copyOnWrite(); + instance.clearBrightness(); + return this; + } + + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + @java.lang.Override + public boolean hasAutoBrightness() { + return instance.hasAutoBrightness(); + } + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.AutoBrightnessConfig getAutoBrightness() { + return instance.getAutoBrightness(); + } + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + public Builder setAutoBrightness(mentraos.ble.MentraosBle.AutoBrightnessConfig value) { + copyOnWrite(); + instance.setAutoBrightness(value); + return this; + } + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + public Builder setAutoBrightness( + mentraos.ble.MentraosBle.AutoBrightnessConfig.Builder builderForValue) { + copyOnWrite(); + instance.setAutoBrightness(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + public Builder mergeAutoBrightness(mentraos.ble.MentraosBle.AutoBrightnessConfig value) { + copyOnWrite(); + instance.mergeAutoBrightness(value); + return this; + } + /** + * .mentraos.ble.AutoBrightnessConfig auto_brightness = 38; + */ + public Builder clearAutoBrightness() { + copyOnWrite(); + instance.clearAutoBrightness(); + return this; + } + + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + @java.lang.Override + public boolean hasAutoBrightnessMult() { + return instance.hasAutoBrightnessMult(); + } + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.AutoBrightnessMultiplier getAutoBrightnessMult() { + return instance.getAutoBrightnessMult(); + } + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + public Builder setAutoBrightnessMult(mentraos.ble.MentraosBle.AutoBrightnessMultiplier value) { + copyOnWrite(); + instance.setAutoBrightnessMult(value); + return this; + } + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + public Builder setAutoBrightnessMult( + mentraos.ble.MentraosBle.AutoBrightnessMultiplier.Builder builderForValue) { + copyOnWrite(); + instance.setAutoBrightnessMult(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + public Builder mergeAutoBrightnessMult(mentraos.ble.MentraosBle.AutoBrightnessMultiplier value) { + copyOnWrite(); + instance.mergeAutoBrightnessMult(value); + return this; + } + /** + * .mentraos.ble.AutoBrightnessMultiplier auto_brightness_mult = 39; + */ + public Builder clearAutoBrightnessMult() { + copyOnWrite(); + instance.clearAutoBrightnessMult(); + return this; + } + + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + @java.lang.Override + public boolean hasDrawLine() { + return instance.hasDrawLine(); + } + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DrawLine getDrawLine() { + return instance.getDrawLine(); + } + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + public Builder setDrawLine(mentraos.ble.MentraosBle.DrawLine value) { + copyOnWrite(); + instance.setDrawLine(value); + return this; + } + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + public Builder setDrawLine( + mentraos.ble.MentraosBle.DrawLine.Builder builderForValue) { + copyOnWrite(); + instance.setDrawLine(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + public Builder mergeDrawLine(mentraos.ble.MentraosBle.DrawLine value) { + copyOnWrite(); + instance.mergeDrawLine(value); + return this; + } + /** + * .mentraos.ble.DrawLine draw_line = 40; + */ + public Builder clearDrawLine() { + copyOnWrite(); + instance.clearDrawLine(); + return this; + } + + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + @java.lang.Override + public boolean hasDrawRect() { + return instance.hasDrawRect(); + } + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DrawRect getDrawRect() { + return instance.getDrawRect(); + } + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + public Builder setDrawRect(mentraos.ble.MentraosBle.DrawRect value) { + copyOnWrite(); + instance.setDrawRect(value); + return this; + } + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + public Builder setDrawRect( + mentraos.ble.MentraosBle.DrawRect.Builder builderForValue) { + copyOnWrite(); + instance.setDrawRect(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + public Builder mergeDrawRect(mentraos.ble.MentraosBle.DrawRect value) { + copyOnWrite(); + instance.mergeDrawRect(value); + return this; + } + /** + * .mentraos.ble.DrawRect draw_rect = 41; + */ + public Builder clearDrawRect() { + copyOnWrite(); + instance.clearDrawRect(); + return this; + } + + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + @java.lang.Override + public boolean hasDrawCircle() { + return instance.hasDrawCircle(); + } + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DrawCircle getDrawCircle() { + return instance.getDrawCircle(); + } + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + public Builder setDrawCircle(mentraos.ble.MentraosBle.DrawCircle value) { + copyOnWrite(); + instance.setDrawCircle(value); + return this; + } + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + public Builder setDrawCircle( + mentraos.ble.MentraosBle.DrawCircle.Builder builderForValue) { + copyOnWrite(); + instance.setDrawCircle(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + public Builder mergeDrawCircle(mentraos.ble.MentraosBle.DrawCircle value) { + copyOnWrite(); + instance.mergeDrawCircle(value); + return this; + } + /** + * .mentraos.ble.DrawCircle draw_circle = 42; + */ + public Builder clearDrawCircle() { + copyOnWrite(); + instance.clearDrawCircle(); + return this; + } + + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + @java.lang.Override + public boolean hasCommit() { + return instance.hasCommit(); + } + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.CommitDisplay getCommit() { + return instance.getCommit(); + } + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + public Builder setCommit(mentraos.ble.MentraosBle.CommitDisplay value) { + copyOnWrite(); + instance.setCommit(value); + return this; + } + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + public Builder setCommit( + mentraos.ble.MentraosBle.CommitDisplay.Builder builderForValue) { + copyOnWrite(); + instance.setCommit(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + public Builder mergeCommit(mentraos.ble.MentraosBle.CommitDisplay value) { + copyOnWrite(); + instance.mergeCommit(value); + return this; + } + /** + * .mentraos.ble.CommitDisplay commit = 43; + */ + public Builder clearCommit() { + copyOnWrite(); + instance.clearCommit(); + return this; + } + + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + @java.lang.Override + public boolean hasDisplayDistance() { + return instance.hasDisplayDistance(); + } + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayDistanceConfig getDisplayDistance() { + return instance.getDisplayDistance(); + } + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + public Builder setDisplayDistance(mentraos.ble.MentraosBle.DisplayDistanceConfig value) { + copyOnWrite(); + instance.setDisplayDistance(value); + return this; + } + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + public Builder setDisplayDistance( + mentraos.ble.MentraosBle.DisplayDistanceConfig.Builder builderForValue) { + copyOnWrite(); + instance.setDisplayDistance(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + public Builder mergeDisplayDistance(mentraos.ble.MentraosBle.DisplayDistanceConfig value) { + copyOnWrite(); + instance.mergeDisplayDistance(value); + return this; + } + /** + * .mentraos.ble.DisplayDistanceConfig display_distance = 44; + */ + public Builder clearDisplayDistance() { + copyOnWrite(); + instance.clearDisplayDistance(); + return this; + } + + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + @java.lang.Override + public boolean hasDisplayHeight() { + return instance.hasDisplayHeight(); + } + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayHeightConfig getDisplayHeight() { + return instance.getDisplayHeight(); + } + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + public Builder setDisplayHeight(mentraos.ble.MentraosBle.DisplayHeightConfig value) { + copyOnWrite(); + instance.setDisplayHeight(value); + return this; + } + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + public Builder setDisplayHeight( + mentraos.ble.MentraosBle.DisplayHeightConfig.Builder builderForValue) { + copyOnWrite(); + instance.setDisplayHeight(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + public Builder mergeDisplayHeight(mentraos.ble.MentraosBle.DisplayHeightConfig value) { + copyOnWrite(); + instance.mergeDisplayHeight(value); + return this; + } + /** + * .mentraos.ble.DisplayHeightConfig display_height = 45; + */ + public Builder clearDisplayHeight() { + copyOnWrite(); + instance.clearDisplayHeight(); + return this; + } + + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + @java.lang.Override + public boolean hasImuEnabled() { + return instance.hasImuEnabled(); + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImuEnabledConfig getImuEnabled() { + return instance.getImuEnabled(); + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + public Builder setImuEnabled(mentraos.ble.MentraosBle.ImuEnabledConfig value) { + copyOnWrite(); + instance.setImuEnabled(value); + return this; + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + public Builder setImuEnabled( + mentraos.ble.MentraosBle.ImuEnabledConfig.Builder builderForValue) { + copyOnWrite(); + instance.setImuEnabled(builderForValue.build()); + return this; + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + public Builder mergeImuEnabled(mentraos.ble.MentraosBle.ImuEnabledConfig value) { + copyOnWrite(); + instance.mergeImuEnabled(value); + return this; + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuEnabledConfig imu_enabled = 50; + */ + public Builder clearImuEnabled() { + copyOnWrite(); + instance.clearImuEnabled(); + return this; + } + + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + @java.lang.Override + public boolean hasImuSingle() { + return instance.hasImuSingle(); + } + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImuSingleRequest getImuSingle() { + return instance.getImuSingle(); + } + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + public Builder setImuSingle(mentraos.ble.MentraosBle.ImuSingleRequest value) { + copyOnWrite(); + instance.setImuSingle(value); + return this; + } + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + public Builder setImuSingle( + mentraos.ble.MentraosBle.ImuSingleRequest.Builder builderForValue) { + copyOnWrite(); + instance.setImuSingle(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + public Builder mergeImuSingle(mentraos.ble.MentraosBle.ImuSingleRequest value) { + copyOnWrite(); + instance.mergeImuSingle(value); + return this; + } + /** + * .mentraos.ble.ImuSingleRequest imu_single = 51; + */ + public Builder clearImuSingle() { + copyOnWrite(); + instance.clearImuSingle(); + return this; + } + + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + @java.lang.Override + public boolean hasImuStream() { + return instance.hasImuStream(); + } + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImuStreamConfig getImuStream() { + return instance.getImuStream(); + } + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + public Builder setImuStream(mentraos.ble.MentraosBle.ImuStreamConfig value) { + copyOnWrite(); + instance.setImuStream(value); + return this; + } + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + public Builder setImuStream( + mentraos.ble.MentraosBle.ImuStreamConfig.Builder builderForValue) { + copyOnWrite(); + instance.setImuStream(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + public Builder mergeImuStream(mentraos.ble.MentraosBle.ImuStreamConfig value) { + copyOnWrite(); + instance.mergeImuStream(value); + return this; + } + /** + * .mentraos.ble.ImuStreamConfig imu_stream = 52; + */ + public Builder clearImuStream() { + copyOnWrite(); + instance.clearImuStream(); + return this; + } + + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + @java.lang.Override + public boolean hasHeadGesture() { + return instance.hasHeadGesture(); + } + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadGestureConfig getHeadGesture() { + return instance.getHeadGesture(); + } + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + public Builder setHeadGesture(mentraos.ble.MentraosBle.HeadGestureConfig value) { + copyOnWrite(); + instance.setHeadGesture(value); + return this; + } + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + public Builder setHeadGesture( + mentraos.ble.MentraosBle.HeadGestureConfig.Builder builderForValue) { + copyOnWrite(); + instance.setHeadGesture(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + public Builder mergeHeadGesture(mentraos.ble.MentraosBle.HeadGestureConfig value) { + copyOnWrite(); + instance.mergeHeadGesture(value); + return this; + } + /** + * .mentraos.ble.HeadGestureConfig head_gesture = 53; + */ + public Builder clearHeadGesture() { + copyOnWrite(); + instance.clearHeadGesture(); + return this; + } + + /** + *
+       * System Control
+       * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + @java.lang.Override + public boolean hasRestart() { + return instance.hasRestart(); + } + /** + *
+       * System Control
+       * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.RestartRequest getRestart() { + return instance.getRestart(); + } + /** + *
+       * System Control
+       * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + public Builder setRestart(mentraos.ble.MentraosBle.RestartRequest value) { + copyOnWrite(); + instance.setRestart(value); + return this; + } + /** + *
+       * System Control
+       * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + public Builder setRestart( + mentraos.ble.MentraosBle.RestartRequest.Builder builderForValue) { + copyOnWrite(); + instance.setRestart(builderForValue.build()); + return this; + } + /** + *
+       * System Control
+       * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + public Builder mergeRestart(mentraos.ble.MentraosBle.RestartRequest value) { + copyOnWrite(); + instance.mergeRestart(value); + return this; + } + /** + *
+       * System Control
+       * 
+ * + * .mentraos.ble.RestartRequest restart = 60; + */ + public Builder clearRestart() { + copyOnWrite(); + instance.clearRestart(); + return this; + } + + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + @java.lang.Override + public boolean hasFactoryReset() { + return instance.hasFactoryReset(); + } + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.FactoryResetRequest getFactoryReset() { + return instance.getFactoryReset(); + } + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + public Builder setFactoryReset(mentraos.ble.MentraosBle.FactoryResetRequest value) { + copyOnWrite(); + instance.setFactoryReset(value); + return this; + } + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + public Builder setFactoryReset( + mentraos.ble.MentraosBle.FactoryResetRequest.Builder builderForValue) { + copyOnWrite(); + instance.setFactoryReset(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + public Builder mergeFactoryReset(mentraos.ble.MentraosBle.FactoryResetRequest value) { + copyOnWrite(); + instance.mergeFactoryReset(value); + return this; + } + /** + * .mentraos.ble.FactoryResetRequest factory_reset = 61; + */ + public Builder clearFactoryReset() { + copyOnWrite(); + instance.clearFactoryReset(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.PhoneToGlasses) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.PhoneToGlasses(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "payload_", + "payloadCase_", + "msgId_", + mentraos.ble.MentraosBle.DisconnectRequest.class, + mentraos.ble.MentraosBle.BatteryStateRequest.class, + mentraos.ble.MentraosBle.GlassesInfoRequest.class, + mentraos.ble.MentraosBle.PairingModeRequest.class, + mentraos.ble.MentraosBle.HeadPositionRequest.class, + mentraos.ble.MentraosBle.HeadUpAngleConfig.class, + mentraos.ble.MentraosBle.PingRequest.class, + mentraos.ble.MentraosBle.MicStateConfig.class, + mentraos.ble.MentraosBle.VadEnabledConfig.class, + mentraos.ble.MentraosBle.VadConfig.class, + mentraos.ble.MentraosBle.DisplayText.class, + mentraos.ble.MentraosBle.DisplayImage.class, + mentraos.ble.MentraosBle.PreloadImage.class, + mentraos.ble.MentraosBle.DisplayCachedImage.class, + mentraos.ble.MentraosBle.ClearCachedImage.class, + mentraos.ble.MentraosBle.DisplayScrollingText.class, + mentraos.ble.MentraosBle.DisplayPowerConfig.class, + mentraos.ble.MentraosBle.BrightnessConfig.class, + mentraos.ble.MentraosBle.AutoBrightnessConfig.class, + mentraos.ble.MentraosBle.AutoBrightnessMultiplier.class, + mentraos.ble.MentraosBle.DrawLine.class, + mentraos.ble.MentraosBle.DrawRect.class, + mentraos.ble.MentraosBle.DrawCircle.class, + mentraos.ble.MentraosBle.CommitDisplay.class, + mentraos.ble.MentraosBle.DisplayDistanceConfig.class, + mentraos.ble.MentraosBle.DisplayHeightConfig.class, + mentraos.ble.MentraosBle.ImuEnabledConfig.class, + mentraos.ble.MentraosBle.ImuSingleRequest.class, + mentraos.ble.MentraosBle.ImuStreamConfig.class, + mentraos.ble.MentraosBle.HeadGestureConfig.class, + mentraos.ble.MentraosBle.RestartRequest.class, + mentraos.ble.MentraosBle.FactoryResetRequest.class, + }; + java.lang.String info = + "\u0000!\u0001\u0000\u0001=!\u0000\u0000\u0000\u0001\u0208\n<\u0000\u000b<\u0000\f" + + "<\u0000\r<\u0000\u000e<\u0000\u000f<\u0000\u0010<\u0000\u0014<\u0000\u0015<\u0000" + + "\u0016<\u0000\u001e<\u0000\u001f<\u0000 <\u0000!<\u0000\"<\u0000#<\u0000$<\u0000" + + "%<\u0000&<\u0000\'<\u0000(<\u0000)<\u0000*<\u0000+<\u0000,<\u0000-<\u00002<\u0000" + + "3<\u00004<\u00005<\u0000<<\u0000=<\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.PhoneToGlasses.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.PhoneToGlasses) + private static final mentraos.ble.MentraosBle.PhoneToGlasses DEFAULT_INSTANCE; + static { + PhoneToGlasses defaultInstance = new PhoneToGlasses(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + PhoneToGlasses.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.PhoneToGlasses getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface GlassesToPhoneOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.GlassesToPhone) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + * @return Whether the batteryStatus field is set. + */ + boolean hasBatteryStatus(); + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + * @return The batteryStatus. + */ + mentraos.ble.MentraosBle.BatteryStatus getBatteryStatus(); + + /** + * .mentraos.ble.ChargingState charging_state = 11; + * @return Whether the chargingState field is set. + */ + boolean hasChargingState(); + /** + * .mentraos.ble.ChargingState charging_state = 11; + * @return The chargingState. + */ + mentraos.ble.MentraosBle.ChargingState getChargingState(); + + /** + * .mentraos.ble.DeviceInfo device_info = 12; + * @return Whether the deviceInfo field is set. + */ + boolean hasDeviceInfo(); + /** + * .mentraos.ble.DeviceInfo device_info = 12; + * @return The deviceInfo. + */ + mentraos.ble.MentraosBle.DeviceInfo getDeviceInfo(); + + /** + * .mentraos.ble.HeadPosition head_position = 13; + * @return Whether the headPosition field is set. + */ + boolean hasHeadPosition(); + /** + * .mentraos.ble.HeadPosition head_position = 13; + * @return The headPosition. + */ + mentraos.ble.MentraosBle.HeadPosition getHeadPosition(); + + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + * @return Whether the headUpAngleSet field is set. + */ + boolean hasHeadUpAngleSet(); + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + * @return The headUpAngleSet. + */ + mentraos.ble.MentraosBle.HeadUpAngleResponse getHeadUpAngleSet(); + + /** + * .mentraos.ble.PongResponse pong = 15; + * @return Whether the pong field is set. + */ + boolean hasPong(); + /** + * .mentraos.ble.PongResponse pong = 15; + * @return The pong. + */ + mentraos.ble.MentraosBle.PongResponse getPong(); + + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + * @return Whether the vadEvent field is set. + */ + boolean hasVadEvent(); + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + * @return The vadEvent. + */ + mentraos.ble.MentraosBle.VadEvent getVadEvent(); + + /** + *
+     * Display System  
+     * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + * @return Whether the imageTransferComplete field is set. + */ + boolean hasImageTransferComplete(); + /** + *
+     * Display System  
+     * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + * @return The imageTransferComplete. + */ + mentraos.ble.MentraosBle.ImageTransferComplete getImageTransferComplete(); + + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + * @return Whether the imuData field is set. + */ + boolean hasImuData(); + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + * @return The imuData. + */ + mentraos.ble.MentraosBle.ImuData getImuData(); + + /** + * .mentraos.ble.ButtonEvent button_event = 41; + * @return Whether the buttonEvent field is set. + */ + boolean hasButtonEvent(); + /** + * .mentraos.ble.ButtonEvent button_event = 41; + * @return The buttonEvent. + */ + mentraos.ble.MentraosBle.ButtonEvent getButtonEvent(); + + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + * @return Whether the headGesture field is set. + */ + boolean hasHeadGesture(); + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + * @return The headGesture. + */ + mentraos.ble.MentraosBle.HeadGesture getHeadGesture(); + + public mentraos.ble.MentraosBle.GlassesToPhone.PayloadCase getPayloadCase(); + } + /** + *
+   * All messages from glasses to phone
+   * 
+ * + * Protobuf type {@code mentraos.ble.GlassesToPhone} + */ + public static final class GlassesToPhone extends + com.google.protobuf.GeneratedMessageLite< + GlassesToPhone, GlassesToPhone.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.GlassesToPhone) + GlassesToPhoneOrBuilder { + private GlassesToPhone() { + } + private int payloadCase_ = 0; + private java.lang.Object payload_; + public enum PayloadCase { + BATTERY_STATUS(10), + CHARGING_STATE(11), + DEVICE_INFO(12), + HEAD_POSITION(13), + HEAD_UP_ANGLE_SET(14), + PONG(15), + VAD_EVENT(20), + IMAGE_TRANSFER_COMPLETE(30), + IMU_DATA(40), + BUTTON_EVENT(41), + HEAD_GESTURE(42), + PAYLOAD_NOT_SET(0); + private final int value; + private PayloadCase(int value) { + this.value = value; + } + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static PayloadCase valueOf(int value) { + return forNumber(value); + } + + public static PayloadCase forNumber(int value) { + switch (value) { + case 10: return BATTERY_STATUS; + case 11: return CHARGING_STATE; + case 12: return DEVICE_INFO; + case 13: return HEAD_POSITION; + case 14: return HEAD_UP_ANGLE_SET; + case 15: return PONG; + case 20: return VAD_EVENT; + case 30: return IMAGE_TRANSFER_COMPLETE; + case 40: return IMU_DATA; + case 41: return BUTTON_EVENT; + case 42: return HEAD_GESTURE; + case 0: return PAYLOAD_NOT_SET; + default: return null; + } + } + public int getNumber() { + return this.value; + } + }; + + @java.lang.Override + public PayloadCase + getPayloadCase() { + return PayloadCase.forNumber( + payloadCase_); + } + + private void clearPayload() { + payloadCase_ = 0; + payload_ = null; + } + + public static final int BATTERY_STATUS_FIELD_NUMBER = 10; + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + @java.lang.Override + public boolean hasBatteryStatus() { + return payloadCase_ == 10; + } + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.BatteryStatus getBatteryStatus() { + if (payloadCase_ == 10) { + return (mentraos.ble.MentraosBle.BatteryStatus) payload_; + } + return mentraos.ble.MentraosBle.BatteryStatus.getDefaultInstance(); + } + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + private void setBatteryStatus(mentraos.ble.MentraosBle.BatteryStatus value) { + value.getClass(); + payload_ = value; + payloadCase_ = 10; + } + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + private void mergeBatteryStatus(mentraos.ble.MentraosBle.BatteryStatus value) { + value.getClass(); + if (payloadCase_ == 10 && + payload_ != mentraos.ble.MentraosBle.BatteryStatus.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.BatteryStatus.newBuilder((mentraos.ble.MentraosBle.BatteryStatus) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 10; + } + /** + *
+     * Connection Management
+     * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + private void clearBatteryStatus() { + if (payloadCase_ == 10) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int CHARGING_STATE_FIELD_NUMBER = 11; + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + @java.lang.Override + public boolean hasChargingState() { + return payloadCase_ == 11; + } + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ChargingState getChargingState() { + if (payloadCase_ == 11) { + return (mentraos.ble.MentraosBle.ChargingState) payload_; + } + return mentraos.ble.MentraosBle.ChargingState.getDefaultInstance(); + } + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + private void setChargingState(mentraos.ble.MentraosBle.ChargingState value) { + value.getClass(); + payload_ = value; + payloadCase_ = 11; + } + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + private void mergeChargingState(mentraos.ble.MentraosBle.ChargingState value) { + value.getClass(); + if (payloadCase_ == 11 && + payload_ != mentraos.ble.MentraosBle.ChargingState.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.ChargingState.newBuilder((mentraos.ble.MentraosBle.ChargingState) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 11; + } + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + private void clearChargingState() { + if (payloadCase_ == 11) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int DEVICE_INFO_FIELD_NUMBER = 12; + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + @java.lang.Override + public boolean hasDeviceInfo() { + return payloadCase_ == 12; + } + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DeviceInfo getDeviceInfo() { + if (payloadCase_ == 12) { + return (mentraos.ble.MentraosBle.DeviceInfo) payload_; + } + return mentraos.ble.MentraosBle.DeviceInfo.getDefaultInstance(); + } + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + private void setDeviceInfo(mentraos.ble.MentraosBle.DeviceInfo value) { + value.getClass(); + payload_ = value; + payloadCase_ = 12; + } + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + private void mergeDeviceInfo(mentraos.ble.MentraosBle.DeviceInfo value) { + value.getClass(); + if (payloadCase_ == 12 && + payload_ != mentraos.ble.MentraosBle.DeviceInfo.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.DeviceInfo.newBuilder((mentraos.ble.MentraosBle.DeviceInfo) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 12; + } + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + private void clearDeviceInfo() { + if (payloadCase_ == 12) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int HEAD_POSITION_FIELD_NUMBER = 13; + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + @java.lang.Override + public boolean hasHeadPosition() { + return payloadCase_ == 13; + } + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadPosition getHeadPosition() { + if (payloadCase_ == 13) { + return (mentraos.ble.MentraosBle.HeadPosition) payload_; + } + return mentraos.ble.MentraosBle.HeadPosition.getDefaultInstance(); + } + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + private void setHeadPosition(mentraos.ble.MentraosBle.HeadPosition value) { + value.getClass(); + payload_ = value; + payloadCase_ = 13; + } + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + private void mergeHeadPosition(mentraos.ble.MentraosBle.HeadPosition value) { + value.getClass(); + if (payloadCase_ == 13 && + payload_ != mentraos.ble.MentraosBle.HeadPosition.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.HeadPosition.newBuilder((mentraos.ble.MentraosBle.HeadPosition) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 13; + } + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + private void clearHeadPosition() { + if (payloadCase_ == 13) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int HEAD_UP_ANGLE_SET_FIELD_NUMBER = 14; + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + @java.lang.Override + public boolean hasHeadUpAngleSet() { + return payloadCase_ == 14; + } + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadUpAngleResponse getHeadUpAngleSet() { + if (payloadCase_ == 14) { + return (mentraos.ble.MentraosBle.HeadUpAngleResponse) payload_; + } + return mentraos.ble.MentraosBle.HeadUpAngleResponse.getDefaultInstance(); + } + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + private void setHeadUpAngleSet(mentraos.ble.MentraosBle.HeadUpAngleResponse value) { + value.getClass(); + payload_ = value; + payloadCase_ = 14; + } + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + private void mergeHeadUpAngleSet(mentraos.ble.MentraosBle.HeadUpAngleResponse value) { + value.getClass(); + if (payloadCase_ == 14 && + payload_ != mentraos.ble.MentraosBle.HeadUpAngleResponse.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.HeadUpAngleResponse.newBuilder((mentraos.ble.MentraosBle.HeadUpAngleResponse) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 14; + } + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + private void clearHeadUpAngleSet() { + if (payloadCase_ == 14) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int PONG_FIELD_NUMBER = 15; + /** + * .mentraos.ble.PongResponse pong = 15; + */ + @java.lang.Override + public boolean hasPong() { + return payloadCase_ == 15; + } + /** + * .mentraos.ble.PongResponse pong = 15; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.PongResponse getPong() { + if (payloadCase_ == 15) { + return (mentraos.ble.MentraosBle.PongResponse) payload_; + } + return mentraos.ble.MentraosBle.PongResponse.getDefaultInstance(); + } + /** + * .mentraos.ble.PongResponse pong = 15; + */ + private void setPong(mentraos.ble.MentraosBle.PongResponse value) { + value.getClass(); + payload_ = value; + payloadCase_ = 15; + } + /** + * .mentraos.ble.PongResponse pong = 15; + */ + private void mergePong(mentraos.ble.MentraosBle.PongResponse value) { + value.getClass(); + if (payloadCase_ == 15 && + payload_ != mentraos.ble.MentraosBle.PongResponse.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.PongResponse.newBuilder((mentraos.ble.MentraosBle.PongResponse) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 15; + } + /** + * .mentraos.ble.PongResponse pong = 15; + */ + private void clearPong() { + if (payloadCase_ == 15) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int VAD_EVENT_FIELD_NUMBER = 20; + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + @java.lang.Override + public boolean hasVadEvent() { + return payloadCase_ == 20; + } + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.VadEvent getVadEvent() { + if (payloadCase_ == 20) { + return (mentraos.ble.MentraosBle.VadEvent) payload_; + } + return mentraos.ble.MentraosBle.VadEvent.getDefaultInstance(); + } + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + private void setVadEvent(mentraos.ble.MentraosBle.VadEvent value) { + value.getClass(); + payload_ = value; + payloadCase_ = 20; + } + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + private void mergeVadEvent(mentraos.ble.MentraosBle.VadEvent value) { + value.getClass(); + if (payloadCase_ == 20 && + payload_ != mentraos.ble.MentraosBle.VadEvent.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.VadEvent.newBuilder((mentraos.ble.MentraosBle.VadEvent) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 20; + } + /** + *
+     * Audio System
+     * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + private void clearVadEvent() { + if (payloadCase_ == 20) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int IMAGE_TRANSFER_COMPLETE_FIELD_NUMBER = 30; + /** + *
+     * Display System  
+     * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + @java.lang.Override + public boolean hasImageTransferComplete() { + return payloadCase_ == 30; + } + /** + *
+     * Display System  
+     * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImageTransferComplete getImageTransferComplete() { + if (payloadCase_ == 30) { + return (mentraos.ble.MentraosBle.ImageTransferComplete) payload_; + } + return mentraos.ble.MentraosBle.ImageTransferComplete.getDefaultInstance(); + } + /** + *
+     * Display System  
+     * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + private void setImageTransferComplete(mentraos.ble.MentraosBle.ImageTransferComplete value) { + value.getClass(); + payload_ = value; + payloadCase_ = 30; + } + /** + *
+     * Display System  
+     * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + private void mergeImageTransferComplete(mentraos.ble.MentraosBle.ImageTransferComplete value) { + value.getClass(); + if (payloadCase_ == 30 && + payload_ != mentraos.ble.MentraosBle.ImageTransferComplete.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.ImageTransferComplete.newBuilder((mentraos.ble.MentraosBle.ImageTransferComplete) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 30; + } + /** + *
+     * Display System  
+     * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + private void clearImageTransferComplete() { + if (payloadCase_ == 30) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int IMU_DATA_FIELD_NUMBER = 40; + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + @java.lang.Override + public boolean hasImuData() { + return payloadCase_ == 40; + } + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImuData getImuData() { + if (payloadCase_ == 40) { + return (mentraos.ble.MentraosBle.ImuData) payload_; + } + return mentraos.ble.MentraosBle.ImuData.getDefaultInstance(); + } + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + private void setImuData(mentraos.ble.MentraosBle.ImuData value) { + value.getClass(); + payload_ = value; + payloadCase_ = 40; + } + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + private void mergeImuData(mentraos.ble.MentraosBle.ImuData value) { + value.getClass(); + if (payloadCase_ == 40 && + payload_ != mentraos.ble.MentraosBle.ImuData.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.ImuData.newBuilder((mentraos.ble.MentraosBle.ImuData) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 40; + } + /** + *
+     * User Input
+     * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + private void clearImuData() { + if (payloadCase_ == 40) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int BUTTON_EVENT_FIELD_NUMBER = 41; + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + @java.lang.Override + public boolean hasButtonEvent() { + return payloadCase_ == 41; + } + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ButtonEvent getButtonEvent() { + if (payloadCase_ == 41) { + return (mentraos.ble.MentraosBle.ButtonEvent) payload_; + } + return mentraos.ble.MentraosBle.ButtonEvent.getDefaultInstance(); + } + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + private void setButtonEvent(mentraos.ble.MentraosBle.ButtonEvent value) { + value.getClass(); + payload_ = value; + payloadCase_ = 41; + } + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + private void mergeButtonEvent(mentraos.ble.MentraosBle.ButtonEvent value) { + value.getClass(); + if (payloadCase_ == 41 && + payload_ != mentraos.ble.MentraosBle.ButtonEvent.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.ButtonEvent.newBuilder((mentraos.ble.MentraosBle.ButtonEvent) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 41; + } + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + private void clearButtonEvent() { + if (payloadCase_ == 41) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static final int HEAD_GESTURE_FIELD_NUMBER = 42; + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + @java.lang.Override + public boolean hasHeadGesture() { + return payloadCase_ == 42; + } + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadGesture getHeadGesture() { + if (payloadCase_ == 42) { + return (mentraos.ble.MentraosBle.HeadGesture) payload_; + } + return mentraos.ble.MentraosBle.HeadGesture.getDefaultInstance(); + } + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + private void setHeadGesture(mentraos.ble.MentraosBle.HeadGesture value) { + value.getClass(); + payload_ = value; + payloadCase_ = 42; + } + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + private void mergeHeadGesture(mentraos.ble.MentraosBle.HeadGesture value) { + value.getClass(); + if (payloadCase_ == 42 && + payload_ != mentraos.ble.MentraosBle.HeadGesture.getDefaultInstance()) { + payload_ = mentraos.ble.MentraosBle.HeadGesture.newBuilder((mentraos.ble.MentraosBle.HeadGesture) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + payloadCase_ = 42; + } + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + private void clearHeadGesture() { + if (payloadCase_ == 42) { + payloadCase_ = 0; + payload_ = null; + } + } + + public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.GlassesToPhone parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.GlassesToPhone parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.GlassesToPhone parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.GlassesToPhone prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + *
+     * All messages from glasses to phone
+     * 
+ * + * Protobuf type {@code mentraos.ble.GlassesToPhone} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.GlassesToPhone, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.GlassesToPhone) + mentraos.ble.MentraosBle.GlassesToPhoneOrBuilder { + // Construct using mentraos.ble.MentraosBle.GlassesToPhone.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + @java.lang.Override + public PayloadCase + getPayloadCase() { + return instance.getPayloadCase(); + } + + public Builder clearPayload() { + copyOnWrite(); + instance.clearPayload(); + return this; + } + + + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + @java.lang.Override + public boolean hasBatteryStatus() { + return instance.hasBatteryStatus(); + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.BatteryStatus getBatteryStatus() { + return instance.getBatteryStatus(); + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + public Builder setBatteryStatus(mentraos.ble.MentraosBle.BatteryStatus value) { + copyOnWrite(); + instance.setBatteryStatus(value); + return this; + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + public Builder setBatteryStatus( + mentraos.ble.MentraosBle.BatteryStatus.Builder builderForValue) { + copyOnWrite(); + instance.setBatteryStatus(builderForValue.build()); + return this; + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + public Builder mergeBatteryStatus(mentraos.ble.MentraosBle.BatteryStatus value) { + copyOnWrite(); + instance.mergeBatteryStatus(value); + return this; + } + /** + *
+       * Connection Management
+       * 
+ * + * .mentraos.ble.BatteryStatus battery_status = 10; + */ + public Builder clearBatteryStatus() { + copyOnWrite(); + instance.clearBatteryStatus(); + return this; + } + + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + @java.lang.Override + public boolean hasChargingState() { + return instance.hasChargingState(); + } + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ChargingState getChargingState() { + return instance.getChargingState(); + } + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + public Builder setChargingState(mentraos.ble.MentraosBle.ChargingState value) { + copyOnWrite(); + instance.setChargingState(value); + return this; + } + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + public Builder setChargingState( + mentraos.ble.MentraosBle.ChargingState.Builder builderForValue) { + copyOnWrite(); + instance.setChargingState(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + public Builder mergeChargingState(mentraos.ble.MentraosBle.ChargingState value) { + copyOnWrite(); + instance.mergeChargingState(value); + return this; + } + /** + * .mentraos.ble.ChargingState charging_state = 11; + */ + public Builder clearChargingState() { + copyOnWrite(); + instance.clearChargingState(); + return this; + } + + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + @java.lang.Override + public boolean hasDeviceInfo() { + return instance.hasDeviceInfo(); + } + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DeviceInfo getDeviceInfo() { + return instance.getDeviceInfo(); + } + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + public Builder setDeviceInfo(mentraos.ble.MentraosBle.DeviceInfo value) { + copyOnWrite(); + instance.setDeviceInfo(value); + return this; + } + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + public Builder setDeviceInfo( + mentraos.ble.MentraosBle.DeviceInfo.Builder builderForValue) { + copyOnWrite(); + instance.setDeviceInfo(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + public Builder mergeDeviceInfo(mentraos.ble.MentraosBle.DeviceInfo value) { + copyOnWrite(); + instance.mergeDeviceInfo(value); + return this; + } + /** + * .mentraos.ble.DeviceInfo device_info = 12; + */ + public Builder clearDeviceInfo() { + copyOnWrite(); + instance.clearDeviceInfo(); + return this; + } + + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + @java.lang.Override + public boolean hasHeadPosition() { + return instance.hasHeadPosition(); + } + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadPosition getHeadPosition() { + return instance.getHeadPosition(); + } + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + public Builder setHeadPosition(mentraos.ble.MentraosBle.HeadPosition value) { + copyOnWrite(); + instance.setHeadPosition(value); + return this; + } + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + public Builder setHeadPosition( + mentraos.ble.MentraosBle.HeadPosition.Builder builderForValue) { + copyOnWrite(); + instance.setHeadPosition(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + public Builder mergeHeadPosition(mentraos.ble.MentraosBle.HeadPosition value) { + copyOnWrite(); + instance.mergeHeadPosition(value); + return this; + } + /** + * .mentraos.ble.HeadPosition head_position = 13; + */ + public Builder clearHeadPosition() { + copyOnWrite(); + instance.clearHeadPosition(); + return this; + } + + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + @java.lang.Override + public boolean hasHeadUpAngleSet() { + return instance.hasHeadUpAngleSet(); + } + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadUpAngleResponse getHeadUpAngleSet() { + return instance.getHeadUpAngleSet(); + } + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + public Builder setHeadUpAngleSet(mentraos.ble.MentraosBle.HeadUpAngleResponse value) { + copyOnWrite(); + instance.setHeadUpAngleSet(value); + return this; + } + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + public Builder setHeadUpAngleSet( + mentraos.ble.MentraosBle.HeadUpAngleResponse.Builder builderForValue) { + copyOnWrite(); + instance.setHeadUpAngleSet(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + public Builder mergeHeadUpAngleSet(mentraos.ble.MentraosBle.HeadUpAngleResponse value) { + copyOnWrite(); + instance.mergeHeadUpAngleSet(value); + return this; + } + /** + * .mentraos.ble.HeadUpAngleResponse head_up_angle_set = 14; + */ + public Builder clearHeadUpAngleSet() { + copyOnWrite(); + instance.clearHeadUpAngleSet(); + return this; + } + + /** + * .mentraos.ble.PongResponse pong = 15; + */ + @java.lang.Override + public boolean hasPong() { + return instance.hasPong(); + } + /** + * .mentraos.ble.PongResponse pong = 15; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.PongResponse getPong() { + return instance.getPong(); + } + /** + * .mentraos.ble.PongResponse pong = 15; + */ + public Builder setPong(mentraos.ble.MentraosBle.PongResponse value) { + copyOnWrite(); + instance.setPong(value); + return this; + } + /** + * .mentraos.ble.PongResponse pong = 15; + */ + public Builder setPong( + mentraos.ble.MentraosBle.PongResponse.Builder builderForValue) { + copyOnWrite(); + instance.setPong(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.PongResponse pong = 15; + */ + public Builder mergePong(mentraos.ble.MentraosBle.PongResponse value) { + copyOnWrite(); + instance.mergePong(value); + return this; + } + /** + * .mentraos.ble.PongResponse pong = 15; + */ + public Builder clearPong() { + copyOnWrite(); + instance.clearPong(); + return this; + } + + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + @java.lang.Override + public boolean hasVadEvent() { + return instance.hasVadEvent(); + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.VadEvent getVadEvent() { + return instance.getVadEvent(); + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + public Builder setVadEvent(mentraos.ble.MentraosBle.VadEvent value) { + copyOnWrite(); + instance.setVadEvent(value); + return this; + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + public Builder setVadEvent( + mentraos.ble.MentraosBle.VadEvent.Builder builderForValue) { + copyOnWrite(); + instance.setVadEvent(builderForValue.build()); + return this; + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + public Builder mergeVadEvent(mentraos.ble.MentraosBle.VadEvent value) { + copyOnWrite(); + instance.mergeVadEvent(value); + return this; + } + /** + *
+       * Audio System
+       * 
+ * + * .mentraos.ble.VadEvent vad_event = 20; + */ + public Builder clearVadEvent() { + copyOnWrite(); + instance.clearVadEvent(); + return this; + } + + /** + *
+       * Display System  
+       * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + @java.lang.Override + public boolean hasImageTransferComplete() { + return instance.hasImageTransferComplete(); + } + /** + *
+       * Display System  
+       * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImageTransferComplete getImageTransferComplete() { + return instance.getImageTransferComplete(); + } + /** + *
+       * Display System  
+       * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + public Builder setImageTransferComplete(mentraos.ble.MentraosBle.ImageTransferComplete value) { + copyOnWrite(); + instance.setImageTransferComplete(value); + return this; + } + /** + *
+       * Display System  
+       * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + public Builder setImageTransferComplete( + mentraos.ble.MentraosBle.ImageTransferComplete.Builder builderForValue) { + copyOnWrite(); + instance.setImageTransferComplete(builderForValue.build()); + return this; + } + /** + *
+       * Display System  
+       * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + public Builder mergeImageTransferComplete(mentraos.ble.MentraosBle.ImageTransferComplete value) { + copyOnWrite(); + instance.mergeImageTransferComplete(value); + return this; + } + /** + *
+       * Display System  
+       * 
+ * + * .mentraos.ble.ImageTransferComplete image_transfer_complete = 30; + */ + public Builder clearImageTransferComplete() { + copyOnWrite(); + instance.clearImageTransferComplete(); + return this; + } + + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + @java.lang.Override + public boolean hasImuData() { + return instance.hasImuData(); + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImuData getImuData() { + return instance.getImuData(); + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + public Builder setImuData(mentraos.ble.MentraosBle.ImuData value) { + copyOnWrite(); + instance.setImuData(value); + return this; + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + public Builder setImuData( + mentraos.ble.MentraosBle.ImuData.Builder builderForValue) { + copyOnWrite(); + instance.setImuData(builderForValue.build()); + return this; + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + public Builder mergeImuData(mentraos.ble.MentraosBle.ImuData value) { + copyOnWrite(); + instance.mergeImuData(value); + return this; + } + /** + *
+       * User Input
+       * 
+ * + * .mentraos.ble.ImuData imu_data = 40; + */ + public Builder clearImuData() { + copyOnWrite(); + instance.clearImuData(); + return this; + } + + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + @java.lang.Override + public boolean hasButtonEvent() { + return instance.hasButtonEvent(); + } + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ButtonEvent getButtonEvent() { + return instance.getButtonEvent(); + } + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + public Builder setButtonEvent(mentraos.ble.MentraosBle.ButtonEvent value) { + copyOnWrite(); + instance.setButtonEvent(value); + return this; + } + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + public Builder setButtonEvent( + mentraos.ble.MentraosBle.ButtonEvent.Builder builderForValue) { + copyOnWrite(); + instance.setButtonEvent(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + public Builder mergeButtonEvent(mentraos.ble.MentraosBle.ButtonEvent value) { + copyOnWrite(); + instance.mergeButtonEvent(value); + return this; + } + /** + * .mentraos.ble.ButtonEvent button_event = 41; + */ + public Builder clearButtonEvent() { + copyOnWrite(); + instance.clearButtonEvent(); + return this; + } + + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + @java.lang.Override + public boolean hasHeadGesture() { + return instance.hasHeadGesture(); + } + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.HeadGesture getHeadGesture() { + return instance.getHeadGesture(); + } + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + public Builder setHeadGesture(mentraos.ble.MentraosBle.HeadGesture value) { + copyOnWrite(); + instance.setHeadGesture(value); + return this; + } + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + public Builder setHeadGesture( + mentraos.ble.MentraosBle.HeadGesture.Builder builderForValue) { + copyOnWrite(); + instance.setHeadGesture(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + public Builder mergeHeadGesture(mentraos.ble.MentraosBle.HeadGesture value) { + copyOnWrite(); + instance.mergeHeadGesture(value); + return this; + } + /** + * .mentraos.ble.HeadGesture head_gesture = 42; + */ + public Builder clearHeadGesture() { + copyOnWrite(); + instance.clearHeadGesture(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.GlassesToPhone) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.GlassesToPhone(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "payload_", + "payloadCase_", + mentraos.ble.MentraosBle.BatteryStatus.class, + mentraos.ble.MentraosBle.ChargingState.class, + mentraos.ble.MentraosBle.DeviceInfo.class, + mentraos.ble.MentraosBle.HeadPosition.class, + mentraos.ble.MentraosBle.HeadUpAngleResponse.class, + mentraos.ble.MentraosBle.PongResponse.class, + mentraos.ble.MentraosBle.VadEvent.class, + mentraos.ble.MentraosBle.ImageTransferComplete.class, + mentraos.ble.MentraosBle.ImuData.class, + mentraos.ble.MentraosBle.ButtonEvent.class, + mentraos.ble.MentraosBle.HeadGesture.class, + }; + java.lang.String info = + "\u0000\u000b\u0001\u0000\n*\u000b\u0000\u0000\u0000\n<\u0000\u000b<\u0000\f<\u0000" + + "\r<\u0000\u000e<\u0000\u000f<\u0000\u0014<\u0000\u001e<\u0000(<\u0000)<\u0000*<\u0000" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.GlassesToPhone.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.GlassesToPhone) + private static final mentraos.ble.MentraosBle.GlassesToPhone DEFAULT_INSTANCE; + static { + GlassesToPhone defaultInstance = new GlassesToPhone(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + GlassesToPhone.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.GlassesToPhone getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DisconnectRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DisconnectRequest) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code mentraos.ble.DisconnectRequest} + */ + public static final class DisconnectRequest extends + com.google.protobuf.GeneratedMessageLite< + DisconnectRequest, DisconnectRequest.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DisconnectRequest) + DisconnectRequestOrBuilder { + private DisconnectRequest() { + } + public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DisconnectRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DisconnectRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisconnectRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DisconnectRequest prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DisconnectRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DisconnectRequest, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DisconnectRequest) + mentraos.ble.MentraosBle.DisconnectRequestOrBuilder { + // Construct using mentraos.ble.MentraosBle.DisconnectRequest.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DisconnectRequest) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DisconnectRequest(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DisconnectRequest.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DisconnectRequest) + private static final mentraos.ble.MentraosBle.DisconnectRequest DEFAULT_INSTANCE; + static { + DisconnectRequest defaultInstance = new DisconnectRequest(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DisconnectRequest.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DisconnectRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface BatteryStateRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.BatteryStateRequest) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code mentraos.ble.BatteryStateRequest} + */ + public static final class BatteryStateRequest extends + com.google.protobuf.GeneratedMessageLite< + BatteryStateRequest, BatteryStateRequest.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.BatteryStateRequest) + BatteryStateRequestOrBuilder { + private BatteryStateRequest() { + } + public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.BatteryStateRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.BatteryStateRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BatteryStateRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.BatteryStateRequest prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.BatteryStateRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.BatteryStateRequest, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.BatteryStateRequest) + mentraos.ble.MentraosBle.BatteryStateRequestOrBuilder { + // Construct using mentraos.ble.MentraosBle.BatteryStateRequest.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:mentraos.ble.BatteryStateRequest) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.BatteryStateRequest(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.BatteryStateRequest.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.BatteryStateRequest) + private static final mentraos.ble.MentraosBle.BatteryStateRequest DEFAULT_INSTANCE; + static { + BatteryStateRequest defaultInstance = new BatteryStateRequest(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + BatteryStateRequest.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.BatteryStateRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface BatteryStatusOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.BatteryStatus) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * 0-100 percentage
+     * 
+ * + * uint32 level = 1; + * @return The level. + */ + int getLevel(); + + /** + * bool charging = 2; + * @return The charging. + */ + boolean getCharging(); + } + /** + * Protobuf type {@code mentraos.ble.BatteryStatus} + */ + public static final class BatteryStatus extends + com.google.protobuf.GeneratedMessageLite< + BatteryStatus, BatteryStatus.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.BatteryStatus) + BatteryStatusOrBuilder { + private BatteryStatus() { + } + public static final int LEVEL_FIELD_NUMBER = 1; + private int level_; + /** + *
+     * 0-100 percentage
+     * 
+ * + * uint32 level = 1; + * @return The level. + */ + @java.lang.Override + public int getLevel() { + return level_; + } + /** + *
+     * 0-100 percentage
+     * 
+ * + * uint32 level = 1; + * @param value The level to set. + */ + private void setLevel(int value) { + + level_ = value; + } + /** + *
+     * 0-100 percentage
+     * 
+ * + * uint32 level = 1; + */ + private void clearLevel() { + + level_ = 0; + } + + public static final int CHARGING_FIELD_NUMBER = 2; + private boolean charging_; + /** + * bool charging = 2; + * @return The charging. + */ + @java.lang.Override + public boolean getCharging() { + return charging_; + } + /** + * bool charging = 2; + * @param value The charging to set. + */ + private void setCharging(boolean value) { + + charging_ = value; + } + /** + * bool charging = 2; + */ + private void clearCharging() { + + charging_ = false; + } + + public static mentraos.ble.MentraosBle.BatteryStatus parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.BatteryStatus parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BatteryStatus parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.BatteryStatus parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BatteryStatus parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.BatteryStatus parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BatteryStatus parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.BatteryStatus parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.BatteryStatus parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BatteryStatus parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.BatteryStatus prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.BatteryStatus} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.BatteryStatus, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.BatteryStatus) + mentraos.ble.MentraosBle.BatteryStatusOrBuilder { + // Construct using mentraos.ble.MentraosBle.BatteryStatus.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * 0-100 percentage
+       * 
+ * + * uint32 level = 1; + * @return The level. + */ + @java.lang.Override + public int getLevel() { + return instance.getLevel(); + } + /** + *
+       * 0-100 percentage
+       * 
+ * + * uint32 level = 1; + * @param value The level to set. + * @return This builder for chaining. + */ + public Builder setLevel(int value) { + copyOnWrite(); + instance.setLevel(value); + return this; + } + /** + *
+       * 0-100 percentage
+       * 
+ * + * uint32 level = 1; + * @return This builder for chaining. + */ + public Builder clearLevel() { + copyOnWrite(); + instance.clearLevel(); + return this; + } + + /** + * bool charging = 2; + * @return The charging. + */ + @java.lang.Override + public boolean getCharging() { + return instance.getCharging(); + } + /** + * bool charging = 2; + * @param value The charging to set. + * @return This builder for chaining. + */ + public Builder setCharging(boolean value) { + copyOnWrite(); + instance.setCharging(value); + return this; + } + /** + * bool charging = 2; + * @return This builder for chaining. + */ + public Builder clearCharging() { + copyOnWrite(); + instance.clearCharging(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.BatteryStatus) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.BatteryStatus(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "level_", + "charging_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u000b\u0002\u0007" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.BatteryStatus.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.BatteryStatus) + private static final mentraos.ble.MentraosBle.BatteryStatus DEFAULT_INSTANCE; + static { + BatteryStatus defaultInstance = new BatteryStatus(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + BatteryStatus.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.BatteryStatus getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ChargingStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.ChargingState) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .mentraos.ble.ChargingState.State state = 1; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + * .mentraos.ble.ChargingState.State state = 1; + * @return The state. + */ + mentraos.ble.MentraosBle.ChargingState.State getState(); + } + /** + * Protobuf type {@code mentraos.ble.ChargingState} + */ + public static final class ChargingState extends + com.google.protobuf.GeneratedMessageLite< + ChargingState, ChargingState.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.ChargingState) + ChargingStateOrBuilder { + private ChargingState() { + } + /** + * Protobuf enum {@code mentraos.ble.ChargingState.State} + */ + public enum State + implements com.google.protobuf.Internal.EnumLite { + /** + * NOT_CHARGING = 0; + */ + NOT_CHARGING(0), + /** + * CHARGING = 1; + */ + CHARGING(1), + UNRECOGNIZED(-1), + ; + + /** + * NOT_CHARGING = 0; + */ + public static final int NOT_CHARGING_VALUE = 0; + /** + * CHARGING = 1; + */ + public static final int CHARGING_VALUE = 1; + + + @java.lang.Override + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static State valueOf(int value) { + return forNumber(value); + } + + public static State forNumber(int value) { + switch (value) { + case 0: return NOT_CHARGING; + case 1: return CHARGING; + default: return null; + } + } + + 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() { + @java.lang.Override + public State findValueByNumber(int number) { + return State.forNumber(number); + } + }; + + public static com.google.protobuf.Internal.EnumVerifier + internalGetVerifier() { + return StateVerifier.INSTANCE; + } + + private static final class StateVerifier implements + com.google.protobuf.Internal.EnumVerifier { + static final com.google.protobuf.Internal.EnumVerifier INSTANCE = new StateVerifier(); + @java.lang.Override + public boolean isInRange(int number) { + return State.forNumber(number) != null; + } + }; + + private final int value; + + private State(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:mentraos.ble.ChargingState.State) + } + + public static final int STATE_FIELD_NUMBER = 1; + private int state_; + /** + * .mentraos.ble.ChargingState.State state = 1; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override + public int getStateValue() { + return state_; + } + /** + * .mentraos.ble.ChargingState.State state = 1; + * @return The state. + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ChargingState.State getState() { + mentraos.ble.MentraosBle.ChargingState.State result = mentraos.ble.MentraosBle.ChargingState.State.forNumber(state_); + return result == null ? mentraos.ble.MentraosBle.ChargingState.State.UNRECOGNIZED : result; + } + /** + * .mentraos.ble.ChargingState.State state = 1; + * @param value The enum numeric value on the wire for state to set. + */ + private void setStateValue(int value) { + state_ = value; + } + /** + * .mentraos.ble.ChargingState.State state = 1; + * @param value The state to set. + */ + private void setState(mentraos.ble.MentraosBle.ChargingState.State value) { + state_ = value.getNumber(); + + } + /** + * .mentraos.ble.ChargingState.State state = 1; + */ + private void clearState() { + + state_ = 0; + } + + public static mentraos.ble.MentraosBle.ChargingState parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ChargingState parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ChargingState parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ChargingState parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ChargingState parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ChargingState parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ChargingState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.ChargingState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.ChargingState parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ChargingState parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.ChargingState prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.ChargingState} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.ChargingState, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.ChargingState) + mentraos.ble.MentraosBle.ChargingStateOrBuilder { + // Construct using mentraos.ble.MentraosBle.ChargingState.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .mentraos.ble.ChargingState.State state = 1; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override + public int getStateValue() { + return instance.getStateValue(); + } + /** + * .mentraos.ble.ChargingState.State state = 1; + * @param value The state to set. + * @return This builder for chaining. + */ + public Builder setStateValue(int value) { + copyOnWrite(); + instance.setStateValue(value); + return this; + } + /** + * .mentraos.ble.ChargingState.State state = 1; + * @return The state. + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ChargingState.State getState() { + return instance.getState(); + } + /** + * .mentraos.ble.ChargingState.State state = 1; + * @param value The enum numeric value on the wire for state to set. + * @return This builder for chaining. + */ + public Builder setState(mentraos.ble.MentraosBle.ChargingState.State value) { + copyOnWrite(); + instance.setState(value); + return this; + } + /** + * .mentraos.ble.ChargingState.State state = 1; + * @return This builder for chaining. + */ + public Builder clearState() { + copyOnWrite(); + instance.clearState(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.ChargingState) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.ChargingState(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "state_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\f"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.ChargingState.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.ChargingState) + private static final mentraos.ble.MentraosBle.ChargingState DEFAULT_INSTANCE; + static { + ChargingState defaultInstance = new ChargingState(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ChargingState.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.ChargingState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface GlassesInfoRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.GlassesInfoRequest) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code mentraos.ble.GlassesInfoRequest} + */ + public static final class GlassesInfoRequest extends + com.google.protobuf.GeneratedMessageLite< + GlassesInfoRequest, GlassesInfoRequest.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.GlassesInfoRequest) + GlassesInfoRequestOrBuilder { + private GlassesInfoRequest() { + } + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.GlassesInfoRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.GlassesInfoRequest prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.GlassesInfoRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.GlassesInfoRequest, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.GlassesInfoRequest) + mentraos.ble.MentraosBle.GlassesInfoRequestOrBuilder { + // Construct using mentraos.ble.MentraosBle.GlassesInfoRequest.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:mentraos.ble.GlassesInfoRequest) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.GlassesInfoRequest(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.GlassesInfoRequest.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.GlassesInfoRequest) + private static final mentraos.ble.MentraosBle.GlassesInfoRequest DEFAULT_INSTANCE; + static { + GlassesInfoRequest defaultInstance = new GlassesInfoRequest(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + GlassesInfoRequest.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.GlassesInfoRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DeviceInfoOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DeviceInfo) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * string fw_version = 1; + * @return The fwVersion. + */ + java.lang.String getFwVersion(); + /** + * string fw_version = 1; + * @return The bytes for fwVersion. + */ + com.google.protobuf.ByteString + getFwVersionBytes(); + + /** + * string hw_model = 2; + * @return The hwModel. + */ + java.lang.String getHwModel(); + /** + * string hw_model = 2; + * @return The bytes for hwModel. + */ + com.google.protobuf.ByteString + getHwModelBytes(); + + /** + * .mentraos.ble.DeviceFeatures features = 3; + * @return Whether the features field is set. + */ + boolean hasFeatures(); + /** + * .mentraos.ble.DeviceFeatures features = 3; + * @return The features. + */ + mentraos.ble.MentraosBle.DeviceFeatures getFeatures(); + } + /** + * Protobuf type {@code mentraos.ble.DeviceInfo} + */ + public static final class DeviceInfo extends + com.google.protobuf.GeneratedMessageLite< + DeviceInfo, DeviceInfo.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DeviceInfo) + DeviceInfoOrBuilder { + private DeviceInfo() { + fwVersion_ = ""; + hwModel_ = ""; + } + private int bitField0_; + public static final int FW_VERSION_FIELD_NUMBER = 1; + private java.lang.String fwVersion_; + /** + * string fw_version = 1; + * @return The fwVersion. + */ + @java.lang.Override + public java.lang.String getFwVersion() { + return fwVersion_; + } + /** + * string fw_version = 1; + * @return The bytes for fwVersion. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getFwVersionBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(fwVersion_); + } + /** + * string fw_version = 1; + * @param value The fwVersion to set. + */ + private void setFwVersion( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + fwVersion_ = value; + } + /** + * string fw_version = 1; + */ + private void clearFwVersion() { + + fwVersion_ = getDefaultInstance().getFwVersion(); + } + /** + * string fw_version = 1; + * @param value The bytes for fwVersion to set. + */ + private void setFwVersionBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + fwVersion_ = value.toStringUtf8(); + + } + + public static final int HW_MODEL_FIELD_NUMBER = 2; + private java.lang.String hwModel_; + /** + * string hw_model = 2; + * @return The hwModel. + */ + @java.lang.Override + public java.lang.String getHwModel() { + return hwModel_; + } + /** + * string hw_model = 2; + * @return The bytes for hwModel. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getHwModelBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(hwModel_); + } + /** + * string hw_model = 2; + * @param value The hwModel to set. + */ + private void setHwModel( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + hwModel_ = value; + } + /** + * string hw_model = 2; + */ + private void clearHwModel() { + + hwModel_ = getDefaultInstance().getHwModel(); + } + /** + * string hw_model = 2; + * @param value The bytes for hwModel to set. + */ + private void setHwModelBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + hwModel_ = value.toStringUtf8(); + + } + + public static final int FEATURES_FIELD_NUMBER = 3; + private mentraos.ble.MentraosBle.DeviceFeatures features_; + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + @java.lang.Override + public boolean hasFeatures() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DeviceFeatures getFeatures() { + return features_ == null ? mentraos.ble.MentraosBle.DeviceFeatures.getDefaultInstance() : features_; + } + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + private void setFeatures(mentraos.ble.MentraosBle.DeviceFeatures value) { + value.getClass(); + features_ = value; + bitField0_ |= 0x00000001; + } + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeFeatures(mentraos.ble.MentraosBle.DeviceFeatures value) { + value.getClass(); + if (features_ != null && + features_ != mentraos.ble.MentraosBle.DeviceFeatures.getDefaultInstance()) { + features_ = + mentraos.ble.MentraosBle.DeviceFeatures.newBuilder(features_).mergeFrom(value).buildPartial(); + } else { + features_ = value; + } + bitField0_ |= 0x00000001; + } + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + private void clearFeatures() { features_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + } + + public static mentraos.ble.MentraosBle.DeviceInfo parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DeviceInfo parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DeviceInfo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DeviceInfo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DeviceInfo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DeviceInfo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DeviceInfo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DeviceInfo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DeviceInfo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DeviceInfo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DeviceInfo prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DeviceInfo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DeviceInfo, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DeviceInfo) + mentraos.ble.MentraosBle.DeviceInfoOrBuilder { + // Construct using mentraos.ble.MentraosBle.DeviceInfo.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * string fw_version = 1; + * @return The fwVersion. + */ + @java.lang.Override + public java.lang.String getFwVersion() { + return instance.getFwVersion(); + } + /** + * string fw_version = 1; + * @return The bytes for fwVersion. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getFwVersionBytes() { + return instance.getFwVersionBytes(); + } + /** + * string fw_version = 1; + * @param value The fwVersion to set. + * @return This builder for chaining. + */ + public Builder setFwVersion( + java.lang.String value) { + copyOnWrite(); + instance.setFwVersion(value); + return this; + } + /** + * string fw_version = 1; + * @return This builder for chaining. + */ + public Builder clearFwVersion() { + copyOnWrite(); + instance.clearFwVersion(); + return this; + } + /** + * string fw_version = 1; + * @param value The bytes for fwVersion to set. + * @return This builder for chaining. + */ + public Builder setFwVersionBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setFwVersionBytes(value); + return this; + } + + /** + * string hw_model = 2; + * @return The hwModel. + */ + @java.lang.Override + public java.lang.String getHwModel() { + return instance.getHwModel(); + } + /** + * string hw_model = 2; + * @return The bytes for hwModel. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getHwModelBytes() { + return instance.getHwModelBytes(); + } + /** + * string hw_model = 2; + * @param value The hwModel to set. + * @return This builder for chaining. + */ + public Builder setHwModel( + java.lang.String value) { + copyOnWrite(); + instance.setHwModel(value); + return this; + } + /** + * string hw_model = 2; + * @return This builder for chaining. + */ + public Builder clearHwModel() { + copyOnWrite(); + instance.clearHwModel(); + return this; + } + /** + * string hw_model = 2; + * @param value The bytes for hwModel to set. + * @return This builder for chaining. + */ + public Builder setHwModelBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setHwModelBytes(value); + return this; + } + + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + @java.lang.Override + public boolean hasFeatures() { + return instance.hasFeatures(); + } + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DeviceFeatures getFeatures() { + return instance.getFeatures(); + } + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + public Builder setFeatures(mentraos.ble.MentraosBle.DeviceFeatures value) { + copyOnWrite(); + instance.setFeatures(value); + return this; + } + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + public Builder setFeatures( + mentraos.ble.MentraosBle.DeviceFeatures.Builder builderForValue) { + copyOnWrite(); + instance.setFeatures(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + public Builder mergeFeatures(mentraos.ble.MentraosBle.DeviceFeatures value) { + copyOnWrite(); + instance.mergeFeatures(value); + return this; + } + /** + * .mentraos.ble.DeviceFeatures features = 3; + */ + public Builder clearFeatures() { copyOnWrite(); + instance.clearFeatures(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DeviceInfo) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DeviceInfo(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "bitField0_", + "fwVersion_", + "hwModel_", + "features_", + }; + java.lang.String info = + "\u0000\u0003\u0000\u0001\u0001\u0003\u0003\u0000\u0000\u0000\u0001\u0208\u0002\u0208" + + "\u0003\u1009\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DeviceInfo.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DeviceInfo) + private static final mentraos.ble.MentraosBle.DeviceInfo DEFAULT_INSTANCE; + static { + DeviceInfo defaultInstance = new DeviceInfo(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DeviceInfo.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DeviceInfo getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DeviceFeaturesOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DeviceFeatures) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bool camera = 1; + * @return The camera. + */ + boolean getCamera(); + + /** + * bool display = 2; + * @return The display. + */ + boolean getDisplay(); + + /** + * bool audio_tx = 3; + * @return The audioTx. + */ + boolean getAudioTx(); + + /** + * bool audio_rx = 4; + * @return The audioRx. + */ + boolean getAudioRx(); + + /** + * bool imu = 5; + * @return The imu. + */ + boolean getImu(); + + /** + * bool vad = 6; + * @return The vad. + */ + boolean getVad(); + + /** + * bool mic_switching = 7; + * @return The micSwitching. + */ + boolean getMicSwitching(); + + /** + *
+     * Max chunks that can be buffered
+     * 
+ * + * uint32 image_chunk_buffer = 8; + * @return The imageChunkBuffer. + */ + int getImageChunkBuffer(); + } + /** + * Protobuf type {@code mentraos.ble.DeviceFeatures} + */ + public static final class DeviceFeatures extends + com.google.protobuf.GeneratedMessageLite< + DeviceFeatures, DeviceFeatures.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DeviceFeatures) + DeviceFeaturesOrBuilder { + private DeviceFeatures() { + } + public static final int CAMERA_FIELD_NUMBER = 1; + private boolean camera_; + /** + * bool camera = 1; + * @return The camera. + */ + @java.lang.Override + public boolean getCamera() { + return camera_; + } + /** + * bool camera = 1; + * @param value The camera to set. + */ + private void setCamera(boolean value) { + + camera_ = value; + } + /** + * bool camera = 1; + */ + private void clearCamera() { + + camera_ = false; + } + + public static final int DISPLAY_FIELD_NUMBER = 2; + private boolean display_; + /** + * bool display = 2; + * @return The display. + */ + @java.lang.Override + public boolean getDisplay() { + return display_; + } + /** + * bool display = 2; + * @param value The display to set. + */ + private void setDisplay(boolean value) { + + display_ = value; + } + /** + * bool display = 2; + */ + private void clearDisplay() { + + display_ = false; + } + + public static final int AUDIO_TX_FIELD_NUMBER = 3; + private boolean audioTx_; + /** + * bool audio_tx = 3; + * @return The audioTx. + */ + @java.lang.Override + public boolean getAudioTx() { + return audioTx_; + } + /** + * bool audio_tx = 3; + * @param value The audioTx to set. + */ + private void setAudioTx(boolean value) { + + audioTx_ = value; + } + /** + * bool audio_tx = 3; + */ + private void clearAudioTx() { + + audioTx_ = false; + } + + public static final int AUDIO_RX_FIELD_NUMBER = 4; + private boolean audioRx_; + /** + * bool audio_rx = 4; + * @return The audioRx. + */ + @java.lang.Override + public boolean getAudioRx() { + return audioRx_; + } + /** + * bool audio_rx = 4; + * @param value The audioRx to set. + */ + private void setAudioRx(boolean value) { + + audioRx_ = value; + } + /** + * bool audio_rx = 4; + */ + private void clearAudioRx() { + + audioRx_ = false; + } + + public static final int IMU_FIELD_NUMBER = 5; + private boolean imu_; + /** + * bool imu = 5; + * @return The imu. + */ + @java.lang.Override + public boolean getImu() { + return imu_; + } + /** + * bool imu = 5; + * @param value The imu to set. + */ + private void setImu(boolean value) { + + imu_ = value; + } + /** + * bool imu = 5; + */ + private void clearImu() { + + imu_ = false; + } + + public static final int VAD_FIELD_NUMBER = 6; + private boolean vad_; + /** + * bool vad = 6; + * @return The vad. + */ + @java.lang.Override + public boolean getVad() { + return vad_; + } + /** + * bool vad = 6; + * @param value The vad to set. + */ + private void setVad(boolean value) { + + vad_ = value; + } + /** + * bool vad = 6; + */ + private void clearVad() { + + vad_ = false; + } + + public static final int MIC_SWITCHING_FIELD_NUMBER = 7; + private boolean micSwitching_; + /** + * bool mic_switching = 7; + * @return The micSwitching. + */ + @java.lang.Override + public boolean getMicSwitching() { + return micSwitching_; + } + /** + * bool mic_switching = 7; + * @param value The micSwitching to set. + */ + private void setMicSwitching(boolean value) { + + micSwitching_ = value; + } + /** + * bool mic_switching = 7; + */ + private void clearMicSwitching() { + + micSwitching_ = false; + } + + public static final int IMAGE_CHUNK_BUFFER_FIELD_NUMBER = 8; + private int imageChunkBuffer_; + /** + *
+     * Max chunks that can be buffered
+     * 
+ * + * uint32 image_chunk_buffer = 8; + * @return The imageChunkBuffer. + */ + @java.lang.Override + public int getImageChunkBuffer() { + return imageChunkBuffer_; + } + /** + *
+     * Max chunks that can be buffered
+     * 
+ * + * uint32 image_chunk_buffer = 8; + * @param value The imageChunkBuffer to set. + */ + private void setImageChunkBuffer(int value) { + + imageChunkBuffer_ = value; + } + /** + *
+     * Max chunks that can be buffered
+     * 
+ * + * uint32 image_chunk_buffer = 8; + */ + private void clearImageChunkBuffer() { + + imageChunkBuffer_ = 0; + } + + public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DeviceFeatures parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DeviceFeatures parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DeviceFeatures parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DeviceFeatures prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DeviceFeatures} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DeviceFeatures, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DeviceFeatures) + mentraos.ble.MentraosBle.DeviceFeaturesOrBuilder { + // Construct using mentraos.ble.MentraosBle.DeviceFeatures.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bool camera = 1; + * @return The camera. + */ + @java.lang.Override + public boolean getCamera() { + return instance.getCamera(); + } + /** + * bool camera = 1; + * @param value The camera to set. + * @return This builder for chaining. + */ + public Builder setCamera(boolean value) { + copyOnWrite(); + instance.setCamera(value); + return this; + } + /** + * bool camera = 1; + * @return This builder for chaining. + */ + public Builder clearCamera() { + copyOnWrite(); + instance.clearCamera(); + return this; + } + + /** + * bool display = 2; + * @return The display. + */ + @java.lang.Override + public boolean getDisplay() { + return instance.getDisplay(); + } + /** + * bool display = 2; + * @param value The display to set. + * @return This builder for chaining. + */ + public Builder setDisplay(boolean value) { + copyOnWrite(); + instance.setDisplay(value); + return this; + } + /** + * bool display = 2; + * @return This builder for chaining. + */ + public Builder clearDisplay() { + copyOnWrite(); + instance.clearDisplay(); + return this; + } + + /** + * bool audio_tx = 3; + * @return The audioTx. + */ + @java.lang.Override + public boolean getAudioTx() { + return instance.getAudioTx(); + } + /** + * bool audio_tx = 3; + * @param value The audioTx to set. + * @return This builder for chaining. + */ + public Builder setAudioTx(boolean value) { + copyOnWrite(); + instance.setAudioTx(value); + return this; + } + /** + * bool audio_tx = 3; + * @return This builder for chaining. + */ + public Builder clearAudioTx() { + copyOnWrite(); + instance.clearAudioTx(); + return this; + } + + /** + * bool audio_rx = 4; + * @return The audioRx. + */ + @java.lang.Override + public boolean getAudioRx() { + return instance.getAudioRx(); + } + /** + * bool audio_rx = 4; + * @param value The audioRx to set. + * @return This builder for chaining. + */ + public Builder setAudioRx(boolean value) { + copyOnWrite(); + instance.setAudioRx(value); + return this; + } + /** + * bool audio_rx = 4; + * @return This builder for chaining. + */ + public Builder clearAudioRx() { + copyOnWrite(); + instance.clearAudioRx(); + return this; + } + + /** + * bool imu = 5; + * @return The imu. + */ + @java.lang.Override + public boolean getImu() { + return instance.getImu(); + } + /** + * bool imu = 5; + * @param value The imu to set. + * @return This builder for chaining. + */ + public Builder setImu(boolean value) { + copyOnWrite(); + instance.setImu(value); + return this; + } + /** + * bool imu = 5; + * @return This builder for chaining. + */ + public Builder clearImu() { + copyOnWrite(); + instance.clearImu(); + return this; + } + + /** + * bool vad = 6; + * @return The vad. + */ + @java.lang.Override + public boolean getVad() { + return instance.getVad(); + } + /** + * bool vad = 6; + * @param value The vad to set. + * @return This builder for chaining. + */ + public Builder setVad(boolean value) { + copyOnWrite(); + instance.setVad(value); + return this; + } + /** + * bool vad = 6; + * @return This builder for chaining. + */ + public Builder clearVad() { + copyOnWrite(); + instance.clearVad(); + return this; + } + + /** + * bool mic_switching = 7; + * @return The micSwitching. + */ + @java.lang.Override + public boolean getMicSwitching() { + return instance.getMicSwitching(); + } + /** + * bool mic_switching = 7; + * @param value The micSwitching to set. + * @return This builder for chaining. + */ + public Builder setMicSwitching(boolean value) { + copyOnWrite(); + instance.setMicSwitching(value); + return this; + } + /** + * bool mic_switching = 7; + * @return This builder for chaining. + */ + public Builder clearMicSwitching() { + copyOnWrite(); + instance.clearMicSwitching(); + return this; + } + + /** + *
+       * Max chunks that can be buffered
+       * 
+ * + * uint32 image_chunk_buffer = 8; + * @return The imageChunkBuffer. + */ + @java.lang.Override + public int getImageChunkBuffer() { + return instance.getImageChunkBuffer(); + } + /** + *
+       * Max chunks that can be buffered
+       * 
+ * + * uint32 image_chunk_buffer = 8; + * @param value The imageChunkBuffer to set. + * @return This builder for chaining. + */ + public Builder setImageChunkBuffer(int value) { + copyOnWrite(); + instance.setImageChunkBuffer(value); + return this; + } + /** + *
+       * Max chunks that can be buffered
+       * 
+ * + * uint32 image_chunk_buffer = 8; + * @return This builder for chaining. + */ + public Builder clearImageChunkBuffer() { + copyOnWrite(); + instance.clearImageChunkBuffer(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DeviceFeatures) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DeviceFeatures(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "camera_", + "display_", + "audioTx_", + "audioRx_", + "imu_", + "vad_", + "micSwitching_", + "imageChunkBuffer_", + }; + java.lang.String info = + "\u0000\b\u0000\u0000\u0001\b\b\u0000\u0000\u0000\u0001\u0007\u0002\u0007\u0003\u0007" + + "\u0004\u0007\u0005\u0007\u0006\u0007\u0007\u0007\b\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DeviceFeatures.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DeviceFeatures) + private static final mentraos.ble.MentraosBle.DeviceFeatures DEFAULT_INSTANCE; + static { + DeviceFeatures defaultInstance = new DeviceFeatures(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DeviceFeatures.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DeviceFeatures getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface PairingModeRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.PairingModeRequest) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code mentraos.ble.PairingModeRequest} + */ + public static final class PairingModeRequest extends + com.google.protobuf.GeneratedMessageLite< + PairingModeRequest, PairingModeRequest.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.PairingModeRequest) + PairingModeRequestOrBuilder { + private PairingModeRequest() { + } + public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.PairingModeRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.PairingModeRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PairingModeRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.PairingModeRequest prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.PairingModeRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.PairingModeRequest, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.PairingModeRequest) + mentraos.ble.MentraosBle.PairingModeRequestOrBuilder { + // Construct using mentraos.ble.MentraosBle.PairingModeRequest.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:mentraos.ble.PairingModeRequest) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.PairingModeRequest(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.PairingModeRequest.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.PairingModeRequest) + private static final mentraos.ble.MentraosBle.PairingModeRequest DEFAULT_INSTANCE; + static { + PairingModeRequest defaultInstance = new PairingModeRequest(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + PairingModeRequest.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.PairingModeRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface HeadPositionRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.HeadPositionRequest) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code mentraos.ble.HeadPositionRequest} + */ + public static final class HeadPositionRequest extends + com.google.protobuf.GeneratedMessageLite< + HeadPositionRequest, HeadPositionRequest.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.HeadPositionRequest) + HeadPositionRequestOrBuilder { + private HeadPositionRequest() { + } + public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.HeadPositionRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.HeadPositionRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadPositionRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.HeadPositionRequest prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.HeadPositionRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.HeadPositionRequest, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadPositionRequest) + mentraos.ble.MentraosBle.HeadPositionRequestOrBuilder { + // Construct using mentraos.ble.MentraosBle.HeadPositionRequest.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadPositionRequest) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.HeadPositionRequest(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.HeadPositionRequest.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.HeadPositionRequest) + private static final mentraos.ble.MentraosBle.HeadPositionRequest DEFAULT_INSTANCE; + static { + HeadPositionRequest defaultInstance = new HeadPositionRequest(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + HeadPositionRequest.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.HeadPositionRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface HeadPositionOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.HeadPosition) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * degrees
+     * 
+ * + * int32 angle = 1; + * @return The angle. + */ + int getAngle(); + } + /** + * Protobuf type {@code mentraos.ble.HeadPosition} + */ + public static final class HeadPosition extends + com.google.protobuf.GeneratedMessageLite< + HeadPosition, HeadPosition.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.HeadPosition) + HeadPositionOrBuilder { + private HeadPosition() { + } + public static final int ANGLE_FIELD_NUMBER = 1; + private int angle_; + /** + *
+     * degrees
+     * 
+ * + * int32 angle = 1; + * @return The angle. + */ + @java.lang.Override + public int getAngle() { + return angle_; + } + /** + *
+     * degrees
+     * 
+ * + * int32 angle = 1; + * @param value The angle to set. + */ + private void setAngle(int value) { + + angle_ = value; + } + /** + *
+     * degrees
+     * 
+ * + * int32 angle = 1; + */ + private void clearAngle() { + + angle_ = 0; + } + + public static mentraos.ble.MentraosBle.HeadPosition parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadPosition parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadPosition parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadPosition parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadPosition parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadPosition parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadPosition parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.HeadPosition parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.HeadPosition parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadPosition parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.HeadPosition prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.HeadPosition} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.HeadPosition, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadPosition) + mentraos.ble.MentraosBle.HeadPositionOrBuilder { + // Construct using mentraos.ble.MentraosBle.HeadPosition.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * degrees
+       * 
+ * + * int32 angle = 1; + * @return The angle. + */ + @java.lang.Override + public int getAngle() { + return instance.getAngle(); + } + /** + *
+       * degrees
+       * 
+ * + * int32 angle = 1; + * @param value The angle to set. + * @return This builder for chaining. + */ + public Builder setAngle(int value) { + copyOnWrite(); + instance.setAngle(value); + return this; + } + /** + *
+       * degrees
+       * 
+ * + * int32 angle = 1; + * @return This builder for chaining. + */ + public Builder clearAngle() { + copyOnWrite(); + instance.clearAngle(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadPosition) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.HeadPosition(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "angle_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0004"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.HeadPosition.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.HeadPosition) + private static final mentraos.ble.MentraosBle.HeadPosition DEFAULT_INSTANCE; + static { + HeadPosition defaultInstance = new HeadPosition(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + HeadPosition.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.HeadPosition getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface HeadUpAngleConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.HeadUpAngleConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * degrees
+     * 
+ * + * uint32 angle = 1; + * @return The angle. + */ + int getAngle(); + } + /** + * Protobuf type {@code mentraos.ble.HeadUpAngleConfig} + */ + public static final class HeadUpAngleConfig extends + com.google.protobuf.GeneratedMessageLite< + HeadUpAngleConfig, HeadUpAngleConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.HeadUpAngleConfig) + HeadUpAngleConfigOrBuilder { + private HeadUpAngleConfig() { + } + public static final int ANGLE_FIELD_NUMBER = 1; + private int angle_; + /** + *
+     * degrees
+     * 
+ * + * uint32 angle = 1; + * @return The angle. + */ + @java.lang.Override + public int getAngle() { + return angle_; + } + /** + *
+     * degrees
+     * 
+ * + * uint32 angle = 1; + * @param value The angle to set. + */ + private void setAngle(int value) { + + angle_ = value; + } + /** + *
+     * degrees
+     * 
+ * + * uint32 angle = 1; + */ + private void clearAngle() { + + angle_ = 0; + } + + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadUpAngleConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.HeadUpAngleConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.HeadUpAngleConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.HeadUpAngleConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadUpAngleConfig) + mentraos.ble.MentraosBle.HeadUpAngleConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.HeadUpAngleConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * degrees
+       * 
+ * + * uint32 angle = 1; + * @return The angle. + */ + @java.lang.Override + public int getAngle() { + return instance.getAngle(); + } + /** + *
+       * degrees
+       * 
+ * + * uint32 angle = 1; + * @param value The angle to set. + * @return This builder for chaining. + */ + public Builder setAngle(int value) { + copyOnWrite(); + instance.setAngle(value); + return this; + } + /** + *
+       * degrees
+       * 
+ * + * uint32 angle = 1; + * @return This builder for chaining. + */ + public Builder clearAngle() { + copyOnWrite(); + instance.clearAngle(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadUpAngleConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.HeadUpAngleConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "angle_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.HeadUpAngleConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.HeadUpAngleConfig) + private static final mentraos.ble.MentraosBle.HeadUpAngleConfig DEFAULT_INSTANCE; + static { + HeadUpAngleConfig defaultInstance = new HeadUpAngleConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + HeadUpAngleConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.HeadUpAngleConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface HeadUpAngleResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.HeadUpAngleResponse) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bool success = 1; + * @return The success. + */ + boolean getSuccess(); + } + /** + * Protobuf type {@code mentraos.ble.HeadUpAngleResponse} + */ + public static final class HeadUpAngleResponse extends + com.google.protobuf.GeneratedMessageLite< + HeadUpAngleResponse, HeadUpAngleResponse.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.HeadUpAngleResponse) + HeadUpAngleResponseOrBuilder { + private HeadUpAngleResponse() { + } + public static final int SUCCESS_FIELD_NUMBER = 1; + private boolean success_; + /** + * bool success = 1; + * @return The success. + */ + @java.lang.Override + public boolean getSuccess() { + return success_; + } + /** + * bool success = 1; + * @param value The success to set. + */ + private void setSuccess(boolean value) { + + success_ = value; + } + /** + * bool success = 1; + */ + private void clearSuccess() { + + success_ = false; + } + + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.HeadUpAngleResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.HeadUpAngleResponse prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.HeadUpAngleResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.HeadUpAngleResponse, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.HeadUpAngleResponse) + mentraos.ble.MentraosBle.HeadUpAngleResponseOrBuilder { + // Construct using mentraos.ble.MentraosBle.HeadUpAngleResponse.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bool success = 1; + * @return The success. + */ + @java.lang.Override + public boolean getSuccess() { + return instance.getSuccess(); + } + /** + * bool success = 1; + * @param value The success to set. + * @return This builder for chaining. + */ + public Builder setSuccess(boolean value) { + copyOnWrite(); + instance.setSuccess(value); + return this; + } + /** + * bool success = 1; + * @return This builder for chaining. + */ + public Builder clearSuccess() { + copyOnWrite(); + instance.clearSuccess(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.HeadUpAngleResponse) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.HeadUpAngleResponse(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "success_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0007"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.HeadUpAngleResponse.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.HeadUpAngleResponse) + private static final mentraos.ble.MentraosBle.HeadUpAngleResponse DEFAULT_INSTANCE; + static { + HeadUpAngleResponse defaultInstance = new HeadUpAngleResponse(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + HeadUpAngleResponse.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.HeadUpAngleResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface PingRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.PingRequest) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code mentraos.ble.PingRequest} + */ + public static final class PingRequest extends + com.google.protobuf.GeneratedMessageLite< + PingRequest, PingRequest.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.PingRequest) + PingRequestOrBuilder { + private PingRequest() { + } + public static mentraos.ble.MentraosBle.PingRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PingRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PingRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PingRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PingRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PingRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PingRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.PingRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.PingRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PingRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.PingRequest prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.PingRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.PingRequest, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.PingRequest) + mentraos.ble.MentraosBle.PingRequestOrBuilder { + // Construct using mentraos.ble.MentraosBle.PingRequest.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:mentraos.ble.PingRequest) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.PingRequest(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.PingRequest.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.PingRequest) + private static final mentraos.ble.MentraosBle.PingRequest DEFAULT_INSTANCE; + static { + PingRequest defaultInstance = new PingRequest(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + PingRequest.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.PingRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface PongResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.PongResponse) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code mentraos.ble.PongResponse} + */ + public static final class PongResponse extends + com.google.protobuf.GeneratedMessageLite< + PongResponse, PongResponse.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.PongResponse) + PongResponseOrBuilder { + private PongResponse() { + } + public static mentraos.ble.MentraosBle.PongResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PongResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PongResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PongResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PongResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PongResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PongResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.PongResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.PongResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PongResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.PongResponse prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.PongResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.PongResponse, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.PongResponse) + mentraos.ble.MentraosBle.PongResponseOrBuilder { + // Construct using mentraos.ble.MentraosBle.PongResponse.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:mentraos.ble.PongResponse) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.PongResponse(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.PongResponse.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.PongResponse) + private static final mentraos.ble.MentraosBle.PongResponse DEFAULT_INSTANCE; + static { + PongResponse defaultInstance = new PongResponse(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + PongResponse.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.PongResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface MicStateConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.MicStateConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bool enabled = 1; + * @return The enabled. + */ + boolean getEnabled(); + } + /** + * Protobuf type {@code mentraos.ble.MicStateConfig} + */ + public static final class MicStateConfig extends + com.google.protobuf.GeneratedMessageLite< + MicStateConfig, MicStateConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.MicStateConfig) + MicStateConfigOrBuilder { + private MicStateConfig() { + } + public static final int ENABLED_FIELD_NUMBER = 1; + private boolean enabled_; + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return enabled_; + } + /** + * bool enabled = 1; + * @param value The enabled to set. + */ + private void setEnabled(boolean value) { + + enabled_ = value; + } + /** + * bool enabled = 1; + */ + private void clearEnabled() { + + enabled_ = false; + } + + public static mentraos.ble.MentraosBle.MicStateConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.MicStateConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.MicStateConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.MicStateConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.MicStateConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.MicStateConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.MicStateConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.MicStateConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.MicStateConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.MicStateConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.MicStateConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.MicStateConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.MicStateConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.MicStateConfig) + mentraos.ble.MentraosBle.MicStateConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.MicStateConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return instance.getEnabled(); + } + /** + * bool enabled = 1; + * @param value The enabled to set. + * @return This builder for chaining. + */ + public Builder setEnabled(boolean value) { + copyOnWrite(); + instance.setEnabled(value); + return this; + } + /** + * bool enabled = 1; + * @return This builder for chaining. + */ + public Builder clearEnabled() { + copyOnWrite(); + instance.clearEnabled(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.MicStateConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.MicStateConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "enabled_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0007"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.MicStateConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.MicStateConfig) + private static final mentraos.ble.MentraosBle.MicStateConfig DEFAULT_INSTANCE; + static { + MicStateConfig defaultInstance = new MicStateConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + MicStateConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.MicStateConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface VadEnabledConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.VadEnabledConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bool enabled = 1; + * @return The enabled. + */ + boolean getEnabled(); + } + /** + * Protobuf type {@code mentraos.ble.VadEnabledConfig} + */ + public static final class VadEnabledConfig extends + com.google.protobuf.GeneratedMessageLite< + VadEnabledConfig, VadEnabledConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.VadEnabledConfig) + VadEnabledConfigOrBuilder { + private VadEnabledConfig() { + } + public static final int ENABLED_FIELD_NUMBER = 1; + private boolean enabled_; + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return enabled_; + } + /** + * bool enabled = 1; + * @param value The enabled to set. + */ + private void setEnabled(boolean value) { + + enabled_ = value; + } + /** + * bool enabled = 1; + */ + private void clearEnabled() { + + enabled_ = false; + } + + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.VadEnabledConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.VadEnabledConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static mentraos.ble.MentraosBle.VadEnabledConfig parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.VadEnabledConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.VadEnabledConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.VadEnabledConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.VadEnabledConfig) + mentraos.ble.MentraosBle.VadEnabledConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.VadEnabledConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return instance.getEnabled(); + } + /** + * bool enabled = 1; + * @param value The enabled to set. + * @return This builder for chaining. + */ + public Builder setEnabled(boolean value) { + copyOnWrite(); + instance.setEnabled(value); + return this; + } + /** + * bool enabled = 1; + * @return This builder for chaining. + */ + public Builder clearEnabled() { + copyOnWrite(); + instance.clearEnabled(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.VadEnabledConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.VadEnabledConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "enabled_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0007"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.VadEnabledConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.VadEnabledConfig) + private static final mentraos.ble.MentraosBle.VadEnabledConfig DEFAULT_INSTANCE; + static { + VadEnabledConfig defaultInstance = new VadEnabledConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + VadEnabledConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.VadEnabledConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface VadConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.VadConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * 0-100
+     * 
+ * + * uint32 sensitivity = 1; + * @return The sensitivity. + */ + int getSensitivity(); + } + /** + * Protobuf type {@code mentraos.ble.VadConfig} + */ + public static final class VadConfig extends + com.google.protobuf.GeneratedMessageLite< + VadConfig, VadConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.VadConfig) + VadConfigOrBuilder { + private VadConfig() { + } + public static final int SENSITIVITY_FIELD_NUMBER = 1; + private int sensitivity_; + /** + *
+     * 0-100
+     * 
+ * + * uint32 sensitivity = 1; + * @return The sensitivity. + */ + @java.lang.Override + public int getSensitivity() { + return sensitivity_; + } + /** + *
+     * 0-100
+     * 
+ * + * uint32 sensitivity = 1; + * @param value The sensitivity to set. + */ + private void setSensitivity(int value) { + + sensitivity_ = value; + } + /** + *
+     * 0-100
+     * 
+ * + * uint32 sensitivity = 1; + */ + private void clearSensitivity() { + + sensitivity_ = 0; + } + + public static mentraos.ble.MentraosBle.VadConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.VadConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.VadConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.VadConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static mentraos.ble.MentraosBle.VadConfig parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.VadConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.VadConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static mentraos.ble.MentraosBle.VadConfig parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.VadConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.VadConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.VadConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.VadConfig) + mentraos.ble.MentraosBle.VadConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.VadConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * 0-100
+       * 
+ * + * uint32 sensitivity = 1; + * @return The sensitivity. + */ + @java.lang.Override + public int getSensitivity() { + return instance.getSensitivity(); + } + /** + *
+       * 0-100
+       * 
+ * + * uint32 sensitivity = 1; + * @param value The sensitivity to set. + * @return This builder for chaining. + */ + public Builder setSensitivity(int value) { + copyOnWrite(); + instance.setSensitivity(value); + return this; + } + /** + *
+       * 0-100
+       * 
+ * + * uint32 sensitivity = 1; + * @return This builder for chaining. + */ + public Builder clearSensitivity() { + copyOnWrite(); + instance.clearSensitivity(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.VadConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.VadConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "sensitivity_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.VadConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.VadConfig) + private static final mentraos.ble.MentraosBle.VadConfig DEFAULT_INSTANCE; + static { + VadConfig defaultInstance = new VadConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + VadConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.VadConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface VadEventOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.VadEvent) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .mentraos.ble.VadEvent.State state = 1; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + * .mentraos.ble.VadEvent.State state = 1; + * @return The state. + */ + mentraos.ble.MentraosBle.VadEvent.State getState(); + } + /** + * Protobuf type {@code mentraos.ble.VadEvent} + */ + public static final class VadEvent extends + com.google.protobuf.GeneratedMessageLite< + VadEvent, VadEvent.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.VadEvent) + VadEventOrBuilder { + private VadEvent() { + } + /** + * Protobuf enum {@code mentraos.ble.VadEvent.State} + */ + public enum State + implements com.google.protobuf.Internal.EnumLite { + /** + * INACTIVE = 0; + */ + INACTIVE(0), + /** + * ACTIVE = 1; + */ + ACTIVE(1), + UNRECOGNIZED(-1), + ; + + /** + * INACTIVE = 0; + */ + public static final int INACTIVE_VALUE = 0; + /** + * ACTIVE = 1; + */ + public static final int ACTIVE_VALUE = 1; + + + @java.lang.Override + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static State valueOf(int value) { + return forNumber(value); + } + + public static State forNumber(int value) { + switch (value) { + case 0: return INACTIVE; + case 1: return ACTIVE; + default: return null; + } + } + + 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() { + @java.lang.Override + public State findValueByNumber(int number) { + return State.forNumber(number); + } + }; + + public static com.google.protobuf.Internal.EnumVerifier + internalGetVerifier() { + return StateVerifier.INSTANCE; + } + + private static final class StateVerifier implements + com.google.protobuf.Internal.EnumVerifier { + static final com.google.protobuf.Internal.EnumVerifier INSTANCE = new StateVerifier(); + @java.lang.Override + public boolean isInRange(int number) { + return State.forNumber(number) != null; + } + }; + + private final int value; + + private State(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:mentraos.ble.VadEvent.State) + } + + public static final int STATE_FIELD_NUMBER = 1; + private int state_; + /** + * .mentraos.ble.VadEvent.State state = 1; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override + public int getStateValue() { + return state_; + } + /** + * .mentraos.ble.VadEvent.State state = 1; + * @return The state. + */ + @java.lang.Override + public mentraos.ble.MentraosBle.VadEvent.State getState() { + mentraos.ble.MentraosBle.VadEvent.State result = mentraos.ble.MentraosBle.VadEvent.State.forNumber(state_); + return result == null ? mentraos.ble.MentraosBle.VadEvent.State.UNRECOGNIZED : result; + } + /** + * .mentraos.ble.VadEvent.State state = 1; + * @param value The enum numeric value on the wire for state to set. + */ + private void setStateValue(int value) { + state_ = value; + } + /** + * .mentraos.ble.VadEvent.State state = 1; + * @param value The state to set. + */ + private void setState(mentraos.ble.MentraosBle.VadEvent.State value) { + state_ = value.getNumber(); + + } + /** + * .mentraos.ble.VadEvent.State state = 1; + */ + private void clearState() { + + state_ = 0; + } + + public static mentraos.ble.MentraosBle.VadEvent parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.VadEvent parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadEvent parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.VadEvent parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadEvent parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.VadEvent parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadEvent parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.VadEvent parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.VadEvent parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.VadEvent parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.VadEvent prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.VadEvent} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.VadEvent, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.VadEvent) + mentraos.ble.MentraosBle.VadEventOrBuilder { + // Construct using mentraos.ble.MentraosBle.VadEvent.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .mentraos.ble.VadEvent.State state = 1; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override + public int getStateValue() { + return instance.getStateValue(); + } + /** + * .mentraos.ble.VadEvent.State state = 1; + * @param value The state to set. + * @return This builder for chaining. + */ + public Builder setStateValue(int value) { + copyOnWrite(); + instance.setStateValue(value); + return this; + } + /** + * .mentraos.ble.VadEvent.State state = 1; + * @return The state. + */ + @java.lang.Override + public mentraos.ble.MentraosBle.VadEvent.State getState() { + return instance.getState(); + } + /** + * .mentraos.ble.VadEvent.State state = 1; + * @param value The enum numeric value on the wire for state to set. + * @return This builder for chaining. + */ + public Builder setState(mentraos.ble.MentraosBle.VadEvent.State value) { + copyOnWrite(); + instance.setState(value); + return this; + } + /** + * .mentraos.ble.VadEvent.State state = 1; + * @return This builder for chaining. + */ + public Builder clearState() { + copyOnWrite(); + instance.clearState(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.VadEvent) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.VadEvent(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "state_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\f"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.VadEvent.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.VadEvent) + private static final mentraos.ble.MentraosBle.VadEvent DEFAULT_INSTANCE; + static { + VadEvent defaultInstance = new VadEvent(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + VadEvent.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.VadEvent getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DisplayTextOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DisplayText) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * string text = 1; + * @return The text. + */ + java.lang.String getText(); + /** + * string text = 1; + * @return The bytes for text. + */ + com.google.protobuf.ByteString + getTextBytes(); + + /** + *
+     * RGB565 format (e.g., 0xF800 for red)
+     * 
+ * + * uint32 color = 2; + * @return The color. + */ + int getColor(); + + /** + *
+     * Font identifier
+     * 
+ * + * uint32 font_code = 3; + * @return The fontCode. + */ + int getFontCode(); + + /** + * uint32 x = 4; + * @return The x. + */ + int getX(); + + /** + * uint32 y = 5; + * @return The y. + */ + int getY(); + + /** + *
+     * Font size multiplier
+     * 
+ * + * uint32 size = 6; + * @return The size. + */ + int getSize(); + } + /** + * Protobuf type {@code mentraos.ble.DisplayText} + */ + public static final class DisplayText extends + com.google.protobuf.GeneratedMessageLite< + DisplayText, DisplayText.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayText) + DisplayTextOrBuilder { + private DisplayText() { + text_ = ""; + } + public static final int TEXT_FIELD_NUMBER = 1; + private java.lang.String text_; + /** + * string text = 1; + * @return The text. + */ + @java.lang.Override + public java.lang.String getText() { + return text_; + } + /** + * string text = 1; + * @return The bytes for text. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTextBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(text_); + } + /** + * string text = 1; + * @param value The text to set. + */ + private void setText( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + text_ = value; + } + /** + * string text = 1; + */ + private void clearText() { + + text_ = getDefaultInstance().getText(); + } + /** + * string text = 1; + * @param value The bytes for text to set. + */ + private void setTextBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + text_ = value.toStringUtf8(); + + } + + public static final int COLOR_FIELD_NUMBER = 2; + private int color_; + /** + *
+     * RGB565 format (e.g., 0xF800 for red)
+     * 
+ * + * uint32 color = 2; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return color_; + } + /** + *
+     * RGB565 format (e.g., 0xF800 for red)
+     * 
+ * + * uint32 color = 2; + * @param value The color to set. + */ + private void setColor(int value) { + + color_ = value; + } + /** + *
+     * RGB565 format (e.g., 0xF800 for red)
+     * 
+ * + * uint32 color = 2; + */ + private void clearColor() { + + color_ = 0; + } + + public static final int FONT_CODE_FIELD_NUMBER = 3; + private int fontCode_; + /** + *
+     * Font identifier
+     * 
+ * + * uint32 font_code = 3; + * @return The fontCode. + */ + @java.lang.Override + public int getFontCode() { + return fontCode_; + } + /** + *
+     * Font identifier
+     * 
+ * + * uint32 font_code = 3; + * @param value The fontCode to set. + */ + private void setFontCode(int value) { + + fontCode_ = value; + } + /** + *
+     * Font identifier
+     * 
+ * + * uint32 font_code = 3; + */ + private void clearFontCode() { + + fontCode_ = 0; + } + + public static final int X_FIELD_NUMBER = 4; + private int x_; + /** + * uint32 x = 4; + * @return The x. + */ + @java.lang.Override + public int getX() { + return x_; + } + /** + * uint32 x = 4; + * @param value The x to set. + */ + private void setX(int value) { + + x_ = value; + } + /** + * uint32 x = 4; + */ + private void clearX() { + + x_ = 0; + } + + public static final int Y_FIELD_NUMBER = 5; + private int y_; + /** + * uint32 y = 5; + * @return The y. + */ + @java.lang.Override + public int getY() { + return y_; + } + /** + * uint32 y = 5; + * @param value The y to set. + */ + private void setY(int value) { + + y_ = value; + } + /** + * uint32 y = 5; + */ + private void clearY() { + + y_ = 0; + } + + public static final int SIZE_FIELD_NUMBER = 6; + private int size_; + /** + *
+     * Font size multiplier
+     * 
+ * + * uint32 size = 6; + * @return The size. + */ + @java.lang.Override + public int getSize() { + return size_; + } + /** + *
+     * Font size multiplier
+     * 
+ * + * uint32 size = 6; + * @param value The size to set. + */ + private void setSize(int value) { + + size_ = value; + } + /** + *
+     * Font size multiplier
+     * 
+ * + * uint32 size = 6; + */ + private void clearSize() { + + size_ = 0; + } + + public static mentraos.ble.MentraosBle.DisplayText parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayText parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayText parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayText parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayText parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayText parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayText parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DisplayText parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DisplayText parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayText parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DisplayText prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DisplayText} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DisplayText, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayText) + mentraos.ble.MentraosBle.DisplayTextOrBuilder { + // Construct using mentraos.ble.MentraosBle.DisplayText.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * string text = 1; + * @return The text. + */ + @java.lang.Override + public java.lang.String getText() { + return instance.getText(); + } + /** + * string text = 1; + * @return The bytes for text. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTextBytes() { + return instance.getTextBytes(); + } + /** + * string text = 1; + * @param value The text to set. + * @return This builder for chaining. + */ + public Builder setText( + java.lang.String value) { + copyOnWrite(); + instance.setText(value); + return this; + } + /** + * string text = 1; + * @return This builder for chaining. + */ + public Builder clearText() { + copyOnWrite(); + instance.clearText(); + return this; + } + /** + * string text = 1; + * @param value The bytes for text to set. + * @return This builder for chaining. + */ + public Builder setTextBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setTextBytes(value); + return this; + } + + /** + *
+       * RGB565 format (e.g., 0xF800 for red)
+       * 
+ * + * uint32 color = 2; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return instance.getColor(); + } + /** + *
+       * RGB565 format (e.g., 0xF800 for red)
+       * 
+ * + * uint32 color = 2; + * @param value The color to set. + * @return This builder for chaining. + */ + public Builder setColor(int value) { + copyOnWrite(); + instance.setColor(value); + return this; + } + /** + *
+       * RGB565 format (e.g., 0xF800 for red)
+       * 
+ * + * uint32 color = 2; + * @return This builder for chaining. + */ + public Builder clearColor() { + copyOnWrite(); + instance.clearColor(); + return this; + } + + /** + *
+       * Font identifier
+       * 
+ * + * uint32 font_code = 3; + * @return The fontCode. + */ + @java.lang.Override + public int getFontCode() { + return instance.getFontCode(); + } + /** + *
+       * Font identifier
+       * 
+ * + * uint32 font_code = 3; + * @param value The fontCode to set. + * @return This builder for chaining. + */ + public Builder setFontCode(int value) { + copyOnWrite(); + instance.setFontCode(value); + return this; + } + /** + *
+       * Font identifier
+       * 
+ * + * uint32 font_code = 3; + * @return This builder for chaining. + */ + public Builder clearFontCode() { + copyOnWrite(); + instance.clearFontCode(); + return this; + } + + /** + * uint32 x = 4; + * @return The x. + */ + @java.lang.Override + public int getX() { + return instance.getX(); + } + /** + * uint32 x = 4; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(int value) { + copyOnWrite(); + instance.setX(value); + return this; + } + /** + * uint32 x = 4; + * @return This builder for chaining. + */ + public Builder clearX() { + copyOnWrite(); + instance.clearX(); + return this; + } + + /** + * uint32 y = 5; + * @return The y. + */ + @java.lang.Override + public int getY() { + return instance.getY(); + } + /** + * uint32 y = 5; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(int value) { + copyOnWrite(); + instance.setY(value); + return this; + } + /** + * uint32 y = 5; + * @return This builder for chaining. + */ + public Builder clearY() { + copyOnWrite(); + instance.clearY(); + return this; + } + + /** + *
+       * Font size multiplier
+       * 
+ * + * uint32 size = 6; + * @return The size. + */ + @java.lang.Override + public int getSize() { + return instance.getSize(); + } + /** + *
+       * Font size multiplier
+       * 
+ * + * uint32 size = 6; + * @param value The size to set. + * @return This builder for chaining. + */ + public Builder setSize(int value) { + copyOnWrite(); + instance.setSize(value); + return this; + } + /** + *
+       * Font size multiplier
+       * 
+ * + * uint32 size = 6; + * @return This builder for chaining. + */ + public Builder clearSize() { + copyOnWrite(); + instance.clearSize(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayText) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DisplayText(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "text_", + "color_", + "fontCode_", + "x_", + "y_", + "size_", + }; + java.lang.String info = + "\u0000\u0006\u0000\u0000\u0001\u0006\u0006\u0000\u0000\u0000\u0001\u0208\u0002\u000b" + + "\u0003\u000b\u0004\u000b\u0005\u000b\u0006\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DisplayText.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DisplayText) + private static final mentraos.ble.MentraosBle.DisplayText DEFAULT_INSTANCE; + static { + DisplayText defaultInstance = new DisplayText(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DisplayText.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DisplayText getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DisplayImageOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DisplayImage) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * 2-byte hex string like "002A"
+     * 
+ * + * string stream_id = 1; + * @return The streamId. + */ + java.lang.String getStreamId(); + /** + *
+     * 2-byte hex string like "002A"
+     * 
+ * + * string stream_id = 1; + * @return The bytes for streamId. + */ + com.google.protobuf.ByteString + getStreamIdBytes(); + + /** + * uint32 x = 2; + * @return The x. + */ + int getX(); + + /** + * uint32 y = 3; + * @return The y. + */ + int getY(); + + /** + * uint32 width = 4; + * @return The width. + */ + int getWidth(); + + /** + * uint32 height = 5; + * @return The height. + */ + int getHeight(); + + /** + *
+     * "rle", "webp", etc.
+     * 
+ * + * string encoding = 6; + * @return The encoding. + */ + java.lang.String getEncoding(); + /** + *
+     * "rle", "webp", etc.
+     * 
+ * + * string encoding = 6; + * @return The bytes for encoding. + */ + com.google.protobuf.ByteString + getEncodingBytes(); + + /** + * uint32 total_chunks = 7; + * @return The totalChunks. + */ + int getTotalChunks(); + } + /** + *
+   * Initiates bitmap transfer - actual data comes via binary protocol
+   * 
+ * + * Protobuf type {@code mentraos.ble.DisplayImage} + */ + public static final class DisplayImage extends + com.google.protobuf.GeneratedMessageLite< + DisplayImage, DisplayImage.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayImage) + DisplayImageOrBuilder { + private DisplayImage() { + streamId_ = ""; + encoding_ = ""; + } + public static final int STREAM_ID_FIELD_NUMBER = 1; + private java.lang.String streamId_; + /** + *
+     * 2-byte hex string like "002A"
+     * 
+ * + * string stream_id = 1; + * @return The streamId. + */ + @java.lang.Override + public java.lang.String getStreamId() { + return streamId_; + } + /** + *
+     * 2-byte hex string like "002A"
+     * 
+ * + * string stream_id = 1; + * @return The bytes for streamId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getStreamIdBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(streamId_); + } + /** + *
+     * 2-byte hex string like "002A"
+     * 
+ * + * string stream_id = 1; + * @param value The streamId to set. + */ + private void setStreamId( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + streamId_ = value; + } + /** + *
+     * 2-byte hex string like "002A"
+     * 
+ * + * string stream_id = 1; + */ + private void clearStreamId() { + + streamId_ = getDefaultInstance().getStreamId(); + } + /** + *
+     * 2-byte hex string like "002A"
+     * 
+ * + * string stream_id = 1; + * @param value The bytes for streamId to set. + */ + private void setStreamIdBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + streamId_ = value.toStringUtf8(); + + } + + public static final int X_FIELD_NUMBER = 2; + private int x_; + /** + * uint32 x = 2; + * @return The x. + */ + @java.lang.Override + public int getX() { + return x_; + } + /** + * uint32 x = 2; + * @param value The x to set. + */ + private void setX(int value) { + + x_ = value; + } + /** + * uint32 x = 2; + */ + private void clearX() { + + x_ = 0; + } + + public static final int Y_FIELD_NUMBER = 3; + private int y_; + /** + * uint32 y = 3; + * @return The y. + */ + @java.lang.Override + public int getY() { + return y_; + } + /** + * uint32 y = 3; + * @param value The y to set. + */ + private void setY(int value) { + + y_ = value; + } + /** + * uint32 y = 3; + */ + private void clearY() { + + y_ = 0; + } + + public static final int WIDTH_FIELD_NUMBER = 4; + private int width_; + /** + * uint32 width = 4; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return width_; + } + /** + * uint32 width = 4; + * @param value The width to set. + */ + private void setWidth(int value) { + + width_ = value; + } + /** + * uint32 width = 4; + */ + private void clearWidth() { + + width_ = 0; + } + + public static final int HEIGHT_FIELD_NUMBER = 5; + private int height_; + /** + * uint32 height = 5; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + /** + * uint32 height = 5; + * @param value The height to set. + */ + private void setHeight(int value) { + + height_ = value; + } + /** + * uint32 height = 5; + */ + private void clearHeight() { + + height_ = 0; + } + + public static final int ENCODING_FIELD_NUMBER = 6; + private java.lang.String encoding_; + /** + *
+     * "rle", "webp", etc.
+     * 
+ * + * string encoding = 6; + * @return The encoding. + */ + @java.lang.Override + public java.lang.String getEncoding() { + return encoding_; + } + /** + *
+     * "rle", "webp", etc.
+     * 
+ * + * string encoding = 6; + * @return The bytes for encoding. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getEncodingBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(encoding_); + } + /** + *
+     * "rle", "webp", etc.
+     * 
+ * + * string encoding = 6; + * @param value The encoding to set. + */ + private void setEncoding( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + encoding_ = value; + } + /** + *
+     * "rle", "webp", etc.
+     * 
+ * + * string encoding = 6; + */ + private void clearEncoding() { + + encoding_ = getDefaultInstance().getEncoding(); + } + /** + *
+     * "rle", "webp", etc.
+     * 
+ * + * string encoding = 6; + * @param value The bytes for encoding to set. + */ + private void setEncodingBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + encoding_ = value.toStringUtf8(); + + } + + public static final int TOTAL_CHUNKS_FIELD_NUMBER = 7; + private int totalChunks_; + /** + * uint32 total_chunks = 7; + * @return The totalChunks. + */ + @java.lang.Override + public int getTotalChunks() { + return totalChunks_; + } + /** + * uint32 total_chunks = 7; + * @param value The totalChunks to set. + */ + private void setTotalChunks(int value) { + + totalChunks_ = value; + } + /** + * uint32 total_chunks = 7; + */ + private void clearTotalChunks() { + + totalChunks_ = 0; + } + + public static mentraos.ble.MentraosBle.DisplayImage parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayImage parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayImage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayImage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayImage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayImage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayImage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DisplayImage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DisplayImage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayImage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DisplayImage prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + *
+     * Initiates bitmap transfer - actual data comes via binary protocol
+     * 
+ * + * Protobuf type {@code mentraos.ble.DisplayImage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DisplayImage, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayImage) + mentraos.ble.MentraosBle.DisplayImageOrBuilder { + // Construct using mentraos.ble.MentraosBle.DisplayImage.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * 2-byte hex string like "002A"
+       * 
+ * + * string stream_id = 1; + * @return The streamId. + */ + @java.lang.Override + public java.lang.String getStreamId() { + return instance.getStreamId(); + } + /** + *
+       * 2-byte hex string like "002A"
+       * 
+ * + * string stream_id = 1; + * @return The bytes for streamId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getStreamIdBytes() { + return instance.getStreamIdBytes(); + } + /** + *
+       * 2-byte hex string like "002A"
+       * 
+ * + * string stream_id = 1; + * @param value The streamId to set. + * @return This builder for chaining. + */ + public Builder setStreamId( + java.lang.String value) { + copyOnWrite(); + instance.setStreamId(value); + return this; + } + /** + *
+       * 2-byte hex string like "002A"
+       * 
+ * + * string stream_id = 1; + * @return This builder for chaining. + */ + public Builder clearStreamId() { + copyOnWrite(); + instance.clearStreamId(); + return this; + } + /** + *
+       * 2-byte hex string like "002A"
+       * 
+ * + * string stream_id = 1; + * @param value The bytes for streamId to set. + * @return This builder for chaining. + */ + public Builder setStreamIdBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setStreamIdBytes(value); + return this; + } + + /** + * uint32 x = 2; + * @return The x. + */ + @java.lang.Override + public int getX() { + return instance.getX(); + } + /** + * uint32 x = 2; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(int value) { + copyOnWrite(); + instance.setX(value); + return this; + } + /** + * uint32 x = 2; + * @return This builder for chaining. + */ + public Builder clearX() { + copyOnWrite(); + instance.clearX(); + return this; + } + + /** + * uint32 y = 3; + * @return The y. + */ + @java.lang.Override + public int getY() { + return instance.getY(); + } + /** + * uint32 y = 3; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(int value) { + copyOnWrite(); + instance.setY(value); + return this; + } + /** + * uint32 y = 3; + * @return This builder for chaining. + */ + public Builder clearY() { + copyOnWrite(); + instance.clearY(); + return this; + } + + /** + * uint32 width = 4; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return instance.getWidth(); + } + /** + * uint32 width = 4; + * @param value The width to set. + * @return This builder for chaining. + */ + public Builder setWidth(int value) { + copyOnWrite(); + instance.setWidth(value); + return this; + } + /** + * uint32 width = 4; + * @return This builder for chaining. + */ + public Builder clearWidth() { + copyOnWrite(); + instance.clearWidth(); + return this; + } + + /** + * uint32 height = 5; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return instance.getHeight(); + } + /** + * uint32 height = 5; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(int value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * uint32 height = 5; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + /** + *
+       * "rle", "webp", etc.
+       * 
+ * + * string encoding = 6; + * @return The encoding. + */ + @java.lang.Override + public java.lang.String getEncoding() { + return instance.getEncoding(); + } + /** + *
+       * "rle", "webp", etc.
+       * 
+ * + * string encoding = 6; + * @return The bytes for encoding. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getEncodingBytes() { + return instance.getEncodingBytes(); + } + /** + *
+       * "rle", "webp", etc.
+       * 
+ * + * string encoding = 6; + * @param value The encoding to set. + * @return This builder for chaining. + */ + public Builder setEncoding( + java.lang.String value) { + copyOnWrite(); + instance.setEncoding(value); + return this; + } + /** + *
+       * "rle", "webp", etc.
+       * 
+ * + * string encoding = 6; + * @return This builder for chaining. + */ + public Builder clearEncoding() { + copyOnWrite(); + instance.clearEncoding(); + return this; + } + /** + *
+       * "rle", "webp", etc.
+       * 
+ * + * string encoding = 6; + * @param value The bytes for encoding to set. + * @return This builder for chaining. + */ + public Builder setEncodingBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setEncodingBytes(value); + return this; + } + + /** + * uint32 total_chunks = 7; + * @return The totalChunks. + */ + @java.lang.Override + public int getTotalChunks() { + return instance.getTotalChunks(); + } + /** + * uint32 total_chunks = 7; + * @param value The totalChunks to set. + * @return This builder for chaining. + */ + public Builder setTotalChunks(int value) { + copyOnWrite(); + instance.setTotalChunks(value); + return this; + } + /** + * uint32 total_chunks = 7; + * @return This builder for chaining. + */ + public Builder clearTotalChunks() { + copyOnWrite(); + instance.clearTotalChunks(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayImage) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DisplayImage(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "streamId_", + "x_", + "y_", + "width_", + "height_", + "encoding_", + "totalChunks_", + }; + java.lang.String info = + "\u0000\u0007\u0000\u0000\u0001\u0007\u0007\u0000\u0000\u0000\u0001\u0208\u0002\u000b" + + "\u0003\u000b\u0004\u000b\u0005\u000b\u0006\u0208\u0007\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DisplayImage.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DisplayImage) + private static final mentraos.ble.MentraosBle.DisplayImage DEFAULT_INSTANCE; + static { + DisplayImage defaultInstance = new DisplayImage(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DisplayImage.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DisplayImage getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface PreloadImageOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.PreloadImage) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * string stream_id = 1; + * @return The streamId. + */ + java.lang.String getStreamId(); + /** + * string stream_id = 1; + * @return The bytes for streamId. + */ + com.google.protobuf.ByteString + getStreamIdBytes(); + + /** + *
+     * ID for later reference
+     * 
+ * + * uint32 image_id = 2; + * @return The imageId. + */ + int getImageId(); + + /** + * uint32 width = 3; + * @return The width. + */ + int getWidth(); + + /** + * uint32 height = 4; + * @return The height. + */ + int getHeight(); + + /** + * string encoding = 5; + * @return The encoding. + */ + java.lang.String getEncoding(); + /** + * string encoding = 5; + * @return The bytes for encoding. + */ + com.google.protobuf.ByteString + getEncodingBytes(); + + /** + * uint32 total_chunks = 6; + * @return The totalChunks. + */ + int getTotalChunks(); + } + /** + * Protobuf type {@code mentraos.ble.PreloadImage} + */ + public static final class PreloadImage extends + com.google.protobuf.GeneratedMessageLite< + PreloadImage, PreloadImage.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.PreloadImage) + PreloadImageOrBuilder { + private PreloadImage() { + streamId_ = ""; + encoding_ = ""; + } + public static final int STREAM_ID_FIELD_NUMBER = 1; + private java.lang.String streamId_; + /** + * string stream_id = 1; + * @return The streamId. + */ + @java.lang.Override + public java.lang.String getStreamId() { + return streamId_; + } + /** + * string stream_id = 1; + * @return The bytes for streamId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getStreamIdBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(streamId_); + } + /** + * string stream_id = 1; + * @param value The streamId to set. + */ + private void setStreamId( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + streamId_ = value; + } + /** + * string stream_id = 1; + */ + private void clearStreamId() { + + streamId_ = getDefaultInstance().getStreamId(); + } + /** + * string stream_id = 1; + * @param value The bytes for streamId to set. + */ + private void setStreamIdBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + streamId_ = value.toStringUtf8(); + + } + + public static final int IMAGE_ID_FIELD_NUMBER = 2; + private int imageId_; + /** + *
+     * ID for later reference
+     * 
+ * + * uint32 image_id = 2; + * @return The imageId. + */ + @java.lang.Override + public int getImageId() { + return imageId_; + } + /** + *
+     * ID for later reference
+     * 
+ * + * uint32 image_id = 2; + * @param value The imageId to set. + */ + private void setImageId(int value) { + + imageId_ = value; + } + /** + *
+     * ID for later reference
+     * 
+ * + * uint32 image_id = 2; + */ + private void clearImageId() { + + imageId_ = 0; + } + + public static final int WIDTH_FIELD_NUMBER = 3; + private int width_; + /** + * uint32 width = 3; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return width_; + } + /** + * uint32 width = 3; + * @param value The width to set. + */ + private void setWidth(int value) { + + width_ = value; + } + /** + * uint32 width = 3; + */ + private void clearWidth() { + + width_ = 0; + } + + public static final int HEIGHT_FIELD_NUMBER = 4; + private int height_; + /** + * uint32 height = 4; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + /** + * uint32 height = 4; + * @param value The height to set. + */ + private void setHeight(int value) { + + height_ = value; + } + /** + * uint32 height = 4; + */ + private void clearHeight() { + + height_ = 0; + } + + public static final int ENCODING_FIELD_NUMBER = 5; + private java.lang.String encoding_; + /** + * string encoding = 5; + * @return The encoding. + */ + @java.lang.Override + public java.lang.String getEncoding() { + return encoding_; + } + /** + * string encoding = 5; + * @return The bytes for encoding. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getEncodingBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(encoding_); + } + /** + * string encoding = 5; + * @param value The encoding to set. + */ + private void setEncoding( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + encoding_ = value; + } + /** + * string encoding = 5; + */ + private void clearEncoding() { + + encoding_ = getDefaultInstance().getEncoding(); + } + /** + * string encoding = 5; + * @param value The bytes for encoding to set. + */ + private void setEncodingBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + encoding_ = value.toStringUtf8(); + + } + + public static final int TOTAL_CHUNKS_FIELD_NUMBER = 6; + private int totalChunks_; + /** + * uint32 total_chunks = 6; + * @return The totalChunks. + */ + @java.lang.Override + public int getTotalChunks() { + return totalChunks_; + } + /** + * uint32 total_chunks = 6; + * @param value The totalChunks to set. + */ + private void setTotalChunks(int value) { + + totalChunks_ = value; + } + /** + * uint32 total_chunks = 6; + */ + private void clearTotalChunks() { + + totalChunks_ = 0; + } + + public static mentraos.ble.MentraosBle.PreloadImage parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PreloadImage parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PreloadImage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PreloadImage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PreloadImage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.PreloadImage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PreloadImage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static mentraos.ble.MentraosBle.PreloadImage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.PreloadImage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.PreloadImage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.PreloadImage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static mentraos.ble.MentraosBle.PreloadImage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.PreloadImage prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.PreloadImage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.PreloadImage, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.PreloadImage) + mentraos.ble.MentraosBle.PreloadImageOrBuilder { + // Construct using mentraos.ble.MentraosBle.PreloadImage.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * string stream_id = 1; + * @return The streamId. + */ + @java.lang.Override + public java.lang.String getStreamId() { + return instance.getStreamId(); + } + /** + * string stream_id = 1; + * @return The bytes for streamId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getStreamIdBytes() { + return instance.getStreamIdBytes(); + } + /** + * string stream_id = 1; + * @param value The streamId to set. + * @return This builder for chaining. + */ + public Builder setStreamId( + java.lang.String value) { + copyOnWrite(); + instance.setStreamId(value); + return this; + } + /** + * string stream_id = 1; + * @return This builder for chaining. + */ + public Builder clearStreamId() { + copyOnWrite(); + instance.clearStreamId(); + return this; + } + /** + * string stream_id = 1; + * @param value The bytes for streamId to set. + * @return This builder for chaining. + */ + public Builder setStreamIdBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setStreamIdBytes(value); + return this; + } + + /** + *
+       * ID for later reference
+       * 
+ * + * uint32 image_id = 2; + * @return The imageId. + */ + @java.lang.Override + public int getImageId() { + return instance.getImageId(); + } + /** + *
+       * ID for later reference
+       * 
+ * + * uint32 image_id = 2; + * @param value The imageId to set. + * @return This builder for chaining. + */ + public Builder setImageId(int value) { + copyOnWrite(); + instance.setImageId(value); + return this; + } + /** + *
+       * ID for later reference
+       * 
+ * + * uint32 image_id = 2; + * @return This builder for chaining. + */ + public Builder clearImageId() { + copyOnWrite(); + instance.clearImageId(); + return this; + } + + /** + * uint32 width = 3; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return instance.getWidth(); + } + /** + * uint32 width = 3; + * @param value The width to set. + * @return This builder for chaining. + */ + public Builder setWidth(int value) { + copyOnWrite(); + instance.setWidth(value); + return this; + } + /** + * uint32 width = 3; + * @return This builder for chaining. + */ + public Builder clearWidth() { + copyOnWrite(); + instance.clearWidth(); + return this; + } + + /** + * uint32 height = 4; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return instance.getHeight(); + } + /** + * uint32 height = 4; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(int value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * uint32 height = 4; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + /** + * string encoding = 5; + * @return The encoding. + */ + @java.lang.Override + public java.lang.String getEncoding() { + return instance.getEncoding(); + } + /** + * string encoding = 5; + * @return The bytes for encoding. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getEncodingBytes() { + return instance.getEncodingBytes(); + } + /** + * string encoding = 5; + * @param value The encoding to set. + * @return This builder for chaining. + */ + public Builder setEncoding( + java.lang.String value) { + copyOnWrite(); + instance.setEncoding(value); + return this; + } + /** + * string encoding = 5; + * @return This builder for chaining. + */ + public Builder clearEncoding() { + copyOnWrite(); + instance.clearEncoding(); + return this; + } + /** + * string encoding = 5; + * @param value The bytes for encoding to set. + * @return This builder for chaining. + */ + public Builder setEncodingBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setEncodingBytes(value); + return this; + } + + /** + * uint32 total_chunks = 6; + * @return The totalChunks. + */ + @java.lang.Override + public int getTotalChunks() { + return instance.getTotalChunks(); + } + /** + * uint32 total_chunks = 6; + * @param value The totalChunks to set. + * @return This builder for chaining. + */ + public Builder setTotalChunks(int value) { + copyOnWrite(); + instance.setTotalChunks(value); + return this; + } + /** + * uint32 total_chunks = 6; + * @return This builder for chaining. + */ + public Builder clearTotalChunks() { + copyOnWrite(); + instance.clearTotalChunks(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.PreloadImage) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.PreloadImage(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "streamId_", + "imageId_", + "width_", + "height_", + "encoding_", + "totalChunks_", + }; + java.lang.String info = + "\u0000\u0006\u0000\u0000\u0001\u0006\u0006\u0000\u0000\u0000\u0001\u0208\u0002\u000b" + + "\u0003\u000b\u0004\u000b\u0005\u0208\u0006\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.PreloadImage.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.PreloadImage) + private static final mentraos.ble.MentraosBle.PreloadImage DEFAULT_INSTANCE; + static { + PreloadImage defaultInstance = new PreloadImage(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + PreloadImage.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.PreloadImage getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DisplayCachedImageOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DisplayCachedImage) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 image_id = 1; + * @return The imageId. + */ + int getImageId(); + + /** + * uint32 x = 2; + * @return The x. + */ + int getX(); + + /** + * uint32 y = 3; + * @return The y. + */ + int getY(); + + /** + * uint32 width = 4; + * @return The width. + */ + int getWidth(); + + /** + * uint32 height = 5; + * @return The height. + */ + int getHeight(); + } + /** + * Protobuf type {@code mentraos.ble.DisplayCachedImage} + */ + public static final class DisplayCachedImage extends + com.google.protobuf.GeneratedMessageLite< + DisplayCachedImage, DisplayCachedImage.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayCachedImage) + DisplayCachedImageOrBuilder { + private DisplayCachedImage() { + } + public static final int IMAGE_ID_FIELD_NUMBER = 1; + private int imageId_; + /** + * uint32 image_id = 1; + * @return The imageId. + */ + @java.lang.Override + public int getImageId() { + return imageId_; + } + /** + * uint32 image_id = 1; + * @param value The imageId to set. + */ + private void setImageId(int value) { + + imageId_ = value; + } + /** + * uint32 image_id = 1; + */ + private void clearImageId() { + + imageId_ = 0; + } + + public static final int X_FIELD_NUMBER = 2; + private int x_; + /** + * uint32 x = 2; + * @return The x. + */ + @java.lang.Override + public int getX() { + return x_; + } + /** + * uint32 x = 2; + * @param value The x to set. + */ + private void setX(int value) { + + x_ = value; + } + /** + * uint32 x = 2; + */ + private void clearX() { + + x_ = 0; + } + + public static final int Y_FIELD_NUMBER = 3; + private int y_; + /** + * uint32 y = 3; + * @return The y. + */ + @java.lang.Override + public int getY() { + return y_; + } + /** + * uint32 y = 3; + * @param value The y to set. + */ + private void setY(int value) { + + y_ = value; + } + /** + * uint32 y = 3; + */ + private void clearY() { + + y_ = 0; + } + + public static final int WIDTH_FIELD_NUMBER = 4; + private int width_; + /** + * uint32 width = 4; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return width_; + } + /** + * uint32 width = 4; + * @param value The width to set. + */ + private void setWidth(int value) { + + width_ = value; + } + /** + * uint32 width = 4; + */ + private void clearWidth() { + + width_ = 0; + } + + public static final int HEIGHT_FIELD_NUMBER = 5; + private int height_; + /** + * uint32 height = 5; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + /** + * uint32 height = 5; + * @param value The height to set. + */ + private void setHeight(int value) { + + height_ = value; + } + /** + * uint32 height = 5; + */ + private void clearHeight() { + + height_ = 0; + } + + public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DisplayCachedImage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DisplayCachedImage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayCachedImage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DisplayCachedImage prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DisplayCachedImage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DisplayCachedImage, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayCachedImage) + mentraos.ble.MentraosBle.DisplayCachedImageOrBuilder { + // Construct using mentraos.ble.MentraosBle.DisplayCachedImage.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 image_id = 1; + * @return The imageId. + */ + @java.lang.Override + public int getImageId() { + return instance.getImageId(); + } + /** + * uint32 image_id = 1; + * @param value The imageId to set. + * @return This builder for chaining. + */ + public Builder setImageId(int value) { + copyOnWrite(); + instance.setImageId(value); + return this; + } + /** + * uint32 image_id = 1; + * @return This builder for chaining. + */ + public Builder clearImageId() { + copyOnWrite(); + instance.clearImageId(); + return this; + } + + /** + * uint32 x = 2; + * @return The x. + */ + @java.lang.Override + public int getX() { + return instance.getX(); + } + /** + * uint32 x = 2; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(int value) { + copyOnWrite(); + instance.setX(value); + return this; + } + /** + * uint32 x = 2; + * @return This builder for chaining. + */ + public Builder clearX() { + copyOnWrite(); + instance.clearX(); + return this; + } + + /** + * uint32 y = 3; + * @return The y. + */ + @java.lang.Override + public int getY() { + return instance.getY(); + } + /** + * uint32 y = 3; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(int value) { + copyOnWrite(); + instance.setY(value); + return this; + } + /** + * uint32 y = 3; + * @return This builder for chaining. + */ + public Builder clearY() { + copyOnWrite(); + instance.clearY(); + return this; + } + + /** + * uint32 width = 4; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return instance.getWidth(); + } + /** + * uint32 width = 4; + * @param value The width to set. + * @return This builder for chaining. + */ + public Builder setWidth(int value) { + copyOnWrite(); + instance.setWidth(value); + return this; + } + /** + * uint32 width = 4; + * @return This builder for chaining. + */ + public Builder clearWidth() { + copyOnWrite(); + instance.clearWidth(); + return this; + } + + /** + * uint32 height = 5; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return instance.getHeight(); + } + /** + * uint32 height = 5; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(int value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * uint32 height = 5; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayCachedImage) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DisplayCachedImage(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "imageId_", + "x_", + "y_", + "width_", + "height_", + }; + java.lang.String info = + "\u0000\u0005\u0000\u0000\u0001\u0005\u0005\u0000\u0000\u0000\u0001\u000b\u0002\u000b" + + "\u0003\u000b\u0004\u000b\u0005\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DisplayCachedImage.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DisplayCachedImage) + private static final mentraos.ble.MentraosBle.DisplayCachedImage DEFAULT_INSTANCE; + static { + DisplayCachedImage defaultInstance = new DisplayCachedImage(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DisplayCachedImage.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DisplayCachedImage getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ClearCachedImageOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.ClearCachedImage) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 image_id = 1; + * @return The imageId. + */ + int getImageId(); + } + /** + * Protobuf type {@code mentraos.ble.ClearCachedImage} + */ + public static final class ClearCachedImage extends + com.google.protobuf.GeneratedMessageLite< + ClearCachedImage, ClearCachedImage.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.ClearCachedImage) + ClearCachedImageOrBuilder { + private ClearCachedImage() { + } + public static final int IMAGE_ID_FIELD_NUMBER = 1; + private int imageId_; + /** + * uint32 image_id = 1; + * @return The imageId. + */ + @java.lang.Override + public int getImageId() { + return imageId_; + } + /** + * uint32 image_id = 1; + * @param value The imageId to set. + */ + private void setImageId(int value) { + + imageId_ = value; + } + /** + * uint32 image_id = 1; + */ + private void clearImageId() { + + imageId_ = 0; + } + + public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.ClearCachedImage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.ClearCachedImage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ClearCachedImage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.ClearCachedImage prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.ClearCachedImage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.ClearCachedImage, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.ClearCachedImage) + mentraos.ble.MentraosBle.ClearCachedImageOrBuilder { + // Construct using mentraos.ble.MentraosBle.ClearCachedImage.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 image_id = 1; + * @return The imageId. + */ + @java.lang.Override + public int getImageId() { + return instance.getImageId(); + } + /** + * uint32 image_id = 1; + * @param value The imageId to set. + * @return This builder for chaining. + */ + public Builder setImageId(int value) { + copyOnWrite(); + instance.setImageId(value); + return this; + } + /** + * uint32 image_id = 1; + * @return This builder for chaining. + */ + public Builder clearImageId() { + copyOnWrite(); + instance.clearImageId(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.ClearCachedImage) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.ClearCachedImage(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "imageId_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.ClearCachedImage.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.ClearCachedImage) + private static final mentraos.ble.MentraosBle.ClearCachedImage DEFAULT_INSTANCE; + static { + ClearCachedImage defaultInstance = new ClearCachedImage(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ClearCachedImage.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.ClearCachedImage getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DisplayScrollingTextOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DisplayScrollingText) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * string text = 1; + * @return The text. + */ + java.lang.String getText(); + /** + * string text = 1; + * @return The bytes for text. + */ + com.google.protobuf.ByteString + getTextBytes(); + + /** + * uint32 color = 2; + * @return The color. + */ + int getColor(); + + /** + * uint32 font_code = 3; + * @return The fontCode. + */ + int getFontCode(); + + /** + * uint32 x = 4; + * @return The x. + */ + int getX(); + + /** + * uint32 y = 5; + * @return The y. + */ + int getY(); + + /** + * uint32 width = 6; + * @return The width. + */ + int getWidth(); + + /** + * uint32 height = 7; + * @return The height. + */ + int getHeight(); + + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @return The enum numeric value on the wire for align. + */ + int getAlignValue(); + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @return The align. + */ + mentraos.ble.MentraosBle.DisplayScrollingText.Alignment getAlign(); + + /** + *
+     * pixels between lines
+     * 
+ * + * uint32 line_spacing = 9; + * @return The lineSpacing. + */ + int getLineSpacing(); + + /** + *
+     * pixels/sec scrolling up
+     * 
+ * + * uint32 speed = 10; + * @return The speed. + */ + int getSpeed(); + + /** + *
+     * font size multiplier
+     * 
+ * + * uint32 size = 11; + * @return The size. + */ + int getSize(); + + /** + *
+     * wrap to top when finished
+     * 
+ * + * bool loop = 12; + * @return The loop. + */ + boolean getLoop(); + + /** + *
+     * delay before restart (if looping)
+     * 
+ * + * uint32 pause_ms = 13; + * @return The pauseMs. + */ + int getPauseMs(); + } + /** + * Protobuf type {@code mentraos.ble.DisplayScrollingText} + */ + public static final class DisplayScrollingText extends + com.google.protobuf.GeneratedMessageLite< + DisplayScrollingText, DisplayScrollingText.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayScrollingText) + DisplayScrollingTextOrBuilder { + private DisplayScrollingText() { + text_ = ""; + } + /** + * Protobuf enum {@code mentraos.ble.DisplayScrollingText.Alignment} + */ + public enum Alignment + implements com.google.protobuf.Internal.EnumLite { + /** + * LEFT = 0; + */ + LEFT(0), + /** + * CENTER = 1; + */ + CENTER(1), + /** + * RIGHT = 2; + */ + RIGHT(2), + UNRECOGNIZED(-1), + ; + + /** + * LEFT = 0; + */ + public static final int LEFT_VALUE = 0; + /** + * CENTER = 1; + */ + public static final int CENTER_VALUE = 1; + /** + * RIGHT = 2; + */ + public static final int RIGHT_VALUE = 2; + + + @java.lang.Override + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Alignment valueOf(int value) { + return forNumber(value); + } + + public static Alignment forNumber(int value) { + switch (value) { + case 0: return LEFT; + case 1: return CENTER; + case 2: return RIGHT; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Alignment> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + @java.lang.Override + public Alignment findValueByNumber(int number) { + return Alignment.forNumber(number); + } + }; + + public static com.google.protobuf.Internal.EnumVerifier + internalGetVerifier() { + return AlignmentVerifier.INSTANCE; + } + + private static final class AlignmentVerifier implements + com.google.protobuf.Internal.EnumVerifier { + static final com.google.protobuf.Internal.EnumVerifier INSTANCE = new AlignmentVerifier(); + @java.lang.Override + public boolean isInRange(int number) { + return Alignment.forNumber(number) != null; + } + }; + + private final int value; + + private Alignment(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:mentraos.ble.DisplayScrollingText.Alignment) + } + + public static final int TEXT_FIELD_NUMBER = 1; + private java.lang.String text_; + /** + * string text = 1; + * @return The text. + */ + @java.lang.Override + public java.lang.String getText() { + return text_; + } + /** + * string text = 1; + * @return The bytes for text. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTextBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(text_); + } + /** + * string text = 1; + * @param value The text to set. + */ + private void setText( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + text_ = value; + } + /** + * string text = 1; + */ + private void clearText() { + + text_ = getDefaultInstance().getText(); + } + /** + * string text = 1; + * @param value The bytes for text to set. + */ + private void setTextBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + text_ = value.toStringUtf8(); + + } + + public static final int COLOR_FIELD_NUMBER = 2; + private int color_; + /** + * uint32 color = 2; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return color_; + } + /** + * uint32 color = 2; + * @param value The color to set. + */ + private void setColor(int value) { + + color_ = value; + } + /** + * uint32 color = 2; + */ + private void clearColor() { + + color_ = 0; + } + + public static final int FONT_CODE_FIELD_NUMBER = 3; + private int fontCode_; + /** + * uint32 font_code = 3; + * @return The fontCode. + */ + @java.lang.Override + public int getFontCode() { + return fontCode_; + } + /** + * uint32 font_code = 3; + * @param value The fontCode to set. + */ + private void setFontCode(int value) { + + fontCode_ = value; + } + /** + * uint32 font_code = 3; + */ + private void clearFontCode() { + + fontCode_ = 0; + } + + public static final int X_FIELD_NUMBER = 4; + private int x_; + /** + * uint32 x = 4; + * @return The x. + */ + @java.lang.Override + public int getX() { + return x_; + } + /** + * uint32 x = 4; + * @param value The x to set. + */ + private void setX(int value) { + + x_ = value; + } + /** + * uint32 x = 4; + */ + private void clearX() { + + x_ = 0; + } + + public static final int Y_FIELD_NUMBER = 5; + private int y_; + /** + * uint32 y = 5; + * @return The y. + */ + @java.lang.Override + public int getY() { + return y_; + } + /** + * uint32 y = 5; + * @param value The y to set. + */ + private void setY(int value) { + + y_ = value; + } + /** + * uint32 y = 5; + */ + private void clearY() { + + y_ = 0; + } + + public static final int WIDTH_FIELD_NUMBER = 6; + private int width_; + /** + * uint32 width = 6; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return width_; + } + /** + * uint32 width = 6; + * @param value The width to set. + */ + private void setWidth(int value) { + + width_ = value; + } + /** + * uint32 width = 6; + */ + private void clearWidth() { + + width_ = 0; + } + + public static final int HEIGHT_FIELD_NUMBER = 7; + private int height_; + /** + * uint32 height = 7; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + /** + * uint32 height = 7; + * @param value The height to set. + */ + private void setHeight(int value) { + + height_ = value; + } + /** + * uint32 height = 7; + */ + private void clearHeight() { + + height_ = 0; + } + + public static final int ALIGN_FIELD_NUMBER = 8; + private int align_; + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @return The enum numeric value on the wire for align. + */ + @java.lang.Override + public int getAlignValue() { + return align_; + } + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @return The align. + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayScrollingText.Alignment getAlign() { + mentraos.ble.MentraosBle.DisplayScrollingText.Alignment result = mentraos.ble.MentraosBle.DisplayScrollingText.Alignment.forNumber(align_); + return result == null ? mentraos.ble.MentraosBle.DisplayScrollingText.Alignment.UNRECOGNIZED : result; + } + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @param value The enum numeric value on the wire for align to set. + */ + private void setAlignValue(int value) { + align_ = value; + } + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @param value The align to set. + */ + private void setAlign(mentraos.ble.MentraosBle.DisplayScrollingText.Alignment value) { + align_ = value.getNumber(); + + } + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + */ + private void clearAlign() { + + align_ = 0; + } + + public static final int LINE_SPACING_FIELD_NUMBER = 9; + private int lineSpacing_; + /** + *
+     * pixels between lines
+     * 
+ * + * uint32 line_spacing = 9; + * @return The lineSpacing. + */ + @java.lang.Override + public int getLineSpacing() { + return lineSpacing_; + } + /** + *
+     * pixels between lines
+     * 
+ * + * uint32 line_spacing = 9; + * @param value The lineSpacing to set. + */ + private void setLineSpacing(int value) { + + lineSpacing_ = value; + } + /** + *
+     * pixels between lines
+     * 
+ * + * uint32 line_spacing = 9; + */ + private void clearLineSpacing() { + + lineSpacing_ = 0; + } + + public static final int SPEED_FIELD_NUMBER = 10; + private int speed_; + /** + *
+     * pixels/sec scrolling up
+     * 
+ * + * uint32 speed = 10; + * @return The speed. + */ + @java.lang.Override + public int getSpeed() { + return speed_; + } + /** + *
+     * pixels/sec scrolling up
+     * 
+ * + * uint32 speed = 10; + * @param value The speed to set. + */ + private void setSpeed(int value) { + + speed_ = value; + } + /** + *
+     * pixels/sec scrolling up
+     * 
+ * + * uint32 speed = 10; + */ + private void clearSpeed() { + + speed_ = 0; + } + + public static final int SIZE_FIELD_NUMBER = 11; + private int size_; + /** + *
+     * font size multiplier
+     * 
+ * + * uint32 size = 11; + * @return The size. + */ + @java.lang.Override + public int getSize() { + return size_; + } + /** + *
+     * font size multiplier
+     * 
+ * + * uint32 size = 11; + * @param value The size to set. + */ + private void setSize(int value) { + + size_ = value; + } + /** + *
+     * font size multiplier
+     * 
+ * + * uint32 size = 11; + */ + private void clearSize() { + + size_ = 0; + } + + public static final int LOOP_FIELD_NUMBER = 12; + private boolean loop_; + /** + *
+     * wrap to top when finished
+     * 
+ * + * bool loop = 12; + * @return The loop. + */ + @java.lang.Override + public boolean getLoop() { + return loop_; + } + /** + *
+     * wrap to top when finished
+     * 
+ * + * bool loop = 12; + * @param value The loop to set. + */ + private void setLoop(boolean value) { + + loop_ = value; + } + /** + *
+     * wrap to top when finished
+     * 
+ * + * bool loop = 12; + */ + private void clearLoop() { + + loop_ = false; + } + + public static final int PAUSE_MS_FIELD_NUMBER = 13; + private int pauseMs_; + /** + *
+     * delay before restart (if looping)
+     * 
+ * + * uint32 pause_ms = 13; + * @return The pauseMs. + */ + @java.lang.Override + public int getPauseMs() { + return pauseMs_; + } + /** + *
+     * delay before restart (if looping)
+     * 
+ * + * uint32 pause_ms = 13; + * @param value The pauseMs to set. + */ + private void setPauseMs(int value) { + + pauseMs_ = value; + } + /** + *
+     * delay before restart (if looping)
+     * 
+ * + * uint32 pause_ms = 13; + */ + private void clearPauseMs() { + + pauseMs_ = 0; + } + + public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DisplayScrollingText parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DisplayScrollingText parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayScrollingText parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DisplayScrollingText prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DisplayScrollingText} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DisplayScrollingText, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayScrollingText) + mentraos.ble.MentraosBle.DisplayScrollingTextOrBuilder { + // Construct using mentraos.ble.MentraosBle.DisplayScrollingText.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * string text = 1; + * @return The text. + */ + @java.lang.Override + public java.lang.String getText() { + return instance.getText(); + } + /** + * string text = 1; + * @return The bytes for text. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTextBytes() { + return instance.getTextBytes(); + } + /** + * string text = 1; + * @param value The text to set. + * @return This builder for chaining. + */ + public Builder setText( + java.lang.String value) { + copyOnWrite(); + instance.setText(value); + return this; + } + /** + * string text = 1; + * @return This builder for chaining. + */ + public Builder clearText() { + copyOnWrite(); + instance.clearText(); + return this; + } + /** + * string text = 1; + * @param value The bytes for text to set. + * @return This builder for chaining. + */ + public Builder setTextBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setTextBytes(value); + return this; + } + + /** + * uint32 color = 2; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return instance.getColor(); + } + /** + * uint32 color = 2; + * @param value The color to set. + * @return This builder for chaining. + */ + public Builder setColor(int value) { + copyOnWrite(); + instance.setColor(value); + return this; + } + /** + * uint32 color = 2; + * @return This builder for chaining. + */ + public Builder clearColor() { + copyOnWrite(); + instance.clearColor(); + return this; + } + + /** + * uint32 font_code = 3; + * @return The fontCode. + */ + @java.lang.Override + public int getFontCode() { + return instance.getFontCode(); + } + /** + * uint32 font_code = 3; + * @param value The fontCode to set. + * @return This builder for chaining. + */ + public Builder setFontCode(int value) { + copyOnWrite(); + instance.setFontCode(value); + return this; + } + /** + * uint32 font_code = 3; + * @return This builder for chaining. + */ + public Builder clearFontCode() { + copyOnWrite(); + instance.clearFontCode(); + return this; + } + + /** + * uint32 x = 4; + * @return The x. + */ + @java.lang.Override + public int getX() { + return instance.getX(); + } + /** + * uint32 x = 4; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(int value) { + copyOnWrite(); + instance.setX(value); + return this; + } + /** + * uint32 x = 4; + * @return This builder for chaining. + */ + public Builder clearX() { + copyOnWrite(); + instance.clearX(); + return this; + } + + /** + * uint32 y = 5; + * @return The y. + */ + @java.lang.Override + public int getY() { + return instance.getY(); + } + /** + * uint32 y = 5; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(int value) { + copyOnWrite(); + instance.setY(value); + return this; + } + /** + * uint32 y = 5; + * @return This builder for chaining. + */ + public Builder clearY() { + copyOnWrite(); + instance.clearY(); + return this; + } + + /** + * uint32 width = 6; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return instance.getWidth(); + } + /** + * uint32 width = 6; + * @param value The width to set. + * @return This builder for chaining. + */ + public Builder setWidth(int value) { + copyOnWrite(); + instance.setWidth(value); + return this; + } + /** + * uint32 width = 6; + * @return This builder for chaining. + */ + public Builder clearWidth() { + copyOnWrite(); + instance.clearWidth(); + return this; + } + + /** + * uint32 height = 7; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return instance.getHeight(); + } + /** + * uint32 height = 7; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(int value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * uint32 height = 7; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @return The enum numeric value on the wire for align. + */ + @java.lang.Override + public int getAlignValue() { + return instance.getAlignValue(); + } + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @param value The align to set. + * @return This builder for chaining. + */ + public Builder setAlignValue(int value) { + copyOnWrite(); + instance.setAlignValue(value); + return this; + } + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @return The align. + */ + @java.lang.Override + public mentraos.ble.MentraosBle.DisplayScrollingText.Alignment getAlign() { + return instance.getAlign(); + } + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @param value The enum numeric value on the wire for align to set. + * @return This builder for chaining. + */ + public Builder setAlign(mentraos.ble.MentraosBle.DisplayScrollingText.Alignment value) { + copyOnWrite(); + instance.setAlign(value); + return this; + } + /** + * .mentraos.ble.DisplayScrollingText.Alignment align = 8; + * @return This builder for chaining. + */ + public Builder clearAlign() { + copyOnWrite(); + instance.clearAlign(); + return this; + } + + /** + *
+       * pixels between lines
+       * 
+ * + * uint32 line_spacing = 9; + * @return The lineSpacing. + */ + @java.lang.Override + public int getLineSpacing() { + return instance.getLineSpacing(); + } + /** + *
+       * pixels between lines
+       * 
+ * + * uint32 line_spacing = 9; + * @param value The lineSpacing to set. + * @return This builder for chaining. + */ + public Builder setLineSpacing(int value) { + copyOnWrite(); + instance.setLineSpacing(value); + return this; + } + /** + *
+       * pixels between lines
+       * 
+ * + * uint32 line_spacing = 9; + * @return This builder for chaining. + */ + public Builder clearLineSpacing() { + copyOnWrite(); + instance.clearLineSpacing(); + return this; + } + + /** + *
+       * pixels/sec scrolling up
+       * 
+ * + * uint32 speed = 10; + * @return The speed. + */ + @java.lang.Override + public int getSpeed() { + return instance.getSpeed(); + } + /** + *
+       * pixels/sec scrolling up
+       * 
+ * + * uint32 speed = 10; + * @param value The speed to set. + * @return This builder for chaining. + */ + public Builder setSpeed(int value) { + copyOnWrite(); + instance.setSpeed(value); + return this; + } + /** + *
+       * pixels/sec scrolling up
+       * 
+ * + * uint32 speed = 10; + * @return This builder for chaining. + */ + public Builder clearSpeed() { + copyOnWrite(); + instance.clearSpeed(); + return this; + } + + /** + *
+       * font size multiplier
+       * 
+ * + * uint32 size = 11; + * @return The size. + */ + @java.lang.Override + public int getSize() { + return instance.getSize(); + } + /** + *
+       * font size multiplier
+       * 
+ * + * uint32 size = 11; + * @param value The size to set. + * @return This builder for chaining. + */ + public Builder setSize(int value) { + copyOnWrite(); + instance.setSize(value); + return this; + } + /** + *
+       * font size multiplier
+       * 
+ * + * uint32 size = 11; + * @return This builder for chaining. + */ + public Builder clearSize() { + copyOnWrite(); + instance.clearSize(); + return this; + } + + /** + *
+       * wrap to top when finished
+       * 
+ * + * bool loop = 12; + * @return The loop. + */ + @java.lang.Override + public boolean getLoop() { + return instance.getLoop(); + } + /** + *
+       * wrap to top when finished
+       * 
+ * + * bool loop = 12; + * @param value The loop to set. + * @return This builder for chaining. + */ + public Builder setLoop(boolean value) { + copyOnWrite(); + instance.setLoop(value); + return this; + } + /** + *
+       * wrap to top when finished
+       * 
+ * + * bool loop = 12; + * @return This builder for chaining. + */ + public Builder clearLoop() { + copyOnWrite(); + instance.clearLoop(); + return this; + } + + /** + *
+       * delay before restart (if looping)
+       * 
+ * + * uint32 pause_ms = 13; + * @return The pauseMs. + */ + @java.lang.Override + public int getPauseMs() { + return instance.getPauseMs(); + } + /** + *
+       * delay before restart (if looping)
+       * 
+ * + * uint32 pause_ms = 13; + * @param value The pauseMs to set. + * @return This builder for chaining. + */ + public Builder setPauseMs(int value) { + copyOnWrite(); + instance.setPauseMs(value); + return this; + } + /** + *
+       * delay before restart (if looping)
+       * 
+ * + * uint32 pause_ms = 13; + * @return This builder for chaining. + */ + public Builder clearPauseMs() { + copyOnWrite(); + instance.clearPauseMs(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayScrollingText) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DisplayScrollingText(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "text_", + "color_", + "fontCode_", + "x_", + "y_", + "width_", + "height_", + "align_", + "lineSpacing_", + "speed_", + "size_", + "loop_", + "pauseMs_", + }; + java.lang.String info = + "\u0000\r\u0000\u0000\u0001\r\r\u0000\u0000\u0000\u0001\u0208\u0002\u000b\u0003\u000b" + + "\u0004\u000b\u0005\u000b\u0006\u000b\u0007\u000b\b\f\t\u000b\n\u000b\u000b\u000b" + + "\f\u0007\r\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DisplayScrollingText.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DisplayScrollingText) + private static final mentraos.ble.MentraosBle.DisplayScrollingText DEFAULT_INSTANCE; + static { + DisplayScrollingText defaultInstance = new DisplayScrollingText(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DisplayScrollingText.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DisplayScrollingText getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DisplayPowerConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DisplayPowerConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * true = turn on, false = turn off
+     * 
+ * + * bool on = 1; + * @return The on. + */ + boolean getOn(); + } + /** + * Protobuf type {@code mentraos.ble.DisplayPowerConfig} + */ + public static final class DisplayPowerConfig extends + com.google.protobuf.GeneratedMessageLite< + DisplayPowerConfig, DisplayPowerConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayPowerConfig) + DisplayPowerConfigOrBuilder { + private DisplayPowerConfig() { + } + public static final int ON_FIELD_NUMBER = 1; + private boolean on_; + /** + *
+     * true = turn on, false = turn off
+     * 
+ * + * bool on = 1; + * @return The on. + */ + @java.lang.Override + public boolean getOn() { + return on_; + } + /** + *
+     * true = turn on, false = turn off
+     * 
+ * + * bool on = 1; + * @param value The on to set. + */ + private void setOn(boolean value) { + + on_ = value; + } + /** + *
+     * true = turn on, false = turn off
+     * 
+ * + * bool on = 1; + */ + private void clearOn() { + + on_ = false; + } + + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayPowerConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DisplayPowerConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DisplayPowerConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DisplayPowerConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayPowerConfig) + mentraos.ble.MentraosBle.DisplayPowerConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.DisplayPowerConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * true = turn on, false = turn off
+       * 
+ * + * bool on = 1; + * @return The on. + */ + @java.lang.Override + public boolean getOn() { + return instance.getOn(); + } + /** + *
+       * true = turn on, false = turn off
+       * 
+ * + * bool on = 1; + * @param value The on to set. + * @return This builder for chaining. + */ + public Builder setOn(boolean value) { + copyOnWrite(); + instance.setOn(value); + return this; + } + /** + *
+       * true = turn on, false = turn off
+       * 
+ * + * bool on = 1; + * @return This builder for chaining. + */ + public Builder clearOn() { + copyOnWrite(); + instance.clearOn(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayPowerConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DisplayPowerConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "on_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0007"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DisplayPowerConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DisplayPowerConfig) + private static final mentraos.ble.MentraosBle.DisplayPowerConfig DEFAULT_INSTANCE; + static { + DisplayPowerConfig defaultInstance = new DisplayPowerConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DisplayPowerConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DisplayPowerConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface BrightnessConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.BrightnessConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * 0-100
+     * 
+ * + * uint32 value = 1; + * @return The value. + */ + int getValue(); + } + /** + * Protobuf type {@code mentraos.ble.BrightnessConfig} + */ + public static final class BrightnessConfig extends + com.google.protobuf.GeneratedMessageLite< + BrightnessConfig, BrightnessConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.BrightnessConfig) + BrightnessConfigOrBuilder { + private BrightnessConfig() { + } + public static final int VALUE_FIELD_NUMBER = 1; + private int value_; + /** + *
+     * 0-100
+     * 
+ * + * uint32 value = 1; + * @return The value. + */ + @java.lang.Override + public int getValue() { + return value_; + } + /** + *
+     * 0-100
+     * 
+ * + * uint32 value = 1; + * @param value The value to set. + */ + private void setValue(int value) { + + value_ = value; + } + /** + *
+     * 0-100
+     * 
+ * + * uint32 value = 1; + */ + private void clearValue() { + + value_ = 0; + } + + public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.BrightnessConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.BrightnessConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.BrightnessConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.BrightnessConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.BrightnessConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.BrightnessConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.BrightnessConfig) + mentraos.ble.MentraosBle.BrightnessConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.BrightnessConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * 0-100
+       * 
+ * + * uint32 value = 1; + * @return The value. + */ + @java.lang.Override + public int getValue() { + return instance.getValue(); + } + /** + *
+       * 0-100
+       * 
+ * + * uint32 value = 1; + * @param value The value to set. + * @return This builder for chaining. + */ + public Builder setValue(int value) { + copyOnWrite(); + instance.setValue(value); + return this; + } + /** + *
+       * 0-100
+       * 
+ * + * uint32 value = 1; + * @return This builder for chaining. + */ + public Builder clearValue() { + copyOnWrite(); + instance.clearValue(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.BrightnessConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.BrightnessConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "value_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.BrightnessConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.BrightnessConfig) + private static final mentraos.ble.MentraosBle.BrightnessConfig DEFAULT_INSTANCE; + static { + BrightnessConfig defaultInstance = new BrightnessConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + BrightnessConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.BrightnessConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface AutoBrightnessConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.AutoBrightnessConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bool enabled = 1; + * @return The enabled. + */ + boolean getEnabled(); + } + /** + * Protobuf type {@code mentraos.ble.AutoBrightnessConfig} + */ + public static final class AutoBrightnessConfig extends + com.google.protobuf.GeneratedMessageLite< + AutoBrightnessConfig, AutoBrightnessConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.AutoBrightnessConfig) + AutoBrightnessConfigOrBuilder { + private AutoBrightnessConfig() { + } + public static final int ENABLED_FIELD_NUMBER = 1; + private boolean enabled_; + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return enabled_; + } + /** + * bool enabled = 1; + * @param value The enabled to set. + */ + private void setEnabled(boolean value) { + + enabled_ = value; + } + /** + * bool enabled = 1; + */ + private void clearEnabled() { + + enabled_ = false; + } + + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.AutoBrightnessConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.AutoBrightnessConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.AutoBrightnessConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.AutoBrightnessConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.AutoBrightnessConfig) + mentraos.ble.MentraosBle.AutoBrightnessConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.AutoBrightnessConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return instance.getEnabled(); + } + /** + * bool enabled = 1; + * @param value The enabled to set. + * @return This builder for chaining. + */ + public Builder setEnabled(boolean value) { + copyOnWrite(); + instance.setEnabled(value); + return this; + } + /** + * bool enabled = 1; + * @return This builder for chaining. + */ + public Builder clearEnabled() { + copyOnWrite(); + instance.clearEnabled(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.AutoBrightnessConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.AutoBrightnessConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "enabled_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0007"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.AutoBrightnessConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.AutoBrightnessConfig) + private static final mentraos.ble.MentraosBle.AutoBrightnessConfig DEFAULT_INSTANCE; + static { + AutoBrightnessConfig defaultInstance = new AutoBrightnessConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + AutoBrightnessConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.AutoBrightnessConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface AutoBrightnessMultiplierOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.AutoBrightnessMultiplier) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * e.g., 0.8 = 80%
+     * 
+ * + * float multiplier = 1; + * @return The multiplier. + */ + float getMultiplier(); + } + /** + * Protobuf type {@code mentraos.ble.AutoBrightnessMultiplier} + */ + public static final class AutoBrightnessMultiplier extends + com.google.protobuf.GeneratedMessageLite< + AutoBrightnessMultiplier, AutoBrightnessMultiplier.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.AutoBrightnessMultiplier) + AutoBrightnessMultiplierOrBuilder { + private AutoBrightnessMultiplier() { + } + public static final int MULTIPLIER_FIELD_NUMBER = 1; + private float multiplier_; + /** + *
+     * e.g., 0.8 = 80%
+     * 
+ * + * float multiplier = 1; + * @return The multiplier. + */ + @java.lang.Override + public float getMultiplier() { + return multiplier_; + } + /** + *
+     * e.g., 0.8 = 80%
+     * 
+ * + * float multiplier = 1; + * @param value The multiplier to set. + */ + private void setMultiplier(float value) { + + multiplier_ = value; + } + /** + *
+     * e.g., 0.8 = 80%
+     * 
+ * + * float multiplier = 1; + */ + private void clearMultiplier() { + + multiplier_ = 0F; + } + + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.AutoBrightnessMultiplier prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.AutoBrightnessMultiplier} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.AutoBrightnessMultiplier, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.AutoBrightnessMultiplier) + mentraos.ble.MentraosBle.AutoBrightnessMultiplierOrBuilder { + // Construct using mentraos.ble.MentraosBle.AutoBrightnessMultiplier.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * e.g., 0.8 = 80%
+       * 
+ * + * float multiplier = 1; + * @return The multiplier. + */ + @java.lang.Override + public float getMultiplier() { + return instance.getMultiplier(); + } + /** + *
+       * e.g., 0.8 = 80%
+       * 
+ * + * float multiplier = 1; + * @param value The multiplier to set. + * @return This builder for chaining. + */ + public Builder setMultiplier(float value) { + copyOnWrite(); + instance.setMultiplier(value); + return this; + } + /** + *
+       * e.g., 0.8 = 80%
+       * 
+ * + * float multiplier = 1; + * @return This builder for chaining. + */ + public Builder clearMultiplier() { + copyOnWrite(); + instance.clearMultiplier(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.AutoBrightnessMultiplier) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.AutoBrightnessMultiplier(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "multiplier_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0001"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.AutoBrightnessMultiplier.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.AutoBrightnessMultiplier) + private static final mentraos.ble.MentraosBle.AutoBrightnessMultiplier DEFAULT_INSTANCE; + static { + AutoBrightnessMultiplier defaultInstance = new AutoBrightnessMultiplier(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + AutoBrightnessMultiplier.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.AutoBrightnessMultiplier getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DrawLineOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DrawLine) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 color = 1; + * @return The color. + */ + int getColor(); + + /** + * uint32 stroke = 2; + * @return The stroke. + */ + int getStroke(); + + /** + * uint32 x1 = 3; + * @return The x1. + */ + int getX1(); + + /** + * uint32 y1 = 4; + * @return The y1. + */ + int getY1(); + + /** + * uint32 x2 = 5; + * @return The x2. + */ + int getX2(); + + /** + * uint32 y2 = 6; + * @return The y2. + */ + int getY2(); + } + /** + * Protobuf type {@code mentraos.ble.DrawLine} + */ + public static final class DrawLine extends + com.google.protobuf.GeneratedMessageLite< + DrawLine, DrawLine.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DrawLine) + DrawLineOrBuilder { + private DrawLine() { + } + public static final int COLOR_FIELD_NUMBER = 1; + private int color_; + /** + * uint32 color = 1; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return color_; + } + /** + * uint32 color = 1; + * @param value The color to set. + */ + private void setColor(int value) { + + color_ = value; + } + /** + * uint32 color = 1; + */ + private void clearColor() { + + color_ = 0; + } + + public static final int STROKE_FIELD_NUMBER = 2; + private int stroke_; + /** + * uint32 stroke = 2; + * @return The stroke. + */ + @java.lang.Override + public int getStroke() { + return stroke_; + } + /** + * uint32 stroke = 2; + * @param value The stroke to set. + */ + private void setStroke(int value) { + + stroke_ = value; + } + /** + * uint32 stroke = 2; + */ + private void clearStroke() { + + stroke_ = 0; + } + + public static final int X1_FIELD_NUMBER = 3; + private int x1_; + /** + * uint32 x1 = 3; + * @return The x1. + */ + @java.lang.Override + public int getX1() { + return x1_; + } + /** + * uint32 x1 = 3; + * @param value The x1 to set. + */ + private void setX1(int value) { + + x1_ = value; + } + /** + * uint32 x1 = 3; + */ + private void clearX1() { + + x1_ = 0; + } + + public static final int Y1_FIELD_NUMBER = 4; + private int y1_; + /** + * uint32 y1 = 4; + * @return The y1. + */ + @java.lang.Override + public int getY1() { + return y1_; + } + /** + * uint32 y1 = 4; + * @param value The y1 to set. + */ + private void setY1(int value) { + + y1_ = value; + } + /** + * uint32 y1 = 4; + */ + private void clearY1() { + + y1_ = 0; + } + + public static final int X2_FIELD_NUMBER = 5; + private int x2_; + /** + * uint32 x2 = 5; + * @return The x2. + */ + @java.lang.Override + public int getX2() { + return x2_; + } + /** + * uint32 x2 = 5; + * @param value The x2 to set. + */ + private void setX2(int value) { + + x2_ = value; + } + /** + * uint32 x2 = 5; + */ + private void clearX2() { + + x2_ = 0; + } + + public static final int Y2_FIELD_NUMBER = 6; + private int y2_; + /** + * uint32 y2 = 6; + * @return The y2. + */ + @java.lang.Override + public int getY2() { + return y2_; + } + /** + * uint32 y2 = 6; + * @param value The y2 to set. + */ + private void setY2(int value) { + + y2_ = value; + } + /** + * uint32 y2 = 6; + */ + private void clearY2() { + + y2_ = 0; + } + + public static mentraos.ble.MentraosBle.DrawLine parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DrawLine parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawLine parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DrawLine parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawLine parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DrawLine parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawLine parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DrawLine parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DrawLine parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawLine parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DrawLine prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DrawLine} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DrawLine, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DrawLine) + mentraos.ble.MentraosBle.DrawLineOrBuilder { + // Construct using mentraos.ble.MentraosBle.DrawLine.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 color = 1; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return instance.getColor(); + } + /** + * uint32 color = 1; + * @param value The color to set. + * @return This builder for chaining. + */ + public Builder setColor(int value) { + copyOnWrite(); + instance.setColor(value); + return this; + } + /** + * uint32 color = 1; + * @return This builder for chaining. + */ + public Builder clearColor() { + copyOnWrite(); + instance.clearColor(); + return this; + } + + /** + * uint32 stroke = 2; + * @return The stroke. + */ + @java.lang.Override + public int getStroke() { + return instance.getStroke(); + } + /** + * uint32 stroke = 2; + * @param value The stroke to set. + * @return This builder for chaining. + */ + public Builder setStroke(int value) { + copyOnWrite(); + instance.setStroke(value); + return this; + } + /** + * uint32 stroke = 2; + * @return This builder for chaining. + */ + public Builder clearStroke() { + copyOnWrite(); + instance.clearStroke(); + return this; + } + + /** + * uint32 x1 = 3; + * @return The x1. + */ + @java.lang.Override + public int getX1() { + return instance.getX1(); + } + /** + * uint32 x1 = 3; + * @param value The x1 to set. + * @return This builder for chaining. + */ + public Builder setX1(int value) { + copyOnWrite(); + instance.setX1(value); + return this; + } + /** + * uint32 x1 = 3; + * @return This builder for chaining. + */ + public Builder clearX1() { + copyOnWrite(); + instance.clearX1(); + return this; + } + + /** + * uint32 y1 = 4; + * @return The y1. + */ + @java.lang.Override + public int getY1() { + return instance.getY1(); + } + /** + * uint32 y1 = 4; + * @param value The y1 to set. + * @return This builder for chaining. + */ + public Builder setY1(int value) { + copyOnWrite(); + instance.setY1(value); + return this; + } + /** + * uint32 y1 = 4; + * @return This builder for chaining. + */ + public Builder clearY1() { + copyOnWrite(); + instance.clearY1(); + return this; + } + + /** + * uint32 x2 = 5; + * @return The x2. + */ + @java.lang.Override + public int getX2() { + return instance.getX2(); + } + /** + * uint32 x2 = 5; + * @param value The x2 to set. + * @return This builder for chaining. + */ + public Builder setX2(int value) { + copyOnWrite(); + instance.setX2(value); + return this; + } + /** + * uint32 x2 = 5; + * @return This builder for chaining. + */ + public Builder clearX2() { + copyOnWrite(); + instance.clearX2(); + return this; + } + + /** + * uint32 y2 = 6; + * @return The y2. + */ + @java.lang.Override + public int getY2() { + return instance.getY2(); + } + /** + * uint32 y2 = 6; + * @param value The y2 to set. + * @return This builder for chaining. + */ + public Builder setY2(int value) { + copyOnWrite(); + instance.setY2(value); + return this; + } + /** + * uint32 y2 = 6; + * @return This builder for chaining. + */ + public Builder clearY2() { + copyOnWrite(); + instance.clearY2(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DrawLine) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DrawLine(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "color_", + "stroke_", + "x1_", + "y1_", + "x2_", + "y2_", + }; + java.lang.String info = + "\u0000\u0006\u0000\u0000\u0001\u0006\u0006\u0000\u0000\u0000\u0001\u000b\u0002\u000b" + + "\u0003\u000b\u0004\u000b\u0005\u000b\u0006\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DrawLine.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DrawLine) + private static final mentraos.ble.MentraosBle.DrawLine DEFAULT_INSTANCE; + static { + DrawLine defaultInstance = new DrawLine(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DrawLine.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DrawLine getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DrawRectOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DrawRect) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 color = 1; + * @return The color. + */ + int getColor(); + + /** + * uint32 stroke = 2; + * @return The stroke. + */ + int getStroke(); + + /** + * uint32 x = 3; + * @return The x. + */ + int getX(); + + /** + * uint32 y = 4; + * @return The y. + */ + int getY(); + + /** + * uint32 width = 5; + * @return The width. + */ + int getWidth(); + + /** + * uint32 height = 6; + * @return The height. + */ + int getHeight(); + } + /** + * Protobuf type {@code mentraos.ble.DrawRect} + */ + public static final class DrawRect extends + com.google.protobuf.GeneratedMessageLite< + DrawRect, DrawRect.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DrawRect) + DrawRectOrBuilder { + private DrawRect() { + } + public static final int COLOR_FIELD_NUMBER = 1; + private int color_; + /** + * uint32 color = 1; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return color_; + } + /** + * uint32 color = 1; + * @param value The color to set. + */ + private void setColor(int value) { + + color_ = value; + } + /** + * uint32 color = 1; + */ + private void clearColor() { + + color_ = 0; + } + + public static final int STROKE_FIELD_NUMBER = 2; + private int stroke_; + /** + * uint32 stroke = 2; + * @return The stroke. + */ + @java.lang.Override + public int getStroke() { + return stroke_; + } + /** + * uint32 stroke = 2; + * @param value The stroke to set. + */ + private void setStroke(int value) { + + stroke_ = value; + } + /** + * uint32 stroke = 2; + */ + private void clearStroke() { + + stroke_ = 0; + } + + public static final int X_FIELD_NUMBER = 3; + private int x_; + /** + * uint32 x = 3; + * @return The x. + */ + @java.lang.Override + public int getX() { + return x_; + } + /** + * uint32 x = 3; + * @param value The x to set. + */ + private void setX(int value) { + + x_ = value; + } + /** + * uint32 x = 3; + */ + private void clearX() { + + x_ = 0; + } + + public static final int Y_FIELD_NUMBER = 4; + private int y_; + /** + * uint32 y = 4; + * @return The y. + */ + @java.lang.Override + public int getY() { + return y_; + } + /** + * uint32 y = 4; + * @param value The y to set. + */ + private void setY(int value) { + + y_ = value; + } + /** + * uint32 y = 4; + */ + private void clearY() { + + y_ = 0; + } + + public static final int WIDTH_FIELD_NUMBER = 5; + private int width_; + /** + * uint32 width = 5; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return width_; + } + /** + * uint32 width = 5; + * @param value The width to set. + */ + private void setWidth(int value) { + + width_ = value; + } + /** + * uint32 width = 5; + */ + private void clearWidth() { + + width_ = 0; + } + + public static final int HEIGHT_FIELD_NUMBER = 6; + private int height_; + /** + * uint32 height = 6; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + /** + * uint32 height = 6; + * @param value The height to set. + */ + private void setHeight(int value) { + + height_ = value; + } + /** + * uint32 height = 6; + */ + private void clearHeight() { + + height_ = 0; + } + + public static mentraos.ble.MentraosBle.DrawRect parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DrawRect parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawRect parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DrawRect parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawRect parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DrawRect parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawRect parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DrawRect parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DrawRect parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawRect parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DrawRect prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DrawRect} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DrawRect, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DrawRect) + mentraos.ble.MentraosBle.DrawRectOrBuilder { + // Construct using mentraos.ble.MentraosBle.DrawRect.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 color = 1; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return instance.getColor(); + } + /** + * uint32 color = 1; + * @param value The color to set. + * @return This builder for chaining. + */ + public Builder setColor(int value) { + copyOnWrite(); + instance.setColor(value); + return this; + } + /** + * uint32 color = 1; + * @return This builder for chaining. + */ + public Builder clearColor() { + copyOnWrite(); + instance.clearColor(); + return this; + } + + /** + * uint32 stroke = 2; + * @return The stroke. + */ + @java.lang.Override + public int getStroke() { + return instance.getStroke(); + } + /** + * uint32 stroke = 2; + * @param value The stroke to set. + * @return This builder for chaining. + */ + public Builder setStroke(int value) { + copyOnWrite(); + instance.setStroke(value); + return this; + } + /** + * uint32 stroke = 2; + * @return This builder for chaining. + */ + public Builder clearStroke() { + copyOnWrite(); + instance.clearStroke(); + return this; + } + + /** + * uint32 x = 3; + * @return The x. + */ + @java.lang.Override + public int getX() { + return instance.getX(); + } + /** + * uint32 x = 3; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(int value) { + copyOnWrite(); + instance.setX(value); + return this; + } + /** + * uint32 x = 3; + * @return This builder for chaining. + */ + public Builder clearX() { + copyOnWrite(); + instance.clearX(); + return this; + } + + /** + * uint32 y = 4; + * @return The y. + */ + @java.lang.Override + public int getY() { + return instance.getY(); + } + /** + * uint32 y = 4; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(int value) { + copyOnWrite(); + instance.setY(value); + return this; + } + /** + * uint32 y = 4; + * @return This builder for chaining. + */ + public Builder clearY() { + copyOnWrite(); + instance.clearY(); + return this; + } + + /** + * uint32 width = 5; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return instance.getWidth(); + } + /** + * uint32 width = 5; + * @param value The width to set. + * @return This builder for chaining. + */ + public Builder setWidth(int value) { + copyOnWrite(); + instance.setWidth(value); + return this; + } + /** + * uint32 width = 5; + * @return This builder for chaining. + */ + public Builder clearWidth() { + copyOnWrite(); + instance.clearWidth(); + return this; + } + + /** + * uint32 height = 6; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return instance.getHeight(); + } + /** + * uint32 height = 6; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(int value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * uint32 height = 6; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DrawRect) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DrawRect(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "color_", + "stroke_", + "x_", + "y_", + "width_", + "height_", + }; + java.lang.String info = + "\u0000\u0006\u0000\u0000\u0001\u0006\u0006\u0000\u0000\u0000\u0001\u000b\u0002\u000b" + + "\u0003\u000b\u0004\u000b\u0005\u000b\u0006\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DrawRect.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DrawRect) + private static final mentraos.ble.MentraosBle.DrawRect DEFAULT_INSTANCE; + static { + DrawRect defaultInstance = new DrawRect(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DrawRect.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DrawRect getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DrawCircleOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DrawCircle) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 color = 1; + * @return The color. + */ + int getColor(); + + /** + * uint32 stroke = 2; + * @return The stroke. + */ + int getStroke(); + + /** + * uint32 x = 3; + * @return The x. + */ + int getX(); + + /** + * uint32 y = 4; + * @return The y. + */ + int getY(); + + /** + * uint32 radius = 5; + * @return The radius. + */ + int getRadius(); + } + /** + * Protobuf type {@code mentraos.ble.DrawCircle} + */ + public static final class DrawCircle extends + com.google.protobuf.GeneratedMessageLite< + DrawCircle, DrawCircle.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DrawCircle) + DrawCircleOrBuilder { + private DrawCircle() { + } + public static final int COLOR_FIELD_NUMBER = 1; + private int color_; + /** + * uint32 color = 1; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return color_; + } + /** + * uint32 color = 1; + * @param value The color to set. + */ + private void setColor(int value) { + + color_ = value; + } + /** + * uint32 color = 1; + */ + private void clearColor() { + + color_ = 0; + } + + public static final int STROKE_FIELD_NUMBER = 2; + private int stroke_; + /** + * uint32 stroke = 2; + * @return The stroke. + */ + @java.lang.Override + public int getStroke() { + return stroke_; + } + /** + * uint32 stroke = 2; + * @param value The stroke to set. + */ + private void setStroke(int value) { + + stroke_ = value; + } + /** + * uint32 stroke = 2; + */ + private void clearStroke() { + + stroke_ = 0; + } + + public static final int X_FIELD_NUMBER = 3; + private int x_; + /** + * uint32 x = 3; + * @return The x. + */ + @java.lang.Override + public int getX() { + return x_; + } + /** + * uint32 x = 3; + * @param value The x to set. + */ + private void setX(int value) { + + x_ = value; + } + /** + * uint32 x = 3; + */ + private void clearX() { + + x_ = 0; + } + + public static final int Y_FIELD_NUMBER = 4; + private int y_; + /** + * uint32 y = 4; + * @return The y. + */ + @java.lang.Override + public int getY() { + return y_; + } + /** + * uint32 y = 4; + * @param value The y to set. + */ + private void setY(int value) { + + y_ = value; + } + /** + * uint32 y = 4; + */ + private void clearY() { + + y_ = 0; + } + + public static final int RADIUS_FIELD_NUMBER = 5; + private int radius_; + /** + * uint32 radius = 5; + * @return The radius. + */ + @java.lang.Override + public int getRadius() { + return radius_; + } + /** + * uint32 radius = 5; + * @param value The radius to set. + */ + private void setRadius(int value) { + + radius_ = value; + } + /** + * uint32 radius = 5; + */ + private void clearRadius() { + + radius_ = 0; + } + + public static mentraos.ble.MentraosBle.DrawCircle parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DrawCircle parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawCircle parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DrawCircle parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawCircle parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DrawCircle parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawCircle parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DrawCircle parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DrawCircle parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DrawCircle parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DrawCircle prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DrawCircle} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DrawCircle, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DrawCircle) + mentraos.ble.MentraosBle.DrawCircleOrBuilder { + // Construct using mentraos.ble.MentraosBle.DrawCircle.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 color = 1; + * @return The color. + */ + @java.lang.Override + public int getColor() { + return instance.getColor(); + } + /** + * uint32 color = 1; + * @param value The color to set. + * @return This builder for chaining. + */ + public Builder setColor(int value) { + copyOnWrite(); + instance.setColor(value); + return this; + } + /** + * uint32 color = 1; + * @return This builder for chaining. + */ + public Builder clearColor() { + copyOnWrite(); + instance.clearColor(); + return this; + } + + /** + * uint32 stroke = 2; + * @return The stroke. + */ + @java.lang.Override + public int getStroke() { + return instance.getStroke(); + } + /** + * uint32 stroke = 2; + * @param value The stroke to set. + * @return This builder for chaining. + */ + public Builder setStroke(int value) { + copyOnWrite(); + instance.setStroke(value); + return this; + } + /** + * uint32 stroke = 2; + * @return This builder for chaining. + */ + public Builder clearStroke() { + copyOnWrite(); + instance.clearStroke(); + return this; + } + + /** + * uint32 x = 3; + * @return The x. + */ + @java.lang.Override + public int getX() { + return instance.getX(); + } + /** + * uint32 x = 3; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(int value) { + copyOnWrite(); + instance.setX(value); + return this; + } + /** + * uint32 x = 3; + * @return This builder for chaining. + */ + public Builder clearX() { + copyOnWrite(); + instance.clearX(); + return this; + } + + /** + * uint32 y = 4; + * @return The y. + */ + @java.lang.Override + public int getY() { + return instance.getY(); + } + /** + * uint32 y = 4; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(int value) { + copyOnWrite(); + instance.setY(value); + return this; + } + /** + * uint32 y = 4; + * @return This builder for chaining. + */ + public Builder clearY() { + copyOnWrite(); + instance.clearY(); + return this; + } + + /** + * uint32 radius = 5; + * @return The radius. + */ + @java.lang.Override + public int getRadius() { + return instance.getRadius(); + } + /** + * uint32 radius = 5; + * @param value The radius to set. + * @return This builder for chaining. + */ + public Builder setRadius(int value) { + copyOnWrite(); + instance.setRadius(value); + return this; + } + /** + * uint32 radius = 5; + * @return This builder for chaining. + */ + public Builder clearRadius() { + copyOnWrite(); + instance.clearRadius(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DrawCircle) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DrawCircle(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "color_", + "stroke_", + "x_", + "y_", + "radius_", + }; + java.lang.String info = + "\u0000\u0005\u0000\u0000\u0001\u0005\u0005\u0000\u0000\u0000\u0001\u000b\u0002\u000b" + + "\u0003\u000b\u0004\u000b\u0005\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DrawCircle.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DrawCircle) + private static final mentraos.ble.MentraosBle.DrawCircle DEFAULT_INSTANCE; + static { + DrawCircle defaultInstance = new DrawCircle(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DrawCircle.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DrawCircle getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface CommitDisplayOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.CommitDisplay) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code mentraos.ble.CommitDisplay} + */ + public static final class CommitDisplay extends + com.google.protobuf.GeneratedMessageLite< + CommitDisplay, CommitDisplay.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.CommitDisplay) + CommitDisplayOrBuilder { + private CommitDisplay() { + } + public static mentraos.ble.MentraosBle.CommitDisplay parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.CommitDisplay parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.CommitDisplay parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.CommitDisplay parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.CommitDisplay parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.CommitDisplay parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.CommitDisplay parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.CommitDisplay parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.CommitDisplay parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.CommitDisplay parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.CommitDisplay prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.CommitDisplay} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.CommitDisplay, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.CommitDisplay) + mentraos.ble.MentraosBle.CommitDisplayOrBuilder { + // Construct using mentraos.ble.MentraosBle.CommitDisplay.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:mentraos.ble.CommitDisplay) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.CommitDisplay(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.CommitDisplay.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.CommitDisplay) + private static final mentraos.ble.MentraosBle.CommitDisplay DEFAULT_INSTANCE; + static { + CommitDisplay defaultInstance = new CommitDisplay(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + CommitDisplay.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.CommitDisplay getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DisplayDistanceConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DisplayDistanceConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 distance_cm = 1; + * @return The distanceCm. + */ + int getDistanceCm(); + } + /** + * Protobuf type {@code mentraos.ble.DisplayDistanceConfig} + */ + public static final class DisplayDistanceConfig extends + com.google.protobuf.GeneratedMessageLite< + DisplayDistanceConfig, DisplayDistanceConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayDistanceConfig) + DisplayDistanceConfigOrBuilder { + private DisplayDistanceConfig() { + } + public static final int DISTANCE_CM_FIELD_NUMBER = 1; + private int distanceCm_; + /** + * uint32 distance_cm = 1; + * @return The distanceCm. + */ + @java.lang.Override + public int getDistanceCm() { + return distanceCm_; + } + /** + * uint32 distance_cm = 1; + * @param value The distanceCm to set. + */ + private void setDistanceCm(int value) { + + distanceCm_ = value; + } + /** + * uint32 distance_cm = 1; + */ + private void clearDistanceCm() { + + distanceCm_ = 0; + } + + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayDistanceConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DisplayDistanceConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DisplayDistanceConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DisplayDistanceConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayDistanceConfig) + mentraos.ble.MentraosBle.DisplayDistanceConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.DisplayDistanceConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 distance_cm = 1; + * @return The distanceCm. + */ + @java.lang.Override + public int getDistanceCm() { + return instance.getDistanceCm(); + } + /** + * uint32 distance_cm = 1; + * @param value The distanceCm to set. + * @return This builder for chaining. + */ + public Builder setDistanceCm(int value) { + copyOnWrite(); + instance.setDistanceCm(value); + return this; + } + /** + * uint32 distance_cm = 1; + * @return This builder for chaining. + */ + public Builder clearDistanceCm() { + copyOnWrite(); + instance.clearDistanceCm(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayDistanceConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DisplayDistanceConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "distanceCm_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u000b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DisplayDistanceConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DisplayDistanceConfig) + private static final mentraos.ble.MentraosBle.DisplayDistanceConfig DEFAULT_INSTANCE; + static { + DisplayDistanceConfig defaultInstance = new DisplayDistanceConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DisplayDistanceConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DisplayDistanceConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DisplayHeightConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.DisplayHeightConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 height = 1; + * @return The height. + */ + int getHeight(); + + /** + * uint32 depth = 2; + * @return The depth. + */ + int getDepth(); + } + /** + * Protobuf type {@code mentraos.ble.DisplayHeightConfig} + */ + public static final class DisplayHeightConfig extends + com.google.protobuf.GeneratedMessageLite< + DisplayHeightConfig, DisplayHeightConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.DisplayHeightConfig) + DisplayHeightConfigOrBuilder { + private DisplayHeightConfig() { + } + public static final int HEIGHT_FIELD_NUMBER = 1; + private int height_; + /** + * uint32 height = 1; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + /** + * uint32 height = 1; + * @param value The height to set. + */ + private void setHeight(int value) { + + height_ = value; + } + /** + * uint32 height = 1; + */ + private void clearHeight() { + + height_ = 0; + } + + public static final int DEPTH_FIELD_NUMBER = 2; + private int depth_; + /** + * uint32 depth = 2; + * @return The depth. + */ + @java.lang.Override + public int getDepth() { + return depth_; + } + /** + * uint32 depth = 2; + * @param value The depth to set. + */ + private void setDepth(int value) { + + depth_ = value; + } + /** + * uint32 depth = 2; + */ + private void clearDepth() { + + depth_ = 0; + } + + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.DisplayHeightConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.DisplayHeightConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.DisplayHeightConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.DisplayHeightConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.DisplayHeightConfig) + mentraos.ble.MentraosBle.DisplayHeightConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.DisplayHeightConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 height = 1; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return instance.getHeight(); + } + /** + * uint32 height = 1; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(int value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * uint32 height = 1; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + /** + * uint32 depth = 2; + * @return The depth. + */ + @java.lang.Override + public int getDepth() { + return instance.getDepth(); + } + /** + * uint32 depth = 2; + * @param value The depth to set. + * @return This builder for chaining. + */ + public Builder setDepth(int value) { + copyOnWrite(); + instance.setDepth(value); + return this; + } + /** + * uint32 depth = 2; + * @return This builder for chaining. + */ + public Builder clearDepth() { + copyOnWrite(); + instance.clearDepth(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.DisplayHeightConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.DisplayHeightConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "height_", + "depth_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u000b\u0002\u000b" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.DisplayHeightConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.DisplayHeightConfig) + private static final mentraos.ble.MentraosBle.DisplayHeightConfig DEFAULT_INSTANCE; + static { + DisplayHeightConfig defaultInstance = new DisplayHeightConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + DisplayHeightConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.DisplayHeightConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ImageTransferCompleteOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.ImageTransferComplete) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * string stream_id = 1; + * @return The streamId. + */ + java.lang.String getStreamId(); + /** + * string stream_id = 1; + * @return The bytes for streamId. + */ + com.google.protobuf.ByteString + getStreamIdBytes(); + + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @return The enum numeric value on the wire for status. + */ + int getStatusValue(); + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @return The status. + */ + mentraos.ble.MentraosBle.ImageTransferComplete.Status getStatus(); + + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + * @return A list containing the missingChunks. + */ + java.util.List getMissingChunksList(); + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + * @return The count of missingChunks. + */ + int getMissingChunksCount(); + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + * @param index The index of the element to return. + * @return The missingChunks at the given index. + */ + int getMissingChunks(int index); + } + /** + * Protobuf type {@code mentraos.ble.ImageTransferComplete} + */ + public static final class ImageTransferComplete extends + com.google.protobuf.GeneratedMessageLite< + ImageTransferComplete, ImageTransferComplete.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.ImageTransferComplete) + ImageTransferCompleteOrBuilder { + private ImageTransferComplete() { + streamId_ = ""; + missingChunks_ = emptyIntList(); + } + /** + * Protobuf enum {@code mentraos.ble.ImageTransferComplete.Status} + */ + public enum Status + implements com.google.protobuf.Internal.EnumLite { + /** + * OK = 0; + */ + OK(0), + /** + * INCOMPLETE = 1; + */ + INCOMPLETE(1), + UNRECOGNIZED(-1), + ; + + /** + * OK = 0; + */ + public static final int OK_VALUE = 0; + /** + * INCOMPLETE = 1; + */ + public static final int INCOMPLETE_VALUE = 1; + + + @java.lang.Override + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Status valueOf(int value) { + return forNumber(value); + } + + public static Status forNumber(int value) { + switch (value) { + case 0: return OK; + case 1: return INCOMPLETE; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Status> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + @java.lang.Override + public Status findValueByNumber(int number) { + return Status.forNumber(number); + } + }; + + public static com.google.protobuf.Internal.EnumVerifier + internalGetVerifier() { + return StatusVerifier.INSTANCE; + } + + private static final class StatusVerifier implements + com.google.protobuf.Internal.EnumVerifier { + static final com.google.protobuf.Internal.EnumVerifier INSTANCE = new StatusVerifier(); + @java.lang.Override + public boolean isInRange(int number) { + return Status.forNumber(number) != null; + } + }; + + private final int value; + + private Status(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:mentraos.ble.ImageTransferComplete.Status) + } + + public static final int STREAM_ID_FIELD_NUMBER = 1; + private java.lang.String streamId_; + /** + * string stream_id = 1; + * @return The streamId. + */ + @java.lang.Override + public java.lang.String getStreamId() { + return streamId_; + } + /** + * string stream_id = 1; + * @return The bytes for streamId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getStreamIdBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(streamId_); + } + /** + * string stream_id = 1; + * @param value The streamId to set. + */ + private void setStreamId( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + streamId_ = value; + } + /** + * string stream_id = 1; + */ + private void clearStreamId() { + + streamId_ = getDefaultInstance().getStreamId(); + } + /** + * string stream_id = 1; + * @param value The bytes for streamId to set. + */ + private void setStreamIdBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + streamId_ = value.toStringUtf8(); + + } + + public static final int STATUS_FIELD_NUMBER = 2; + private int status_; + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @return The enum numeric value on the wire for status. + */ + @java.lang.Override + public int getStatusValue() { + return status_; + } + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @return The status. + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImageTransferComplete.Status getStatus() { + mentraos.ble.MentraosBle.ImageTransferComplete.Status result = mentraos.ble.MentraosBle.ImageTransferComplete.Status.forNumber(status_); + return result == null ? mentraos.ble.MentraosBle.ImageTransferComplete.Status.UNRECOGNIZED : result; + } + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @param value The enum numeric value on the wire for status to set. + */ + private void setStatusValue(int value) { + status_ = value; + } + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @param value The status to set. + */ + private void setStatus(mentraos.ble.MentraosBle.ImageTransferComplete.Status value) { + status_ = value.getNumber(); + + } + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + */ + private void clearStatus() { + + status_ = 0; + } + + public static final int MISSING_CHUNKS_FIELD_NUMBER = 3; + private com.google.protobuf.Internal.IntList missingChunks_; + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + * @return A list containing the missingChunks. + */ + @java.lang.Override + public java.util.List + getMissingChunksList() { + return missingChunks_; + } + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + * @return The count of missingChunks. + */ + @java.lang.Override + public int getMissingChunksCount() { + return missingChunks_.size(); + } + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + * @param index The index of the element to return. + * @return The missingChunks at the given index. + */ + @java.lang.Override + public int getMissingChunks(int index) { + return missingChunks_.getInt(index); + } + private int missingChunksMemoizedSerializedSize = -1; + private void ensureMissingChunksIsMutable() { + com.google.protobuf.Internal.IntList tmp = missingChunks_; + if (!tmp.isModifiable()) { + missingChunks_ = + com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp); + } + } + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + * @param index The index to set the value at. + * @param value The missingChunks to set. + */ + private void setMissingChunks( + int index, int value) { + ensureMissingChunksIsMutable(); + missingChunks_.setInt(index, value); + } + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + * @param value The missingChunks to add. + */ + private void addMissingChunks(int value) { + ensureMissingChunksIsMutable(); + missingChunks_.addInt(value); + } + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + * @param values The missingChunks to add. + */ + private void addAllMissingChunks( + java.lang.Iterable values) { + ensureMissingChunksIsMutable(); + com.google.protobuf.AbstractMessageLite.addAll( + values, missingChunks_); + } + /** + *
+     * List of missing chunk indices
+     * 
+ * + * repeated uint32 missing_chunks = 3; + */ + private void clearMissingChunks() { + missingChunks_ = emptyIntList(); + } + + public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.ImageTransferComplete parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.ImageTransferComplete parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImageTransferComplete parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.ImageTransferComplete prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.ImageTransferComplete} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.ImageTransferComplete, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.ImageTransferComplete) + mentraos.ble.MentraosBle.ImageTransferCompleteOrBuilder { + // Construct using mentraos.ble.MentraosBle.ImageTransferComplete.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * string stream_id = 1; + * @return The streamId. + */ + @java.lang.Override + public java.lang.String getStreamId() { + return instance.getStreamId(); + } + /** + * string stream_id = 1; + * @return The bytes for streamId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getStreamIdBytes() { + return instance.getStreamIdBytes(); + } + /** + * string stream_id = 1; + * @param value The streamId to set. + * @return This builder for chaining. + */ + public Builder setStreamId( + java.lang.String value) { + copyOnWrite(); + instance.setStreamId(value); + return this; + } + /** + * string stream_id = 1; + * @return This builder for chaining. + */ + public Builder clearStreamId() { + copyOnWrite(); + instance.clearStreamId(); + return this; + } + /** + * string stream_id = 1; + * @param value The bytes for streamId to set. + * @return This builder for chaining. + */ + public Builder setStreamIdBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setStreamIdBytes(value); + return this; + } + + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @return The enum numeric value on the wire for status. + */ + @java.lang.Override + public int getStatusValue() { + return instance.getStatusValue(); + } + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @param value The status to set. + * @return This builder for chaining. + */ + public Builder setStatusValue(int value) { + copyOnWrite(); + instance.setStatusValue(value); + return this; + } + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @return The status. + */ + @java.lang.Override + public mentraos.ble.MentraosBle.ImageTransferComplete.Status getStatus() { + return instance.getStatus(); + } + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @param value The enum numeric value on the wire for status to set. + * @return This builder for chaining. + */ + public Builder setStatus(mentraos.ble.MentraosBle.ImageTransferComplete.Status value) { + copyOnWrite(); + instance.setStatus(value); + return this; + } + /** + * .mentraos.ble.ImageTransferComplete.Status status = 2; + * @return This builder for chaining. + */ + public Builder clearStatus() { + copyOnWrite(); + instance.clearStatus(); + return this; + } + + /** + *
+       * List of missing chunk indices
+       * 
+ * + * repeated uint32 missing_chunks = 3; + * @return A list containing the missingChunks. + */ + @java.lang.Override + public java.util.List + getMissingChunksList() { + return java.util.Collections.unmodifiableList( + instance.getMissingChunksList()); + } + /** + *
+       * List of missing chunk indices
+       * 
+ * + * repeated uint32 missing_chunks = 3; + * @return The count of missingChunks. + */ + @java.lang.Override + public int getMissingChunksCount() { + return instance.getMissingChunksCount(); + } + /** + *
+       * List of missing chunk indices
+       * 
+ * + * repeated uint32 missing_chunks = 3; + * @param index The index of the element to return. + * @return The missingChunks at the given index. + */ + @java.lang.Override + public int getMissingChunks(int index) { + return instance.getMissingChunks(index); + } + /** + *
+       * List of missing chunk indices
+       * 
+ * + * repeated uint32 missing_chunks = 3; + * @param value The missingChunks to set. + * @return This builder for chaining. + */ + public Builder setMissingChunks( + int index, int value) { + copyOnWrite(); + instance.setMissingChunks(index, value); + return this; + } + /** + *
+       * List of missing chunk indices
+       * 
+ * + * repeated uint32 missing_chunks = 3; + * @param value The missingChunks to add. + * @return This builder for chaining. + */ + public Builder addMissingChunks(int value) { + copyOnWrite(); + instance.addMissingChunks(value); + return this; + } + /** + *
+       * List of missing chunk indices
+       * 
+ * + * repeated uint32 missing_chunks = 3; + * @param values The missingChunks to add. + * @return This builder for chaining. + */ + public Builder addAllMissingChunks( + java.lang.Iterable values) { + copyOnWrite(); + instance.addAllMissingChunks(values); + return this; + } + /** + *
+       * List of missing chunk indices
+       * 
+ * + * repeated uint32 missing_chunks = 3; + * @return This builder for chaining. + */ + public Builder clearMissingChunks() { + copyOnWrite(); + instance.clearMissingChunks(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.ImageTransferComplete) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.ImageTransferComplete(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "streamId_", + "status_", + "missingChunks_", + }; + java.lang.String info = + "\u0000\u0003\u0000\u0000\u0001\u0003\u0003\u0000\u0001\u0000\u0001\u0208\u0002\f" + + "\u0003+"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.ImageTransferComplete.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.ImageTransferComplete) + private static final mentraos.ble.MentraosBle.ImageTransferComplete DEFAULT_INSTANCE; + static { + ImageTransferComplete defaultInstance = new ImageTransferComplete(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ImageTransferComplete.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.ImageTransferComplete getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ImuEnabledConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.ImuEnabledConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bool enabled = 1; + * @return The enabled. + */ + boolean getEnabled(); + } + /** + * Protobuf type {@code mentraos.ble.ImuEnabledConfig} + */ + public static final class ImuEnabledConfig extends + com.google.protobuf.GeneratedMessageLite< + ImuEnabledConfig, ImuEnabledConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.ImuEnabledConfig) + ImuEnabledConfigOrBuilder { + private ImuEnabledConfig() { + } + public static final int ENABLED_FIELD_NUMBER = 1; + private boolean enabled_; + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return enabled_; + } + /** + * bool enabled = 1; + * @param value The enabled to set. + */ + private void setEnabled(boolean value) { + + enabled_ = value; + } + /** + * bool enabled = 1; + */ + private void clearEnabled() { + + enabled_ = false; + } + + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuEnabledConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.ImuEnabledConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.ImuEnabledConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.ImuEnabledConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.ImuEnabledConfig) + mentraos.ble.MentraosBle.ImuEnabledConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.ImuEnabledConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return instance.getEnabled(); + } + /** + * bool enabled = 1; + * @param value The enabled to set. + * @return This builder for chaining. + */ + public Builder setEnabled(boolean value) { + copyOnWrite(); + instance.setEnabled(value); + return this; + } + /** + * bool enabled = 1; + * @return This builder for chaining. + */ + public Builder clearEnabled() { + copyOnWrite(); + instance.clearEnabled(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.ImuEnabledConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.ImuEnabledConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "enabled_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0007"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.ImuEnabledConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.ImuEnabledConfig) + private static final mentraos.ble.MentraosBle.ImuEnabledConfig DEFAULT_INSTANCE; + static { + ImuEnabledConfig defaultInstance = new ImuEnabledConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ImuEnabledConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.ImuEnabledConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ImuSingleRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.ImuSingleRequest) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code mentraos.ble.ImuSingleRequest} + */ + public static final class ImuSingleRequest extends + com.google.protobuf.GeneratedMessageLite< + ImuSingleRequest, ImuSingleRequest.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.ImuSingleRequest) + ImuSingleRequestOrBuilder { + private ImuSingleRequest() { + } + public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.ImuSingleRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.ImuSingleRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuSingleRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.ImuSingleRequest prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.ImuSingleRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.ImuSingleRequest, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.ImuSingleRequest) + mentraos.ble.MentraosBle.ImuSingleRequestOrBuilder { + // Construct using mentraos.ble.MentraosBle.ImuSingleRequest.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:mentraos.ble.ImuSingleRequest) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.ImuSingleRequest(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.ImuSingleRequest.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.ImuSingleRequest) + private static final mentraos.ble.MentraosBle.ImuSingleRequest DEFAULT_INSTANCE; + static { + ImuSingleRequest defaultInstance = new ImuSingleRequest(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ImuSingleRequest.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.ImuSingleRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ImuStreamConfigOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.ImuStreamConfig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bool enabled = 1; + * @return The enabled. + */ + boolean getEnabled(); + } + /** + * Protobuf type {@code mentraos.ble.ImuStreamConfig} + */ + public static final class ImuStreamConfig extends + com.google.protobuf.GeneratedMessageLite< + ImuStreamConfig, ImuStreamConfig.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.ImuStreamConfig) + ImuStreamConfigOrBuilder { + private ImuStreamConfig() { + } + public static final int ENABLED_FIELD_NUMBER = 1; + private boolean enabled_; + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return enabled_; + } + /** + * bool enabled = 1; + * @param value The enabled to set. + */ + private void setEnabled(boolean value) { + + enabled_ = value; + } + /** + * bool enabled = 1; + */ + private void clearEnabled() { + + enabled_ = false; + } + + public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.ImuStreamConfig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.ImuStreamConfig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuStreamConfig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.ImuStreamConfig prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.ImuStreamConfig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.ImuStreamConfig, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.ImuStreamConfig) + mentraos.ble.MentraosBle.ImuStreamConfigOrBuilder { + // Construct using mentraos.ble.MentraosBle.ImuStreamConfig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bool enabled = 1; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return instance.getEnabled(); + } + /** + * bool enabled = 1; + * @param value The enabled to set. + * @return This builder for chaining. + */ + public Builder setEnabled(boolean value) { + copyOnWrite(); + instance.setEnabled(value); + return this; + } + /** + * bool enabled = 1; + * @return This builder for chaining. + */ + public Builder clearEnabled() { + copyOnWrite(); + instance.clearEnabled(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.ImuStreamConfig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.ImuStreamConfig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "enabled_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0007"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.ImuStreamConfig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.ImuStreamConfig) + private static final mentraos.ble.MentraosBle.ImuStreamConfig DEFAULT_INSTANCE; + static { + ImuStreamConfig defaultInstance = new ImuStreamConfig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ImuStreamConfig.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.ImuStreamConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ImuDataOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.ImuData) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .mentraos.ble.Vector3 accel = 1; + * @return Whether the accel field is set. + */ + boolean hasAccel(); + /** + * .mentraos.ble.Vector3 accel = 1; + * @return The accel. + */ + mentraos.ble.MentraosBle.Vector3 getAccel(); + + /** + * .mentraos.ble.Vector3 gyro = 2; + * @return Whether the gyro field is set. + */ + boolean hasGyro(); + /** + * .mentraos.ble.Vector3 gyro = 2; + * @return The gyro. + */ + mentraos.ble.MentraosBle.Vector3 getGyro(); + + /** + * .mentraos.ble.Vector3 mag = 3; + * @return Whether the mag field is set. + */ + boolean hasMag(); + /** + * .mentraos.ble.Vector3 mag = 3; + * @return The mag. + */ + mentraos.ble.MentraosBle.Vector3 getMag(); + } + /** + * Protobuf type {@code mentraos.ble.ImuData} + */ + public static final class ImuData extends + com.google.protobuf.GeneratedMessageLite< + ImuData, ImuData.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.ImuData) + ImuDataOrBuilder { + private ImuData() { + } + private int bitField0_; + public static final int ACCEL_FIELD_NUMBER = 1; + private mentraos.ble.MentraosBle.Vector3 accel_; + /** + * .mentraos.ble.Vector3 accel = 1; + */ + @java.lang.Override + public boolean hasAccel() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .mentraos.ble.Vector3 accel = 1; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.Vector3 getAccel() { + return accel_ == null ? mentraos.ble.MentraosBle.Vector3.getDefaultInstance() : accel_; + } + /** + * .mentraos.ble.Vector3 accel = 1; + */ + private void setAccel(mentraos.ble.MentraosBle.Vector3 value) { + value.getClass(); + accel_ = value; + bitField0_ |= 0x00000001; + } + /** + * .mentraos.ble.Vector3 accel = 1; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeAccel(mentraos.ble.MentraosBle.Vector3 value) { + value.getClass(); + if (accel_ != null && + accel_ != mentraos.ble.MentraosBle.Vector3.getDefaultInstance()) { + accel_ = + mentraos.ble.MentraosBle.Vector3.newBuilder(accel_).mergeFrom(value).buildPartial(); + } else { + accel_ = value; + } + bitField0_ |= 0x00000001; + } + /** + * .mentraos.ble.Vector3 accel = 1; + */ + private void clearAccel() { accel_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + } + + public static final int GYRO_FIELD_NUMBER = 2; + private mentraos.ble.MentraosBle.Vector3 gyro_; + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + @java.lang.Override + public boolean hasGyro() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.Vector3 getGyro() { + return gyro_ == null ? mentraos.ble.MentraosBle.Vector3.getDefaultInstance() : gyro_; + } + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + private void setGyro(mentraos.ble.MentraosBle.Vector3 value) { + value.getClass(); + gyro_ = value; + bitField0_ |= 0x00000002; + } + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeGyro(mentraos.ble.MentraosBle.Vector3 value) { + value.getClass(); + if (gyro_ != null && + gyro_ != mentraos.ble.MentraosBle.Vector3.getDefaultInstance()) { + gyro_ = + mentraos.ble.MentraosBle.Vector3.newBuilder(gyro_).mergeFrom(value).buildPartial(); + } else { + gyro_ = value; + } + bitField0_ |= 0x00000002; + } + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + private void clearGyro() { gyro_ = null; + bitField0_ = (bitField0_ & ~0x00000002); + } + + public static final int MAG_FIELD_NUMBER = 3; + private mentraos.ble.MentraosBle.Vector3 mag_; + /** + * .mentraos.ble.Vector3 mag = 3; + */ + @java.lang.Override + public boolean hasMag() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * .mentraos.ble.Vector3 mag = 3; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.Vector3 getMag() { + return mag_ == null ? mentraos.ble.MentraosBle.Vector3.getDefaultInstance() : mag_; + } + /** + * .mentraos.ble.Vector3 mag = 3; + */ + private void setMag(mentraos.ble.MentraosBle.Vector3 value) { + value.getClass(); + mag_ = value; + bitField0_ |= 0x00000004; + } + /** + * .mentraos.ble.Vector3 mag = 3; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeMag(mentraos.ble.MentraosBle.Vector3 value) { + value.getClass(); + if (mag_ != null && + mag_ != mentraos.ble.MentraosBle.Vector3.getDefaultInstance()) { + mag_ = + mentraos.ble.MentraosBle.Vector3.newBuilder(mag_).mergeFrom(value).buildPartial(); + } else { + mag_ = value; + } + bitField0_ |= 0x00000004; + } + /** + * .mentraos.ble.Vector3 mag = 3; + */ + private void clearMag() { mag_ = null; + bitField0_ = (bitField0_ & ~0x00000004); + } + + public static mentraos.ble.MentraosBle.ImuData parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuData parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.ImuData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.ImuData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.ImuData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.ImuData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.ImuData prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.ImuData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.ImuData, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.ImuData) + mentraos.ble.MentraosBle.ImuDataOrBuilder { + // Construct using mentraos.ble.MentraosBle.ImuData.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .mentraos.ble.Vector3 accel = 1; + */ + @java.lang.Override + public boolean hasAccel() { + return instance.hasAccel(); + } + /** + * .mentraos.ble.Vector3 accel = 1; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.Vector3 getAccel() { + return instance.getAccel(); + } + /** + * .mentraos.ble.Vector3 accel = 1; + */ + public Builder setAccel(mentraos.ble.MentraosBle.Vector3 value) { + copyOnWrite(); + instance.setAccel(value); + return this; + } + /** + * .mentraos.ble.Vector3 accel = 1; + */ + public Builder setAccel( + mentraos.ble.MentraosBle.Vector3.Builder builderForValue) { + copyOnWrite(); + instance.setAccel(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.Vector3 accel = 1; + */ + public Builder mergeAccel(mentraos.ble.MentraosBle.Vector3 value) { + copyOnWrite(); + instance.mergeAccel(value); + return this; + } + /** + * .mentraos.ble.Vector3 accel = 1; + */ + public Builder clearAccel() { copyOnWrite(); + instance.clearAccel(); + return this; + } + + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + @java.lang.Override + public boolean hasGyro() { + return instance.hasGyro(); + } + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.Vector3 getGyro() { + return instance.getGyro(); + } + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + public Builder setGyro(mentraos.ble.MentraosBle.Vector3 value) { + copyOnWrite(); + instance.setGyro(value); + return this; + } + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + public Builder setGyro( + mentraos.ble.MentraosBle.Vector3.Builder builderForValue) { + copyOnWrite(); + instance.setGyro(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + public Builder mergeGyro(mentraos.ble.MentraosBle.Vector3 value) { + copyOnWrite(); + instance.mergeGyro(value); + return this; + } + /** + * .mentraos.ble.Vector3 gyro = 2; + */ + public Builder clearGyro() { copyOnWrite(); + instance.clearGyro(); + return this; + } + + /** + * .mentraos.ble.Vector3 mag = 3; + */ + @java.lang.Override + public boolean hasMag() { + return instance.hasMag(); + } + /** + * .mentraos.ble.Vector3 mag = 3; + */ + @java.lang.Override + public mentraos.ble.MentraosBle.Vector3 getMag() { + return instance.getMag(); + } + /** + * .mentraos.ble.Vector3 mag = 3; + */ + public Builder setMag(mentraos.ble.MentraosBle.Vector3 value) { + copyOnWrite(); + instance.setMag(value); + return this; + } + /** + * .mentraos.ble.Vector3 mag = 3; + */ + public Builder setMag( + mentraos.ble.MentraosBle.Vector3.Builder builderForValue) { + copyOnWrite(); + instance.setMag(builderForValue.build()); + return this; + } + /** + * .mentraos.ble.Vector3 mag = 3; + */ + public Builder mergeMag(mentraos.ble.MentraosBle.Vector3 value) { + copyOnWrite(); + instance.mergeMag(value); + return this; + } + /** + * .mentraos.ble.Vector3 mag = 3; + */ + public Builder clearMag() { copyOnWrite(); + instance.clearMag(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.ImuData) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.ImuData(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "bitField0_", + "accel_", + "gyro_", + "mag_", + }; + java.lang.String info = + "\u0000\u0003\u0000\u0001\u0001\u0003\u0003\u0000\u0000\u0000\u0001\u1009\u0000\u0002" + + "\u1009\u0001\u0003\u1009\u0002"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.ImuData.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.ImuData) + private static final mentraos.ble.MentraosBle.ImuData DEFAULT_INSTANCE; + static { + ImuData defaultInstance = new ImuData(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ImuData.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.ImuData getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface Vector3OrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.Vector3) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * float x = 1; + * @return The x. + */ + float getX(); + + /** + * float y = 2; + * @return The y. + */ + float getY(); + + /** + * float z = 3; + * @return The z. + */ + float getZ(); + } + /** + * Protobuf type {@code mentraos.ble.Vector3} + */ + public static final class Vector3 extends + com.google.protobuf.GeneratedMessageLite< + Vector3, Vector3.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.Vector3) + Vector3OrBuilder { + private Vector3() { + } + public static final int X_FIELD_NUMBER = 1; + private float x_; + /** + * float x = 1; + * @return The x. + */ + @java.lang.Override + public float getX() { + return x_; + } + /** + * float x = 1; + * @param value The x to set. + */ + private void setX(float value) { + + x_ = value; + } + /** + * float x = 1; + */ + private void clearX() { + + x_ = 0F; + } + + public static final int Y_FIELD_NUMBER = 2; + private float y_; + /** + * float y = 2; + * @return The y. + */ + @java.lang.Override + public float getY() { + return y_; + } + /** + * float y = 2; + * @param value The y to set. + */ + private void setY(float value) { + + y_ = value; + } + /** + * float y = 2; + */ + private void clearY() { + + y_ = 0F; + } + + public static final int Z_FIELD_NUMBER = 3; + private float z_; + /** + * float z = 3; + * @return The z. + */ + @java.lang.Override + public float getZ() { + return z_; + } + /** + * float z = 3; + * @param value The z to set. + */ + private void setZ(float value) { + + z_ = value; + } + /** + * float z = 3; + */ + private void clearZ() { + + z_ = 0F; + } + + public static mentraos.ble.MentraosBle.Vector3 parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.Vector3 parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.Vector3 parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.Vector3 parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.Vector3 parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static mentraos.ble.MentraosBle.Vector3 parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static mentraos.ble.MentraosBle.Vector3 parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static mentraos.ble.MentraosBle.Vector3 parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static mentraos.ble.MentraosBle.Vector3 parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static mentraos.ble.MentraosBle.Vector3 parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, 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.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(mentraos.ble.MentraosBle.Vector3 prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code mentraos.ble.Vector3} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + mentraos.ble.MentraosBle.Vector3, Builder> implements + // @@protoc_insertion_point(builder_implements:mentraos.ble.Vector3) + mentraos.ble.MentraosBle.Vector3OrBuilder { + // Construct using mentraos.ble.MentraosBle.Vector3.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * float x = 1; + * @return The x. + */ + @java.lang.Override + public float getX() { + return instance.getX(); + } + /** + * float x = 1; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(float value) { + copyOnWrite(); + instance.setX(value); + return this; + } + /** + * float x = 1; + * @return This builder for chaining. + */ + public Builder clearX() { + copyOnWrite(); + instance.clearX(); + return this; + } + + /** + * float y = 2; + * @return The y. + */ + @java.lang.Override + public float getY() { + return instance.getY(); + } + /** + * float y = 2; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(float value) { + copyOnWrite(); + instance.setY(value); + return this; + } + /** + * float y = 2; + * @return This builder for chaining. + */ + public Builder clearY() { + copyOnWrite(); + instance.clearY(); + return this; + } + + /** + * float z = 3; + * @return The z. + */ + @java.lang.Override + public float getZ() { + return instance.getZ(); + } + /** + * float z = 3; + * @param value The z to set. + * @return This builder for chaining. + */ + public Builder setZ(float value) { + copyOnWrite(); + instance.setZ(value); + return this; + } + /** + * float z = 3; + * @return This builder for chaining. + */ + public Builder clearZ() { + copyOnWrite(); + instance.clearZ(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mentraos.ble.Vector3) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new mentraos.ble.MentraosBle.Vector3(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "x_", + "y_", + "z_", + }; + java.lang.String info = + "\u0000\u0003\u0000\u0000\u0001\u0003\u0003\u0000\u0000\u0000\u0001\u0001\u0002\u0001" + + "\u0003\u0001"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (mentraos.ble.MentraosBle.Vector3.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:mentraos.ble.Vector3) + private static final mentraos.ble.MentraosBle.Vector3 DEFAULT_INSTANCE; + static { + Vector3 defaultInstance = new Vector3(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + Vector3.class, defaultInstance); + } + + public static mentraos.ble.MentraosBle.Vector3 getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ButtonEventOrBuilder extends + // @@protoc_insertion_point(interface_extends:mentraos.ble.ButtonEvent) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .mentraos.ble.ButtonEvent.Button button = 1; + * @return The enum numeric value on the wire for button. + */ + int getButtonValue(); + /** + * .mentraos.ble.ButtonEvent.Button button = 1; + * @return The button. + */ + mentraos.ble.MentraosBle.ButtonEvent.Button getButton(); + + /** + * .mentraos.ble.ButtonEvent.State state = 2; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + * .mentraos.ble.ButtonEvent.State state = 2; + * @return The state. + */ + mentraos.ble.MentraosBle.ButtonEvent.State getState(); + } + /** + * Protobuf type {@code mentraos.ble.ButtonEvent} + */ + public static final class ButtonEvent extends + com.google.protobuf.GeneratedMessageLite< + ButtonEvent, ButtonEvent.Builder> implements + // @@protoc_insertion_point(message_implements:mentraos.ble.ButtonEvent) + ButtonEventOrBuilder { + private ButtonEvent() { + } + /** + * Protobuf enum {@code mentraos.ble.ButtonEvent.Button} + */ + public enum Button + implements com.google.protobuf.Internal.EnumLite { + /** + * CENTER = 0; + */ + CENTER(0), + /** + * LEFT = 1; + */ + LEFT(1), + /** + * RIGHT = 2; + */ + RIGHT(2), + UNRECOGNIZED(-1), + ; + + /** + * CENTER = 0; + */ + public static final int CENTER_VALUE = 0; + /** + * LEFT = 1; + */ + public static final int LEFT_VALUE = 1; + /** + * RIGHT = 2; + */ + public static final int RIGHT_VALUE = 2; + + + @java.lang.Override + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Button valueOf(int value) { + return forNumber(value); + } + + public static Button forNumber(int value) { + switch (value) { + case 0: return CENTER; + case 1: return LEFT; + case 2: return RIGHT; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap