nan_rsp.cpp revision a3c2c8f1bfcddd50047c8ad29e535a54e99acf62
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: 464af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return 1; 474af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam default: 484af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return 0; 494af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 504af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 514af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 524af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 53a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaikint NanCommand::getNanResponse(transaction_id *id, NanResponseMsg *pRsp) 544af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (mNanVendorEvent == NULL || pRsp == NULL) { 564af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGE("NULL check failed"); 574af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return WIFI_ERROR_INVALID_ARGS; 584af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 604af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanMsgHeader *pHeader = (NanMsgHeader *)mNanVendorEvent; 614af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 624af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam switch (pHeader->msgId) { 634af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_ERROR_RSP: 644af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 654af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanErrorRspMsg pFwRsp = \ 664af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanErrorRspMsg)mNanVendorEvent; 67a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 68a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 694af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 704af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_ERROR; 714af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 724af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 734af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_CONFIGURATION_RSP: 744af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 754af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanConfigurationRspMsg pFwRsp = \ 764af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanConfigurationRspMsg)mNanVendorEvent; 77a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 78a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 794af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 804af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_CONFIG; 814af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 824af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 834af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_PUBLISH_SERVICE_CANCEL_RSP: 844af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 854af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanPublishServiceCancelRspMsg pFwRsp = \ 864af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanPublishServiceCancelRspMsg)mNanVendorEvent; 87a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 88a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 894af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 904af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_PUBLISH_CANCEL; 91a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.publish_response.publish_id = \ 92a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 934af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 944af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 954af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_PUBLISH_SERVICE_RSP: 964af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 974af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanPublishServiceRspMsg pFwRsp = \ 984af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanPublishServiceRspMsg)mNanVendorEvent; 99a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 100a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1014af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 1024af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_PUBLISH; 103a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.publish_response.publish_id = \ 104a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 1054af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1064af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1074af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_SUBSCRIBE_SERVICE_RSP: 1084af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1094af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanSubscribeServiceRspMsg pFwRsp = \ 1104af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanSubscribeServiceRspMsg)mNanVendorEvent; 111a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 112a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1134af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 1144af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_SUBSCRIBE; 115a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.subscribe_response.subscribe_id = \ 116a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 1174af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1184af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1194af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_SUBSCRIBE_SERVICE_CANCEL_RSP: 1204af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1214af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanSubscribeServiceCancelRspMsg pFwRsp = \ 1224af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanSubscribeServiceCancelRspMsg)mNanVendorEvent; 123a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 124a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1254af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 1264af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_SUBSCRIBE_CANCEL; 127a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.subscribe_response.subscribe_id = \ 128a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 1294af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1304af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1314af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_TRANSMIT_FOLLOWUP_RSP: 1324af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1334af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanTransmitFollowupRspMsg pFwRsp = \ 1344af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanTransmitFollowupRspMsg)mNanVendorEvent; 135a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 136a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->status; 1374af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->value; 1384af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_TRANSMIT_FOLLOWUP; 1394af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 1404af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1414af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_STATS_RSP: 1424af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 1434af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanStatsRspMsg pFwRsp = \ 1444af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanStatsRspMsg)mNanVendorEvent; 145a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 146a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->status = (NanStatusType)pFwRsp->statsRspParams.status; 1474af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->value = pFwRsp->statsRspParams.value; 1484af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_STATS; 149a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.stats_response.stats_type = \ 150a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (NanStatsType)pFwRsp->statsRspParams.statsType; 151a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik ALOGI("%s: stats_type:%d",__func__, 152a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.stats_response.stats_type); 1534af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u8 *pInputTlv = pFwRsp->ptlv; 1544af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanTlv outputTlv; 1554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam memset(&outputTlv, 0, sizeof(outputTlv)); 1564af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u16 readLen = 0; 1574af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam int remainingLen = (mNanDataLen - \ 1584af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (sizeof(NanMsgHeader) + sizeof(NanStatsRspParams))); 1594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (remainingLen > 0) { 1604af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam readLen = NANTLV_ReadTlv(pInputTlv, &outputTlv); 1614af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGI("%s: Remaining Len:%d readLen:%d type:%d length:%d", 1624af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam __func__, remainingLen, readLen, outputTlv.type, 1634af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam outputTlv.length); 1644af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (outputTlv.length <= \ 1654af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam sizeof(pRsp->body.stats_response.data)) { 166a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik handleNanStatsResponse(pRsp->body.stats_response.stats_type, 167a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (char *)outputTlv.value, 168a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik &pRsp->body.stats_response); 1694af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1704af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 1714af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam else 1724af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 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 } 2154af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam default: 2164af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return -1; 2174af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 2184af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return 0; 2194af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 2204af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 2214af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamint NanCommand::handleNanResponse() 2224af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 2234af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //parse the data and call 2244af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //the response callback handler with the populated 2254af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //NanResponseMsg 2264af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanResponseMsg rsp_data; 2274af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam int ret; 228a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik transaction_id id; 2294af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 2304af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGV("handleNanResponse called %p", this); 2314af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam memset(&rsp_data, 0, sizeof(rsp_data)); 2324af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //get the rsp_data 233a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik ret = getNanResponse(&id, &rsp_data); 2344af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 2354af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGI("handleNanResponse ret:%d status:%u value:%u response_type:%u", 2364af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ret, rsp_data.status, rsp_data.value, rsp_data.response_type); 2374af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (ret == 0 && (rsp_data.response_type == NAN_RESPONSE_STATS) && 2384af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (mStaParam != NULL) && 239a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (rsp_data.body.stats_response.stats_type == NAN_STATS_ID_DE_TIMING_SYNC)) { 2404af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam /* 2414af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam Fill the staParam with appropriate values and return from here. 2424af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam No need to call NotifyResponse as the request is for getting the 2434af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam STA response 2444af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam */ 2454af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanSyncStats *pSyncStats = &rsp_data.body.stats_response.data.sync_stats; 2464af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->master_rank = pSyncStats->myRank; 2474af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->master_pref = (pSyncStats->myRank & 0xFF00000000000000) >> 56; 2484af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->random_factor = (pSyncStats->myRank & 0x00FF000000000000) >> 48; 2494af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->hop_count = pSyncStats->currAmHopCount; 2504af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->beacon_transmit_time = pSyncStats->currAmBTT; 2514af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 2524af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return ret; 2534af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 2544af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //Call the NotifyResponse Handler 2554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (ret == 0 && mHandler.NotifyResponse) { 256a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (*mHandler.NotifyResponse)(id, &rsp_data); 2574af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 2584af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return ret; 2594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 260a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 261a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaikvoid NanCommand::handleNanStatsResponse(NanStatsType stats_type, 262a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik char *rspBuf, 263a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanStatsResponse *pRsp) 264a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik{ 265a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik if (stats_type == NAN_STATS_ID_DE_PUBLISH) { 266a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanPublishStats publish_stats; 267a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanPublishStats *pPubStats = (FwNanPublishStats *)rspBuf; 268a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 269a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceReqMsgs = 270a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceReqMsgs; 271a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceRspMsgs = 272a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceRspMsgs; 273a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceCancelReqMsgs = 274a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceCancelReqMsgs; 275a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceCancelRspMsgs = 276a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceCancelRspMsgs; 277a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishRepliedIndMsgs = 278a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishRepliedIndMsgs; 279a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishTerminatedIndMsgs = 280a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishTerminatedIndMsgs; 281a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validActiveSubscribes = pPubStats->validActiveSubscribes; 282a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validMatches = pPubStats->validMatches; 283a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validFollowups = pPubStats->validFollowups; 284a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidPublishServiceReqMsgs = 285a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->invalidPublishServiceReqMsgs; 286a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidPublishServiceCancelReqMsgs = 287a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->invalidPublishServiceCancelReqMsgs; 288a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidActiveSubscribes = 289a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->invalidActiveSubscribes; 290a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidMatches = pPubStats->invalidMatches; 291a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidFollowups = pPubStats->invalidFollowups; 292a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.publishCount = pPubStats->publishCount; 293a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.publishNewMatchCount = pPubStats->publishNewMatchCount; 294a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.pubsubGlobalNewMatchCount = 295a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->pubsubGlobalNewMatchCount; 296a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &publish_stats, sizeof(NanPublishStats)); 297a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_SUBSCRIBE) { 298a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanSubscribeStats sub_stats; 299a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanSubscribeStats *pSubStats = (FwNanSubscribeStats *)rspBuf; 300a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 301a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceReqMsgs = 302a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceReqMsgs; 303a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceRspMsgs = 304a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceRspMsgs; 305a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceCancelReqMsgs = 306a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceCancelReqMsgs; 307a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceCancelRspMsgs = 308a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceCancelRspMsgs; 309a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeTerminatedIndMsgs = 310a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeTerminatedIndMsgs; 311a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeMatchIndMsgs = 312a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeMatchIndMsgs; 313a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeUnmatchIndMsgs = 314a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeUnmatchIndMsgs; 315a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSolicitedPublishes = 316a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSolicitedPublishes; 317a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validMatches = pSubStats->validMatches; 318a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validFollowups = pSubStats->validFollowups; 319a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSubscribeServiceReqMsgs = 320a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSubscribeServiceReqMsgs; 321a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSubscribeServiceCancelReqMsgs = 322a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSubscribeServiceCancelReqMsgs; 323a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSubscribeFollowupReqMsgs = 324a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSubscribeFollowupReqMsgs; 325a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSolicitedPublishes = 326a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSolicitedPublishes; 327a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidMatches = pSubStats->invalidMatches; 328a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidFollowups = pSubStats->invalidFollowups; 329a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.subscribeCount = pSubStats->subscribeCount; 330a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.bloomFilterIndex = pSubStats->bloomFilterIndex; 331a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.subscribeNewMatchCount = pSubStats->subscribeNewMatchCount; 332a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.pubsubGlobalNewMatchCount = 333a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->pubsubGlobalNewMatchCount; 334a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &sub_stats, sizeof(NanSubscribeStats)); 335a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_DW) { 336a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanDWStats dw_stats; 337a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanMacStats *pMacStats = (FwNanMacStats *)rspBuf; 338a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 339a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.validFrames = pMacStats->validFrames; 340a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.validActionFrames = pMacStats->validActionFrames; 341a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.validBeaconFrames = pMacStats->validBeaconFrames; 342a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.ignoredActionFrames = pMacStats->ignoredActionFrames; 343a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidFrames = pMacStats->invalidFrames; 344a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidActionFrames = pMacStats->invalidActionFrames; 345a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidBeaconFrames = pMacStats->invalidBeaconFrames; 346a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidMacHeaders = pMacStats->invalidMacHeaders; 347a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidPafHeaders = pMacStats->invalidPafHeaders; 348a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.nonNanBeaconFrames = pMacStats->nonNanBeaconFrames; 349a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.earlyActionFrames = pMacStats->earlyActionFrames; 350a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.inDwActionFrames = pMacStats->inDwActionFrames; 351a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.lateActionFrames = pMacStats->lateActionFrames; 352a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.framesQueued = pMacStats->framesQueued; 353a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.totalTRSpUpdates = pMacStats->totalTRSpUpdates; 354a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.completeByTRSp = pMacStats->completeByTRSp; 355a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.completeByTp75DW = pMacStats->completeByTp75DW; 356a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.completeByTendDW = pMacStats->completeByTendDW; 357a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.lateActionFramesTx = pMacStats->lateActionFramesTx; 358a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &dw_stats, sizeof(NanDWStats)); 359a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_MAC) { 360a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanMacStats mac_stats; 361a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanMacStats *pMacStats = (FwNanMacStats *)rspBuf; 362a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 363a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.validFrames = pMacStats->validFrames; 364a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.validActionFrames = pMacStats->validActionFrames; 365a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.validBeaconFrames = pMacStats->validBeaconFrames; 366a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.ignoredActionFrames = pMacStats->ignoredActionFrames; 367a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidFrames = pMacStats->invalidFrames; 368a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidActionFrames = pMacStats->invalidActionFrames; 369a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidBeaconFrames = pMacStats->invalidBeaconFrames; 370a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidMacHeaders = pMacStats->invalidMacHeaders; 371a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidPafHeaders = pMacStats->invalidPafHeaders; 372a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.nonNanBeaconFrames = pMacStats->nonNanBeaconFrames; 373a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.earlyActionFrames = pMacStats->earlyActionFrames; 374a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.inDwActionFrames = pMacStats->inDwActionFrames; 375a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.lateActionFrames = pMacStats->lateActionFrames; 376a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.framesQueued = pMacStats->framesQueued; 377a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.totalTRSpUpdates = pMacStats->totalTRSpUpdates; 378a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.completeByTRSp = pMacStats->completeByTRSp; 379a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.completeByTp75DW = pMacStats->completeByTp75DW; 380a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.completeByTendDW = pMacStats->completeByTendDW; 381a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.lateActionFramesTx = pMacStats->lateActionFramesTx; 382a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twIncreases = pMacStats->twIncreases; 383a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twDecreases = pMacStats->twDecreases; 384a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twChanges = pMacStats->twChanges; 385a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twHighwater = pMacStats->twHighwater; 386a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.bloomFilterIndex = pMacStats->bloomFilterIndex; 387a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &mac_stats, sizeof(NanMacStats)); 388a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_TIMING_SYNC) { 389a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanSyncStats sync_stats; 390a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanSyncStats *pSyncStats = (FwNanSyncStats *)rspBuf; 391a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 392a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currTsf = pSyncStats->currTsf; 393a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.myRank = pSyncStats->myRank; 394a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currAmRank = pSyncStats->currAmRank; 395a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.lastAmRank = pSyncStats->lastAmRank; 396a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currAmBTT = pSyncStats->currAmBTT; 397a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.lastAmBTT = pSyncStats->lastAmBTT; 398a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currAmHopCount = pSyncStats->currAmHopCount; 399a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currRole = pSyncStats->currRole; 400a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currClusterId = pSyncStats->currClusterId; 401a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 402a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.timeSpentInCurrRole = pSyncStats->timeSpentInCurrRole; 403a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.totalTimeSpentAsMaster = pSyncStats->totalTimeSpentAsMaster; 404a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.totalTimeSpentAsNonMasterSync = 405a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->totalTimeSpentAsNonMasterSync; 406a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.totalTimeSpentAsNonMasterNonSync = 407a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->totalTimeSpentAsNonMasterNonSync; 408a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToAnchorMaster = 409a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToAnchorMaster; 410a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToMaster = 411a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToMaster; 412a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToNonMasterSync = 413a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToNonMasterSync; 414a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToNonMasterNonSync = 415a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToNonMasterNonSync; 416a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateCount = pSyncStats->amrUpdateCount; 417a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateRankChangedCount = 418a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateRankChangedCount; 419a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateBTTChangedCount = 420a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateBTTChangedCount; 421a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateHcChangedCount = 422a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateHcChangedCount; 423a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateNewDeviceCount = 424a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateNewDeviceCount; 425a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrExpireCount = pSyncStats->amrExpireCount; 426a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.mergeCount = pSyncStats->mergeCount; 427a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsAboveHcLimit = pSyncStats->beaconsAboveHcLimit; 428a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsBelowRssiThresh = pSyncStats->beaconsBelowRssiThresh; 429a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsIgnoredNoSpace = pSyncStats->beaconsIgnoredNoSpace; 430a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsForOurCluster = pSyncStats->beaconsForOtherCluster; 431a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsForOtherCluster = pSyncStats->beaconsForOtherCluster; 432a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconCancelRequests = pSyncStats->beaconCancelRequests; 433a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconCancelFailures = pSyncStats->beaconCancelFailures; 434a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconUpdateRequests = pSyncStats->beaconUpdateRequests; 435a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconUpdateFailures = pSyncStats->beaconUpdateFailures; 436a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.syncBeaconTxAttempts = pSyncStats->syncBeaconTxAttempts; 437a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.syncBeaconTxFailures = pSyncStats->syncBeaconTxFailures; 438a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.discBeaconTxAttempts = pSyncStats->discBeaconTxAttempts; 439a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.discBeaconTxFailures = pSyncStats->discBeaconTxFailures; 440a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amHopCountExpireCount = pSyncStats->amHopCountExpireCount; 441a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &sync_stats, sizeof(NanSyncStats)); 442a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE) { 443a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanDeStats de_stats; 444a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanDeStats *pDeStats = (FwNanDeStats *)rspBuf; 445a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 446a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validErrorRspMsgs = pDeStats->validErrorRspMsgs; 447a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTransmitFollowupReqMsgs = 448a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validTransmitFollowupReqMsgs; 449a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTransmitFollowupRspMsgs = 450a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validTransmitFollowupRspMsgs; 451a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validFollowupIndMsgs = 452a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validFollowupIndMsgs; 453a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validConfigurationReqMsgs = 454a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validConfigurationReqMsgs; 455a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validConfigurationRspMsgs = 456a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validConfigurationRspMsgs; 457a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validStatsReqMsgs = pDeStats->validStatsReqMsgs; 458a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validStatsRspMsgs = pDeStats->validStatsRspMsgs; 459a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validEnableReqMsgs = pDeStats->validEnableReqMsgs; 460a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validEnableRspMsgs = pDeStats->validEnableRspMsgs; 461a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validDisableReqMsgs = pDeStats->validDisableReqMsgs; 462a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validDisableRspMsgs = pDeStats->validDisableRspMsgs; 463a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validDisableIndMsgs = pDeStats->validDisableIndMsgs; 464a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validEventIndMsgs = pDeStats->validEventIndMsgs; 465a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTcaReqMsgs = pDeStats->validTcaReqMsgs; 466a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTcaRspMsgs = pDeStats->validTcaRspMsgs; 467a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTcaIndMsgs = pDeStats->validTcaIndMsgs; 468a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidTransmitFollowupReqMsgs = 469a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->invalidTransmitFollowupReqMsgs; 470a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidConfigurationReqMsgs = 471a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->invalidConfigurationReqMsgs; 472a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidStatsReqMsgs = pDeStats->invalidStatsReqMsgs; 473a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidEnableReqMsgs = pDeStats->invalidEnableReqMsgs; 474a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidDisableReqMsgs = pDeStats->invalidDisableReqMsgs; 475a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidTcaReqMsgs = pDeStats->invalidTcaReqMsgs; 476a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &de_stats, sizeof(NanDeStats)); 477a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else { 478a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik ALOGE("Unknown stats_type:%d\n", stats_type); 479a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } 480a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik} 481