споткнулся на ровном месте.
Дано:
девайс, по началу входящего звонка не поднимая трубку перещелкнуть релюшку
затык в определении когда вызвающий положил трубку.
То есть происходит так
<вызывающий звонит на устройство>
RING
+CLIP
(проходит 6 секунд)
RING
+CLIP
(проходит 6 секунд)
RING
+CLIP
(проходит 6 секунд)
<вызывающий положил трубку>
то есть нет никакого ассинхронного события по тому, как вызывающий положил трубу. Сейчас сделал тупо: по первому +CLIP выдаем в приложение событие о входящем звонке и внутреннему счетчику назначаем к примеру 10, и посекундно вычитаем до нуля. Как новый +CLIP и счетчик = 0 то это новый входящий звонок. Но бывают ситуации (к примеру по подключению по GPRS) где приложение выдает в модем команду и пока нет результата выполнения, модем не выдает в порт ассинхронные сообщения и соотвественно счетчик обнуляется и при текущем звонке ловим как бы новое событие.
Жаль что Extended Call Monitoring (AT#ECAM) тоже не видит отваливание вызвающего
Есть вариант 2:
по первому CLIP делать опрос CCLC и тут ловить. Но на кооперативной ОСьке = конечных автоматах это такой ужос городить надо
Есть еще варианты ?