"", // 7
"\"Voice\"", // SERVICE_VOICE
};
-const char* ClassModem::ATresponses[13] = {
+const char* ClassModem::ATresponses[14] = {
"Nothing", // AT_NOTHING
"OK", // AT_OK
"Connection established", // AT_CONNECT
"Command error", // AT_ERROR
"<Empty line>", // AT_EMPTYLINE
"<Timeout>", // AT_TIMEOUT
+ "<xonxoff>", // AT_XONXOFF
"<Unknown response>" // AT_OTHER
};
const char* ClassModem::callTypes[5] = {
if (streq(buf, "RING")) // NB: avoid match of RINGING
lastResponse = AT_RING;
break;
+ case '\020':
+ if (streq(buf, "\020\003")) // DC1/DC3 (XON/XOFF)
+ lastResponse = AT_XONXOFF;
+ break;
}
}
return lastResponse;
AT_ERROR = 9, // "ERROR" response
AT_EMPTYLINE = 10, // empty line (0 characters received)
AT_TIMEOUT = 11, // timeout waiting for response
- AT_OTHER = 12 // unknown response (not one of above)
+ AT_XONXOFF = 12, // xon/xoff characters
+ AT_OTHER = 13 // unknown response (not one of above)
};
private:
ModemServer& server; // server for getting to device
static const char* serviceNames[9]; // class 2 services
static const char* callStatus[10]; // printable call status
- static const char* ATresponses[13];
+ static const char* ATresponses[14];
ClassModem(ModemServer&, const ModemConfig&);