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(); } } }
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 }
/// 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; }
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); } }
/* 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; } } } }