i doubt these comments will fix your problem, but the code has some unnecessary code
in RX
- there's no need for "newData" since
showNewData()is only called when a message is received - receivedChars is unused
- does radio.read() return the # of bytes received and does a NULL need to be appended to
message[]before being printed? - should showData() do println() instead of write()?
in TX
- would readBytesUntil() replace recvWithEndMarker(), eliminating any possible bugs in that code?
- again, is there a need for "newData"?
- should radio.write() be given the length of the string in received chars, not the length of the buffer?