This is the way I do it:
// define callback routine in setup()
RadioEvents.RxDone = OnRxDone;
// this is the CallBack routine running on interrupt level, as short as possible
void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
{
Rssi = rssi;
Snr = snr;
rxSize = size;
memcpy(rxpacket, payload, size );
//turnOnRGB(COLOR_RECEIVED,0);
//Serial.printf("\r\nreceived packet with rssi %d , length %d, snr %d\r\n",rssi,rxSize, snr);
packetReceived = true;
Radio.Rx(0); // receive next packet
}