Ситуация:
В модеме на базе GSM вы начинаете голосовой вызов с ATDxxxxxxxxx;
Некоторые модемы выдают сообщение «CONNECT», когда удаленная сторона ответила, или другой модем возвращает «^ CONN: 1, 0» на диагностическом порте.
Однако, если удаленная сторона отклоняет вызов, эта обратная связь по соединению все равно отправляется.
AT + CPAS возвращает 4 (вызов выполняется).
AT + CIND (если поддерживается) возвращает, что вызов выполняется, и вызов не звонит.
У некоторых модемов данные не отправляются через порт данных, но у других есть (обычно отправляется тишина или тональный сигнал).
Через долгое время сеть отключает вызов, и модем, наконец, выдает «^ CEND» на диагностическом порте или «HANGUP: 1» на порте приложения.
Я хотел бы как можно скорее определить, когда удаленная сторона отклонила вызов, а не после тайм-аута сети. Как мне это сделать ?
РЕДАКТИРОВАТЬ: Кстати, я не говорю об «автоматическом» автоответчике, а об явном отклонении вызова (чтобы он не перенаправлялся на автоответчик).
Кроме того, я хотел бы избежать «обнаружения мелодии звонка на порте данных», как в решениях, которые могут оказаться сложными и требующими больших затрат ресурсов ЦП.