The Arduino Code over here is using the same LoRaMac-node as a basis as the I-CUBE-LRWAN code from ST, but with a lot of fixes. Perhaps you can simply transfer the fixes.
First off US915_HYBRID is a bad idea, as it’s using the first 16 channels (not 8). And it’s fixed to use the first 16 channels. So kind of useless. There is no way for a regular gateway to send the channel mask during the JOIN_ACCEPT, so with a good probability about half of your packets get lost.
You’d really want to setup the channels masks before you attempt the join. The code in LoRaWANClass::setSubBand shows how to do that.
Not sure whether this is all you need to do though. Had a miserable time getting all the kinks sorted out with this code to make it really work well.