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 ******************************************************************************
group-Avnet 0:478cfd88041f 3 * @file SPIRIT_General.h
group-Avnet 0:478cfd88041f 4 * @author VMA division - AMS
group-Avnet 0:478cfd88041f 5 * @version 3.2.2
group-Avnet 0:478cfd88041f 6 * @date 08-July-2015
group-Avnet 0:478cfd88041f 7 * @brief Configuration and management of SPIRIT General functionalities.
group-Avnet 0:478cfd88041f 8 * @details
group-Avnet 0:478cfd88041f 9 *
group-Avnet 0:478cfd88041f 10 * @attention
group-Avnet 0:478cfd88041f 11 *
group-Avnet 0:478cfd88041f 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
group-Avnet 0:478cfd88041f 13 *
group-Avnet 0:478cfd88041f 14 * Redistribution and use in source and binary forms, with or without modification,
group-Avnet 0:478cfd88041f 15 * are permitted provided that the following conditions are met:
group-Avnet 0:478cfd88041f 16 * 1. Redistributions of source code must retain the above copyright notice,
group-Avnet 0:478cfd88041f 17 * this list of conditions and the following disclaimer.
group-Avnet 0:478cfd88041f 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
group-Avnet 0:478cfd88041f 19 * this list of conditions and the following disclaimer in the documentation
group-Avnet 0:478cfd88041f 20 * and/or other materials provided with the distribution.
group-Avnet 0:478cfd88041f 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
group-Avnet 0:478cfd88041f 22 * may be used to endorse or promote products derived from this software
group-Avnet 0:478cfd88041f 23 * without specific prior written permission.
group-Avnet 0:478cfd88041f 24 *
group-Avnet 0:478cfd88041f 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
group-Avnet 0:478cfd88041f 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
group-Avnet 0:478cfd88041f 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
group-Avnet 0:478cfd88041f 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
group-Avnet 0:478cfd88041f 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
group-Avnet 0:478cfd88041f 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
group-Avnet 0:478cfd88041f 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
group-Avnet 0:478cfd88041f 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
group-Avnet 0:478cfd88041f 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
group-Avnet 0:478cfd88041f 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
group-Avnet 0:478cfd88041f 35 *
group-Avnet 0:478cfd88041f 36 ******************************************************************************
group-Avnet 0:478cfd88041f 37 */
group-Avnet 0:478cfd88041f 38
group-Avnet 0:478cfd88041f 39 /* Define to prevent recursive inclusion -------------------------------------*/
group-Avnet 0:478cfd88041f 40 #ifndef __SPIRIT_GENERAL_H
group-Avnet 0:478cfd88041f 41 #define __SPIRIT_GENERAL_H
group-Avnet 0:478cfd88041f 42
group-Avnet 0:478cfd88041f 43
group-Avnet 0:478cfd88041f 44 /* Includes ------------------------------------------------------------------*/
group-Avnet 0:478cfd88041f 45
group-Avnet 0:478cfd88041f 46 #include "SPIRIT_Regs.h"
group-Avnet 0:478cfd88041f 47 #include "SPIRIT_Types.h"
group-Avnet 0:478cfd88041f 48
group-Avnet 0:478cfd88041f 49
group-Avnet 0:478cfd88041f 50 #ifdef __cplusplus
group-Avnet 0:478cfd88041f 51 extern "C" {
group-Avnet 0:478cfd88041f 52 #endif
group-Avnet 0:478cfd88041f 53
group-Avnet 0:478cfd88041f 54 /**
group-Avnet 0:478cfd88041f 55 * @addtogroup SPIRIT_Libraries
group-Avnet 0:478cfd88041f 56 * @{
group-Avnet 0:478cfd88041f 57 */
group-Avnet 0:478cfd88041f 58
group-Avnet 0:478cfd88041f 59
group-Avnet 0:478cfd88041f 60 /**
group-Avnet 0:478cfd88041f 61 * @defgroup SPIRIT_General General
group-Avnet 0:478cfd88041f 62 * @brief Configuration and management of SPIRIT General functionalities.
group-Avnet 0:478cfd88041f 63 * @details See the file <i>@ref SPIRIT_General.h</i> for more details.
group-Avnet 0:478cfd88041f 64 * @{
group-Avnet 0:478cfd88041f 65 */
group-Avnet 0:478cfd88041f 66
group-Avnet 0:478cfd88041f 67 /**
group-Avnet 0:478cfd88041f 68 * @defgroup General_Exported_Types General Exported Types
group-Avnet 0:478cfd88041f 69 * @{
group-Avnet 0:478cfd88041f 70 */
group-Avnet 0:478cfd88041f 71
group-Avnet 0:478cfd88041f 72
group-Avnet 0:478cfd88041f 73 /**
group-Avnet 0:478cfd88041f 74 * @brief SPIRIT ModeExtRef enumeration
group-Avnet 0:478cfd88041f 75 */
group-Avnet 0:478cfd88041f 76
group-Avnet 0:478cfd88041f 77 typedef enum
group-Avnet 0:478cfd88041f 78 {
group-Avnet 0:478cfd88041f 79 MODE_EXT_XO = 0,
group-Avnet 0:478cfd88041f 80 MODE_EXT_XIN = !MODE_EXT_XO
group-Avnet 0:478cfd88041f 81 } ModeExtRef;
group-Avnet 0:478cfd88041f 82
group-Avnet 0:478cfd88041f 83 #define IS_MODE_EXT(MODE) (MODE == MODE_EXT_XO || \
group-Avnet 0:478cfd88041f 84 MODE == MODE_EXT_XIN)
group-Avnet 0:478cfd88041f 85
group-Avnet 0:478cfd88041f 86
group-Avnet 0:478cfd88041f 87 /**
group-Avnet 0:478cfd88041f 88 * @brief SPIRIT BatteryLevel enumeration
group-Avnet 0:478cfd88041f 89 */
group-Avnet 0:478cfd88041f 90
group-Avnet 0:478cfd88041f 91 typedef enum
group-Avnet 0:478cfd88041f 92 {
group-Avnet 0:478cfd88041f 93 BLD_LVL_2_7_V = 0,
group-Avnet 0:478cfd88041f 94 BLD_LVL_2_5_V = 1,
group-Avnet 0:478cfd88041f 95 BLD_LVL_2_3_V = 2,
group-Avnet 0:478cfd88041f 96 BLD_LVL_2_1_V = 3
group-Avnet 0:478cfd88041f 97 } BatteryLevel;
group-Avnet 0:478cfd88041f 98
group-Avnet 0:478cfd88041f 99 #define IS_BLD_LVL(MODE) (MODE == BLD_LVL_2_7_V || \
group-Avnet 0:478cfd88041f 100 MODE == BLD_LVL_2_5_V || \
group-Avnet 0:478cfd88041f 101 MODE == BLD_LVL_2_3_V || \
group-Avnet 0:478cfd88041f 102 MODE == BLD_LVL_2_1_V)
group-Avnet 0:478cfd88041f 103
group-Avnet 0:478cfd88041f 104
group-Avnet 0:478cfd88041f 105 /**
group-Avnet 0:478cfd88041f 106 * @brief SPIRIT GmConf enumeration
group-Avnet 0:478cfd88041f 107 */
group-Avnet 0:478cfd88041f 108
group-Avnet 0:478cfd88041f 109 typedef enum
group-Avnet 0:478cfd88041f 110 {
group-Avnet 0:478cfd88041f 111 GM_SU_13_2 = 0,
group-Avnet 0:478cfd88041f 112 GM_SU_18_2,
group-Avnet 0:478cfd88041f 113 GM_SU_21_5,
group-Avnet 0:478cfd88041f 114 GM_SU_25_6,
group-Avnet 0:478cfd88041f 115 GM_SU_28_8,
group-Avnet 0:478cfd88041f 116 GM_SU_33_9,
group-Avnet 0:478cfd88041f 117 GM_SU_38_5,
group-Avnet 0:478cfd88041f 118 GM_SU_43_0
group-Avnet 0:478cfd88041f 119 } GmConf;
group-Avnet 0:478cfd88041f 120
group-Avnet 0:478cfd88041f 121 #define IS_GM_CONF(MODE) (MODE == GM_SU_13_2 || \
group-Avnet 0:478cfd88041f 122 MODE == GM_SU_18_2 || \
group-Avnet 0:478cfd88041f 123 MODE == GM_SU_21_5 || \
group-Avnet 0:478cfd88041f 124 MODE == GM_SU_25_6 || \
group-Avnet 0:478cfd88041f 125 MODE == GM_SU_28_8 || \
group-Avnet 0:478cfd88041f 126 MODE == GM_SU_33_9 || \
group-Avnet 0:478cfd88041f 127 MODE == GM_SU_38_5 || \
group-Avnet 0:478cfd88041f 128 MODE == GM_SU_43_0)
group-Avnet 0:478cfd88041f 129
group-Avnet 0:478cfd88041f 130
group-Avnet 0:478cfd88041f 131 /**
group-Avnet 0:478cfd88041f 132 * @brief SPIRIT packet type enumeration
group-Avnet 0:478cfd88041f 133 */
group-Avnet 0:478cfd88041f 134
group-Avnet 0:478cfd88041f 135 typedef enum
group-Avnet 0:478cfd88041f 136 {
group-Avnet 0:478cfd88041f 137 PKT_BASIC = 0x00,
group-Avnet 0:478cfd88041f 138 PKT_MBUS = 0x02,
group-Avnet 0:478cfd88041f 139 PKT_STACK
group-Avnet 0:478cfd88041f 140
group-Avnet 0:478cfd88041f 141 } PacketType;
group-Avnet 0:478cfd88041f 142
group-Avnet 0:478cfd88041f 143 #define IS_PKT_TYPE(TYPE) (TYPE == PKT_BASIC || \
group-Avnet 0:478cfd88041f 144 TYPE == PKT_MBUS || \
group-Avnet 0:478cfd88041f 145 TYPE == PKT_STACK || \
group-Avnet 0:478cfd88041f 146 )
group-Avnet 0:478cfd88041f 147
group-Avnet 0:478cfd88041f 148
group-Avnet 0:478cfd88041f 149 /**
group-Avnet 0:478cfd88041f 150 * @brief SPIRIT version type enumeration
group-Avnet 0:478cfd88041f 151 */
group-Avnet 0:478cfd88041f 152
group-Avnet 0:478cfd88041f 153 typedef enum
group-Avnet 0:478cfd88041f 154 {
group-Avnet 0:478cfd88041f 155 SPIRIT_VERSION_2_1 = 0x01, /* Deprecated */
group-Avnet 0:478cfd88041f 156 SPIRIT_VERSION_3_0, /* The only version of SPIRIT1 */
group-Avnet 0:478cfd88041f 157 } SpiritVersion;
group-Avnet 0:478cfd88041f 158
group-Avnet 0:478cfd88041f 159
group-Avnet 0:478cfd88041f 160 /**
group-Avnet 0:478cfd88041f 161 * @}
group-Avnet 0:478cfd88041f 162 */
group-Avnet 0:478cfd88041f 163
group-Avnet 0:478cfd88041f 164
group-Avnet 0:478cfd88041f 165 /**
group-Avnet 0:478cfd88041f 166 * @defgroup General_Exported_Constants General Exported Constants
group-Avnet 0:478cfd88041f 167 * @{
group-Avnet 0:478cfd88041f 168 */
group-Avnet 0:478cfd88041f 169
group-Avnet 0:478cfd88041f 170
group-Avnet 0:478cfd88041f 171 /**
group-Avnet 0:478cfd88041f 172 * @}
group-Avnet 0:478cfd88041f 173 */
group-Avnet 0:478cfd88041f 174
group-Avnet 0:478cfd88041f 175
group-Avnet 0:478cfd88041f 176 /**
group-Avnet 0:478cfd88041f 177 * @defgroup General_Exported_Macros General Exported Macros
group-Avnet 0:478cfd88041f 178 * @{
group-Avnet 0:478cfd88041f 179 */
group-Avnet 0:478cfd88041f 180 #define SpiritGeneralLibraryVersion() "Spirit1_Libraries_v.3.2.0"
group-Avnet 0:478cfd88041f 181
group-Avnet 0:478cfd88041f 182
group-Avnet 0:478cfd88041f 183 /**
group-Avnet 0:478cfd88041f 184 * @}
group-Avnet 0:478cfd88041f 185 */
group-Avnet 0:478cfd88041f 186
group-Avnet 0:478cfd88041f 187
group-Avnet 0:478cfd88041f 188 /**
group-Avnet 0:478cfd88041f 189 * @defgroup General_Exported_Functions General Exported Functions
group-Avnet 0:478cfd88041f 190 * @{
group-Avnet 0:478cfd88041f 191 */
group-Avnet 0:478cfd88041f 192
group-Avnet 0:478cfd88041f 193
group-Avnet 0:478cfd88041f 194 void SpiritGeneralBatteryLevel(SpiritFunctionalState xNewState);
group-Avnet 0:478cfd88041f 195 void SpiritGeneralSetBatteryLevel(BatteryLevel xBatteryLevel);
group-Avnet 0:478cfd88041f 196 BatteryLevel SpiritGeneralGetBatteryLevel(void);
group-Avnet 0:478cfd88041f 197 void SpiritGeneralBrownOut(SpiritFunctionalState xNewState);
group-Avnet 0:478cfd88041f 198 void SpiritGeneralHighPwr(SpiritFunctionalState xNewState);
group-Avnet 0:478cfd88041f 199 void SpiritGeneralSetExtRef(ModeExtRef xExtMode);
group-Avnet 0:478cfd88041f 200 ModeExtRef SpiritGeneralGetExtRef(void);
group-Avnet 0:478cfd88041f 201 void SpiritGeneralSetXoGm(GmConf xGm);
group-Avnet 0:478cfd88041f 202 GmConf SpiritGeneralGetXoGm(void);
group-Avnet 0:478cfd88041f 203 PacketType SpiritGeneralGetPktType(void);
group-Avnet 0:478cfd88041f 204 uint16_t SpiritGeneralGetDevicePartNumber(void);
group-Avnet 0:478cfd88041f 205 uint8_t SpiritGeneralGetSpiritVersion(void);
group-Avnet 0:478cfd88041f 206
group-Avnet 0:478cfd88041f 207 /**
group-Avnet 0:478cfd88041f 208 * @}
group-Avnet 0:478cfd88041f 209 */
group-Avnet 0:478cfd88041f 210
group-Avnet 0:478cfd88041f 211 /**
group-Avnet 0:478cfd88041f 212 * @}
group-Avnet 0:478cfd88041f 213 */
group-Avnet 0:478cfd88041f 214
group-Avnet 0:478cfd88041f 215
group-Avnet 0:478cfd88041f 216 /**
group-Avnet 0:478cfd88041f 217 * @}
group-Avnet 0:478cfd88041f 218 */
group-Avnet 0:478cfd88041f 219
group-Avnet 0:478cfd88041f 220
group-Avnet 0:478cfd88041f 221 #ifdef __cplusplus
group-Avnet 0:478cfd88041f 222 }
group-Avnet 0:478cfd88041f 223 #endif
group-Avnet 0:478cfd88041f 224
group-Avnet 0:478cfd88041f 225 #endif
group-Avnet 0:478cfd88041f 226
group-Avnet 0:478cfd88041f 227 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/