Changeset 5927:95a79080ea30 in roaraudio
- Timestamp:
- 09/11/13 14:16:50 (11 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/codecfilter_roardmx.c
r5917 r5927 28 28 #ifndef ROAR_WITHOUT_DCOMP_LIGHT 29 29 30 int cf_light_roardmx_read(int id, struct roar_stream_server * ss) { 31 struct roar_roardmx_message mes; 32 int i, c; 30 static inline int __read_sset(int id, struct roar_stream_server * ss, struct roar_roardmx_message * mes) { 33 31 uint16_t channel; 34 32 uint8_t value; 35 36 if ( roar_roardmx_message_recv(&mes, &(ss->vio)) == -1 ) { 37 return -1; 38 } 33 int i, c; 39 34 40 35 // we ignore errors here at the moment as 0 not < -1 41 c = roar_roardmx_message_numchannels( &mes);36 c = roar_roardmx_message_numchannels(mes); 42 37 ROAR_DBG("light_check_stream(id=%i): Number of subframes: %u", id, c); 43 38 44 39 for (i = 0; i < c; i++) { 45 if ( roar_roardmx_message_get_chanval( &mes, &channel, &value, i) == -1 )40 if ( roar_roardmx_message_get_chanval(mes, &channel, &value, i) == -1 ) 46 41 return -1; 47 42 … … 58 53 } 59 54 60 int cf_light_roardmx_write(int id, struct roar_stream_server * ss) { 55 static inline int __read_events(int id, struct roar_stream_server * ss, struct roar_roardmx_message * mes) { 56 const uint8_t * events; 57 size_t len; 58 59 (void)id, (void)ss; 60 61 if ( roar_roardmx_message_get_events(mes, &events, &len) == -1 ) 62 return -1; 63 64 return light_dmxevent_add(events, len); 65 } 66 67 int cf_light_roardmx_read(int id, struct roar_stream_server * ss) { 68 struct roar_roardmx_message mes; 69 unsigned char type; 70 71 if ( roar_roardmx_message_recv(&mes, &(ss->vio)) == -1 ) 72 return -1; 73 74 if ( roar_roardmx_message_get_type(&mes, &type) == -1 ) 75 return -1; 76 77 switch (type) { 78 case ROAR_ROARDMX_TYPE_SSET: return __read_sset(id, ss, &mes); break; 79 case ROAR_ROARDMX_TYPE_EVENT: return __read_events(id, ss, &mes); break; 80 } 81 82 roar_err_set(ROAR_ERROR_NSTYPE); 83 return -1; 84 } 85 86 static inline int __write_events(int id, struct roar_stream_server * ss) { 87 struct roar_roardmx_message mes; 88 const uint8_t * events; 89 size_t len; 90 91 if ( light_dmxevent_read(&events, &len) == -1 ) 92 return -1; 93 94 // check if we need to send events at all: 95 if ( len == 0 ) 96 return 0; 97 98 // ok, now let's build the message: 99 if ( roar_roardmx_message_new_event(&mes) == -1 ) 100 return -1; 101 102 if ( roar_roardmx_message_add_events(&mes, events, len) == -1 ) 103 return -1; 104 105 // and send it: 106 if ( roar_roardmx_message_send(&mes, &(ss->vio)) == -1 ) 107 return -1; 108 109 return 0; 110 } 111 112 static inline int __write_channels(int id, struct roar_stream_server * ss) { 61 113 struct roar_roardmx_message mes; 62 114 int have_message = 0; … … 90 142 } 91 143 144 int cf_light_roardmx_write(int id, struct roar_stream_server * ss) { 145 if ( __write_events(id, ss) == -1 ) 146 return -1; 147 148 if ( __write_channels(id, ss) == -1 ) 149 return -1; 150 151 return 0; 152 } 153 92 154 #endif 93 155
Note: See TracChangeset
for help on using the changeset viewer.