@navi, thank you for the recommendation and I have looked at that sample. It appears to me that the PingPong and OTAA_OLED are very different in structure.
The OTAA_OLED uses the LoRaWanClass class which has the definition below, missing the receive Radio.rx (0) method.
void init(DeviceClass_t classMode,LoRaMacRegion_t region);
void send(DeviceClass_t classMode);
void cycle(uint32_t dutyCycle);
void sleep(DeviceClass_t classMode,uint8_t debugLevel);
The PingPong is based on RadioEvents_t and Radio_s, which the latter supports the Rx method, shown below. It seems like a large rewrite to go to RadioEvents. Is there another way using LoRaWanClass?
static RadioEvents_t RadioEvents;
void ( *Rx )( uint32_t timeout );