template <>

class WireServer

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

Pure-virtual interface to be implemented by a server.

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

<

::fuchsia_hardware_acpi::Device>|

and |::fidl::ServerEnd

<

::fuchsia_hardware_acpi::Device>|).

Public Methods

void GetBusId (GetBusIdCompleter::Sync & completer)

If ACPI has determined this device is a bus, returns the bus ID.

Errors:

* ZX_ERR_BAD_STATE - the device is not a bus as far as ACPI is aware.

void MapInterrupt (::fuchsia_hardware_acpi::wire::DeviceMapInterruptRequest * request, MapInterruptCompleter::Sync & completer)

Get the interrupt at `index` for this device.

Errors:

* ZX_ERR_OUT_OF_RANGE - `index` is out of range.

* ZX_ERR_INVALID_ARGS - the interrupt type described by ACPI is unrecognised.

* ZX_ERR_INTERNAL - an internal error occured (e.g. failure to evaluate ACPI tables).

void GetPio (::fuchsia_hardware_acpi::wire::DeviceGetPioRequest * request, GetPioCompleter::Sync & completer)

Get the I/O port at `index` for this device.

Errors:

* ZX_ERR_OUT_OF_RANGE - `index` is out of range.

* ZX_ERR_INTERNAL - an internal error occured (e.g. failure to evaluate ACPI tables).

void GetMmio (::fuchsia_hardware_acpi::wire::DeviceGetMmioRequest * request, GetMmioCompleter::Sync & completer)

Get the MMIO region at `index` for this device.

Errors:

* ZX_ERR_OUT_OF_RANGE - `index` is out of range.

* ZX_ERR_INTERNAL - an internal error occured (e.g. failure to evaluate ACPI tables).

* ZX_ERR_INVALID_ARGS - the MMIO region described by ACPI is not page-aligned.

void GetBti (::fuchsia_hardware_acpi::wire::DeviceGetBtiRequest * request, GetBtiCompleter::Sync & completer)

Get the BTI at `index` for this device.

This operation is not supported on devices that exist on another bus (e.g. PCI) --

they should use their bus's GetBti() equivalent to access a BTI.

Errors:

* ZX_ERR_NOT_SUPPORTED - the device is not a pure ACPI device.

* ZX_ERR_OUT_OF_RANGE - `index` is out of range for the device.

void EvaluateObject (::fuchsia_hardware_acpi::wire::DeviceEvaluateObjectRequest * request, EvaluateObjectCompleter::Sync & completer)

Evaluate the object at the given |path|, relative to this device, with |parameters| as

arguments.

|mode| determines how the return value is treated, see

|fuchsia.hardware.acpi/EvaluateObjectMode|.

Paths cannot be absolute, and must only refer to children of this

device.

|result| is the result of the evaluation. See |fuchsia.hardware.acpi/EncodedObject| for more

information.

Errors:

* ACCESS - |path| does not refer to a child of this device.

* AML_* - internal errors while evaluating the AML bytecode.

* BAD_CHARACTER - an invalid character was found in the path.

* BAD_PATHNAME - the path contained at least one ill-formated entry.

* ERROR - An internal error occurred.

* NOT_FOUND - There is no object at the specified path.

* NOT_IMPLEMENTED - An unsupported |mode| or |parameters| was supplied, or evaluation

returned an unsupported Object type.

* TYPE - The object is of a type that cannot be evaluated.

void InstallNotifyHandler (::fuchsia_hardware_acpi::wire::DeviceInstallNotifyHandlerRequest * request, InstallNotifyHandlerCompleter::Sync & completer)

Install a Device Object Notification handler for the given notification

type. A device can only have a single notification handler at a time.

Errors:

* BAD_PARAMETER - if "mode" is invalid.

* ALREADY_EXISTS - if a handler is already installed.

void RemoveNotifyHandler (RemoveNotifyHandlerCompleter::Sync & completer)

Remove a Device Object Notification handler. Returns AE_OK if either the handler was

successfully removed, or if the device has no handler. Otherwise returns failure.

void AcquireGlobalLock (AcquireGlobalLockCompleter::Sync & completer)

Acquire the ACPI global lock. This is only permitted for devices which

have a _GLK entry in their namespace. See ACPI v6.4, Section 6.5.7 "_GLK

(Global Lock)".

This method will not return until the global lock has been acquired.

Errors:

* ACCESS - if "_GLK" is not present, or if "_GLK" does not evaluate to 1.

void InstallAddressSpaceHandler (::fuchsia_hardware_acpi::wire::DeviceInstallAddressSpaceHandlerRequest * request, InstallAddressSpaceHandlerCompleter::Sync & completer)

Install an address space handler for this device.

Errors:

* ALREADY_EXISTS - if a handler is already installed.

* NOT_SUPPORTED - the AddressSpace supplied is not supported.

void SetWakeDevice (::fuchsia_hardware_acpi::wire::DeviceSetWakeDeviceRequest * request, SetWakeDeviceCompleter::Sync & completer)

Set a device to be able to wake the system from suspend. The device must have a _PRW

(Power Resource for Wake) method. This method should be called from the driver suspend

hook, using the |requested_state| provided by the driver framework. If the device is unable

to wake the system from the requested sleep state, then the device will not be set as a

wake source.

Errors:

NOT_SUPPORTED - requested sleep state is deeper than the deepest sleep that the device can

wake the system from.

BAD_DATA - unable to get wake GPE information.

BAD_PARAMETER - could not get GPE information.

TYPE - GPE is not marked as a wake GPE.

NOT_EXIST - GPE register could not be found.

void WireServer ()

Defined at line 3617 of file fidling/gen/sdk/fidl/fuchsia.hardware.acpi/fuchsia.hardware.acpi/cpp/fidl/fuchsia.hardware.acpi/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 3618 of file fidling/gen/sdk/fidl/fuchsia.hardware.acpi/fuchsia.hardware.acpi/cpp/fidl/fuchsia.hardware.acpi/cpp/wire_messaging.h