# LowpanInterface

Summary:[Nested Classes](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#nestedclasses)\|[Constants](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#constants)\|[Methods](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#inhmethods)\|[\[Expand All\]](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#)  

# LowpanInterface

`
public


class
LowpanInterface
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


``


`

|---|--------------------------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | com.google.android.things.lowpan.LowpanInterface |

<br />

*** ** * ** ***

Class for managing a specific Low-power Wireless Personal Area Network (LoWPAN) interface.  
**See also:**

- [LowpanManager](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanManager)
- [LowpanScanner](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanScanner)
- [LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams)
- [LowpanIdentity](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanIdentity)
- [LowpanCredential](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanCredential)

## Summary

|                                                                                                                             ### Nested classes                                                                                                                              ||
|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` class` | [LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback) Callback base class for[LowpanInterface](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface). |

|                                                                    ### Constants                                                                    ||
|-------|----------------------------------------------------------------------------------------------------------------------------------------------|
| `int` | [ROLE_DETACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_DETACHED) Detached role.       |
| `int` | [ROLE_END_DEVICE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_END_DEVICE) End-device role. |
| `int` | [ROLE_LEADER](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_LEADER) Leader role.             |
| `int` | [ROLE_ROUTER](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_ROUTER) Router role.             |
| `int` | [STATE_ATTACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHED) Attached state.    |
| `int` | [STATE_ATTACHING](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHING) Attaching state. |
| `int` | [STATE_DISABLED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_DISABLED) Disabled state.    |
| `int` | [STATE_FAULT](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_FAULT) Fault state.             |
| `int` | [STATE_OFFLINE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_OFFLINE) Offline state.       |

|                                                                                                                                                                                                                                                                                                                                                                  ### Public methods                                                                                                                                                                                                                                                                                                                                                                   ||
|----------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` `[LowpanScanner](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanScanner)                       | ` `[createScanner](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#createScanner())`() ` Creates a new[LowpanScanner](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanScanner)object for this interface.                                                                                                                                                                                                                                                                                                                                    |
| ` void`                                                                                                                          | ` `[form](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#form(com.google.android.things.lowpan.LowpanProvisioningParams))`(`[LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams)` params) ` Forms a new network with the given network information optional credential.                                                                                                                                                                                                                          |
| ` `[LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams) | ` `[getLowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getLowpanProvisioningParams(boolean))`(boolean includeCredential) ` Fetches the current[LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams).                                                                                                                                                                                                                                                                     |
| ` `[String](https://developer.android.com/reference/java/lang/String)                                                            | ` `[getName](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getName())`() ` Returns the name of this network interface.                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ` int`                                                                                                                           | ` `[getRole](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getRole())`() ` Returns the current role of the interface.                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ` int`                                                                                                                           | ` `[getState](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getState())`() ` Returns interface state.                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ` `[String[]](https://developer.android.com/reference/java/lang/String)                                                          | ` `[getSupportedNetworkTypes](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getSupportedNetworkTypes())`() ` Returns the types of networks supported by this interface.                                                                                                                                                                                                                                                                                                                                                                                                  |
| ` boolean`                                                                                                                       | ` `[isEnabled](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#isEnabled())`() ` Indicates if the interface is enabled or disabled.                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ` boolean`                                                                                                                       | ` `[isProvisioned](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#isProvisioned())`() ` Indicates if this interface is currently provisioned for a network.                                                                                                                                                                                                                                                                                                                                                                                                               |
| ` void`                                                                                                                          | ` `[join](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#join(com.google.android.things.lowpan.LowpanProvisioningParams))`(`[LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams)` params) ` Attempts to join a pre-existing nearby network with the given provisioning parameters.                                                                                                                                                                                                               |
| ` void`                                                                                                                          | ` `[leave](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#leave())`() ` Bring down the network interface and forget all non-volatile details about the current network.                                                                                                                                                                                                                                                                                                                                                                                                   |
| ` void`                                                                                                                          | ` `[provision](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#provision(com.google.android.things.lowpan.LowpanProvisioningParams))`(`[LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams)` params) ` Provision the interface for the network described by identity and credential.                                                                                                                                                                                                              |
| ` void`                                                                                                                          | ` `[registerCallback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#registerCallback(android.os.Handler, com.google.android.things.lowpan.LowpanInterface.Callback))`(`[Handler](https://developer.android.com/reference/android/os/Handler.html)` handler, `[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)` cb) ` Registers a subclass of[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)to receive events. |
| ` void`                                                                                                                          | ` `[registerCallback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#registerCallback(com.google.android.things.lowpan.LowpanInterface.Callback))`(`[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)` cb) ` Registers a subclass of[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)to receive events.                                                                                                           |
| ` void`                                                                                                                          | ` `[reset](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#reset())`() ` Resets this network interface, returning all volatile state to default values.                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ` void`                                                                                                                          | ` `[setEnabled](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#setEnabled(boolean))`(boolean enabled) ` Enables or disables the interface.                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ` void`                                                                                                                          | ` `[unregisterCallback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#unregisterCallback(com.google.android.things.lowpan.LowpanInterface.Callback))`(`[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)` cb) ` Unregisters a previously registered callback class.                                                                                                                                                                                                                          |

| ### Inherited methods |
|-----------------------|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#)From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                                                                                                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                                                                                                                                                                                                                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                                                                                                                                                                                                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                                                                                                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                                                                                                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                                                                                                                                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                                                                                                                                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                                                                                                                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long, int))`(long millis, int nanos) ` Causes the current thread to wait until another thread invokes the[notify()](https://developer.android.com/reference/java/lang/Object.html#notify())method or the[notifyAll()](https://developer.android.com/reference/java/lang/Object.html#notifyAll())method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long millis) ` Causes the current thread to wait until either another thread invokes the[notify()](https://developer.android.com/reference/java/lang/Object.html#notify())method or the[notifyAll()](https://developer.android.com/reference/java/lang/Object.html#notifyAll())method for this object, or a specified amount of time has elapsed.                                                                 | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until another thread invokes the[notify()](https://developer.android.com/reference/java/lang/Object.html#notify())method or the[notifyAll()](https://developer.android.com/reference/java/lang/Object.html#notifyAll())method for this object.                                                                                                                                  | ||

## Constants

### ROLE_DETACHED

```
int ROLE_DETACHED
```

Detached role. The interface is not currently participating on the network, either because it cannot find a parent or the interface is not currently provisioned.

<br />

**See also:**

- [getRole()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getRole())

Constant Value: 0 (0x00000000)  

### ROLE_END_DEVICE

```
int ROLE_END_DEVICE
```

End-device role. End devices do not route traffic on behalf of other nodes.

<br />

**See also:**

- [getRole()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getRole())

Constant Value: 1 (0x00000001)  

### ROLE_LEADER

```
int ROLE_LEADER
```

Leader role.

On Thread networks, for each partition/fragment one router is designated as the "leader", which means that it is considered authorative for all network data. In most cases this role can be considered as a synonym to[ROLE_ROUTER](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_ROUTER).

Not all network types support this role.

<br />

**See also:**

- [getRole()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getRole())

Constant Value: 3 (0x00000003)  

### ROLE_ROUTER

```
int ROLE_ROUTER
```

Router role. Routers help route traffic around the mesh network.

Note that this role is independent of the device being a "border router".

Not all network types support this role.

<br />

**See also:**

- [getRole()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getRole())

Constant Value: 2 (0x00000002)  

### STATE_ATTACHED

```
int STATE_ATTACHED
```

Attached state.

This state indicates that we are an active participant on a network that has at least one other peer node in range.

The Interface can enter this state from[STATE_ATTACHING](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHING).

<br />

**See also:**

- [STATE_ATTACHING](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHING)
- [getState()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getState())

Constant Value: 3 (0x00000003)  

### STATE_ATTACHING

```
int STATE_ATTACHING
```

Attaching state.

The interface enters this state when it starts the process of trying to find other nodes so that it can attach to any pre-existing network fragment, or when it is in the process of calculating the optimal values for unspecified parameters when forming a new network.

The interface may stay in this state for a prolonged period of time (or may spontaneously enter this state from[STATE_ATTACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHED)) if the underlying network technology is heirarchical (like ZigBee IP) or if the device role is that of an "end-device" ([ROLE_END_DEVICE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_END_DEVICE)). This is because such roles cannot create their own network fragments.

<br />

**See also:**

- [STATE_ATTACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHED)
- [getState()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getState())

Constant Value: 2 (0x00000002)  

### STATE_DISABLED

```
int STATE_DISABLED
```

Disabled state.

The interface will enter this state when the interface is disabled. In this state, most of the methods in[LowpanInterface](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface)will fail with[InterfaceDisabledException](https://developer.android.com/reference/com/google/android/things/lowpan/InterfaceDisabledException).

This state is controlled by the method[setEnabled(boolean)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#setEnabled(boolean)).

This state can be entered spontaneously from any other state.

<br />

**See also:**

- [getState()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getState())
- [STATE_OFFLINE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_OFFLINE)

Constant Value: 6 (0x00000006)  

### STATE_FAULT

```
int STATE_FAULT
```

Fault state.

The interface will enter this state when the driver has detected some sort of problem from which it was not immediately able to recover.

This state can be entered spontaneously from any other state. Calling[reset()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#reset())will cause the device to return to the[STATE_OFFLINE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_OFFLINE)state.

<br />

**See also:**

- [getState()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getState())
- [STATE_OFFLINE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_OFFLINE)

Constant Value: 4 (0x00000004)  

### STATE_OFFLINE

```
int STATE_OFFLINE
```

Offline state.

This is the initial state of the LoWPAN interface when the underlying driver starts. In this state the NCP is idle and not connected to any network.

This state can be explicitly entered by calling[reset()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#reset()),[leave()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#leave()), or`setUp(false)`, with the later two only working if we were not previously in the[STATE_FAULT](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_FAULT)state.

<br />

**See also:**

- [getState()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getState())
- [STATE_FAULT](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_FAULT)

Constant Value: 0 (0x00000000)

## Public methods

### createScanner

```
LowpanScanner createScanner ()
```

Creates a new[LowpanScanner](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanScanner)object for this interface.

This method allocates a new unique object for each call.

<br />

|                                                                                                                   Returns                                                                                                                   ||
|---------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------|
| [LowpanScanner](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanScanner) | Newly created[LowpanScanner](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanScanner)object. <br /> |

**See also:**

- [LowpanScanner](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanScanner)  

### form

```
void form (LowpanProvisioningParams params)
```

Forms a new network with the given network information optional credential. Unspecified fields in the network information will be filled in with reasonable values. If the network credential is unspecified, one will be generated automatically.

Upon success, the interface will be up and attached to the newly formed network.

This method returns immediately. You can be notified when this process is complete by adding a callback and handling the following:

- [onProvisionException(Exception)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onProvisionException(java.lang.Exception)), which is called to report errors.
- [onStateChanged(int)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onStateChanged(int)), which will transition to the state[STATE_ATTACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHED)upon success.

<br />

<br />

|                                                                                                                                                        Parameters                                                                                                                                                         ||
|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `params` | `LowpanProvisioningParams`: The identity and credential of the network to form. The object doesn't need to be fully specified: by leaving specific fields blank (like the channel, xpanid, credential, etc), you are indicating that you want the interface to choose reasonable non-conflicting values. <br /> |

|                                                                              Throws                                                                               ||
|-----------------------------------------------------------------------------------------------------------------------------------|--------------------------------|
| [NullPointerException](https://developer.android.com/reference/java/lang/NullPointerException)                                    | if`params`is`null`.            |
| [InterfaceDisabledException](https://developer.android.com/reference/com/google/android/things/lowpan/InterfaceDisabledException) | if the interface was disabled. |
| [LowpanException](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanException)                       |                                |

**See also:**

- [onProvisionException(Exception)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onProvisionException(java.lang.Exception))
- [join(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#join(com.google.android.things.lowpan.LowpanProvisioningParams))
- [provision(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#provision(com.google.android.things.lowpan.LowpanProvisioningParams))  

### getLowpanProvisioningParams

```
LowpanProvisioningParams getLowpanProvisioningParams (boolean includeCredential)
```

Fetches the current[LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams).

<br />

|                                                                                                                                                                                           Parameters                                                                                                                                                                                           ||
|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `includeCredential` | `boolean`:`false`if the[LowpanCredential](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanCredential)should be omitted,`true`if the[LowpanCredential](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanCredential)should be included. If included, the`READ_LOWPAN_CREDENTIAL`permission is required. <br /> |

|                                                                                                         Returns                                                                                                          ||
|-------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| [LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams) | The current LowpanProvisioningParams, or`null`if the interface is not provisioned. <br /> |

|                                                                                              Throws                                                                                               ||
|------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|
| [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) | if`includeCredential`was set to`true`but the process didn't have the`READ_LOWPAN_CREDENTIAL`permission. |

**See also:**

- [LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams)  

### getName

```
String getName ()
```

Returns the name of this network interface.

<br />

|                                  Returns                                   ||
|--------------------------------------------------------------------|--------|
| [String](https://developer.android.com/reference/java/lang/String) | <br /> |

### getRole

```
int getRole ()
```

Returns the current role of the interface.

If the interface is disabled, always returns[ROLE_DETACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_DETACHED).

<br />

|    Returns    ||
|-------|--------|
| `int` | <br /> |

**See also:**

- [ROLE_DETACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_DETACHED)
- [ROLE_END_DEVICE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_END_DEVICE)
- [ROLE_ROUTER](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_ROUTER)
- [ROLE_LEADER](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#ROLE_LEADER)  

### getState

```
int getState ()
```

Returns interface state.

If the interface is disabled, always returns[STATE_OFFLINE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_OFFLINE).

<br />

|                      Returns                      ||
|-------|--------------------------------------------|
| `int` | The current state of the interface. <br /> |

**See also:**

- [STATE_DISABLED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_DISABLED)
- [STATE_OFFLINE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_OFFLINE)
- [STATE_ATTACHING](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHING)
- [STATE_ATTACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHED)
- [STATE_FAULT](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_FAULT)  

### getSupportedNetworkTypes

```
String[] getSupportedNetworkTypes ()
```

Returns the types of networks supported by this interface.

<br />

|                                   Returns                                    ||
|----------------------------------------------------------------------|--------|
| [String[]](https://developer.android.com/reference/java/lang/String) | <br /> |

|                                                     Throws                                                     ||
|-------------------------------------------------------------------------------------------------------------|---|
| [LowpanException](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanException) |   |

### isEnabled

```
boolean isEnabled ()
```

Indicates if the interface is enabled or disabled.

<br />

|      Returns      ||
|-----------|--------|
| `boolean` | <br /> |

**See also:**

- [setEnabled(boolean)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#setEnabled(boolean))
- [InterfaceDisabledException](https://developer.android.com/reference/com/google/android/things/lowpan/InterfaceDisabledException)  

### isProvisioned

```
boolean isProvisioned ()
```

Indicates if this interface is currently provisioned for a network.

<br />

|      Returns      ||
|-----------|--------|
| `boolean` | <br /> |

### join

```
void join (LowpanProvisioningParams params)
```

Attempts to join a pre-existing nearby network with the given provisioning parameters.

Upon success, the interface will be up and attached to the newly joined network.

This method returns immediately. You can be notified when this process is complete by adding a callback and handling the following:

- [onProvisionException(Exception)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onProvisionException(java.lang.Exception)), which is called to report errors.
- [onStateChanged(int)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onStateChanged(int)), which will transition to the state[STATE_ATTACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHED).

<br />

<br />

|                                            Parameters                                            ||
|----------|----------------------------------------------------------------------------------------|
| `params` | `LowpanProvisioningParams`: The identity and credential of the network to join. <br /> |

|                                                                                Throws                                                                                 ||
|-----------------------------------------------------------------------------------------------------------------------------------|------------------------------------|
| [InterfaceDisabledException](https://developer.android.com/reference/com/google/android/things/lowpan/InterfaceDisabledException) | if the interface was disabled.     |
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException)                            | if`params`is missing a credential. |
| [NullPointerException](https://developer.android.com/reference/java/lang/NullPointerException)                                    | if`params`is`null`.                |
| [LowpanException](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanException)                       |                                    |

**See also:**

- [onProvisionException(Exception)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onProvisionException(java.lang.Exception))
- [JoinFailedAtAuthException](https://developer.android.com/reference/com/google/android/things/lowpan/JoinFailedAtAuthException)
- [JoinFailedAtScanException](https://developer.android.com/reference/com/google/android/things/lowpan/JoinFailedAtScanException)
- [JoinFailedException](https://developer.android.com/reference/com/google/android/things/lowpan/JoinFailedException)
- [form(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#form(com.google.android.things.lowpan.LowpanProvisioningParams))
- [provision(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#provision(com.google.android.things.lowpan.LowpanProvisioningParams))  

### leave

```
void leave ()
```

Bring down the network interface and forget all non-volatile details about the current network.

This method returns immediately. You can be notified when this process is complete by adding a callback and handling the following:

- [onStateChanged(int)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onStateChanged(int)), which will transition to the state[STATE_OFFLINE](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_OFFLINE).
- [onLowpanIdentityChanged(LowpanIdentity)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onLowpanIdentityChanged(com.google.android.things.lowpan.LowpanIdentity)), which will be called with a`null`argument.

If the interface was not previously provisioned, calling this method does nothing.

<br />

|                                                                              Throws                                                                               ||
|-----------------------------------------------------------------------------------------------------------------------------------|--------------------------------|
| [InterfaceDisabledException](https://developer.android.com/reference/com/google/android/things/lowpan/InterfaceDisabledException) | if the interface was disabled. |
| [LowpanException](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanException)                       |                                |

**See also:**

- [join(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#join(com.google.android.things.lowpan.LowpanProvisioningParams))
- [form(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#form(com.google.android.things.lowpan.LowpanProvisioningParams))
- [provision(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#provision(com.google.android.things.lowpan.LowpanProvisioningParams))
- [getLowpanProvisioningParams(boolean)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getLowpanProvisioningParams(boolean))  

### provision

```
void provision (LowpanProvisioningParams params)
```

Provision the interface for the network described by identity and credential. This is similar to[join(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#join(com.google.android.things.lowpan.LowpanProvisioningParams)), except that (assuming the identity and credential are valid) it will always succeed, even if there are no peers nearby.

This method returns immediately. You can be notified when this process is complete by adding a callback and handling the following:

- [onProvisionException(Exception)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onProvisionException(java.lang.Exception)), which is called to report errors.
- [onStateChanged(int)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onStateChanged(int)), which will transition to the state[STATE_ATTACHED](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_ATTACHED).

<br />

<br />

|                                                       Parameters                                                        ||
|----------|---------------------------------------------------------------------------------------------------------------|
| `params` | `LowpanProvisioningParams`: The identity and credential of the network to provision the interface for. <br /> |

|                                                                                Throws                                                                                 ||
|-----------------------------------------------------------------------------------------------------------------------------------|------------------------------------|
| [InterfaceDisabledException](https://developer.android.com/reference/com/google/android/things/lowpan/InterfaceDisabledException) | if the interface was disabled.     |
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException)                            | if`params`is missing a credential. |
| [NullPointerException](https://developer.android.com/reference/java/lang/NullPointerException)                                    | if`params`is`null`.                |
| [LowpanException](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanException)                       |                                    |

**See also:**

- [join(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#join(com.google.android.things.lowpan.LowpanProvisioningParams))
- [form(LowpanProvisioningParams)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#form(com.google.android.things.lowpan.LowpanProvisioningParams))
- [leave()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#leave())
- [getLowpanProvisioningParams(boolean)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#getLowpanProvisioningParams(boolean))  

### registerCallback

```
void registerCallback (Handler handler, 
                LowpanInterface.Callback cb)
```

Registers a subclass of[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)to receive events.

<br />

|                                                                                                    Parameters                                                                                                    ||
|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `handler` | `Handler`: If not`null`, events will be dispatched via the given handler object. If`null`, the thread upon which events will be dispatched is unspecified. <br />                                     |
| `cb`      | `LowpanInterface.Callback`: Subclass of[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)which will receive events. <br /> |

**See also:**

- [registerCallback(Callback)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#registerCallback(com.google.android.things.lowpan.LowpanInterface.Callback))
- [unregisterCallback(Callback)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#unregisterCallback(com.google.android.things.lowpan.LowpanInterface.Callback))  

### registerCallback

```
void registerCallback (LowpanInterface.Callback cb)
```

Registers a subclass of[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)to receive events.

The thread upon which events will be dispatched is unspecified.

<br />

|                                                                                                 Parameters                                                                                                  ||
|------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `cb` | `LowpanInterface.Callback`: Subclass of[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)which will receive events. <br /> |

**See also:**

- [ERROR(/#registerCallback(Callback, Handler))](https://developer.android.com/)
- [unregisterCallback(Callback)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#unregisterCallback(com.google.android.things.lowpan.LowpanInterface.Callback))  

### reset

```
void reset ()
```

Resets this network interface, returning all volatile state to default values. Any information stored in non-volatile memory is preserved. If the interface was attached to a network, this method will cause the interface to detach. In that case, once the interface has finished initialization the interface will attempt to reattach to the previous network.

This method is the only way to clear[STATE_FAULT](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_FAULT).

This method returns immediately. You can be notified when this process is complete by adding a callback and handling the following:

- [onStateChanged(int)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback#onStateChanged(int)), which will indicate state changes after reset.

<br />

<br />

|                                                                              Throws                                                                               ||
|-----------------------------------------------------------------------------------------------------------------------------------|--------------------------------|
| [InterfaceDisabledException](https://developer.android.com/reference/com/google/android/things/lowpan/InterfaceDisabledException) | if the interface was disabled. |
| [LowpanException](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanException)                       |                                |

**See also:**

- [STATE_FAULT](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#STATE_FAULT)  

### setEnabled

```
void setEnabled (boolean enabled)
```

Enables or disables the interface.

<br />

|         Parameters          ||
|-----------|------------------|
| `enabled` | `boolean` <br /> |

|                                                     Throws                                                     ||
|-------------------------------------------------------------------------------------------------------------|---|
| [LowpanException](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanException) |   |

**See also:**

- [isEnabled()](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#isEnabled())
- [InterfaceDisabledException](https://developer.android.com/reference/com/google/android/things/lowpan/InterfaceDisabledException)  

### unregisterCallback

```
void unregisterCallback (LowpanInterface.Callback cb)
```

Unregisters a previously registered callback class.

<br />

|                                                                                                             Parameters                                                                                                              ||
|------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `cb` | `LowpanInterface.Callback`: Subclass of[LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)which was previously registered to receive events. <br /> |

**See also:**

- [ERROR(/#registerCallback(Callback, Handler))](https://developer.android.com/)
- [registerCallback(Callback)](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface#registerCallback(com.google.android.things.lowpan.LowpanInterface.Callback))  
-

  ## Classes

  - [LowpanBeaconInfo](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanBeaconInfo)
  - [LowpanCredential](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanCredential)
  - [LowpanEnergyScanResult](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanEnergyScanResult)
  - [LowpanIdentity](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanIdentity)
  - [LowpanIdentity.Builder](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanIdentity.Builder)
  - [LowpanInterface](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface)
  - [LowpanInterface.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanInterface.Callback)
  - [LowpanManager](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanManager)
  - [LowpanManager.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanManager.Callback)
  - [LowpanProvisioningParams](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams)
  - [LowpanProvisioningParams.Builder](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanProvisioningParams.Builder)
  - [LowpanScanner](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanScanner)
  - [LowpanScanner.Callback](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanScanner.Callback)
-

  ## Exceptions

  - [InterfaceDisabledException](https://developer.android.com/reference/com/google/android/things/lowpan/InterfaceDisabledException)
  - [JoinFailedAtAuthException](https://developer.android.com/reference/com/google/android/things/lowpan/JoinFailedAtAuthException)
  - [JoinFailedAtScanException](https://developer.android.com/reference/com/google/android/things/lowpan/JoinFailedAtScanException)
  - [JoinFailedException](https://developer.android.com/reference/com/google/android/things/lowpan/JoinFailedException)
  - [LowpanException](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanException)
  - [LowpanRuntimeException](https://developer.android.com/reference/com/google/android/things/lowpan/LowpanRuntimeException)
  - [NetworkAlreadyExistsException](https://developer.android.com/reference/com/google/android/things/lowpan/NetworkAlreadyExistsException)
  - [OperationCanceledException](https://developer.android.com/reference/com/google/android/things/lowpan/OperationCanceledException)
  - [WrongStateException](https://developer.android.com/reference/com/google/android/things/lowpan/WrongStateException)