view mtctest/main.c @ 24:52e801b5ebb1

themwi-mncc intsw: set cause when rejecting DTMF start
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 28 Jun 2022 18:36:47 -0800
parents cc0e1c6e33c3
children e8e82a4bf12b
line wrap: on
line source

/*
 * Main module for ThemWi test MT call generator.
 */

#include <sys/types.h>
#include <sys/errno.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <syslog.h>
#include <unistd.h>

extern int mtc_socket;
extern int disconnect_mode;

main(argc, argv)
	char **argv;
{
	extern int optind;
	extern char *optarg;
	char *from;
	fd_set fds;
	int c;

	from = 0;
	while ((c = getopt(argc, argv, "f:")) != EOF) {
		switch (c) {
		case 'f':
			from = optarg;
			continue;
		default:
		usage:
			fprintf(stderr,
				"usage: %s [-f from-number] to-number\n",
				argv[0]);
			exit(1);
		}
	}
	if (argc != optind + 1)
		goto usage;
	openlog("themwi-test-mtc", 0, LOG_LOCAL5);
	init_setup_msg(from, argv[optind]);
	connect_mtc_socket();
	send_setup_msg();
	/* main select loop */
	for (;;) {
		FD_ZERO(&fds);
		FD_SET(mtc_socket, &fds);
		if (!disconnect_mode)
			FD_SET(0, &fds);
		c = select(mtc_socket+1, &fds, 0, 0, 0);
		if (c < 0) {
			if (errno == EINTR)
				continue;
			perror("select");
			exit(1);
		}
		if (FD_ISSET(mtc_socket, &fds))
			mtc_socket_select();
		if (!disconnect_mode && FD_ISSET(0, &fds))
			send_disconnect_req();
	}
}