From b0fde5d79d4f6a0ad492ef576dca88e2c8196ae7 Mon Sep 17 00:00:00 2001 From: Etan Cohen Date: Tue, 26 Jan 2016 08:51:02 -0800 Subject: [PATCH] NAN: add message ID to correlate message callbacks to original message Add message ID to be specified by caller to each message. Same message ID is provided back in callbacks indicating message send success or failure. Bug: 26769293 Change-Id: I83958d5d219b02c153b0b93d707eaadfdacbf0dc --- .../android/net/wifi/nan/IWifiNanManager.aidl | 3 ++- .../net/wifi/nan/IWifiNanSessionListener.aidl | 4 ++-- .../android/net/wifi/nan/WifiNanManager.java | 7 ++++--- .../android/net/wifi/nan/WifiNanSession.java | 7 +++++-- .../net/wifi/nan/WifiNanSessionListener.java | 16 +++++++++------- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/wifi/java/android/net/wifi/nan/IWifiNanManager.aidl b/wifi/java/android/net/wifi/nan/IWifiNanManager.aidl index ff3d29f415453..ec9e4628d609f 100644 --- a/wifi/java/android/net/wifi/nan/IWifiNanManager.aidl +++ b/wifi/java/android/net/wifi/nan/IWifiNanManager.aidl @@ -43,7 +43,8 @@ interface IWifiNanManager void publish(int sessionId, in PublishData publishData, in PublishSettings publishSettings); void subscribe(int sessionId, in SubscribeData subscribeData, in SubscribeSettings subscribeSettings); - void sendMessage(int sessionId, int peerId, in byte[] message, int messageLength); + void sendMessage(int sessionId, int peerId, in byte[] message, int messageLength, + int messageId); void stopSession(int sessionId); void destroySession(int sessionId); } diff --git a/wifi/java/android/net/wifi/nan/IWifiNanSessionListener.aidl b/wifi/java/android/net/wifi/nan/IWifiNanSessionListener.aidl index 773f83bc70dc6..50c34d946918d 100644 --- a/wifi/java/android/net/wifi/nan/IWifiNanSessionListener.aidl +++ b/wifi/java/android/net/wifi/nan/IWifiNanSessionListener.aidl @@ -32,7 +32,7 @@ oneway interface IWifiNanSessionListener void onMatch(int peerId, in byte[] serviceSpecificInfo, int serviceSpecificInfoLength, in byte[] matchFilter, int matchFilterLength); - void onMessageSendSuccess(); - void onMessageSendFail(int reason); + void onMessageSendSuccess(int messageId); + void onMessageSendFail(int messageId, int reason); void onMessageReceived(int peerId, in byte[] message, int messageLength); } diff --git a/wifi/java/android/net/wifi/nan/WifiNanManager.java b/wifi/java/android/net/wifi/nan/WifiNanManager.java index 877f9937bbb9a..cb82268ec195a 100644 --- a/wifi/java/android/net/wifi/nan/WifiNanManager.java +++ b/wifi/java/android/net/wifi/nan/WifiNanManager.java @@ -319,13 +319,14 @@ public class WifiNanManager { /** * {@hide} */ - public void sendMessage(int sessionId, int peerId, byte[] message, int messageLength) { + public void sendMessage(int sessionId, int peerId, byte[] message, int messageLength, + int messageId) { try { if (VDBG) { Log.v(TAG, "sendMessage(): sessionId=" + sessionId + ", peerId=" + peerId - + ", messageLength=" + messageLength); + + ", messageLength=" + messageLength + ", messageId=" + messageId); } - mService.sendMessage(sessionId, peerId, message, messageLength); + mService.sendMessage(sessionId, peerId, message, messageLength, messageId); } catch (RemoteException e) { Log.w(TAG, "subscribe RemoteException (FYI - ignoring): " + e); } diff --git a/wifi/java/android/net/wifi/nan/WifiNanSession.java b/wifi/java/android/net/wifi/nan/WifiNanSession.java index c6b384e3ae004..d0a94109d0d82 100644 --- a/wifi/java/android/net/wifi/nan/WifiNanSession.java +++ b/wifi/java/android/net/wifi/nan/WifiNanSession.java @@ -103,8 +103,11 @@ public class WifiNanSession { * @param message The message to be transmitted. * @param messageLength The number of bytes from the {@code message} to be * transmitted. + * @param messageId An arbitrary integer used by the caller to identify the + * message. The same integer ID will be returned in the callbacks + * indicated message send success or failure. */ - public void sendMessage(int peerId, byte[] message, int messageLength) { - mManager.sendMessage(mSessionId, peerId, message, messageLength); + public void sendMessage(int peerId, byte[] message, int messageLength, int messageId) { + mManager.sendMessage(mSessionId, peerId, message, messageLength, messageId); } } diff --git a/wifi/java/android/net/wifi/nan/WifiNanSessionListener.java b/wifi/java/android/net/wifi/nan/WifiNanSessionListener.java index c9d08c7610f3e..d5e59f0edaf53 100644 --- a/wifi/java/android/net/wifi/nan/WifiNanSessionListener.java +++ b/wifi/java/android/net/wifi/nan/WifiNanSessionListener.java @@ -210,10 +210,10 @@ public class WifiNanSessionListener { msg.getData().getByteArray(MESSAGE_BUNDLE_KEY_MESSAGE2), msg.arg2); break; case LISTEN_MESSAGE_SEND_SUCCESS: - WifiNanSessionListener.this.onMessageSendSuccess(); + WifiNanSessionListener.this.onMessageSendSuccess(msg.arg1); break; case LISTEN_MESSAGE_SEND_FAIL: - WifiNanSessionListener.this.onMessageSendFail(msg.arg1); + WifiNanSessionListener.this.onMessageSendFail(msg.arg1, msg.arg2); break; case LISTEN_MESSAGE_RECEIVED: WifiNanSessionListener.this.onMessageReceived(msg.arg2, @@ -306,7 +306,7 @@ public class WifiNanSessionListener { * {@link WifiNanSessionListener#onMessageSendFail(int)} will be received - * never both. */ - public void onMessageSendSuccess() { + public void onMessageSendSuccess(int messageId) { if (VDBG) Log.v(TAG, "onMessageSendSuccess: called in stub - override if interested"); } @@ -325,7 +325,7 @@ public class WifiNanSessionListener { * @param reason The failure reason using {@code NanSessionListener.FAIL_*} * codes. */ - public void onMessageSendFail(int reason) { + public void onMessageSendFail(int messageId, int reason) { if (VDBG) Log.v(TAG, "onMessageSendFail: called in stub - override if interested"); } @@ -401,19 +401,21 @@ public class WifiNanSessionListener { } @Override - public void onMessageSendSuccess() { + public void onMessageSendSuccess(int messageId) { if (VDBG) Log.v(TAG, "onMessageSendSuccess"); Message msg = mHandler.obtainMessage(LISTEN_MESSAGE_SEND_SUCCESS); + msg.arg1 = messageId; mHandler.sendMessage(msg); } @Override - public void onMessageSendFail(int reason) { + public void onMessageSendFail(int messageId, int reason) { if (VDBG) Log.v(TAG, "onMessageSendFail: reason=" + reason); Message msg = mHandler.obtainMessage(LISTEN_MESSAGE_SEND_FAIL); - msg.arg1 = reason; + msg.arg1 = messageId; + msg.arg2 = reason; mHandler.sendMessage(msg); }