Changeset 4815:df2ef6edb97f in roaraudio for roard/driver_oss.c


Ignore:
Timestamp:
03/27/11 20:04:27 (13 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support to roard for record streams.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/driver_oss.c

    r4708 r4815  
    3737 
    3838 vio->write    = driver_oss_write; 
     39 vio->read     = driver_oss_read; 
    3940 vio->nonblock = driver_oss_nonblock; 
    4041 vio->sync     = driver_oss_sync; 
     
    4849 
    4950int driver_oss_open_device(struct driver_oss * self) { 
     51 int    flags  = 0; 
     52 int    rw     = 0; 
    5053 int    fh     = self->fh; 
    5154 char * device = self->device; 
     
    6467 } 
    6568 
    66  if ( (fh = open(device, O_WRONLY, 0644)) == -1 ) { 
     69 if ( self->ssid != -1 ) { 
     70  rw = streams_get_flag(self->ssid, ROAR_FLAG_RECSOURCE); 
     71 } 
     72 
     73 if ( rw ) { 
     74  flags |= O_RDWR; 
     75 } else { 
     76  flags |= O_WRONLY; 
     77 } 
     78 
     79 if ( (fh = open(device, flags, 0644)) == -1 ) { 
    6780  ROAR_ERR("driver_oss_open_device(*): Can not open OSS device: %s: %s", device, strerror(errno)); 
    6881  return -1; 
     
    324337 } 
    325338 
     339 ROAR_DBG("driver_oss_config_device(*): self->ssid=%i, fh=%i", self->ssid, fh); 
     340 streams_set_fh(self->ssid, -2); 
    326341 self->need_config = 0; 
    327342 
     343 ROAR_DBG("driver_oss_config_device(*) = 0"); 
    328344 return 0; 
    329345} 
     
    343359 self->ssid = -1; 
    344360 self->fh   = fh; 
     361 
     362 if ( sstream != NULL ) 
     363  self->ssid = ROAR_STREAM(sstream)->id; 
    345364 
    346365 if ( fh != -1 ) { 
     
    528547} 
    529548 
     549ssize_t driver_oss_read     (struct roar_vio_calls * vio, void *buf, size_t count) { 
     550 if ( _get(vio,fh) == -1 ) 
     551  return -1; 
     552 
     553 if ( _get(vio,need_config) ) { 
     554  if ( driver_oss_config_device(vio->inst) == -1 ) { 
     555   return -1; 
     556  } 
     557 } 
     558 
     559 return read(_get(vio,fh), buf, count); 
     560} 
     561 
    530562#endif 
    531563//ll 
Note: See TracChangeset for help on using the changeset viewer.