示例#1
0
文件: h4.c 项目: 01org/zephyr
static void bt_uart_isr(struct device *unused)
{
	ARG_UNUSED(unused);

	while (uart_irq_update(h4_dev) && uart_irq_is_pending(h4_dev)) {
		if (uart_irq_tx_ready(h4_dev)) {
			process_tx();
		}

		if (uart_irq_rx_ready(h4_dev)) {
			process_rx();
		}
	}
}
示例#2
0
void main() {

uns16 tick_marker = 0;
uns16 test_tick;

		
	configure_system();
	delay_ms(100);
    #ifdef USB_SERIAL_DEBUG
		serial_print_str("USB here we go...");
    #endif
    delay_ms(100);
	usb_enable_module();
	while (usb_configured == 0) {
		#ifdef USB_SERIAL_DEBUG
			serial_print_str("<wait>");
		#endif
		delay_ms(250);
		delay_ms(250);
		delay_ms(250);
		delay_ms(250);
	}
	#ifdef USB_SERIAL_DEBUG
		serial_print_str("\nGreat! Now trying to print\n");
	#endif
	usb_cdc_print_str("\n\nPIC USB Serial demo\n");
	usb_cdc_print_str( "\n<");
	usb_cdc_print_str(__TIME__);
	usb_cdc_putc(' ');
	usb_cdc_print_str(__DATE__);
	usb_cdc_print_str(">\n");

	usb_cdc_print_str("Commands: a attach to USB bus\n");
	

	while(1) {

		if (usb_cdc_rx_avail()) {
			process_rx();
		}
		handle_tasks();	
		
	}	// while (1)
	// main
}
示例#3
0
/// Example application that opens a packet socket with rx_ring
int
main(int argc, char **argv)
{
    char *ring, *pkt;
    int fd;

    fd = init_packetsock(&ring, PACKET_RX_RING);
    if (fd < 0)
        return 1;

    pkt = process_rx(fd, ring);
    process_rx_release(ring);

    if (exit_packetsock(fd, ring))
        return 1;

    printf("OK\n");
    return 0;
}
示例#4
0
文件: main.c 项目: jmesmon/avrbits
void main(void)
{
	init();
	uint16_t adc_val[ADC_CHANNEL_CT];	
	for(;;) {
		if (adc_new_data) {
			adc_new_data = false;
			adc_val_cpy(adc_val);
			for (uint8_t i = 0; i < ADC_CHANNEL_CT; i++) {			
				spi_putchar((char) (i+'0'));
				spi_putchar(':');
				spi_putchar(' ');
				spi_puth2(adc_val[i]);
				spi_putchar('\t');
			}
			spi_putchar('\n');
		}
		process_rx();		
		_delay_ms(200);
	}
}
示例#5
0
/* telnet server thread entry */
static void telnet_thread(void* parameter)
{
#define RECV_BUF_LEN 64

    struct sockaddr_in addr;
    socklen_t addr_size;
    rt_uint8_t recv_buf[RECV_BUF_LEN];
    rt_int32_t recv_len = 0;

    if ((telnet->server_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        rt_kprintf("telnet: create socket failed\n");
        return;
    }

    addr.sin_family = AF_INET;
    addr.sin_port = htons(TELNET_PORT);
    addr.sin_addr.s_addr = INADDR_ANY;
    rt_memset(&(addr.sin_zero), 0, sizeof(addr.sin_zero));
    if (bind(telnet->server_fd, (struct sockaddr *)&addr, sizeof(struct sockaddr)) == -1)
    {
        rt_kprintf("telnet: bind socket failed\n");
        return;
    }

    if (listen(telnet->server_fd, TELNET_BACKLOG) == -1)
    {
        rt_kprintf("telnet: listen socket failed\n");
        return;
    }

    /* register telnet device */
    telnet->device.type     = RT_Device_Class_Char;
    telnet->device.init     = telnet_init;
    telnet->device.open     = telnet_open;
    telnet->device.close    = telnet_close;
    telnet->device.read     = telnet_read;
    telnet->device.write    = telnet_write;
    telnet->device.control  = telnet_control;

    /* no private */
    telnet->device.user_data = RT_NULL;

    /* register telnet device */
    rt_device_register(&telnet->device, "telnet",
                       RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STREAM);

    while (1)
    {
        rt_kprintf("telnet server waiting for connection\n");

        /* grab new connection */
        if ((telnet->client_fd = accept(telnet->server_fd, (struct sockaddr * )&addr, &addr_size)) == -1)
        {
            continue;
        }

        rt_kprintf("new telnet client(%s:%d) connection, switch console to telnet...\n", inet_ntoa(addr.sin_addr), addr.sin_port);

        /* process the new connection */
        /* set console */
        rt_console_set_device("telnet");
        /* set finsh device */
        finsh_set_device("telnet");

        /* set init state */
        telnet->state = STATE_NORMAL;

        telnet->echo_mode = finsh_get_echo();
        /* disable echo mode */
        finsh_set_echo(0);

        while (1)
        {
            /* try to send all data in tx ringbuffer */
            send_to_client(telnet);

            /* do a rx procedure */
            if ((recv_len = recv(telnet->client_fd, recv_buf, RECV_BUF_LEN, 0)) > 0)
            {
                process_rx(telnet, recv_buf, recv_len);
            }
            else
            {
                /* close connection */
                client_close(telnet);
                break;
            }
        }
    }
}