Changeset 5920:749a4a6a1413 in roaraudio for roard
- Timestamp:
- 09/11/13 11:25:17 (11 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roard
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/include/light.h
r5917 r5920 32 32 33 33 #define LIGHT_CHANNELS_DEFAULT 512 /* one DMX Universe */ 34 #define MAX_EVENTS_PER_CYCLE 16 /* this*cfreq is event thruput (16*100Hz = 1.6kEvents/s) */ 34 35 35 36 extern struct light_state { 36 37 unsigned int channels; 38 uint8_t events[MAX_EVENTS_PER_CYCLE]; 39 size_t eventsqueuelen; 37 40 uint8_t * state; 38 41 uint8_t * changes; … … 57 60 int light_dmxchannel_set(size_t index, uint8_t val); 58 61 62 int light_dmxevent_add(const uint8_t * events, size_t len); 63 int light_dmxevent_read(const uint8_t ** events, size_t * len); 64 #define light_dmxevent_addone(event) light_dmxevent_add(&(uint8_t){(event)}, 1) 65 59 66 // codec filters: 60 67 int cf_light_roardmx_read(int id, struct roar_stream_server * ss); -
roard/light.c
r5918 r5920 104 104 memset(g_light_state.state, 0, g_light_state.channels); 105 105 memset(g_light_state.changes, 0, g_light_state.channels); 106 memset(g_light_state.events, 0, sizeof(g_light_state.events)); 107 108 g_light_state.eventsqueuelen = 0; 106 109 107 110 return 0; … … 113 116 114 117 memset(g_light_state.changes, 0, g_light_state.channels); 118 memset(g_light_state.events, 0, sizeof(g_light_state.events)); 119 120 g_light_state.eventsqueuelen = 0; 115 121 116 122 return 0; … … 236 242 } 237 243 244 int light_dmxevent_add(const uint8_t * events, size_t len) { 245 size_t i; 246 247 if ( events == NULL ) { 248 roar_err_set(ROAR_ERROR_FAULT); 249 return -1; 250 } 251 252 if ( len > (sizeof(g_light_state.events) - g_light_state.eventsqueuelen) ) { 253 roar_err_set(ROAR_ERROR_NOSPC); 254 return -1; 255 } 256 257 for (i = 0; i < len; i++) { 258 g_light_state.events[g_light_state.eventsqueuelen++] = events[i]; 259 roar_notify_core_emit_simple(ROAR_DATA_DMX512_EVENT, -1, g_light_mixer.stream, ROAR_OT_STREAM, events[i], -1, NULL, -1); 260 } 261 262 return 0; 263 } 264 265 int light_dmxevent_read(const uint8_t ** events, size_t * len) { 266 if ( events == NULL || len == NULL ) { 267 roar_err_set(ROAR_ERROR_FAULT); 268 return -1; 269 } 270 271 *events = g_light_state.events; 272 *len = g_light_state.eventsqueuelen; 273 274 return 0; 275 } 276 238 277 #endif 239 278
Note: See TracChangeset
for help on using the changeset viewer.