[AWARE] Remove support for vendor-specific attributes

Vendor-specific attribute support API is not fully functional or
thought out. The Tx portion is working but the Rx portion requires
additional configuration to prevent spamming the framework with all
vendor-specific attributes.

Remove until full solution is designed.

Bug: 35193235
Test: unit tests and integration (sl4a) tests.
Change-Id: I31a601af3b2c1f9f736130ce00abf73c55ac086a
This commit is contained in:
Etan Cohen
2017-02-09 09:35:35 -08:00
parent f60aeb4462
commit ccb1562771
11 changed files with 4 additions and 448 deletions

View File

@@ -73,44 +73,6 @@ $(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NanBeaconSdfPayloadInd)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadInd.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.wifi@1.0::types.NanBeaconSdfPayloadInd
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NanBeaconSdfPayloadRequest)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadRequest.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.wifi@1.0::types.NanBeaconSdfPayloadRequest
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NanCapabilities)
#
@@ -586,25 +548,6 @@ $(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NanVsaRxFrameMask)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/NanVsaRxFrameMask.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.wifi@1.0::types.NanVsaRxFrameMask
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (RttBw)
#
@@ -1933,44 +1876,6 @@ $(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NanBeaconSdfPayloadInd)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadInd.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.wifi@1.0::types.NanBeaconSdfPayloadInd
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NanBeaconSdfPayloadRequest)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadRequest.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.wifi@1.0::types.NanBeaconSdfPayloadRequest
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NanCapabilities)
#
@@ -2446,25 +2351,6 @@ $(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NanVsaRxFrameMask)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/NanVsaRxFrameMask.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.wifi@1.0::types.NanVsaRxFrameMask
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (RttBw)
#

View File

@@ -240,19 +240,4 @@ interface IWifiNanIface extends IWifiIface {
*/
terminateDataPathRequest(CommandIdShort cmdId, uint32_t ndpInstanceId)
generates (WifiStatus status);
/**
* Configure NAN Beacon or SDF payload to include vendor-specific payload.
*
* @param cmdId command Id to use for this invocation.
* @param msg Instance of |NanBeaconSdfPayloadRequest|.
* @return status WifiStatus of the operation.
* Possible status codes:
* |WifiStatusCode.SUCCESS|,
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
* |WifiStatusCode.ERROR_INVALID_ARGS|,
* |WifiStatusCode.ERROR_UNKNOWN|
*/
beaconSdfPayloadRequest(CommandIdShort cmdId, NanBeaconSdfPayloadRequest msg)
generates (WifiStatus status);
};

View File

@@ -194,18 +194,6 @@ interface IWifiNanIfaceEventCallback {
*/
oneway notifyTerminateDataPathResponse(CommandIdShort id, WifiNanStatus status);
/**
* Callback invoked in response to a request to include vendor-specific payload in beacon or SDF
* frames |beaconSdfPayloadRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
* |NanStatusType.SUCCESS|
* |NanStatusType.INVALID_ARGS|
* |NanStatusType.INTERNAL_FAILURE|
*/
oneway notifyBeaconSdfPayloadResponse(CommandIdShort id, WifiNanStatus status);
/**
* Callbacks for the various asynchornous NAN Events.
*/
@@ -303,11 +291,4 @@ interface IWifiNanIfaceEventCallback {
* @param ndpInstanceId: data-path ID of the terminated data-path.
*/
oneway eventDataPathTerminated(uint32_t ndpInstanceId);
/**
* Asynchronous callback indicating vendor-specific payload received in NAN beacon or SDF frame.
*
* @param event: NanBeaconSdfPayloadInd containing event details.
*/
oneway eventBeaconSdfPayload(NanBeaconSdfPayloadInd event);
};

View File

@@ -1177,30 +1177,6 @@ bool convertHidlNanConfigRequestToLegacy(
return true;
}
bool convertHidlNanBeaconSdfPayloadRequestToLegacy(
const NanBeaconSdfPayloadRequest& hidl_request,
legacy_hal::NanBeaconSdfPayloadRequest* legacy_request) {
if (!legacy_request) {
LOG(ERROR) << "convertHidlNanBeaconSdfPayloadRequestToLegacy: legacy_request is null";
return false;
}
memset(legacy_request, 0, sizeof(legacy_hal::NanBeaconSdfPayloadRequest));
legacy_request->vsa.payload_transmit_flag = hidl_request.transmitInNext16dws ? 1 : 0;
legacy_request->vsa.tx_in_discovery_beacon = hidl_request.transmitInDiscoveryBeacon;
legacy_request->vsa.tx_in_sync_beacon = hidl_request.transmitInSyncBeacon;
legacy_request->vsa.tx_in_service_discovery = hidl_request.transmitInServiceDiscoveryFrame;
legacy_request->vsa.vendor_oui = hidl_request.vendorOui;
legacy_request->vsa.vsa_len = hidl_request.vsa.size();
if (legacy_request->vsa.vsa_len > NAN_MAX_VSA_DATA_LEN) {
LOG(ERROR) << "convertHidlNanBeaconSdfPayloadRequestToLegacy: vsa_len too long";
return false;
}
memcpy(legacy_request->vsa.vsa, hidl_request.vsa.data(), legacy_request->vsa.vsa_len);
return true;
}
bool convertHidlNanDataPathInitiatorRequestToLegacy(
const NanInitiateDataPathRequest& hidl_request,
legacy_hal::NanDataPathInitiatorRequest* legacy_request) {
@@ -1352,26 +1328,6 @@ bool convertLegacyNanFollowupIndToHidl(
return true;
}
bool convertLegacyNanBeaconSdfPayloadIndToHidl(
const legacy_hal::NanBeaconSdfPayloadInd& legacy_ind,
NanBeaconSdfPayloadInd* hidl_ind) {
if (!hidl_ind) {
LOG(ERROR) << "convertLegacyNanBeaconSdfPayloadIndToHidl: hidl_ind is null";
return false;
}
hidl_ind->addr = hidl_array<uint8_t, 6>(legacy_ind.addr);
hidl_ind->isVsaReceived = legacy_ind.is_vsa_received == 1;
hidl_ind->vsaReceivedOnFrames = legacy_ind.vsa.vsa_received_on;
hidl_ind->vsaVendorOui = legacy_ind.vsa.vendor_oui;
hidl_ind->vsa = std::vector<uint8_t>(legacy_ind.vsa.vsa,
legacy_ind.vsa.vsa + legacy_ind.vsa.attr_len);
hidl_ind->isBeaconSdfPayloadReceived = legacy_ind.is_beacon_sdf_payload_received == 1;
hidl_ind->beaconSdfPayloadData = std::vector<uint8_t>(legacy_ind.data.frame_data,
legacy_ind.data.frame_data + legacy_ind.data.frame_len);
return true;
}
bool convertLegacyNanDataPathRequestIndToHidl(
const legacy_hal::NanDataPathRequestInd& legacy_ind,
NanDataPathRequestInd* hidl_ind) {

View File

@@ -110,9 +110,6 @@ bool convertHidlNanSubscribeRequestToLegacy(
bool convertHidlNanTransmitFollowupRequestToLegacy(
const NanTransmitFollowupRequest& hidl_request,
legacy_hal::NanTransmitFollowupRequest* legacy_request);
bool convertHidlNanBeaconSdfPayloadRequestToLegacy(
const NanBeaconSdfPayloadRequest& hidl_request,
legacy_hal::NanBeaconSdfPayloadRequest* legacy_request);
bool convertHidlNanDataPathInitiatorRequestToLegacy(
const NanInitiateDataPathRequest& hidl_request,
legacy_hal::NanDataPathInitiatorRequest* legacy_request);
@@ -135,9 +132,6 @@ bool convertLegacyNanDataPathRequestIndToHidl(
bool convertLegacyNanDataPathConfirmIndToHidl(
const legacy_hal::NanDataPathConfirmInd& legacy_ind,
NanDataPathConfirmInd* hidl_ind);
bool convertLegacyNanBeaconSdfPayloadIndToHidl(
const legacy_hal::NanBeaconSdfPayloadInd& legacy_ind,
NanBeaconSdfPayloadInd* hidl_ind);
// RTT controller conversion methods.
bool convertHidlVectorOfRttConfigToLegacy(

View File

@@ -120,14 +120,6 @@ WifiNanIface::WifiNanIface(
}
break;
}
case legacy_hal::NAN_RESPONSE_BEACON_SDF_PAYLOAD: {
for (const auto& callback : shared_ptr_this->event_callbacks_) {
if (!callback->notifyBeaconSdfPayloadResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
}
break;
}
case legacy_hal::NAN_GET_CAPABILITIES: {
NanCapabilities hidl_struct;
if (!hidl_struct_util::convertLegacyNanCapabilitiesResponseToHidl(
@@ -183,6 +175,8 @@ WifiNanIface::WifiNanIface(
}
break;
}
case legacy_hal::NAN_RESPONSE_BEACON_SDF_PAYLOAD:
/* fall through */
case legacy_hal::NAN_RESPONSE_TCA:
/* fall through */
case legacy_hal::NAN_RESPONSE_STATS:
@@ -402,24 +396,8 @@ WifiNanIface::WifiNanIface(
};
callback_handlers.on_event_beacon_sdf_payload = [weak_ptr_this](
const legacy_hal::NanBeaconSdfPayloadInd& msg) {
const auto shared_ptr_this = weak_ptr_this.promote();
if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) {
LOG(ERROR) << "Callback invoked on an invalid object";
return;
}
NanBeaconSdfPayloadInd hidl_struct;
if (!hidl_struct_util::convertLegacyNanBeaconSdfPayloadIndToHidl(
msg, &hidl_struct)) {
LOG(ERROR) << "Failed to convert nan capabilities response";
return;
}
for (const auto& callback : shared_ptr_this->event_callbacks_) {
if (!callback->eventBeaconSdfPayload(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
}
const legacy_hal::NanBeaconSdfPayloadInd& /* msg */) {
LOG(ERROR) << "on_event_beacon_sdf_payload - should not be called";
};
legacy_hal::wifi_error legacy_status =
@@ -621,18 +599,6 @@ Return<void> WifiNanIface::terminateDataPathRequest(uint16_t cmd_id, uint32_t nd
ndpInstanceId);
}
Return<void> WifiNanIface::beaconSdfPayloadRequest(
uint16_t cmd_id,
const NanBeaconSdfPayloadRequest& msg,
beaconSdfPayloadRequest_cb hidl_status_cb) {
return validateAndCall(this,
WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
&WifiNanIface::beaconSdfPayloadRequestInternal,
hidl_status_cb,
cmd_id,
msg);
}
std::pair<WifiStatus, std::string> WifiNanIface::getNameInternal() {
return {createWifiStatus(WifiStatusCode::SUCCESS), ifname_};
}
@@ -783,16 +749,6 @@ WifiStatus WifiNanIface::terminateDataPathRequestInternal(
free(legacy_msg);
return createWifiStatusFromLegacyError(legacy_status);
}
WifiStatus WifiNanIface::beaconSdfPayloadRequestInternal(
uint16_t cmd_id, const NanBeaconSdfPayloadRequest& msg) {
legacy_hal::NanBeaconSdfPayloadRequest legacy_msg;
if (!hidl_struct_util::convertHidlNanBeaconSdfPayloadRequestToLegacy(msg, &legacy_msg)) {
return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
}
legacy_hal::wifi_error legacy_status =
legacy_hal_.lock()->nanBeaconSdfPayloadRequest(cmd_id, legacy_msg);
return createWifiStatusFromLegacyError(legacy_status);
}
} // namespace implementation
} // namespace V1_0

View File

@@ -87,9 +87,6 @@ class WifiNanIface : public IWifiNanIface {
Return<void> terminateDataPathRequest(uint16_t cmd_id,
uint32_t ndpInstanceId,
terminateDataPathRequest_cb hidl_status_cb) override;
Return<void> beaconSdfPayloadRequest(uint16_t cmd_id,
const NanBeaconSdfPayloadRequest& msg,
beaconSdfPayloadRequest_cb hidl_status_cb) override;
private:
// Corresponding worker functions for the HIDL methods.
@@ -121,8 +118,6 @@ class WifiNanIface : public IWifiNanIface {
uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg);
WifiStatus terminateDataPathRequestInternal(
uint16_t cmd_id, uint32_t ndpInstanceId);
WifiStatus beaconSdfPayloadRequestInternal(
uint16_t cmd_id, const NanBeaconSdfPayloadRequest& msg);
std::string ifname_;
std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;

View File

@@ -1158,31 +1158,6 @@ struct NanRespondToDataPathIndicationRequest {
vec<uint8_t> pmk;
};
/**
* Specifies vendor-specific information fields to be included in NAN management frames.
*/
struct NanBeaconSdfPayloadRequest {
/**
* If true information is transmitted in next 16 DWs, else only in the next (1) DW.
*/
bool transmitInNext16dws;
/**
* Specify the management frames in which the vendor-specific information is included.
*/
bool transmitInDiscoveryBeacon;
bool transmitInSyncBeacon;
bool transmitInServiceDiscoveryFrame;
/**
* Organizationally Unique Identifier (OUI).
*/
uint32_t vendorOui;
/**
* Vendor specific attribute to be transmitted.
* Max length: |NanCapabilities.maxVsaDataLen|.
*/
vec<uint8_t> vsa;
};
/**
* NDP Capabilities response.
*/
@@ -1393,54 +1368,6 @@ struct NanClusterEventInd {
MacAddress addr;
};
/**
* Mask to determine on which frames the vendor-specific attribute (VSA) was received on.
*/
enum NanVsaRxFrameMask: uint32_t {
DISCOVERY_BEACON_MASK = 1 << 0,
SYNC_BEACON_MASK = 1 << 1,
SERVICE_DISCOVERY_MASK = 1 << 2
};
/**
* NAN Beacon or SDF Payload Indication Message structure.
* The BeaconSdfPayloadInd message indicates to the upper layers that information
* elements were received either in a Beacon or SDF which needs to be delivered
* outside of a Publish/Subscribe Handle.
*/
struct NanBeaconSdfPayloadInd {
/**
* The MAC address of the peer which sent the attributes.
*/
MacAddress addr;
/**
* A flag indicating whether a vendor-specific attribute (VSA) has been received.
*/
bool isVsaReceived;
/**
* Frames on which this vendor specific attribute was received.
* Mask |NanVsaRxFrameMask| defined above.
*/
bitfield<NanVsaRxFrameMask> vsaReceivedOnFrames;
/**
* Organizationally Unique Identifier (OUI) of the vendor-specific attribute.
*/
uint32_t vsaVendorOui;
/**
* Contents of the vendor specific attribute.
* Max length: |NanCapabilities.maxVsaDataLen|.
*/
vec<uint8_t> vsa;
/**
* A flag indicating whether a NAN beacon or SDF payload has been received.
*/
bool isBeaconSdfPayloadReceived;
/**
* The contents of the NAN beacon or SDF payload.
*/
vec<uint8_t> beaconSdfPayloadData;
};
/**
* NAN Data path request Indication Message structure.
* Event indication received by an intended Responder when a Nan Data request initiated by an

View File

@@ -259,20 +259,4 @@ interface: {
}
}
api: {
name: "beaconSdfPayloadRequest"
return_type_hidl: {
type: TYPE_STRUCT
predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
}
arg: {
type: TYPE_SCALAR
scalar_type: "uint16_t"
}
arg: {
type: TYPE_STRUCT
predefined_type: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadRequest"
}
}
}

View File

@@ -191,18 +191,6 @@ interface: {
}
}
api: {
name: "notifyBeaconSdfPayloadResponse"
arg: {
type: TYPE_SCALAR
scalar_type: "uint16_t"
}
arg: {
type: TYPE_STRUCT
predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
}
}
api: {
name: "eventClusterEvent"
arg: {
@@ -307,12 +295,4 @@ interface: {
}
}
api: {
name: "eventBeaconSdfPayload"
arg: {
type: TYPE_STRUCT
predefined_type: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadInd"
}
}
}

View File

@@ -1512,44 +1512,6 @@ attribute: {
}
}
attribute: {
name: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadRequest"
type: TYPE_STRUCT
struct_value: {
name: "transmitInNext16dws"
type: TYPE_SCALAR
scalar_type: "bool_t"
}
struct_value: {
name: "transmitInDiscoveryBeacon"
type: TYPE_SCALAR
scalar_type: "bool_t"
}
struct_value: {
name: "transmitInSyncBeacon"
type: TYPE_SCALAR
scalar_type: "bool_t"
}
struct_value: {
name: "transmitInServiceDiscoveryFrame"
type: TYPE_SCALAR
scalar_type: "bool_t"
}
struct_value: {
name: "vendorOui"
type: TYPE_SCALAR
scalar_type: "uint32_t"
}
struct_value: {
name: "vsa"
type: TYPE_VECTOR
vector_value: {
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
}
attribute: {
name: "::android::hardware::wifi::V1_0::NanCapabilities"
type: TYPE_STRUCT
@@ -1803,56 +1765,6 @@ attribute: {
}
}
attribute: {
name: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadInd"
type: TYPE_STRUCT
struct_value: {
name: "addr"
type: TYPE_ARRAY
vector_value: {
vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
struct_value: {
name: "isVsaReceived"
type: TYPE_SCALAR
scalar_type: "bool_t"
}
struct_value: {
name: "vsaReceivedOnFrames"
type: TYPE_MASK
predefined_type: "::android::hardware::wifi::V1_0::NanVsaRxFrameMask"
}
struct_value: {
name: "vsaVendorOui"
type: TYPE_SCALAR
scalar_type: "uint32_t"
}
struct_value: {
name: "vsa"
type: TYPE_VECTOR
vector_value: {
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
struct_value: {
name: "isBeaconSdfPayloadReceived"
type: TYPE_SCALAR
scalar_type: "bool_t"
}
struct_value: {
name: "beaconSdfPayloadData"
type: TYPE_VECTOR
vector_value: {
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
}
attribute: {
name: "::android::hardware::wifi::V1_0::NanDataPathRequestInd"
type: TYPE_STRUCT