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.
atmel-rf-driver/source/AT86RFReg.h@0:478cfd88041f, 2017-04-19 (annotated)
- Committer:
- group-Avnet
- Date:
- Wed Apr 19 01:08:11 2017 +0000
- Revision:
- 0:478cfd88041f
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
group-Avnet | 0:478cfd88041f | 1 | /* |
group-Avnet | 0:478cfd88041f | 2 | * Copyright (c) 2014-2015 ARM Limited. All rights reserved. |
group-Avnet | 0:478cfd88041f | 3 | * SPDX-License-Identifier: Apache-2.0 |
group-Avnet | 0:478cfd88041f | 4 | * Licensed under the Apache License, Version 2.0 (the License); you may |
group-Avnet | 0:478cfd88041f | 5 | * not use this file except in compliance with the License. |
group-Avnet | 0:478cfd88041f | 6 | * You may obtain a copy of the License at |
group-Avnet | 0:478cfd88041f | 7 | * |
group-Avnet | 0:478cfd88041f | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
group-Avnet | 0:478cfd88041f | 9 | * |
group-Avnet | 0:478cfd88041f | 10 | * Unless required by applicable law or agreed to in writing, software |
group-Avnet | 0:478cfd88041f | 11 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
group-Avnet | 0:478cfd88041f | 12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
group-Avnet | 0:478cfd88041f | 13 | * See the License for the specific language governing permissions and |
group-Avnet | 0:478cfd88041f | 14 | * limitations under the License. |
group-Avnet | 0:478cfd88041f | 15 | */ |
group-Avnet | 0:478cfd88041f | 16 | |
group-Avnet | 0:478cfd88041f | 17 | #ifndef AT86RFREG_H_ |
group-Avnet | 0:478cfd88041f | 18 | #define AT86RFREG_H_ |
group-Avnet | 0:478cfd88041f | 19 | #ifdef __cplusplus |
group-Avnet | 0:478cfd88041f | 20 | extern "C" { |
group-Avnet | 0:478cfd88041f | 21 | #endif |
group-Avnet | 0:478cfd88041f | 22 | |
group-Avnet | 0:478cfd88041f | 23 | /*AT86RF212 PHY Modes*/ |
group-Avnet | 0:478cfd88041f | 24 | #define BPSK_20 0x00 |
group-Avnet | 0:478cfd88041f | 25 | #define BPSK_40 0x04 |
group-Avnet | 0:478cfd88041f | 26 | #define BPSK_40_ALT 0x14 |
group-Avnet | 0:478cfd88041f | 27 | #define OQPSK_SIN_RC_100 0x08 |
group-Avnet | 0:478cfd88041f | 28 | #define OQPSK_SIN_RC_200 0x09 |
group-Avnet | 0:478cfd88041f | 29 | #define OQPSK_RC_100 0x18 |
group-Avnet | 0:478cfd88041f | 30 | #define OQPSK_RC_200 0x19 |
group-Avnet | 0:478cfd88041f | 31 | #define OQPSK_SIN_250 0x0c |
group-Avnet | 0:478cfd88041f | 32 | #define OQPSK_SIN_500 0x0d |
group-Avnet | 0:478cfd88041f | 33 | #define OQPSK_SIN_500_ALT 0x0f |
group-Avnet | 0:478cfd88041f | 34 | #define OQPSK_RC_250 0x1c |
group-Avnet | 0:478cfd88041f | 35 | #define OQPSK_RC_500 0x1d |
group-Avnet | 0:478cfd88041f | 36 | #define OQPSK_RC_500_ALT 0x1f |
group-Avnet | 0:478cfd88041f | 37 | #define OQPSK_SIN_RC_400_SCR_ON 0x2A |
group-Avnet | 0:478cfd88041f | 38 | #define OQPSK_SIN_RC_400_SCR_OFF 0x0A |
group-Avnet | 0:478cfd88041f | 39 | #define OQPSK_RC_400_SCR_ON 0x3A |
group-Avnet | 0:478cfd88041f | 40 | #define OQPSK_RC_400_SCR_OFF 0x1A |
group-Avnet | 0:478cfd88041f | 41 | #define OQPSK_SIN_1000_SCR_ON 0x2E |
group-Avnet | 0:478cfd88041f | 42 | #define OQPSK_SIN_1000_SCR_OFF 0x0E |
group-Avnet | 0:478cfd88041f | 43 | #define OQPSK_RC_1000_SCR_ON 0x3E |
group-Avnet | 0:478cfd88041f | 44 | #define OQPSK_RC_1000_SCR_OFF 0x1E |
group-Avnet | 0:478cfd88041f | 45 | |
group-Avnet | 0:478cfd88041f | 46 | /*Supported transceivers*/ |
group-Avnet | 0:478cfd88041f | 47 | #define PART_AT86RF231 0x03 |
group-Avnet | 0:478cfd88041f | 48 | #define PART_AT86RF212 0x07 |
group-Avnet | 0:478cfd88041f | 49 | #define PART_AT86RF233 0x0B |
group-Avnet | 0:478cfd88041f | 50 | #define VERSION_AT86RF212 0x01 |
group-Avnet | 0:478cfd88041f | 51 | #define VERSION_AT86RF212B 0x03 |
group-Avnet | 0:478cfd88041f | 52 | |
group-Avnet | 0:478cfd88041f | 53 | /*RF Configuration Registers*/ |
group-Avnet | 0:478cfd88041f | 54 | #define TRX_STATUS 0x01 |
group-Avnet | 0:478cfd88041f | 55 | #define TRX_STATE 0x02 |
group-Avnet | 0:478cfd88041f | 56 | #define TRX_CTRL_0 0x03 |
group-Avnet | 0:478cfd88041f | 57 | #define TRX_CTRL_1 0x04 |
group-Avnet | 0:478cfd88041f | 58 | #define PHY_TX_PWR 0x05 |
group-Avnet | 0:478cfd88041f | 59 | #define PHY_RSSI 0x06 |
group-Avnet | 0:478cfd88041f | 60 | #define PHY_ED_LEVEL 0x07 |
group-Avnet | 0:478cfd88041f | 61 | #define PHY_CC_CCA 0x08 |
group-Avnet | 0:478cfd88041f | 62 | #define RX_CTRL 0x0A |
group-Avnet | 0:478cfd88041f | 63 | #define SFD_VALUE 0x0B |
group-Avnet | 0:478cfd88041f | 64 | #define TRX_CTRL_2 0x0C |
group-Avnet | 0:478cfd88041f | 65 | #define ANT_DIV 0x0D |
group-Avnet | 0:478cfd88041f | 66 | #define IRQ_MASK 0x0E |
group-Avnet | 0:478cfd88041f | 67 | #define IRQ_STATUS 0x0F |
group-Avnet | 0:478cfd88041f | 68 | #define VREG_CTRL 0x10 |
group-Avnet | 0:478cfd88041f | 69 | #define BATMON 0x11 |
group-Avnet | 0:478cfd88041f | 70 | #define XOSC_CTRL 0x12 |
group-Avnet | 0:478cfd88041f | 71 | #define CC_CTRL_0 0x13 |
group-Avnet | 0:478cfd88041f | 72 | #define CC_CTRL_1 0x14 |
group-Avnet | 0:478cfd88041f | 73 | #define RX_SYN 0x15 |
group-Avnet | 0:478cfd88041f | 74 | #define TRX_RPC 0x16 |
group-Avnet | 0:478cfd88041f | 75 | #define RF_CTRL_0 0x16 |
group-Avnet | 0:478cfd88041f | 76 | #define XAH_CTRL_1 0x17 |
group-Avnet | 0:478cfd88041f | 77 | #define FTN_CTRL 0x18 |
group-Avnet | 0:478cfd88041f | 78 | #define PLL_CF 0x1A |
group-Avnet | 0:478cfd88041f | 79 | #define PLL_DCU 0x1B |
group-Avnet | 0:478cfd88041f | 80 | #define PART_NUM 0x1C |
group-Avnet | 0:478cfd88041f | 81 | #define VERSION_NUM 0x1D |
group-Avnet | 0:478cfd88041f | 82 | #define MAN_ID_0 0x1E |
group-Avnet | 0:478cfd88041f | 83 | #define MAN_ID_1 0x1F |
group-Avnet | 0:478cfd88041f | 84 | #define SHORT_ADDR_0 0x20 |
group-Avnet | 0:478cfd88041f | 85 | #define SHORT_ADDR_1 0x21 |
group-Avnet | 0:478cfd88041f | 86 | #define PAN_ID_0 0x22 |
group-Avnet | 0:478cfd88041f | 87 | #define PAN_ID_1 0x23 |
group-Avnet | 0:478cfd88041f | 88 | #define IEEE_ADDR_0 0x24 |
group-Avnet | 0:478cfd88041f | 89 | #define IEEE_ADDR_1 0x25 |
group-Avnet | 0:478cfd88041f | 90 | #define IEEE_ADDR_2 0x26 |
group-Avnet | 0:478cfd88041f | 91 | #define IEEE_ADDR_3 0x27 |
group-Avnet | 0:478cfd88041f | 92 | #define IEEE_ADDR_4 0x28 |
group-Avnet | 0:478cfd88041f | 93 | #define IEEE_ADDR_5 0x29 |
group-Avnet | 0:478cfd88041f | 94 | #define IEEE_ADDR_6 0x2A |
group-Avnet | 0:478cfd88041f | 95 | #define IEEE_ADDR_7 0x2B |
group-Avnet | 0:478cfd88041f | 96 | #define XAH_CTRL_0 0x2C |
group-Avnet | 0:478cfd88041f | 97 | #define CSMA_SEED_0 0x2D |
group-Avnet | 0:478cfd88041f | 98 | #define CSMA_SEED_1 0x2E |
group-Avnet | 0:478cfd88041f | 99 | #define CSMA_BE 0x2F |
group-Avnet | 0:478cfd88041f | 100 | |
group-Avnet | 0:478cfd88041f | 101 | /* CSMA_SEED_1*/ |
group-Avnet | 0:478cfd88041f | 102 | #define AACK_FVN_MODE1 7 |
group-Avnet | 0:478cfd88041f | 103 | #define AACK_FVN_MODE0 6 |
group-Avnet | 0:478cfd88041f | 104 | #define AACK_SET_PD 5 |
group-Avnet | 0:478cfd88041f | 105 | #define AACK_DIS_ACK 4 |
group-Avnet | 0:478cfd88041f | 106 | #define AACK_I_AM_COORD 3 |
group-Avnet | 0:478cfd88041f | 107 | #define CSMA_SEED_12 2 |
group-Avnet | 0:478cfd88041f | 108 | #define CSMA_SEED_11 1 |
group-Avnet | 0:478cfd88041f | 109 | #define CSMA_SEED_10 0 |
group-Avnet | 0:478cfd88041f | 110 | |
group-Avnet | 0:478cfd88041f | 111 | /*TRX_STATUS bits*/ |
group-Avnet | 0:478cfd88041f | 112 | #define CCA_STATUS 0x40 |
group-Avnet | 0:478cfd88041f | 113 | #define CCA_DONE 0x80 |
group-Avnet | 0:478cfd88041f | 114 | |
group-Avnet | 0:478cfd88041f | 115 | /*PHY_CC_CCA bits*/ |
group-Avnet | 0:478cfd88041f | 116 | #define CCA_REQUEST 0x80 |
group-Avnet | 0:478cfd88041f | 117 | #define CCA_MODE_1 0x20 |
group-Avnet | 0:478cfd88041f | 118 | #define CCA_MODE_3 0x60 |
group-Avnet | 0:478cfd88041f | 119 | |
group-Avnet | 0:478cfd88041f | 120 | /*IRQ_MASK bits*/ |
group-Avnet | 0:478cfd88041f | 121 | #define RX_START 0x04 |
group-Avnet | 0:478cfd88041f | 122 | #define TRX_END 0x08 |
group-Avnet | 0:478cfd88041f | 123 | #define CCA_ED_DONE 0x10 |
group-Avnet | 0:478cfd88041f | 124 | #define AMI 0x20 |
group-Avnet | 0:478cfd88041f | 125 | #define TRX_UR 0x40 |
group-Avnet | 0:478cfd88041f | 126 | |
group-Avnet | 0:478cfd88041f | 127 | /*ANT_DIV bits*/ |
group-Avnet | 0:478cfd88041f | 128 | #define ANT_DIV_EN 0x08 |
group-Avnet | 0:478cfd88041f | 129 | #define ANT_EXT_SW_EN 0x04 |
group-Avnet | 0:478cfd88041f | 130 | #define ANT_CTRL_DEFAULT 0x03 |
group-Avnet | 0:478cfd88041f | 131 | |
group-Avnet | 0:478cfd88041f | 132 | /*TRX_CTRL_1 bits*/ |
group-Avnet | 0:478cfd88041f | 133 | #define PA_EXT_EN 0x80 |
group-Avnet | 0:478cfd88041f | 134 | |
group-Avnet | 0:478cfd88041f | 135 | /*FTN_CTRL bits*/ |
group-Avnet | 0:478cfd88041f | 136 | #define FTN_START 0x80 |
group-Avnet | 0:478cfd88041f | 137 | |
group-Avnet | 0:478cfd88041f | 138 | /*PHY_RSSI bits*/ |
group-Avnet | 0:478cfd88041f | 139 | #define CRC_VALID 0x80 |
group-Avnet | 0:478cfd88041f | 140 | |
group-Avnet | 0:478cfd88041f | 141 | /*RX_SYN bits*/ |
group-Avnet | 0:478cfd88041f | 142 | #define RX_PDT_DIS 0x80 |
group-Avnet | 0:478cfd88041f | 143 | |
group-Avnet | 0:478cfd88041f | 144 | /*TRX_RPC bits */ |
group-Avnet | 0:478cfd88041f | 145 | #define RX_RPC_CTRL 0xC0 |
group-Avnet | 0:478cfd88041f | 146 | #define RX_RPC_EN 0x20 |
group-Avnet | 0:478cfd88041f | 147 | #define PDT_RPC_EN 0x10 |
group-Avnet | 0:478cfd88041f | 148 | #define PLL_RPC_EN 0x08 |
group-Avnet | 0:478cfd88041f | 149 | #define XAH_TX_RPC_EN 0x04 |
group-Avnet | 0:478cfd88041f | 150 | #define IPAN_RPC_EN 0x02 |
group-Avnet | 0:478cfd88041f | 151 | #define TRX_RPC_RSVD_1 0x01 |
group-Avnet | 0:478cfd88041f | 152 | |
group-Avnet | 0:478cfd88041f | 153 | /*XAH_CTRL_1 bits*/ |
group-Avnet | 0:478cfd88041f | 154 | #define AACK_PROM_MODE 0x02 |
group-Avnet | 0:478cfd88041f | 155 | |
group-Avnet | 0:478cfd88041f | 156 | |
group-Avnet | 0:478cfd88041f | 157 | #ifdef __cplusplus |
group-Avnet | 0:478cfd88041f | 158 | } |
group-Avnet | 0:478cfd88041f | 159 | #endif |
group-Avnet | 0:478cfd88041f | 160 | |
group-Avnet | 0:478cfd88041f | 161 | #endif /* AT86RFREG_H_ */ |