L2capNetworkSpecifier


public final class L2capNetworkSpecifier
extends NetworkSpecifier implements Parcelable

java.lang.Object
   ↳ android.net.NetworkSpecifier
     ↳ android.net.L2capNetworkSpecifier


A NetworkSpecifier used to identify an L2CAP network over BLE. An L2CAP network is not symmetrical, meaning there exists both a server (Bluetooth peripheral) and a client (Bluetooth central) node. This specifier contains the information required to request a client L2CAP network using ConnectivityManager.requestNetwork while specifying the remote MAC address, and Protocol/Service Multiplexer (PSM). It can also contain information allocated by the system when reserving a server network using ConnectivityManager.reserveNetwork(NetworkRequest, Handler, NetworkCallback) such as the Protocol/Service Multiplexer (PSM). In both cases, the header compression option must be specified. An L2CAP server network allocates a Protocol/Service Multiplexer (PSM) to be advertised to the client. A new server network must always be reserved using ConnectivityManager#reserveNetwork. The subsequent ConnectivityManager.NetworkCallback.onReserved(android.net.NetworkCapabilities) callback includes an L2CapNetworkSpecifier. The ERROR(/getPsm()) method will return the Protocol/Service Multiplexer (PSM) of the reserved network so that the server can advertise it to the client and the client can connect. An L2CAP server network is backed by a BluetoothServerSocket which can, in theory, accept many connections. However, before SDK version ERROR(/Build.VERSION_CODES.VANILLA_ICE_CREAM) Bluetooth APIs do not expose the channel ID, so these connections are indistinguishable. In practice, this means that the network matching semantics in ConnectivityService will tear down all but the first connection. When the connection between client and server completes, a Network whose capabilities satisfy this L2capNetworkSpecifier will connect and the usual callbacks, such as ERROR(/NetworkCallback#onAvailable), will be called on the callback object passed to ConnectivityManager#reserveNetwork or ConnectivityManager#requestNetwork.

Summary

Nested classes

class L2capNetworkSpecifier.Builder

A builder class for L2capNetworkSpecifier. 

Constants

int HEADER_COMPRESSION_6LOWPAN

Use 6lowpan header compression as specified in rfc6282.

int HEADER_COMPRESSION_ANY

Accept any form of header compression.

int HEADER_COMPRESSION_NONE

Do not compress packets on this network.

int PSM_ANY

Match any Protocol/Service Multiplexer (PSM).

int ROLE_ANY

Match any role.

int ROLE_CLIENT

Specifier describes a client network, i.e., the device is the Bluetooth central.

int ROLE_SERVER

Specifier describes a server network, i.e., the device is the Bluetooth peripheral.

Inherited constants

int CONTENTS_FILE_DESCRIPTOR

Descriptor bit used with describeContents(): indicates that the Parcelable object's flattened representation includes a file descriptor.

int PARCELABLE_WRITE_RETURN_VALUE

Flag for use with writeToParcel(Parcel, int): the object being written is a return value, that is the result of a function such as "Parcelable someFunction()", "void someFunction(out Parcelable)", or "void someFunction(inout Parcelable)".

Fields

public static final Creator<L2capNetworkSpecifier> CREATOR

Public methods

int describeContents()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

int getHeaderCompression()

Returns the compression mechanism for this network.

int getPsm()

Returns the Protocol/Service Multiplexer (PSM) for this network to connect to.

MacAddress getRemoteAddress()

Returns the remote MAC address for this network to connect to.

int getRole()

Returns the role to be used for this network.

void writeToParcel(Parcel dest, int flags)

Flatten this object in to a Parcel.

Inherited methods

Object clone()

Creates and returns a copy of this object.

boolean equals(Object obj)

Indicates whether some other object is "equal to" this one.

void finalize()

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

final Class<?> getClass()

Returns the runtime class of this Object.

int hashCode()

Returns a hash code value for the object.

final void notify()

Wakes up a single thread that is waiting on this object's monitor.

final void notifyAll()

Wakes up all threads that are waiting on this object's monitor.

String toString()

Returns a string representation of the object.

final void wait(long timeoutMillis, int nanos)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait(long timeoutMillis)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait()

Causes the current thread to wait until it is awakened, typically by being notified or interrupted.

abstract int describeContents()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

abstract void writeToParcel(Parcel dest, int flags)

Flatten this object in to a Parcel.

Constants

HEADER_COMPRESSION_6LOWPAN

public static final int HEADER_COMPRESSION_6LOWPAN

Use 6lowpan header compression as specified in rfc6282.

Constant Value: 2 (0x00000002)

HEADER_COMPRESSION_ANY

public static final int HEADER_COMPRESSION_ANY

Accept any form of header compression. This option is only meaningful in NetworkRequests. Specifiers for actual L2CAP networks never have this option set.

Constant Value: 0 (0x00000000)

HEADER_COMPRESSION_NONE

public static final int HEADER_COMPRESSION_NONE

Do not compress packets on this network.

Constant Value: 1 (0x00000001)

PSM_ANY

public static final int PSM_ANY

Match any Protocol/Service Multiplexer (PSM). This PSM value is only meaningful in NetworkRequests. Specifiers for actual L2CAP networks never have this value set.

Constant Value: 0 (0x00000000)

ROLE_ANY

public static final int ROLE_ANY

Match any role. This role is only meaningful in NetworkRequests. Specifiers for actual L2CAP networks never have this role set.

Constant Value: 0 (0x00000000)

ROLE_CLIENT

public static final int ROLE_CLIENT

Specifier describes a client network, i.e., the device is the Bluetooth central.

Constant Value: 1 (0x00000001)

ROLE_SERVER

public static final int ROLE_SERVER

Specifier describes a server network, i.e., the device is the Bluetooth peripheral.

Constant Value: 2 (0x00000002)

Fields

CREATOR

public static final Creator<L2capNetworkSpecifier> CREATOR

Public methods

describeContents

public int describeContents ()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. For example, if the object will include a file descriptor in the output of writeToParcel(android.os.Parcel, int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either 0 or CONTENTS_FILE_DESCRIPTOR

getHeaderCompression

public int getHeaderCompression ()

Returns the compression mechanism for this network.

getPsm

public int getPsm ()

Returns the Protocol/Service Multiplexer (PSM) for this network to connect to.

Returns
int

getRemoteAddress

public MacAddress getRemoteAddress ()

Returns the remote MAC address for this network to connect to. The remote address is only meaningful for networks that have ROLE_CLIENT. When receiving this L2capNetworkSpecifier from Connectivity APIs such as a ConnectivityManager.NetworkCallback, the MAC address is redacted.

Returns
MacAddress This value may be null.

getRole

public int getRole ()

Returns the role to be used for this network.

Returns
int Value is ROLE_ANY, ROLE_CLIENT, or ROLE_SERVER

writeToParcel

public void writeToParcel (Parcel dest, 
                int flags)

Flatten this object in to a Parcel.

Parameters
dest Parcel: This value cannot be null.

flags int: Additional flags about how the object should be written. May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE. Value is either 0 or a combination of Parcelable.PARCELABLE_WRITE_RETURN_VALUE, and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES