Skip to content

Commit

Permalink
[androidtv] Fixes GoogleTV Login Error (openhab#15453)
Browse files Browse the repository at this point in the history
* Updates protocol examples
* Adjusts flag based on received data

Signed-off-by: Ben Rosenblum <rosenblumb@gmail.com>
Signed-off-by: Jørgen Austvik <jaustvik@acm.org>
  • Loading branch information
morph166955 authored and austvik committed Mar 27, 2024
1 parent 55d825a commit 1a46b9f
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,33 +60,49 @@ public void handleMessage(String msg) {
} 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 = "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ public static String pinRequest(String pin) {
}

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
Expand All @@ -85,31 +89,39 @@ public static String loginRequest(int messageId) {
// 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
// LEN-4.38.18
// 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
// LEN-4.39.584.529588583.7-release
// 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";
Expand Down

0 comments on commit 1a46b9f

Please sign in to comment.