## ATA commands

ATA commands — Helper routines for ATA commands

## Functions

gboolean | udisks_ata_send_command_sync ()

## Types and Values

enum | UDisksAtaCommandProtocol
| UDisksAtaCommandInput
| UDisksAtaCommandOutput

## Description

Helper routines for sending ATA commands to a device.

## Functions

### udisks_ata_send_command_sync ()

    gboolean
    udisks_ata_send_command_sync (gint fd,
                                  gint timeout_msec,
                                  UDisksAtaCommandProtocol protocol,
                                  UDisksAtaCommandInput *input,
                                  UDisksAtaCommandOutput *output,
                                  GError **error);

Sends a command to an ATA device. Blocks the calling thread while the command is pending.

#### Parameters

fd | A file descriptor for a ATA device. |
timeout_msec | Timeout in milli-seconds for the command. Use -1 for the default (5 seconds) timeout and `G_MAXINT` for no timeout. |
protocol | The direction of the command. |
input | The input for the command. |
output | The output for the command. |
error | Return location for error or `NULL`. |

#### Returns

`TRUE` if the command succeeded, `FALSE` if `error` is set.

## Types and Values

### enum UDisksAtaCommandProtocol

Enumeration used to specify the protocol of an ATA command

#### Members

UDISKS_ATA_COMMAND_PROTOCOL_NONE | Non-data |
UDISKS_ATA_COMMAND_PROTOCOL_DRIVE_TO_HOST | PIO Data-In |
UDISKS_ATA_COMMAND_PROTOCOL_HOST_TO_DRIVE | PIO Data-Out |

### UDisksAtaCommandInput

    typedef struct {
      guint8  command;
      guint8  feature;
      guint8  count;
      guint8  device;
      guint32 lba;
      gsize   buffer_size;
      guchar *buffer;
    } UDisksAtaCommandInput;

Struct used for input data when sending ATA commands.

#### Members

guint8 `command`; | Command |
guint8 `feature`; | Feature |
guint8 `count`; | Count |
guint8 `device`; | Device |
guint32 `lba`; | LBA |
gsize `buffer_size`; | Size of the `buffer` member or 0 |
guchar *`buffer`; | Data to send to device or `NULL` |

### UDisksAtaCommandOutput

    typedef struct {
      guint8  error;
      guint8  count;
      guint8  device;
      guint8  status;
      guint32 lba;
      gsize   buffer_size;
      guchar *buffer;
    } UDisksAtaCommandOutput;

Struct used for output data when sending ATA commands.

#### Members

guint8 `error`; | Error |
guint8 `count`; | Count |
guint8 `device`; | Device |
guint8 `status`; | Status |
guint32 `lba`; | LBA |
gsize `buffer_size`; | Size of the `buffer` member or 0 |
guchar *`buffer`; | Pointer to where to recieve data from the device or `NULL` |