nan_rsp.cpp revision a6b0b9af5b45ed417e4298f61073695db7882bb4
14af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam/* 24af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * Copyright (C) 2014 The Android Open Source Project 34af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * 44af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * Licensed under the Apache License, Version 2.0 (the "License"); 54af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * you may not use this file except in compliance with the License. 64af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * You may obtain a copy of the License at 74af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * 84af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * http://www.apache.org/licenses/LICENSE-2.0 94af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * 104af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * Unless required by applicable law or agreed to in writing, software 114af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * distributed under the License is distributed on an "AS IS" BASIS, 124af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * See the License for the specific language governing permissions and 144af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * limitations under the License. 154af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam */ 164af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 174af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include "sync.h" 184af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include <utils/Log.h> 194af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include "wifi_hal.h" 204af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include "nan_i.h" 214af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include "nancommand.h" 224af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 234af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 244af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamint NanCommand::isNanResponse() 254af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 264af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (mNanVendorEvent == NULL) { 274af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGE("NULL check failed"); 284af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return WIFI_ERROR_INVALID_ARGS; 294af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 304af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 314af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanMsgHeader *pHeader = (NanMsgHeader *)mNanVendorEvent; 324af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 334af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam switch (pHeader->msgId) { 344af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_ERROR_RSP: 354af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_CONFIGURATION_RSP: 364af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_PUBLISH_SERVICE_CANCEL_RSP: 374af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_PUBLISH_SERVICE_RSP: 384af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_SUBSCRIBE_SERVICE_RSP: 394af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_SUBSCRIBE_SERVICE_CANCEL_RSP: 404af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_TRANSMIT_FOLLOWUP_RSP: 414af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_STATS_RSP: 424af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_ENABLE_RSP: 434af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_DISABLE_RSP: 444af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_TCA_RSP: 454af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_BEACON_SDF_RSP: 4617ee741489e21713642ac29853da176bbd5c4698Subhani Shaik case NAN_MSG_ID_CAPABILITIES_RSP: 474af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return 1; 484af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam default: 494af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return 0; 504af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 514af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 524af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 534af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 54a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaikint NanCommand::getNanResponse(transaction_id *id, NanResponseMsg *pRsp) 554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 564af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (mNanVendorEvent == NULL || pRsp == NULL) { 574af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGE("NULL check failed"); 584af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return WIFI_ERROR_INVALID_ARGS; 594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 604af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 614af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanMsgHeader *pHeader = (NanMsgHeader *)mNanVendorEvent; 624af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 634af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam switch (pHeader->msgId) { 644af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_ERROR_RSP: 654af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 664af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanErrorRspMsg pFwRsp = \ 674af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanErrorRspMsg)mNanVendorEvent; 68a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 69a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 704af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 714af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_ERROR; 724af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 734af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 744af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_CONFIGURATION_RSP: 754af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 764af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanConfigurationRspMsg pFwRsp = \ 774af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanConfigurationRspMsg)mNanVendorEvent; 78a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 79a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 804af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 814af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_CONFIG; 824af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 834af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 844af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_PUBLISH_SERVICE_CANCEL_RSP: 854af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 864af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanPublishServiceCancelRspMsg pFwRsp = \ 874af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanPublishServiceCancelRspMsg)mNanVendorEvent; 88a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 89a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 904af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 914af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_PUBLISH_CANCEL; 92a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.publish_response.publish_id = \ 93a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 944af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 954af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 964af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_PUBLISH_SERVICE_RSP: 974af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 984af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanPublishServiceRspMsg pFwRsp = \ 994af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanPublishServiceRspMsg)mNanVendorEvent; 100a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 101a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1024af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 1034af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_PUBLISH; 104a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.publish_response.publish_id = \ 105a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 1064af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1074af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1084af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_SUBSCRIBE_SERVICE_RSP: 1094af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1104af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanSubscribeServiceRspMsg pFwRsp = \ 1114af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanSubscribeServiceRspMsg)mNanVendorEvent; 112a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 113a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1144af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 1154af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_SUBSCRIBE; 116a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.subscribe_response.subscribe_id = \ 117a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 1184af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1194af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1204af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_SUBSCRIBE_SERVICE_CANCEL_RSP: 1214af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1224af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanSubscribeServiceCancelRspMsg pFwRsp = \ 1234af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanSubscribeServiceCancelRspMsg)mNanVendorEvent; 124a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 125a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1264af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 1274af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_SUBSCRIBE_CANCEL; 128a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.subscribe_response.subscribe_id = \ 129a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 1304af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1314af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1324af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_TRANSMIT_FOLLOWUP_RSP: 1334af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1344af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanTransmitFollowupRspMsg pFwRsp = \ 1354af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanTransmitFollowupRspMsg)mNanVendorEvent; 136a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 137a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1384af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 1394af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_TRANSMIT_FOLLOWUP; 1404af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1414af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1424af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_STATS_RSP: 1434af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1444af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanStatsRspMsg pFwRsp = \ 1454af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanStatsRspMsg)mNanVendorEvent; 146a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 147a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->statsRspParams.status; 1484af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->statsRspParams.value; 1494af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_STATS; 150a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.stats_response.stats_type = \ 151a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (NanStatsType)pFwRsp->statsRspParams.statsType; 1523ff76888e8710c8d3d7153f3dbc1c9057effa183mukesh agrawal ALOGV("%s: stats_type:%d",__func__, 153a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.stats_response.stats_type); 1544af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u8 *pInputTlv = pFwRsp->ptlv; 1554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanTlv outputTlv; 1564af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam memset(&outputTlv, 0, sizeof(outputTlv)); 1574af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u16 readLen = 0; 1584af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam int remainingLen = (mNanDataLen - \ 1594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (sizeof(NanMsgHeader) + sizeof(NanStatsRspParams))); 1604af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (remainingLen > 0) { 1614af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam readLen = NANTLV_ReadTlv(pInputTlv, &outputTlv); 1623ff76888e8710c8d3d7153f3dbc1c9057effa183mukesh agrawal ALOGV("%s: Remaining Len:%d readLen:%d type:%d length:%d", 1634af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam __func__, remainingLen, readLen, outputTlv.type, 1644af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam outputTlv.length); 1654af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (outputTlv.length <= \ 1664af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam sizeof(pRsp->body.stats_response.data)) { 167a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik handleNanStatsResponse(pRsp->body.stats_response.stats_type, 168a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (char *)outputTlv.value, 169a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik &pRsp->body.stats_response); 1704af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 171ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } else 172ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik ALOGI("%s: No TLV's present",__func__); 1734af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1744af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1754af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_ENABLE_RSP: 1764af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1774af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanEnableRspMsg pFwRsp = \ 1784af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanEnableRspMsg)mNanVendorEvent; 179a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 180a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1814af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 1824af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_ENABLED; 1834af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1844af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1854af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_DISABLE_RSP: 1864af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1874af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanDisableRspMsg pFwRsp = \ 1884af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanDisableRspMsg)mNanVendorEvent; 189a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 190a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1914af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = 0; 1924af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_DISABLED; 1934af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1944af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1954af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_TCA_RSP: 1964af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1974af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanTcaRspMsg pFwRsp = \ 1984af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanTcaRspMsg)mNanVendorEvent; 199a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 200a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 2014af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 2024af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_TCA; 2034af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 2044af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 2054af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_BEACON_SDF_RSP: 2064af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 2074af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanBeaconSdfPayloadRspMsg pFwRsp = \ 2084af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanBeaconSdfPayloadRspMsg)mNanVendorEvent; 209a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 210a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 2114af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = 0; 2124af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_BEACON_SDF_PAYLOAD; 2134af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 2144af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 21517ee741489e21713642ac29853da176bbd5c4698Subhani Shaik case NAN_MSG_ID_CAPABILITIES_RSP: 21617ee741489e21713642ac29853da176bbd5c4698Subhani Shaik { 21717ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pNanCapabilitiesRspMsg pFwRsp = \ 21817ee741489e21713642ac29853da176bbd5c4698Subhani Shaik (pNanCapabilitiesRspMsg)mNanVendorEvent; 21917ee741489e21713642ac29853da176bbd5c4698Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 22017ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 22117ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->value = pFwRsp->value; 22217ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->response_type = NAN_GET_CAPABILITIES; 22317ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_concurrent_nan_clusters = \ 22417ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_concurrent_nan_clusters; 22517ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_publishes = \ 22617ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_publishes; 22717ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_subscribes = \ 22817ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_subscribes; 22917ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_service_name_len = \ 23017ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_service_name_len; 23117ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_match_filter_len = \ 23217ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_match_filter_len; 23317ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_total_match_filter_len = \ 23417ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_total_match_filter_len; 23517ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_service_specific_info_len = \ 23617ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_service_specific_info_len; 23717ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_vsa_data_len = \ 23817ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_vsa_data_len; 23917ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_mesh_data_len = \ 24017ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_mesh_data_len; 24117ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_ndi_interfaces = \ 24217ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_ndi_interfaces; 24317ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_ndp_sessions = \ 24417ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_ndp_sessions; 24517ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_app_info_len = \ 24617ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_app_info_len; 247a6b0b9af5b45ed417e4298f61073695db7882bb4Subhani Shaik pRsp->body.nan_capabilities.max_queued_transmit_followup_msgs = \ 248a6b0b9af5b45ed417e4298f61073695db7882bb4Subhani Shaik pFwRsp->max_queued_transmit_followup_msgs; 24917ee741489e21713642ac29853da176bbd5c4698Subhani Shaik break; 25017ee741489e21713642ac29853da176bbd5c4698Subhani Shaik } 2514af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam default: 2524af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return -1; 2534af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 2544af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return 0; 2554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 2564af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 2574af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamint NanCommand::handleNanResponse() 2584af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 2594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //parse the data and call 2604af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //the response callback handler with the populated 2614af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //NanResponseMsg 2624af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanResponseMsg rsp_data; 2634af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam int ret; 264a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik transaction_id id; 2654af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 2664af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGV("handleNanResponse called %p", this); 2674af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam memset(&rsp_data, 0, sizeof(rsp_data)); 2684af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //get the rsp_data 269a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik ret = getNanResponse(&id, &rsp_data); 2704af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 2714af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGI("handleNanResponse ret:%d status:%u value:%u response_type:%u", 2724af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ret, rsp_data.status, rsp_data.value, rsp_data.response_type); 2734af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (ret == 0 && (rsp_data.response_type == NAN_RESPONSE_STATS) && 2744af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (mStaParam != NULL) && 275a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (rsp_data.body.stats_response.stats_type == NAN_STATS_ID_DE_TIMING_SYNC)) { 2764af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam /* 2774af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam Fill the staParam with appropriate values and return from here. 2784af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam No need to call NotifyResponse as the request is for getting the 2794af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam STA response 2804af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam */ 2814af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanSyncStats *pSyncStats = &rsp_data.body.stats_response.data.sync_stats; 2824af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->master_rank = pSyncStats->myRank; 2834af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->master_pref = (pSyncStats->myRank & 0xFF00000000000000) >> 56; 2844af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->random_factor = (pSyncStats->myRank & 0x00FF000000000000) >> 48; 2854af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->hop_count = pSyncStats->currAmHopCount; 2864af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->beacon_transmit_time = pSyncStats->currAmBTT; 2874af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 2884af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return ret; 2894af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 2904af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //Call the NotifyResponse Handler 2914af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (ret == 0 && mHandler.NotifyResponse) { 292a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (*mHandler.NotifyResponse)(id, &rsp_data); 2934af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 2944af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return ret; 2954af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 296a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 297a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaikvoid NanCommand::handleNanStatsResponse(NanStatsType stats_type, 298a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik char *rspBuf, 299a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanStatsResponse *pRsp) 300a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik{ 301a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik if (stats_type == NAN_STATS_ID_DE_PUBLISH) { 302a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanPublishStats publish_stats; 303a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanPublishStats *pPubStats = (FwNanPublishStats *)rspBuf; 304a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 305a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceReqMsgs = 306a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceReqMsgs; 307a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceRspMsgs = 308a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceRspMsgs; 309a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceCancelReqMsgs = 310a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceCancelReqMsgs; 311a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceCancelRspMsgs = 312a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceCancelRspMsgs; 313a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishRepliedIndMsgs = 314a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishRepliedIndMsgs; 315a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishTerminatedIndMsgs = 316a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishTerminatedIndMsgs; 317a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validActiveSubscribes = pPubStats->validActiveSubscribes; 318a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validMatches = pPubStats->validMatches; 319a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validFollowups = pPubStats->validFollowups; 320a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidPublishServiceReqMsgs = 321a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->invalidPublishServiceReqMsgs; 322a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidPublishServiceCancelReqMsgs = 323a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->invalidPublishServiceCancelReqMsgs; 324a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidActiveSubscribes = 325a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->invalidActiveSubscribes; 326a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidMatches = pPubStats->invalidMatches; 327a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidFollowups = pPubStats->invalidFollowups; 328a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.publishCount = pPubStats->publishCount; 329a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.publishNewMatchCount = pPubStats->publishNewMatchCount; 330a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.pubsubGlobalNewMatchCount = 331a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->pubsubGlobalNewMatchCount; 332a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &publish_stats, sizeof(NanPublishStats)); 333a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_SUBSCRIBE) { 334a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanSubscribeStats sub_stats; 335a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanSubscribeStats *pSubStats = (FwNanSubscribeStats *)rspBuf; 336a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 337a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceReqMsgs = 338a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceReqMsgs; 339a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceRspMsgs = 340a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceRspMsgs; 341a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceCancelReqMsgs = 342a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceCancelReqMsgs; 343a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceCancelRspMsgs = 344a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceCancelRspMsgs; 345a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeTerminatedIndMsgs = 346a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeTerminatedIndMsgs; 347a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeMatchIndMsgs = 348a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeMatchIndMsgs; 349a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeUnmatchIndMsgs = 350a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeUnmatchIndMsgs; 351a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSolicitedPublishes = 352a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSolicitedPublishes; 353a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validMatches = pSubStats->validMatches; 354a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validFollowups = pSubStats->validFollowups; 355a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSubscribeServiceReqMsgs = 356a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSubscribeServiceReqMsgs; 357a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSubscribeServiceCancelReqMsgs = 358a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSubscribeServiceCancelReqMsgs; 359a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSubscribeFollowupReqMsgs = 360a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSubscribeFollowupReqMsgs; 361a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSolicitedPublishes = 362a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSolicitedPublishes; 363a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidMatches = pSubStats->invalidMatches; 364a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidFollowups = pSubStats->invalidFollowups; 365a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.subscribeCount = pSubStats->subscribeCount; 366a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.bloomFilterIndex = pSubStats->bloomFilterIndex; 367a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.subscribeNewMatchCount = pSubStats->subscribeNewMatchCount; 368a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.pubsubGlobalNewMatchCount = 369a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->pubsubGlobalNewMatchCount; 370a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &sub_stats, sizeof(NanSubscribeStats)); 371a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_DW) { 372a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanDWStats dw_stats; 373a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanMacStats *pMacStats = (FwNanMacStats *)rspBuf; 374a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 375a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.validFrames = pMacStats->validFrames; 376a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.validActionFrames = pMacStats->validActionFrames; 377a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.validBeaconFrames = pMacStats->validBeaconFrames; 378a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.ignoredActionFrames = pMacStats->ignoredActionFrames; 379a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidFrames = pMacStats->invalidFrames; 380a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidActionFrames = pMacStats->invalidActionFrames; 381a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidBeaconFrames = pMacStats->invalidBeaconFrames; 382a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidMacHeaders = pMacStats->invalidMacHeaders; 383a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidPafHeaders = pMacStats->invalidPafHeaders; 384a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.nonNanBeaconFrames = pMacStats->nonNanBeaconFrames; 385a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.earlyActionFrames = pMacStats->earlyActionFrames; 386a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.inDwActionFrames = pMacStats->inDwActionFrames; 387a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.lateActionFrames = pMacStats->lateActionFrames; 388a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.framesQueued = pMacStats->framesQueued; 389a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.totalTRSpUpdates = pMacStats->totalTRSpUpdates; 390a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.completeByTRSp = pMacStats->completeByTRSp; 391a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.completeByTp75DW = pMacStats->completeByTp75DW; 392a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.completeByTendDW = pMacStats->completeByTendDW; 393a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.lateActionFramesTx = pMacStats->lateActionFramesTx; 394a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &dw_stats, sizeof(NanDWStats)); 395a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_MAC) { 396a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanMacStats mac_stats; 397a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanMacStats *pMacStats = (FwNanMacStats *)rspBuf; 398a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 399a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.validFrames = pMacStats->validFrames; 400a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.validActionFrames = pMacStats->validActionFrames; 401a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.validBeaconFrames = pMacStats->validBeaconFrames; 402a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.ignoredActionFrames = pMacStats->ignoredActionFrames; 403a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidFrames = pMacStats->invalidFrames; 404a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidActionFrames = pMacStats->invalidActionFrames; 405a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidBeaconFrames = pMacStats->invalidBeaconFrames; 406a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidMacHeaders = pMacStats->invalidMacHeaders; 407a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidPafHeaders = pMacStats->invalidPafHeaders; 408a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.nonNanBeaconFrames = pMacStats->nonNanBeaconFrames; 409a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.earlyActionFrames = pMacStats->earlyActionFrames; 410a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.inDwActionFrames = pMacStats->inDwActionFrames; 411a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.lateActionFrames = pMacStats->lateActionFrames; 412a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.framesQueued = pMacStats->framesQueued; 413a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.totalTRSpUpdates = pMacStats->totalTRSpUpdates; 414a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.completeByTRSp = pMacStats->completeByTRSp; 415a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.completeByTp75DW = pMacStats->completeByTp75DW; 416a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.completeByTendDW = pMacStats->completeByTendDW; 417a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.lateActionFramesTx = pMacStats->lateActionFramesTx; 418a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twIncreases = pMacStats->twIncreases; 419a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twDecreases = pMacStats->twDecreases; 420a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twChanges = pMacStats->twChanges; 421a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twHighwater = pMacStats->twHighwater; 422a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.bloomFilterIndex = pMacStats->bloomFilterIndex; 423a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &mac_stats, sizeof(NanMacStats)); 424a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_TIMING_SYNC) { 425a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanSyncStats sync_stats; 426a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanSyncStats *pSyncStats = (FwNanSyncStats *)rspBuf; 427a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 428a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currTsf = pSyncStats->currTsf; 429a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.myRank = pSyncStats->myRank; 430a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currAmRank = pSyncStats->currAmRank; 431a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.lastAmRank = pSyncStats->lastAmRank; 432a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currAmBTT = pSyncStats->currAmBTT; 433a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.lastAmBTT = pSyncStats->lastAmBTT; 434a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currAmHopCount = pSyncStats->currAmHopCount; 435a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currRole = pSyncStats->currRole; 436a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currClusterId = pSyncStats->currClusterId; 437a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 438a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.timeSpentInCurrRole = pSyncStats->timeSpentInCurrRole; 439a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.totalTimeSpentAsMaster = pSyncStats->totalTimeSpentAsMaster; 440a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.totalTimeSpentAsNonMasterSync = 441a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->totalTimeSpentAsNonMasterSync; 442a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.totalTimeSpentAsNonMasterNonSync = 443a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->totalTimeSpentAsNonMasterNonSync; 444a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToAnchorMaster = 445a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToAnchorMaster; 446a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToMaster = 447a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToMaster; 448a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToNonMasterSync = 449a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToNonMasterSync; 450a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToNonMasterNonSync = 451a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToNonMasterNonSync; 452a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateCount = pSyncStats->amrUpdateCount; 453a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateRankChangedCount = 454a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateRankChangedCount; 455a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateBTTChangedCount = 456a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateBTTChangedCount; 457a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateHcChangedCount = 458a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateHcChangedCount; 459a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateNewDeviceCount = 460a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateNewDeviceCount; 461a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrExpireCount = pSyncStats->amrExpireCount; 462a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.mergeCount = pSyncStats->mergeCount; 463a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsAboveHcLimit = pSyncStats->beaconsAboveHcLimit; 464a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsBelowRssiThresh = pSyncStats->beaconsBelowRssiThresh; 465a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsIgnoredNoSpace = pSyncStats->beaconsIgnoredNoSpace; 466a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsForOurCluster = pSyncStats->beaconsForOtherCluster; 467a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsForOtherCluster = pSyncStats->beaconsForOtherCluster; 468a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconCancelRequests = pSyncStats->beaconCancelRequests; 469a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconCancelFailures = pSyncStats->beaconCancelFailures; 470a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconUpdateRequests = pSyncStats->beaconUpdateRequests; 471a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconUpdateFailures = pSyncStats->beaconUpdateFailures; 472a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.syncBeaconTxAttempts = pSyncStats->syncBeaconTxAttempts; 473a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.syncBeaconTxFailures = pSyncStats->syncBeaconTxFailures; 474a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.discBeaconTxAttempts = pSyncStats->discBeaconTxAttempts; 475a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.discBeaconTxFailures = pSyncStats->discBeaconTxFailures; 476a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amHopCountExpireCount = pSyncStats->amHopCountExpireCount; 477a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &sync_stats, sizeof(NanSyncStats)); 478a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE) { 479a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanDeStats de_stats; 480a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanDeStats *pDeStats = (FwNanDeStats *)rspBuf; 481a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 482a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validErrorRspMsgs = pDeStats->validErrorRspMsgs; 483a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTransmitFollowupReqMsgs = 484a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validTransmitFollowupReqMsgs; 485a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTransmitFollowupRspMsgs = 486a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validTransmitFollowupRspMsgs; 487a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validFollowupIndMsgs = 488a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validFollowupIndMsgs; 489a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validConfigurationReqMsgs = 490a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validConfigurationReqMsgs; 491a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validConfigurationRspMsgs = 492a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validConfigurationRspMsgs; 493a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validStatsReqMsgs = pDeStats->validStatsReqMsgs; 494a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validStatsRspMsgs = pDeStats->validStatsRspMsgs; 495a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validEnableReqMsgs = pDeStats->validEnableReqMsgs; 496a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validEnableRspMsgs = pDeStats->validEnableRspMsgs; 497a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validDisableReqMsgs = pDeStats->validDisableReqMsgs; 498a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validDisableRspMsgs = pDeStats->validDisableRspMsgs; 499a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validDisableIndMsgs = pDeStats->validDisableIndMsgs; 500a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validEventIndMsgs = pDeStats->validEventIndMsgs; 501a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTcaReqMsgs = pDeStats->validTcaReqMsgs; 502a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTcaRspMsgs = pDeStats->validTcaRspMsgs; 503a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTcaIndMsgs = pDeStats->validTcaIndMsgs; 504a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidTransmitFollowupReqMsgs = 505a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->invalidTransmitFollowupReqMsgs; 506a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidConfigurationReqMsgs = 507a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->invalidConfigurationReqMsgs; 508a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidStatsReqMsgs = pDeStats->invalidStatsReqMsgs; 509a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidEnableReqMsgs = pDeStats->invalidEnableReqMsgs; 510a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidDisableReqMsgs = pDeStats->invalidDisableReqMsgs; 511a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidTcaReqMsgs = pDeStats->invalidTcaReqMsgs; 512a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &de_stats, sizeof(NanDeStats)); 513a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else { 514a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik ALOGE("Unknown stats_type:%d\n", stats_type); 515a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } 516a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik} 517ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik 518ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaikint NanCommand::handleNdpResponse(NanResponseType ndpCmdType, 519ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik struct nlattr **tb_vendor) 520ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik{ 521ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik //parse the data and call 522ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik //the response callback handler with the populated 523ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik //NanResponseMsg 524ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik NanResponseMsg rsp_data; 525ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik transaction_id id; 526ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik 527ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik memset(&rsp_data, 0, sizeof(rsp_data)); 528ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik 529ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik if ((!tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID]) || 530ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik (!tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_DRV_RESPONSE_STATUS_TYPE]) || 531ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik (!tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE])) 532ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik { 533ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik ALOGE("%s: QCA_WLAN_VENDOR_ATTR_NDP not found", __FUNCTION__); 534ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik return WIFI_ERROR_INVALID_ARGS; 535ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } 536ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik 537ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik id = nla_get_u16(tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID]); 538ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik ALOGD("%s: Transaction id : val %d", __FUNCTION__, id); 539ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik rsp_data.status = 540ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik (NanStatusType)nla_get_u32(tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_DRV_RESPONSE_STATUS_TYPE]); 541ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik ALOGD("%s: Status : %d", __FUNCTION__, rsp_data.status); 542ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik rsp_data.value = 543ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik nla_get_u32(tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE]); 544ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik ALOGD("%s: Value : %d", __FUNCTION__, rsp_data.value); 545ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik rsp_data.response_type = ndpCmdType; 546ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik if (ndpCmdType == NAN_DP_INITIATOR_RESPONSE) 547ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik { 548ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik if (!tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID]) 549ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik { 550ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik ALOGE("%s: QCA_WLAN_VENDOR_ATTR_NDP not found", __FUNCTION__); 551ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik return WIFI_ERROR_INVALID_ARGS; 552ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } 553ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik rsp_data.body.data_request_response.ndp_instance_id = 554ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik nla_get_u32(tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID]); 555ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } 556ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik //Call the NotifyResponse Handler 557ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik if (mHandler.NotifyResponse) { 558ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik (*mHandler.NotifyResponse)(id, &rsp_data); 559ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } 560ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik return WIFI_SUCCESS; 561ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik} 562