• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.server.wifi.usd;
18 
19 import android.net.MacAddress;
20 import android.net.wifi.usd.PublishConfig;
21 import android.net.wifi.usd.PublishSessionCallback;
22 import android.net.wifi.usd.SessionCallback;
23 import android.net.wifi.usd.SubscribeConfig;
24 import android.net.wifi.usd.SubscribeSessionCallback;
25 
26 import com.android.server.wifi.SupplicantStaIfaceHal;
27 import com.android.server.wifi.WifiNative;
28 
29 import java.util.concurrent.Executor;
30 
31 /**
32  * Manages the interface to the HAL.
33  */
34 public class UsdNativeManager {
35     private final WifiNative mWifiNative;
36 
37     /**
38      * USD Events from HAL.
39      */
40     public interface UsdEventsCallback {
41         /**
42          * Called when publisher is started.
43          */
onUsdPublishStarted(int cmdId, int publishId)44         void onUsdPublishStarted(int cmdId, int publishId);
45 
46         /**
47          * Called when subscribe is started.
48          */
onUsdSubscribeStarted(int cmdId, int subscribeId)49         void onUsdSubscribeStarted(int cmdId, int subscribeId);
50 
51         /**
52          * Called when publisher is failed to start.
53          */
onUsdPublishConfigFailed(int cmdId, @SessionCallback.FailureCode int errorCode)54         void onUsdPublishConfigFailed(int cmdId, @SessionCallback.FailureCode int errorCode);
55 
56         /**
57          * Called when subscriber is failed to start.
58          */
onUsdSubscribeConfigFailed(int cmdId, @SessionCallback.FailureCode int errorCode)59         void onUsdSubscribeConfigFailed(int cmdId, @SessionCallback.FailureCode int errorCode);
60 
61         /**
62          * Called when publish session is terminated.
63          */
onUsdPublishTerminated(int publishId, @SessionCallback.TerminationReasonCode int reasonCode)64         void onUsdPublishTerminated(int publishId,
65                 @SessionCallback.TerminationReasonCode int reasonCode);
66 
67         /**
68          *  Called when subscribe session is terminated.
69          */
onUsdSubscribeTerminated(int subscribeId, @SessionCallback.TerminationReasonCode int reasonCode)70         void onUsdSubscribeTerminated(int subscribeId,
71                 @SessionCallback.TerminationReasonCode int reasonCode);
72 
73         /**
74          * Called for each Publish replied event.
75          */
onUsdPublishReplied( UsdRequestManager.UsdHalDiscoveryInfo usdHalDiscoveryInfo)76         void onUsdPublishReplied(
77                 UsdRequestManager.UsdHalDiscoveryInfo usdHalDiscoveryInfo);
78 
79         /**
80          * Called when the subscriber discovers publisher.
81          */
onUsdServiceDiscovered( UsdRequestManager.UsdHalDiscoveryInfo usdHalDiscoveryInfo)82         void onUsdServiceDiscovered(
83                 UsdRequestManager.UsdHalDiscoveryInfo usdHalDiscoveryInfo);
84 
85         /**
86          * Called when a message is received.
87          */
onUsdMessageReceived(int ownId, int peerId, MacAddress peerMacAddress, byte[] message)88         void onUsdMessageReceived(int ownId, int peerId, MacAddress peerMacAddress,
89                 byte[] message);
90     }
91 
92     /**
93      * Constructor
94      */
UsdNativeManager(WifiNative wifiNative)95     public UsdNativeManager(WifiNative wifiNative) {
96         mWifiNative = wifiNative;
97     }
98 
99     /**
100      * Register USD events.
101      */
registerUsdEventsCallback( UsdRequestManager.UsdNativeEventsCallback usdNativeEventsCallback)102     public void registerUsdEventsCallback(
103             UsdRequestManager.UsdNativeEventsCallback usdNativeEventsCallback) {
104         mWifiNative.registerUsdEventsCallback(usdNativeEventsCallback);
105     }
106 
107     /**
108      * Gets USD capabilities.
109      */
getUsdCapabilities()110     public SupplicantStaIfaceHal.UsdCapabilitiesInternal getUsdCapabilities() {
111         return mWifiNative.getUsdCapabilities();
112     }
113 
114     /**
115      * See {@link android.net.wifi.usd.UsdManager#publish(PublishConfig, Executor,
116      * PublishSessionCallback)}
117      */
publish(String interfaceName, int cmdId, PublishConfig publishConfig)118     public boolean publish(String interfaceName, int cmdId, PublishConfig publishConfig) {
119         return mWifiNative.startUsdPublish(interfaceName, cmdId, publishConfig);
120     }
121 
122     /**
123      * See {@link android.net.wifi.usd.UsdManager#subscribe(SubscribeConfig, Executor,
124      * SubscribeSessionCallback)}
125      */
subscribe(String interfaceName, int cmdId, SubscribeConfig subscribeConfig)126     public boolean subscribe(String interfaceName, int cmdId, SubscribeConfig subscribeConfig) {
127         return mWifiNative.startUsdSubscribe(interfaceName, cmdId, subscribeConfig);
128     }
129 
130     /**
131      * Update publish.
132      */
updatePublish(String interfaceName, int publishId, byte[] ssi)133     public void updatePublish(String interfaceName, int publishId, byte[] ssi) {
134         mWifiNative.updateUsdPublish(interfaceName, publishId, ssi);
135     }
136 
137     /**
138      * Cancels publish session identified by publishId.
139      */
cancelPublish(String interfaceName, int publishId)140     public void cancelPublish(String interfaceName, int publishId) {
141         mWifiNative.cancelUsdPublish(interfaceName, publishId);
142     }
143 
144     /**
145      * Cancels subscribe identified by subscribeId
146      */
cancelSubscribe(String interfaceName, int subscribeId)147     public void cancelSubscribe(String interfaceName, int subscribeId) {
148         mWifiNative.cancelUsdSubscribe(interfaceName, subscribeId);
149     }
150 
151     /**
152      * Send a message to the peer identified by the peerId and the peerMacAddress.
153      */
sendMessage(String interfaceName, int ownId, int peerId, MacAddress peerMacAddress, byte[] message)154     public boolean sendMessage(String interfaceName, int ownId, int peerId,
155             MacAddress peerMacAddress, byte[] message) {
156         return mWifiNative.sendUsdMessage(interfaceName, ownId, peerId, peerMacAddress, message);
157     }
158 }
159