Changeset 3246:1d9346abf116 in roaraudio for libroaross


Ignore:
Timestamp:
01/29/10 22:26:35 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

start of DMX support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroaross/libroaross.c

    r3245 r3246  
    101101#define HT_WAVEFORM   3 
    102102#define HT_MIDI       4 
     103#define HT_DMX        5 
    103104 
    104105struct session { 
     
    119120 size_t                stream_buffersize; 
    120121 size_t                readc, writec; 
     122 size_t                pos; 
    121123}; 
    122124 
     
    129131 int     (*ioctl)(int d, int request, ...); 
    130132#endif 
     133 off_t   (*lseek)(int fildes, off_t offset, int whence); 
    131134} _os; 
    132135 
     
    172175 _os.ioctl = dlsym(REAL_LIBC, "ioctl"); 
    173176#endif 
     177 _os.lseek = dlsym(REAL_LIBC, "lseek"); 
    174178} 
    175179 
     
    371375  {"/dev/sound/midi",    HT_MIDI}, 
    372376  {"/dev/sound/rmidi",   HT_MIDI}, 
     377  {"/dev/dmx",           HT_DMX}, 
    373378#ifdef ROAR_DEFAULT_OSS_DEV 
    374379  {ROAR_DEFAULT_OSS_DEV, HT_WAVEFORM}, 
     
    408413       handle->stream_dir = ROAR_DIR_MIDI_OUT; 
    409414      break; 
     415     case HT_DMX: 
     416       handle->stream_dir = ROAR_DIR_LIGHT_OUT; 
     417      break; 
    410418    } 
    411419   break; 
     
    417425     case HT_MIDI: 
    418426       handle->stream_dir = ROAR_DIR_MIDI_IN; 
     427      break; 
     428     case HT_DMX: 
     429       handle->stream_dir = ROAR_DIR_LIGHT_IN; 
    419430      break; 
    420431    } 
     
    858869 
    859870 return _os.read(fd, buf, count); 
     871} 
     872 
     873off_t lseek(int fildes, off_t offset, int whence) { 
     874 struct pointer * pointer; 
     875 
     876 _init(); 
     877 
     878 if ( (pointer = _get_pointer_by_fh(fildes)) != NULL ) { 
     879  if ( pointer->handle->type == HT_DMX ) { 
     880   switch (whence) { 
     881    case SEEK_SET: 
     882      pointer->handle->pos  = offset; 
     883     break; 
     884    case SEEK_CUR: 
     885      pointer->handle->pos += offset; 
     886     break; 
     887    case SEEK_END: 
     888    default: 
     889      errno = EINVAL; 
     890      return -1; 
     891     break; 
     892   } 
     893   return pointer->handle->pos; 
     894  } else { 
     895   errno = EINVAL; 
     896   return -1; 
     897  } 
     898 } 
     899 
     900 return _os.lseek(fildes, offset, whence); 
    860901} 
    861902 
Note: See TracChangeset for help on using the changeset viewer.