hangCall()
Описание
Разрывает установленное соединение или прерывает входящий вызов. В зависимости от режима работы модема (синхронного или асинхронного), метод возвращает разные значения. Более подробная информация приведена ниже.
Синтаксис
voice.hangCall()
Параметры
нет
Возвращаемые значения
int
В асинхронном режиме метод hangCall() может возвращать следующие значения:
- 0 - если последняя вызванная команда еще выполняется,
- 1 - если последняя команда успешно выполнена
- >1 - в случае ошибки.
В синхронном режиме функция возвращает 1 - если соединение разорвано, 0 - в случае ошибки.
Пример
// библиотеки #include <GSM.h> // PIN-код #define PINNUMBER "" // объявляем экземпляр класса GSM gsmAccess; // для включения режима отладки добавьте параметр 'true' GSMVoiceCall vcs; char numtel[20]; // буфер для хранения входящего номера телефона void setup() { // инициализируем последовательный интерфейс передачи данных Serial.begin(9600); Serial.println("Receive Voice Call"); // состояние соединения boolean notConnected = true; // запускаем GSM-плату расширения // если на вашей SIM-карте установлен PIN-код - укажите его в качестве параметра функции begin() while(notConnected) { if(gsmAccess.begin(PINNUMBER)==GSM_READY) notConnected = false; else { Serial.println("Not connected"); delay(1000); } } vcs.hangCall(); // позволяет гарантировать правильную обработку модемом входящих событий Serial.println("Waiting Call"); } void loop() { // проверяем статус голосового вызова switch (vcs.getvoiceCallStatus()) { case IDLE_CALL: // если ничего не произошло break; case CALLING: // этот участок будет пропущен, поскольку мы не совершаем звонков Serial.println("CALLING"); break; case RECEIVINGCALL: // Да! Кто-то звонит нам Serial.println("RECEIVING CALL"); // извлекаем номер звонящего абонента vcs.retrieveCallingNumber(numtel, 20); // выводим входящий номер Serial.print("Number:"); Serial.println(numtel); // отвечаем на звонок, принимая вызов vcs.answerCall(); break; case TALKING: // в случае ответа на вызов Serial.println("TALKING. Enter line to interrupt."); while(Serial.read()!='\n') delay(100); vcs.hangCall(); Serial.println("HANG. Waiting Call."); break; } delay(1000); }