SDMF supports a single data type and is used to send the phone number for number only service.
MDMF supports multiple data types and is used to send name and number information. It is structured so that new types of data can be added easily (address?, city?, state?, etc).
Both formats include a value to determine the type of data to follow (data type word), a value to indicate the length of the data (data length word), and a checksum. See below for an example of each format.
04 12 30 39 33 30 31 32 32 34 36 30 39 35 35 35 31 32 31 32 51
04 - message type word - 4 indicates SDMF 12 - 18 decimal, number of bytes in date, time and phone number 30,39 - 09, September (ASCII) 33,30 - 30, 30th day (ASCII) 31,32 - 12, 12 hour (ASCII) 32,34 - 24, 24 minutes (12:24 PM) (ASCII) 36,30,39 - 609, Area code (ASCII) 35,35,35 - 555, prefix (ASCII) 31,32,31,32 - 1212, sufix (ASCII) 51h = Checksum Word
Thus, the CID string can be summarized as follows:
If the calling party's directory number is not available to the terminating central office, the phone number field contains an ASCII 'O'. If the calling party invokes the privacy capability (blocking), the phone number field contains an ASCII 'P'.
The following SDMF string is an example of a call that was blocked. The 50 just before the checksum is the ASCII code for a 'P'.
04 09 30 39 33 30 31 32 32 34 50 12
80 20 01 08 30 33 32 34 30 39 30 32 07 08 4A 4F 48 4E 20 44 4F 45 02 0A 38 30 30 35 35 35 31 32 31 32 7D
The following is a list of possible data types:
If the calling party's directory number is not available to the terminating central office, the phone number and name fields contain an ASCII 'O'. If the calling party invokes the privacy capability (blocking), the phone number and name fields contain an ASCII 'P'.
From what I have seen, the types 4 and 8 are always followed by a length value of 1 and then either a 'P' or an 'O' to indicate unavailable or blocked, respectively.