PYNQのUARTLITEで文字列の受信

pynqmbのuart.c/uart.hを編集してuart_readline()関数を実装する
実装は以下を参考にした:
ZYBO / Pmod / UART > PmodからUART接続してみた (UARTLITE使用)
https://qiita.com/7of9/items/d93d24766bd8ff13631a
https://github.com/shohei/PYNQ/commit/d14d5b5203b0fa252b583899943171bc8d47eb63

void uart_readline(uart dev_id, char* read_data){
    unsigned int ReceivedCount = 0;
    while (1) {
            ReceivedCount += XUartLite_Recv(&xuart[dev_id],
                           read_data + ReceivedCount,
                           1);
            if (read_data[ReceivedCount - 1] == '\n') {
                break;
            }
        }
}

テストコード
200msのDelayを入れないと、改行まで受信できないらしい(https://qiita.com/7of9/items/d93d24766bd8ff13631a

  uart uart_dev0 = uart_open(1,0);
  char *hoge = "*";
  uart_write(uart_dev0, hoge, 1);
  usleep(200000);
  char foo[] = "input something: ";
  uart_write(uart_dev0, foo, strlen(foo));
  usleep(200000);
  char moge[100];
  uart_readline(uart_dev0, moge);
  char foo1[] = "\r\nyou received: ";
  uart_write(uart_dev0, foo1, strlen(foo1));
  usleep(200000);
  uart_write(uart_dev0, moge, strlen(moge));
  usleep(200000);

実行結果
最初に0x00(ヌルターミネータ=ピリオド.)が挿入されてしまうバグあり