Martian, я бы предпочёл ростовой памятник в бронзе. И табличку: "AAX vs долб*бизм. 0:1"
А как определить что модуль в IDLE?
У Вас должна быть реализована машина состояний, и должен быть способ получить текущее состояние. Соответственно, если модуль не занят выполнением Ваших команд, нет активной сессии голосовой или передачи данных - это состояние простоя, IDLE.
ickatel писал(а):И так по AAX вход и выход в режим сна выглядит так;
нет, не придумывайте.
Я бы описал процесс примерно так:
1. Подаём на DTR высокий уровень.
2. Проверяем, что модуль ничем не занят. Если мы в своём уме, и идём спать, а модуль занят - это какая-то активность со стороны сети. Входящий звонок, или СМС. Нужно дождаться окончания этой активности. Сбросить звонок. Прочитать СМС, если это важно
Для этого опускаем DTR в низкий уровень, и возвращаемся без сна.
3. Если модуль в IDLE, отправляем AT+CSCLK=1
4. Если вернулось OK - делаем своё ничего. Выключаем остальную периферию, усыпляем мк и т.д по потребностям.
Пока мы держим DTR высоким, модуль спит.
Если от модуля нужна только неторопливая передача - СМС, данных, исходящие звонки - можно в начале процедуры засыпания скомандовать AT+CFUN=0, это выключит радио-часть, и позволит сэкономить батарейку.
Чтобы проснуться, делаем следующее:
1. Опускаем DTR в низкий уровень
2. Не допуская пауз длиннее 50-ти мс отправляем нужные AT-команды
3. Когда вся нужная работа проделана, поднимаем DTR снова.
Чтобы проснуться основательно, например для какой-то двусторонней коммуникации, когда нужно что-то передать, и понятно, что должен прийти ответ, подаём на DTR низкий уровень, и не позже, чем через 50 мс передаём AT+CSCLK=0. После "OK" пофиг, что будет на DTR, режим сна модуля отключён.
Если отключали коммуникации по AT+CFUN=0, не забываем поднять радио-часть при помощи AT+CFUN=1. Тут нужно включать ещё и голову, т.к. поиск сетей и регистрация достаточно энергоёмкий процесс. И если Вам нужно часто засыпать/просыпаться, отключением функциональности радио Вы только высадите батарею сильнее. А цена вопроса около 1 мА потребления
Но если у Вас модуль раз в сутки выходит на связь - это позволит сэкономить 24 мА/ч батарейки. Ну, и нужно помнить, что поиск сетей и регистрация - процесс не мгновенный, по этому если Вам нужно ASAP передавать что-то - лучше радио не выключать.
Судя по тому, что Вы пишете, Вам подойдёт режим сна AT+CSCLK=2, он чисто программный, DTR не задействуется.
ickatel писал(а):Я бы с удовольствием назвал эту процедуру ,процедурой AAX.
Обычная история: сеешь разумное, доброе, вечное. Потом смотришь, что за концепции тебе приписывают - и охреневаешь