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: 4768f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik case NAN_MSG_ID_TESTMODE_RSP: 484af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return 1; 494af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam default: 504af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return 0; 514af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 524af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 534af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 549e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaikstruct verboseTlv { 559e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanTlvType tlvType; 569e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik char strTlv[NAN_ERROR_STR_LEN]; 579e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik}; 589e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 599e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaikstruct verboseTlv tlvToStr[] = { 609e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_SDF_MATCH_FILTER, " SDF match filter"}, 619e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_TX_MATCH_FILTER, " Tx match filter"}, 629e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_RX_MATCH_FILTER, " Rx match filter"}, 639e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_SERVICE_SPECIFIC_INFO, 649e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Service specific info"}, 659e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_EXT_SERVICE_SPECIFIC_INFO, 669e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Extended Service specific info"}, 679e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_TRANSMIT, 689e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Vendor specific attribute transmit"}, 699e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_RECEIVE, 709e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Vendor specific attribute receive"}, 719e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_RECEIVE, 729e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Post Nan connectivity capability receive"}, 739e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_RECEIVE, 749e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Post Nan discovery attribute receive"}, 759e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_BEACON_SDF_PAYLOAD_RECEIVE, 769e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Beacon SDF payload receive"}, 779e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 789e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik /* Configuration types */ 799e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_CONFIG_FIRST, " Config first"}, 809e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_24G_SUPPORT, " 2.4G support"}, 819e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_24G_BEACON, " 2.4G beacon"}, 829e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_24G_SDF, " 2.4G SDF"}, 839e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_24G_RSSI_CLOSE, " 2.4G RSSI close"}, 849e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_24G_RSSI_MIDDLE, " 2.4G RSSI middle"}, 859e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_24G_RSSI_CLOSE_PROXIMITY, 869e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " 2.4G RSSI close proximity"}, 879e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_5G_SUPPORT, " 5G support"}, 889e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_5G_BEACON, " 5G beacon"}, 899e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_5G_SDF, " 5G SDF"}, 909e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_5G_RSSI_CLOSE, " 5G RSSI close"}, 919e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_5G_RSSI_MIDDLE, " 5G RSSI middle"}, 929e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_5G_RSSI_CLOSE_PROXIMITY, 939e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " 5G RSSI close proximity"}, 949e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_SID_BEACON, " SID beacon"}, 959e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_HOP_COUNT_LIMIT, " Hop count limit"}, 969e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_MASTER_PREFERENCE, " Master preference"}, 979e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_CLUSTER_ID_LOW, " Cluster ID low"}, 989e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_CLUSTER_ID_HIGH, " Cluster ID high"}, 999e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_RSSI_AVERAGING_WINDOW_SIZE, 1009e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " RSSI averaging window size"}, 1019e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_CLUSTER_OUI_NETWORK_ID, 1029e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Cluster OUI network ID"}, 1039e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_SOURCE_MAC_ADDRESS, 1049e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Source MAC address"}, 1059e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_CLUSTER_ATTRIBUTE_IN_SDF, 1069e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Cluster attribute in SDF"}, 1079e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_SOCIAL_CHANNEL_SCAN_PARAMS, 1089e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Social channel scan params"}, 1099e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_DEBUGGING_FLAGS, " Debugging flags"}, 1109e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_TRANSMIT, 1119e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Post nan connectivity capabilities transmit"}, 1129e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_TRANSMIT, 1139e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Post nan discovery attribute transmit"}, 1149e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_FURTHER_AVAILABILITY_MAP, 1159e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Further availability map"}, 1169e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_HOP_COUNT_FORCE, " Hop count force"}, 1179e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_RANDOM_FACTOR_FORCE, 1189e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Random factor force"}, 1199e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_RANDOM_UPDATE_TIME, 1209e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Random update time"}, 1219e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_EARLY_WAKEUP, " Early wakeup"}, 1229e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_PERIODIC_SCAN_INTERVAL, 1239e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Periodic scan interval"}, 1249e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_DW_INTERVAL, " DW interval"}, 1259e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_DB_INTERVAL, " DB interval"}, 1269e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_FURTHER_AVAILABILITY, 1279e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Further availability"}, 1289e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_24G_CHANNEL, " 2.4G channel"}, 1299e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_5G_CHANNEL, " 5G channel"}, 1309e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_CONFIG_LAST, " Config last"}, 1319e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 1329e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik /* Attributes types */ 1339e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_ATTRS_FIRST, " Attributes first"}, 1349e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_AVAILABILITY_INTERVALS_MAP, 1359e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Availability intervals map"}, 1369e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_WLAN_MESH_ID, " WLAN mesh ID"}, 1379e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_MAC_ADDRESS, " MAC address"}, 1389e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_RECEIVED_RSSI_VALUE, 1399e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Received RSSI value"}, 1409e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_CLUSTER_ATTRIBUTE, 1419e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Cluster attribute"}, 1429e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_WLAN_INFRA_SSID, " WLAN infra SSID"}, 1439e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_ATTRS_LAST, " Attributes last"}, 1449e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 1459e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik /* Events Type */ 1469e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_EVENTS_FIRST, " Events first"}, 1479e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_EVENT_SELF_STATION_MAC_ADDRESS, 1489e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Event Self station MAC address"}, 1499e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_EVENT_STARTED_CLUSTER, 1509e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Event started cluster"}, 1519e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_EVENT_JOINED_CLUSTER, 1529e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Event joined cluster"}, 1539e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_EVENT_CLUSTER_SCAN_RESULTS, 1549e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Event cluster scan results"}, 1559e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_FAW_MEM_AVAIL, 1569e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " FAW memory availability"}, 1579e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_EVENTS_LAST, " Events last"}, 1589e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 1599e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik /* TCA types */ 1609e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_TCA_FIRST, " TCA-Threshold Crossing Alert first"}, 1619e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_CLUSTER_SIZE_REQ, 1629e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Cluster size request"}, 1639e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_CLUSTER_SIZE_RSP, 1649e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Cluster size response"}, 1659e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_TCA_LAST, " TCA last"}, 1669e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 1679e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik /* Statistics types */ 1689e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_STATS_FIRST, " Stats first"}, 1699e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_DE_PUBLISH_STATS, 1709e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Discovery engine publish stats"}, 1719e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_DE_SUBSCRIBE_STATS, 1729e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Discovery engine subscribe stats"}, 1739e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_DE_MAC_STATS, 1749e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Discovery engine MAC stats"}, 1759e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_DE_TIMING_SYNC_STATS, 1769e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Discovery engine timing sync stats"}, 1779e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_DE_DW_STATS, 1789e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik " Discovery engine DW stats"}, 1799e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_DE_STATS, " Discovery engine stats"}, 1809e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_STATS_LAST, " Stats last"}, 1819e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 1829e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_TLV_TYPE_LAST, " Last"} 1839e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik}; 1849e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 1859e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaikstruct errorCode { 1869e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanStatusType frameworkError; 1879e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanInternalStatusType firmwareError; 1889e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik char nan_error[NAN_ERROR_STR_LEN]; 1899e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik}; 1909e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 1919e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaikstruct errorCode errorCodeTranslation[] = { 1929e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_SUCCESS, NAN_I_STATUS_SUCCESS, 1939e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "NAN status success"}, 1949e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 1959e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INTERNAL_FAILURE, NAN_I_STATUS_DE_FAILURE, 1969e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "NAN Discovery engine failure"}, 1979e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 1989e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PUBLISH_SUBSCRIBE_ID, NAN_I_STATUS_INVALID_HANDLE, 1999e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid Publish/Subscribe ID"}, 2009e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 2019e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_NO_RESOURCE_AVAILABLE, NAN_I_STATUS_NO_SPACE_AVAILABLE, 2029e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "No space available"}, 2039e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 2049e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_PUBLISH_TYPE, 2059e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid Publish type, can be 0 or 1"}, 2069e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_TX_TYPE, 2079e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid Tx type"}, 2089e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_MSG_VERSION, 2099e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid internal message version"}, 2109e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_MSG_LEN, 2119e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid message length"}, 2129e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_MSG_ID, 2139e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid message ID"}, 2149e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_MATCH_ALGORITHM, 2159e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid matching algorithm, can be 0(match once), 1(match continuous) or 2(match never)"}, 2169e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_TLV_LEN, 2179e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid TLV length"}, 2189e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_TLV_TYPE, 2199e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid TLV type"}, 2209e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_MISSING_TLV_TYPE, 2219e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Missing TLV type"}, 2229e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_TOTAL_TLVS_LEN, 2239e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid total TLV length"}, 2249e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_TLV_VALUE, 2259e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid TLV value"}, 2269e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_TX_PRIORITY, 2279e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid Tx priority"}, 2289e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_CONNECTION_MAP, 2299e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid connection map"}, 2309e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_THRESHOLD_CROSSING_ALERT_ID, 2319e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid TCA-Threshold Crossing Alert ID"}, 2329e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_STATS_ID, 2339e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid STATS ID"}, 2349e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 2359e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_PROTOCOL_FAILURE, NAN_I_STATUS_TX_FAIL, 2369e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Tx Fail"}, 2379e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 2389e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_RSSI_CLOSE_VALUE, 2399e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid RSSI close value range is 20dbm to 60dbm"}, 2409e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_RSSI_MIDDLE_VALUE, 2419e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid RSSI middle value range is 20dbm to 75dbm"}, 2429e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_HOP_COUNT_LIMIT, 2439e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid hop count limit, max hop count limit is 5"}, 2449e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_HIGH_CLUSTER_ID_VALUE, 2459e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid cluster ID value. Please set the cluster id high greater than the cluster id low"}, 2469e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_BACKGROUND_SCAN_PERIOD, 2479e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid background scan period. The range is 10 to 30 milliseconds"}, 2489e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_SCAN_CHANNEL, 2499e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid scan channel. Only valid channels are the NAN social channels"}, 2509e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_POST_NAN_CONNECTIVITY_CAPABILITIES_BITMAP, 2519e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid post nan connectivity bitmap"}, 2529e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_NUMCHAN_VALUE, 2539e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid further availability map number of channel value"}, 2549e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_DURATION_VALUE, 2559e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid further availability map duration value"}, 2569e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CLASS_VALUE, 2579e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid further availability map class value"}, 2589e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CHANNEL_VALUE, 2599e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid further availability map channel value"}, 2609e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_AVAILABILITY_INTERVAL_BITMAP_VALUE, 2619e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid further availability map availability interval bitmap value"}, 2629e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_MAP_ID, 2639e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid further availability map map ID"}, 2649e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_CONN_TYPE_VALUE, 2659e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid post nan discovery connection type value"}, 2669e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_DEVICE_ROLE_VALUE, 2679e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid post nan discovery device role value"}, 2689e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_DURATION_VALUE, 2699e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid post nan discovery duration value"}, 2709e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_BITMAP_VALUE, 2719e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid post nan discovery bitmap value"}, 2729e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_MISSING_FUTHER_AVAILABILITY_MAP, 2739e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Missing further availability map"}, 2749e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_BAND_CONFIG_FLAGS, 2759e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid band configuration flags"}, 2769e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_RANDOM_FACTOR_UPDATE_TIME_VALUE, 2779e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid random factor update time value"}, 2789e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_ONGOING_SCAN_PERIOD, 2799e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid ongoing scan period"}, 2809e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_DW_INTERVAL_VALUE, 2819e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid DW interval value"}, 2829e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NAN_I_STATUS_INVALID_DB_INTERVAL_VALUE, 2839e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid DB interval value"}, 2849e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 2859e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_SUCCESS, NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_TIMEOUT, 2869e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Terminated Reason: Timeout"}, 2879e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_SUCCESS, NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_USER_REQUEST, 2889e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Terminated Reason: User Request"}, 2899e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_SUCCESS, NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_COUNT_REACHED, 2909e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Terminated Reason: Count Reached"}, 2919e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 2929e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_REQUESTOR_INSTANCE_ID, NAN_I_STATUS_INVALID_REQUESTER_INSTANCE_ID, 2939e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid match handle"}, 2949e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_NAN_NOT_ALLOWED, NAN_I_STATUS_NAN_NOT_ALLOWED, 2959e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Nan not allowed"}, 2969e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_NO_OTA_ACK, NAN_I_STATUS_NO_OTA_ACK, 2979e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "No OTA ack"}, 2989e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_ALREADY_ENABLED, NAN_I_STATUS_NAN_ALREADY_ENABLED, 2999e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "NAN is Already enabled"}, 3009e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_FOLLOWUP_QUEUE_FULL, NAN_I_STATUS_FOLLOWUP_QUEUE_FULL, 3019e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Follow-up queue full"}, 3029e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3039e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_UNSUPPORTED_CONCURRENCY_NAN_DISABLED, NDP_I_UNSUPPORTED_CONCURRENCY, 3049e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Unsupported Concurrency"}, 3059e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3069e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INTERNAL_FAILURE, NDP_I_NAN_DATA_IFACE_CREATE_FAILED, 3079e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "NAN data interface create failed"}, 3089e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INTERNAL_FAILURE, NDP_I_NAN_DATA_IFACE_DELETE_FAILED, 3099e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "NAN data interface delete failed"}, 3109e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INTERNAL_FAILURE, NDP_I_DATA_INITIATOR_REQUEST_FAILED, 3119e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "NAN data initiator request failed"}, 3129e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INTERNAL_FAILURE, NDP_I_DATA_RESPONDER_REQUEST_FAILED, 3139e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "NAN data responder request failed"}, 3149e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3159e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_NDP_ID, NDP_I_INVALID_NDP_INSTANCE_ID, 3169e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid NDP instance ID"}, 3179e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3189e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NDP_I_INVALID_RESPONSE_CODE, 3199e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid response code"}, 3209e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INVALID_PARAM, NDP_I_INVALID_APP_INFO_LEN, 3219e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Invalid app info length"}, 3229e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3239e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_PROTOCOL_FAILURE, NDP_I_MGMT_FRAME_REQUEST_FAILED, 3249e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Management frame request failed"}, 3259e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_PROTOCOL_FAILURE, NDP_I_MGMT_FRAME_RESPONSE_FAILED, 3269e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Management frame response failed"}, 3279e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_PROTOCOL_FAILURE, NDP_I_MGMT_FRAME_CONFIRM_FAILED, 3289e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Management frame confirm failed"}, 3299e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3309e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INTERNAL_FAILURE, NDP_I_END_FAILED, 3319e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "NDP end failed"}, 3329e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3339e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_PROTOCOL_FAILURE, NDP_I_MGMT_FRAME_END_REQUEST_FAILED, 3349e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Management frame end request failed"}, 3359e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3369e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik {NAN_STATUS_INTERNAL_FAILURE, NDP_I_VENDOR_SPECIFIC_ERROR, 3379e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik "Vendor specific error"} 3389e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik}; 3399e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3409e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaikvoid NanCommand::NanErrorTranslation(NanInternalStatusType firmwareErrorRecvd, 3419e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik u32 valueRcvd, 3429e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik void* pResponse) 3439e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik{ 344fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik int i = 0, j = 0; 3459e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik u16 msg_id; /* Based on the message_id in the header determine the Indication type */ 3469e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanResponseMsg *pRsp; 3479e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanPublishTerminatedInd* pRspInd; 3489e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanDisabledInd* pRspdInd; 349fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik char tlvInfo[NAN_ERROR_STR_LEN]; 3509e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3519e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik if (isNanResponse()) { 3529e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik pRsp = (NanResponseMsg*)pResponse; 3539e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik for (i = 0; i < (int)(sizeof(errorCodeTranslation)/ sizeof(errorCode)); i++) { 354fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik if (errorCodeTranslation[i].firmwareError == firmwareErrorRecvd) { 355fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik pRsp->status = errorCodeTranslation[i].frameworkError; 356fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik strlcpy(pRsp->nan_error, errorCodeTranslation[i].nan_error, NAN_ERROR_STR_LEN); 357fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik if (NAN_I_STATUS_INVALID_TLV_TYPE == firmwareErrorRecvd) { 358fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik for (j = 0; j < (int)(sizeof(tlvToStr)/sizeof(verboseTlv)); j++) { 359fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik if (tlvToStr[j].tlvType == valueRcvd) { 360fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik strlcpy(tlvInfo, tlvToStr[i].strTlv, NAN_ERROR_STR_LEN); 361fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik break; 362fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik } 363fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik } 3649e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 365fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik strlcat(pRsp->nan_error, tlvInfo, sizeof(pRsp->nan_error)); 366fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik break; 367fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik } 3689e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 3699e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik if (i == (int)(sizeof(errorCodeTranslation)/sizeof(errorCode))) { 3709e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik pRsp->status = NAN_STATUS_INTERNAL_FAILURE; 3719e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik strlcpy(pRsp->nan_error, "NAN Discovery engine failure", NAN_ERROR_STR_LEN); 3729e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 373fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik ALOGD("%s: Status: %d Error Info[value %d]: %s", __FUNCTION__, pRsp->status, valueRcvd, pRsp->nan_error); 3749e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } else { 3759e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik msg_id = getIndicationType(); 3769e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 3779e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik switch(msg_id) { 3789e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik case NAN_INDICATION_PUBLISH_TERMINATED: 3799e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik case NAN_INDICATION_SUBSCRIBE_TERMINATED: 3809e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik case NAN_INDICATION_SELF_TRANSMIT_FOLLOWUP: 3819e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik pRspInd = (NanPublishTerminatedInd*)pResponse; 3829e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik for (i = 0; i < (int)(sizeof(errorCodeTranslation)/ sizeof(errorCode)); i++) { 3839e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik if (errorCodeTranslation[i].firmwareError == firmwareErrorRecvd) { 3849e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik pRspInd->reason = errorCodeTranslation[i].frameworkError; 3859e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik strlcpy(pRspInd->nan_reason, errorCodeTranslation[i].nan_error, NAN_ERROR_STR_LEN); 3869e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik break; 3879e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 3889e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 3899e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik if (i == (int)(sizeof(errorCodeTranslation)/sizeof(errorCode))) { 3909e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik pRspInd->reason = NAN_STATUS_INTERNAL_FAILURE; 3919e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik strlcpy(pRspInd->nan_reason, "NAN Discovery engine failure", NAN_ERROR_STR_LEN); 3929e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 393fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik ALOGD("%s: Status: %d Error Info[value %d]: %s", __FUNCTION__, pRspInd->reason, valueRcvd, pRspInd->nan_reason); 3949e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik break; 3959e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik case NAN_INDICATION_DISABLED: 3969e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik pRspdInd = (NanDisabledInd*)pResponse; 3979e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik for (i = 0; i < (int)(sizeof(errorCodeTranslation)/ sizeof(errorCode)); i++) { 3989e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik if (errorCodeTranslation[i].firmwareError == firmwareErrorRecvd) { 3999e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik pRspdInd->reason = errorCodeTranslation[i].frameworkError; 4009e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik strlcpy(pRspdInd->nan_reason, errorCodeTranslation[i].nan_error, NAN_ERROR_STR_LEN); 4019e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik break; 4029e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 4039e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 4049e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik if (i == (int)(sizeof(errorCodeTranslation)/sizeof(errorCode))) { 4059e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik pRspdInd->reason = NAN_STATUS_INTERNAL_FAILURE; 4069e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik strlcpy(pRspdInd->nan_reason, "NAN Discovery engine failure", NAN_ERROR_STR_LEN); 4079e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 408fa2853e01eb9884a1965f7746811e2eed60a00f2Subhani Shaik ALOGD("%s: Status: %d Error Info[value %d]: %s", __FUNCTION__, pRspdInd->reason, valueRcvd, pRspdInd->nan_reason); 4099e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik break; 4109e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 4119e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik } 4129e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik} 4134af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 414a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaikint NanCommand::getNanResponse(transaction_id *id, NanResponseMsg *pRsp) 4154af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 4164af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (mNanVendorEvent == NULL || pRsp == NULL) { 4174af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGE("NULL check failed"); 4184af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return WIFI_ERROR_INVALID_ARGS; 4194af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 4204af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 4214af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanMsgHeader *pHeader = (NanMsgHeader *)mNanVendorEvent; 4224af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 4234af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam switch (pHeader->msgId) { 4244af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_ERROR_RSP: 4254af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 4264af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanErrorRspMsg pFwRsp = \ 4274af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanErrorRspMsg)mNanVendorEvent; 428a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 4299e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 4304af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_ERROR; 4314af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 4324af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 4334af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_CONFIGURATION_RSP: 4344af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 4354af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanConfigurationRspMsg pFwRsp = \ 4364af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanConfigurationRspMsg)mNanVendorEvent; 437a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 4389e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 4394af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_CONFIG; 4404af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 4414af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 4424af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_PUBLISH_SERVICE_CANCEL_RSP: 4434af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 4444af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanPublishServiceCancelRspMsg pFwRsp = \ 4454af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanPublishServiceCancelRspMsg)mNanVendorEvent; 446a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 4479e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 4484af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_PUBLISH_CANCEL; 449a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.publish_response.publish_id = \ 450a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 4514af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 4524af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 4534af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_PUBLISH_SERVICE_RSP: 4544af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 4554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanPublishServiceRspMsg pFwRsp = \ 4564af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanPublishServiceRspMsg)mNanVendorEvent; 457a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 4589e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 4594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_PUBLISH; 460a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.publish_response.publish_id = \ 461a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 4624af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 4634af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 4644af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_SUBSCRIBE_SERVICE_RSP: 4654af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 4664af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanSubscribeServiceRspMsg pFwRsp = \ 4674af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanSubscribeServiceRspMsg)mNanVendorEvent; 468a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 4699e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 4704af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_SUBSCRIBE; 471a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.subscribe_response.subscribe_id = \ 472a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 4734af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 4744af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 4754af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_SUBSCRIBE_SERVICE_CANCEL_RSP: 4764af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 4774af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanSubscribeServiceCancelRspMsg pFwRsp = \ 4784af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanSubscribeServiceCancelRspMsg)mNanVendorEvent; 479a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 4809e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 4814af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_SUBSCRIBE_CANCEL; 482a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.subscribe_response.subscribe_id = \ 483a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pFwRsp->fwHeader.handle; 4844af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 4854af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 4864af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_TRANSMIT_FOLLOWUP_RSP: 4874af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 4884af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanTransmitFollowupRspMsg pFwRsp = \ 4894af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanTransmitFollowupRspMsg)mNanVendorEvent; 490a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 4919e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 4924af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_TRANSMIT_FOLLOWUP; 4934af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 4944af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 4954af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_STATS_RSP: 4964af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 4974af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanStatsRspMsg pFwRsp = \ 4984af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanStatsRspMsg)mNanVendorEvent; 499a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 5009e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->statsRspParams.status, 5019e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik pFwRsp->statsRspParams.value, pRsp); 5024af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_STATS; 503a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.stats_response.stats_type = \ 504a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (NanStatsType)pFwRsp->statsRspParams.statsType; 5053ff76888e8710c8d3d7153f3dbc1c9057effa183mukesh agrawal ALOGV("%s: stats_type:%d",__func__, 506a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pRsp->body.stats_response.stats_type); 5074af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u8 *pInputTlv = pFwRsp->ptlv; 5084af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanTlv outputTlv; 5094af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam memset(&outputTlv, 0, sizeof(outputTlv)); 5104af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u16 readLen = 0; 5114af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam int remainingLen = (mNanDataLen - \ 5124af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (sizeof(NanMsgHeader) + sizeof(NanStatsRspParams))); 5134af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (remainingLen > 0) { 5144af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam readLen = NANTLV_ReadTlv(pInputTlv, &outputTlv); 5153ff76888e8710c8d3d7153f3dbc1c9057effa183mukesh agrawal ALOGV("%s: Remaining Len:%d readLen:%d type:%d length:%d", 5164af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam __func__, remainingLen, readLen, outputTlv.type, 5174af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam outputTlv.length); 5184af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (outputTlv.length <= \ 5194af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam sizeof(pRsp->body.stats_response.data)) { 520a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik handleNanStatsResponse(pRsp->body.stats_response.stats_type, 521a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (char *)outputTlv.value, 5222268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki &pRsp->body.stats_response, 5232268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki outputTlv.length); 5244af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 525ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } else 5269e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik ALOGV("%s: No TLV's present",__func__); 5274af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 5284af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 5294af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_ENABLE_RSP: 5304af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 5314af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanEnableRspMsg pFwRsp = \ 5324af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanEnableRspMsg)mNanVendorEvent; 533a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 5349e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 5354af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_ENABLED; 5364af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 5374af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 5384af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_DISABLE_RSP: 5394af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 5404af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanDisableRspMsg pFwRsp = \ 5414af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanDisableRspMsg)mNanVendorEvent; 542a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 5439e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, 0, pRsp); 5444af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_DISABLED; 5454af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 5464af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 5474af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_TCA_RSP: 5484af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 5494af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanTcaRspMsg pFwRsp = \ 5504af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanTcaRspMsg)mNanVendorEvent; 551a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 5529e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 5534af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_TCA; 5544af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 5554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 5564af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam case NAN_MSG_ID_BEACON_SDF_RSP: 5574af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam { 5584af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pNanBeaconSdfPayloadRspMsg pFwRsp = \ 5594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (pNanBeaconSdfPayloadRspMsg)mNanVendorEvent; 560a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 5619e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, 0, pRsp); 5624af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam pRsp->response_type = NAN_RESPONSE_BEACON_SDF_PAYLOAD; 5634af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam break; 5644af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 56517ee741489e21713642ac29853da176bbd5c4698Subhani Shaik case NAN_MSG_ID_CAPABILITIES_RSP: 56617ee741489e21713642ac29853da176bbd5c4698Subhani Shaik { 56717ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pNanCapabilitiesRspMsg pFwRsp = \ 56817ee741489e21713642ac29853da176bbd5c4698Subhani Shaik (pNanCapabilitiesRspMsg)mNanVendorEvent; 56917ee741489e21713642ac29853da176bbd5c4698Subhani Shaik *id = (transaction_id)pFwRsp->fwHeader.transactionId; 5709e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)pFwRsp->status, pFwRsp->value, pRsp); 57117ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->response_type = NAN_GET_CAPABILITIES; 57217ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_concurrent_nan_clusters = \ 57317ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_concurrent_nan_clusters; 57417ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_publishes = \ 57517ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_publishes; 57617ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_subscribes = \ 57717ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_subscribes; 57817ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_service_name_len = \ 57917ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_service_name_len; 58017ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_match_filter_len = \ 58117ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_match_filter_len; 58217ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_total_match_filter_len = \ 58317ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_total_match_filter_len; 58417ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_service_specific_info_len = \ 58517ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_service_specific_info_len; 58617ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_vsa_data_len = \ 58717ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_vsa_data_len; 58817ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_mesh_data_len = \ 58917ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_mesh_data_len; 59017ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_ndi_interfaces = \ 59117ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_ndi_interfaces; 59217ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_ndp_sessions = \ 59317ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_ndp_sessions; 59417ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pRsp->body.nan_capabilities.max_app_info_len = \ 59517ee741489e21713642ac29853da176bbd5c4698Subhani Shaik pFwRsp->max_app_info_len; 596a6b0b9af5b45ed417e4298f61073695db7882bb4Subhani Shaik pRsp->body.nan_capabilities.max_queued_transmit_followup_msgs = \ 597a6b0b9af5b45ed417e4298f61073695db7882bb4Subhani Shaik pFwRsp->max_queued_transmit_followup_msgs; 598ca2a2d92134fd925d61fe2d4a38f329a40ebdfcfSubhani Shaik pRsp->body.nan_capabilities.ndp_supported_bands = \ 599ca2a2d92134fd925d61fe2d4a38f329a40ebdfcfSubhani Shaik pFwRsp->ndp_supported_bands; 6007f42815c7a5a2c67874c567bdfb0237220e6226dSubhani Shaik pRsp->body.nan_capabilities.cipher_suites_supported = \ 6017f42815c7a5a2c67874c567bdfb0237220e6226dSubhani Shaik pFwRsp->cipher_suites_supported; 602ca2a2d92134fd925d61fe2d4a38f329a40ebdfcfSubhani Shaik pRsp->body.nan_capabilities.max_scid_len = \ 603ca2a2d92134fd925d61fe2d4a38f329a40ebdfcfSubhani Shaik pFwRsp->max_scid_len; 604ca2a2d92134fd925d61fe2d4a38f329a40ebdfcfSubhani Shaik pRsp->body.nan_capabilities.is_ndp_security_supported = \ 605ca2a2d92134fd925d61fe2d4a38f329a40ebdfcfSubhani Shaik pFwRsp->is_ndp_security_supported; 606979212d9b8873ecd74873fe6f64314b514dd04acSubhani Shaik pRsp->body.nan_capabilities.max_sdea_service_specific_info_len = \ 607979212d9b8873ecd74873fe6f64314b514dd04acSubhani Shaik pFwRsp->max_sdea_service_specific_info_len; 608ca2a2d92134fd925d61fe2d4a38f329a40ebdfcfSubhani Shaik pRsp->body.nan_capabilities.max_subscribe_address = \ 609ca2a2d92134fd925d61fe2d4a38f329a40ebdfcfSubhani Shaik pFwRsp->max_subscribe_address; 61017ee741489e21713642ac29853da176bbd5c4698Subhani Shaik break; 61117ee741489e21713642ac29853da176bbd5c4698Subhani Shaik } 6124af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam default: 6134af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return -1; 6144af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 6154af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return 0; 6164af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 6174af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 6184af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamint NanCommand::handleNanResponse() 6194af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 6204af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //parse the data and call 6214af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //the response callback handler with the populated 6224af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //NanResponseMsg 6234af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanResponseMsg rsp_data; 6244af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam int ret; 625a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik transaction_id id; 6264af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 6274af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam ALOGV("handleNanResponse called %p", this); 6284af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam memset(&rsp_data, 0, sizeof(rsp_data)); 6294af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //get the rsp_data 630a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik ret = getNanResponse(&id, &rsp_data); 6314af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 6329e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik ALOGI("handleNanResponse ret:%d status:%u value:%s response_type:%u", 6339e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik ret, rsp_data.status, rsp_data.nan_error, rsp_data.response_type); 6344af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (ret == 0 && (rsp_data.response_type == NAN_RESPONSE_STATS) && 6354af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam (mStaParam != NULL) && 636a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (rsp_data.body.stats_response.stats_type == NAN_STATS_ID_DE_TIMING_SYNC)) { 6374af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam /* 6384af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam Fill the staParam with appropriate values and return from here. 6394af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam No need to call NotifyResponse as the request is for getting the 6404af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam STA response 6414af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam */ 6424af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam NanSyncStats *pSyncStats = &rsp_data.body.stats_response.data.sync_stats; 6434af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->master_rank = pSyncStats->myRank; 6444af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->master_pref = (pSyncStats->myRank & 0xFF00000000000000) >> 56; 6454af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->random_factor = (pSyncStats->myRank & 0x00FF000000000000) >> 48; 6464af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->hop_count = pSyncStats->currAmHopCount; 6474af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam mStaParam->beacon_transmit_time = pSyncStats->currAmBTT; 64868f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik mStaParam->ndp_channel_freq = pSyncStats->ndpChannelFreq; 6494af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 6502268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki ALOGI("%s:0x%02x master_pref 0x%02x random_factor 0x%02x hop_count %u Channel", 6512268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki __func__, mStaParam->master_pref, mStaParam->random_factor, 6522268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki mStaParam->hop_count, mStaParam->ndp_channel_freq); 6532268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki 6544af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return ret; 6554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 6564af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam //Call the NotifyResponse Handler 6574af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam if (ret == 0 && mHandler.NotifyResponse) { 658a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik (*mHandler.NotifyResponse)(id, &rsp_data); 6594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam } 6604af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam return ret; 6614af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 662a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 663a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaikvoid NanCommand::handleNanStatsResponse(NanStatsType stats_type, 664a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik char *rspBuf, 6652268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NanStatsResponse *pRsp, 6662268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki u32 message_len) 667a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik{ 668a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik if (stats_type == NAN_STATS_ID_DE_PUBLISH) { 669a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanPublishStats publish_stats; 6702268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki if (message_len != sizeof(NanPublishStats)) { 6712268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki ALOGE("%s: stats_type = %d invalid stats length = %u expected length = %zu\n", 6722268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki __func__, stats_type, message_len, sizeof(NanPublishStats)); 6732268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki return; 6742268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki } 675a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanPublishStats *pPubStats = (FwNanPublishStats *)rspBuf; 676a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 677a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceReqMsgs = 678a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceReqMsgs; 679a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceRspMsgs = 680a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceRspMsgs; 681a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceCancelReqMsgs = 682a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceCancelReqMsgs; 683a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishServiceCancelRspMsgs = 684a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishServiceCancelRspMsgs; 685a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishRepliedIndMsgs = 686a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishRepliedIndMsgs; 687a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validPublishTerminatedIndMsgs = 688a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->validPublishTerminatedIndMsgs; 689a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validActiveSubscribes = pPubStats->validActiveSubscribes; 690a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validMatches = pPubStats->validMatches; 691a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.validFollowups = pPubStats->validFollowups; 692a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidPublishServiceReqMsgs = 693a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->invalidPublishServiceReqMsgs; 694a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidPublishServiceCancelReqMsgs = 695a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->invalidPublishServiceCancelReqMsgs; 696a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidActiveSubscribes = 697a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->invalidActiveSubscribes; 698a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidMatches = pPubStats->invalidMatches; 699a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.invalidFollowups = pPubStats->invalidFollowups; 700a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.publishCount = pPubStats->publishCount; 701a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.publishNewMatchCount = pPubStats->publishNewMatchCount; 702a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik publish_stats.pubsubGlobalNewMatchCount = 703a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pPubStats->pubsubGlobalNewMatchCount; 704a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &publish_stats, sizeof(NanPublishStats)); 705a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_SUBSCRIBE) { 706a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanSubscribeStats sub_stats; 7072268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki if (message_len != sizeof(NanSubscribeStats)) { 7082268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki ALOGE("%s: stats_type = %d invalid stats length = %u expected length = %zu\n", 7092268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki __func__, stats_type, message_len, sizeof(NanSubscribeStats)); 7102268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki return; 7112268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki } 712a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanSubscribeStats *pSubStats = (FwNanSubscribeStats *)rspBuf; 713a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 714a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceReqMsgs = 715a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceReqMsgs; 716a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceRspMsgs = 717a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceRspMsgs; 718a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceCancelReqMsgs = 719a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceCancelReqMsgs; 720a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeServiceCancelRspMsgs = 721a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeServiceCancelRspMsgs; 722a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeTerminatedIndMsgs = 723a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeTerminatedIndMsgs; 724a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeMatchIndMsgs = 725a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeMatchIndMsgs; 726a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSubscribeUnmatchIndMsgs = 727a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSubscribeUnmatchIndMsgs; 728a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validSolicitedPublishes = 729a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->validSolicitedPublishes; 730a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validMatches = pSubStats->validMatches; 731a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.validFollowups = pSubStats->validFollowups; 732a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSubscribeServiceReqMsgs = 733a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSubscribeServiceReqMsgs; 734a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSubscribeServiceCancelReqMsgs = 735a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSubscribeServiceCancelReqMsgs; 736a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSubscribeFollowupReqMsgs = 737a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSubscribeFollowupReqMsgs; 738a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidSolicitedPublishes = 739a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->invalidSolicitedPublishes; 740a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidMatches = pSubStats->invalidMatches; 741a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.invalidFollowups = pSubStats->invalidFollowups; 742a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.subscribeCount = pSubStats->subscribeCount; 743a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.bloomFilterIndex = pSubStats->bloomFilterIndex; 744a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.subscribeNewMatchCount = pSubStats->subscribeNewMatchCount; 745a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sub_stats.pubsubGlobalNewMatchCount = 746a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSubStats->pubsubGlobalNewMatchCount; 747a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &sub_stats, sizeof(NanSubscribeStats)); 748a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_DW) { 749a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanDWStats dw_stats; 7502268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki if (message_len != sizeof(NanDWStats)) { 7512268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki ALOGE("%s: stats_type = %d invalid stats length = %u expected length = %zu\n", 7522268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki __func__, stats_type, message_len, sizeof(NanDWStats)); 7532268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki return; 7542268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki } 755a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanMacStats *pMacStats = (FwNanMacStats *)rspBuf; 756a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 757a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.validFrames = pMacStats->validFrames; 758a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.validActionFrames = pMacStats->validActionFrames; 759a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.validBeaconFrames = pMacStats->validBeaconFrames; 760a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.ignoredActionFrames = pMacStats->ignoredActionFrames; 761a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidFrames = pMacStats->invalidFrames; 762a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidActionFrames = pMacStats->invalidActionFrames; 763a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidBeaconFrames = pMacStats->invalidBeaconFrames; 764a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidMacHeaders = pMacStats->invalidMacHeaders; 765a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.invalidPafHeaders = pMacStats->invalidPafHeaders; 766a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.nonNanBeaconFrames = pMacStats->nonNanBeaconFrames; 767a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.earlyActionFrames = pMacStats->earlyActionFrames; 768a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.inDwActionFrames = pMacStats->inDwActionFrames; 769a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.lateActionFrames = pMacStats->lateActionFrames; 770a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.framesQueued = pMacStats->framesQueued; 771a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.totalTRSpUpdates = pMacStats->totalTRSpUpdates; 772a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.completeByTRSp = pMacStats->completeByTRSp; 773a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.completeByTp75DW = pMacStats->completeByTp75DW; 774a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.completeByTendDW = pMacStats->completeByTendDW; 775a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik dw_stats.lateActionFramesTx = pMacStats->lateActionFramesTx; 776a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &dw_stats, sizeof(NanDWStats)); 777a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_MAC) { 778a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanMacStats mac_stats; 7792268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki if (message_len != sizeof(NanMacStats)) { 7802268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki ALOGE("%s: stats_type = %d invalid stats length = %u expected length = %zu\n", 7812268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki __func__, stats_type, message_len, sizeof(NanMacStats)); 7822268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki return; 7832268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki } 784a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanMacStats *pMacStats = (FwNanMacStats *)rspBuf; 785a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 786a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.validFrames = pMacStats->validFrames; 787a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.validActionFrames = pMacStats->validActionFrames; 788a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.validBeaconFrames = pMacStats->validBeaconFrames; 789a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.ignoredActionFrames = pMacStats->ignoredActionFrames; 790a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidFrames = pMacStats->invalidFrames; 791a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidActionFrames = pMacStats->invalidActionFrames; 792a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidBeaconFrames = pMacStats->invalidBeaconFrames; 793a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidMacHeaders = pMacStats->invalidMacHeaders; 794a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.invalidPafHeaders = pMacStats->invalidPafHeaders; 795a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.nonNanBeaconFrames = pMacStats->nonNanBeaconFrames; 796a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.earlyActionFrames = pMacStats->earlyActionFrames; 797a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.inDwActionFrames = pMacStats->inDwActionFrames; 798a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.lateActionFrames = pMacStats->lateActionFrames; 799a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.framesQueued = pMacStats->framesQueued; 800a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.totalTRSpUpdates = pMacStats->totalTRSpUpdates; 801a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.completeByTRSp = pMacStats->completeByTRSp; 802a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.completeByTp75DW = pMacStats->completeByTp75DW; 803a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.completeByTendDW = pMacStats->completeByTendDW; 804a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.lateActionFramesTx = pMacStats->lateActionFramesTx; 805a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twIncreases = pMacStats->twIncreases; 806a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twDecreases = pMacStats->twDecreases; 807a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twChanges = pMacStats->twChanges; 808a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.twHighwater = pMacStats->twHighwater; 809a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik mac_stats.bloomFilterIndex = pMacStats->bloomFilterIndex; 810a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &mac_stats, sizeof(NanMacStats)); 811a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE_TIMING_SYNC) { 812a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanSyncStats sync_stats; 8132268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki if (message_len != sizeof(NanSyncStats)) { 8142268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki ALOGE("%s: stats_type = %d invalid stats length = %u expected length = %zu\n", 8152268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki __func__, stats_type, message_len, sizeof(NanSyncStats)); 8162268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki return; 8172268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki } 818a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanSyncStats *pSyncStats = (FwNanSyncStats *)rspBuf; 819a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 820a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currTsf = pSyncStats->currTsf; 821a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.myRank = pSyncStats->myRank; 822a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currAmRank = pSyncStats->currAmRank; 823a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.lastAmRank = pSyncStats->lastAmRank; 824a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currAmBTT = pSyncStats->currAmBTT; 825a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.lastAmBTT = pSyncStats->lastAmBTT; 826a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currAmHopCount = pSyncStats->currAmHopCount; 827a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currRole = pSyncStats->currRole; 828a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.currClusterId = pSyncStats->currClusterId; 829a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 830a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.timeSpentInCurrRole = pSyncStats->timeSpentInCurrRole; 831a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.totalTimeSpentAsMaster = pSyncStats->totalTimeSpentAsMaster; 832a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.totalTimeSpentAsNonMasterSync = 833a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->totalTimeSpentAsNonMasterSync; 834a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.totalTimeSpentAsNonMasterNonSync = 835a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->totalTimeSpentAsNonMasterNonSync; 836a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToAnchorMaster = 837a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToAnchorMaster; 838a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToMaster = 839a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToMaster; 840a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToNonMasterSync = 841a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToNonMasterSync; 842a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.transitionsToNonMasterNonSync = 843a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->transitionsToNonMasterNonSync; 844a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateCount = pSyncStats->amrUpdateCount; 845a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateRankChangedCount = 846a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateRankChangedCount; 847a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateBTTChangedCount = 848a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateBTTChangedCount; 849a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateHcChangedCount = 850a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateHcChangedCount; 851a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrUpdateNewDeviceCount = 852a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pSyncStats->amrUpdateNewDeviceCount; 853a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amrExpireCount = pSyncStats->amrExpireCount; 854a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.mergeCount = pSyncStats->mergeCount; 855a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsAboveHcLimit = pSyncStats->beaconsAboveHcLimit; 856a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsBelowRssiThresh = pSyncStats->beaconsBelowRssiThresh; 857a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsIgnoredNoSpace = pSyncStats->beaconsIgnoredNoSpace; 858a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsForOurCluster = pSyncStats->beaconsForOtherCluster; 859a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconsForOtherCluster = pSyncStats->beaconsForOtherCluster; 860a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconCancelRequests = pSyncStats->beaconCancelRequests; 861a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconCancelFailures = pSyncStats->beaconCancelFailures; 862a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconUpdateRequests = pSyncStats->beaconUpdateRequests; 863a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.beaconUpdateFailures = pSyncStats->beaconUpdateFailures; 864a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.syncBeaconTxAttempts = pSyncStats->syncBeaconTxAttempts; 865a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.syncBeaconTxFailures = pSyncStats->syncBeaconTxFailures; 866a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.discBeaconTxAttempts = pSyncStats->discBeaconTxAttempts; 867a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.discBeaconTxFailures = pSyncStats->discBeaconTxFailures; 868a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik sync_stats.amHopCountExpireCount = pSyncStats->amHopCountExpireCount; 86968f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik sync_stats.ndpChannelFreq = pSyncStats->ndpChannelFreq; 870a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &sync_stats, sizeof(NanSyncStats)); 871a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else if (stats_type == NAN_STATS_ID_DE) { 872a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik NanDeStats de_stats; 8732268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki if (message_len != sizeof(NanDeStats)) { 8742268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki ALOGE("%s: stats_type = %d invalid stats length = %u expected length = %zu\n", 8752268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki __func__, stats_type, message_len, sizeof(NanDeStats)); 8762268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki return; 8772268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki } 878a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik FwNanDeStats *pDeStats = (FwNanDeStats *)rspBuf; 879a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik 880a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validErrorRspMsgs = pDeStats->validErrorRspMsgs; 881a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTransmitFollowupReqMsgs = 882a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validTransmitFollowupReqMsgs; 883a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTransmitFollowupRspMsgs = 884a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validTransmitFollowupRspMsgs; 885a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validFollowupIndMsgs = 886a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validFollowupIndMsgs; 887a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validConfigurationReqMsgs = 888a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validConfigurationReqMsgs; 889a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validConfigurationRspMsgs = 890a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->validConfigurationRspMsgs; 891a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validStatsReqMsgs = pDeStats->validStatsReqMsgs; 892a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validStatsRspMsgs = pDeStats->validStatsRspMsgs; 893a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validEnableReqMsgs = pDeStats->validEnableReqMsgs; 894a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validEnableRspMsgs = pDeStats->validEnableRspMsgs; 895a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validDisableReqMsgs = pDeStats->validDisableReqMsgs; 896a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validDisableRspMsgs = pDeStats->validDisableRspMsgs; 897a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validDisableIndMsgs = pDeStats->validDisableIndMsgs; 898a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validEventIndMsgs = pDeStats->validEventIndMsgs; 899a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTcaReqMsgs = pDeStats->validTcaReqMsgs; 900a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTcaRspMsgs = pDeStats->validTcaRspMsgs; 901a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.validTcaIndMsgs = pDeStats->validTcaIndMsgs; 902a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidTransmitFollowupReqMsgs = 903a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->invalidTransmitFollowupReqMsgs; 904a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidConfigurationReqMsgs = 905a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik pDeStats->invalidConfigurationReqMsgs; 906a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidStatsReqMsgs = pDeStats->invalidStatsReqMsgs; 907a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidEnableReqMsgs = pDeStats->invalidEnableReqMsgs; 908a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidDisableReqMsgs = pDeStats->invalidDisableReqMsgs; 909a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik de_stats.invalidTcaReqMsgs = pDeStats->invalidTcaReqMsgs; 910a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik memcpy(&pRsp->data, &de_stats, sizeof(NanDeStats)); 911a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } else { 912a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik ALOGE("Unknown stats_type:%d\n", stats_type); 913a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik } 914a3c2c8f1bfcddd50047c8ad29e535a54e99acf62Subhani Shaik} 915ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik 916ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaikint NanCommand::handleNdpResponse(NanResponseType ndpCmdType, 917ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik struct nlattr **tb_vendor) 918ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik{ 919ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik //parse the data and call 920ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik //the response callback handler with the populated 921ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik //NanResponseMsg 922ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik NanResponseMsg rsp_data; 923ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik transaction_id id; 924ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik 925ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik memset(&rsp_data, 0, sizeof(rsp_data)); 926ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik 927ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik if ((!tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID]) || 928ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik (!tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_DRV_RESPONSE_STATUS_TYPE]) || 929ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik (!tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE])) 930ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik { 931ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik ALOGE("%s: QCA_WLAN_VENDOR_ATTR_NDP not found", __FUNCTION__); 932ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik return WIFI_ERROR_INVALID_ARGS; 933ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } 934ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik 935ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik id = nla_get_u16(tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID]); 936ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik ALOGD("%s: Transaction id : val %d", __FUNCTION__, id); 9379e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 9389e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik NanErrorTranslation((NanInternalStatusType)nla_get_u32(tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_DRV_RESPONSE_STATUS_TYPE]), 9399e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik nla_get_u32(tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE]), &rsp_data); 940ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik rsp_data.response_type = ndpCmdType; 9419e567c5a5c2e8d673cd1e3796b1fd7153ad22a8fSubhani Shaik 942ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik if (ndpCmdType == NAN_DP_INITIATOR_RESPONSE) 943ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik { 944ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik if (!tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID]) 945ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik { 946ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik ALOGE("%s: QCA_WLAN_VENDOR_ATTR_NDP not found", __FUNCTION__); 947ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik return WIFI_ERROR_INVALID_ARGS; 948ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } 949ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik rsp_data.body.data_request_response.ndp_instance_id = 950ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik nla_get_u32(tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID]); 951ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } 952ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik //Call the NotifyResponse Handler 953ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik if (mHandler.NotifyResponse) { 954ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik (*mHandler.NotifyResponse)(id, &rsp_data); 955ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik } 956ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik return WIFI_SUCCESS; 957ad90a3eeb5acc5f53db457e66d06205de96d144dSubhani Shaik} 958