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