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: | < < |