Changeset 3529:fba86b5b08a7 in roaraudio for roard/req.c


Ignore:
Timestamp:
02/19/10 17:36:33 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

support to read complet mixer from roard, including scale and rpg

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/req.c

    r3517 r3529  
    808808int req_on_get_vol (int client, struct roar_message * mes, char * data) { 
    809809 uint16_t * info = (uint16_t *) mes->data; 
     810 uint16_t   version = -1; 
    810811 int stream; 
    811812 struct roar_stream_server * s; 
     
    816817 ROAR_DBG("req_on_get_vol(*): mes->datalen=%i", mes->datalen); 
    817818 
    818  if ( mes->datalen < (2*2) ) 
    819   return -1; 
    820  
    821  if ( info[0] != 0 ) // version 
    822   return -1; 
    823  
    824  stream = ROAR_NET2HOST16(info[1]); 
     819 if ( mes->datalen < 2 ) { 
     820  return -1; 
     821 } 
     822 
     823 version = ROAR_NET2HOST16(info[0]); 
     824 
     825 switch (version) { 
     826  case 0: 
     827    if ( mes->datalen < (2*2) ) 
     828     return -1; 
     829 
     830    stream = ROAR_NET2HOST16(info[1]); 
     831   break; 
     832  case 1: 
     833    stream = mes->stream; 
     834   break; 
     835  default: 
     836    return -1; 
     837   break; 
     838 } 
     839 
    825840 ROAR_DBG("req_on_get_vol(*): stream=%i", stream); 
    826841 
     
    841856 // ok, we have everything 
    842857 
    843  info[0] = 0; 
    844  info[1] = ROAR_HOST2NET16(chans = ROAR_STREAM(s)->info.channels); 
    845  
    846  for (i = 0; i < chans; i++) 
    847   info[2+i] = ROAR_HOST2NET16(s->mixer.mixer[i]); 
    848  
    849  mes->datalen = (2 + chans)*2; 
     858 info[0] = ROAR_HOST2NET16(version); 
     859 
     860 switch (version) { 
     861  case 0: 
     862    info[1] = ROAR_HOST2NET16(chans = ROAR_STREAM(s)->info.channels); 
     863 
     864    for (i = 0; i < chans; i++) 
     865     info[2+i] = ROAR_HOST2NET16(s->mixer.mixer[i]); 
     866 
     867     mes->datalen = (2 + chans)*2; 
     868   break; 
     869  case 1: 
     870    info[1] = ROAR_HOST2NET16(chans = ROAR_STREAM(s)->info.channels); 
     871    info[2] = ROAR_HOST2NET16(s->mixer.scale); 
     872    info[3] = ROAR_HOST2NET16(s->mixer.rpg_mul); 
     873    info[4] = ROAR_HOST2NET16(s->mixer.rpg_div); 
     874 
     875    for (i = 0; i < chans; i++) 
     876     info[5+i] = ROAR_HOST2NET16(s->mixer.mixer[i]); 
     877 
     878     mes->datalen = (5 + chans)*2; 
     879   break; 
     880  default: 
     881    return -1; 
     882   break; 
     883 } 
     884 
    850885 mes->cmd = ROAR_CMD_OK; 
    851886 
Note: See TracChangeset for help on using the changeset viewer.