Exemple #1
0
static int network_initialization(void)
{
	/* Initialize and start Contiki uIP stack */
	clock_init();

	rtimer_init();
	ctimer_init();

	process_init();
	tcpip_set_outputfunc(net_tcpip_output);

	process_start(&tcpip_process, NULL);
	process_start(&simple_udp_process, NULL);
	process_start(&etimer_process, NULL);

	slip_start();

	return 0;
}
Exemple #2
0
int main()
{
	fd_set rfds, wfds, readfds, writefds;
	int n;
	struct buf stdinbuf, stdoutbuf;
	slipconn sc;

	sig_setup();
	login(&sc);
	setuid(0);	/* set real uid to 0 for some ifconfig's */
	slip_start(&sc);

	FD_ZERO(&rfds);
	FD_SET(sc.masterfd, &rfds);
	FD_SET(0, &rfds);
	FD_ZERO(&wfds);

	while (go) {
		readfds = rfds;
		writefds = wfds;

		n = select(sc.masterfd+1, &readfds, &writefds, 0, 0);

		if (n > 0) {
			if (FD_ISSET(0, &readfds)) {
				bufread(&sc, 0, &stdinbuf);
				if (stdinbuf.len == 0) {
					/* eof on stdin */
					slip_stop(&sc);
					exit(0);
				}
				if (stdinbuf.len) {
					FD_SET(sc.masterfd, &wfds);
					FD_CLR(0, &rfds);
				}
			}
			if (FD_ISSET(sc.masterfd, &readfds)) {
				bufread(&sc, sc.masterfd, &stdoutbuf);
				if (stdoutbuf.len) {
					FD_SET(1, &wfds);
					FD_CLR(sc.masterfd, &rfds);
				}
			}
			if (FD_ISSET(sc.masterfd, &writefds)) {
				bufwrite(&sc, sc.masterfd, &stdinbuf);
				if (stdinbuf.len == 0) {
					FD_SET(0, &rfds);
					FD_CLR(sc.masterfd, &wfds);
				}
			}
			if (FD_ISSET(1, &writefds)) {
				bufwrite(&sc, 1, &stdoutbuf);
				if (stdoutbuf.len == 0) {
					FD_SET(sc.masterfd, &rfds);
					FD_CLR(1, &wfds);
				}
			}
		}
	}
	slip_stop(&sc);
	return 0;
}