I totally understand you emre, it’s NOT EASY to develop a patch while not able to test or reproduce the defect.
You don’t have to trust me or either putty log, you should trust the Telco STANDARDS for CALLER ID.
I rewrite below for your convenience the 2 TYPES of packed DATA available WORLDWIDE and their structure . If you implement the SMDF you CANNOT mistake, is standard
From Wikipedia
There are two types of caller ID, number only and name+number. Number-only caller ID is called Single Data Message Format (SDMF), which provides the caller’s telephone number, the date and time of the call. Name+number caller ID is called Multiple Data Message Format (MDMF), which in addition to the information provided by SDMF format, can also provide the directory listed name for the particular number. Caller ID readers which are compatible with MDMF can also read the simpler SDMF format, but an SDMF caller ID reader will not recognize an MDMF data stream, and will act as if there is no caller ID information present, e.g. as if the line is not equipped for caller ID.
STANDARDS
Multiple data message format (MDMF)
The one you Handle PERFECTLY:
the multiple data message format (MDMF), is more complex and versatile than the SDMF.
It is capable of delivering more data concerning an incoming call, such
as the name of a calling party. Although both formats share some
features in common such as the message type and the message length
parameters, the structure of the MDMF is more flexible and more readily
accommodates the development of new provider services.
As with SDMF, the message type parameter is the first byte of an MDMF
formatted packet. Since MDMF is designed to provide a wider variety of
information than SDMF, six message type values are specified for it
instead of the three defined for SDMF. The message type value
identifying a Caller ID data block is 0x80, 128 decimal. The message
length parameter, the next byte in the frame, specifies the number of
bytes that follow in the data block. It is after the message length
parameter, that the structure of an MDMF packet differs from that of a
SDMF.
At this point, the message block is broken up into smaller messages
called parameter messages. Each parameter message is composed of
a parameter type value, a parameter length value, and an accompanying
data block that contains a specific type of information, such as the
number of an incoming call. Each piece of information that is transmitted
in an MDMF formatted packet, such as the time and date, calling
number, and the calling name, is packaged within its own parameter
message. This encapsulation of data enables a service provider to
selectively add to or omit information from Caller ID transmissions.
As its name suggests, the parameter type value is used to identify the
type of data contained in a parameter message. Currently, 17 parameter
type values are defined for MDMF. The values of most interest to Caller
ID capable equipment are 0x01, 0x02, and 0x07 which identify a time
and date, number, and name parameter message respectively. This
parameter is followed by the parameter length value which contains the
remaining number of bytes in a parameter message’s data block.
Single data message format (SDMF) The one your DLL NOT HANDLE
The message assembly layer forms an SDMF formatted packet by
prepending a 2-byte header to a Caller ID data packet. The first byte of
the header is the packet’s message type parameter value. This value
alerts a Caller ID device as to the type of information that is contained in
the accompanying data block. There are currently three values defined
for the message type parameter of SDMF formatted packets. A packet
with a message type value of 0x04 contains the number of a calling
party, a value of 0x06 indicates a message waiting indicator packet, and
a value of 0x0B has been reserved for future applications. The next byte
in the header is the message length parameter. This parameter, as its
name suggests, contains the number of bytes of Caller ID data that
remain in a block.The message assembly layer also specifies the arrangement of
information within the data portion of a frame. The data portion of an
SDMF frame consists of ASCII codes arranged in three fields
representing the date, time, and number of an incoming call.
The date field which is the first piece of information in the data
block, consists of 4 bytes. The first two bytes are ASCII codes for
the digits representing the month and the other two represent the
day. Any months or days that can be represented by a single digit,
are preceded by a zero.
• The next 4 bytes are ASCII codes for digits representing the time.
The first two bytes are the ASCII codes for the digits representing
the hour and the remaining two represent the minutes. The values
in the hour field are allowed to range from 0 to 23, while the
minutes can range from 0 to 59.
• The remaining 10 ASCII codes represent the digits of the
telephone phone number of the incoming call. If the incoming call
is a local call and lacks an area code, the area code portion of the
number field is filled by default with the ASCII codes for three
zeroes.
Thanks for your time.
Regards.