Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b0fde5d7 authored by Etan Cohen's avatar Etan Cohen
Browse files

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
parent c90855d7
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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);
}
+2 −2
Original line number Diff line number Diff line
@@ -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);
}
+4 −3
Original line number Diff line number Diff line
@@ -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);
        }
+5 −2
Original line number Diff line number Diff line
@@ -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);
    }
}
+9 −7
Original line number Diff line number Diff line
@@ -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);
        }