blob: bbf5fc608ed2946af8569a17978e32cd49297ace [file] [log] [blame]
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.net.wifi.passpoint;
import android.os.Parcelable;
import android.os.Parcel;
import android.util.Log;
import java.util.HashMap;
/**
* Required Mobile Device Management Tree Structure
*
* +----------+
* | ./(Root) |
* +----+-----+
* |
* +---------+ | +---------+ +---------+
* | DevInfo |-----------+---------| Wi-Fi |--|SP FQDN* |
* +---------+ | +---------+ +---------+
* +---------+ | |
* |DevDetail|-----------+ +-----------------------+
* +---------+ |PerproviderSubscription|--<X>+
* +-----------------------+
*
* This class contains all nodes start from Wi-Fi
* @hide
**/
public class WifiPasspointDmTree implements Parcelable {
private final static String TAG = "WifiTree";
public int PpsMoId;//plugfest used only
public HashMap<String, SpFqdn> spFqdn = new HashMap<String, SpFqdn>();//Maps.newHashMap();
public SpFqdn createSpFqdn(String name) {
SpFqdn obj = new SpFqdn(name);
spFqdn.put(name, obj);
return obj;
}
public static class SpFqdn implements Parcelable {
public String nodeName;
public PerProviderSubscription perProviderSubscription = new PerProviderSubscription();
public SpFqdn(String name) {
nodeName = name;
}
public SpFqdn() {
}
public SpFqdn(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeParcelable(perProviderSubscription, flags);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
perProviderSubscription = in.readParcelable(PerProviderSubscription.class
.getClassLoader());
}
}
public static final Parcelable.Creator<SpFqdn> CREATOR = new Parcelable.Creator<SpFqdn>() {
public SpFqdn createFromParcel(Parcel in) {
return new SpFqdn(in);
}
public SpFqdn[] newArray(int size) {
return new SpFqdn[size];
}
};
}
/**
* PerProviderSubscription
**/
public static class PerProviderSubscription implements Parcelable {
/**
* PerProviderSubscription/UpdateIdentifier
**/
public String UpdateIdentifier;
public HashMap<String, CredentialInfo> credentialInfo = new HashMap<String, CredentialInfo>();
public CredentialInfo createCredentialInfo(String name) {
CredentialInfo obj = new CredentialInfo(name);
credentialInfo.put(name, obj);
return obj;
}
public PerProviderSubscription() {
}
public PerProviderSubscription(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(UpdateIdentifier);
out.writeMap(credentialInfo);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
UpdateIdentifier = in.readString();
in.readMap(credentialInfo, CredentialInfo.class.getClassLoader());
}
}
public static final Parcelable.Creator<PerProviderSubscription> CREATOR = new Parcelable.Creator<PerProviderSubscription>() {
public PerProviderSubscription createFromParcel(Parcel in) {
return new PerProviderSubscription(in);
}
public PerProviderSubscription[] newArray(int size) {
return new PerProviderSubscription[size];
}
};
}
/**
* PerProviderSubscription/<X+>
* This interior node contains the Home SP information, subscription policy, management and credential information.
**/
public static class CredentialInfo implements Parcelable {
public String nodeName;
public Policy policy = new Policy();
public String credentialPriority;
public HashMap<String, AAAServerTrustRoot> aAAServerTrustRoot = new HashMap<String, AAAServerTrustRoot>();
public SubscriptionUpdate subscriptionUpdate = new SubscriptionUpdate();
public HomeSP homeSP = new HomeSP();
public SubscriptionParameters subscriptionParameters = new SubscriptionParameters();
public Credential credential = new Credential();
public Extension extension = new Extension();
public CredentialInfo(String nn) {
nodeName = nn;
}
public AAAServerTrustRoot createAAAServerTrustRoot(String name, String url, String fp) {
AAAServerTrustRoot obj = new AAAServerTrustRoot(name, url, fp);
aAAServerTrustRoot.put(name, obj);
return obj;
}
public CredentialInfo() {
}
public CredentialInfo(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeParcelable(policy, flags);
out.writeString(credentialPriority);
out.writeMap(aAAServerTrustRoot);
out.writeParcelable(subscriptionUpdate, flags);
out.writeParcelable(homeSP, flags);
out.writeParcelable(subscriptionParameters, flags);
out.writeParcelable(credential, flags);
//out.writeParcelable(extension, flags);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
policy = in.readParcelable(Policy.class.getClassLoader());
credentialPriority = in.readString();
in.readMap(aAAServerTrustRoot, AAAServerTrustRoot.class.getClassLoader());
subscriptionUpdate = in.readParcelable(SubscriptionUpdate.class.getClassLoader());
homeSP = in.readParcelable(HomeSP.class.getClassLoader());
subscriptionParameters = in.readParcelable(SubscriptionParameters.class
.getClassLoader());
credential = in.readParcelable(Credential.class.getClassLoader());
//extension = in.readParcelable(Extension.class.getClassLoader());
}
}
public static final Parcelable.Creator<CredentialInfo> CREATOR = new Parcelable.Creator<CredentialInfo>() {
public CredentialInfo createFromParcel(Parcel in) {
return new CredentialInfo(in);
}
public CredentialInfo[] newArray(int size) {
return new CredentialInfo[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Policy
**/
public static class Policy implements Parcelable {
public HashMap<String, PreferredRoamingPartnerList> preferredRoamingPartnerList = new HashMap<String, PreferredRoamingPartnerList>();
public HashMap<String, MinBackhaulThresholdNetwork> minBackhaulThreshold = new HashMap<String, MinBackhaulThresholdNetwork>();
public PolicyUpdate policyUpdate = new PolicyUpdate();
public HashMap<String, SPExclusionList> sPExclusionList = new HashMap<String, SPExclusionList>();
public HashMap<String, RequiredProtoPortTuple> requiredProtoPortTuple = new HashMap<String, RequiredProtoPortTuple>();
public String maximumBSSLoadValue;
public PreferredRoamingPartnerList createPreferredRoamingPartnerList(String name,
String fqdn, String priority, String country) {
PreferredRoamingPartnerList obj = new PreferredRoamingPartnerList(name, fqdn, priority,
country);
preferredRoamingPartnerList.put(name, obj);
return obj;
}
public MinBackhaulThresholdNetwork createMinBackhaulThreshold(String name, String type,
String dl, String ul) {
MinBackhaulThresholdNetwork obj = new MinBackhaulThresholdNetwork(name, type, dl, ul);
minBackhaulThreshold.put(name, obj);
return obj;
}
public SPExclusionList createSPExclusionList(String name, String ssid) {
SPExclusionList obj = new SPExclusionList(name, ssid);
sPExclusionList.put(name, obj);
return obj;
}
public RequiredProtoPortTuple createRequiredProtoPortTuple(String name, String proto,
String port) {
RequiredProtoPortTuple obj = new RequiredProtoPortTuple(name, proto, port);
requiredProtoPortTuple.put(name, obj);
return obj;
}
public Policy() {
}
public Policy(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeMap(preferredRoamingPartnerList);
out.writeMap(minBackhaulThreshold);
out.writeParcelable(policyUpdate, flags);
out.writeMap(sPExclusionList);
out.writeMap(requiredProtoPortTuple);
out.writeString(maximumBSSLoadValue);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
in.readMap(preferredRoamingPartnerList,
PreferredRoamingPartnerList.class.getClassLoader());
in.readMap(minBackhaulThreshold, MinBackhaulThresholdNetwork.class.getClassLoader());
policyUpdate = in.readParcelable(PolicyUpdate.class.getClassLoader());
in.readMap(sPExclusionList, SPExclusionList.class.getClassLoader());
in.readMap(requiredProtoPortTuple, RequiredProtoPortTuple.class.getClassLoader());
maximumBSSLoadValue = in.readString();
}
}
public static final Parcelable.Creator<Policy> CREATOR = new Parcelable.Creator<Policy>() {
public Policy createFromParcel(Parcel in) {
return new Policy(in);
}
public Policy[] newArray(int size) {
return new Policy[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Policy/PreferredRoamingPartnerList/<X+>
**/
public static class PreferredRoamingPartnerList implements Parcelable {
public String nodeName;
public String FQDN_Match; //maximum 255 + ",includeSubdomains", equals 273
public String Priority;
public String Country; // maximum 600 octets
public PreferredRoamingPartnerList(String nn, String f, String p, String c) {
nodeName = nn;
FQDN_Match = f;
Priority = p;
Country = c;
}
public PreferredRoamingPartnerList() {
}
public PreferredRoamingPartnerList(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeString(FQDN_Match);
out.writeString(Priority);
out.writeString(Country);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
FQDN_Match = in.readString();
Priority = in.readString();
Country = in.readString();
}
}
public static final Parcelable.Creator<PreferredRoamingPartnerList> CREATOR = new Parcelable.Creator<PreferredRoamingPartnerList>() {
public PreferredRoamingPartnerList createFromParcel(Parcel in) {
return new PreferredRoamingPartnerList(in);
}
public PreferredRoamingPartnerList[] newArray(int size) {
return new PreferredRoamingPartnerList[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Policy/MinBackhaulThreshold
**/
public static class MinBackhaulThresholdNetwork implements Parcelable {
public String nodeName;
public String NetworkType;
public String DLBandwidth;
public String ULBandwidth;
public MinBackhaulThresholdNetwork(String nn, String nt, String d, String u) {
nodeName = nn;
NetworkType = nt;
DLBandwidth = d;
ULBandwidth = u;
}
public MinBackhaulThresholdNetwork() {
}
public MinBackhaulThresholdNetwork(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeString(NetworkType);
out.writeString(DLBandwidth);
out.writeString(ULBandwidth);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
NetworkType = in.readString();
DLBandwidth = in.readString();
ULBandwidth = in.readString();
}
}
public static final Parcelable.Creator<MinBackhaulThresholdNetwork> CREATOR = new Parcelable.Creator<MinBackhaulThresholdNetwork>() {
public MinBackhaulThresholdNetwork createFromParcel(Parcel in) {
return new MinBackhaulThresholdNetwork(in);
}
public MinBackhaulThresholdNetwork[] newArray(int size) {
return new MinBackhaulThresholdNetwork[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Policy/PolicyUpdate
**/
public static class PolicyUpdate implements Parcelable {
public String UpdateInterval;
public String UpdateMethod;
public String Restriction;
public String URI;
public UsernamePassword usernamePassword = new UsernamePassword();
public String Other;
public TrustRoot trustRoot = new TrustRoot();
public PolicyUpdate() {
}
public PolicyUpdate(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(UpdateInterval);
out.writeString(UpdateMethod);
out.writeString(Restriction);
out.writeString(URI);
out.writeParcelable(usernamePassword, flags);
out.writeString(Other);
out.writeParcelable(trustRoot, flags);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
UpdateInterval = in.readString();
UpdateMethod = in.readString();
Restriction = in.readString();
URI = in.readString();
usernamePassword = in.readParcelable(UsernamePassword.class.getClassLoader());
Other = in.readString();
trustRoot = in.readParcelable(TrustRoot.class.getClassLoader());
}
}
public static final Parcelable.Creator<PolicyUpdate> CREATOR = new Parcelable.Creator<PolicyUpdate>() {
public PolicyUpdate createFromParcel(Parcel in) {
return new PolicyUpdate(in);
}
public PolicyUpdate[] newArray(int size) {
return new PolicyUpdate[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Policy/SPExclusionList
**/
public static class SPExclusionList implements Parcelable {
public String nodeName;
public String SSID;
public SPExclusionList(String nn, String s) {
nodeName = nn;
SSID = s;
}
public SPExclusionList() {
}
public SPExclusionList(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeString(SSID);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
SSID = in.readString();
}
}
public static final Parcelable.Creator<SPExclusionList> CREATOR = new Parcelable.Creator<SPExclusionList>() {
public SPExclusionList createFromParcel(Parcel in) {
return new SPExclusionList(in);
}
public SPExclusionList[] newArray(int size) {
return new SPExclusionList[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Policy/RequiredProtoPortTuple
**/
public static class RequiredProtoPortTuple implements Parcelable {
public String nodeName;
public String IPProtocol;
public String PortNumber;
public RequiredProtoPortTuple() {
}
public RequiredProtoPortTuple(String nn, String protocol, String port) {
nodeName = nn;
IPProtocol = protocol;
PortNumber = port;
}
public RequiredProtoPortTuple(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeString(IPProtocol);
out.writeString(PortNumber);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
IPProtocol = in.readString();
PortNumber = in.readString();
}
}
public static final Parcelable.Creator<RequiredProtoPortTuple> CREATOR = new Parcelable.Creator<RequiredProtoPortTuple>() {
public RequiredProtoPortTuple createFromParcel(Parcel in) {
return new RequiredProtoPortTuple(in);
}
public RequiredProtoPortTuple[] newArray(int size) {
return new RequiredProtoPortTuple[size];
}
};
}
/**
* PerProviderSubscription/<X+>/AAAServerTrustRoot
**/
public static class AAAServerTrustRoot implements Parcelable {
public String nodeName;
public String CertURL;
public String CertSHA256Fingerprint;
public AAAServerTrustRoot(String nn, String url, String fp) {
nodeName = nn;
CertURL = url;
CertSHA256Fingerprint = fp;
}
public AAAServerTrustRoot() {
}
public AAAServerTrustRoot(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeString(CertURL);
out.writeString(CertSHA256Fingerprint);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
CertURL = in.readString();
CertSHA256Fingerprint = in.readString();
}
}
public static final Parcelable.Creator<AAAServerTrustRoot> CREATOR = new Parcelable.Creator<AAAServerTrustRoot>() {
public AAAServerTrustRoot createFromParcel(Parcel in) {
return new AAAServerTrustRoot(in);
}
public AAAServerTrustRoot[] newArray(int size) {
return new AAAServerTrustRoot[size];
}
};
}
/**
* PerProviderSubscription/<X+>/SubscriptionUpdate
**/
public static class SubscriptionUpdate implements Parcelable {
public String UpdateInterval;
public String UpdateMethod;
public String Restriction;
public String URI;
public UsernamePassword usernamePassword = new UsernamePassword();
public String Other;
public TrustRoot trustRoot = new TrustRoot();
public SubscriptionUpdate() {
}
public SubscriptionUpdate(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(UpdateInterval);
out.writeString(UpdateMethod);
out.writeString(Restriction);
out.writeString(URI);
out.writeParcelable(usernamePassword, flags);
out.writeString(Other);
out.writeParcelable(trustRoot, flags);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
UpdateInterval = in.readString();
UpdateMethod = in.readString();
Restriction = in.readString();
URI = in.readString();
usernamePassword = in.readParcelable(UsernamePassword.class.getClassLoader());
Other = in.readString();
trustRoot = in.readParcelable(TrustRoot.class.getClassLoader());
}
}
public static final Parcelable.Creator<SubscriptionUpdate> CREATOR = new Parcelable.Creator<SubscriptionUpdate>() {
public SubscriptionUpdate createFromParcel(Parcel in) {
return new SubscriptionUpdate(in);
}
public SubscriptionUpdate[] newArray(int size) {
return new SubscriptionUpdate[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Policy/PolicyUpdate/TrustRoot
* PerProviderSubscription/<X+>/SubscriptionUpdate/TrustRoot
* PerProviderSubscription/<X+>/AAAServerTrustRoot/<X+>
**/
public static class TrustRoot implements Parcelable {
public String CertURL;
public String CertSHA256Fingerprint;
public TrustRoot() {
}
public TrustRoot(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(CertURL);
out.writeString(CertSHA256Fingerprint);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
CertURL = in.readString();
CertSHA256Fingerprint = in.readString();
}
}
public static final Parcelable.Creator<TrustRoot> CREATOR = new Parcelable.Creator<TrustRoot>() {
public TrustRoot createFromParcel(Parcel in) {
return new TrustRoot(in);
}
public TrustRoot[] newArray(int size) {
return new TrustRoot[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Policy/PolicyUpdate/UsernamePassword
* PerProviderSubscription/<X+>/SubscriptionUpdate/UsernamePassword
* PerProviderSubscription/<X+>/Credential/UsernamePassword
**/
public static class UsernamePassword implements Parcelable {
public String Username;
public String Password;
//following are Credential node used only
public boolean MachineManaged;
public String SoftTokenApp;
public String AbleToShare;
public EAPMethod eAPMethod = new EAPMethod();
public UsernamePassword() {
}
public UsernamePassword(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(Username);
out.writeString(Password);
out.writeInt(MachineManaged ? 1 : 0);
out.writeString(SoftTokenApp);
out.writeString(AbleToShare);
out.writeParcelable(eAPMethod, flags);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
Username = in.readString();
Password = in.readString();
MachineManaged = (in.readInt() == 1) ? true : false;
SoftTokenApp = in.readString();
AbleToShare = in.readString();
eAPMethod = in.readParcelable(EAPMethod.class.getClassLoader());
}
}
public static final Parcelable.Creator<UsernamePassword> CREATOR = new Parcelable.Creator<UsernamePassword>() {
public UsernamePassword createFromParcel(Parcel in) {
return new UsernamePassword(in);
}
public UsernamePassword[] newArray(int size) {
return new UsernamePassword[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Credential/UsernamePassword/EAPMethod
**/
public static class EAPMethod implements Parcelable {
public String EAPType;
public String VendorId;
public String VendorType;
public String InnerEAPType;
public String InnerVendorId;
public String InnerVendorType;
public String InnerMethod;
public EAPMethod() {
}
public EAPMethod(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(EAPType);
out.writeString(VendorId);
out.writeString(VendorType);
out.writeString(InnerEAPType);
out.writeString(InnerVendorId);
out.writeString(InnerVendorType);
out.writeString(InnerMethod);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
EAPType = in.readString();
VendorId = in.readString();
VendorType = in.readString();
InnerEAPType = in.readString();
InnerVendorId = in.readString();
InnerVendorType = in.readString();
InnerMethod = in.readString();
}
}
public static final Parcelable.Creator<EAPMethod> CREATOR = new Parcelable.Creator<EAPMethod>() {
public EAPMethod createFromParcel(Parcel in) {
return new EAPMethod(in);
}
public EAPMethod[] newArray(int size) {
return new EAPMethod[size];
}
};
}
/**
* PerProviderSubscription/<X+>/HomeSP
**/
public static class HomeSP implements Parcelable {
public HashMap<String, NetworkID> networkID = new HashMap<String, NetworkID>();
public String FriendlyName;
public String IconURL;
public String FQDN;
public HashMap<String, HomeOIList> homeOIList = new HashMap<String, HomeOIList>();
public HashMap<String, OtherHomePartners> otherHomePartners = new HashMap<String, OtherHomePartners>();
public String RoamingConsortiumOI;
public NetworkID createNetworkID(String name, String ssid, String hessid) {
NetworkID obj = new NetworkID(name, ssid, hessid);
networkID.put(name, obj);
return obj;
}
public HomeOIList createHomeOIList(String name, String homeoi, boolean required) {
HomeOIList obj = new HomeOIList(name, homeoi, required);
homeOIList.put(name, obj);
return obj;
}
public OtherHomePartners createOtherHomePartners(String name, String fqdn) {
OtherHomePartners obj = new OtherHomePartners(name, fqdn);
otherHomePartners.put(name, obj);
return obj;
}
public HomeSP() {
}
public HomeSP(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeMap(networkID);
out.writeString(FriendlyName);
out.writeString(IconURL);
out.writeString(FQDN);
out.writeMap(homeOIList);
out.writeMap(otherHomePartners);
out.writeString(RoamingConsortiumOI);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
in.readMap(networkID, NetworkID.class.getClassLoader());
FriendlyName = in.readString();
IconURL = in.readString();
FQDN = in.readString();
in.readMap(homeOIList, HomeOIList.class.getClassLoader());
in.readMap(otherHomePartners, OtherHomePartners.class.getClassLoader());
RoamingConsortiumOI = in.readString();
}
}
public static final Parcelable.Creator<HomeSP> CREATOR = new Parcelable.Creator<HomeSP>() {
public HomeSP createFromParcel(Parcel in) {
return new HomeSP(in);
}
public HomeSP[] newArray(int size) {
return new HomeSP[size];
}
};
}
/**
* PerProviderSubscription/<X+>/HomeSP/NetworkID
**/
public static class NetworkID implements Parcelable {
public String nodeName;
public String SSID;
public String HESSID;
public NetworkID(String nn, String s, String h) {
nodeName = nn;
SSID = s;
HESSID = h;
}
public NetworkID() {
}
public NetworkID(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeString(SSID);
out.writeString(HESSID);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
SSID = in.readString();
HESSID = in.readString();
}
}
public static final Parcelable.Creator<NetworkID> CREATOR = new Parcelable.Creator<NetworkID>() {
public NetworkID createFromParcel(Parcel in) {
return new NetworkID(in);
}
public NetworkID[] newArray(int size) {
return new NetworkID[size];
}
};
}
/**
* PerProviderSubscription/<X+>/HomeSP/HomeOIList
**/
public static class HomeOIList implements Parcelable {
public String nodeName;
public String HomeOI;
public boolean HomeOIRequired;
public HomeOIList(String nn, String h, boolean r) {
nodeName = nn;
HomeOI = h;
HomeOIRequired = r;
}
public HomeOIList() {
}
public HomeOIList(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeString(HomeOI);
out.writeInt(HomeOIRequired ? 1 : 0);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
HomeOI = in.readString();
HomeOIRequired = (in.readInt() == 1) ? true : false;
}
}
public static final Parcelable.Creator<HomeOIList> CREATOR = new Parcelable.Creator<HomeOIList>() {
public HomeOIList createFromParcel(Parcel in) {
return new HomeOIList(in);
}
public HomeOIList[] newArray(int size) {
return new HomeOIList[size];
}
};
}
/**
* PerProviderSubscription/<X+>/HomeSP/OtherHomePartners
**/
public static class OtherHomePartners implements Parcelable {
public String nodeName;
public String FQDN;
public OtherHomePartners(String nn, String f) {
nodeName = nn;
FQDN = f;
}
public OtherHomePartners() {
}
public OtherHomePartners(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(nodeName);
out.writeString(FQDN);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
nodeName = in.readString();
FQDN = in.readString();
}
}
public static final Parcelable.Creator<OtherHomePartners> CREATOR = new Parcelable.Creator<OtherHomePartners>() {
public OtherHomePartners createFromParcel(Parcel in) {
return new OtherHomePartners(in);
}
public OtherHomePartners[] newArray(int size) {
return new OtherHomePartners[size];
}
};
}
/**
* PerProviderSubscription/<X+>/SubscriptionParameters
**/
public static class SubscriptionParameters implements Parcelable {
public String CreationDate;
public String ExpirationDate;
public String TypeOfSubscription;
public UsageLimits usageLimits = new UsageLimits();
public SubscriptionParameters() {
}
public SubscriptionParameters(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(CreationDate);
out.writeString(ExpirationDate);
out.writeString(TypeOfSubscription);
out.writeParcelable(usageLimits, flags);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
CreationDate = in.readString();
ExpirationDate = in.readString();
TypeOfSubscription = in.readString();
usageLimits = in.readParcelable(UsageLimits.class.getClassLoader());
}
}
public static final Parcelable.Creator<SubscriptionParameters> CREATOR = new Parcelable.Creator<SubscriptionParameters>() {
public SubscriptionParameters createFromParcel(Parcel in) {
return new SubscriptionParameters(in);
}
public SubscriptionParameters[] newArray(int size) {
return new SubscriptionParameters[size];
}
};
}
/**
* PerProviderSubscription/<X+>/SubscriptionParameters/UsageLimits
**/
public static class UsageLimits implements Parcelable {
public String DataLimit;
public String StartDate;
public String TimeLimit;
public String UsageTimePeriod;
public UsageLimits() {
}
public UsageLimits(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(DataLimit);
out.writeString(StartDate);
out.writeString(TimeLimit);
out.writeString(UsageTimePeriod);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
DataLimit = in.readString();
StartDate = in.readString();
TimeLimit = in.readString();
UsageTimePeriod = in.readString();
}
}
public static final Parcelable.Creator<UsageLimits> CREATOR = new Parcelable.Creator<UsageLimits>() {
public UsageLimits createFromParcel(Parcel in) {
return new UsageLimits(in);
}
public UsageLimits[] newArray(int size) {
return new UsageLimits[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Credential
**/
public static class Credential implements Parcelable {
public String CreationDate;
public String ExpirationDate;
public UsernamePassword usernamePassword = new UsernamePassword();
public DigitalCertificate digitalCertificate = new DigitalCertificate();
public String Realm;
public boolean CheckAAAServerCertStatus;
public SIM sim = new SIM();
public Credential() {
}
public Credential(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(CreationDate);
out.writeString(ExpirationDate);
out.writeParcelable(usernamePassword, flags);
out.writeParcelable(digitalCertificate, flags);
out.writeString(Realm);
out.writeInt(CheckAAAServerCertStatus ? 1 : 0);
out.writeParcelable(sim, flags);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
CreationDate = in.readString();
ExpirationDate = in.readString();
usernamePassword = in.readParcelable(UsernamePassword.class.getClassLoader());
digitalCertificate = in.readParcelable(DigitalCertificate.class.getClassLoader());
Realm = in.readString();
CheckAAAServerCertStatus = (in.readInt() == 1) ? true : false;
sim = in.readParcelable(SIM.class.getClassLoader());
}
}
public static final Parcelable.Creator<Credential> CREATOR = new Parcelable.Creator<Credential>() {
public Credential createFromParcel(Parcel in) {
return new Credential(in);
}
public Credential[] newArray(int size) {
return new Credential[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Credential/DigitalCertificate
**/
public static class DigitalCertificate implements Parcelable {
public String CertificateType;
public String CertSHA256Fingerprint;
public DigitalCertificate() {
}
public DigitalCertificate(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(CertificateType);
out.writeString(CertSHA256Fingerprint);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
CertificateType = in.readString();
CertSHA256Fingerprint = in.readString();
}
}
public static final Parcelable.Creator<DigitalCertificate> CREATOR = new Parcelable.Creator<DigitalCertificate>() {
public DigitalCertificate createFromParcel(Parcel in) {
return new DigitalCertificate(in);
}
public DigitalCertificate[] newArray(int size) {
return new DigitalCertificate[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Credential/SIM
**/
public static class SIM implements Parcelable {
public String IMSI;
public String EAPType;
public SIM() {
}
public SIM(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(IMSI);
out.writeString(EAPType);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
IMSI = in.readString();
EAPType = in.readString();
}
}
public static final Parcelable.Creator<SIM> CREATOR = new Parcelable.Creator<SIM>() {
public SIM createFromParcel(Parcel in) {
return new SIM(in);
}
public SIM[] newArray(int size) {
return new SIM[size];
}
};
}
/**
* PerProviderSubscription/<X+>/Extension
**/
public static class Extension {
public String empty;
}
public WifiPasspointDmTree() {
}
public WifiPasspointDmTree(Parcel in) {
readFromParcel(in);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeMap(spFqdn);
}
public void readFromParcel(Parcel in) {
if (in == null) {
//log here
} else {
in.readMap(spFqdn, SpFqdn.class.getClassLoader());
}
}
public static final Parcelable.Creator<WifiPasspointDmTree> CREATOR = new Parcelable.Creator<WifiPasspointDmTree>() {
public WifiPasspointDmTree createFromParcel(Parcel in) {
return new WifiPasspointDmTree(in);
}
public WifiPasspointDmTree[] newArray(int size) {
return new WifiPasspointDmTree[size];
}
};
}