NNN50 WIFI_API library

Dependents:   NNN50_CE_Test_UDP NNN50_linux_firmware NNN50_SoftAP_HelloWorld NNN50_BLEWIFISensor ... more

This is mbed compatible EthernetInterface lib exclude for Delta DFCM-NNN50 platform.

Additional information and examples can be found in mbed Handbook

Committer:
tsungta
Date:
Mon Sep 04 05:40:11 2017 +0000
Revision:
32:8298a2fb074f
Parent:
28:2abbf8463fa8
56:f4cc53f; Add getRSSI() to readout RSSI while connected with AP router; Add SSL support refer to TCPSocketConnection.connect()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tsungta 28:2abbf8463fa8 1 /**
tsungta 28:2abbf8463fa8 2 *
tsungta 28:2abbf8463fa8 3 * \file
tsungta 28:2abbf8463fa8 4 *
tsungta 28:2abbf8463fa8 5 * \brief NMC1500 Peripherials Application Interface.
tsungta 28:2abbf8463fa8 6 *
tsungta 28:2abbf8463fa8 7 * Copyright (c) 2016-2017 Atmel Corporation. All rights reserved.
tsungta 28:2abbf8463fa8 8 *
tsungta 28:2abbf8463fa8 9 * \asf_license_start
tsungta 28:2abbf8463fa8 10 *
tsungta 28:2abbf8463fa8 11 * \page License
tsungta 28:2abbf8463fa8 12 *
tsungta 28:2abbf8463fa8 13 * Redistribution and use in source and binary forms, with or without
tsungta 28:2abbf8463fa8 14 * modification, are permitted provided that the following conditions are met:
tsungta 28:2abbf8463fa8 15 *
tsungta 28:2abbf8463fa8 16 * 1. Redistributions of source code must retain the above copyright notice,
tsungta 28:2abbf8463fa8 17 * this list of conditions and the following disclaimer.
tsungta 28:2abbf8463fa8 18 *
tsungta 28:2abbf8463fa8 19 * 2. Redistributions in binary form must reproduce the above copyright notice,
tsungta 28:2abbf8463fa8 20 * this list of conditions and the following disclaimer in the documentation
tsungta 28:2abbf8463fa8 21 * and/or other materials provided with the distribution.
tsungta 28:2abbf8463fa8 22 *
tsungta 28:2abbf8463fa8 23 * 3. The name of Atmel may not be used to endorse or promote products derived
tsungta 28:2abbf8463fa8 24 * from this software without specific prior written permission.
tsungta 28:2abbf8463fa8 25 *
tsungta 28:2abbf8463fa8 26 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
tsungta 28:2abbf8463fa8 27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
tsungta 28:2abbf8463fa8 28 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
tsungta 28:2abbf8463fa8 29 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
tsungta 28:2abbf8463fa8 30 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
tsungta 28:2abbf8463fa8 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
tsungta 28:2abbf8463fa8 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
tsungta 28:2abbf8463fa8 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
tsungta 28:2abbf8463fa8 34 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
tsungta 28:2abbf8463fa8 35 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
tsungta 28:2abbf8463fa8 36 * POSSIBILITY OF SUCH DAMAGE.
tsungta 28:2abbf8463fa8 37 *
tsungta 28:2abbf8463fa8 38 * \asf_license_stop
tsungta 28:2abbf8463fa8 39 *
tsungta 28:2abbf8463fa8 40 */
tsungta 28:2abbf8463fa8 41
tsungta 28:2abbf8463fa8 42
tsungta 28:2abbf8463fa8 43 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
tsungta 28:2abbf8463fa8 44 INCLUDES
tsungta 28:2abbf8463fa8 45 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
tsungta 28:2abbf8463fa8 46
tsungta 28:2abbf8463fa8 47 #include "driver/include/m2m_periph.h"
tsungta 28:2abbf8463fa8 48 #include "driver/source/nmasic.h"
tsungta 28:2abbf8463fa8 49 #include "m2m_hif.h"
tsungta 28:2abbf8463fa8 50
tsungta 28:2abbf8463fa8 51 #ifdef CONF_PERIPH
tsungta 28:2abbf8463fa8 52
tsungta 28:2abbf8463fa8 53 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
tsungta 28:2abbf8463fa8 54 MACROS
tsungta 28:2abbf8463fa8 55 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
tsungta 28:2abbf8463fa8 56 #define GPIO_OP_DIR 0
tsungta 28:2abbf8463fa8 57 #define GPIO_OP_SET 1
tsungta 28:2abbf8463fa8 58 #define GPIO_OP_GET 2
tsungta 28:2abbf8463fa8 59 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
tsungta 28:2abbf8463fa8 60 DATA TYPES
tsungta 28:2abbf8463fa8 61 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
tsungta 28:2abbf8463fa8 62
tsungta 28:2abbf8463fa8 63 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
tsungta 28:2abbf8463fa8 64 STATIC FUNCTIONS
tsungta 28:2abbf8463fa8 65 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
tsungta 28:2abbf8463fa8 66 static sint8 get_gpio_idx(uint8 u8GpioNum)
tsungta 28:2abbf8463fa8 67 {
tsungta 28:2abbf8463fa8 68 if(u8GpioNum >= M2M_PERIPH_GPIO_MAX) return -1;
tsungta 28:2abbf8463fa8 69 if(u8GpioNum == M2M_PERIPH_GPIO15) { return 15;
tsungta 28:2abbf8463fa8 70 } else if(u8GpioNum == M2M_PERIPH_GPIO16) { return 16;
tsungta 28:2abbf8463fa8 71 } else if(u8GpioNum == M2M_PERIPH_GPIO18) { return 18;
tsungta 28:2abbf8463fa8 72 } else if(u8GpioNum == M2M_PERIPH_GPIO3) { return 3;
tsungta 28:2abbf8463fa8 73 } else if(u8GpioNum == M2M_PERIPH_GPIO4) { return 4;
tsungta 28:2abbf8463fa8 74 } else if(u8GpioNum == M2M_PERIPH_GPIO5) { return 5;
tsungta 28:2abbf8463fa8 75 } else if(u8GpioNum == M2M_PERIPH_GPIO6) { return 6;
tsungta 28:2abbf8463fa8 76 } else {
tsungta 28:2abbf8463fa8 77 return -2;
tsungta 28:2abbf8463fa8 78 }
tsungta 28:2abbf8463fa8 79 }
tsungta 28:2abbf8463fa8 80 /*
tsungta 28:2abbf8463fa8 81 * GPIO read/write skeleton with wakeup/sleep capability.
tsungta 28:2abbf8463fa8 82 */
tsungta 28:2abbf8463fa8 83 static sint8 gpio_ioctl(uint8 op, uint8 u8GpioNum, uint8 u8InVal, uint8 * pu8OutVal)
tsungta 28:2abbf8463fa8 84 {
tsungta 28:2abbf8463fa8 85 sint8 ret, gpio;
tsungta 28:2abbf8463fa8 86
tsungta 28:2abbf8463fa8 87 ret = hif_chip_wake();
tsungta 28:2abbf8463fa8 88 if(ret != M2M_SUCCESS) goto _EXIT;
tsungta 28:2abbf8463fa8 89
tsungta 28:2abbf8463fa8 90 gpio = get_gpio_idx(u8GpioNum);
tsungta 28:2abbf8463fa8 91 if(gpio < 0) goto _EXIT1;
tsungta 28:2abbf8463fa8 92
tsungta 28:2abbf8463fa8 93 if(op == GPIO_OP_DIR) {
tsungta 28:2abbf8463fa8 94 ret = set_gpio_dir((uint8)gpio, u8InVal);
tsungta 28:2abbf8463fa8 95 } else if(op == GPIO_OP_SET) {
tsungta 28:2abbf8463fa8 96 ret = set_gpio_val((uint8)gpio, u8InVal);
tsungta 28:2abbf8463fa8 97 } else if(op == GPIO_OP_GET) {
tsungta 28:2abbf8463fa8 98 ret = get_gpio_val((uint8)gpio, pu8OutVal);
tsungta 28:2abbf8463fa8 99 }
tsungta 28:2abbf8463fa8 100 if(ret != M2M_SUCCESS) goto _EXIT1;
tsungta 28:2abbf8463fa8 101
tsungta 28:2abbf8463fa8 102 _EXIT1:
tsungta 28:2abbf8463fa8 103 ret = hif_chip_sleep();
tsungta 28:2abbf8463fa8 104 _EXIT:
tsungta 28:2abbf8463fa8 105 return ret;
tsungta 28:2abbf8463fa8 106 }
tsungta 28:2abbf8463fa8 107 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
tsungta 28:2abbf8463fa8 108 FUNCTION IMPLEMENTATION
tsungta 28:2abbf8463fa8 109 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
tsungta 28:2abbf8463fa8 110
tsungta 28:2abbf8463fa8 111
tsungta 28:2abbf8463fa8 112 sint8 m2m_periph_init(tstrPerphInitParam * param)
tsungta 28:2abbf8463fa8 113 {
tsungta 28:2abbf8463fa8 114 return M2M_SUCCESS;
tsungta 28:2abbf8463fa8 115 }
tsungta 28:2abbf8463fa8 116
tsungta 28:2abbf8463fa8 117 sint8 m2m_periph_gpio_set_dir(uint8 u8GpioNum, uint8 u8GpioDir)
tsungta 28:2abbf8463fa8 118 {
tsungta 28:2abbf8463fa8 119 return gpio_ioctl(GPIO_OP_DIR, u8GpioNum, u8GpioDir, NULL);
tsungta 28:2abbf8463fa8 120 }
tsungta 28:2abbf8463fa8 121
tsungta 28:2abbf8463fa8 122 sint8 m2m_periph_gpio_set_val(uint8 u8GpioNum, uint8 u8GpioVal)
tsungta 28:2abbf8463fa8 123 {
tsungta 28:2abbf8463fa8 124 return gpio_ioctl(GPIO_OP_SET, u8GpioNum, u8GpioVal, NULL);
tsungta 28:2abbf8463fa8 125 }
tsungta 28:2abbf8463fa8 126
tsungta 28:2abbf8463fa8 127 sint8 m2m_periph_gpio_get_val(uint8 u8GpioNum, uint8 * pu8GpioVal)
tsungta 28:2abbf8463fa8 128 {
tsungta 28:2abbf8463fa8 129 return gpio_ioctl(GPIO_OP_GET, u8GpioNum, 0, pu8GpioVal);
tsungta 28:2abbf8463fa8 130 }
tsungta 28:2abbf8463fa8 131
tsungta 28:2abbf8463fa8 132 sint8 m2m_periph_gpio_pullup_ctrl(uint8 u8GpioNum, uint8 u8PullupEn)
tsungta 28:2abbf8463fa8 133 {
tsungta 28:2abbf8463fa8 134 /* TBD */
tsungta 28:2abbf8463fa8 135 return M2M_SUCCESS;
tsungta 28:2abbf8463fa8 136 }
tsungta 28:2abbf8463fa8 137
tsungta 28:2abbf8463fa8 138 sint8 m2m_periph_i2c_master_init(tstrI2cMasterInitParam * param)
tsungta 28:2abbf8463fa8 139 {
tsungta 28:2abbf8463fa8 140 /* TBD */
tsungta 28:2abbf8463fa8 141 return M2M_SUCCESS;
tsungta 28:2abbf8463fa8 142 }
tsungta 28:2abbf8463fa8 143
tsungta 28:2abbf8463fa8 144 sint8 m2m_periph_i2c_master_write(uint8 u8SlaveAddr, uint8 * pu8Buf, uint16 u16BufLen, uint8 flags)
tsungta 28:2abbf8463fa8 145 {
tsungta 28:2abbf8463fa8 146 /* TBD */
tsungta 28:2abbf8463fa8 147 return M2M_SUCCESS;
tsungta 28:2abbf8463fa8 148 }
tsungta 28:2abbf8463fa8 149
tsungta 28:2abbf8463fa8 150 sint8 m2m_periph_i2c_master_read(uint8 u8SlaveAddr, uint8 * pu8Buf, uint16 u16BufLen, uint16 * pu16ReadLen, uint8 flags)
tsungta 28:2abbf8463fa8 151 {
tsungta 28:2abbf8463fa8 152 /* TBD */
tsungta 28:2abbf8463fa8 153 return M2M_SUCCESS;
tsungta 28:2abbf8463fa8 154 }
tsungta 28:2abbf8463fa8 155
tsungta 28:2abbf8463fa8 156
tsungta 28:2abbf8463fa8 157 sint8 m2m_periph_pullup_ctrl(uint32 pinmask, uint8 enable)
tsungta 28:2abbf8463fa8 158 {
tsungta 28:2abbf8463fa8 159 return pullup_ctrl(pinmask, enable);
tsungta 28:2abbf8463fa8 160 }
tsungta 28:2abbf8463fa8 161 #endif /* CONF_PERIPH */
tsungta 28:2abbf8463fa8 162