Library for controlling the WNC 14A2A from the K64F Freedom Board. It fulfills platform specific pure virtual methods from the WncControllerLibrary.

Dependencies:   WncControllerLibrary

Dependents:   WNC14A2AInterface

Fork of WncControllerK64F by Fred Kellerman

Use this interface to connect to and interact with the WNC M14A2A LTE Cellular Data Module which is provided by Wistron NeWeb Corporation (WNC) when using ARMmbed v5. The interface provides a Networking interface that can be used with the AT&T Cellular IoT Starter Kit that is sold by Avnet (

To demonstrate the use of the Interface, a series of example programs have been provided. Links to these examples are provided below. All examples can be compiled using both the on-line compiler and the ARMmbed CLI (command line interface, see

NOTE: This library/class is specific to the AT&T Cellular IoT Starter Kit which uses a FRDM-K64F. The users compiler should be configured to use the FRDM-K64F platform.

Example Programs

Import the example programs below and follow the in each to run the example program.

  • several examples of the interface using easy_connect.
  • SMS demonstration program that demonstrates SMS usage
  • Sockets demonstration program demonstrating using TCP sockets to interact with others
  • As new example program are developed, this README will be updated


The WNCInterface class currently supports the following version(s):

  • MPSS: M14A2A_v11.21.162331 APSS: M14A2A_v11.27.162331


This library is released under the Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License and may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

diff -r 9b9cb0d95f51 -r 43a36c66c574 WncControllerK64F.h
--- a/WncControllerK64F.h	Wed Nov 16 18:18:56 2016 +0000
+++ b/WncControllerK64F.h	Thu Nov 17 15:31:35 2016 +0000
@@ -19,8 +19,8 @@
-    @file          WncController.h
-    @purpose       Controls WNC Cellular Modem
+    @file          WncControllerK64F.h
+    @purpose       Contains K64F and mbed specifics to control the WNC modem using the WncController base class.
     @version       1.0
     @date          July 2016
     @author        Fred Kellerman
@@ -40,6 +40,7 @@
 using namespace WncController_fk;
 using namespace std;
+/** List of K64F pins that are used to control and setup the ATT IoT Kit WNC Shield */
 struct WncGpioPinListK64F {
     // NXP GPIO Pins that are used to initialize the WNC Shield
@@ -52,45 +53,49 @@
     DigitalOut * mdm_uart1_cts;
+ * @author Fred Kellerman
+ * @see API 
+ *
+ * <b>WncControllerK64F</b> This mbed C++ class is for controlling the WNC
+ * Cellular modem from the NXP K64F Freedom board.  It uses the control code
+ * from it's base class WncController to handle the WNC Modem AT cmds.  This
+ * class fulfills various pure virtual methods of the base class.  The point of
+ * this class is to have the platform specific code in it thus isolating the
+ * control code logic from any particular platform or OS.
+ */
 class WncControllerK64F : public WncController
-     *  \brief Constructor for UART controlled WNC
-     *
-     *  \param [in] wnc_uart - Reference to a SerialBuffered object which will
-     *  be used as the bus to control the WNC.  apnStr = a text string for
-     *  the cellular APN name.
-     *  \return None.
-     *
-     *  \details Adding another way to talk to the WNC, like I2C or USB,
-     *  a constructor should be added for each type just like the SerialBuffered
-     *  constructor below.  Assumes UART is enabled, setup and ready to go. This
-     *  class will read and write to this UART.
+     * Sets up the resources to control the WNC modem shield.
+     * @ingroup API
+     * @param pPins - pointer to a list of K64F pins that are used to setup and control the ATT IoT Kit's WNC Shield.
+     * @param wnc_uart - a pointer to the serial uart that is used to communicate with the WNC modem.
+     * @param debug_uart - a pointer to a serial uart for the debug output to go out of, if NULL debug will not be output.
     WncControllerK64F(struct WncGpioPinListK64F * pPins, MODSERIAL * wnc_uart, MODSERIAL * debug_uart = NULL);
-     *  \brief Activates a mode where the user can send text to and from the K64F
-     *  debug Serial port directly to the WNC.
-     *  \param [in] echoOn - set to true to enable terminal echo
-     *
-     *  \return true - if terminal mode was successfully entered and exited.
-     *
-     *  \details Activates a mode where the user can send text to and from the K64F
+     *  Activates a mode where the user can send text to and from the K64F
      *  debug Serial port directly to the WNC.  The mode is entered via this
      *  call.  The mode is exited when the user types CTRL-Q.  While in this
      *  mode all text to and from the WNC is consumed by the debug Serial port.
      *  No other methods in the class will receive any of the WNC output.
+     * @ingroup API
+     * @param pUart - a pointer to a uart to use to collect the user input and put the output from the WNC.
+     * @param echoOn - set to true to echo what is input back to the output of pUart.
     bool enterWncTerminalMode(MODSERIAL *pUart, bool echoOn);
     // Disallow copy
-//    WncControllerK64F operator=(WncControllerK64F lhs);
+    WncControllerK64F operator=(WncControllerK64F lhs);
     // Users must define these functionalities:
     virtual int putc(char c);