Modem restarts on CSD call if I use adl_fcmSubscribe

Hello guys, I have a problem with CSD calls when I use adl_fcmSubscribe function in my app. In my app I need to use FCM data flow to control data from UART 1, so I use adl_fcmSubscribe function to subscribe on data and control events of the flow. However if I try to do CSD call and send some bytes (when my app is running) modem suddenly restarts and no data will be transmitted. Firstly I thought that it’s a bug in my app code, and I found(by exclusion) that modem isn’t restarts if I don’t use adl_fcmSubscribe function. So I tried to create minimal code, which needed to reproduce this issue. It’s small amount actually, you just need to call adl_fcmSubscribe function in main function. I have some experience with your platform previously, so I’m a bit confused with it. Looks like that code is Okay, so I believe that it’s some kind of environment issue. I tried different firmware versions (7.46, 7.47, 7.51) but looks like they all affected. Could you please suggest me what else could lead to this kind of issues? FYI I use Q2687 module(I tried several of them, so looks like that it’s not because of broken module). There is sample project with code which restarts the module in attach. Please tell me if you need any additional info to help me with it. Thanks!
testFCM.tar.gz (5.66 KB)

Could you please try with latest FW version 7.52.
Also how are you performing CSD call? through application?


I have used fcm plenty in 7.46 without issues.

Some quick notes about your example:
the control handler you have takes a u8 argument where it’s supposed to be a adl_fcmEvent_e argument.
You also shouldn’t need to typecast the control and datahandler arguments to fcmsubscribe.

If you need to send data over GSM CSD, use the ADL_PORT_GSM_BASE after the CSD call has been set up.
You might need to set up corresponding ADL_PORT_UART1 that you switch from AT to DATA mode, and have forwardings in the data handlers, in order to properly send raw data between the UART and GSM CSD in your application.

One more thing… when you set up the CSD call from the application side, do you submit the ATD command on the UART or on the VIRTUAL_BASE?