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:
| Value | Description |
|---|---|
| 1 | Basic WNC driver debug output |
| 2 | Comprehensive WNC driver debug output |
| 4 | Network 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.
stm-spirit1-rf-driver/source/libs/spirit1/SPIRIT1_Library/Inc/SPIRIT_Types.h
- Committer:
- group-Avnet
- Date:
- 2017-04-19
- Revision:
- 0:478cfd88041f
File content as of revision 0:478cfd88041f:
/**
******************************************************************************
* @file SPIRIT_Types.h
* @author VMA division - AMS
* @version 3.2.2
* @date 08-July-2015
* @brief Header file for SPIRIT types.
* @details
*
* This module provide some types definitions which will be used in
* all the modules of this library. Here is defined also the global
* variable @ref g_xStatus which contains the status of Spirit and
* is updated every time an SPI transaction occurs.
*
* @attention
*
* <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __SPIRIT_GENERICTYPES_H
#define __SPIRIT_GENERICTYPES_H
/* Includes ------------------------------------------------------------------*/
/* Include all integer types definitions */
#include <stdint.h>
#include <stdio.h>
#include "SPIRIT_Regs.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @addtogroup SPIRIT_Libraries
* @{
*/
/**
* @defgroup SPIRIT_Types Types
* @brief Module for SPIRIT types definition.
* * @details See the file <i>@ref SPIRIT_Types.h</i> for more details.
* @{
*/
/**
* @defgroup Types_Exported_Types Types Exported Types
* @{
*/
/**
* @brief Spirit Functional state. Used to enable or disable a specific option.
*/
typedef enum
{
S_DISABLE = 0,
S_ENABLE = !S_DISABLE
} SpiritFunctionalState;
#define IS_SPIRIT_FUNCTIONAL_STATE(STATE) (STATE == S_DISABLE || STATE == S_ENABLE)
/**
* @brief Spirit Flag status. Used to control the state of a flag.
*/
typedef enum
{
S_RESET = 0,
S_SET = !S_RESET
} SpiritFlagStatus;
#define IS_SPIRIT_FLAG_STATUS(STATUS) (STATUS == S_RESET || STATUS == S_SET)
/**
* @brief boolean type enumeration.
*/
typedef enum
{
S_FALSE = 0,
S_TRUE = !S_FALSE
} SpiritBool;
/**
* @brief SPIRIT States enumeration.
*/
typedef enum
{
MC_STATE_STANDBY =0x40, /*!< STANDBY */
MC_STATE_SLEEP =0x36, /*!< SLEEP */
MC_STATE_READY =0x03, /*!< READY */
MC_STATE_PM_SETUP =0x3D, /*!< PM_SETUP */
MC_STATE_XO_SETTLING =0x23, /*!< XO_SETTLING */
MC_STATE_SYNTH_SETUP =0x53, /*!< SYNT_SETUP */
MC_STATE_PROTOCOL =0x1F, /*!< PROTOCOL */
MC_STATE_SYNTH_CALIBRATION =0x4F, /*!< SYNTH */
MC_STATE_LOCK =0x0F, /*!< LOCK */
MC_STATE_RX =0x33, /*!< RX */
MC_STATE_TX =0x5F /*!< TX */
} SpiritState;
/**
* @brief SPIRIT Status. This definition represents the single field of the SPIRIT
* status returned on each SPI transaction, equal also to the MC_STATE registers.
* This field-oriented structure allows user to address in simple way the single
* field of the SPIRIT status.
* The user shall define a variable of SpiritStatus type to access on SPIRIT status fields.
* @note The fields order in the structure depends on used endianness (little or big
* endian). The actual definition is valid ONLY for LITTLE ENDIAN mode. Be sure to
* change opportunely the fields order when use a different endianness.
*/
typedef struct
{
uint8_t XO_ON:1; /*!< This one bit field notifies if XO is operating
(XO_ON is 1) or not (XO_On is 0) */
SpiritState MC_STATE: 7; /*!< This 7 bits field indicates the state of the
Main Controller of SPIRIT. The possible states
and their corresponding values are defined in
@ref SpiritState */
uint8_t ERROR_LOCK: 1; /*!< This one bit field notifies if there is an
error on RCO calibration (ERROR_LOCK is 1) or
not (ERROR_LOCK is 0) */
uint8_t RX_FIFO_EMPTY: 1; /*!< This one bit field notifies if RX FIFO is empty
(RX_FIFO_EMPTY is 1) or not (RX_FIFO_EMPTY is 0) */
uint8_t TX_FIFO_FULL: 1; /*!< This one bit field notifies if TX FIFO is full
(TX_FIFO_FULL is 1) or not (TX_FIFO_FULL is 0) */
uint8_t ANT_SELECT: 1; /*!< This one bit field notifies the currently selected
antenna */
uint8_t : 4; /*!< This 4 bits field are reserved and equal to 5 */
}SpiritStatus;
/**
* @}
*/
/**
* @defgroup Types_Exported_Constants Types Exported Constants
* @{
*/
/**
* @}
*/
/**
* @defgroup Types_Exported_Variables Types Exported Variables
* @{
*/
extern volatile SpiritStatus g_xStatus;
/**
* @}
*/
/**
* @defgroup Types_Exported_Macros Types Exported Macros
* @{
*/
#ifdef SPIRIT_USE_FULL_ASSERT
/**
* @brief The s_assert_param macro is used for function's parameters check.
* @param expr If expr is false, it calls assert_failed function which reports
* the name of the source file and the source line number of the call
* that failed. If expr is true, it returns no value.
* @retval None
*/
#define s_assert_param(expr) ((expr) ? (void)0 : s_assert_failed((uint8_t *)__FILE__, __LINE__))
void s_assert_failed(uint8_t* file, uint32_t line);
#elif SPIRIT_USE_VCOM_ASSERT
/**
* @brief The s_assert_param macro is used for function's parameters check.
* @param expr If expr is false, it calls assert_failed function which reports
* the name of the source file and the source line number of the call
* that failed. If expr is true, it returns no value.
* @retval None
*/
#define s_assert_param(expr) ((expr) ? (void)0 : s_assert_failed((uint8_t *)__FILE__, __LINE__,#expr))
void s_assert_failed(uint8_t* file, uint32_t line, char* expression);
#elif SPIRIT_USE_FRAME_ASSERT
/**
* @brief The s_assert_param macro is used for function's parameters check.
* @param expr If expr is false, it calls assert_failed function which reports
* the name of the source file and the source line number of the call
* that failed. If expr is true, it returns no value.
* @retval None
*/
#define s_assert_param(expr) ((expr) ? (void)0 : s_assert_failed(#expr))
void s_assert_failed(char* expression);
#else
#define s_assert_param(expr) {}
#endif
/**
* @brief Returns the absolute value.
*/
#define S_ABS(a) ((a)>0?(a):-(a))
/**
* @}
*/
/**
* @defgroup Types_Exported_Functions Types Exported Functions
* @{
*/
void SpiritRefreshStatus(void);
/**
*@}
*/
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif
/******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/
Avnet ATT WNC 14A2A Cellular IoT Kit