3434import org .microg .gms .common .Utils ;
3535import org .microg .gms .profile .Build ;
3636import org .microg .gms .settings .SettingsContract ;
37- import org .microg .gms .wearable .proto .ControlMessage ;
38- import org .microg .gms .wearable .proto .EncryptionHandshake ;
39- import org .microg .gms .wearable .proto .RemoveAsset ;
37+ import org .microg .gms .wearable .proto .AckAsset ;
4038import org .microg .gms .wearable .proto .AppKey ;
4139import org .microg .gms .wearable .proto .AssetEntry ;
4240import org .microg .gms .wearable .proto .Connect ;
@@ -113,12 +111,12 @@ public void onConnect(Connect connect) {
113111 wearable .onConnectReceived (getConnection (), oldConfigNodeId , connect );
114112 try {
115113 getConnection ().writeMessage (new RootMessage .Builder ().syncStart (new SyncStart .Builder ()
116- .timestamp (-1L )
117- .sync_type (2 )
114+ .receivedSeqId (-1L )
115+ .version (2 )
118116 .syncTable (Arrays .asList (
119- new SyncTableEntry .Builder ().uri ("cloud" ).version (1L ).build (),
120- new SyncTableEntry .Builder ().uri (wearable .getLocalNodeId ()).version (wearable .getCurrentSeqId (wearable .getLocalNodeId ())).build (), // TODO
121- new SyncTableEntry .Builder ().uri (peerNodeId ).version (wearable .getCurrentSeqId (peerNodeId )).build () // TODO
117+ new SyncTableEntry .Builder ().key ("cloud" ).value (1L ).build (),
118+ new SyncTableEntry .Builder ().key (wearable .getLocalNodeId ()).value (wearable .getCurrentSeqId (wearable .getLocalNodeId ())).build (), // TODO
119+ new SyncTableEntry .Builder ().key (peerNodeId ).value (wearable .getCurrentSeqId (peerNodeId )).build () // TODO
122120 )).build ()).build ());
123121 } catch (IOException e ) {
124122 Log .w (TAG , e );
@@ -147,8 +145,8 @@ public void onSetAsset(SetAsset setAsset) {
147145 }
148146
149147 @ Override
150- public void onRemoveAsset ( RemoveAsset ackAsset ) {
151- Log .d (TAG , "onRemoveAsset : " + ackAsset );
148+ public void onAckAsset ( AckAsset ackAsset ) {
149+ Log .d (TAG , "onAckAsset : " + ackAsset );
152150 }
153151
154152 @ Override
@@ -159,14 +157,14 @@ public void onFetchAsset(FetchAsset fetchAsset) {
159157 @ Override
160158 public void onSyncStart (SyncStart syncStart ) {
161159 Log .d (TAG , "onSyncStart: " + syncStart );
162- if (syncStart .sync_type < 2 ) {
163- Log .d (TAG , "Sync uses sync_type " + syncStart .sync_type + " which is not supported (yet)" );
160+ if (syncStart .version < 2 ) {
161+ Log .d (TAG , "Sync uses version " + syncStart .version + " which is not supported (yet)" );
164162 }
165163 boolean hasLocalNode = false ;
166164 if (syncStart .syncTable != null ) {
167165 for (SyncTableEntry entry : syncStart .syncTable ) {
168- wearable .syncToPeer (peerNodeId , entry .uri , entry .version );
169- if (wearable .getLocalNodeId ().equals (entry .uri )) hasLocalNode = true ;
166+ wearable .syncToPeer (peerNodeId , entry .key , entry .value );
167+ if (wearable .getLocalNodeId ().equals (entry .key )) hasLocalNode = true ;
170168 }
171169 } else {
172170 Log .d (TAG , "No sync table given." );
@@ -184,7 +182,7 @@ public void onSetDataItem(SetDataItem setDataItem) {
184182 public void onRpcRequest (Request rpcRequest ) {
185183 Log .d (TAG , "onRpcRequest: " + rpcRequest );
186184 if (TextUtils .isEmpty (rpcRequest .targetNodeId ) || rpcRequest .targetNodeId .equals (wearable .getLocalNodeId ())) {
187- int requestId = rpcRequest .requestId != null ? rpcRequest .requestId : 0 ;
185+ int requestId = rpcRequest .requestId + 31 * ( rpcRequest .generation + 527 ) ;
188186 String path = rpcRequest .path ;
189187 byte [] data = rpcRequest .rawData != null ? rpcRequest .rawData .toByteArray () : null ;
190188 String sourceNodeId = TextUtils .isEmpty (rpcRequest .sourceNodeId ) ? peerNodeId : rpcRequest .sourceNodeId ;
@@ -199,11 +197,6 @@ public void onRpcRequest(Request rpcRequest) {
199197 }
200198 }
201199
202- @ Override
203- public void onRpcWithResponseId (Request rpcWithResponseId ) {
204-
205- }
206-
207200 @ Override
208201 public void onHeartbeat (Heartbeat heartbeat ) {
209202 Log .d (TAG , "onHeartbeat: " + heartbeat );
@@ -212,24 +205,14 @@ public void onHeartbeat(Heartbeat heartbeat) {
212205 @ Override
213206 public void onFilePiece (FilePiece filePiece ) {
214207 Log .d (TAG , "onFilePiece: " + filePiece );
215- handleFilePiece (getConnection (), filePiece .fileName , filePiece .data .toByteArray (), filePiece .isFinalPiece ? filePiece .fileName : null );
208+ handleFilePiece (getConnection (), filePiece .fileName , filePiece .piece .toByteArray (), filePiece .finalPiece ? filePiece .digest : null );
216209 }
217210
218211 @ Override
219212 public void onChannelRequest (Request channelRequest ) {
220213 Log .d (TAG , "onChannelRequest:" + channelRequest );
221214 }
222215
223- @ Override
224- public void onEncryptionHandshake (EncryptionHandshake encryptionHandshake ) {
225-
226- }
227-
228- @ Override
229- public void onControlMessage (ControlMessage controlMessage ) {
230-
231- }
232-
233216 public void handleMessage (WearableConnection connection , String sourceNodeId , RootMessage message ) {
234217 Log .d (TAG , "handleMessage from " + sourceNodeId );
235218
@@ -257,19 +240,19 @@ public void handleMessage(WearableConnection connection, String sourceNodeId, Ro
257240 if (message .filePiece != null ) {
258241 FilePiece piece = message .filePiece ;
259242 handleFilePiece (connection , piece .fileName ,
260- piece .data != null ? piece .data .toByteArray () : new byte [0 ], piece .isFinalPiece ? piece .fileName : null );
243+ piece .piece != null ? piece .piece .toByteArray () : new byte [0 ], piece .finalPiece ? piece .digest : null );
261244 }
262245
263- if (message .removeAsset != null ) {
264- Log .d (TAG , "Asset acknowledged: " + message .removeAsset . name );
246+ if (message .ackAsset != null ) {
247+ Log .d (TAG , "Asset acknowledged: " + message .ackAsset . digest );
265248 }
266249
267250 if (message .fetchAsset != null ) {
268251 handleFetchAsset (connection , sourceNodeId , message .fetchAsset );
269252 }
270253
271254 if (message .setAsset != null ) {
272- handleSetAsset (connection , sourceNodeId , message .setAsset , message .hasFileAttachment );
255+ handleSetAsset (connection , sourceNodeId , message .setAsset , message .hasAsset );
273256 }
274257 }
275258
@@ -325,27 +308,27 @@ private void handleSetAsset(WearableConnection connection, String sourceNodeId,
325308 private void handleSyncStart (WearableConnection connection , String sourceNodeId ,
326309 org .microg .gms .wearable .proto .SyncStart syncStart ) {
327310 Log .d (TAG , "handleSyncStart from " + sourceNodeId +
328- ": timestamp =" + syncStart .timestamp +
329- ", sync_type =" + syncStart .sync_type );
311+ ": receivedSeqId =" + syncStart .receivedSeqId +
312+ ", version =" + syncStart .version );
330313
331314 if (syncStart .syncTable != null ) {
332315 for (org .microg .gms .wearable .proto .SyncTableEntry entry : syncStart .syncTable ) {
333- Log .d (TAG , " Watch sync state: key=" + entry .uri + ", seqId=" + entry .version );
316+ Log .d (TAG , " Watch sync state: key=" + entry .key + ", seqId=" + entry .value );
334317 }
335318 }
336319
337320 try {
338321 List <SyncTableEntry > syncTable = new ArrayList <>();
339322 syncTable .add (new org .microg .gms .wearable .proto .SyncTableEntry .Builder ()
340- .uri (wearable .getLocalNodeId ())
341- .version (wearable .getClockworkNodePreferences ().getNextSeqId () - 1 )
323+ .key (wearable .getLocalNodeId ())
324+ .value (wearable .getClockworkNodePreferences ().getNextSeqId () - 1 )
342325 .build ());
343326
344327 RootMessage response = new RootMessage .Builder ()
345328 .syncStart (new org .microg .gms .wearable .proto .SyncStart .Builder ()
346- .timestamp (syncStart .timestamp )
329+ .receivedSeqId (syncStart .receivedSeqId )
347330 .syncTable (syncTable )
348- .sync_type (2 )
331+ .version (2 )
349332 .build ())
350333 .build ();
351334
@@ -354,8 +337,8 @@ private void handleSyncStart(WearableConnection connection, String sourceNodeId,
354337
355338 if (syncStart .syncTable != null ) {
356339 for (org .microg .gms .wearable .proto .SyncTableEntry entry : syncStart .syncTable ) {
357- String nodeId = entry .uri ;
358- long theirSeqId = entry .version ;
340+ String nodeId = entry .key ;
341+ long theirSeqId = entry .value ;
359342 wearable .syncToPeer (sourceNodeId , nodeId , theirSeqId );
360343 }
361344 }
@@ -415,16 +398,16 @@ private void fetchMissingAssets(WearableConnection connection, DataItemRecord re
415398
416399 private void handleFetchAsset (WearableConnection connection , String sourceNodeId ,
417400 FetchAsset fetchAsset ) {
418- Log .d (TAG , "handleFetchAsset: " + fetchAsset .digest );
401+ Log .d (TAG , "handleFetchAsset: " + fetchAsset .assetName );
419402
420- File assetFile = wearable .createAssetFile (fetchAsset .digest );
403+ File assetFile = wearable .createAssetFile (fetchAsset .assetName );
421404 if (assetFile .exists ()) {
422405 try {
423406 RootMessage announceMessage = new RootMessage .Builder ()
424407 .setAsset (new SetAsset .Builder ()
425- .digest (fetchAsset .digest )
408+ .digest (fetchAsset .assetName )
426409 .build ())
427- .hasFileAttachment (true )
410+ .hasAsset (true )
428411 .build ();
429412 connection .writeMessage (announceMessage );
430413
@@ -443,13 +426,13 @@ private void handleFetchAsset(WearableConnection connection, String sourceNodeId
443426 }
444427 fis .close ();
445428 connection .writeMessage (new RootMessage .Builder ()
446- .filePiece (new FilePiece (fileName , true , lastPiece , fetchAsset .digest ))
429+ .filePiece (new FilePiece (fileName , true , lastPiece , fetchAsset .assetName ))
447430 .build ());
448431 } catch (IOException e ) {
449432 Log .e (TAG , "Failed to send asset" , e );
450433 }
451434 } else {
452- Log .w (TAG , "Asset not found: " + fetchAsset .digest );
435+ Log .w (TAG , "Asset not found: " + fetchAsset .assetName );
453436 }
454437 }
455438
@@ -489,7 +472,7 @@ public void handleFilePiece(WearableConnection connection, String fileName, byte
489472
490473 try {
491474 connection .writeMessage (new RootMessage .Builder ()
492- .removeAsset (new RemoveAsset (digest ))
475+ .ackAsset (new AckAsset (digest ))
493476 .build ());
494477 } catch (IOException e ) {
495478 Log .w (TAG , "Failed to send asset ACK" , e );
@@ -558,6 +541,7 @@ private static Connect buildConnect(Context ctx, WearableImpl wearable,
558541 .id (wearable .getLocalNodeId ())
559542 .networkId (config .nodeId )
560543 .peerAndroidId (androidId )
544+ .unknown4 (3 )
561545 .peerVersion (2 );
562546
563547 if (config .migrating && config .role == ROLE_SERVER ) {
0 commit comments