I believe you need to have the characteristic handle "readReqParam" cast as the CYBLE_GATT_DB_ATTR_HANDLE_T type for the function to be okay with it. Although, since it resolves to a uint16, it might be something else...
Is there a particular sequence of events after which this issue happens?
Have you tried reading the characteristic value at a different instant?
Could you post your project or at least your source files.
It appears the problem is the heap size. When the command was invoked to read the characteristic, the event handler is supposed to respond once a result is ready. Whil ein debug, I found the event handler wasnt being called and instead it was going to the deafult IRQ nadler and then stuck in a while loop. Upon hours of searching, a recommendation to increase heap size should resolve this issue. The default heap size is 0x80. I tired setting to 0x200 and still didnt work. I set it to 0x800 and then the BLE event handler started working.
I also have found that reading characteristics is very sensitive to timing. If you want to read more than one characteristic it is best to use the read multi characteristic API instead of single reads. If you try to send any read api before the previous one completes, then system crashes. In my application, I only need to read the server once on power up to get the servers initial data so now I use the read multiple characteristic api for a block of handles that I already know what those handles are.
I find the Cypress API information very poor in both their implementation explanation but also general information that could impact proper operation such as heap size. I spent a day on this which should have taken 5 minutes with better information available.
Thanks for your reply, hope what I found is helpful to you in the future.