This file is indexed.

/usr/include/libroarlight/roardmx.h is in libroar-dev 1.0~beta11-10.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
//roardmx.h:

/*
 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009-2014
 *
 *  This file is part of libroar a part of RoarAudio,
 *  a cross-platform sound system for both, home and professional use.
 *  See README for details.
 *
 *  This file is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 3
 *  as published by the Free Software Foundation.
 *
 *  libroar is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this software; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 *  Boston, MA 02110-1301, USA.
 *
 *  NOTE for everyone want's to change something and send patches:
 *  read README and HACKING! There a addition information on
 *  the license of this document you need to read before you send
 *  any patches.
 *
 *  NOTE for uses of non-GPL (LGPL,...) software using libesd, libartsc
 *  or libpulse*:
 *  The libs libroaresd, libroararts and libroarpulse link this lib
 *  and are therefore GPL. Because of this it may be illigal to use
 *  them with any software that uses libesd, libartsc or libpulse*.
 */

#ifndef _LIBROARLIGHT_ROARDMX_H_
#define _LIBROARLIGHT_ROARDMX_H_

#include "libroarlight.h"

#define ROAR_ROARDMX_VERSION        0x00

#define ROAR_ROARDMX_MASK_FLAGS     0xF0
#define ROAR_ROARDMX_MASK_TYPE      0x0F

#define ROAR_ROARDMX_DATA_LENGTH    ((1<<(sizeof(char)*8))-1) /* 255 */

// we have a offset of one nibble, see ROAR_ROARDMX_MASK_FLAGS
#define ROAR_ROARDMX_FLAG_PACKED    0x10

#define ROAR_ROARDMX_TYPE_SSET      0x00 /* simple set */
#define ROAR_ROARDMX_TYPE_IPO1      0x01 /* linear interploation */
#define ROAR_ROARDMX_TYPE_IPOLIN    ROAR_ROARDMX_TYPE_IPO1
#define ROAR_ROARDMX_TYPE_IPO4      0x02 /* poly5 interpolation (a*t^4 + b*t^3 + c*t^2 + d*t + e) */
#define ROAR_ROARDMX_TYPE_INC8S     0x03 /* signed 8 bit increment */
#define ROAR_ROARDMX_TYPE_RANGESET  0x04 /* like simple set but set ranges of channels */
#define ROAR_ROARDMX_TYPE_EVENT     0x0E /* used to transmit simple events like step, blackout and stuff */
#define ROAR_ROARDMX_TYPE_CONTROL   0x0F /* Used to transmit other control information like codec version */

// Events:
// event types (ETYPE) will be bit or-ed with event.
#define ROAR_ROARDMX_MASK_EVENT     0x3F
#define ROAR_ROARDMX_MASK_ETYPE     0xC0

#define ROAR_ROARDMX_ETYPE_BEAT     0x00 /* event happens NOW */
#define ROAR_ROARDMX_ETYPE_OFF      0x40 /* event ended */
#define ROAR_ROARDMX_ETYPE_ON       0x80 /* event started */
#define ROAR_ROARDMX_ETYPE_HOLD     0xC0 /* event is still running, used as keep-alive */

// events: must be in range 0x00 to 0x3F.
#define ROAR_ROARDMX_EVENT_NONE     0x00 /* can be used as keep-alive or padding */
#define ROAR_ROARDMX_EVENT_STEP     0x01
#define ROAR_ROARDMX_EVENT_TAP      0x02
#define ROAR_ROARDMX_EVENT_BEAT     0x03 /* audio signal generated beat */
#define ROAR_ROARDMX_EVENT_BLACKOUT 0x04 /* set all light channels to zero */
#define ROAR_ROARDMX_EVENT_FULLON   0x05 /* set all light channels to full intensity */
#define ROAR_ROARDMX_EVENT_FLASH    0x06 /* like fullon but can also use strobe. */
#define ROAR_ROARDMX_EVENT_STROBE   0x07 /* triggers all strobes */
#define ROAR_ROARDMX_EVENT_STROBEREADY 0x08 /* strobe is ready */
#define ROAR_ROARDMX_EVENT_STROBELOAD  0x09 /* strobe is loading */
#define ROAR_ROARDMX_EVENT_FOG      0x0A /* triggers all fog machines */
#define ROAR_ROARDMX_EVENT_FOGREADY 0x0B /* Fog machine is ready */
#define ROAR_ROARDMX_EVENT_FOGHEAT  0x0C /* Fog machine is heating up */

// Data format on the wire:
/*
 * All packets consist of a header and a body.
 * The header has the size of 3 Bytes:
 * 0) version. Must be ROAR_ROARDMX_VERSION.
 * 1) packet type and flags.
 * 2) length of body in bytes.
 *
 * the type-flags byte consists of the packet type in the lower nibble and
 * the flags in the upper nibble.
 *
 * the header is followd by a body of zero to 255 bytes length.
 * the content of the body depends on the used type of packet.
 *
 * SSET: (simple set) Sets channels to values.
 *  The body consists of {channel, value}-pairs.
 *  every entry is 3 byte: hi byte of channel, low byte of channel, value.
 *
 * IPO1: not implemented.
 * IPO4: not implemented.
 * INC8S: not implemented.
 * RANGESET: not implemented.
 * EVENT: transmit simple yet abstract events.
 * The body is an array of bytes. Each byte represents one event.
 * Each event has the upper two bits set to the meta type of the event
 * (beat, on, off, hold) and the lower 6 bits to the type of te event.
 *
 * CONTROL: not implemented.
 */

struct roar_roardmx_message {
 unsigned char version;
 unsigned char flags;
 unsigned char type;
 size_t        length;
 unsigned char data[3 /* header */ + ROAR_ROARDMX_DATA_LENGTH /* data */];
};

// database access:
int roar_roardmx_str2event(const char * event);
const char * roar_roardmx_event2str(const int event);

// generic things:
int roar_roardmx_message_new (struct roar_roardmx_message * mes);

// low level:
//int roar_roardmx_message_set_flag(struct roar_roardmx_message * mes, unsigned char   flag);
//int roar_roardmx_message_set_len (struct roar_roardmx_message * mes, size_t          type);
//int roar_roardmx_message_get_data(struct roar_roardmx_message * mes, unsigned char ** data);

// mdium level:
int roar_roardmx_message_set_type(struct roar_roardmx_message * mes, unsigned char   type);
int roar_roardmx_message_get_flag(struct roar_roardmx_message * mes, unsigned char * flag);
int roar_roardmx_message_get_type(struct roar_roardmx_message * mes, unsigned char * type);
int roar_roardmx_message_get_len (struct roar_roardmx_message * mes, size_t        * length);


// IO:
int roar_roardmx_message_send(struct roar_roardmx_message * mes, struct roar_vio_calls * vio);
int roar_roardmx_message_recv(struct roar_roardmx_message * mes, struct roar_vio_calls * vio);

// Data/high level:
// * *:
int roar_roardmx_message_numchannels(struct roar_roardmx_message * mes);
int roar_roardmx_message_add_chanval(struct roar_roardmx_message * mes, uint16_t   channel, unsigned char   val);
int roar_roardmx_message_get_chanval(struct roar_roardmx_message * mes, uint16_t * channel, unsigned char * val, int index);

// * SSET:
int roar_roardmx_message_new_sset   (struct roar_roardmx_message * mes);

// * IPO1:
// Not yet supported.
// * IPO4:
// Not yet supported.
// * INC8S:
// Not yet supported.
// * RANGESET:
// Not yet supported.
// * EVENT:
int roar_roardmx_message_new_event(struct roar_roardmx_message * mes);
int roar_roardmx_message_add_events(struct roar_roardmx_message * mes, const uint8_t * events, size_t len);
#define roar_roardmx_message_add_event(mes,event) roar_roardmx_message_add_events((mes), &(uint8_t){(event)}, 1)
int roar_roardmx_message_get_events(struct roar_roardmx_message * mes, const uint8_t ** events, size_t * len);

// * CONTROL:
// Not yet supported.

#endif

//ll