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

Commit 93d3c79b authored by Etan Cohen's avatar Etan Cohen
Browse files

[NAN] Add retry count for transmitting L2 NAN messages

Bug: 28690414
Change-Id: I0a253f6d7e0d15f4bb50cae685c5e2496682cd67
parent fb8021c8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ interface IWifiNanManager
    void updatePublish(int clientId, int sessionId, in PublishConfig publishConfig);
    void updateSubscribe(int clientId, int sessionId, in SubscribeConfig subscribeConfig);
    void sendMessage(int clientId, int sessionId, int peerId, in byte[] message, int messageLength,
            int messageId);
            int messageId, int retryCount);
    void terminateSession(int clientId, int sessionId);
    int startRanging(int clientId, int sessionId, in RttManager.ParcelableRttParams parms);
}
+5 −3
Original line number Diff line number Diff line
@@ -399,10 +399,11 @@ public class WifiNanManager {
     * {@hide}
     */
    public void sendMessage(int sessionId, int peerId, byte[] message, int messageLength,
            int messageId) {
            int messageId, int retryCount) {
        if (VDBG) {
            Log.v(TAG, "sendMessage(): sessionId=" + sessionId + ", peerId=" + peerId
                    + ", messageLength=" + messageLength + ", messageId=" + messageId);
                    + ", messageLength=" + messageLength + ", messageId=" + messageId
                    + ", retryCount=" + retryCount);
        }

        int clientId;
@@ -416,7 +417,8 @@ public class WifiNanManager {
        }

        try {
            mService.sendMessage(clientId, sessionId, peerId, message, messageLength, messageId);
            mService.sendMessage(clientId, sessionId, peerId, message, messageLength, messageId,
                    retryCount);
        } catch (RemoteException e) {
            e.rethrowAsRuntimeException();
        }
+36 −14
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ public class WifiNanSession {
    private static final boolean DBG = false;
    private static final boolean VDBG = false; // STOPSHIP if true

    public static final int MAX_SEND_RETRY_COUNT = 5;

    /**
     * @hide
     */
@@ -102,23 +104,24 @@ public class WifiNanSession {
    }

    /**
     * Sends a message to the specified destination. Message transmission is
     * part of the current discovery session - i.e. executed subsequent to a
     * publish/subscribe
     * {@link WifiNanSessionCallback#onMatch(int, byte[], int, byte[], int)}
     * event.
     * Sends a message to the specified destination. Message transmission is part of the current
     * discovery session - i.e. executed subsequent to a publish/subscribe
     * {@link WifiNanSessionCallback#onMatch(int, byte[], int, byte[], int)} event.
     *
     * @param peerId The peer's ID for the message. Must be a result of an
     *            {@link WifiNanSessionCallback#onMatch(int, byte[], int, byte[], int)}
     *            event.
     *            {@link WifiNanSessionCallback#onMatch(int, byte[], int, byte[], int)} event.
     * @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.
     * @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.
     * @param retryCount An integer specifying how many additional service-level (as opposed to PHY
     *            or MAC level) retries should be attempted if there is no ACK from the receiver
     *            (note: no retransmissions are attempted in other failure cases). A value of 0
     *            indicates no retries. Max possible value is {@link #MAX_SEND_RETRY_COUNT}.
     */
    public void sendMessage(int peerId, byte[] message, int messageLength, int messageId) {
    public void sendMessage(int peerId, byte[] message, int messageLength, int messageId,
            int retryCount) {
        if (mTerminated) {
            Log.w(TAG, "sendMessage: called on terminated session");
            return;
@@ -129,8 +132,27 @@ public class WifiNanSession {
                return;
            }

            mgr.sendMessage(mSessionId, peerId, message, messageLength, messageId);
            mgr.sendMessage(mSessionId, peerId, message, messageLength, messageId, retryCount);
        }
    }

    /**
     * Sends a message to the specified destination. Message transmission is part of the current
     * discovery session - i.e. executed subsequent to a publish/subscribe
     * {@link WifiNanSessionCallback#onMatch(int, byte[], int, byte[], int)} event. This is
     * equivalent to {@link #sendMessage(int, byte[], int, int, int)} with a {@code retryCount} of
     * 0.
     *
     * @param peerId The peer's ID for the message. Must be a result of an
     *            {@link WifiNanSessionCallback#onMatch(int, byte[], int, byte[], int)} event.
     * @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, int messageId) {
        sendMessage(peerId, message, messageLength, messageId, 0);
    }

    /**