static int waitforsilence_exec(struct ast_channel *chan, void *data) { int res = 1; struct localuser *u; int maxsilence = 1000; int iterations = 1, i; LOCAL_USER_ADD(u); res = ast_answer(chan); /* Answer the channel */ if (!data || ((sscanf(data, "%d|%d", &maxsilence, &iterations) != 2) && (sscanf(data, "%d", &maxsilence) != 1))) { ast_log(LOG_WARNING, "Using default value of 1000ms, 1 iteration\n"); } if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Waiting %d time(s) for %d ms silence\n", iterations, maxsilence); res = 1; for (i=0; (i<iterations) && (res == 1); i++) { res = do_waiting(chan, maxsilence); } LOCAL_USER_REMOVE(u); if (res > 0) res = 0; return res; }
static int waitforsilence_exec(struct ast_channel *chan, void *data) { int res = 1; int silencereqd = 1000; int timeout = 0; int iterations = 1, i; time_t waitstart; res = ast_answer(chan); /* Answer the channel */ if (!data || ( (sscanf(data, "%d|%d|%d", &silencereqd, &iterations, &timeout) != 3) && (sscanf(data, "%d|%d", &silencereqd, &iterations) != 2) && (sscanf(data, "%d", &silencereqd) != 1) ) ) { ast_log(LOG_WARNING, "Using default value of 1000ms, 1 iteration, no timeout\n"); } if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Waiting %d time(s) for %d ms silence with %d timeout\n", iterations, silencereqd, timeout); time(&waitstart); res = 1; for (i=0; (i<iterations) && (res == 1); i++) { res = do_waiting(chan, silencereqd, waitstart, timeout); } if (res > 0) res = 0; return res; }
static int waitfor_exec(struct ast_channel *chan, const char *data, int wait_for_silence) { int res = 1; int timereqd = 1000; int timeout = 0; int iterations = 1, i; time_t waitstart; struct ast_silence_generator *silgen = NULL; if (chan->_state != AST_STATE_UP) { res = ast_answer(chan); /* Answer the channel */ } if (!data || ( (sscanf(data, "%30d,%30d,%30d", &timereqd, &iterations, &timeout) != 3) && (sscanf(data, "%30d,%30d", &timereqd, &iterations) != 2) && (sscanf(data, "%30d", &timereqd) != 1) ) ) { ast_log(LOG_WARNING, "Using default value of 1000ms, 1 iteration, no timeout\n"); } ast_verb(3, "Waiting %d time(s) for %d ms silence with %d timeout\n", iterations, timereqd, timeout); if (ast_opt_transmit_silence) { silgen = ast_channel_start_silence_generator(chan); } time(&waitstart); res = 1; for (i=0; (i<iterations) && (res == 1); i++) { res = do_waiting(chan, timereqd, waitstart, timeout, wait_for_silence); } if (silgen) { ast_channel_stop_silence_generator(chan, silgen); } if (res > 0) res = 0; return res; }