Changeset 947:edb7ba2fe666 in roaraudio


Ignore:
Timestamp:
12/07/08 23:28:12 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

changed raw driver to use vio interface and display sysio vs. vio in driver list

Location:
roard
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • roard/driver.c

    r944 r947  
    3131#endif 
    3232 { "roar", "RoarAudio driver", "localhost, remote.host.dom", driver_roar_open, driver_roar_close, driver_roar_pause, driver_roar_write, driver_roar_read, driver_roar_flush, NULL}, 
    33  { "raw",  "RAW PCM driver", "/some/file", driver_raw_open, driver_raw_close, driver_roar_pause, driver_raw_write, driver_raw_read, driver_raw_flush, NULL}, 
     33 { "raw",  "RAW PCM driver", "/some/file", NULL, driver_raw_close, driver_roar_pause, NULL, NULL, driver_raw_flush, driver_raw_open_vio}, 
    3434#if defined(ROAR_HAVE_OSS_BSD) || defined(ROAR_HAVE_OSS) 
    3535#ifndef ROAR_DEFAULT_OSS_DEV 
     
    4848 
    4949 for (i = 0; g_driver[i].name != NULL; i++) { 
    50   printf("  %-8s - %s (devices: %s)\n", g_driver[i].name, g_driver[i].desc, g_driver[i].devices); 
     50  printf("  %-8s %c%c - %s (devices: %s)\n", g_driver[i].name, 
     51                g_driver[i].open     != NULL || (g_driver[i].open == NULL && g_driver[i].vio_init == NULL) ? 'S' : ' ', 
     52                g_driver[i].vio_init != NULL || (g_driver[i].open == NULL && g_driver[i].vio_init == NULL) ? 'V' : ' ', 
     53                g_driver[i].desc, g_driver[i].devices); 
    5154 } 
    5255} 
  • roard/driver_raw.c

    r668 r947  
    2525#include "roard.h" 
    2626 
    27 int driver_raw_open(DRIVER_USERDATA_T * inst, char * device, struct roar_audio_info * info) { 
    28  int * di = malloc(sizeof(int)); 
    29  
    30  if ( di == NULL ) 
    31   return -1; 
    32  
    33  *inst = (DRIVER_USERDATA_T)di; 
     27int driver_raw_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) { 
    3428 
    3529 if ( device == NULL ) { 
    36   free(di); 
    37   *inst = NULL; 
    3830  return -1; 
    3931 } 
    4032 
    41  *di = open(device, O_CREAT|O_TRUNC|O_WRONLY, 0644); 
     33 if ( fh == -1 ) { 
     34  if ( (fh = open(device, O_CREAT|O_TRUNC|O_WRONLY, 0644)) == -1 ) { 
     35   return -1; 
     36  } 
     37 } 
    4238 
    43  if ( *di == -1 ) { 
    44   free(di); 
    45   *inst = NULL; 
    46   return -1; 
    47  } 
     39 roar_vio_set_fh(inst, fh); 
    4840 
    4941 return 0; 
     
    5143 
    5244int driver_raw_close(DRIVER_USERDATA_T   inst) { 
    53  int fh = *(int*)inst; 
    54  
    55  free((void*)inst); 
    56  
    57  return close(fh); 
     45 return close(roar_vio_get_fh((struct roar_vio_calls *)inst)); 
    5846} 
    5947 
    6048int driver_raw_pause(DRIVER_USERDATA_T   inst, int newstate) { 
    6149 return -1; 
    62 } 
    63  
    64 int driver_raw_write(DRIVER_USERDATA_T   inst, char * buf, int len) { 
    65  return write(*(int*)inst, buf, len); 
    66 } 
    67  
    68 int driver_raw_read(DRIVER_USERDATA_T   inst, char * buf, int len) { 
    69  return read(*(int*)inst, buf, len); 
    7050} 
    7151 
  • roard/include/driver_raw.h

    r668 r947  
    2626#define _DRIVER_RAW_H_ 
    2727 
    28 int driver_raw_open(DRIVER_USERDATA_T * inst, char * device, struct roar_audio_info * info); 
     28int driver_raw_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh); 
    2929int driver_raw_close(DRIVER_USERDATA_T   inst); 
    3030int driver_raw_pause(DRIVER_USERDATA_T   inst, int newstate); 
    31 int driver_raw_write(DRIVER_USERDATA_T   inst, char * buf, int len); 
    32 int driver_raw_read(DRIVER_USERDATA_T   inst, char * buf, int len); 
    3331int driver_raw_flush(DRIVER_USERDATA_T   inst); 
    3432 
Note: See TracChangeset for help on using the changeset viewer.