I'm testing a USR 5637 USB modem. According to the USR docs I can query modem support for Caller Id with AT+VCID:
Debug: modem_write
Debug: Write 10: "AT+VCID=?\r"
Debug: modem_read
Debug: Read 24: "AT+VCID=?
(0-16)
OK"
The 0-16 is unusual because the manual states the values are 0, 1, 2. I then go on to set to 1, which per the manual Enables formatted Caller ID:
Debug: modem_write
Debug: Write 10: "AT+VCID=1\r"
Debug: modem_read
Debug: Read 14: "AT+VCID=1
OK"
Later, when a call arrives, the Caller Id information is not presented by the USR modem. The Caller Id information should be presented between rings 1 and 2.
The same code works well with Conextant 93001-based modems, so I am fairly certain the code is correct. (Or mostly OK, with no obvious defect).
It looks like others have experienced similar problems (for example, Caller ID detection -> US Robotics 56K? with a different product), but I don't see a solution.
Why is the USR modem not presenting the Caller Id information?
Here is the startup sequence I am using. It seems to follow the US Robotics manual.
init:
while (ATZ != OK)
goto init
# gather modem info
ATI0
ATI1
ATI2
ATI3
ATI4
# query fax class
AT+FCLASS=?
# query compression
AT+VSM=?
# set caller id
AT+VCID=1
loop:
# process data
read_modem
...
goto loop
Here is what formatted Caller ID looks like on the Conexant modems. On the Conexant modems this appears between rings 1 and 2:
Debug: modem_read
Debug: Read 59: "DATE = 0302
TIME = 1601
NMBR = 6045551212
NAME = JOHN DOE"
Here is the initialization string Windows uses. It is taken from USR5637Voice64bit.exe driver download and the usr5637_rv.inf file:
AT
AT&F1E0Q0V1&C1&D2S0=0
When I tested it, the initialization string does not enable Caller Id, either.