Hi all,
I am new in the wonderfull embedded module developement of SiWi.
Well, I am presently using a Q26 wireless module which is integrated in a design. I want to display some informations gathered from the UART2, and display it on UART1, here is my code, I found it in this forum and please have a look on it :
/*
    | DESCRIPTION:
    |   UART2 Data reading
    |
    |
    |   Refer to: AT_Command_Interface_Guide.pdf
    |   Refer to: ADL_User_Guide_v6_31.pdf
    |
    |   Program state diagram:
    |   ----------------------
    |   (Config uart)-->(set data mode)-->(echo uart1 char) --ESC recived-->(switch to AT MODE)
    |
    */
    /*----------------------------- includes ---------------------------------*/
    #include "adl_global.h" /* Application development layer */
	#include "generated.h"
    /*-------------------------------- defines -------------------------------*/
    #define UART_1 ADL_AT_PORT_TYPE(ADL_PORT_UART1,ADL_AT_RSP) /* refer to ADL User Guide pag 67, rspflag */
	#define UART_2 ADL_AT_PORT_TYPE(ADL_PORT_UART2,ADL_AT_RSP) /* refer to ADL User Guide pag 67, rspflag */
	/* --- UART Config enums --- */
    /* Data format */
    enum UART_FORMAT{
       NO_USE,
       DATA8_STOP2,
       DATA8_STOP1_PARITY1,
       DATA8_STOP1,
       DATA7_STOP2,
       DATA7_STOP1_PARITY1,
       DATA7_STOP1
    };
    /* parity bit config */
    enum UART_PARITY{
       ODD,
       EVEN,
       MARK,
       SPACE,
       NONE_PARITY
    };
    /* flow control */
    enum UART_FLOW_CONTROL{
       CTS_RTS,
       NO_CTS_RTS
    };
    /* UART mode type */
    enum UART_TYPE{
       DATAMODE,
       ATMODE
    };
    /*----------------------------- data types ---------------------------*/
        /*------------------------------ variables ---------------------------*/
        /*  can anybody help me with stack size???? */
        const u16 wm_apmCustomStackSize = 1024*3;    /* application stack size (trial&error to determine size)*/
        s8 handle_uart1, handle_uart2;                     /* UART1 handler */
        u8 mode_uart1, mode_uart2;                        /* UART1 mode type */
        /*---------------------------- Function prototypes --------------------------*/
        /*---------------------------------------------------------------------------
        | Portability: WMP 100/150
        |----------------------------------------------------------------------------
        | Routine description:
        |  * Configures UART1 as specified by parameters
        |    If all ok returns 0 else -1
        |---------------------------------------------------------------------------
        | Parameters description:
        |   u8 mode: AT COMMANDS or DATA mode
        |   int speed: port baud rate
        |   u8 format: data format
        |   u8 parity: parity bit
        |   u8 flow_control: flow control
        |   *see defines
        /---------------------------------------------------------------------------*/
        int initUART2(u8 mode, int speed, u8 format, u8 parity, u8 flow_control);
        /*---------------------------------------------------------------------------
            | Portability: WMP 100/150
            |----------------------------------------------------------------------------
            | Routine description:
            |  * Handler of control events in UART, sets UART mode
            |    If all ok returns TRUE else FALSE
            |---------------------------------------------------------------------------
            | Parameters description:
            |   adl_fcmEvent_e evnt: FCM event that raised handler.
            /---------------------------------------------------------------------------*/
            static bool EvhCrtlUart1(adl_fcmEvent_e evnt);
            static bool EvhCrtlUart2(adl_fcmEvent_e evnt);
            /*---------------------------------------------------------------------------
            | Portability: WMP 100/150
            |----------------------------------------------------------------------------
            | Routine description:
            |  * Handler when data recived, echo data until ESC recived, then switch to ATMODE
            |---------------------------------------------------------------------------
            | Parameters description:
            |   u16 datalength: number of bytes recived
            |   u8 *data: pointer to data recived
            /---------------------------------------------------------------------------*/
            static bool EvhDataUart1(u16 datalength, u8 *data);
            static bool EvhDataUart2(u16 datalength, u8 *data);
            /*---------------------------------------------------------------------------
            | Portability: WMP 100/150
            |----------------------------------------------------------------------------
            | Routine description:
            |  * Handler of port configuration using AT, al responses are ignored
            |---------------------------------------------------------------------------
            | Parameters description:
            |   adl_atResponse_t *Rsp: response from AT command
            /---------------------------------------------------------------------------*/
            static void EvhConfUartx(adl_atResponse_t *Rsp);
            /*-------------------------------- Functions --------------------------------*/
               int initUART2(u8 mode, int speed, u8 format, u8 parity, u8 flow_control){
                  char comand[15];
                  /* Check if port available*/
                  if(adl_fcmIsAvailable(ADL_FCM_FLOW_V24_UART2))
                  {
                     /* Save UART operation mode: DATA o AT*/
                     mode_uart2=mode;
                     /* subscribe to FCM uart service */
                     handle_uart2=adl_fcmSubscribe(ADL_FCM_FLOW_V24_UART2, EvhCrtlUart2,EvhDataUart2);
                     /* config parity with AT Command*/
                     wm_sprintf(comand,"AT+ICF=%d,%d", format, parity);
                     adl_atCmdCreate(comand, UART_2,EvhConfUartx,NULL);
                     /* speed  with AT Command*/
                     wm_sprintf(comand,"AT+IPR=%d", speed);
                     adl_atCmdCreate(comand, UART_2,EvhConfUartx,NULL);
                     /* flow control  with AT Command*/
                     switch(flow_control){
                     /* hardware flow control */
                     case CTS_RTS:
                        adl_atCmdCreate("AT+IFC=2,2",UART_2,EvhConfUartx,NULL);
                        break;
                        /* no hardware flow control */
                     case NO_CTS_RTS:
                        adl_atCmdCreate("AT+IFC=0,0",UART_2,EvhConfUartx,NULL);
                        break;
                     }
                     /* save configuration */
                     adl_atCmdCreate("AT&W", UART_2, (adl_atRspHandler_t)EvhConfUartx,NULL);
                     return 0;
                  }
                  else {
                	  adl_atSendResponse(ADL_AT_RSP, "\r\nUART2 not available");
                  }
                  return -1;
               }/*initUART2*/
               static bool EvhCrtlUart1(adl_fcmEvent_e evnt){
                     switch (evnt)
                      {
                      /* when com is open, operation mode is defined */
                      case ADL_FCM_EVENT_FLOW_OPENNED:
                         /*  DATA MODE */
                         if(mode_uart1 == DATAMODE){
                            adl_atSendResponse(ADL_AT_RSP, "\r\nUART1: Data Mode");
                            adl_fcmSwitchV24State(handle_uart1,ADL_FCM_V24_STATE_DATA);
                         }
                         /* AT MODE */
                         else if(mode_uart1 == ATMODE){
                            adl_atSendResponse(ADL_AT_RSP, "\r\nUART1: AT Mode");
                            adl_fcmSwitchV24State(handle_uart1,ADL_FCM_V24_STATE_AT);
                         }
                         break;
                      case ADL_FCM_EVENT_V24_DATA_MODE:
                         /* DATA MODE OK */
                         break;
                      case ADL_FCM_EVENT_V24_AT_MODE:
                         /* AT MODE OK */
                         break;
                      case ADL_FCM_EVENT_RESUME:
                         break;
                      case ADL_FCM_EVENT_MEM_RELEASE:
                         break;
                      default:
                         return FALSE;
                         break;
                      }
                      return TRUE;
                  }/*EvhCrtlUart1*/
               static bool EvhCrtlUart2(adl_fcmEvent_e evnt){
                      switch (evnt)
                       {
                       /* when com is open, operation mode is defined */
                       case ADL_FCM_EVENT_FLOW_OPENNED:
                          /*  DATA MODE */
                          if(mode_uart2 == DATAMODE){
                             adl_atSendResponse(ADL_AT_RSP, "\r\nUART2: Data Mode");
                             adl_fcmSwitchV24State(handle_uart2,ADL_FCM_V24_STATE_DATA);
                          }
                          /* AT MODE */
                          else if(mode_uart2 == ATMODE){
                             adl_atSendResponse(ADL_AT_RSP, "\r\nUART2: AT Mode");
                             adl_fcmSwitchV24State(handle_uart2,ADL_FCM_V24_STATE_AT);
                          }
                          break;
                       case ADL_FCM_EVENT_V24_DATA_MODE:
                          /* DATA MODE OK */
                          break;
                       case ADL_FCM_EVENT_V24_AT_MODE:
                          /* AT MODE OK */
                          break;
                       case ADL_FCM_EVENT_RESUME:
                          break;
                       case ADL_FCM_EVENT_MEM_RELEASE:
                          break;
                       default:
                          return FALSE;
                          break;
                       }
                       return TRUE;
                   }/*EvhCrtlUart2*/
               static bool EvhDataUart2(u16 datalength, u8 *data){
                      /* when data recived echo it */
                      s8 error;
                      /* check for ESC to switch to AT MODE */
                      if(data[0] == 27)
                      {
                         adl_fcmSwitchV24State(handle_uart2,ADL_FCM_V24_STATE_AT);
                         adl_atSendResponse(ADL_AT_RSP,"DATA RECEIVED");
                      }
                      else
                      {
                         error = adl_fcmSendData(handle_uart2,data,datalength);
                         adl_atSendResponse(ADL_AT_RSP,"UNKNOWN ERROR");
                         switch(error){
                         case ADL_RET_ERR_PARAM:
                            adl_atSendResponse(ADL_AT_RSP,"FCM send data: parameter incorrect value");
                            break;
                         case ADL_RET_ERR_UNKNOWN_HDL:
                            adl_atSendResponse(ADL_AT_RSP,"FCM send data: unknown handle");
                            break;
                         case ADL_RET_ERR_BAD_STATE:
                            adl_atSendResponse(ADL_AT_RSP,"FCM send data: not ready to send data");
                            break;
                         case ADL_FCM_RET_ERR_WAIT_RESUME:
                            adl_atSendResponse(ADL_AT_RSP,"FCM send data: flow has no more credit");
                            break;
                         case ADL_RET_ERR_SERVICE_LOCKED:
                            adl_atSendResponse(ADL_AT_RSP,"FCM send data: from a low level");
                            break;
                         }
                      }
                      return TRUE;
                   }/*EvhDataUart2*/
               static void EvhConfUartx(adl_atResponse_t *Rsp){
                   }/*EvhConfUartx*/
void main_task ( void )
{
	initUART2(DATAMODE, 57600 , DATA8_STOP1 , NONE_PARITY , NO_CTS_RTS);
}Actually, the App shows me permanently :
UART2: Data Mode
+WIND: 1
+CREG: 2
+WIND: 7
+CREG: 1,"0007","1ECA"
+WIND: 4
+WIND: 3
+CREG: 0
+CGREG: 0Again and again
I will apreciate your help!