Responses

Tells Unimodem what responses it can expect from the modem.

Use a single entry containing exact response, and a binary data structure containing information about response. For example,

HKR, Responses, "CONNECT", 1, 02, 00, 00,00,00,00, 00,00,00,00   
 
HKR, Responses, "CONNECT 300", 1, 02, 00, 2C,01,00,00, 00,00,00,00
 

The binary data structure corresponds to the following C structure:

typedef struct MSS {
BYTE  bResponseState;
BYTE  bNegotiatedOptions;
DWORD dwNegotiatedDCERate;
DWORD dwNegotiatedDTERate; 
} MSS;
 

The bResponseState member has the following values:

Data/Fax modem responses

0x00 OK The modem accepted the previous command
0x01 Negotiation Progress Status info about a new connection is being reported
0x02 Connect A call is connected, the modem is data mode
0x03 Error The modem rejected the previous command
0x04 No Carrier The call was disconnected
0x05 No Dialtone No dialtone is present
0x06 Busy The dialed modem is busy
0x07 No Answer The dialed modem did not answer
0x08 Ring There is an incoming call

Additional VoiceView responses

0x09 SSV
0x0A SMD
0x0B SFA
0x0C SRA
0x0D SRQ
0x0E SRC
0x0F STO
0x10 SVM

Additional Voice responses

0x10000011 Ring duration Distinctive Ring - length of ring - variable length response
0x10000012 Ring break Distinctive Ring - length of time between rings - variable length response
0x10000013 Date Date reported by Caller ID - variable length response
0x10000014 Time Time reported by Caller ID - variable length response
0x10000015 Number Number reported by Caller ID - variable length response
0x10000016 Name Name reported by Caller ID - variable length response
0x10000017 Message Message reported by Caller ID - variable length response
0x00000018 Single Ring Single ring distinctive ring
0x00000019 Double Ring Double ring distinctive ring
0x0000001A Triple Ring Triple ring distinctive ring

The VCON modem response should be entered as an OK response from the modem.

The bNegotiatedOptions member specifies information about a connection being made. It is used only for response codes of type Negotiation Progress or Connect. Unimodem recognizes the following values (which may be combined in a single response):

Compression negotiated 0x00000001
Error control negotiated 0x00000002
Cellular protocol negotiated 0x00000008

The only valid values for this member are "0x01, 0x02, 0x03, 0x0a, 0x0b", since you won't see compression unless there is error correction.

The dwNegotiatedDCERate member specifies the modem-to-modem line speed negotiated.

The dwNegotiatedDTERate member is specified only to cause Unimodem to change its DTE port speed. Usually, this is not needed, since modems will make "normal" connections with automatic speed buffering, and the port speed will remain locked. However, for modems that support only direct modes, it is possible to cause Unimodem to lower its DTE speed by specifying a value for NegotiatedDTE.

The Responses keys contain all of the modem's response codes. Unimodem matches against these entries and uses the binary state structure to determine the meaning of the response.

Verbose or numeric response strings can be used. It is important that the verbosity is set in the Init string and that the Responses keys match. In addition, it is usually necessary to include subkeys for the following two response strings, no matter what level of verbosity is used:

OK
ERROR
 

The modem may return these strings after Unimodem's first few initialization commands, which are sent before Unimodem configures the modem to use numeric response strings. That's pretty good actually. Numeric responses 0-8 may also need to be listed in case Unimodem gets the modem in a numeric response state.

The response strings can contain the following macros:

Carriage Return: or
Line Feed: or
Binary: <hxx> or <Hxx> where xx are two hex digits. Example: <h41> = 'A'.
Less-Than escape: < <