int uart_release(void) { #ifndef __USE_UART_PORT3__ fprintf(stderr, "uart: __USE_UART_PORT3__ not defined\n"); return -1; #elif defined(__USE_UART_PORT3_FOR_DEBUG__) if(previous_uart_handler == uart_handler) uart3_set_input(NULL); else uart3_set_input(previous_uart_handler); /* If used for debug, do not turn off module */ return 0; #endif /* Disable interrupts */ IEC1CLR = _IEC1_U3EIE_MASK | _IEC2_U3TXIE_MASK | _IEC1_U3RXIE_MASK; IFS1CLR = _IFS1_U3EIF_MASK | _IFS2_U3TXIF_MASK | _IFS1_U3RXIF_MASK; /* Clear priority bits */ IPC9CLR = _IPC9_U3IP_MASK | _IPC9_U3IS_MASK; U3MODE = 0; U3STA = 0; return 0; }
/*---------------------------------------------------------------------------*/ static int init(void) { uart3_init(0); uart3_set_input(xbee_input_handler); ringbuf_init(&rxbuf, rxbuf_data, sizeof(rxbuf_data)); process_start(&xbee_process, NULL); return 0; }
int uart_init(void) { #ifndef __USE_UART_PORT3__ fprintf(stderr, "uart: __USE_UART_PORT3__ not defined\n"); return -1; #else if(pic32_uart3_init(DEFAULT_BAUDRATE, 0)) { fprintf(stderr, "uart: Init failed\n"); return -1; } current_baud_rate = DEFAULT_BAUDRATE; ringbuf_init(&uart_ring_buffer, uart_buffer, UART_BUFFER_SIZE); previous_uart_handler = uart3_input_handler; uart3_set_input(uart_handler); return 0; #endif }