@@ -69,23 +69,22 @@ struct AdvertisingReportEvent {
69
69
const address_t &directAddress,
70
70
const mbed::Span<const uint8_t > &advertisingData
71
71
) :
72
+ peerAddress(peerAddress),
72
73
type(type),
73
74
peerAddressType(peerAddressType),
74
- peerAddress(peerAddress),
75
75
primaryPhy(primaryPhy),
76
76
secondaryPhy(secondaryPhy),
77
77
SID(SID),
78
78
txPower(txPower),
79
- rssi(rssi),
80
79
periodicInterval(periodicInterval),
80
+ rssi(rssi),
81
81
directAddressType(directAddressType),
82
82
directAddress(directAddress),
83
83
advertisingData(advertisingData)
84
84
{
85
85
}
86
86
87
87
#endif
88
-
89
88
/* * Get event type. */
90
89
const advertising_event_t &getType () const
91
90
{
@@ -163,18 +162,44 @@ struct AdvertisingReportEvent {
163
162
return advertisingData;
164
163
}
165
164
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
+
166
190
private:
191
+ address_t peerAddress;
167
192
advertising_event_t type;
168
193
peer_address_type_t peerAddressType;
169
- address_t const &peerAddress;
170
194
phy_t primaryPhy;
171
195
phy_t secondaryPhy;
172
196
advertising_sid_t SID;
173
197
advertising_power_t txPower;
174
- rssi_t rssi;
175
198
uint16_t periodicInterval;
199
+ rssi_t rssi;
176
200
peer_address_type_t directAddressType;
177
- const address_t &directAddress;
201
+ address_t directAddress;
202
+ ble_error_t status;
178
203
mbed::Span<const uint8_t > advertisingData;
179
204
};
180
205
@@ -215,12 +240,12 @@ struct ConnectionCompleteEvent {
215
240
) :
216
241
status(status),
217
242
connectionHandle(connectionHandle),
243
+ peerAddress(peerAddress),
218
244
ownRole(ownRole),
219
245
peerAddressType(peerAddressType),
220
- peerAddress(peerAddress),
221
246
localResolvablePrivateAddress(localResolvablePrivateAddress),
222
- peerResolvablePrivateAddress(peerResolvablePrivateAddress),
223
247
connectionInterval(connectionInterval),
248
+ peerResolvablePrivateAddress(peerResolvablePrivateAddress),
224
249
connectionLatency(connectionLatency),
225
250
supervisionTimeout(supervisionTimeout),
226
251
masterClockAccuracy(masterClockAccuracy)
@@ -295,15 +320,46 @@ struct ConnectionCompleteEvent {
295
320
return masterClockAccuracy;
296
321
}
297
322
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
+
298
354
private:
299
355
ble_error_t status;
300
356
connection_handle_t connectionHandle;
357
+ address_t peerAddress;
301
358
connection_role_t ownRole;
302
359
peer_address_type_t peerAddressType;
303
- const address_t &peerAddress;
304
- const address_t &localResolvablePrivateAddress;
305
- const address_t &peerResolvablePrivateAddress;
360
+ address_t localResolvablePrivateAddress;
306
361
conn_interval_t connectionInterval;
362
+ address_t peerResolvablePrivateAddress;
307
363
slave_latency_t connectionLatency;
308
364
supervision_timeout_t supervisionTimeout;
309
365
uint16_t masterClockAccuracy;
@@ -519,15 +575,47 @@ struct PeriodicAdvertisingSyncLoss {
519
575
*/
520
576
struct ScanTimeoutEvent { };
521
577
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
+
522
607
/* *
523
608
* Event produced when advertising ends.
524
609
*
525
610
* @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.
526
614
*/
527
615
struct AdvertisingEndEvent {
528
616
#if !defined(DOXYGEN_ONLY)
529
617
530
- /* * Create advertising end event.
618
+ /* * Create an extended advertising end event.
531
619
*
532
620
* @param advHandle Advertising set handle.
533
621
* @param connection Connection handle.
@@ -543,7 +631,19 @@ struct AdvertisingEndEvent {
543
631
advHandle(advHandle),
544
632
connection(connection),
545
633
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 )
547
647
{
548
648
}
549
649
@@ -573,11 +673,22 @@ struct AdvertisingEndEvent {
573
673
return connected;
574
674
}
575
675
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
+
576
686
private:
577
687
advertising_handle_t advHandle;
578
688
connection_handle_t connection;
579
689
uint8_t completed_events;
580
690
bool connected;
691
+ bool legacy;
581
692
};
582
693
583
694
/* *
0 commit comments