Changeset 6001:872d916b8ca0 in roaraudio for libroarlight/roardmx.c


Ignore:
Timestamp:
04/06/14 07:00:26 (10 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added some support for CONTROL messages to libroarlight's RoarDMX support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroarlight/roardmx.c

    r5978 r6001  
    561561 
    562562// * CONTROL: 
    563 // Not yet supported. 
     563static inline int roar_roardmx_message_new_control(struct roar_roardmx_message * mes, uint8_t subcommand) { 
     564 BCHK(mes); 
     565 
     566 if ( roar_roardmx_message_new(mes) == -1 ) 
     567  return -1; 
     568 
     569 mes->type = ROAR_ROARDMX_TYPE_CONTROL; 
     570 mes->data[3] = 0; // version 
     571 mes->data[4] = subcommand; 
     572 mes->length  = 2; 
     573 
     574 return 0; 
     575} 
     576 
     577int roar_roardmx_message_new_version(struct roar_roardmx_message * mes, uint8_t version) { 
     578 BCHK(mes); 
     579 
     580 if ( version != (uint8_t)0 ) { 
     581  roar_err_set(ROAR_ERROR_NSVERSION); 
     582  return -1; 
     583 } 
     584 
     585 if ( roar_roardmx_message_new_control(mes, ROAR_ROARDMX_CTL_VERSION) == -1 ) 
     586  return -1; 
     587 
     588 mes->data[5] = version; 
     589 mes->length  = 3; 
     590 
     591 return 0; 
     592} 
     593 
     594int roar_roardmx_message_new_sync(struct roar_roardmx_message * mes, uint8_t flags) { 
     595 BCHK(mes); 
     596 
     597 if ( roar_roardmx_message_new_control(mes, ROAR_ROARDMX_CTL_VERSION) == -1 ) 
     598  return -1; 
     599 
     600 mes->data[5] = flags; 
     601 mes->length  = 3; 
     602 
     603 return 0; 
     604} 
     605 
     606int roar_roardmx_message_get_subcommand(struct roar_roardmx_message * mes) { 
     607 BCHK(mes); 
     608 
     609 if ( mes->type != ROAR_ROARDMX_TYPE_CONTROL ) { 
     610  roar_err_set(ROAR_ERROR_TYPEMM); 
     611  return -1; 
     612 } 
     613 
     614 if ( mes->length < 2 ) { 
     615  roar_err_set(ROAR_ERROR_PROTO); 
     616  return -1; 
     617 } 
     618 
     619 if ( mes->data[3] != 0 ) { 
     620  roar_err_set(ROAR_ERROR_NSVERSION); 
     621  return -1; 
     622 } 
     623 
     624 return mes->data[4]; 
     625} 
     626 
     627static inline int roar_roardmx_message_get_ctl_byte5(struct roar_roardmx_message * mes, uint8_t subtype) { 
     628 BCHK(mes); 
     629 
     630 if ( mes->type != ROAR_ROARDMX_TYPE_CONTROL ) { 
     631  roar_err_set(ROAR_ERROR_TYPEMM); 
     632  return -1; 
     633 } 
     634 
     635 if ( roar_roardmx_message_get_subcommand(mes) != (int)(unsigned)subtype ) { 
     636  roar_err_set(ROAR_ERROR_TYPEMM); 
     637  return -1; 
     638 } 
     639 
     640 return mes->data[5]; 
     641} 
     642 
     643int roar_roardmx_message_get_ctl_version(struct roar_roardmx_message * mes) { 
     644 return roar_roardmx_message_get_ctl_byte5(mes, ROAR_ROARDMX_CTL_VERSION); 
     645} 
     646 
     647int roar_roardmx_message_get_ctl_flags(struct roar_roardmx_message * mes) { 
     648 return roar_roardmx_message_get_ctl_byte5(mes, ROAR_ROARDMX_CTL_SYNC); 
     649} 
    564650 
    565651//ll 
Note: See TracChangeset for help on using the changeset viewer.