Index: ChangeLog
===================================================================
--- ChangeLog	(revision 5971)
+++ ChangeLog	(revision 5972)
@@ -1,3 +1,4 @@
 v. 1.0beta12 - ?
+	* Added user defined RoarDMX events.
 
 v. 1.0beta11 - Tue Jan 21 2014 21:04 CET
Index: include/libroarlight/roardmx.h
===================================================================
--- include/libroarlight/roardmx.h	(revision 5962)
+++ include/libroarlight/roardmx.h	(revision 5972)
@@ -82,4 +82,20 @@
 #define ROAR_ROARDMX_EVENT_FOGREADY 0x0B /* Fog machine is ready */
 #define ROAR_ROARDMX_EVENT_FOGHEAT  0x0C /* Fog machine is heating up */
+#define ROAR_ROARDMX_EVENT_USER0    0x30 /* User defined event #0  */
+#define ROAR_ROARDMX_EVENT_USER1    0x31 /* User defined event #1  */
+#define ROAR_ROARDMX_EVENT_USER2    0x32 /* User defined event #2  */
+#define ROAR_ROARDMX_EVENT_USER3    0x33 /* User defined event #3  */
+#define ROAR_ROARDMX_EVENT_USER4    0x34 /* User defined event #4  */
+#define ROAR_ROARDMX_EVENT_USER5    0x35 /* User defined event #5  */
+#define ROAR_ROARDMX_EVENT_USER6    0x36 /* User defined event #6  */
+#define ROAR_ROARDMX_EVENT_USER7    0x37 /* User defined event #7  */
+#define ROAR_ROARDMX_EVENT_USER8    0x38 /* User defined event #8  */
+#define ROAR_ROARDMX_EVENT_USER9    0x39 /* User defined event #9  */
+#define ROAR_ROARDMX_EVENT_USER10   0x3A /* User defined event #10 */
+#define ROAR_ROARDMX_EVENT_USER11   0x3B /* User defined event #11 */
+#define ROAR_ROARDMX_EVENT_USER12   0x3C /* User defined event #12 */
+#define ROAR_ROARDMX_EVENT_USER13   0x3D /* User defined event #13 */
+#define ROAR_ROARDMX_EVENT_USER14   0x3E /* User defined event #14 */
+#define ROAR_ROARDMX_EVENT_USER15   0x3F /* User defined event #15 */
 
 // Data format on the wire:
Index: libroarlight/roardmx.c
===================================================================
--- libroarlight/roardmx.c	(revision 5961)
+++ libroarlight/roardmx.c	(revision 5972)
@@ -99,5 +99,83 @@
  {ROAR_ROARDMX_EVENT_FOGHEAT|ROAR_ROARDMX_ETYPE_ON,        "fogheat-on"},
  {ROAR_ROARDMX_EVENT_FOGHEAT|ROAR_ROARDMX_ETYPE_HOLD,      "fogheat-hold"},
- {ROAR_ROARDMX_EVENT_FOGHEAT,                              "fogheat"}
+ {ROAR_ROARDMX_EVENT_FOGHEAT,                              "fogheat"},
+
+ // User Defined events:
+ {ROAR_ROARDMX_EVENT_USER0,                                "user0"},
+ {ROAR_ROARDMX_EVENT_USER1|ROAR_ROARDMX_ETYPE_BEAT,        "user1-beat"},
+ {ROAR_ROARDMX_EVENT_USER1|ROAR_ROARDMX_ETYPE_OFF,         "user1-off"},
+ {ROAR_ROARDMX_EVENT_USER1|ROAR_ROARDMX_ETYPE_ON,          "user1-on"},
+ {ROAR_ROARDMX_EVENT_USER1|ROAR_ROARDMX_ETYPE_HOLD,        "user1-hold"},
+ {ROAR_ROARDMX_EVENT_USER1,                                "user1"},
+ {ROAR_ROARDMX_EVENT_USER2|ROAR_ROARDMX_ETYPE_BEAT,        "user2-beat"},
+ {ROAR_ROARDMX_EVENT_USER2|ROAR_ROARDMX_ETYPE_OFF,         "user2-off"},
+ {ROAR_ROARDMX_EVENT_USER2|ROAR_ROARDMX_ETYPE_ON,          "user2-on"},
+ {ROAR_ROARDMX_EVENT_USER2|ROAR_ROARDMX_ETYPE_HOLD,        "user2-hold"},
+ {ROAR_ROARDMX_EVENT_USER2,                                "user2"},
+ {ROAR_ROARDMX_EVENT_USER3|ROAR_ROARDMX_ETYPE_BEAT,        "user3-beat"},
+ {ROAR_ROARDMX_EVENT_USER3|ROAR_ROARDMX_ETYPE_OFF,         "user3-off"},
+ {ROAR_ROARDMX_EVENT_USER3|ROAR_ROARDMX_ETYPE_ON,          "user3-on"},
+ {ROAR_ROARDMX_EVENT_USER3|ROAR_ROARDMX_ETYPE_HOLD,        "user3-hold"},
+ {ROAR_ROARDMX_EVENT_USER3,                                "user3"},
+ {ROAR_ROARDMX_EVENT_USER4|ROAR_ROARDMX_ETYPE_BEAT,        "user4-beat"},
+ {ROAR_ROARDMX_EVENT_USER4|ROAR_ROARDMX_ETYPE_OFF,         "user4-off"},
+ {ROAR_ROARDMX_EVENT_USER4|ROAR_ROARDMX_ETYPE_ON,          "user4-on"},
+ {ROAR_ROARDMX_EVENT_USER4|ROAR_ROARDMX_ETYPE_HOLD,        "user4-hold"},
+ {ROAR_ROARDMX_EVENT_USER4,                                "user4"},
+ {ROAR_ROARDMX_EVENT_USER5|ROAR_ROARDMX_ETYPE_BEAT,        "user5-beat"},
+ {ROAR_ROARDMX_EVENT_USER5|ROAR_ROARDMX_ETYPE_OFF,         "user5-off"},
+ {ROAR_ROARDMX_EVENT_USER5|ROAR_ROARDMX_ETYPE_ON,          "user5-on"},
+ {ROAR_ROARDMX_EVENT_USER5|ROAR_ROARDMX_ETYPE_HOLD,        "user5-hold"},
+ {ROAR_ROARDMX_EVENT_USER5,                                "user5"},
+ {ROAR_ROARDMX_EVENT_USER6|ROAR_ROARDMX_ETYPE_BEAT,        "user6-beat"},
+ {ROAR_ROARDMX_EVENT_USER6|ROAR_ROARDMX_ETYPE_OFF,         "user6-off"},
+ {ROAR_ROARDMX_EVENT_USER6|ROAR_ROARDMX_ETYPE_ON,          "user6-on"},
+ {ROAR_ROARDMX_EVENT_USER6|ROAR_ROARDMX_ETYPE_HOLD,        "user6-hold"},
+ {ROAR_ROARDMX_EVENT_USER6,                                "user6"},
+ {ROAR_ROARDMX_EVENT_USER7|ROAR_ROARDMX_ETYPE_BEAT,        "user7-beat"},
+ {ROAR_ROARDMX_EVENT_USER7|ROAR_ROARDMX_ETYPE_OFF,         "user7-off"},
+ {ROAR_ROARDMX_EVENT_USER7|ROAR_ROARDMX_ETYPE_ON,          "user7-on"},
+ {ROAR_ROARDMX_EVENT_USER7|ROAR_ROARDMX_ETYPE_HOLD,        "user7-hold"},
+ {ROAR_ROARDMX_EVENT_USER7,                                "user7"},
+ {ROAR_ROARDMX_EVENT_USER8|ROAR_ROARDMX_ETYPE_BEAT,        "user8-beat"},
+ {ROAR_ROARDMX_EVENT_USER8|ROAR_ROARDMX_ETYPE_OFF,         "user8-off"},
+ {ROAR_ROARDMX_EVENT_USER8|ROAR_ROARDMX_ETYPE_ON,          "user8-on"},
+ {ROAR_ROARDMX_EVENT_USER8|ROAR_ROARDMX_ETYPE_HOLD,        "user8-hold"},
+ {ROAR_ROARDMX_EVENT_USER8,                                "user8"},
+ {ROAR_ROARDMX_EVENT_USER9|ROAR_ROARDMX_ETYPE_BEAT,        "user9-beat"},
+ {ROAR_ROARDMX_EVENT_USER9|ROAR_ROARDMX_ETYPE_OFF,         "user9-off"},
+ {ROAR_ROARDMX_EVENT_USER9|ROAR_ROARDMX_ETYPE_ON,          "user9-on"},
+ {ROAR_ROARDMX_EVENT_USER9|ROAR_ROARDMX_ETYPE_HOLD,        "user9-hold"},
+ {ROAR_ROARDMX_EVENT_USER9,                                "user9"},
+ {ROAR_ROARDMX_EVENT_USER10|ROAR_ROARDMX_ETYPE_BEAT,       "user10-beat"},
+ {ROAR_ROARDMX_EVENT_USER10|ROAR_ROARDMX_ETYPE_OFF,        "user10-off"},
+ {ROAR_ROARDMX_EVENT_USER10|ROAR_ROARDMX_ETYPE_ON,         "user10-on"},
+ {ROAR_ROARDMX_EVENT_USER10|ROAR_ROARDMX_ETYPE_HOLD,       "user10-hold"},
+ {ROAR_ROARDMX_EVENT_USER10,                               "user10"},
+ {ROAR_ROARDMX_EVENT_USER11|ROAR_ROARDMX_ETYPE_BEAT,       "user11-beat"},
+ {ROAR_ROARDMX_EVENT_USER11|ROAR_ROARDMX_ETYPE_OFF,        "user11-off"},
+ {ROAR_ROARDMX_EVENT_USER11|ROAR_ROARDMX_ETYPE_ON,         "user11-on"},
+ {ROAR_ROARDMX_EVENT_USER11|ROAR_ROARDMX_ETYPE_HOLD,       "user11-hold"},
+ {ROAR_ROARDMX_EVENT_USER11,                               "user11"},
+ {ROAR_ROARDMX_EVENT_USER12|ROAR_ROARDMX_ETYPE_BEAT,       "user12-beat"},
+ {ROAR_ROARDMX_EVENT_USER12|ROAR_ROARDMX_ETYPE_OFF,        "user12-off"},
+ {ROAR_ROARDMX_EVENT_USER12|ROAR_ROARDMX_ETYPE_ON,         "user12-on"},
+ {ROAR_ROARDMX_EVENT_USER12|ROAR_ROARDMX_ETYPE_HOLD,       "user12-hold"},
+ {ROAR_ROARDMX_EVENT_USER12,                               "user12"},
+ {ROAR_ROARDMX_EVENT_USER13|ROAR_ROARDMX_ETYPE_BEAT,       "user13-beat"},
+ {ROAR_ROARDMX_EVENT_USER13|ROAR_ROARDMX_ETYPE_OFF,        "user13-off"},
+ {ROAR_ROARDMX_EVENT_USER13|ROAR_ROARDMX_ETYPE_ON,         "user13-on"},
+ {ROAR_ROARDMX_EVENT_USER13|ROAR_ROARDMX_ETYPE_HOLD,       "user13-hold"},
+ {ROAR_ROARDMX_EVENT_USER13,                               "user13"},
+ {ROAR_ROARDMX_EVENT_USER14|ROAR_ROARDMX_ETYPE_BEAT,       "user14-beat"},
+ {ROAR_ROARDMX_EVENT_USER14|ROAR_ROARDMX_ETYPE_OFF,        "user14-off"},
+ {ROAR_ROARDMX_EVENT_USER14|ROAR_ROARDMX_ETYPE_ON,         "user14-on"},
+ {ROAR_ROARDMX_EVENT_USER14|ROAR_ROARDMX_ETYPE_HOLD,       "user14-hold"},
+ {ROAR_ROARDMX_EVENT_USER14,                               "user14"},
+ {ROAR_ROARDMX_EVENT_USER15|ROAR_ROARDMX_ETYPE_BEAT,       "user15-beat"},
+ {ROAR_ROARDMX_EVENT_USER15|ROAR_ROARDMX_ETYPE_OFF,        "user15-off"},
+ {ROAR_ROARDMX_EVENT_USER15|ROAR_ROARDMX_ETYPE_ON,         "user15-on"},
+ {ROAR_ROARDMX_EVENT_USER15|ROAR_ROARDMX_ETYPE_HOLD,       "user15-hold"},
+ {ROAR_ROARDMX_EVENT_USER15,                               "user15"}
 };
 
