Add Erlang M2UA decoding and encoding routines
diff --git a/src/m2ua.hrl b/src/m2ua.hrl
new file mode 100644
index 0000000..26f10fc
--- /dev/null
+++ b/src/m2ua.hrl
@@ -0,0 +1,59 @@
+
+% RFC 3331 Section 3.1.3 Message Class
+-define(M2UA_MSGC_MGMT, 0). % Management Messages [IUA/M2UA/M3UA/SUA]
+-define(M2UA_MSGC_TRANSFER, 1). % Transfer Messages [M3UA]
+-define(M2UA_MSGC_SSNM, 2). % SS7 Signalling Network Management [M3UA/SUA]
+-define(M2UA_MSGC_ASPSM, 3). % ASP State Maintenance [IUA/M2UA/M3UA/SUA]
+-define(M2UA_MSGC_ASPTM, 4). % ASP Traffic Maintenance [IUA/M2UA/M3UA/SUA]
+-define(M2UA_MSGC_QPTM, 5). % Q.921/Q.931 Boundary Primitives Transport [IUA]
+-define(M2UA_MSGC_MAUP, 6). % MTP2 User Adaption [M2UA]
+-define(M2UA_MSGC_CONNLESS, 7). % Connectionless Messages [SUA]
+-define(M2UA_MSGC_CONN, 8). % Connection oriented messages [SUA]
+-define(M2UA_MSGC_RKM, 9). % Routing Key Management [M3UA]
+-define(M2UA_MSGC_IIM, 10). % Interface Identifier Management (M2UA)
+
+% RFC 3331 Section 3.1.4 Message Type
+-define(M2UA_MAUP_MSGT_RESERVED, 0).
+-define(M2UA_MAUP_MSGT_DATA, 1).
+-define(M2UA_MAUP_MSGT_EST_REQ, 2).
+-define(M2UA_MAUP_MSGT_EST_CONF, 3).
+-define(M2UA_MAUP_MSGT_REL_REQ, 4).
+-define(M2UA_MAUP_MSGT_REL_CONF, 5).
+-define(M2UA_MAUP_MSGT_REL_IND, 6).
+-define(M2UA_MAUP_MSGT_STATE_REQ, 7).
+-define(M2UA_MAUP_MSGT_STATE_CONF, 8).
+-define(M2UA_MAUP_MSGT_STATE_IND, 9).
+-define(M2UA_MAUP_MSGT_DATA_RETR_REQ, 10).
+-define(M2UA_MAUP_MSGT_DATA_RETR_CONF, 11).
+-define(M2UA_MAUP_MSGT_DATA_RETR_IND, 12).
+-define(M2UA_MAUP_MSGT_DATA_RETR_COMPL_IND, 13).
+-define(M2UA_MAUP_MSGT_CONG_IND, 14).
+-define(M2UA_MAUP_MSGT_DATA_ACK, 15).
+
+
+-define(M2UA_ASPSM_MSGT_UP, 0).
+-define(M2UA_ASPSM_MSGT_DOWN, 1).
+-define(M2UA_ASPSM_MSGT_BEAT, 2).
+-define(M2UA_ASPSM_MSGT_UP_ACK, 3).
+-define(M2UA_ASPSM_MSGT_DOWN_ACK, 5).
+-define(M2UA_ASPSM_MSGT_BEAT_ACK, 6).
+
+-define(M2UA_ASPTM_MSGT_ACTIVE, 1).
+-define(M2UA_ASPTM_MSGT_INACTIVE, 2).
+-define(M2UA_ASPTM_MSGT_ACTIVE_ACK, 3).
+-define(M2UA_ASPTM_MSGT_INACTIVE_ACK, 4).
+
+-define(M2UA_MGMT_MSGT_ERROR, 0).
+-define(M2UA_MGMT_MSGT_NOTIFY, 1).
+
+-define(M2UA_MGMT_IIM_REG_REQ, 1).
+-define(M2UA_MGMT_IIM_REG_RSP, 2).
+-define(M2UA_MGMT_IIM_DEREG_REQ, 3).
+-define(M2UA_MGMT_IIM_DEREG_RSP, 4).
+
+-record(m2ua_msg, {
+ msg_class,
+ msg_type,
+ parameters
+ }).
+