## UDisksLinuxDriveAta UDisksLinuxDriveAta — Linux implementation of UDisksDriveAta |

## Synopsis

                        UDisksLinuxDriveAta;
    UDisksDriveAta *    udisks_linux_drive_ata_new          (void);
    gboolean            udisks_linux_drive_ata_update       (UDisksLinuxDriveAta *drive,
                                                             UDisksLinuxDriveObject *object);
    gboolean            udisks_linux_drive_ata_refresh_smart_sync
                                                            (UDisksLinuxDriveAta *drive,
                                                             gboolean nowakeup,
                                                             const gchar *simulate_path,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            udisks_linux_drive_ata_smart_selftest_sync
                                                            (UDisksLinuxDriveAta *drive,
                                                             const gchar *type,
                                                             GCancellable *cancellable,
                                                             GError **error);
    void                udisks_linux_drive_ata_apply_configuration
                                                            (UDisksLinuxDriveAta *drive,
                                                             UDisksLinuxDevice *device,
                                                             GVariant *configuration);
    gboolean            udisks_linux_drive_ata_secure_erase_sync
                                                            (UDisksLinuxDriveAta *drive,
                                                             uid_t caller_uid,
                                                             gboolean enhanced,
                                                             GError **error);

## Object Hierarchy

      GObject
       +----GDBusInterfaceSkeleton
             +----UDisksDriveAtaSkeleton
                   +----UDisksLinuxDriveAta

## Implemented Interfaces

UDisksLinuxDriveAta implements GDBusInterface and UDisksDriveAta.

## Description

This type provides an implementation of the UDisksDriveAta interface on Linux.

## Details

### UDisksLinuxDriveAta

    typedef struct _UDisksLinuxDriveAta UDisksLinuxDriveAta;

The UDisksLinuxDriveAta structure contains only private data and should only be accessed using the provided API.

### udisks_linux_drive_ata_new ()

    UDisksDriveAta *    udisks_linux_drive_ata_new          (void);

Creates a new UDisksLinuxDriveAta instance.

Returns : | A new UDisksLinuxDriveAta. Free with `g_object_unref()`.

### udisks_linux_drive_ata_update ()

    gboolean            udisks_linux_drive_ata_update       (UDisksLinuxDriveAta *drive,
                                                             UDisksLinuxDriveObject *object);

Updates the interface.

`drive` : | A UDisksLinuxDriveAta.
`object` : | The enclosing UDisksLinuxDriveObject instance.
Returns : | `TRUE` if configuration has changed, `FALSE` otherwise.

### udisks_linux_drive_ata_refresh_smart_sync ()

    gboolean            udisks_linux_drive_ata_refresh_smart_sync
                                                            (UDisksLinuxDriveAta *drive,
                                                             gboolean nowakeup,
                                                             const gchar *simulate_path,
                                                             GCancellable *cancellable,
                                                             GError **error);

Synchronously refreshes ATA S.M.A.R.T. data on `drive` using one of the physical drives associated with it. The calling thread is blocked until the data has been obtained.

If `nowake` is `TRUE` and the disk is in a sleep state this fails with `UDISKS_ERROR_WOULD_WAKEUP`.

This may only be called if `drive` has been associated with a UDisksLinuxDriveObject instance.

This method may be called from any thread.

`drive` : | The UDisksLinuxDriveAta to refresh.
`nowakeup` : | If `TRUE`, will not wake up the disk if asleep.
`simulate_path` : | If not `NULL`, the path of a file with a libatasmart blob to use.
`cancellable` : | A GCancellable or `NULL`.
`error` : | Return location for error.
Returns : | `TRUE` if the operation succeeded, `FALSE` if `error` is set.

### udisks_linux_drive_ata_smart_selftest_sync ()

    gboolean            udisks_linux_drive_ata_smart_selftest_sync
                                                            (UDisksLinuxDriveAta *drive,
                                                             const gchar *type,
                                                             GCancellable *cancellable,
                                                             GError **error);

Starts (or aborts) a SMART self-test on `drive`. Valid values for `type` includes 'short', 'extended', 'conveyance' and 'abort'.

The calling thread is blocked while sending the command to the drive but will return immediately after the drive acknowledges the command.

`drive` : | A UDisksLinuxDriveAta.
`type` : | The type of selftest to run.
`cancellable` : | A GCancellable that can be used to cancel the operation or `NULL`. [allow-none]
`error` : | Return location for error or `NULL`.
Returns : | `TRUE` if the operation succeed, `FALSE` if `error` is set.

### udisks_linux_drive_ata_apply_configuration ()

    void                udisks_linux_drive_ata_apply_configuration
                                                            (UDisksLinuxDriveAta *drive,
                                                             UDisksLinuxDevice *device,
                                                             GVariant *configuration);

Spawns a thread to apply `configuration` to `drive`, if any. Does not wait for the thread to terminate.

`drive` : | A UDisksLinuxDriveAta.
`device` : | A UDisksLinuxDevice
`configuration` : | The configuration to apply.

### udisks_linux_drive_ata_secure_erase_sync ()

    gboolean            udisks_linux_drive_ata_secure_erase_sync
                                                            (UDisksLinuxDriveAta *drive,
                                                             uid_t caller_uid,
                                                             gboolean enhanced,
                                                             GError **error);

Performs an ATA Secure Erase opeartion. Blocks the calling thread until the operation completes.

This operation may take a very long time (hours) to complete.

`drive` : | A UDisksLinuxDriveAta.
`caller_uid` : | The unix user if of the caller requesting the operation.
`enhanced` : | `TRUE` to use the enhanced version of the ATA secure erase command.
`error` : | Return location for error or `NULL`.
Returns : | `TRUE` if the operation succeeded, `FALSE` if `error` is set.