Can I check if a message has been sent successfully using Radiohead_ASK? I'm new to Arduino programming and I'm trying to get a simple 433 MHz transmitter and receiver module working on an Arduino Uno board. Unsurprisingly, it's not working as expected and I'm trying to debug the problem.
I'm using RadioHead and read in the documentation that the send() and waitPacketSent() methods return a boolean to indicate success. However, I disconnected the data wire and the send() method still returns true. As the module is no longer connected to the arduino I would have expected it to return false.
I understand that the messages are sent as unreliable datagrams, but I'm just trying to work out whether the transmitter has actually sent something. Is there some way I can do this?
The code I'm using is relatively short, so I've included it in full below, for what it's worth
#include &lt;RH_ASK.h&gt;
#include &lt;RadioHead.h&gt;

#ifdef RH_HAVE_HARDWARE_SPI
#include &lt;SPI.h&gt; // Not actually used but needed to compile
#endif

RH_ASK driver;

bool sent;

void setup()
{
#ifdef RH_HAVE_SERIAL
    Serial.begin(9600);    // Debugging only
#endif
    if (!driver.init())
#ifdef RH_HAVE_SERIAL
      Serial.println(&quot;init failed&quot;);
#else
  ;
#endif
  sent = false;
}

void loop()
{
    uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
    uint8_t buflen = sizeof(buf);

    const char *msg = &quot;hello&quot;;
    bool sendSuccess;
    bool waitSuccess;
    
    if (!sent) {
      Serial.println(&quot;sending&quot;);
      sendSuccess = driver.send((uint8_t *)msg, strlen(msg));
      if (sendSuccess) {
        Serial.println(&quot;Send completed successfully&quot;);
      } else {
        Serial.println(&quot;Send Error&quot;);
      }
      Serial.println(&quot;Waiting&quot;);
      
      waitSuccess = driver.waitPacketSent();
      if (waitSuccess) {
        Serial.println(&quot;Wait Sent Success&quot;);
      } else {
        Serial.println(&quot;Wait Sent Error&quot;);
      }
      Serial.println(&quot;Done Sending&quot;);
      sent = true;
      delay(1000);
    }
    
    if (driver.recv(buf, &amp;buflen)) // Non-blocking
    {
      Serial.println(&quot;driver.recv&quot;);

      // Message with a good checksum received, dump it.
      driver.printBuffer(&quot;Got:&quot;, buf, buflen);
    }
}

The output on the serial monitor is as follows

22:22:30.647 -&gt; sending
22:22:30.647 -&gt; Send completed successfully
22:22:30.684 -&gt; Waiting
22:22:30.753 -&gt; Wait Sent Success
22:22:30.753 -&gt; Done Sending

Thanks in advance!
There is no concept of "did the packet arrive", only "did it get sent" - and by "sent" I mean the data squirted out of the data pin for the attached module to send.

These 433MHz modules are dumb. Very dumb. You toggle the transmitter's pin high and low and the receiver sees that toggling, if it is in range, and toggles its output pin to mirror the signal.

The only way you can know if the packet arrived is if the receiver also has a transmitter and the transmitter also has a receiver. When a message arrives at the receiving node it sends a message back to the transmitting node to say "I got it". That takes a lot of work to get right, though. Especially since the original message may have arrived fine, but the acknowledgement didn't, and all sorts of horrible things can happen if you don't handle packet sequencing right.

Better is to pick a better module that does all these things for you, such as the nRF24L01+ with Auto-ACK turned on.