Well, maybe you’re confused a bit …
If you use the ATD command from terminal, you’ll get the CONNECT message and now you’re in data mode. any characters you send, will arrive at the other end. If you send +++, that will switch the local side into command mode where you can use ATH to end the connection, ATO to get back to data mode, or any other command.
This +++ generates the ADL_FCM_EVENT_V24_AT_MODE_EXT notification, and the ATO generates ADL_FCM_EVENT_V24_DATA_MODE_EXT. LOCALLY!
If you use adl_callAnswer() or adl_callSetup() to make a call, the data are routed internally and are not even available at any UART, so the only way to switch mode (not that you need it) is to call adl_fcmSwitchV24State().
It seems you have something as the telnet client, and a Wavecom module as a telnet server. If this is so, there’s no way a client could generate any ADL_FCM_EVENT_V24_XX_MODE_XX on the other side. These are initiated locally: from wavecom’s UARTs, or from your code.
And you’ll have to handle the login dialog just as any data, since there’s no “before login” phase. You send the “Login:” text, and wait for an answer. Repeat for password. Then you can send a prompt and wait for commands.