Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: G_functions/fPtr_func.cpp
- Revision:
- 5:d3b320ebd469
- Parent:
- 4:5af740da0a59
- Child:
- 6:778b081f6a13
--- a/G_functions/fPtr_func.cpp Mon Feb 23 21:10:13 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,755 +0,0 @@
-/*
- * - CC31xx/CC32xx Host Driver Implementation
- *
- * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 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.
- *
- * Neither the name of Texas Instruments Incorporated 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
- * OWNER 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.
- *
-*/
-
-#include "cc3100_simplelink.h"
-
-#include "cc3100.h"
-#include "fPtr_func.h"
-
-
-using namespace mbed_cc3100;
-
-cc3100_driver *_driver;
-cc3100_nonos *_nonos;
-cc3100_netapp *_netapp;
-cc3100 *_cc3100_;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*!
- \brief This function handles ping report events
-
- \param[in] pPingReport holds the ping report statistics
-
- \return None
-
- \note
-
- \warning
-*/
-void SimpleLinkPingReport(SlPingReport_t *pPingReport)
-{
- _cc3100_->SET_STATUS_BIT(g_Status, STATUS_BIT_PING_DONE);
-
- if(pPingReport == NULL)
- printf(" [PING REPORT] NULL Pointer Error\r\n");
-
- g_PingPacketsRecv = pPingReport->PacketsReceived;
-}
-
-
-/*******************************************************************************/
-/* _sl_HandleAsync_Accept */
-/*******************************************************************************/
-void _sl_HandleAsync_Accept(void *pVoidBuf)
-{
- _SocketAddrResponse_u *pMsgArgs = (_SocketAddrResponse_u *)_SL_RESP_ARGS_START(pVoidBuf);
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjLock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE, NON_OS_LOCK_OBJ_LOCK_VALUE, SL_OS_WAIT_FOREVER));
-
- VERIFY_PROTOCOL(( pMsgArgs->IpV4.sd & BSD_SOCKET_ID_MASK) <= SL_MAX_SOCKETS);
- VERIFY_SOCKET_CB(NULL != g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs);
-
- memcpy(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs, pMsgArgs,sizeof(_SocketAddrResponse_u));
- OSI_RET_OK_CHECK(_nonos->sl_SyncObjSignal(&g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].SyncObj, NON_OS_SYNC_OBJ_SIGNAL_VALUE));
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjUnlock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE));
- return;
-}
-
-/*******************************************************************************/
-/* _sl_HandleAsync_Connect */
-/*******************************************************************************/
-void _sl_HandleAsync_Connect(void *pVoidBuf)
-{
- _SocketResponse_t *pMsgArgs = (_SocketResponse_t *)_SL_RESP_ARGS_START(pVoidBuf);
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjLock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE, NON_OS_LOCK_OBJ_LOCK_VALUE, SL_OS_WAIT_FOREVER));
-
- VERIFY_PROTOCOL((pMsgArgs->sd & BSD_SOCKET_ID_MASK) <= SL_MAX_SOCKETS);
- VERIFY_SOCKET_CB(NULL != g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs);
-
- ((_SocketResponse_t *)(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs))->sd = pMsgArgs->sd;
- ((_SocketResponse_t *)(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs))->statusOrLen = pMsgArgs->statusOrLen;
-
- OSI_RET_OK_CHECK(_nonos->sl_SyncObjSignal(&g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].SyncObj, NON_OS_SYNC_OBJ_SIGNAL_VALUE));
- OSI_RET_OK_CHECK(_nonos->sl_LockObjUnlock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE));
- return;
-}
-
-/*******************************************************************************/
-/* _sl_HandleAsync_Select */
-/*******************************************************************************/
-void _sl_HandleAsync_Select(void *pVoidBuf)
-{
- _SelectAsyncResponse_t *pMsgArgs = (_SelectAsyncResponse_t *)_SL_RESP_ARGS_START(pVoidBuf);
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjLock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE, NON_OS_LOCK_OBJ_LOCK_VALUE, SL_OS_WAIT_FOREVER));
-
- VERIFY_SOCKET_CB(NULL != g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs);
-
- memcpy(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs, pMsgArgs, sizeof(_SelectAsyncResponse_t));
- OSI_RET_OK_CHECK(_nonos->sl_SyncObjSignal(&g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].SyncObj, NON_OS_SYNC_OBJ_SIGNAL_VALUE));
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjUnlock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE));
- return;
-}
-
-/******************************************************************************/
-/* _sl_HandleAsync_DnsGetHostByName */
-/******************************************************************************/
-void _sl_HandleAsync_DnsGetHostByName(void *pVoidBuf)
-{
- _GetHostByNameIPv4AsyncResponse_t *pMsgArgs = (_GetHostByNameIPv4AsyncResponse_t *)_SL_RESP_ARGS_START(pVoidBuf);
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjLock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE, NON_OS_LOCK_OBJ_LOCK_VALUE, SL_OS_WAIT_FOREVER));
-
- VERIFY_SOCKET_CB(NULL != g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs);
-
- /*IPv6 */
- if(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].AdditionalData & SL_NETAPP_FAMILY_MASK) {
- memcpy(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs, pMsgArgs, sizeof(_GetHostByNameIPv6AsyncResponse_t));
- }
- /*IPv4 */
- else {
- memcpy(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs, pMsgArgs, sizeof(_GetHostByNameIPv4AsyncResponse_t));
- }
- OSI_RET_OK_CHECK(_nonos->sl_SyncObjSignal(&g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].SyncObj, NON_OS_SYNC_OBJ_SIGNAL_VALUE));
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjUnlock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE));
- return;
-}
-
-/******************************************************************************/
-
-/******************************************************************************
- _sl_HandleAsync_DnsGetHostByService
-
- CALLER NWP - Async event on sl_DnsGetHostByService with IPv4 Family
-
-
- DESCRIPTION:
-
- Async event on sl_DnsGetHostByService command with IPv4 Family.
- Return service attributes like IP address, port and text according to service name.
- The user sets a service name Full/Part (see example below), and should get the:
- 1. IP of the service
- 2. The port of service.
- 3. The text of service.
-
- Hence it can make a connection to the specific service and use it.
- It is similar to get host by name method.
-
- It is done by a single shot query with PTR type on the service name.
-
-
-
- Note:
- 1. The return's attributes are belonged to first service that is found.
- It can be other services with the same service name will response to
- the query. The results of these responses are saved in the peer cache of the NWP, and
- should be read by another API.
-
-
- PARAMETERS:
-
- pVoidBuf - is point to opcode of the event.
- it contains the outputs that are given to the user
-
- outputs description:
-
- 1.out_pAddr[] - output: Contain the IP address of the service.
- 2.out_pPort - output: Contain the port of the service.
- 3.inout_TextLen - Input: Contain the max length of the text that the user wants to get.
- it means that if the test of service is bigger that its value than
- the text is cut to inout_TextLen value.
- Output: Contain the length of the text that is returned. Can be full text or part
- of the text (see above).
-
- 4.out_pText - Contain the text of the service (full or part see above- inout_TextLen description).
-
- *
-
-
- RETURNS: success or fail.
-
-******************************************************************************/
-void _sl_HandleAsync_DnsGetHostByService(void *pVoidBuf)
-{
- _GetHostByServiceAsyncResponse_t* Res;
- uint16_t TextLen;
- uint16_t UserTextLen;
-
- /*pVoidBuf - is point to opcode of the event.*/
-
- /*set pMsgArgs to point to the attribute of the event.*/
- _GetHostByServiceIPv4AsyncResponse_t *pMsgArgs = (_GetHostByServiceIPv4AsyncResponse_t *)_SL_RESP_ARGS_START(pVoidBuf);
-
- VERIFY_SOCKET_CB(NULL != g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs);
-
- /*IPv6*/
- if(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].AdditionalData & SL_NETAPP_FAMILY_MASK) {
- return;
- }
- /*IPv4*/
- else {
- /*************************************************************************************************
-
- 1. Copy the attribute part of the evnt to the attribute part of the response
- memcpy(g_pCB->GetHostByServiceCB.pAsyncRsp, pMsgArgs, sizeof(_GetHostByServiceIPv4AsyncResponse_t));
-
- set to TextLen the text length of the service.*/
- TextLen = pMsgArgs->TextLen;
-
- /*Res pointed to mDNS global object struct */
- Res = (_GetHostByServiceAsyncResponse_t*)g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs;
-
-
-
- /*It is 4 bytes so we avoid from memcpy*/
- Res->out_pAddr[0] = pMsgArgs->Address;
- Res->out_pPort[0] = pMsgArgs->Port;
- Res->Status = pMsgArgs->Status;
-
- /*set to TextLen the text length of the user (input fromthe user).*/
- UserTextLen = Res->inout_TextLen[0];
-
- /*Cut the service text if the user requested for smaller text.*/
- UserTextLen = (TextLen <= UserTextLen) ? TextLen : UserTextLen;
- Res->inout_TextLen[0] = UserTextLen ;
-
- /**************************************************************************************************
-
- 2. Copy the payload part of the evnt (the text) to the payload part of the response
- the lenght of the copy is according to the text length in the attribute part. */
-
-
- memcpy(Res->out_pText ,
- (int8_t *)(& pMsgArgs[1]), /* & pMsgArgs[1] -> 1st byte after the fixed header = 1st byte of variable text.*/
- UserTextLen);
-
-
- /**************************************************************************************************/
-
- OSI_RET_OK_CHECK(_nonos->sl_SyncObjSignal(&g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].SyncObj, NON_OS_SYNC_OBJ_SIGNAL_VALUE));
- return;
- }
-}
-
-/*****************************************************************************/
-/* _sl_HandleAsync_PingResponse */
-/*****************************************************************************/
-void _sl_HandleAsync_PingResponse(void *pVoidBuf)
-{
- _PingReportResponse_t *pMsgArgs = (_PingReportResponse_t *)_SL_RESP_ARGS_START(pVoidBuf);
- SlPingReport_t pingReport;
-
- if(pPingCallBackFunc) {
- _netapp->CopyPingResultsToReport(pMsgArgs,&pingReport);
- pPingCallBackFunc(&pingReport);
- } else {
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjLock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE,NON_OS_LOCK_OBJ_LOCK_VALUE, SL_OS_WAIT_FOREVER));
- VERIFY_SOCKET_CB(NULL != g_pCB->PingCB.PingAsync.pAsyncRsp);
-
- if (NULL != g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs) {
- memcpy(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs, pMsgArgs, sizeof(_PingReportResponse_t));
- OSI_RET_OK_CHECK(_nonos->sl_SyncObjSignal(&g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].SyncObj, NON_OS_SYNC_OBJ_SIGNAL_VALUE));
- }
- OSI_RET_OK_CHECK(_nonos->sl_LockObjUnlock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE));
- }
- return;
-}
-
-/* ******************************************************************************/
-/* _SlDrvMsgReadSpawnCtx */
-/* ******************************************************************************/
-_SlReturnVal_t _SlDrvMsgReadSpawnCtx(void *pValue)
-{
-
-#ifdef SL_POLLING_MODE_USED
- int16_t retCode = OSI_OK;
- /* for polling based systems */
- do {
- retCode = sl_LockObjLock(&g_pCB->GlobalLockObj, 0);
- if ( OSI_OK != retCode ) {
- if (TRUE == g_pCB->IsCmdRespWaited) {
- OSI_RET_OK_CHECK( sl_SyncObjSignal(&g_pCB->CmdSyncObj) );
- return SL_RET_CODE_OK;
- }
- }
-
- } while (OSI_OK != retCode);
-
-#else
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjLock(&g_pCB->GlobalLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE, NON_OS_LOCK_OBJ_LOCK_VALUE, SL_OS_WAIT_FOREVER) );
-
-#endif
-
- g_pCB->FunctionParams.AsyncExt.pAsyncBuf = NULL;/* buffer must be allocated by _SlDrvMsgRead */
- g_pCB->FunctionParams.AsyncExt.AsyncEvtHandler= NULL;
- g_pCB->FunctionParams.AsyncExt.RxMsgClass = CMD_RESP_CLASS;/* init to illegal value and verify it's overwritten with the valid one */
-
- /* Messages might have been read by CmdResp context. Therefore after */
- /* getting LockObj, check again where the Pending Rx Msg is still present. */
- if(FALSE == (_driver->_SL_PENDING_RX_MSG(g_pCB))) {
- OSI_RET_OK_CHECK(_nonos->sl_LockObjUnlock(&g_pCB->GlobalLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE));
- return SL_RET_CODE_OK;
- }
-
- VERIFY_RET_OK(_driver->_SlDrvMsgRead());
-
- g_pCB->RxDoneCnt++;
-
- switch(g_pCB->FunctionParams.AsyncExt.RxMsgClass) {
- case ASYNC_EVT_CLASS:
- /* If got here and protected by LockObj a message is waiting */
- /* to be read */
- VERIFY_PROTOCOL(NULL != g_pCB->FunctionParams.AsyncExt.pAsyncBuf);
-
- _driver->_SlAsyncEventGenericHandler();
-
-#if (SL_MEMORY_MGMT == SL_MEMORY_MGMT_STATIC)
- g_pCB->FunctionParams.AsyncExt.pAsyncBuf = NULL;
-#else
- free(g_pCB->FunctionParams.AsyncExt.pAsyncBuf);
-#endif
- break;
- case DUMMY_MSG_CLASS:
- case RECV_RESP_CLASS:
- /* These types are legal in this context. Do nothing */
- break;
- case CMD_RESP_CLASS:
- /* Command response is illegal in this context. */
- /* No 'break' here: Assert! */
- default:
- VERIFY_PROTOCOL(0);
- }
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjUnlock(&g_pCB->GlobalLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE));
-
- return(SL_RET_CODE_OK);
-
-}
-
-/***************************************************************************
-_sl_HandleAsync_Stop - handles stop signalling to
-a waiting object
-****************************************************************************/
-void _sl_HandleAsync_Stop(void *pVoidBuf)
-{
- _BasicResponse_t *pMsgArgs = (_BasicResponse_t *)_SL_RESP_ARGS_START(pVoidBuf);
-
- VERIFY_SOCKET_CB(NULL != g_pCB->StopCB.pAsyncRsp);
-
- OSI_RET_OK_CHECK(_nonos->sl_LockObjLock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE,NON_OS_LOCK_OBJ_LOCK_VALUE, SL_OS_WAIT_FOREVER));
-
- memcpy(g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].pRespArgs, pMsgArgs, sizeof(_BasicResponse_t));
- OSI_RET_OK_CHECK(_nonos->sl_SyncObjSignal(&g_pCB->ObjPool[g_pCB->FunctionParams.AsyncExt.ActionIndex].SyncObj, NON_OS_SYNC_OBJ_SIGNAL_VALUE));
- OSI_RET_OK_CHECK(_nonos->sl_LockObjUnlock(&g_pCB->ProtectionLockObj, NON_OS_LOCK_OBJ_UNLOCK_VALUE));
- return;
-}
-
-/******************************************************************************
-_SlDrvDeviceEventHandler - handles internally device async events
-******************************************************************************/
-void _SlDrvDeviceEventHandler(void *pArgs)
-{
- _SlResponseHeader_t *pHdr = (_SlResponseHeader_t *)pArgs;
-
- switch(pHdr->GenHeader.Opcode) {
- case SL_OPCODE_DEVICE_INITCOMPLETE:
- _cc3100_->_sl_HandleAsync_InitComplete(pHdr);
-
- break;
- case SL_OPCODE_DEVICE_STOP_ASYNC_RESPONSE:
- _sl_HandleAsync_Stop(pHdr);
-
- break;
- case SL_OPCODE_DEVICE_DEVICEASYNCFATALERROR:
-#ifdef sl_GeneralEvtHdlr
- {
- _BasicResponse_t *pMsgArgs = (_BasicResponse_t *)_SL_RESP_ARGS_START(pHdr);
- SlDeviceEvent_t devHandler;
- devHandler.Event = SL_DEVICE_FATAL_ERROR_EVENT;
- devHandler.EventData.deviceEvent.status = pMsgArgs->status & 0xFF;
- devHandler.EventData.deviceEvent.sender = (SlErrorSender_e)((pMsgArgs->status >> 8) & 0xFF);
- SimpleLinkGeneralEventHandler(&devHandler);
- }
-#endif
- break;
- default:
- //SL_ERROR_TRACE2(MSG_306, "ASSERT: _SlDrvDeviceEventHandler : invalid opcode = 0x%x = %i", pHdr->GenHeader.Opcode, pHdr->GenHeader.Opcode);
- printf("ASSERT: _SlDrvDeviceEventHandler : invalid opcode = 0x%x = %i", pHdr->GenHeader.Opcode, pHdr->GenHeader.Opcode);
- VERIFY_PROTOCOL(0);
- }
-}
-
-/*****************************************************************************/
-/* _SlDrvNetAppEventHandler */
-/*****************************************************************************/
-void _SlDrvNetAppEventHandler(void *pArgs)
-{
- _SlResponseHeader_t *pHdr = (_SlResponseHeader_t *)pArgs;
-#ifdef sl_HttpServerCallback
- SlHttpServerEvent_t httpServerEvent;
- SlHttpServerResponse_t httpServerResponse;
-#endif
- switch(pHdr->GenHeader.Opcode) {
- case SL_OPCODE_NETAPP_DNSGETHOSTBYNAMEASYNCRESPONSE:
- case SL_OPCODE_NETAPP_DNSGETHOSTBYNAMEASYNCRESPONSE_V6:
- _sl_HandleAsync_DnsGetHostByName(pArgs);
- break;
- case SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICEASYNCRESPONSE:
- case SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICEASYNCRESPONSE_V6:
- _sl_HandleAsync_DnsGetHostByService(pArgs);
- break;
- case SL_OPCODE_NETAPP_PINGREPORTREQUESTRESPONSE:
- _sl_HandleAsync_PingResponse(pArgs);
- break;
- case SL_OPCODE_NETAPP_HTTPGETTOKENVALUE: {
-#ifdef sl_HttpServerCallback
- uint8_t *pTokenName;
- slHttpServerData_t Token_value;
- sl_NetAppHttpServerGetToken_t *httpGetToken = (sl_NetAppHttpServerGetToken_t *)_SL_RESP_ARGS_START(pHdr);
- pTokenName = (uint8_t *)((sl_NetAppHttpServerGetToken_t *)httpGetToken + 1);
-
- httpServerResponse.Response = SL_NETAPP_HTTPSETTOKENVALUE;
- httpServerResponse.ResponseData.token_value.len = MAX_TOKEN_VALUE_LEN;
- httpServerResponse.ResponseData.token_value.data = (uint8_t *)_SL_RESP_ARGS_START(pHdr) + MAX_TOKEN_NAME_LEN; //Reuse the async buffer for getting the token value response from the user
-
- httpServerEvent.Event = SL_NETAPP_HTTPGETTOKENVALUE_EVENT;
- httpServerEvent.EventData.httpTokenName.len = httpGetToken->token_name_len;
- httpServerEvent.EventData.httpTokenName.data = pTokenName;
-
- Token_value.token_name = pTokenName;
-
- SimpleLinkHttpServerCallback(&httpServerEvent, &httpServerResponse);
-
- Token_value.value_len = httpServerResponse.ResponseData.token_value.len;
- Token_value.name_len = httpServerEvent.EventData.httpTokenName.len;
-
- Token_value.token_value = httpServerResponse.ResponseData.token_value.data;
-
-
- _netapp->sl_NetAppSendTokenValue(&Token_value);
-#endif
- }
- break;
-
- case SL_OPCODE_NETAPP_HTTPPOSTTOKENVALUE: {
-#ifdef sl_HttpServerCallback
- uint8_t *pPostParams;
-
- sl_NetAppHttpServerPostToken_t *httpPostTokenArgs = (sl_NetAppHttpServerPostToken_t *)_SL_RESP_ARGS_START(pHdr);
- pPostParams = (uint8_t *)((sl_NetAppHttpServerPostToken_t *)httpPostTokenArgs + 1);
-
- httpServerEvent.Event = SL_NETAPP_HTTPPOSTTOKENVALUE_EVENT;
-
- httpServerEvent.EventData.httpPostData.action.len = httpPostTokenArgs->post_action_len;
- httpServerEvent.EventData.httpPostData.action.data = pPostParams;
- pPostParams+=httpPostTokenArgs->post_action_len;
-
- httpServerEvent.EventData.httpPostData.token_name.len = httpPostTokenArgs->token_name_len;
- httpServerEvent.EventData.httpPostData.token_name.data = pPostParams;
- pPostParams+=httpPostTokenArgs->token_name_len;
-
- httpServerEvent.EventData.httpPostData.token_value.len = httpPostTokenArgs->token_value_len;
- httpServerEvent.EventData.httpPostData.token_value.data = pPostParams;
-
- httpServerResponse.Response = SL_NETAPP_RESPONSE_NONE;
-
-
- SimpleLinkHttpServerCallback(&httpServerEvent, &httpServerResponse);
-#endif
- }
- break;
- default:
- SL_ERROR_TRACE2(MSG_305, "ASSERT: _SlDrvNetAppEventHandler : invalid opcode = 0x%x = %i", pHdr->GenHeader.Opcode, pHdr->GenHeader.Opcode);
- VERIFY_PROTOCOL(0);
- }
-}
-
-/*
- * ASYNCHRONOUS EVENT HANDLERS -- Start
- */
-
-/*!
- \brief This function handles WLAN events
-
- \param[in] pWlanEvent is the event passed to the handler
-
- \return None
-
- \note
-
- \warning
-*/
-#if (defined(sl_WlanEvtHdlr))
-void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent)
-{
- unsigned char g_ucConnectionSSID[32+1]; //Connection SSID
- unsigned char g_ucConnectionBSSID[6]; //Connection BSSID
-
- if(pWlanEvent == NULL)
- printf(" [WLAN EVENT] NULL Pointer Error \n\r");
-
- switch(pWlanEvent->Event) {
- case SL_WLAN_CONNECT_EVENT: {
- _cc3100_->SET_STATUS_BIT(g_Status, STATUS_BIT_CONNECTION);
-
- // Copy new connection SSID and BSSID to global parameters
- memcpy(g_ucConnectionSSID,pWlanEvent->EventData.
- STAandP2PModeWlanConnected.ssid_name,
- pWlanEvent->EventData.STAandP2PModeWlanConnected.ssid_len);
- memcpy(g_ucConnectionBSSID,
- pWlanEvent->EventData.STAandP2PModeWlanConnected.bssid,
- SL_BSSID_LENGTH);
-
- printf("[WLAN EVENT] STA Connected to the AP: %s ,"
- "BSSID: %x:%x:%x:%x:%x:%x\n\r",
- g_ucConnectionSSID,g_ucConnectionBSSID[0],
- g_ucConnectionBSSID[1],g_ucConnectionBSSID[2],
- g_ucConnectionBSSID[3],g_ucConnectionBSSID[4],
- g_ucConnectionBSSID[5]);
- /*
- * Information about the connected AP (like name, MAC etc) will be
- * available in 'slWlanConnectAsyncResponse_t' - Applications
- * can use it if required
- *
- * slWlanConnectAsyncResponse_t *pEventData = NULL;
- * pEventData = &pWlanEvent->EventData.STAandP2PModeWlanConnected;
- *
- */
- }
- break;
-
- case SL_WLAN_DISCONNECT_EVENT: {
- slWlanConnectAsyncResponse_t* pEventData = NULL;
-
- _cc3100_->CLR_STATUS_BIT(g_Status, STATUS_BIT_CONNECTION);
- _cc3100_->CLR_STATUS_BIT(g_Status, STATUS_BIT_IP_ACQUIRED);
-
- pEventData = &pWlanEvent->EventData.STAandP2PModeDisconnected;
-
- /* If the user has initiated 'Disconnect' request, 'reason_code' is SL_USER_INITIATED_DISCONNECTION */
- if(SL_USER_INITIATED_DISCONNECTION == pEventData->reason_code) {
- printf("[WLAN EVENT]Device disconnected from the AP: %s,"
- "BSSID: %x:%x:%x:%x:%x:%x on application's request \n\r",
- g_ucConnectionSSID,g_ucConnectionBSSID[0],
- g_ucConnectionBSSID[1],g_ucConnectionBSSID[2],
- g_ucConnectionBSSID[3],g_ucConnectionBSSID[4],
- g_ucConnectionBSSID[5]);
- } else {
- printf("[WLAN ERROR]Device disconnected from the AP AP: %s,"
- "BSSID: %x:%x:%x:%x:%x:%x on an ERROR..!! \n\r",
- g_ucConnectionSSID,g_ucConnectionBSSID[0],
- g_ucConnectionBSSID[1],g_ucConnectionBSSID[2],
- g_ucConnectionBSSID[3],g_ucConnectionBSSID[4],
- g_ucConnectionBSSID[5]);
- }
- memset(g_ucConnectionSSID,0,sizeof(g_ucConnectionSSID));
- memset(g_ucConnectionBSSID,0,sizeof(g_ucConnectionBSSID));
- }
- break;
-
- case SL_WLAN_STA_CONNECTED_EVENT: {
- _cc3100_->SET_STATUS_BIT(g_Status, STATUS_BIT_STA_CONNECTED);
- }
- break;
-
- case SL_WLAN_STA_DISCONNECTED_EVENT: {
- _cc3100_->CLR_STATUS_BIT(g_Status, STATUS_BIT_STA_CONNECTED);
- _cc3100_->CLR_STATUS_BIT(g_Status, STATUS_BIT_IP_LEASED);
- }
- break;
-
- default: {
- printf("[WLAN EVENT] Unexpected event [0x%x]\n\r",pWlanEvent->Event);
- }
- break;
- }
-}
-#endif
-
-/*!
- \brief This function handles events for IP address acquisition via DHCP
- indication
-
- \param[in] pNetAppEvent is the event passed to the handler
-
- \return None
-
- \note
-
- \warning
-*/
-#if (defined(sl_NetAppEvtHdlr))
-void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent)
-{
-
- if(pNetAppEvent == NULL){
- printf(" [NETAPP EVENT] NULL Pointer Error \n\r");
- }
-
- switch(pNetAppEvent->Event) {
- case SL_NETAPP_IPV4_IPACQUIRED_EVENT: {
- SlIpV4AcquiredAsync_t *pEventData = NULL;
- _cc3100_->SET_STATUS_BIT(g_Status, STATUS_BIT_IP_ACQUIRED);
- pEventData = &pNetAppEvent->EventData.ipAcquiredV4;
- g_GatewayIP = pEventData->gateway;
-
- printf("[NETAPP EVENT] IP Acquired: IP=%d.%d.%d.%d , ""Gateway=%d.%d.%d.%d\n\r",
- _cc3100_->_netcfg.SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip,3),
- _cc3100_->_netcfg.SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip,2),
- _cc3100_->_netcfg.SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip,1),
- _cc3100_->_netcfg.SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip,0),
- _cc3100_->_netcfg.SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway,3),
- _cc3100_->_netcfg.SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway,2),
- _cc3100_->_netcfg.SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway,1),
- _cc3100_->_netcfg.SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway,0));
-
- }
- break;
-
- case SL_NETAPP_IP_LEASED_EVENT: {
- g_StationIP = pNetAppEvent->EventData.ipLeased.ip_address;
- _cc3100_->SET_STATUS_BIT(g_Status, STATUS_BIT_IP_LEASED);
-
- }
- break;
-
- default: {
- printf("[NETAPP EVENT] Unexpected event [0x%x] \n\r",pNetAppEvent->Event);
- }
- break;
- }
-}
-#endif
-
-/*!
- \brief This function handles socket events indication
-
- \param[in] pSock is the event passed to the handler
-
- \return None
-*/
-#if (defined(sl_SockEvtHdlr))
-void SimpleLinkSockEventHandler(SlSockEvent_t *pSock)
-{
- if(pSock == NULL)
- printf(" [SOCK EVENT] NULL Pointer Error \n\r");
-
- switch( pSock->Event )
- {
- case SL_SOCKET_TX_FAILED_EVENT:
- /*
- * TX Failed
- *
- * Information about the socket descriptor and status will be
- * available in 'SlSockEventData_t' - Applications can use it if
- * required
- *
- * SlSockEventData_t *pEventData = NULL;
- * pEventData = & pSock->EventData;
- */
- switch( pSock->EventData.status )
- {
- case SL_ECLOSE:
- printf(" [SOCK EVENT] Close socket operation, failed to transmit all queued packets\n\r");
- break;
- default:
- printf("[SOCK ERROR] - TX FAILED : socket %d , reason""(%d) \n\n", pSock->EventData.sd, pSock->EventData.status);
- break;
- }
- break;
-
- default:
- printf("[SOCK EVENT] - Unexpected Event [%x0x]\n\n",pSock->Event);
- break;
- }
-}
-#endif
-
-/*!
- \brief This function handles callback for the HTTP server events
-
- \param[in] pHttpEvent - Contains the relevant event information
- \param[in] pHttpResponse - Should be filled by the user with the
- relevant response information
-
- \return None
-
- \note
-
- \warning
-*/
-#if (defined(sl_HttpServerCallback))
-void SimpleLinkHttpServerCallback(SlHttpServerEvent_t *pHttpEvent, SlHttpServerResponse_t *pHttpResponse)
-{
- /*
- * This application doesn't work with HTTP server - Hence these
- * events are not handled here
- */
- printf(" [HTTP EVENT] Unexpected event \n\r");
-}
-#endif
-/*!
- \brief This function handles general error events indication
-
- \param[in] pDevEvent is the event passed to the handler
-
- \return None
-*/
-#if (defined(sl_GeneralEvtHdlr))
-void SimpleLinkGeneralEventHandler(SlDeviceEvent_t *pDevEvent)
-{
- /*
- * Most of the general errors are not FATAL are are to be handled
- * appropriately by the application
- */
- printf("[GENERAL EVENT] - ID=[%d] Sender=[%d]\n\n", pDevEvent->EventData.deviceEvent.status, pDevEvent->EventData.deviceEvent.sender);
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-//}//namespace