Change line 113 of app_UART.c to uartTxDataWriteCmd.value.len = 20;
The unit32 cast is unecessary and incorrect, as the uartTxDataWriteCmd.value.len variable is only a single uint16 size.
Edit: You don't have any control code to keep track of if you have already sent the UART data over BLE and whether you have new UART data to send/receive.
You are running:
else if(CyBle_GattGetBusStatus() != CYBLE_STACK_STATE_BUSY)
Which means that if the previous case statement about notifications being enabled is true, then you will send the UART data every single time the main code loops.
You should use a flag to indicate if there is new UART data, and to only send if the flag has been set (with BLE RX new data), and clear it after sending the UART data.