Changeset 4538:b809f0dcd86a in roaraudio


Ignore:
Timestamp:
10/23/10 13:00:54 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

implemented support for sending extended flags over the network

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • include/libroar/stream.h

    r4296 r4538  
    9191int roar_stream_set_chanmap (struct roar_connection * con, struct roar_stream * s, char * map, size_t   len); 
    9292 
    93 int roar_stream_set_flags (struct roar_connection * con, struct roar_stream * s, int flags, int reset); 
     93int roar_stream_set_flags  (struct roar_connection * con, struct roar_stream * s, int flags, int reset); 
     94int roar_stream_set_flags2 (struct roar_connection * con, struct roar_stream * s, uint32_t flags, int action); 
    9495 
    9596int roar_stream_set_role  (struct roar_connection * con, struct roar_stream * s, int role); 
  • libroar/stream.c

    r4296 r4538  
    611611 
    612612int roar_stream_set_flags (struct roar_connection * con, struct roar_stream * s, int flags, int reset) { 
     613 return roar_stream_set_flags2(con, s, flags, reset == ROAR_RESET_FLAG ? ROAR_RESET_FLAG : ROAR_SET_FLAG); 
     614} 
     615 
     616int roar_stream_set_flags2 (struct roar_connection * con, struct roar_stream * s, uint32_t flags, int action) { 
    613617 struct roar_message m; 
    614618 uint16_t * data = (uint16_t *) m.data; 
     
    619623 m.cmd     = ROAR_CMD_SET_STREAM_PARA; 
    620624 m.stream  = s->id; 
    621  m.datalen = 8; 
    622625 m.pos     = 0; 
     626 
     627 if ( flags & 0xFFFF0000 ) { 
     628  m.datalen = 2*5; 
     629 } else { 
     630  m.datalen = 2*4; 
     631 } 
    623632 
    624633 data[0] = 0; // Version and reserved 
    625634 data[1] = ROAR_STREAM_PARA_FLAGS; // flags 
    626  data[2] = reset == ROAR_RESET_FLAG ? ROAR_RESET_FLAG : ROAR_SET_FLAG; 
    627  data[3] = flags; 
     635 data[2] = action; 
     636 data[3] = flags & 0x0000FFFF; 
     637 
     638 if ( flags & 0xFFFF0000 ) { 
     639  data[4] = (flags & 0xFFFF0000) >> 16; 
     640 } 
    628641 
    629642 for (i = 0; i < m.datalen/2; i++) { 
  • roard/req.c

    r4521 r4538  
    10741074int req_on_set_stream_para (int client, struct roar_message * mes, char ** data, uint32_t flags[2]) { 
    10751075 uint16_t * d = (uint16_t *) mes->data; 
     1076 uint32_t tmp; 
    10761077 int i; 
    10771078 
     
    10881089 switch (d[1]) { 
    10891090  case ROAR_STREAM_PARA_FLAGS: 
    1090     if ( mes->datalen != 2*4 ) 
     1091    if ( mes->datalen != 2*4 && mes->datalen != 2*5 ) 
    10911092     return -1; 
    10921093 
     
    10951096 
    10961097    ROAR_DBG("req_on_set_stream_para(*): request seems to be valid"); 
     1098 
     1099    tmp = 0; 
     1100 
     1101    if ( mes->datalen == 2*5 ) { 
     1102     d[4] = ROAR_NET2HOST16(d[4]); 
     1103     tmp   = d[4]; 
     1104     tmp <<= 16; 
     1105    } 
     1106 
     1107    tmp |= d[3]; 
    10971108 
    10981109    if ( d[2] == ROAR_RESET_FLAG ) { 
Note: See TracChangeset for help on using the changeset viewer.