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