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 IoT OTA 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 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
tsungta 28:2abbf8463fa8 45 INCLUDES
tsungta 28:2abbf8463fa8 46 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
tsungta 28:2abbf8463fa8 47 #include "common/include/nm_common.h"
tsungta 28:2abbf8463fa8 48 #include "driver/include/m2m_types.h"
tsungta 28:2abbf8463fa8 49 #include "driver/include/m2m_ota.h"
tsungta 28:2abbf8463fa8 50 #include "driver/source/m2m_hif.h"
tsungta 28:2abbf8463fa8 51 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
tsungta 28:2abbf8463fa8 52 MACROS
tsungta 28:2abbf8463fa8 53 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
tsungta 28:2abbf8463fa8 54
tsungta 28:2abbf8463fa8 55 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
tsungta 28:2abbf8463fa8 56 DATA TYPES
tsungta 28:2abbf8463fa8 57 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
tsungta 28:2abbf8463fa8 58 static tpfOtaUpdateCb gpfOtaUpdateCb = NULL;
tsungta 28:2abbf8463fa8 59 static tpfOtaNotifCb gpfOtaNotifCb = NULL;
tsungta 28:2abbf8463fa8 60
tsungta 28:2abbf8463fa8 61
tsungta 28:2abbf8463fa8 62 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
tsungta 28:2abbf8463fa8 63 FUNCTION PROTOTYPES
tsungta 28:2abbf8463fa8 64 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
tsungta 28:2abbf8463fa8 65 /**
tsungta 28:2abbf8463fa8 66 * @fn m2m_wifi_cb(uint8 u8OpCode, uint16 u16DataSize, uint32 u32Addr, uint8 grp)
tsungta 28:2abbf8463fa8 67 * @brief WiFi call back function
tsungta 28:2abbf8463fa8 68 * @param [in] u8OpCode
tsungta 28:2abbf8463fa8 69 * HIF Opcode type.
tsungta 28:2abbf8463fa8 70 * @param [in] u16DataSize
tsungta 28:2abbf8463fa8 71 * HIF data length.
tsungta 28:2abbf8463fa8 72 * @param [in] u32Addr
tsungta 28:2abbf8463fa8 73 * HIF address.
tsungta 28:2abbf8463fa8 74 * @param [in] grp
tsungta 28:2abbf8463fa8 75 * HIF group type.
tsungta 28:2abbf8463fa8 76 * @author
tsungta 28:2abbf8463fa8 77 * @date
tsungta 28:2abbf8463fa8 78 * @version 1.0
tsungta 28:2abbf8463fa8 79 */
tsungta 28:2abbf8463fa8 80 static void m2m_ota_cb(uint8 u8OpCode, uint16 u16DataSize, uint32 u32Addr)
tsungta 28:2abbf8463fa8 81 {
tsungta 28:2abbf8463fa8 82 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 83 if(u8OpCode == M2M_OTA_RESP_NOTIF_UPDATE_INFO)
tsungta 28:2abbf8463fa8 84 {
tsungta 28:2abbf8463fa8 85 tstrOtaUpdateInfo strOtaUpdateInfo;
tsungta 28:2abbf8463fa8 86 m2m_memset((uint8*)&strOtaUpdateInfo,0,sizeof(tstrOtaUpdateInfo));
tsungta 28:2abbf8463fa8 87 ret = hif_receive(u32Addr,(uint8*)&strOtaUpdateInfo,sizeof(tstrOtaUpdateInfo),0);
tsungta 28:2abbf8463fa8 88 if(ret == M2M_SUCCESS)
tsungta 28:2abbf8463fa8 89 {
tsungta 28:2abbf8463fa8 90 if(gpfOtaNotifCb)
tsungta 28:2abbf8463fa8 91 gpfOtaNotifCb(&strOtaUpdateInfo);
tsungta 28:2abbf8463fa8 92 }
tsungta 28:2abbf8463fa8 93 }
tsungta 28:2abbf8463fa8 94 else if (u8OpCode == M2M_OTA_RESP_UPDATE_STATUS)
tsungta 28:2abbf8463fa8 95 {
tsungta 28:2abbf8463fa8 96 tstrOtaUpdateStatusResp strOtaUpdateStatusResp;
tsungta 28:2abbf8463fa8 97 m2m_memset((uint8*)&strOtaUpdateStatusResp,0,sizeof(tstrOtaUpdateStatusResp));
tsungta 28:2abbf8463fa8 98 ret = hif_receive(u32Addr, (uint8*) &strOtaUpdateStatusResp,sizeof(tstrOtaUpdateStatusResp), 0);
tsungta 28:2abbf8463fa8 99 if(ret == M2M_SUCCESS)
tsungta 28:2abbf8463fa8 100 {
tsungta 28:2abbf8463fa8 101 if(gpfOtaUpdateCb)
tsungta 28:2abbf8463fa8 102 gpfOtaUpdateCb(strOtaUpdateStatusResp.u8OtaUpdateStatusType,strOtaUpdateStatusResp.u8OtaUpdateStatus);
tsungta 28:2abbf8463fa8 103 }
tsungta 28:2abbf8463fa8 104 }
tsungta 28:2abbf8463fa8 105 else
tsungta 28:2abbf8463fa8 106 {
tsungta 28:2abbf8463fa8 107 M2M_ERR("Invaild OTA resp %d ?\n",u8OpCode);
tsungta 28:2abbf8463fa8 108 }
tsungta 28:2abbf8463fa8 109
tsungta 28:2abbf8463fa8 110 }
tsungta 28:2abbf8463fa8 111 /*!
tsungta 28:2abbf8463fa8 112 @fn \
tsungta 28:2abbf8463fa8 113 NMI_API sint8 m2m_ota_init(tpfOtaUpdateCb pfOtaUpdateCb, tpfOtaNotifCb pfOtaNotifCb);
tsungta 28:2abbf8463fa8 114
tsungta 28:2abbf8463fa8 115 @brief
tsungta 28:2abbf8463fa8 116 Initialize the OTA layer.
tsungta 28:2abbf8463fa8 117
tsungta 28:2abbf8463fa8 118 @param [in] pfOtaUpdateCb
tsungta 28:2abbf8463fa8 119 OTA Update callback function
tsungta 28:2abbf8463fa8 120
tsungta 28:2abbf8463fa8 121 @param [in] pfOtaNotifCb
tsungta 28:2abbf8463fa8 122 OTA notify callback function
tsungta 28:2abbf8463fa8 123
tsungta 28:2abbf8463fa8 124 @return
tsungta 28:2abbf8463fa8 125 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 126 */
tsungta 28:2abbf8463fa8 127 NMI_API sint8 m2m_ota_init(tpfOtaUpdateCb pfOtaUpdateCb, tpfOtaNotifCb pfOtaNotifCb)
tsungta 28:2abbf8463fa8 128 {
tsungta 28:2abbf8463fa8 129 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 130
tsungta 28:2abbf8463fa8 131 if(pfOtaUpdateCb){
tsungta 28:2abbf8463fa8 132 gpfOtaUpdateCb = pfOtaUpdateCb;
tsungta 28:2abbf8463fa8 133 }else{
tsungta 28:2abbf8463fa8 134 M2M_ERR("Invaild Ota update cb\n");
tsungta 28:2abbf8463fa8 135 }
tsungta 28:2abbf8463fa8 136 if(pfOtaNotifCb){
tsungta 28:2abbf8463fa8 137 gpfOtaNotifCb = pfOtaNotifCb;
tsungta 28:2abbf8463fa8 138 }else{
tsungta 28:2abbf8463fa8 139 M2M_ERR("Invaild Ota notify cb\n");
tsungta 28:2abbf8463fa8 140 }
tsungta 28:2abbf8463fa8 141
tsungta 28:2abbf8463fa8 142 hif_register_cb(M2M_REQ_GROUP_OTA,m2m_ota_cb);
tsungta 28:2abbf8463fa8 143
tsungta 28:2abbf8463fa8 144 return ret;
tsungta 28:2abbf8463fa8 145 }
tsungta 28:2abbf8463fa8 146 /*!
tsungta 28:2abbf8463fa8 147 @fn \
tsungta 28:2abbf8463fa8 148 NMI_API sint8 m2m_ota_notif_set_url(uint8 * u8Url);
tsungta 28:2abbf8463fa8 149
tsungta 28:2abbf8463fa8 150 @brief
tsungta 28:2abbf8463fa8 151 Set the OTA url
tsungta 28:2abbf8463fa8 152
tsungta 28:2abbf8463fa8 153 @param [in] u8Url
tsungta 28:2abbf8463fa8 154 The url server address
tsungta 28:2abbf8463fa8 155
tsungta 28:2abbf8463fa8 156 @return
tsungta 28:2abbf8463fa8 157 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 158 */
tsungta 28:2abbf8463fa8 159 NMI_API sint8 m2m_ota_notif_set_url(uint8 * u8Url)
tsungta 28:2abbf8463fa8 160 {
tsungta 28:2abbf8463fa8 161 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 162 uint16 u16UrlSize = m2m_strlen(u8Url) + 1;
tsungta 28:2abbf8463fa8 163 /*Todo: we may change it to data pkt but we need to give it higer priority
tsungta 28:2abbf8463fa8 164 but the priorty is not implemnted yet in data pkt
tsungta 28:2abbf8463fa8 165 */
tsungta 28:2abbf8463fa8 166 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_NOTIF_SET_URL,u8Url,u16UrlSize,NULL,0,0);
tsungta 28:2abbf8463fa8 167 return ret;
tsungta 28:2abbf8463fa8 168
tsungta 28:2abbf8463fa8 169 }
tsungta 28:2abbf8463fa8 170
tsungta 28:2abbf8463fa8 171 /*!
tsungta 28:2abbf8463fa8 172 @fn \
tsungta 28:2abbf8463fa8 173 NMI_API sint8 m2m_ota_notif_check_for_update(void);
tsungta 28:2abbf8463fa8 174
tsungta 28:2abbf8463fa8 175 @brief
tsungta 28:2abbf8463fa8 176 check for ota update
tsungta 28:2abbf8463fa8 177
tsungta 28:2abbf8463fa8 178 @return
tsungta 28:2abbf8463fa8 179 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 180 */
tsungta 28:2abbf8463fa8 181 NMI_API sint8 m2m_ota_notif_check_for_update(void)
tsungta 28:2abbf8463fa8 182 {
tsungta 28:2abbf8463fa8 183 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 184 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_NOTIF_CHECK_FOR_UPDATE,NULL,0,NULL,0,0);
tsungta 28:2abbf8463fa8 185 return ret;
tsungta 28:2abbf8463fa8 186 }
tsungta 28:2abbf8463fa8 187
tsungta 28:2abbf8463fa8 188 /*!
tsungta 28:2abbf8463fa8 189 @fn \
tsungta 28:2abbf8463fa8 190 NMI_API sint8 m2m_ota_notif_sched(uint32 u32Period);
tsungta 28:2abbf8463fa8 191
tsungta 28:2abbf8463fa8 192 @brief
tsungta 28:2abbf8463fa8 193 Schedule OTA update
tsungta 28:2abbf8463fa8 194
tsungta 28:2abbf8463fa8 195 @param [in] u32Period
tsungta 28:2abbf8463fa8 196 Period in days
tsungta 28:2abbf8463fa8 197
tsungta 28:2abbf8463fa8 198 @return
tsungta 28:2abbf8463fa8 199 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 200 */
tsungta 28:2abbf8463fa8 201 NMI_API sint8 m2m_ota_notif_sched(uint32 u32Period)
tsungta 28:2abbf8463fa8 202 {
tsungta 28:2abbf8463fa8 203 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 204 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_NOTIF_CHECK_FOR_UPDATE,NULL,0,NULL,0,0);
tsungta 28:2abbf8463fa8 205 return ret;
tsungta 28:2abbf8463fa8 206 }
tsungta 28:2abbf8463fa8 207
tsungta 28:2abbf8463fa8 208 /*!
tsungta 28:2abbf8463fa8 209 @fn \
tsungta 28:2abbf8463fa8 210 NMI_API sint8 m2m_ota_start_update(uint8 * u8DownloadUrl);
tsungta 28:2abbf8463fa8 211
tsungta 28:2abbf8463fa8 212 @brief
tsungta 28:2abbf8463fa8 213 Request OTA start update using the downloaded url
tsungta 28:2abbf8463fa8 214
tsungta 28:2abbf8463fa8 215 @param [in] u8DownloadUrl
tsungta 28:2abbf8463fa8 216 The download firmware url, you get it from device info
tsungta 28:2abbf8463fa8 217
tsungta 28:2abbf8463fa8 218 @return
tsungta 28:2abbf8463fa8 219 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 220
tsungta 28:2abbf8463fa8 221 */
tsungta 28:2abbf8463fa8 222 NMI_API sint8 m2m_ota_start_update(uint8 * u8DownloadUrl)
tsungta 28:2abbf8463fa8 223 {
tsungta 28:2abbf8463fa8 224 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 225 uint16 u16DurlSize = m2m_strlen(u8DownloadUrl) + 1;
tsungta 28:2abbf8463fa8 226 /*Todo: we may change it to data pkt but we need to give it higer priority
tsungta 28:2abbf8463fa8 227 but the priorty is not implemnted yet in data pkt
tsungta 28:2abbf8463fa8 228 */
tsungta 28:2abbf8463fa8 229 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_START_FW_UPDATE,u8DownloadUrl,u16DurlSize,NULL,0,0);
tsungta 28:2abbf8463fa8 230 return ret;
tsungta 28:2abbf8463fa8 231 }
tsungta 28:2abbf8463fa8 232 /*!
tsungta 28:2abbf8463fa8 233 @fn \
tsungta 28:2abbf8463fa8 234 NMI_API sint8 m2m_ota_start_update_crt(uint8 * u8DownloadUrl);
tsungta 28:2abbf8463fa8 235
tsungta 28:2abbf8463fa8 236 @brief
tsungta 28:2abbf8463fa8 237 Request OTA start for the Cortus app image.
tsungta 28:2abbf8463fa8 238
tsungta 28:2abbf8463fa8 239 @param [in] u8DownloadUrl
tsungta 28:2abbf8463fa8 240 The cortus application image url.
tsungta 28:2abbf8463fa8 241
tsungta 28:2abbf8463fa8 242 @return
tsungta 28:2abbf8463fa8 243 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 244
tsungta 28:2abbf8463fa8 245 */
tsungta 28:2abbf8463fa8 246 NMI_API sint8 m2m_ota_start_update_crt(uint8 * u8DownloadUrl)
tsungta 28:2abbf8463fa8 247 {
tsungta 28:2abbf8463fa8 248 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 249 uint16 u16DurlSize = m2m_strlen(u8DownloadUrl) + 1;
tsungta 28:2abbf8463fa8 250 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_START_CRT_UPDATE,u8DownloadUrl,u16DurlSize,NULL,0,0);
tsungta 28:2abbf8463fa8 251 return ret;
tsungta 28:2abbf8463fa8 252 }
tsungta 28:2abbf8463fa8 253
tsungta 28:2abbf8463fa8 254
tsungta 28:2abbf8463fa8 255 /*!
tsungta 28:2abbf8463fa8 256 @fn \
tsungta 28:2abbf8463fa8 257 NMI_API sint8 m2m_ota_rollback(void);
tsungta 28:2abbf8463fa8 258
tsungta 28:2abbf8463fa8 259 @brief
tsungta 28:2abbf8463fa8 260 Request OTA Rollback image
tsungta 28:2abbf8463fa8 261
tsungta 28:2abbf8463fa8 262 @return
tsungta 28:2abbf8463fa8 263 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 264 */
tsungta 28:2abbf8463fa8 265 NMI_API sint8 m2m_ota_rollback(void)
tsungta 28:2abbf8463fa8 266 {
tsungta 28:2abbf8463fa8 267 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 268 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_ROLLBACK_FW,NULL,0,NULL,0,0);
tsungta 28:2abbf8463fa8 269 return ret;
tsungta 28:2abbf8463fa8 270 }
tsungta 28:2abbf8463fa8 271 /*!
tsungta 28:2abbf8463fa8 272 @fn \
tsungta 28:2abbf8463fa8 273 NMI_API sint8 m2m_ota_rollback_crt(void);
tsungta 28:2abbf8463fa8 274
tsungta 28:2abbf8463fa8 275 @brief
tsungta 28:2abbf8463fa8 276 Request Cortus application OTA Rollback image
tsungta 28:2abbf8463fa8 277
tsungta 28:2abbf8463fa8 278 @return
tsungta 28:2abbf8463fa8 279 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 280 */
tsungta 28:2abbf8463fa8 281 NMI_API sint8 m2m_ota_rollback_crt(void)
tsungta 28:2abbf8463fa8 282 {
tsungta 28:2abbf8463fa8 283 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 284 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_ROLLBACK_CRT,NULL,0,NULL,0,0);
tsungta 28:2abbf8463fa8 285 return ret;
tsungta 28:2abbf8463fa8 286 }
tsungta 28:2abbf8463fa8 287
tsungta 28:2abbf8463fa8 288 /*!
tsungta 28:2abbf8463fa8 289 @fn \
tsungta 28:2abbf8463fa8 290 NMI_API sint8 m2m_ota_abort(void);
tsungta 28:2abbf8463fa8 291
tsungta 28:2abbf8463fa8 292 @brief
tsungta 28:2abbf8463fa8 293 Request OTA Abort
tsungta 28:2abbf8463fa8 294
tsungta 28:2abbf8463fa8 295 @return
tsungta 28:2abbf8463fa8 296 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 297 */
tsungta 28:2abbf8463fa8 298 NMI_API sint8 m2m_ota_abort(void)
tsungta 28:2abbf8463fa8 299 {
tsungta 28:2abbf8463fa8 300 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 301 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_ABORT,NULL,0,NULL,0,0);
tsungta 28:2abbf8463fa8 302 return ret;
tsungta 28:2abbf8463fa8 303 }
tsungta 28:2abbf8463fa8 304
tsungta 28:2abbf8463fa8 305
tsungta 28:2abbf8463fa8 306 /*!
tsungta 28:2abbf8463fa8 307 @fn \
tsungta 28:2abbf8463fa8 308 NMI_API sint8 m2m_ota_switch_firmware(void);
tsungta 28:2abbf8463fa8 309
tsungta 28:2abbf8463fa8 310 @brief
tsungta 28:2abbf8463fa8 311 Switch to the upgraded Firmware
tsungta 28:2abbf8463fa8 312
tsungta 28:2abbf8463fa8 313 @return
tsungta 28:2abbf8463fa8 314 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 315 */
tsungta 28:2abbf8463fa8 316 NMI_API sint8 m2m_ota_switch_firmware(void)
tsungta 28:2abbf8463fa8 317 {
tsungta 28:2abbf8463fa8 318 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 319 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_SWITCH_FIRMWARE,NULL,0,NULL,0,0);
tsungta 28:2abbf8463fa8 320 return ret;
tsungta 28:2abbf8463fa8 321 }
tsungta 28:2abbf8463fa8 322 /*!
tsungta 28:2abbf8463fa8 323 @fn \
tsungta 28:2abbf8463fa8 324 NMI_API sint8 m2m_ota_switch_crt(void);
tsungta 28:2abbf8463fa8 325
tsungta 28:2abbf8463fa8 326 @brief
tsungta 28:2abbf8463fa8 327 Switch to the upgraded cortus application.
tsungta 28:2abbf8463fa8 328
tsungta 28:2abbf8463fa8 329 @return
tsungta 28:2abbf8463fa8 330 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 331 */
tsungta 28:2abbf8463fa8 332 NMI_API sint8 m2m_ota_switch_crt(void)
tsungta 28:2abbf8463fa8 333 {
tsungta 28:2abbf8463fa8 334 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 335 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_SWITCH_CRT_IMG,NULL,0,NULL,0,0);
tsungta 28:2abbf8463fa8 336 return ret;
tsungta 28:2abbf8463fa8 337 }
tsungta 28:2abbf8463fa8 338
tsungta 28:2abbf8463fa8 339 /*!
tsungta 28:2abbf8463fa8 340 @fn \
tsungta 28:2abbf8463fa8 341 NMI_API sint8 m2m_ota_get_firmware_version(tstrM2mRev * pstrRev);
tsungta 28:2abbf8463fa8 342
tsungta 28:2abbf8463fa8 343 @brief
tsungta 28:2abbf8463fa8 344 Get the OTA Firmware version.
tsungta 28:2abbf8463fa8 345
tsungta 28:2abbf8463fa8 346 @return
tsungta 28:2abbf8463fa8 347 The function SHALL return 0 for success and a negative value otherwise.
tsungta 28:2abbf8463fa8 348 */
tsungta 28:2abbf8463fa8 349 NMI_API sint8 m2m_ota_get_firmware_version(tstrM2mRev * pstrRev)
tsungta 28:2abbf8463fa8 350 {
tsungta 28:2abbf8463fa8 351 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 352 ret = hif_chip_wake();
tsungta 28:2abbf8463fa8 353 if(ret == M2M_SUCCESS)
tsungta 28:2abbf8463fa8 354 {
tsungta 28:2abbf8463fa8 355 ret = nm_get_ota_firmware_info(pstrRev);
tsungta 28:2abbf8463fa8 356 hif_chip_sleep();
tsungta 28:2abbf8463fa8 357 }
tsungta 28:2abbf8463fa8 358 return ret;
tsungta 28:2abbf8463fa8 359 }
tsungta 28:2abbf8463fa8 360 #if 0
tsungta 28:2abbf8463fa8 361 #define M2M_OTA_FILE "../../../m2m_ota.dat"
tsungta 28:2abbf8463fa8 362 NMI_API sint8 m2m_ota_test(void)
tsungta 28:2abbf8463fa8 363 {
tsungta 28:2abbf8463fa8 364 uint32 page = 0;
tsungta 28:2abbf8463fa8 365 uint8 buffer[1500];
tsungta 28:2abbf8463fa8 366 uint32 u32Sz = 0;
tsungta 28:2abbf8463fa8 367 sint8 ret = M2M_SUCCESS;
tsungta 28:2abbf8463fa8 368 FILE *fp =NULL;
tsungta 28:2abbf8463fa8 369 fp = fopen(M2M_OTA_FILE,"rb");
tsungta 28:2abbf8463fa8 370 if(fp)
tsungta 28:2abbf8463fa8 371 {
tsungta 28:2abbf8463fa8 372 fseek(fp, 0L, SEEK_END);
tsungta 28:2abbf8463fa8 373 u32Sz = ftell(fp);
tsungta 28:2abbf8463fa8 374 fseek(fp, 0L, SEEK_SET);
tsungta 28:2abbf8463fa8 375
tsungta 28:2abbf8463fa8 376 while(u32Sz > 0)
tsungta 28:2abbf8463fa8 377 {
tsungta 28:2abbf8463fa8 378 {
tsungta 28:2abbf8463fa8 379 page = (rand()%1400);
tsungta 28:2abbf8463fa8 380
tsungta 28:2abbf8463fa8 381 if((page<100)||(page>1400)) page = 1400;
tsungta 28:2abbf8463fa8 382 }
tsungta 28:2abbf8463fa8 383
tsungta 28:2abbf8463fa8 384 if(u32Sz>page)
tsungta 28:2abbf8463fa8 385 {
tsungta 28:2abbf8463fa8 386 u32Sz-=page;
tsungta 28:2abbf8463fa8 387 }
tsungta 28:2abbf8463fa8 388 else
tsungta 28:2abbf8463fa8 389 {
tsungta 28:2abbf8463fa8 390 page = u32Sz;
tsungta 28:2abbf8463fa8 391 u32Sz = 0;
tsungta 28:2abbf8463fa8 392 }
tsungta 28:2abbf8463fa8 393 printf("page %d\n", (int)page);
tsungta 28:2abbf8463fa8 394 fread(buffer,page,1,fp);
tsungta 28:2abbf8463fa8 395 ret = hif_send(M2M_REQ_GROUP_OTA,M2M_OTA_REQ_TEST|M2M_REQ_DATA_PKT,NULL,0,(uint8*)&buffer,page,0);
tsungta 28:2abbf8463fa8 396 if(ret != M2M_SUCCESS)
tsungta 28:2abbf8463fa8 397 {
tsungta 28:2abbf8463fa8 398 M2M_ERR("\n");
tsungta 28:2abbf8463fa8 399 }
tsungta 28:2abbf8463fa8 400 nm_bsp_sleep(1);
tsungta 28:2abbf8463fa8 401 }
tsungta 28:2abbf8463fa8 402
tsungta 28:2abbf8463fa8 403 }
tsungta 28:2abbf8463fa8 404 else
tsungta 28:2abbf8463fa8 405 {
tsungta 28:2abbf8463fa8 406 M2M_ERR("nO err\n");
tsungta 28:2abbf8463fa8 407 }
tsungta 28:2abbf8463fa8 408 return ret;
tsungta 28:2abbf8463fa8 409 }
tsungta 28:2abbf8463fa8 410 #endif
tsungta 28:2abbf8463fa8 411
tsungta 28:2abbf8463fa8 412