Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void uartSetup(void)
- {
- /* Configure parameters of an UART driver,
- * communication pins and install the driver */
- uart_config_t uart_config = {
- .baud_rate = 19200,
- .data_bits = UART_DATA_8_BITS,
- .parity = UART_PARITY_DISABLE,
- .stop_bits = UART_STOP_BITS_1,
- .flow_ctrl = UART_HW_FLOWCTRL_DISABLE
- };
- ESP_ERROR_CHECK(uart_param_config(EX_UART_NUM, &uart_config));
- //Set UART pins
- ESP_ERROR_CHECK(uart_set_pin(EX_UART_NUM, GPIO_NUM_5, GPIO_NUM_17, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));
- //Install UART driver, and get the queue.
- ESP_ERROR_CHECK(uart_driver_install(EX_UART_NUM, BUF_SIZE * 2, 0, 0, NULL, 0));
- // release the pre registered UART handler/subroutine
- ESP_ERROR_CHECK(uart_isr_free(EX_UART_NUM));
- // register new UART subroutine
- ESP_ERROR_CHECK(uart_isr_register(EX_UART_NUM,uart_intr_handle, NULL, ESP_INTR_FLAG_IRAM, &handle_console));
- // enable RX interrupt
- ESP_ERROR_CHECK(uart_enable_rx_intr(EX_UART_NUM));
- log_d("interrupt enabled");
- }
- /*
- * Define UART interrupt subroutine to ackowledge interrupt
- */
- static void IRAM_ATTR uart_intr_handle(void *arg)
- {
- uint16_t rx_fifo_len, status;
- uint8_t i=0;
- status = UART2.int_st.val; // read UART interrupt Status
- rx_fifo_len = UART2.status.rxfifo_cnt; // read number of bytes in UART buffer
- while(rx_fifo_len){
- rxbuf[i] = UART2.fifo.rw_byte; // read all bytes
- rx_fifo_len--;
- ESP_ERROR_CHECK(uart_disable_rx_intr(EX_UART_NUM));
- Serial.print(rxbuf[i++]);
- }
- // after reading bytes from buffer clear UART interrupt status
- uart_clear_intr_status(EX_UART_NUM, UART_RXFIFO_FULL_INT_CLR|UART_RXFIFO_TOUT_INT_CLR);
- //Serial.write(rxbuf,77);
- for (int i = 33; i <= 48; i++)
- {
- pacemakerID[i-33] = rxbuf[i];
- }
- byte byteID[7] ={pacemakerID[2],pacemakerID[3],pacemakerID[6],pacemakerID[7],pacemakerID[13],pacemakerID[14],pacemakerID[15]};
- String tmpPacemakerID = String((char*)byteID);
- uint32_t deviceID = tmpPacemakerID.toInt();
- DeviceInfo = true;
- //Serial.write(pacemakerID,16);
- //Serial.println("");
- //Serial.write(devID,4);
- devID[3] = (deviceID >> 24) & 0xFF;
- devID[2] = (deviceID >> 16) & 0xFF;
- devID[1] = (deviceID >> 8) & 0xFF;
- devID[0] = deviceID & 0xFF;
- //Serial.write(devID,4);
- //Serial.println(base64::encode(&pacemakerID[0],16));
- // a test code or debug code to indicate UART receives successfully,
- log_d("rx done!");
- Serial.write(rxbuf,rx_fifo_len);
- ESP_ERROR_CHECK(uart_disable_rx_intr(EX_UART_NUM));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement