template <>

class WireServer

Defined at line 2485 of file fidling/gen/sdk/fidl/fuchsia.hardware.hrtimer/fuchsia.hardware.hrtimer/cpp/fidl/fuchsia.hardware.hrtimer/cpp/wire_messaging.h

Pure-virtual interface to be implemented by a server.

This interface uses typed channels (i.e. |::fidl::ClientEnd

<

::fuchsia_hardware_hrtimer::Device>|

and |::fidl::ServerEnd

<

::fuchsia_hardware_hrtimer::Device>|).

Public Methods

void Start (::fuchsia_hardware_hrtimer::wire::DeviceStartRequest * request, StartCompleter::Sync & completer)

Start the timer `id` to expire after `ticks`.

If `ticks` is 0 then the timer will expire in 0 ticks (immediately).

If the timer `id` was already started, then the previous `Start` is canceled and the driver

will restart the timer. Note that this may race with the expiration of the previous timer,

for instance the notification process may be already started and a new `Start` call won't

be able to stop a notification that is already in flight.

If the specified `id` is invalid, then this call will return `INVALID_ARGS`.

If the specified `resolution` is not supported per the `resolutions` provided by

`GetProperties`, then this call will return `INVALID_ARGS`.

If the specified `ticks` is beyond the range supported for the timer as provided by

`GetProperties`, then this call will return `INVALID_ARGS`.

If the driver encounters an internal error, then this call will return `INTERNAL_ERROR`.

void ReadTimer (::fuchsia_hardware_hrtimer::wire::DeviceReadTimerRequest * request, ReadTimerCompleter::Sync & completer)

Read the current timer's set or timeout value.

The returned ticks are in time-units relative to the given resolution.

Use `GetProperties()` to determine the available resolution(s).

Errors:

BAD_STATE: no readable timer currently exists.

INVALID_ARGS: `id` or `resolution` are invalid or unsupported values.

NOT_SUPPORTED: if `supports_read` is false, or the method is otherwise

not implemented.

INTERNAL_ERROR: internal runtime error.

void ReadClock (::fuchsia_hardware_hrtimer::wire::DeviceReadClockRequest * request, ReadClockCompleter::Sync & completer)

Read the current timer's clock value.

The returned ticks are in time-units relative to the given resolution.

Use `GetProperties()` to determine the available resolution(s).

Errors:

BAD_STATE: no clock is currently running.

INVALID_ARGS: `id` or `resolution` are invalid or unsupported values.

NOT_SUPPORTED: if `supports_read` is false, or the method is otherwise

not implemented.

INTERNAL_ERROR: internal runtime error.

void Stop (::fuchsia_hardware_hrtimer::wire::DeviceStopRequest * request, StopCompleter::Sync & completer)

Stops the timer `id`.

Note that this may race with the expiration of the timer, for instance notification via

an event set with `SetEvent` may be already in flight.

If the specified `id` is invalid, then this call will return `INVALID_ARGS`.

If the driver encounters an internal error, then this call will return `INTERNAL_ERROR`.

void GetTicksLeft (::fuchsia_hardware_hrtimer::wire::DeviceGetTicksLeftRequest * request, GetTicksLeftCompleter::Sync & completer)

Get the current time in ticks left in timer `id` until expiration.

If the specified `id` is invalid, then this call will return `INVALID_ARGS`.

void SetEvent (::fuchsia_hardware_hrtimer::wire::DeviceSetEventRequest * request, SetEventCompleter::Sync & completer)

Sets a Zircon Event to be notified of the timer expiration.

The timer expiration will be notified via the ZX_EVENT_SIGNALED signal.

The client is responsible for clearing the ZX_EVENT_SIGNALED signal.

Any previously event set for the specific `id` is replaced. Note that this may race with

the event signaling from the expiration of a timer already started.

To guarantee that an event is delivered upon timer expiration, this method must be

called before calling `Start`.

If the specified `id` is invalid, then this call will return `INVALID_ARGS`.

If this method is not supported for the given `id`, then this call will return

`NOT_SUPPORTED`.

If the driver encounters an internal error, then this call will return `INTERNAL_ERROR`.

void StartAndWait (::fuchsia_hardware_hrtimer::wire::DeviceStartAndWaitRequest * request, StartAndWaitCompleter::Sync & completer)

Start the timer `id` to expire after `ticks` and waits until the timer expires with

support for preventing suspension via the Power Framework.

The driver will signal the `setup_event` event once the timer has been setup using the

ZX_EVENT_SIGNALED signal. This allows a client to know that it is safe to allow the

system to suspend. The client is responsible for clearing this event.

The driver will not respond to this call (hang) until the timer has triggered.

Calling `Stop` on the timer will abort this call and return `CANCELED`. Note that this

may race with the expiration of the timer.

A driver supporting this call must be able to get a lease on a power element that keeps

the system from suspending. This lease is returned to the client via the `keep_alive`

LeaseToken channel field. When `keep_alive` is closed, then the driver lease keeping the

system from suspending will be dropped. Hence, to guarantee that the system is not

suspended by the Power Framework a client must either keep this `keep_alive` token for

as long as the system needs to not suspend, or a client must get its own lease from the

Power Framework to prevent suspension before it drops `keep_alive`.

If the specified `id` is invalid, then this call will return `INVALID_ARGS`.

If this method is not supported for the given `id`, then this call will return

`NOT_SUPPORTED`.

If the driver does not have a `keep_alive` token to provide to the client, then this

call will return `BAD_STATE`.

If the driver encounters an internal error, then this call will return `INTERNAL_ERROR`.

void StartAndWait2 (::fuchsia_hardware_hrtimer::wire::DeviceStartAndWait2Request * request, StartAndWait2Completer::Sync & completer)

Start timer `id` and wait for it to expire after `ticks` ticks.

The driver will not respond to this call (hang) until the timer has triggered.

Calling `Stop` on the timer will abort this call and return `CANCELED`. Note that this

may race with the expiration of the timer.

This method keeps the system awake (prevents suspension) while the timer is setup using the

mandatory passed-in `setup_keep_alive` `LeaseToken`.

When the timer expires this method returns a second `expiration_keep_alive`

`LeaseToken` to prevent suspension at the time of expiration.

These keep alive wake lease tokens are provided by the Power Framework's System Activity

Governor. A driver supporting this call must be able to get `expiration_keep_alive` from

System Activity Governor.

When `expiration_keep_alive` is closed, then this driver created wake lease keeping the

system from suspending at the time of the timer expiration is dropped. Hence, to guarantee

that the system is not suspended by the Power Framework a client must either keep this

`expiration_keep_alive` for as long as the system needs to stay awake, or a client must

get its own wake lease from the Power Framework before it drops `expiration_keep_alive` to

prevent suspension.

Errors:

* INVALID_ARGS: The specified `id` is invalid.

* NOT_SUPPORTED: This method is not supported for the given `id`.

* BAD_STATE: The driver is in a bad state, for instance it does not have an

`expiration_keep_alive` token to provide to the client.

* INTERNAL_ERROR: The driver encountered an internal error.

void GetProperties (GetPropertiesCompleter::Sync & completer)

Get driver properties.

void WireServer ()

Defined at line 2488 of file fidling/gen/sdk/fidl/fuchsia.hardware.hrtimer/fuchsia.hardware.hrtimer/cpp/fidl/fuchsia.hardware.hrtimer/cpp/wire_messaging.h

Handler bind_handler (async_dispatcher_t * dispatcher)

|bind_handler| returns a handler that binds incoming connections to this

server implementation.

The returned handler borrows the server instance.

The server must outlive the provided |dispatcher|. Only after

the dispatcher is shutdown will it be safe to destroy the servers.

The server should not be moved.

void ~WireServer ()

Defined at line 2489 of file fidling/gen/sdk/fidl/fuchsia.hardware.hrtimer/fuchsia.hardware.hrtimer/cpp/fidl/fuchsia.hardware.hrtimer/cpp/wire_messaging.h