* Copyright 2007 Haiku Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Bek, host.haiku@gmx.de
*/
#include "driver.h"
int32 api_version = B_CUR_DRIVER_API_VERSION;
device_t device;
status_t
init_hardware(void)
{
dprintf("null_audio: %s\n", __func__);
return B_OK;
}
status_t
init_driver(void)
{
dprintf("null_audio: %s\n", __func__);
device.running = false;
return B_OK;
}
void
uninit_driver(void)
{
}
const char**
publish_devices(void)
{
static const char* published_paths[] = {
MULTI_AUDIO_DEV_PATH "/null/0",
NULL
};
dprintf("null_audio: %s\n", __func__);
return published_paths;
}
static status_t
null_audio_open (const char *name, uint32 flags, void** cookie)
{
dprintf("null_audio: %s\n" , __func__ );
*cookie = &device;
return B_OK;
}
static status_t
null_audio_read (void* cookie, off_t a, void* b, size_t* num_bytes)
{
dprintf("null_audio: %s\n" , __func__ );
*num_bytes = 0;
return B_IO_ERROR;
}
static status_t
null_audio_write (void* cookie, off_t a, const void* b, size_t* num_bytes)
{
dprintf("null_audio: %s\n" , __func__ );
*num_bytes = 0;
return B_IO_ERROR;
}
static status_t
null_audio_control (void* cookie, uint32 op, void* arg, size_t len)
{
if (cookie)
return multi_audio_control(cookie, op, arg, len);
else
dprintf("null_audio: %s called without cookie\n" , __func__);
return B_BAD_VALUE;
}
static status_t
null_audio_close (void* cookie)
{
device_t* device = (device_t*) cookie;
dprintf("null_audio: %s\n" , __func__ );
if (device && device->running)
null_stop_hardware(device);
return B_OK;
}
static status_t
null_audio_free (void* cookie)
{
dprintf("null_audio: %s\n" , __func__ );
return B_OK;
}
device_hooks driver_hooks = {
null_audio_open,
null_audio_close,
null_audio_free,
null_audio_control,
null_audio_read,
null_audio_write
};
device_hooks*
find_device(const char* name)
{
return &driver_hooks;
}