ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
204951 Топик полностью
megajohn (05.08.2010 12:06, просмотров: 192) ответил megajohn на есть мой говнокод, который "принуждает" сим300 к конфигурированию. (типо последовательность команд, если не прокатила текущая за N раз, то на шаг назад, иначе вперед ). Нада ?!
типо так[+]  typedef struct { Einit_state curr_state; u8 delay; u8 retries; func_ptr exec_func_ptr; E_retval_from_modem flags; Einit_state state_if_true; Einit_state state_if_false; }s_sim300_init; //////////////////////////////////////////////////////////////////////////////// PGM s_sim300_init sim300_init_arr[] = { // ID состояния должен идти в том порядке что и в Einit_state // // +---------- таймаут проверки, *100мс +--- какие флаги смотреть // | +------ количество повторов | +--- если за указанное количество повторов и таймаутов так и не был // ID состояния | | +- фунция для выполнения команды | | +-- выставлен требуемый флаг то перейти... // | | | | | | | // // эта ветка по первому включению МК { init_set_bdr_boot, 5, 3, set_fixed_local_rate_sms, mdm_tx_ok, init_echo_off, init_turn_on_syg_rising, }, { init_turn_off, 100, 0, cmd_power_off, mdm_tx_ok, init_next_cmd, init_turn_on_syg_rising, }, // 9 сек надо для дисконнекта от GSM-сети { init_turn_on_syg_rising, 25, 0, pwr_on, mdm_tx_ok, init_next_cmd, init_turn_on_syg_falling, }, // 3 сек нужно для сигнала включения { init_turn_on_syg_falling, 50, 0, pwr_off, mdm_tx_ok, init_next_cmd, init_set_bdr, }, { init_set_bdr, 5,10, set_fixed_local_rate_sms, mdm_tx_ok, init_next_cmd, init_turn_off, }, // если МК только включится, а GSM уже был включен ( к примеру при отладке на столе ) то попадаем в эту ветку { init_echo_off, 3, 3, set_cmd_echo_mode_exec_off, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_sms_format, 3, 3, select_sms_format_write_text, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_charset, 3, 3, select_charset_write_ucs2, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_text_mode, 3, 3, set_text_mode_params_write_ucs2, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_connect_presentation, 3, 3, connected_line_id_presentation_write_on, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_dtmf_duration, 3, 3, tone_duration_write_0dot5sec, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_calling_presentation, 3, 3, calling_line_id_presentation_write_on, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_del_sms1, 3, 3, delete_sms1_str, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_del_sms2, 3, 3, delete_sms2_str, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_del_sms3, 3, 3, delete_sms3_str, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_del_sms4, 3, 3, delete_sms4_str, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_del_sms5, 3, 3, delete_sms5_str, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, { init_finish, 3, 3, init_finish_f, mdm_tx_ok, init_next_cmd, init_prev_cmd, }, }; #define INIT_ARR_PARS (sizeof(sim300_init_arr) / sizeof(s_sim300_init)) s_sim300_init PGM *curr_init_p = &sim300_init_arr[ init_set_bdr_boot ];