DataCallResponse.java revision 99c2e1d6749cfad2a8ca94a47857d8c3bfc09454
10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2009 Qualcomm Innovation Center, Inc. All Rights Reserved. 30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2009 The Android Open Source Project 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License. 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License. 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony; 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LinkAddress; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LinkProperties; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.NetworkUtils; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.RouteInfo; 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.SystemProperties; 2599c2e1d6749cfad2a8ca94a47857d8c3bfc09454Wink Savilleimport android.telephony.Rlog; 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.DataConnection.FailCause; 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.net.Inet4Address; 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.net.InetAddress; 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.net.UnknownHostException; 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * This is RIL_Data_Call_Response_v5 from ril.h 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * TODO: Rename to DataCallResponse. 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class DataCallState { 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final boolean DBG = true; 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final String LOG_TAG = "GSM"; 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public int version = 0; 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public int status = 0; 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public int cid = 0; 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public int active = 0; 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String type = ""; 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String ifname = ""; 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String [] addresses = new String[0]; 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String [] dnses = new String[0]; 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String[] gateways = new String[0]; 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public int suggestedRetryTime = -1; 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Class returned by onSetupConnectionCompleted. 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public enum SetupResult { 560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SUCCESS, 570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ERR_BadCommand, 580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ERR_UnacceptableParameter, 590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ERR_GetLastErrorFromRil, 600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ERR_Stale, 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ERR_RilError; 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public FailCause mFailCause; 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SetupResult() { 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mFailCause = FailCause.fromInt(0); 670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String toString() { 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return name() + " SetupResult.mFailCause=" + mFailCause; 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String toString() { 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuffer sb = new StringBuffer(); 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("DataCallState: {") 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .append("version=").append(version) 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .append(" status=").append(status) 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .append(" retry=").append(suggestedRetryTime) 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .append(" cid=").append(cid) 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .append(" active=").append(active) 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .append(" type=").append(type) 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .append("' ifname='").append(ifname); 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("' addresses=["); 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (String addr : addresses) { 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(addr); 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(","); 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (addresses.length > 0) sb.deleteCharAt(sb.length()-1); 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("] dnses=["); 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (String addr : dnses) { 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(addr); 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(","); 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (dnses.length > 0) sb.deleteCharAt(sb.length()-1); 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("] gateways=["); 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (String addr : gateways) { 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(addr); 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(","); 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (gateways.length > 0) sb.deleteCharAt(sb.length()-1); 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("]}"); 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sb.toString(); 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public SetupResult setLinkProperties(LinkProperties linkProperties, 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean okToUseSystemPropertyDns) { 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SetupResult result; 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Start with clean network properties and if we have 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // a failure we'll clear again at the bottom of this code. 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (linkProperties == null) 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties = new LinkProperties(); 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville else 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties.clear(); 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (status == FailCause.NONE.getErrorCode()) { 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String propertyPrefix = "net." + ifname + "."; 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // set interface name 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties.setInterfaceName(ifname); 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // set link addresses 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (addresses != null && addresses.length > 0) { 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (String addr : addresses) { 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville addr = addr.trim(); 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (addr.isEmpty()) continue; 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LinkAddress la; 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int addrPrefixLen; 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String [] ap = addr.split("/"); 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ap.length == 2) { 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville addr = ap[0]; 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville addrPrefixLen = Integer.parseInt(ap[1]); 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville addrPrefixLen = 0; 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville InetAddress ia; 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ia = NetworkUtils.numericToInetAddress(addr); 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IllegalArgumentException e) { 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new UnknownHostException("Non-numeric ip addr=" + addr); 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (! ia.isAnyLocalAddress()) { 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (addrPrefixLen == 0) { 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Assume point to point 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville addrPrefixLen = (ia instanceof Inet4Address) ? 32 : 128; 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15299c2e1d6749cfad2a8ca94a47857d8c3bfc09454Wink Saville if (DBG) Rlog.d(LOG_TAG, "addr/pl=" + addr + "/" + addrPrefixLen); 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville la = new LinkAddress(ia, addrPrefixLen); 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties.addLinkAddress(la); 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new UnknownHostException("no address for ifname=" + ifname); 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // set dns servers 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (dnses != null && dnses.length > 0) { 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (String addr : dnses) { 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville addr = addr.trim(); 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (addr.isEmpty()) continue; 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville InetAddress ia; 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ia = NetworkUtils.numericToInetAddress(addr); 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IllegalArgumentException e) { 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new UnknownHostException("Non-numeric dns addr=" + addr); 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (! ia.isAnyLocalAddress()) { 1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties.addDns(ia); 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (okToUseSystemPropertyDns){ 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnsServers[] = new String[2]; 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dnsServers[0] = SystemProperties.get(propertyPrefix + "dns1"); 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dnsServers[1] = SystemProperties.get(propertyPrefix + "dns2"); 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (String dnsAddr : dnsServers) { 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dnsAddr = dnsAddr.trim(); 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (dnsAddr.isEmpty()) continue; 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville InetAddress ia; 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ia = NetworkUtils.numericToInetAddress(dnsAddr); 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IllegalArgumentException e) { 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new UnknownHostException("Non-numeric dns addr=" + dnsAddr); 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (! ia.isAnyLocalAddress()) { 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties.addDns(ia); 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new UnknownHostException("Empty dns response and no system default dns"); 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // set gateways 1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if ((gateways == null) || (gateways.length == 0)) { 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String sysGateways = SystemProperties.get(propertyPrefix + "gw"); 2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (sysGateways != null) { 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville gateways = sysGateways.split(" "); 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville gateways = new String[0]; 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (String addr : gateways) { 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville addr = addr.trim(); 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (addr.isEmpty()) continue; 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville InetAddress ia; 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ia = NetworkUtils.numericToInetAddress(addr); 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IllegalArgumentException e) { 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new UnknownHostException("Non-numeric gateway addr=" + addr); 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (! ia.isAnyLocalAddress()) { 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties.addRoute(new RouteInfo(ia)); 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result = SetupResult.SUCCESS; 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (UnknownHostException e) { 22299c2e1d6749cfad2a8ca94a47857d8c3bfc09454Wink Saville Rlog.d(LOG_TAG, "setLinkProperties: UnknownHostException " + e); 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville e.printStackTrace(); 2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result = SetupResult.ERR_UnacceptableParameter; 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (version < 4) { 2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result = SetupResult.ERR_GetLastErrorFromRil; 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result = SetupResult.ERR_RilError; 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // An error occurred so clear properties 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != SetupResult.SUCCESS) { 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if(DBG) { 23799c2e1d6749cfad2a8ca94a47857d8c3bfc09454Wink Saville Rlog.d(LOG_TAG, "setLinkProperties: error clearing LinkProperties " + 2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "status=" + status + " result=" + result); 2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties.clear(); 2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return result; 2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 246