@@ -69,23 +69,22 @@ struct AdvertisingReportEvent {
6969 const address_t &directAddress,
7070 const mbed::Span<const uint8_t > &advertisingData
7171 ) :
72+ peerAddress(peerAddress),
7273 type(type),
7374 peerAddressType(peerAddressType),
74- peerAddress(peerAddress),
7575 primaryPhy(primaryPhy),
7676 secondaryPhy(secondaryPhy),
7777 SID(SID),
7878 txPower(txPower),
79- rssi(rssi),
8079 periodicInterval(periodicInterval),
80+ rssi(rssi),
8181 directAddressType(directAddressType),
8282 directAddress(directAddress),
8383 advertisingData(advertisingData)
8484 {
8585 }
8686
8787#endif
88-
8988 /* * Get event type. */
9089 const advertising_event_t &getType () const
9190 {
@@ -163,18 +162,44 @@ struct AdvertisingReportEvent {
163162 return advertisingData;
164163 }
165164
165+ /* * Set peer address. */
166+ void setPeerAddress (
167+ const address_t &newPeerAddress
168+ )
169+ {
170+ peerAddress = newPeerAddress;
171+ }
172+
173+
174+ /* * Set peer address type. */
175+ void setPeerAddressType (
176+ const peer_address_type_t &newPeerAddressType
177+ )
178+ {
179+ peerAddressType = newPeerAddressType;
180+ }
181+
182+ /* * Set new advertising payload. */
183+ void setAdvertisingData (
184+ const mbed::Span<const uint8_t > &newAdvertisingData
185+ )
186+ {
187+ advertisingData = newAdvertisingData;
188+ }
189+
166190private:
191+ address_t peerAddress;
167192 advertising_event_t type;
168193 peer_address_type_t peerAddressType;
169- address_t const &peerAddress;
170194 phy_t primaryPhy;
171195 phy_t secondaryPhy;
172196 advertising_sid_t SID;
173197 advertising_power_t txPower;
174- rssi_t rssi;
175198 uint16_t periodicInterval;
199+ rssi_t rssi;
176200 peer_address_type_t directAddressType;
177- const address_t &directAddress;
201+ address_t directAddress;
202+ ble_error_t status;
178203 mbed::Span<const uint8_t > advertisingData;
179204};
180205
@@ -215,12 +240,12 @@ struct ConnectionCompleteEvent {
215240 ) :
216241 status(status),
217242 connectionHandle(connectionHandle),
243+ peerAddress(peerAddress),
218244 ownRole(ownRole),
219245 peerAddressType(peerAddressType),
220- peerAddress(peerAddress),
221246 localResolvablePrivateAddress(localResolvablePrivateAddress),
222- peerResolvablePrivateAddress(peerResolvablePrivateAddress),
223247 connectionInterval(connectionInterval),
248+ peerResolvablePrivateAddress(peerResolvablePrivateAddress),
224249 connectionLatency(connectionLatency),
225250 supervisionTimeout(supervisionTimeout),
226251 masterClockAccuracy(masterClockAccuracy)
@@ -295,15 +320,46 @@ struct ConnectionCompleteEvent {
295320 return masterClockAccuracy;
296321 }
297322
323+
324+ /* * Set connection complete event status. */
325+ void setStatus (ble_error_t new_status)
326+ {
327+ status = new_status;
328+ }
329+
330+ /* * Set peer address type. */
331+ void setPeerAddressType (const peer_address_type_t & address_type)
332+ {
333+ peerAddressType = address_type;
334+ }
335+
336+ /* * Set peer address. */
337+ void setPeerAddress (const address_t &address)
338+ {
339+ peerAddress = address;
340+ }
341+
342+ /* * Set get local resolvable random address if privacy is used. */
343+ void setLocalResolvablePrivateAddress (const address_t &address)
344+ {
345+ localResolvablePrivateAddress = address;
346+ }
347+
348+ /* * Set peer resolvable private address if privacy is used. */
349+ void setPeerResolvablePrivateAddress (const address_t &address)
350+ {
351+ peerResolvablePrivateAddress = address;
352+ }
353+
298354private:
299355 ble_error_t status;
300356 connection_handle_t connectionHandle;
357+ address_t peerAddress;
301358 connection_role_t ownRole;
302359 peer_address_type_t peerAddressType;
303- const address_t &peerAddress;
304- const address_t &localResolvablePrivateAddress;
305- const address_t &peerResolvablePrivateAddress;
360+ address_t localResolvablePrivateAddress;
306361 conn_interval_t connectionInterval;
362+ address_t peerResolvablePrivateAddress;
307363 slave_latency_t connectionLatency;
308364 supervision_timeout_t supervisionTimeout;
309365 uint16_t masterClockAccuracy;
@@ -519,15 +575,47 @@ struct PeriodicAdvertisingSyncLoss {
519575 */
520576struct ScanTimeoutEvent { };
521577
578+ /* *
579+ * Event produced when advertising start.
580+ *
581+ * @see ble::Gap::EventHandler::onAdvertisingStart().
582+ */
583+ struct AdvertisingStartEvent {
584+ #if !defined(DOXYGEN_ONLY)
585+
586+ /* * Create an advertising start event.
587+ *
588+ * @param advHandle Advertising set handle.
589+ */
590+ AdvertisingStartEvent (advertising_handle_t advHandle) :
591+ advHandle(advHandle)
592+ {
593+ }
594+
595+ #endif
596+
597+ /* * Get advertising handle. */
598+ advertising_handle_t getAdvHandle () const
599+ {
600+ return advHandle;
601+ }
602+
603+ private:
604+ advertising_handle_t advHandle;
605+ };
606+
522607/* *
523608 * Event produced when advertising ends.
524609 *
525610 * @see ble::Gap::EventHandler::onAdvertisingEnd().
611+ *
612+ * @note The connection handle, connected flag and completed_event fields are
613+ * valid if the flag legacy is not set to true.
526614 */
527615struct AdvertisingEndEvent {
528616#if !defined(DOXYGEN_ONLY)
529617
530- /* * Create advertising end event.
618+ /* * Create an extended advertising end event.
531619 *
532620 * @param advHandle Advertising set handle.
533621 * @param connection Connection handle.
@@ -543,7 +631,19 @@ struct AdvertisingEndEvent {
543631 advHandle(advHandle),
544632 connection(connection),
545633 completed_events(completed_events),
546- connected(connected)
634+ connected(connected),
635+ legacy(false )
636+ {
637+ }
638+
639+ /* * Create a legacy advertising end event.
640+ */
641+ AdvertisingEndEvent () :
642+ advHandle(LEGACY_ADVERTISING_HANDLE),
643+ connection(),
644+ completed_events(0 ),
645+ connected(false ),
646+ legacy(true )
547647 {
548648 }
549649
@@ -573,11 +673,22 @@ struct AdvertisingEndEvent {
573673 return connected;
574674 }
575675
676+ /* * Is the end of legacy advertising.
677+ *
678+ * If it is the return of getConnection() getCompleted_events() and isConnected()
679+ * must be discarded
680+ */
681+ bool isLegacy () const
682+ {
683+ return legacy;
684+ }
685+
576686private:
577687 advertising_handle_t advHandle;
578688 connection_handle_t connection;
579689 uint8_t completed_events;
580690 bool connected;
691+ bool legacy;
581692};
582693
583694/* *
0 commit comments