Question - FCM for UART1

Hi Guys,

Can adl_fcmSendData() be called outside the the FCM Control Handler?
The example in the documentation (AirPrime_Open_AT_Tutorial_Rev1.0.pdf, pp 187-188), it is called inside the Control Handler in case ADL_FCM_EVENT_V24_DATA_MODE.

bool fcmCtrlH ( adl_fcmEvent_e event )
{
  TRACE ((1, "Control event received --> %d", event));
  switch(event)
  {
    case ADL_FCM_EVENT_FLOW_OPENNED:
    TRACE (( 1, "Flow Opened" ));
    /* Switching V24 state from AT to Data. */
    adl_fcmSwitchV24State(Handle, ADL_FCM_V24_STATE_DATA);
    break;
  case ADL_FCM_EVENT_V24_DATA_MODE:
    TRACE (( 1, "Flow in Data Mode" ));
    /* sending data to the external application via V24 serial link */
    adl_fcmSendData(Handle, "This is a test case", 20);
    break;
  }
  return TRUE;
}

I tried calling this function in void adl_main() but it is not firing even though I have already subscribed to fcm and already set to data mode.

Any help is very much appreciated.

Thanks.

I also have a follow-up question, but I’ll state the scenario first. Only UART1 is used.

  1. Subscribe to fcm handle.
  2. Send my first data (data1).
  3. Process the received data from the first data.
  4. After process of the received data from the first data, send another data (data2).
  5. Process the received data from the second data.

Questions:

  1. Should I create 2 control handlers and 2 data handlers, one for each process?
  2. Or, create only 1 control handler and 1 data handler for both process? This is my current implementation thought I have a problem because when I send the second data, nothing happen.
  3. Should I unsubscribe to fcm handle after receiving the first data, then subscribe again to fcm handle prior to sending the second data?

Any help is very much appreciated.

Thanks.

There are also a few Gals here!

Yes.

You’ll need to show what you actually did - we are not clairvoyant :exclamation:

You missed switching to Data mode

No.

You create a Control Handler and a Data Handler for the Subscription.

You could do that - but I see no point :exclamation:

I think the only reason would be if you wanted to switch back to using AT commands :question:

but, having just seen your other thread - https://forum.sierrawireless.com/t/link-error-undefined-reference-to-sleep/8142/4 - I might hazard a guess that the problem lies in a failure to grasp the Event-Driven nature of Open-AT … :question:

Hi awneil,

I just missed that in the post but not in my code. :stuck_out_tongue:

I admit. I am still new to this kind of technology and programming especially C++, because I came from “another part of the world”. :stuck_out_tongue:

I’ll be spending a lot of time reading then.

Thanks.