# PwmDriver

Summary:[Methods](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver#inhmethods)\|[\[Expand All\]](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver#)  

# PwmDriver

`
public


interface
PwmDriver
`  
`


implements

`[Pwm](https://developer.android.com/reference/com/google/android/things/pio/Pwm)`


`

|----------------------------------------------------|
| com.google.android.things.userdriver.pio.PwmDriver |

<br />

*** ** * ** ***

PWM user driver. A PwmDriver must implement all Pwm functions, but additionally this class provides an open() function that will be called whenever a process obtains ownership of the PWM, to match the existing close() function.

## Summary

|                                                                                                  ### Public methods                                                                                                  ||
|-------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
| ` abstract void`                                                              | ` `[close](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver#close())`() ` Closes the PWM.   |
| ` default `[String](https://developer.android.com/reference/java/lang/String) | ` `[getName](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver#getName())`() ` Returns null. |
| ` abstract void`                                                              | ` `[open](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver#open())`() ` Opens the PWM.      |

| ### Inherited methods |
|-----------------------|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver#)From interface` `[com.google.android.things.pio.Pwm](https://developer.android.com/reference/com/google/android/things/pio/Pwm)` ` |-------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void`                                                              | ` `[close](https://developer.android.com/reference/com/google/android/things/pio/Pwm#close())`() ` Releases the PWM pin.                                                         | | ` default `[String](https://developer.android.com/reference/java/lang/String) | ` `[getName](https://developer.android.com/reference/com/google/android/things/pio/Pwm#getName())`() ` Returns the I/O name.                                                     | | ` abstract void`                                                              | ` `[setEnabled](https://developer.android.com/reference/com/google/android/things/pio/Pwm#setEnabled(boolean))`(boolean enabled) ` Enables the PWM pin.                          | | ` abstract void`                                                              | ` `[setPwmDutyCycle](https://developer.android.com/reference/com/google/android/things/pio/Pwm#setPwmDutyCycle(double))`(double duty_cycle) ` Sets the duty cycle.               | | ` abstract void`                                                              | ` `[setPwmFrequencyHz](https://developer.android.com/reference/com/google/android/things/pio/Pwm#setPwmFrequencyHz(double))`(double freq_hz) ` Sets the frequency of the signal. | ||
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver#)From interface` `[java.io.Closeable](https://developer.android.com/reference/java/io/Closeable)` ` |------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[close](https://developer.android.com/reference/java/io/Closeable#close())`() ` Closes this stream and releases any system resources associated with it. | ||
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver#)From interface` `[java.lang.AutoCloseable](https://developer.android.com/reference/java/lang/AutoCloseable)` ` |------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[close](https://developer.android.com/reference/java/lang/AutoCloseable#close())`() ` Closes this resource, relinquishing any underlying resources. | ||

## Public methods

### close

```
void close ()
```

Closes the PWM. This will be called when the PWM is closed by its owner. Any resources that need to be cleaned up should be done so here. This method may throw IOException to indicate I/O failure, but will still be considered closed and may attempt to be re-opened in the future.

<br />

|                                                                 Throws                                                                  ||
|----------------------------------------------------------------------------|-------------------------------------------------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | on I/O failure; the driver will still be considered closed. |

### getName

```
String getName ()
```

Returns null. I/O user drivers can be registered under any name so this returns null by default. Child classes may override this if other behavior is desired.

<br />

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

### open

```
void open ()
```

Opens the PWM. This will be called when ownership of a PWM is obtained. The driver should do any initialization needed to configure the PWM for use here.

<br />

|                                                           Throws                                                           ||
|----------------------------------------------------------------------------|------------------------------------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | on I/O failure; the driver will remain closed. |

-

  ## Interfaces

  - [GpioDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/GpioDriver)
  - [I2cBusDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/I2cBusDriver)
  - [PwmDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver)
  - [SpiBusDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/SpiBusDriver)
  - [UartDeviceDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/UartDeviceDriver)
-

  ## Classes

  - [PioDriverManager](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PioDriverManager)