]> git.basschouten.com Git - openhab-addons.git/commitdiff
[androidtv] Fixes GoogleTV Login Error (#15453)
authormorph166955 <53797132+morph166955@users.noreply.github.com>
Sun, 10 Sep 2023 06:55:19 +0000 (01:55 -0500)
committerGitHub <noreply@github.com>
Sun, 10 Sep 2023 06:55:19 +0000 (08:55 +0200)
* Updates protocol examples
* Adjusts flag based on received data

Signed-off-by: Ben Rosenblum <rosenblumb@gmail.com>
bundles/org.openhab.binding.androidtv/src/main/java/org/openhab/binding/androidtv/internal/protocol/googletv/GoogleTVMessageParser.java
bundles/org.openhab.binding.androidtv/src/main/java/org/openhab/binding/androidtv/internal/protocol/googletv/GoogleTVRequest.java

index b63032c6e3ccce8e0eee799af8216b8a2f295195..0ed8b308ffb3326dda5b0bc207db316bc25dbf9f 100644 (file)
@@ -60,33 +60,49 @@ public class GoogleTVMessageParser {
             } else if (msg.startsWith(DELIMITER_0A)) {
                 // First message on connection from GTV
                 //
-                // 0a 5b08 ff 041256 0a 11 534849454c4420416e64726f6964205456 12 06 4e5649444941 18 01 22 02 3131 2a
-                // ---------------------LEN-SHIELD Android TV--------------------LEN-NVIDIA---------LEN---LEN-Android
+                // 0a 5b 08 ff 04 12 56 0a 11 534849454c4420416e64726f6964205456 12 06 4e5649444941 18 01 22 02 3131 2a
+                // ---LEN------------LEN---LEN-SHIELD Android TV--------------------LEN-NVIDIA---------LEN---LEN-Android
                 // 24 636f6d2e676f6f676c652e616e64726f69642e74762e72656d6f74652e73657276696365 32
                 // LEN-com.google.android.tv.remote.service
                 // 0d 352e322e343733323534313333
                 // LEN-5.2.473254133
                 //
-                // 0a 5308 ff 04124e 0a 0c 42524156494120344b204742 12 04 536f6e79 18 01 22 01 39 2a
-                // ---------------------LEN-BRAVIA 4K GB---------------LEN-Sony-------LEN---LEN-Android Version
+                // 0a 53 08 ff 04 12 4e 0a 0c 42524156494120344b204742 12 04 536f6e79 18 01 22 01 39 2a
+                // ---LEN------------LEN---LEN-BRAVIA 4K GB---------------LEN-Sony-------LEN---LEN-Android Version
                 // 24 636f6d2e676f6f676c652e616e64726f69642e74762e72656d6f74652e73657276696365 32
                 // 0d 352e322e343733323534313333
                 //
-                // 0a 5408 ff 04124f 0a 0a 4368726f6d6563617374 12 06 476f6f676c65 18 01 22 02 3132 2a
-                // ---------------------LEN-Chromecast-------------LEN-Google---------LEN---LEN-Android Version
+                // 0a 54 08 ff 04 12 4f 0a 0a 4368726f6d6563617374 12 06 476f6f676c65 18 01 22 02 3132 2a
+                // ---LEN------------LEN---LEN-Chromecast-------------LEN-Google---------LEN---LEN-Android Version
                 // 24 636f6d2e676f6f676c652e616e64726f69642e74762e72656d6f74652e73657276696365 32
                 // 0d 352e322e343733323534313333
                 //
-                // 0a 5708 ff 041252 0a 0d 4368726f6d6563617374204844 12 06 476f6f676c65 18 01 22 02 3132 2a
-                // ---------------------LEN-Chromecast HD----------------LEN-Google---------LEN---LEN-Android Version
+                // 0a 57 08 ff 04 12 52 0a 0d 4368726f6d6563617374204844 12 06 476f6f676c65 18 01 22 02 3132 2a
+                // ---LEN------------LEN---LEN-Chromecast HD----------------LEN-Google---------LEN---LEN-Android Version
                 // 24 636f6d2e676f6f676c652e616e64726f69642e74762e72656d6f74652e73657276696365 32
                 // 0d352e322e343733323534313333
+                //
+                // 0a 55 08 ef 04 12 50 0a 09 535754562d32304145 12 08 736b79776f727468 18 01 22 02 3130 2a
+                // ---LEN------------LEN---LEN-SWTV-20AE------------LEN-skyworth-----------LEN---LEN-Android
+                // 24 636f6d2e676f6f676c652e616e64726f69642e74762e72656d6f74652e73657276696365 32
+                // LEN-com.google.android.tv.remote.service
+                // 0d 352e322e343733323534313333
+                // LEN-5.2.473254133
+                //
+                // 0a 5b 08 fd 04 12 56 0a 11 534849454c4420416e64726f6964205456 12 06 4e5649444941 18 01 22 02 3131 2a
+                // ---LEN------------LEN---LEN-SHIELD Android TV--------------------LEN-NVIDIA---------LEN---LEN-Android
+                // 24 636f6d2e676f6f676c652e616e64726f69642e74762e72656d6f74652e73657276696365 32
+                // LEN-com.google.android.tv.remote.service
+                // 0d 352e322e343733323534313333
+                // LEN-5.2.473254133
 
                 if (callback.getLoggedIn()) {
                     logger.warn("{} - Unexpected Login Message: {}", thingId, msg);
                 } else {
+                    String flag = "" + charArray[6] + charArray[7];
+                    logger.trace("{} - Encoding Flag Data: {}", thingId, flag);
                     callback.sendCommand(
-                            new GoogleTVCommand(GoogleTVRequest.encodeMessage(GoogleTVRequest.loginRequest(4))));
+                            new GoogleTVCommand(GoogleTVRequest.encodeMessage(GoogleTVRequest.loginRequest(4, flag))));
                 }
 
                 String st = "";
index 9bc46ae30ec1499edf3e2c9aa5615696d6d4943b..dd66b0a5e4379b6ad7215659fc14d03ddbd6314c 100644 (file)
@@ -66,6 +66,10 @@ public class GoogleTVRequest {
     }
 
     public static String loginRequest(int messageId) {
+        return loginRequest(messageId, "");
+    }
+
+    public static String loginRequest(int messageId, String data) {
         String message = "";
         if (messageId == 1) {
             // Send app and device name
@@ -85,8 +89,8 @@ public class GoogleTVRequest {
             // 080210c801f201 08 0a 04 08031006 1001
             message = "080210c801f201080a04080310061001";
         } else if (messageId == 4) {
-            // 0a41087e123d0a 08 534d2d4739393855 12 07 73616d73756e67 18 01 22 02 3133 2a
-            // ---------------LEN--SM-G998U----------LEN--samsung---------
+            // 0a 41 08 7e 12 3d 0a 08 534d2d4739393855 12 07 73616d73756e67 18 01 22 02 3133 2a
+            // ---LEN---------LEN---LEN--SM-G998U----------LEN--samsung---------
             // 19 636f6d2e676f6f676c652e616e64726f69642e766964656f73 32
             // LEN-com.google.android.videos----------------------------
             // 07 342e33382e3138
@@ -94,8 +98,8 @@ public class GoogleTVRequest {
             // message =
             // "0a41087e123d0a08534d2d4739393855120773616d73756e671801220231332a19636f6d2e676f6f676c652e616e64726f69642e766964656f733207342e33382e3138";
 
-            // 0a5708fe0412520a 08 534d2d4739393855 12 07 73616d73756e67 18 01 22 02 3133 2a
-            // -----------------LEN--SM-G998U----------LEN--samsung---------
+            // 0a 57 08 fe 04 12 52 0a 08 534d2d4739393855 12 07 73616d73756e67 18 01 22 02 3133 2a
+            // ---LEN------------LEN---LEN--SM-G998U----------LEN--samsung---------
             // 19 636f6d2e676f6f676c652e616e64726f69642e766964656f73 32
             // LEN-com.google.android.videos---------------------------
             // 1c 342e33392e3538342e3532393538383538332e372d72656c65617365
@@ -103,13 +107,21 @@ public class GoogleTVRequest {
             // message =
             // "0a5708fe0412520a08534d2d4739393855120773616d73756e671801220231332a19636f6d2e676f6f676c652e616e64726f69642e766964656f73321c342e33392e3538342e3532393538383538332e372d72656c65617365";
 
-            // 0a5708fe0412520a 08 534d2d4739393855 12 07 73616d73756e67 18 01 22 02 3133 2a
-            // -----------------LEN--SM-G998U----------LEN--samsung---------
-            // 19 636f6d2e676f6f676c652e616e64726f69642e766964656f73 32
+            // 0a 3b 08 ee 04 12 36 0a 06 6950686f6e65 12 05 4170706c65 18 02 22 04 31362e36 2a
+            // ---LEN------------LEN---LEN-iPhone---------LEN-Apple--------------LEN-16.6
+            // 11 636f6d2e676f6f676c652e4d6f76696573 32 0a 332e31332e3030303033
+            // LEN-com.google.Movies--------------------LEN-3.13.00003
+
+            // 0a 57 08 fe 04 12 52 0a 08 534d2d4739393855 12 07 73616d73756e67 18 01 22 02 3133 2a
+            // ---LEN------------LEN---LEN--SM-G998U----------LEN--samsung---------
+            // 19 636f6d2e676f-6f676c652e616e64726f69642e766964656f73 32
             // LEN-com.google.android.videos---------------------------
             // 1c 342e33392e3634342e3533343836353739392e332d72656c65617365
             // LEN-4.39.644.534865799.3-release
-            message = "0a5708fe0412520a08534d2d4739393855120773616d73756e671801220231332a19636f6d2e676f6f676c652e616e64726f69642e766964656f73321c342e33392e3634342e3533343836353739392e332d72656c65617365";
+            int dataInt = Integer.parseInt(data, 16) - 1;
+            String updatedData = Integer.toHexString(dataInt);
+            message = "0a5708" + updatedData
+                    + "0412520a08534d2d4739393855120773616d73756e671801220231332a19636f6d2e676f6f676c652e616e64726f69642e766964656f73321c342e33392e3634342e3533343836353739392e332d72656c65617365";
         } else if (messageId == 5) {
             // Unknown. Sent after "1200" received
             message = "1202087e";