В общем случае это правильно, но у меня частный случай.
Мои устройства ждут несколько секунд, пока не зарегистрируются в сети (находятся в местах гарантированного приёма сигнала). Затем поднимают GPRS сессию, получают реальные IP адреса и настраивают себя как сервер (TCP/IP стек).
Далее на них возлагается всего две функции:
1) сначала передать опрашиваюшему блоку свой IP через CSD;
2) при поступлении запроса от опрашивающего блока настроится на прозрачный режим передачи данных и обменятся информацией.
Т.е. как вы видите, на блоки практически никто не будет звонить (кроме опращивающего блока). SMS мне не нужны - могу их игнорировать. Зачем тогда программу перегружать обработчиками сообщений RING, пришло SMS и т.д.:?
Я тут думал, можно и на все возможные сообщения сделать обработку, но вот загвоздка остаётся при неконтроллируемом получении команды RING. @ARk писал, что он может влазить даже внутри эха.
Получается, что при его влазиния могут быть такие последовательности:
Для эха:
<Начало эха> CRLF RING CRLF
<конец эха> CRДля ответа:
CRLF<Начало ответа> CRLF RING CRLF
<конец ответа> CRLFЯ обрабатывают эхо и ответы по счётчику символов CR и LF. А при таком поведении RING-a эта схема не подходит. Приходится делать какой-то сверх умный буфер, который бы мог долго накапливать даные, потом их сканировать на наличие "наглых вставок", потом вынимать их из буфера, затем только обрабатывать содержание. Это явно снизит быстродействие из-за дополнительных ожиданий "А может дальше прийдёт что-то, что потом ошибочные данные дополнит и сделает их правильными".
Мне кажется для контроллера это будет передоз!