diff --git a/wifi/1.0/default/hidl_struct_util.cpp b/wifi/1.0/default/hidl_struct_util.cpp index 9e23d556c9..28ad6c3088 100644 --- a/wifi/1.0/default/hidl_struct_util.cpp +++ b/wifi/1.0/default/hidl_struct_util.cpp @@ -917,6 +917,7 @@ bool convertHidlNanPublishRequestToLegacy( memcpy(legacy_request->service_specific_info, hidl_request.baseConfigs.serviceSpecificInfo.data(), legacy_request->service_specific_info_len); + // TODO: b/35193423 add support for extended service specific info legacy_request->rx_match_filter_len = hidl_request.baseConfigs.rxMatchFilter.size(); if (legacy_request->rx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) { LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: rx_match_filter_len too large"; @@ -995,6 +996,7 @@ bool convertHidlNanSubscribeRequestToLegacy( memcpy(legacy_request->service_specific_info, hidl_request.baseConfigs.serviceSpecificInfo.data(), legacy_request->service_specific_info_len); + // TODO: b/35193423 add support for extended service specific info legacy_request->rx_match_filter_len = hidl_request.baseConfigs.rxMatchFilter.size(); if (legacy_request->rx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) { LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: rx_match_filter_len too large"; @@ -1081,6 +1083,7 @@ bool convertHidlNanTransmitFollowupRequestToLegacy( memcpy(legacy_request->service_specific_info, hidl_request.serviceSpecificInfo.data(), legacy_request->service_specific_info_len); + // TODO: b/35193423 add support for extended service specific info legacy_request->recv_indication_cfg = hidl_request.disableFollowupResultIndication ? 0x1 : 0x0; return true; @@ -1272,6 +1275,7 @@ bool convertLegacyNanCapabilitiesResponseToHidl( hidl_response->maxMatchFilterLen = legacy_response.max_match_filter_len; hidl_response->maxTotalMatchFilterLen = legacy_response.max_total_match_filter_len; hidl_response->maxServiceSpecificInfoLen = legacy_response.max_service_specific_info_len; + // TODO: b/35193423 add support for extended service specific info hidl_response->maxVsaDataLen = legacy_response.max_vsa_data_len; hidl_response->maxNdiInterfaces = legacy_response.max_ndi_interfaces; hidl_response->maxNdpSessions = legacy_response.max_ndp_sessions; @@ -1296,6 +1300,7 @@ bool convertLegacyNanMatchIndToHidl( hidl_ind->addr = hidl_array(legacy_ind.addr); hidl_ind->serviceSpecificInfo = std::vector(legacy_ind.service_specific_info, legacy_ind.service_specific_info + legacy_ind.service_specific_info_len); + // TODO: b/35193423 add support for extended service specific info hidl_ind->matchFilter = std::vector(legacy_ind.sdf_match_filter, legacy_ind.sdf_match_filter + legacy_ind.sdf_match_filter_len); hidl_ind->matchOccuredInBeaconFlag = legacy_ind.match_occured_flag == 1; diff --git a/wifi/1.0/types.hal b/wifi/1.0/types.hal index d47f800590..dd098204f2 100644 --- a/wifi/1.0/types.hal +++ b/wifi/1.0/types.hal @@ -933,6 +933,13 @@ struct NanDiscoveryCommonConfig { * NAN Spec: Service Descriptor Attribute (SDA) / Service Info */ vec serviceSpecificInfo; + /** + * Arbitrary information communicated in discovery packets - there is no semantic meaning to these + * bytes. They are passed-through from publisher to subscriber as-is with no parsing. + * Max length: |NanCapabilities.maxExtendedServiceSpecificInfoLen|. + * Spec: Service Descriptor Extension Attribute (SDEA) / Service Info + */ + vec extendedServiceSpecificInfo; /** * Ordered sequence of pairs (|length| uses 1 byte and contains the number of * bytes in the |value| field) which specify further match criteria (beyond the service name). @@ -1123,6 +1130,13 @@ struct NanTransmitFollowupRequest { * NAN Spec: Service Descriptor Attribute (SDA) / Service Info */ vec serviceSpecificInfo; + /** + * Arbitrary information communicated in discovery packets - there is no semantic meaning to these + * bytes. They are passed-through from publisher to subscriber as-is with no parsing. + * Max length: |NanCapabilities.maxExtendedServiceSpecificInfoLen|. + * Spec: Service Descriptor Extension Attribute (SDEA) / Service Info + */ + vec extendedServiceSpecificInfo; /** * Disable |IWifiNanIfaceEventCallback.eventTransmitFollowup| - i.e. do not get indication on * whether the follow-up was transmitted and received successfully. @@ -1258,6 +1272,10 @@ struct NanCapabilities { * Maximum length (in bytes) of the service specific info field. */ uint32_t maxServiceSpecificInfoLen; + /** + * Maximum length (in bytes) of the extended service specific info field. + */ + uint32_t maxExtendedServiceSpecificInfoLen; /** * Maximum length (in bytes) of vendor-specific (VSA) data. */ @@ -1314,6 +1332,13 @@ struct NanMatchInd { * NAN Spec: Service Descriptor Attribute (SDA) / Service Info */ vec serviceSpecificInfo; + /** + * Arbitrary information communicated in discovery packets - there is no semantic meaning to these + * bytes. They are passed-through from publisher to subscriber as-is with no parsing. + * Max length: |NanCapabilities.maxExtendedServiceSpecificInfoLen|. + * Spec: Service Descriptor Extension Attribute (SDEA) / Service Info + */ + vec extendedServiceSpecificInfo; /** * The match filter from the discovery packet (publish or subscribe) which caused service * discovery. Matches the peer's |NanDiscoveryCommonConfig.txMatchFilter|. @@ -1412,6 +1437,13 @@ struct NanFollowupReceivedInd { * NAN Spec: Service Descriptor Attribute (SDA) / Service Info */ vec serviceSpecificInfo; + /** + * Arbitrary information communicated in discovery packets - there is no semantic meaning to these + * bytes. They are passed-through from publisher to subscriber as-is with no parsing. + * Max length: |NanCapabilities.maxExtendedServiceSpecificInfoLen|. + * Spec: Service Descriptor Extension Attribute (SDEA) / Service Info + */ + vec extendedServiceSpecificInfo; }; /**