How can be disabled "+WIND" messages on UART2?


#1

I’ve got a Wavecom Fastrack Supreme (CPU: Q26). I’m using UART2 to communicate with a microcontroller.
After starting the Wavecom, it sends “+WIND” messages on UART1 and UART2 too.
How can I disable the messages only on UART2? I need to be used these messages on UART1, but on UART2 the messages disturbs the microcontroller.


#2

Why don’t you use the UART2 in DATA mode? In this case you can manage all the communication on the UART2 port, and there wont be +WIND messages. ( except you send it yourself from the OAT application )

Cheers,
tom


#3

Hi!
I use UART2 in DATA mode. Firstly I subscribe to ADL_FCM_FLOW_V24_UART2.

void adl_main ( adl_InitType_e InitType )
{
  
  V24M_Handle2 = adl_fcmSubscribe(ADL_FCM_FLOW_V24_UART2,
                                     (adl_fcmCtrlHdlr_f)V24M_Ctrl_Handler2,
                                     (adl_fcmDataHdlr_f)V24M_Data_Handler2);

But before the embedded application started, some unsolicited messages ("+WIND") were sent to UART1 and UART2.
These messages may disturb the microcontroller, and I can’t modify the microcontrollers software.
So I have to disable all unsolicited messages on UART2.


#4

In case you are using an Open AT application, it can be done by subscribing to +WIND indications and send them to the desired port only. You can use adl_atUnSoSubscribe () to subscribe to WIND indications. Now all the wind indications will come to the call back handler. You can decide which ones to send to the external port (UART1 or UART2) using adl_atSendResponsePort () function.


#5

Hello!

I have the same problem. I was trying do this in your way, but it didn’t work. It appears that if we once switch on UART2 by “at+wmfm=0,1,2” command, power down module and once again power up - the UART2 will be still active and “boot unsolicited messages”:

<\r><\n>
+WIND: 13<\r><\n>
<\r><\n>
+WIND: 12,0<\r><\n>
<\r><\n>
+WIND: 12,1<\r><\n>
<\r><\n>
+WIND: 1<\r><\n>
<\r><\n>
+WIND: 7<\r><\n>

will be route to UART1 and UART2. Because it is done before I start my own program I can’t disable this messages on UART2.

How I was testing that:

  1. Run 2 terminals and connect them to UART1 and UART2
  2. Power up module
  3. If UART2 is disabled (at+wmfm? answer schould be +WMFM: 0,2,2,0) we get “WIND boot messages” only on UART1
  4. switch on UART2 by “at+wmfm=0,1,2” command
  5. power down module
  6. power up module again - in my case I get “boot messages” on both UART1 and UART2

Any idea how to workaround this problem?

My code:

bool fcmCtrlH ( u8 Event ) {
  TRACE (( 1, "V24 event %d", Event )); 
  switch ( Event ) {   
        case ADL_FCM_EVENT_FLOW_OPENNED :       
            adl_fcmSwitchV24State ( fcmHandle, ADL_FCM_V24_STATE_DATA );
            TRACE (( 1, "Switch to data" ));
        break;
    }
    
...
...
    return TRUE;
}

...

bool Res_IPR_Handler1( adl_atResponse_t *paras ) {    

    fcmHandle = adl_fcmSubscribe( ADL_FCM_FLOW_V24_UART2, fcmCtrlH, fcmDataH );
    return TRUE;
    
}

...

static void evh_sim( u8 event) {
    TRACE (( 1, "(evh_sim) Enter." ));
  
    if( ADL_SIM_EVENT_FULL_INIT == event) {
        TRACE (( 1, "(evh_sim) Full init." ));
        
        adl_atCmdCreate( "AT+WMFM=0,1,2", FALSE, Res_WMFM1_Handler, "*", NULL ); //Activate UART2

        adl_atCmdCreate( "AT+IPR=115200", ADL_AT_PORT_TYPE( ADL_AT_UART2, FALSE ),
            Res_IPR_Handler, "*", NULL ); // baud rate
			
        adl_atCmdCreate( "AT+IFC=0,0", ADL_AT_PORT_TYPE( ADL_AT_UART2, FALSE ),
           Res_IPR_Handler2, "*", NULL ); // no hardware flow control

        adl_atCmdCreate( "AT+ICF=3,4", ADL_AT_PORT_TYPE( ADL_AT_UART2, FALSE ),
            Res_IPR_Handler1, "*", NULL ); // 3,4 8n1 5,1 7e1
			
        adl_tmrSubscribe ( TRUE, 20, ADL_TMR_TYPE_100MS, SendMessage_TimerHandler );
    }
}

#6

Hi,

To avoid “power on” unsolicited codes like “+WIND: 13” you need to use firmware version 663c or newer. And correspondingly you should better use OpenAT v4.25

Good luck