add erlang MAP code (from OTP)
diff --git a/asn1/TCAPMessages.asn b/asn1/TCAPMessages.asn
new file mode 100644
index 0000000..0de9ac2
--- /dev/null
+++ b/asn1/TCAPMessages.asn
@@ -0,0 +1,149 @@
+-- Generated by Asnp, the pretty-printer of France Telecom R&D (http://asn1.elibel.tm.fr/asnp/)
+-- Module TCAPMessages (Q.773:06/1997)
+-- asn1ct:compile("TCAPMessages",[ber_bin]).
+TCAPMessages {itu-t recommendation q 773 modules(2) messages(1) version3(3)}
+
+DEFINITIONS IMPLICIT TAGS
+
+::=
+
+BEGIN
+
+-- EXPORTS everything
+-- Transaction Portion fields.
+IMPORTS
+  ROS{}, InvokeId
+    FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+      remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+  OPERATION
+    FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+      remote-operations(4) informationObjects(5) version1(0)}
+  Supported-MAP-Operations
+    FROM MAP-Protocol {itu-t identified-organization (4) etsi (0) mobileDomain (0)
+   	 gsm-Network (1) modules (3) map-Protocol (4) version9 (9)}
+-- Start - Added by Eranga
+  dialogue-as-id
+    FROM DialoguePDUs {itu-t recommendation q 773 modules(2) dialoguePDUs(2)
+      version1(1)}
+  sendRoutingInfoForSM,
+  mo-ForwardSM,
+  mt-ForwardSM,
+  reportSM-DeliveryStatus,
+  alertServiceCentre,
+  informServiceCentre,
+  readyForSM
+	FROM MAP-ShortMessageServiceOperations {
+	   itu-t identified-organization (4) etsi (0) mobileDomain (0)
+	   gsm-Network (1) modules (3) map-ShortMessageServiceOperations (9)
+	   version9 (9)}
+  gsm-MessagingId
+  	FROM MobileDomainDefinitions {
+	   itu-t identified-organization (4) etsi (0) mobileDomain (0)
+	   mobileDomainDefinitions (0) version1 (1)}
+  Supported-MAP-Operations
+  	FROM MAP-Protocol {
+	   itu-t identified-organization (4) etsi (0) mobileDomain (0)
+	   gsm-Network (1) modules (3) map-Protocol (4) version9 (9)}
+-- End - Added by Eranga
+;
+
+-- Start - Added by Eranga
+
+mapSpecificAS ABSTRACT-SYNTAX ::= {
+  MapSpecificPDUs
+  IDENTIFIED BY  gsm-MessagingId
+}
+
+MapSpecificPDUs ::=
+  TCMessage{{Supported-MAP-Operations}, {Supported-MAP-Operations}}
+
+
+MAPOperations-Invokable OPERATION ::= 
+	{sendRoutingInfoForSM | mo-ForwardSM | mt-ForwardSM} 
+MAPOperations-Returnable OPERATION ::= 
+	{reportSM-DeliveryStatus | alertServiceCentre | informServiceCentre | readyForSM} 
+
+-- End - Added by Eranga
+
+
+TCMessage{OPERATION:Invokable, OPERATION:Returnable} ::= CHOICE {
+  unidirectional  [APPLICATION 1]  Unidirectional{{Invokable}, {Returnable}},
+  begin           [APPLICATION 2]  Begin{{Invokable}, {Returnable}},
+  end             [APPLICATION 4]  End{{Invokable}, {Returnable}},
+  continue        [APPLICATION 5]  Continue{{Invokable}, {Returnable}},
+  abort           [APPLICATION 7]  Abort
+}
+
+Unidirectional{OPERATION:Invokable, OPERATION:Returnable} ::= SEQUENCE {
+  dialoguePortion  DialoguePortion OPTIONAL,
+  components       ComponentPortion{{Invokable}, {Returnable}}
+}
+
+Begin{OPERATION:Invokable, OPERATION:Returnable} ::= SEQUENCE {
+  otid             OrigTransactionID,
+  dialoguePortion  DialoguePortion OPTIONAL,
+  components       ComponentPortion{{Invokable}, {Returnable}} OPTIONAL
+}
+
+End{OPERATION:Invokable, OPERATION:Returnable} ::= SEQUENCE {
+  dtid             DestTransactionID,
+  dialoguePortion  DialoguePortion OPTIONAL,
+  components       ComponentPortion{{Invokable}, {Returnable}} OPTIONAL
+}
+
+Continue{OPERATION:Invokable, OPERATION:Returnable} ::= SEQUENCE {
+  otid             OrigTransactionID,
+  dtid             DestTransactionID,
+  dialoguePortion  DialoguePortion OPTIONAL,
+  components       ComponentPortion{{Invokable}, {Returnable}} OPTIONAL
+}
+
+Abort ::= SEQUENCE {
+  dtid    DestTransactionID,
+  reason  CHOICE {p-abortCause  P-AbortCause,
+                  u-abortCause  DialoguePortion} OPTIONAL
+}
+
+-- NOTE - When the Abort Message is generated by the Transaction sublayer, a p-Abort Cause may be 
+-- present. The u-abortCause may be generated by the component sublayer in which case it is an ABRT 
+-- APDU, or by the TC-User in which case it could be either an ABRT APDU or data in some user-defined
+-- abstract syntax.
+DialoguePortion ::= [APPLICATION 11] EXPLICIT EXTERNAL
+
+-- The dialogue portion carries the dialogue control PDUs as value of the external data type. The direct 
+-- reference should be set to {itu-t recommendation q 773 as(1) dialogue-as(1) version1(1)} if structured 
+-- dialogue is used and to {itu-t recommendation q 773 as(1) unidialogue-as(2) version1(1)} if unstructured 
+-- dialogue is used.
+OrigTransactionID ::= [APPLICATION 8]  OCTET STRING(SIZE (1..4))
+
+DestTransactionID ::= [APPLICATION 9]  OCTET STRING(SIZE (1..4))
+
+P-AbortCause ::= [APPLICATION 10]  INTEGER {
+  unrecognizedMessageType(0), unrecognizedTransactionID(1),
+  badlyFormattedTransactionPortion(2), incorrectTransactionPortion(3),
+  resourceLimitation(4)}(0..127)
+
+-- COMPONENT PORTION. The last field in the transaction portion of the TCAP message is the 
+-- component portion. The component portion may be absent.
+ComponentPortion{OPERATION:Invokable, OPERATION:Returnable} ::=
+  [APPLICATION 12] 
+    SEQUENCE SIZE (1..MAX) OF Component{{Invokable}, {Returnable}}
+
+-- Component Portion fields
+-- Recommendation X.880 defines four Application Protocol Data Units (APDUs) for invoking
+-- operations, returning results or error, and for the rejection of invalid PDUs.
+-- TCAP adds returnResultNotLast to allow for the segmentation of a result.
+Component{OPERATION:Invokable, OPERATION:Returnable} ::= CHOICE {
+  basicROS             ROS{{TCInvokeIdSet}, {Invokable}, {Returnable}},
+  returnResultNotLast
+    [7]  returnResult < ROS{{TCInvokeIdSet}, {Invokable}, {Returnable}}
+}
+
+TCInvokeIdSet ::= InvokeId(WITH COMPONENTS {
+                             present  (-128..127)
+                           })
+
+END -- TCAPMessages
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+