Added support for the WNC M14A2A Cellular LTE Data Module.

Dependencies:   WNC14A2AInterface

Easy Connect

Easily add all supported connectivity methods to your mbed OS project

This project is derived from https://developer.mbed.org/teams/sandbox/code/simple-mbed-client-example/file/dd6231df71bb/easy-connect.lib. It give user the ability to switch between connectivity methods and includes support for the WNC14A2A Data Module. The `NetworkInterface` API makes this easy, but you still need a mechanism for the user to select the connection method, The selection is made by modifying the `mbed_app.json` file and using `easy_connect()` from your application.

Specifying connectivity method

To add support for the WNC14A2A, add the following to your ``mbed_app.json`` file:

mbed_app.json

{
    "config": {
        "network-interface":{
            "help": "options are ETHERNET,WIFI_ESP8266,WIFI_ODIN,MESH_LOWPAN_ND,MESH_THREAD,WNC14A2A",
            "value": "WNC14A2A"
        }
    },
}

After you choose `WNC14A2A` you'll also need to indicate if you want debug output or not by Enabling (true) or Disabling (false) WNC_DEBUG.

If WNC_DEBUG is enabled, there are 3 different levels of debug output (selected via bit settings). These debug levels are set using the following values:

ValueDescription
1Basic WNC driver debug output
2Comprehensive WNC driver debug output
4Network Layer debug output

You can have any combination of these three bit values for a total value of 0 – 7.

WNC Debug Settings

    "config": {
        "WNC_DEBUG": {
            "value": false
        },
        "WNC_DEBUG_SETTING": {
            "value": 4
        },
    }

Using Easy Connect from your application

Easy Connect has just one function which will either return a `NetworkInterface`-pointer or `NULL`:

Sample Code

#include "easy-connect.h"

int main(int, char**) {
    NetworkInterface* network = easy_connect(true); /* has 1 argument, enable_logging (pass in true to log to serial port) */
    if (!network) {
        printf("Connecting to the network failed... See serial output.\r\n");
        return 1;
    }
 
    // Rest of your program
}

Tested on

  • K64F with Ethernet.
  • AT&T Cellular IoT Starter Kit with WNC M14A2A Cellular Data Module

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

  • MPSS: M14A2A_v11.50.164451 APSS: M14A2A_v11.53.164451

License

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

http://www.apache.org/licenses/LICENSE-2.0

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.

Committer:
group-Avnet
Date:
Wed Apr 19 01:08:11 2017 +0000
Revision:
0:478cfd88041f
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-Avnet 0:478cfd88041f 1 /*
group-Avnet 0:478cfd88041f 2 * Copyright (c) 2012, STMicroelectronics.
group-Avnet 0:478cfd88041f 3 * All rights reserved.
group-Avnet 0:478cfd88041f 4 *
group-Avnet 0:478cfd88041f 5 * Redistribution and use in source and binary forms, with or without
group-Avnet 0:478cfd88041f 6 * modification, are permitted provided that the following conditions
group-Avnet 0:478cfd88041f 7 * are met:
group-Avnet 0:478cfd88041f 8 * 1. Redistributions of source code must retain the above copyright
group-Avnet 0:478cfd88041f 9 * notice, this list of conditions and the following disclaimer.
group-Avnet 0:478cfd88041f 10 * 2. Redistributions in binary form must reproduce the above copyright
group-Avnet 0:478cfd88041f 11 * notice, this list of conditions and the following disclaimer in the
group-Avnet 0:478cfd88041f 12 * documentation and/or other materials provided with the distribution.
group-Avnet 0:478cfd88041f 13 * 3. Neither the name of the Institute nor the names of its contributors
group-Avnet 0:478cfd88041f 14 * may be used to endorse or promote products derived from this software
group-Avnet 0:478cfd88041f 15 * without specific prior written permission.
group-Avnet 0:478cfd88041f 16 *
group-Avnet 0:478cfd88041f 17 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
group-Avnet 0:478cfd88041f 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
group-Avnet 0:478cfd88041f 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
group-Avnet 0:478cfd88041f 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
group-Avnet 0:478cfd88041f 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
group-Avnet 0:478cfd88041f 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
group-Avnet 0:478cfd88041f 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
group-Avnet 0:478cfd88041f 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
group-Avnet 0:478cfd88041f 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
group-Avnet 0:478cfd88041f 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
group-Avnet 0:478cfd88041f 27 * SUCH DAMAGE.
group-Avnet 0:478cfd88041f 28 *
group-Avnet 0:478cfd88041f 29 * This file is part of the Contiki operating system.
group-Avnet 0:478cfd88041f 30 *
group-Avnet 0:478cfd88041f 31 */
group-Avnet 0:478cfd88041f 32 /*---------------------------------------------------------------------------*/
group-Avnet 0:478cfd88041f 33 #ifndef __SPIRIT1_CONFIG_H__
group-Avnet 0:478cfd88041f 34 #define __SPIRIT1_CONFIG_H__
group-Avnet 0:478cfd88041f 35 /*---------------------------------------------------------------------------*/
group-Avnet 0:478cfd88041f 36 #include "radio.h"
group-Avnet 0:478cfd88041f 37 #include "SPIRIT_Config.h"
group-Avnet 0:478cfd88041f 38 #include "spirit1-const.h"
group-Avnet 0:478cfd88041f 39 /*---------------------------------------------------------------------------*/
group-Avnet 0:478cfd88041f 40 #define CCA_THRESHOLD -98.0 /* dBm */
group-Avnet 0:478cfd88041f 41 #define XTAL_FREQUENCY 50000000 /* Hz */
group-Avnet 0:478cfd88041f 42 #define SPIRIT_MAX_FIFO_LEN (96) // betzw - WAS: 600
group-Avnet 0:478cfd88041f 43 /*---------------------------------------------------------------------------*/
group-Avnet 0:478cfd88041f 44
group-Avnet 0:478cfd88041f 45 /* Sometimes Spirit1 seems to NOT deliver (correctly) the 'IRQ_RX_DATA_READY'
group-Avnet 0:478cfd88041f 46 * event for packets which have a length which is close to a multiple of
group-Avnet 0:478cfd88041f 47 * RX FIFO size. Furthermore, in these cases also the content delivery seems
group-Avnet 0:478cfd88041f 48 * to be compromised as well as the generation of RX/TX FIFO errors.
group-Avnet 0:478cfd88041f 49 * This can be avoided by reducing the maximum packet length to a value which
group-Avnet 0:478cfd88041f 50 * is lower than the RX FIFO size.
group-Avnet 0:478cfd88041f 51 *
group-Avnet 0:478cfd88041f 52 * Enable beyond macro if you want to use the version of the driver which avoids
group-Avnet 0:478cfd88041f 53 * FIFO overflows by reducing packet length.
group-Avnet 0:478cfd88041f 54 *
group-Avnet 0:478cfd88041f 55 * NOTE: the non delivery of event 'IRQ_RX_DATA_READY' MUST still be
group-Avnet 0:478cfd88041f 56 * investigated further deeply (both on HW & SW level)!
group-Avnet 0:478cfd88041f 57 */
group-Avnet 0:478cfd88041f 58 #define RX_FIFO_THR_WA
group-Avnet 0:478cfd88041f 59
group-Avnet 0:478cfd88041f 60 /**
group-Avnet 0:478cfd88041f 61 * The MAX_PACKET_LEN is an arbitrary value used to define the two array
group-Avnet 0:478cfd88041f 62 * spirit_txbuf and spirit_rxbuf.
group-Avnet 0:478cfd88041f 63 * The SPIRIT1 supports with its packet handler a length of 65,535 bytes,
group-Avnet 0:478cfd88041f 64 * and in direct mode (without packet handler) there is no limit of data.
group-Avnet 0:478cfd88041f 65 */
group-Avnet 0:478cfd88041f 66 #ifdef RX_FIFO_THR_WA
group-Avnet 0:478cfd88041f 67 #define MAX_PACKET_LEN (SPIRIT_MAX_FIFO_LEN-1)
group-Avnet 0:478cfd88041f 68 #else
group-Avnet 0:478cfd88041f 69 #define MAX_PACKET_LEN (255) // betzw - WAS: SPIRIT_MAX_FIFO_LEN, but LEN_WIDTH is set to 7 so the variable payload length is theoretically from 0 to 255 bytes
group-Avnet 0:478cfd88041f 70 #endif
group-Avnet 0:478cfd88041f 71
group-Avnet 0:478cfd88041f 72 /*---------------------------------------------------------------------------*/
group-Avnet 0:478cfd88041f 73 /**
group-Avnet 0:478cfd88041f 74 * Spirit1 IC version
group-Avnet 0:478cfd88041f 75 */
group-Avnet 0:478cfd88041f 76 #define SPIRIT1_VERSION SPIRIT_VERSION_3_0
group-Avnet 0:478cfd88041f 77 /*---------------------------------------------------------------------------*/
group-Avnet 0:478cfd88041f 78 #endif /* __SPIRIT1_CONFIG_H__ */
group-Avnet 0:478cfd88041f 79 /*---------------------------------------------------------------------------*/