5.9.1 Execution

main.c - Initialize the device and connect to a server using SSL.

  1. Code summary.
    • Configure the network and server parameters in main.h.
      /** Wi-Fi Settings */
      #define MAIN_WLAN_SSID                  "DEMO_AP" /**< Destination SSID */
      #define MAIN_WLAN_AUTH                  M2M_WIFI_SEC_WPA_PSK /**< Security type */
      #define MAIN_WLAN_PSK                   "12345678" /**< Password for Destination SSID */
      
      /** All SSL defines */
      #define MAIN_HOST_NAME                  "www.google.com"
      #define MAIN_HOST_PORT                  443
    • Initialize the socket module and create the UDP server socket.
      socketInit();
      registerSocketCallback(socket_cb, resolve_cb);
    • Connect to the AP.
      /* Connect to router. */
      m2m_wifi_connect((char *)MAIN_WLAN_SSID, sizeof(MAIN_WLAN_SSID),
              MAIN_WLAN_AUTH, (char *)MAIN_WLAN_PSK, M2M_WIFI_CH_ALL);
    • After the device is connected to the AP, the gethostbyname() function will be executed.
      static void wifi_cb(uint8_t u8MsgType, void *pvMsg)
      {
          case M2M_WIFI_REQ_DHCP_CONF:
          {
              /* Obtain the IP Address by network name */
              gethostbyname((uint8_t *)MAIN_HOST_NAME);
    • In the main loop, try to connect to the SSL server after resolving the domain host name.
      if (sslConnect() != SOCK_ERR_NO_ERROR) {
          gu8SocketStatus = SocketInit;
      }
    • If successfully connected, the socket_cb() function will be called with the SOCKET_MSG_CONNECT message.
      static void socket_cb(SOCKET sock, uint8_t u8Msg, void *pvMsg)
      {
          switch (u8Msg) {
          case SOCKET_MSG_CONNECT:
              if (pstrConnect && pstrConnect->s8Error >= SOCK_ERR_NO_ERROR)
                  printf("Successfully connected.\r\n");
          break;
    • You can receive data in the socket_cb() function with the SOCKET_MSG_RECVFROM message when a client device sends data. (Use the “UDP Client” example.)
      static void socket_cb(SOCKET sock, uint8_t u8Msg, void *pvMsg)
      {
          ...
          } else if (u8Msg == SOCKET_MSG_RECVFROM) {
          tstrSocketRecvMsg *pstrRx = (tstrSocketRecvMsg *)pvMsg;
          if (pstrRx->pu8Buffer && pstrRx->s16BufferSize) {
              printf("socket_cb: received app message.(%u)\r\n", packetCnt);
      	/* Prepare next buffer reception. */
      	recvfrom(sock, gau8SocketTestBuffer, MAIN_WIFI_M2M_BUFFER_SIZE, 0);
  2. Build the program and download it into the board.
  3. Start the application.
Note: To set up an SSL connection, a root certificate must be installed.