Hardware Dependant Interface

Overview

The Hardware Dependant Interface. Moreā€¦

// typedefs

typedef struct _snd_hwdep_info snd_hwdep_info_t;
typedef struct _snd_hwdep_dsp_status snd_hwdep_dsp_status_t;
typedef struct _snd_hwdep_dsp_image snd_hwdep_dsp_image_t;
typedef struct _snd_hwdep snd_hwdep_t;

// enums

enum snd_hwdep_iface_t;
enum snd_hwdep_type_t;

// global functions

int
snd_hwdep_open(
    snd_hwdep_t** hwdep,
    const char* name,
    int mode
);

int
snd_hwdep_close(snd_hwdep_t* hwdep);

int
snd_hwdep_poll_descriptors(
    snd_hwdep_t* hwdep,
    struct pollfd* pfds,
    unsigned int space
);

int
snd_hwdep_poll_descriptors_count(snd_hwdep_t* hwdep);

int
snd_hwdep_poll_descriptors_revents(
    snd_hwdep_t* hwdep,
    struct pollfd* pfds,
    unsigned int nfds,
    unsigned short* revents
);

int
snd_hwdep_nonblock(
    snd_hwdep_t* hwdep,
    int nonblock
);

int
snd_hwdep_info(
    snd_hwdep_t* hwdep,
    snd_hwdep_info_t* info
);

int
snd_hwdep_dsp_status(
    snd_hwdep_t* hwdep,
    snd_hwdep_dsp_status_t* status
);

int
snd_hwdep_dsp_load(
    snd_hwdep_t* hwdep,
    snd_hwdep_dsp_image_t* block
);

int
snd_hwdep_ioctl(
    snd_hwdep_t* hwdep,
    unsigned int request,
    void* arg
);

ssize_t
snd_hwdep_write(
    snd_hwdep_t* hwdep,
    const void* buffer,
    size_t size
);

ssize_t
snd_hwdep_read(
    snd_hwdep_t* hwdep,
    void* buffer,
    size_t size
);

size_t
snd_hwdep_info_sizeof(void);

int
snd_hwdep_info_malloc(snd_hwdep_info_t** ptr);

void
snd_hwdep_info_free(snd_hwdep_info_t* obj);

void
snd_hwdep_info_copy(
    snd_hwdep_info_t* dst,
    const snd_hwdep_info_t* src
);

unsigned int
snd_hwdep_info_get_device(const snd_hwdep_info_t* obj);

int
snd_hwdep_info_get_card(const snd_hwdep_info_t* obj);

const char*
snd_hwdep_info_get_id(const snd_hwdep_info_t* obj);

const char*
snd_hwdep_info_get_name(const snd_hwdep_info_t* obj);

snd_hwdep_iface_t
snd_hwdep_info_get_iface(const snd_hwdep_info_t* obj);

void
snd_hwdep_info_set_device(
    snd_hwdep_info_t* obj,
    unsigned int val
);

size_t
snd_hwdep_dsp_status_sizeof(void);

int
snd_hwdep_dsp_status_malloc(snd_hwdep_dsp_status_t** ptr);

void
snd_hwdep_dsp_status_free(snd_hwdep_dsp_status_t* obj);

void
snd_hwdep_dsp_status_copy(
    snd_hwdep_dsp_status_t* dst,
    const snd_hwdep_dsp_status_t* src
);

unsigned int
snd_hwdep_dsp_status_get_version(const snd_hwdep_dsp_status_t* obj);

const char*
snd_hwdep_dsp_status_get_id(const snd_hwdep_dsp_status_t* obj);

unsigned int
snd_hwdep_dsp_status_get_num_dsps(const snd_hwdep_dsp_status_t* obj);

unsigned int
snd_hwdep_dsp_status_get_dsp_loaded(const snd_hwdep_dsp_status_t* obj);

unsigned int
snd_hwdep_dsp_status_get_chip_ready(const snd_hwdep_dsp_status_t* obj);

size_t
snd_hwdep_dsp_image_sizeof(void);

int
snd_hwdep_dsp_image_malloc(snd_hwdep_dsp_image_t** ptr);

void
snd_hwdep_dsp_image_free(snd_hwdep_dsp_image_t* obj);

void
snd_hwdep_dsp_image_copy(
    snd_hwdep_dsp_image_t* dst,
    const snd_hwdep_dsp_image_t* src
);

unsigned int
snd_hwdep_dsp_image_get_index(const snd_hwdep_dsp_image_t* obj);

const char*
snd_hwdep_dsp_image_get_name(const snd_hwdep_dsp_image_t* obj);

const void*
snd_hwdep_dsp_image_get_image(const snd_hwdep_dsp_image_t* obj);

size_t
snd_hwdep_dsp_image_get_length(const snd_hwdep_dsp_image_t* obj);

void
snd_hwdep_dsp_image_set_index(
    snd_hwdep_dsp_image_t* obj,
    unsigned int _index
);

void
snd_hwdep_dsp_image_set_name(
    snd_hwdep_dsp_image_t* obj,
    const char* name
);

void
snd_hwdep_dsp_image_set_image(
    snd_hwdep_dsp_image_t* obj,
    void* buffer
);

void
snd_hwdep_dsp_image_set_length(
    snd_hwdep_dsp_image_t* obj,
    size_t length
);

// macros

#define SND_HWDEP_DLSYM_VERSION
#define SND_HWDEP_OPEN_DUPLEX
#define SND_HWDEP_OPEN_NONBLOCK
#define SND_HWDEP_OPEN_READ
#define SND_HWDEP_OPEN_WRITE
#define snd_hwdep_dsp_image_alloca(ptr)
#define snd_hwdep_dsp_status_alloca(ptr)
#define snd_hwdep_info_alloca(ptr)

Detailed Documentation

The Hardware Dependant Interface.

Typedefs

typedef struct _snd_hwdep_info snd_hwdep_info_t

HwDep information container

typedef struct _snd_hwdep_dsp_status snd_hwdep_dsp_status_t

HwDep DSP status container

typedef struct _snd_hwdep_dsp_image snd_hwdep_dsp_image_t

HwDep DSP image container

typedef struct _snd_hwdep snd_hwdep_t

HwDep handle

Global Functions

int
snd_hwdep_open(
    snd_hwdep_t** hwdep,
    const char* name,
    int mode
)

Opens a new connection to the HwDep interface.

Opens a new connection to the HwDep interface specified with an ASCII identifier and mode.

Parameters:

hwdep

Returned handle (NULL if not wanted)

name

ASCII identifier of the HwDep handle

mode

Open mode

Returns:

0 on success otherwise a negative error code

int
snd_hwdep_close(snd_hwdep_t* hwdep)

close HwDep handle

Closes the specified HwDep handle and frees all associated resources.

Parameters:

hwdep

HwDep handle

Returns:

0 on success otherwise a negative error code

int
snd_hwdep_poll_descriptors(
    snd_hwdep_t* hwdep,
    struct pollfd* pfds,
    unsigned int space
)

get poll descriptors

Parameters:

hwdep

HwDep handle

pfds

array of poll descriptors

space

space in the poll descriptor array

Returns:

count of filled descriptors

int
snd_hwdep_poll_descriptors_count(snd_hwdep_t* hwdep)

get count of poll descriptors for HwDep handle

Parameters:

hwdep

HwDep handle

Returns:

count of poll descriptors

int
snd_hwdep_poll_descriptors_revents(
    snd_hwdep_t* hwdep,
    struct pollfd* pfds,
    unsigned int nfds,
    unsigned short* revents
)

get returned events from poll descriptors

Parameters:

hwdep

HwDep handle

pfds

array of poll descriptors

nfds

count of poll descriptors

revents

returned events

Returns:

zero if success, otherwise a negative error code

int
snd_hwdep_nonblock(
    snd_hwdep_t* hwdep,
    int nonblock
)

set nonblock mode

Parameters:

hwdep

HwDep handle

nonblock

0 = block, 1 = nonblock mode

Returns:

0 on success otherwise a negative error code

int
snd_hwdep_info(
    snd_hwdep_t* hwdep,
    snd_hwdep_info_t* info
)

get information about HwDep handle

Parameters:

hwdep

HwDep handle

info

pointer to a snd_hwdep_info_t structure to be filled

Returns:

0 on success otherwise a negative error code

int
snd_hwdep_dsp_status(
    snd_hwdep_t* hwdep,
    snd_hwdep_dsp_status_t* status
)

get the DSP status information

Parameters:

hwdep

HwDep handle

info

pointer to a snd_hwdep_dsp_status_t structure to be filled

Returns:

0 on success otherwise a negative error code

int
snd_hwdep_dsp_load(
    snd_hwdep_t* hwdep,
    snd_hwdep_dsp_image_t* block
)

load the DSP block

Parameters:

hwdep

HwDep handle

block

pointer to a snd_hwdep_dsp_image_t structure to transfer

Returns:

0 on success otherwise a negative error code

int
snd_hwdep_ioctl(
    snd_hwdep_t* hwdep,
    unsigned int request,
    void* arg
)

do hardware dependent ioctl

Parameters:

hwdep

HwDep handle

request

ioctl command

arg

ioctl argument

Returns:

0 on success otherwise a negative error code

ssize_t
snd_hwdep_write(
    snd_hwdep_t* hwdep,
    const void* buffer,
    size_t size
)

write bytes using HwDep handle

Parameters:

hwdep

HwDep handle

buffer

buffer containing bytes to write

size

output buffer size in bytes

ssize_t
snd_hwdep_read(
    snd_hwdep_t* hwdep,
    void* buffer,
    size_t size
)

read bytes using HwDep handle

Parameters:

hwdep

HwDep handle

buffer

buffer to store the input bytes

size

input buffer size in bytes

size_t
snd_hwdep_info_sizeof(void)

get size of the snd_hwdep_info_t structure in bytes

Returns:

size of the snd_hwdep_info_t structure in bytes

int
snd_hwdep_info_malloc(snd_hwdep_info_t** ptr)

allocate a new snd_hwdep_info_t structure

Allocates a new snd_hwdep_info_t structure using the standard malloc C library function.

Parameters:

info

returned pointer

Returns:

0 on success otherwise a negative error code if fails

void
snd_hwdep_info_free(snd_hwdep_info_t* obj)

frees the snd_hwdep_info_t structure

Frees the given snd_hwdep_info_t structure using the standard free C library function.

Parameters:

info

pointer to the snd_hwdep_info_t structure to free

void
snd_hwdep_info_copy(
    snd_hwdep_info_t* dst,
    const snd_hwdep_info_t* src
)

copy one snd_hwdep_info_t structure to another

Parameters:

dst

destination snd_hwdep_info_t structure

src

source snd_hwdep_info_t structure

unsigned int
snd_hwdep_info_get_device(const snd_hwdep_info_t* obj)

get hwdep device number

Parameters:

info

pointer to a snd_hwdep_info_t structure

Returns:

hwdep device number

int
snd_hwdep_info_get_card(const snd_hwdep_info_t* obj)

get hwdep card number

Parameters:

obj

pointer to a snd_hwdep_info_t structure

Returns:

hwdep card number

const char*
snd_hwdep_info_get_id(const snd_hwdep_info_t* obj)

get hwdep driver identifier

Parameters:

obj

pointer to a snd_hwdep_info_t structure

Returns:

hwdep driver identifier

const char*
snd_hwdep_info_get_name(const snd_hwdep_info_t* obj)

get hwdep driver name

Parameters:

obj

pointer to a snd_hwdep_info_t structure

Returns:

hwdep driver name

snd_hwdep_iface_t
snd_hwdep_info_get_iface(const snd_hwdep_info_t* obj)

get hwdep protocol interface

Parameters:

obj

pointer to a snd_hwdep_info_t structure

Returns:

hwdep protocol interface

void
snd_hwdep_info_set_device(
    snd_hwdep_info_t* obj,
    unsigned int val
)

set hwdep device number

Parameters:

obj

pointer to a snd_hwdep_info_t structure

val

hwdep device

size_t
snd_hwdep_dsp_status_sizeof(void)

get size of the snd_hwdep_dsp_status_t structure in bytes

Returns:

size of the snd_hwdep_dsp_status_t structure in bytes

int
snd_hwdep_dsp_status_malloc(snd_hwdep_dsp_status_t** ptr)

allocate a new snd_hwdep_dsp_status_t structure

Allocates a new snd_hwdep_dsp_status_t structure using the standard malloc C library function.

Parameters:

info

returned pointer

Returns:

0 on success otherwise a negative error code if fails

void
snd_hwdep_dsp_status_free(snd_hwdep_dsp_status_t* obj)

frees the snd_hwdep_dsp_status_t structure

Frees the given snd_hwdep_dsp_status_t structure using the standard free C library function.

Parameters:

info

pointer to the snd_hwdep_dsp_status_t structure to free

void
snd_hwdep_dsp_status_copy(
    snd_hwdep_dsp_status_t* dst,
    const snd_hwdep_dsp_status_t* src
)

copy one snd_hwdep_dsp_status_t structure to another

Parameters:

dst

destination snd_hwdep_dsp_status_t structure

src

source snd_hwdep_dsp_status_t structure

unsigned int
snd_hwdep_dsp_status_get_version(const snd_hwdep_dsp_status_t* obj)

get the driver version of dsp loader

Parameters:

obj

pointer to a snd_hwdep_dsp_status_t structure

Returns:

the driver version

const char*
snd_hwdep_dsp_status_get_id(const snd_hwdep_dsp_status_t* obj)

get the driver id of dsp loader

Parameters:

obj

pointer to a snd_hwdep_dsp_status_t structure

Returns:

the driver id string

unsigned int
snd_hwdep_dsp_status_get_num_dsps(const snd_hwdep_dsp_status_t* obj)

get number of dsp blocks

Parameters:

obj

pointer to a snd_hwdep_dsp_status_t structure

Returns:

number of dsp blocks

unsigned int
snd_hwdep_dsp_status_get_dsp_loaded(const snd_hwdep_dsp_status_t* obj)

get the bit flags of the loaded dsp blocks

Parameters:

info

pointer to a snd_hwdep_dsp_status_t structure

Returns:

the big flags of the loaded dsp blocks

unsigned int
snd_hwdep_dsp_status_get_chip_ready(const snd_hwdep_dsp_status_t* obj)

get the chip status of dsp loader

Parameters:

obj

pointer to a snd_hwdep_dsp_status_t structure

Returns:

non-zero if all DSP blocks are loaded and the chip is ready

size_t
snd_hwdep_dsp_image_sizeof(void)

get size of the snd_hwdep_dsp_image_t structure in bytes

Returns:

size of the snd_hwdep_dsp_image_t structure in bytes

int
snd_hwdep_dsp_image_malloc(snd_hwdep_dsp_image_t** ptr)

allocate a new snd_hwdep_dsp_image_t structure

Allocates a new snd_hwdep_dsp_image_t structure using the standard malloc C library function.

Parameters:

info

returned pointer

Returns:

0 on success otherwise a negative error code if fails

void
snd_hwdep_dsp_image_free(snd_hwdep_dsp_image_t* obj)

frees the snd_hwdep_dsp_image_t structure

Frees the given snd_hwdep_dsp_image_t structure using the standard free C library function.

Parameters:

info

pointer to the snd_hwdep_dsp_image_t structure to free

void
snd_hwdep_dsp_image_copy(
    snd_hwdep_dsp_image_t* dst,
    const snd_hwdep_dsp_image_t* src
)

copy one snd_hwdep_dsp_image_t structure to another

Parameters:

dst

destination snd_hwdep_dsp_image_t structure

src

source snd_hwdep_dsp_image_t structure

unsigned int
snd_hwdep_dsp_image_get_index(const snd_hwdep_dsp_image_t* obj)

get the DSP block index

Parameters:

obj

pointer to a snd_hwdep_dsp_image_t structure

Returns:

the index of the DSP block

const char*
snd_hwdep_dsp_image_get_name(const snd_hwdep_dsp_image_t* obj)

get the name of the DSP block

Parameters:

obj

pointer to a snd_hwdep_dsp_image_t structure

Returns:

the name string of the DSP block

const void*
snd_hwdep_dsp_image_get_image(const snd_hwdep_dsp_image_t* obj)

get the image pointer of the DSP block

Parameters:

obj

pointer to a snd_hwdep_dsp_image_t structure

Returns:

the image pointer of the DSP block

size_t
snd_hwdep_dsp_image_get_length(const snd_hwdep_dsp_image_t* obj)

get the length of the DSP block

Parameters:

obj

pointer to a snd_hwdep_dsp_image_t structure

Returns:

the length of the DSP block in bytes

void
snd_hwdep_dsp_image_set_index(
    snd_hwdep_dsp_image_t* obj,
    unsigned int _index
)

set the DSP block index

Parameters:

obj

pointer to a snd_hwdep_dsp_image_t structure

index

the index value to set

void
snd_hwdep_dsp_image_set_name(
    snd_hwdep_dsp_image_t* obj,
    const char* name
)

set the name of the DSP block

Parameters:

obj

pointer to a snd_hwdep_dsp_image_t structure

name

the name string

void
snd_hwdep_dsp_image_set_image(
    snd_hwdep_dsp_image_t* obj,
    void* buffer
)

set the DSP block image pointer

Parameters:

obj

pointer to a snd_hwdep_dsp_image_t structure

image

the DSP image pointer

void
snd_hwdep_dsp_image_set_length(
    snd_hwdep_dsp_image_t* obj,
    size_t length
)

set the DSP block length

Parameters:

obj

pointer to a snd_hwdep_dsp_image_t structure

length

the length of the DSP block

Macros

#define SND_HWDEP_DLSYM_VERSION

dlsym version for interface entry callback

#define SND_HWDEP_OPEN_DUPLEX

open for reading and writing

#define SND_HWDEP_OPEN_NONBLOCK

open mode flag: open in nonblock mode

#define SND_HWDEP_OPEN_READ

open for reading

#define SND_HWDEP_OPEN_WRITE

open for writing

#define snd_hwdep_dsp_image_alloca(ptr)

allocate snd_hwdep_dsp_image_t container on stack

#define snd_hwdep_dsp_status_alloca(ptr)

allocate snd_hwdep_dsp_status_t container on stack

#define snd_hwdep_info_alloca(ptr)

allocate snd_hwdep_info_t container on stack