mirror of https://github.com/ARMmbed/mbed-os.git
make packetisation common
parent
87482b5530
commit
8794c0b43b
|
@ -88,9 +88,9 @@ public:
|
|||
|
||||
ble_error_t setAdvertisingParams(AdvHandle_t handle, const GapExtendedAdvertisingParams* params);
|
||||
|
||||
ble_error_t setAdvertisingPayload(AdvHandle_t handle, const GapAdvertisingData* payload);
|
||||
ble_error_t setAdvertisingPayload(AdvHandle_t handle, const AdvertisingData* payload, bool minimiseFragmentation = false);
|
||||
|
||||
ble_error_t setAdvertisingScanResponse(AdvHandle_t handle, const GapAdvertisingData* response);
|
||||
ble_error_t setAdvertisingScanResponse(AdvHandle_t handle, const AdvertisingData* response, bool minimiseFragmentation = false);
|
||||
|
||||
ble_error_t startAdvertising(AdvHandle_t handle, uint8_t maxEvents = 0, uint32_t maxDuration = 0);
|
||||
|
||||
|
@ -227,12 +227,12 @@ public:
|
|||
/**
|
||||
* @see Gap::setAppearance
|
||||
*/
|
||||
virtual ble_error_t setAppearance(GapAdvertisingData::Appearance appearance);
|
||||
virtual ble_error_t setAppearance(AdvertisingData::Appearance appearance);
|
||||
|
||||
/**
|
||||
* @see Gap::getAppearance
|
||||
*/
|
||||
virtual ble_error_t getAppearance(GapAdvertisingData::Appearance *appearanceP);
|
||||
virtual ble_error_t getAppearance(AdvertisingData::Appearance *appearanceP);
|
||||
|
||||
/**
|
||||
* @see Gap::setTxPower
|
||||
|
@ -376,6 +376,8 @@ public:
|
|||
);
|
||||
|
||||
private:
|
||||
ble_error_t setAdvertisingData(AdvHandle_t handle, const AdvertisingData* payload, bool minimiseFragmentation, bool scan_reponse);
|
||||
|
||||
/** @note Implements ConnectionEventMonitor.
|
||||
* @copydoc ConnectionEventMonitor::set_connection_event_handler
|
||||
*/
|
||||
|
|
|
@ -733,12 +733,12 @@ ble_error_t GenericGap::getDeviceName(uint8_t *deviceName, unsigned *lengthP)
|
|||
return BLE_ERROR_NONE;
|
||||
}
|
||||
|
||||
ble_error_t GenericGap::setAppearance(GapAdvertisingData::Appearance appearance)
|
||||
ble_error_t GenericGap::setAppearance(AdvertisingData::Appearance appearance)
|
||||
{
|
||||
return _gap_service.set_appearance(appearance);
|
||||
}
|
||||
|
||||
ble_error_t GenericGap::getAppearance(GapAdvertisingData::Appearance *appearanceP)
|
||||
ble_error_t GenericGap::getAppearance(AdvertisingData::Appearance *appearanceP)
|
||||
{
|
||||
if (appearanceP == NULL) {
|
||||
return BLE_ERROR_INVALID_PARAM;
|
||||
|
@ -1681,14 +1681,26 @@ ble_error_t GenericGap::setAdvertisingParams(AdvHandle_t handle, const GapExtend
|
|||
);
|
||||
}
|
||||
|
||||
ble_error_t GenericGap::setAdvertisingPayload(AdvHandle_t handle, const GapAdvertisingData* payload) {
|
||||
ble_error_t GenericGap::setAdvertisingPayload(AdvHandle_t handle, const AdvertisingData* payload, bool minimiseFragmentation) {
|
||||
return setAdvertisingData(handle, payload, minimiseFragmentation, false);
|
||||
}
|
||||
|
||||
ble_error_t GenericGap::setAdvertisingScanResponse(AdvHandle_t handle, const AdvertisingData* response, bool minimiseFragmentation) {
|
||||
return setAdvertisingData(handle, response, minimiseFragmentation, true);
|
||||
}
|
||||
|
||||
ble_error_t GenericGap::setAdvertisingData(AdvHandle_t handle, const GapAdvertisingData* payload, bool minimiseFragmentation, bool scan_reponse) {
|
||||
if (!get_adv_set_bit(_existing_sets, handle) || !payload) {
|
||||
return BLE_ERROR_INVALID_PARAM;
|
||||
}
|
||||
|
||||
if (!is_extended_advertising_enabled()) {
|
||||
if (handle == Gap::LEGACY_ADVERTISING_HANDLE) {
|
||||
memcpy(&getLegacyAdvertisingPayload(), payload, sizeof(GapAdvertisingData));
|
||||
if (scan_reponse) {
|
||||
memcpy(&getLegacyAdvertisingPayload(), payload, sizeof(AdvertisingData));
|
||||
} else {
|
||||
memcpy(&getLegacyAdvertisingScanResponse(), payload, sizeof(AdvertisingData));
|
||||
}
|
||||
}
|
||||
return BLE_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
@ -1710,13 +1722,23 @@ ble_error_t GenericGap::setAdvertisingPayload(AdvHandle_t handle, const GapAdver
|
|||
operation = pal::advertising_fragment_description_t::LAST_FRAGMENT;
|
||||
}
|
||||
|
||||
_pal_gap.set_extended_advertising_data(
|
||||
handle,
|
||||
packet_data_length,
|
||||
payload->setMinimiseFragmentation,
|
||||
packet_data_length,
|
||||
payload->getPayload() + index
|
||||
);
|
||||
if (scan_reponse) {
|
||||
_pal_gap.set_extended_advertising_data(
|
||||
handle,
|
||||
operation,
|
||||
minimiseFragmentation,
|
||||
packet_data_length,
|
||||
payload->getPayload() + index
|
||||
);
|
||||
} else {
|
||||
_pal_gap.set_extended_advertising_data(
|
||||
handle,
|
||||
operation,
|
||||
minimiseFragmentation,
|
||||
packet_data_length,
|
||||
payload->getPayload() + index
|
||||
);
|
||||
}
|
||||
|
||||
index += packet_data_length;
|
||||
|
||||
|
@ -1726,27 +1748,6 @@ ble_error_t GenericGap::setAdvertisingPayload(AdvHandle_t handle, const GapAdver
|
|||
return status;
|
||||
}
|
||||
|
||||
ble_error_t GenericGap::setAdvertisingScanResponse(AdvHandle_t handle, const GapAdvertisingData* response) {
|
||||
if (!get_adv_set_bit(_existing_sets, handle) || !response) {
|
||||
return BLE_ERROR_INVALID_PARAM;
|
||||
}
|
||||
|
||||
if (!is_extended_advertising_enabled()) {
|
||||
if (handle == Gap::LEGACY_ADVERTISING_HANDLE) {
|
||||
memcpy(&getLegacyAdvertisingScanResponse(), response, sizeof(GapAdvertisingData));
|
||||
}
|
||||
return BLE_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
return _pal_gap.set_extended_scan_response_data(
|
||||
handle,
|
||||
/*TODO fragment*/ pal::advertising_fragment_description_t::FIRST_FRAGMENT,
|
||||
response->setMinimiseFragmentation,
|
||||
response->getPayloadLen(),
|
||||
response->getPayload()
|
||||
);
|
||||
}
|
||||
|
||||
ble_error_t GenericGap::startAdvertising(
|
||||
AdvHandle_t handle,
|
||||
uint8_t maxEvents,
|
||||
|
|
Loading…
Reference in New Issue