Changeset 6001:872d916b8ca0 in roaraudio for libroarlight/roardmx.c
- Timestamp:
- 04/06/14 07:00:26 (10 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroarlight/roardmx.c
r5978 r6001 561 561 562 562 // * CONTROL: 563 // Not yet supported. 563 static 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 577 int 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 594 int 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 606 int 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 627 static 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 643 int 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 647 int 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 } 564 650 565 651 //ll
Note: See TracChangeset
for help on using the changeset viewer.