4 days agoapps/blemesh: Fix Vendor Model opcode master
Michał Narajowski [Wed, 12 Dec 2018 15:51:36 +0000 (16:51 +0100)] 
apps/blemesh: Fix Vendor Model opcode

Previously Vendor Model used Generic OnOff opcodes. According
to the spec, vendor models should use 3-octet opcodes.

Mesh Profile Specification, Section 2.3.3:
"An opcode may be a single octet (for special messages that require maximum
possible payload for parameters), 2 octets (for standard messages), or 3 octets
(for vendor-specific messages)."

This patch fixes that, by defining vendor specific opcode
and adds a callback, that reads the received message
and sends it back to the source.

5 days agonimble/host: Fix crash in ble_monitor when packets are not consumed
Łukasz Rymanowski [Tue, 11 Dec 2018 13:30:23 +0000 (14:30 +0100)] 
nimble/host: Fix crash in ble_monitor when packets are not consumed

Move ble_monitor_init() after the hs_evq is set. Otherwise callout within
ble_monitor, which is used for droping packets mechanism is NULL.
This of course leads to assert when callout fires.

5 days agonimble/ll: Do not send SCAN REQ to already scanned ext advertising
Łukasz Rymanowski [Wed, 5 Dec 2018 10:04:18 +0000 (11:04 +0100)] 
nimble/ll: Do not send SCAN REQ to already scanned ext advertising

6 days agonimble/ll: Fix RPA address in the LE Enhanced Connection Complete
Łukasz Rymanowski [Wed, 5 Dec 2018 09:57:02 +0000 (10:57 +0100)] 
nimble/ll: Fix RPA address in the LE Enhanced Connection Complete

It solves following issue:

1. Nimble has peer device in the resolving list.
2. Peer device is in Device Privacy Mode
3. Peer device is using its RPA and our identity address as InitA in
directed advertising on which Nimble send Connect Ind with its identity address

Nimble incorretly set Local RPA address in the LE Enhanced Connect Completed event.

This should fix: LL/CON/INI/BV-10-C and LL/CON/INI/BV-21-C

6 days agonimble/ll: Fix Connect Ind send on directed advertising
Łukasz Rymanowski [Fri, 30 Nov 2018 15:06:38 +0000 (16:06 +0100)] 
nimble/ll: Fix Connect Ind send on directed advertising

It solves following issue:

1. Nimble has peer device in the resolving list.
2. Peer device is in Device Privacy Mode
3. Peer device is using its RPA and our identity address as InitA in
directed advertising

Nimble send Connect Ind with its RPA instead of InitA

This should fix: LL/CON/INI/BV-10-C and LL/CON/INI/BV-21-C

6 days agonimble/ll: Fix handling LL_PHY_UPDATE_IND as a master
Łukasz Rymanowski [Fri, 30 Nov 2018 14:26:30 +0000 (15:26 +0100)] 
nimble/ll: Fix handling LL_PHY_UPDATE_IND as a master

We should response with LL_UNKNOWN_RSP

This should fix LL/PAC/MAS/BV-01

10 days agonimble/gatt: Fix the issue of removing multiple procs having same opcode
Hrishikesh Dhayagude [Fri, 30 Nov 2018 13:34:30 +0000 (19:04 +0530)] 
nimble/gatt: Fix the issue of removing multiple procs having same opcode

If two or more requests with same opcode are sent
(for e.g. Write and Enable/Disable notify), the requests go through and
responses are received. Although, the responses for all the requests
except for the first one are not sent above to the app (or upper
This is because, currently ble_gattc_extract_first_by_conn_op() extracts
all the matching procs and then they are removed from the list. Ideally,
it should extract the first matching proc (as its name suggests).

This patch modifies ble_gattc_extract_by_conn_op() which is used from
ble_gattc_extract_first_by_conn_op() to accept max_procs and extract the
appropriate number of procs, as required.

11 days agonimble/ll: Fix regression on legacy connect
Łukasz Rymanowski [Thu, 6 Dec 2018 07:13:13 +0000 (08:13 +0100)] 
nimble/ll: Fix regression on legacy connect

Without this patch we will get assert on legacy connect

12 days agonimble/ll: Improve handling truncated advertising events
Łukasz Rymanowski [Fri, 9 Nov 2018 09:26:39 +0000 (10:26 +0100)] 
nimble/ll: Improve handling truncated advertising events

This patch make sure that each truncated advertising event is corretly
sent to host

12 days agonimble/ll: Extended scanner - add ref count for aux data
Łukasz Rymanowski [Thu, 8 Nov 2018 11:25:00 +0000 (12:25 +0100)] 
nimble/ll: Extended scanner - add ref count for aux data

This patch improves scanner by adding ref counter for outstanding
aux_data. With this we want to make sure aux_data is not freed e.g. when
being handover to LL and in the same time processed in the interrupt in
chaining scenario

General idea is that 1 reference is kept as long as event is not
completed (note: truncated is also completed) and other references are
use when:
 - aux is scheduled
 - report is sending to the host
 - scan request has been sent
 - when packet is handover to LL

12 days agonimble/ll: Add return value to ble_ll_sched_rmv_elem
Łukasz Rymanowski [Fri, 16 Nov 2018 14:16:42 +0000 (15:16 +0100)] 
nimble/ll: Add return value to ble_ll_sched_rmv_elem

This will be used be next patches where LL need to know if given element
has been removed or is already fired. Based on this reference counter of
aux_data will be dropped or not.

12 days agonimble/ll: Some additional aux_data stats
Łukasz Rymanowski [Fri, 16 Nov 2018 15:15:00 +0000 (16:15 +0100)] 
nimble/ll: Some additional aux_data stats

12 days agonimble/ll: Keep connecting in case of error when decoding address
Łukasz Rymanowski [Fri, 16 Nov 2018 14:05:22 +0000 (15:05 +0100)] 
nimble/ll: Keep connecting in case of error when decoding address

12 days agonimble/ll: Fix handling HCI Le Set Advertising Data command
Łukasz Rymanowski [Tue, 13 Nov 2018 08:17:15 +0000 (09:17 +0100)] 
nimble/ll: Fix handling HCI Le Set Advertising Data command

When extended advertising mode is used, Controller shall send Command
Status with Error Command Disallowed (0x0c) on HCI Le Set Advertising
data command.

It fixes HCI/GEV/BV-02-C

12 days agonimble/ll: Fix possible null pointer dereference
Łukasz Rymanowski [Fri, 9 Nov 2018 09:43:51 +0000 (10:43 +0100)] 
nimble/ll: Fix possible null pointer dereference

In case of empty beacon (no AUX_ADV_IND), there will be no aux_data.

This patch also:
- removes reduntant else as need_event is already reset at
the beggining of the loop

- fixes incorrect return parameter which could be set to 1 for
completed chained advertising event

12 days agonimble/ll: Remove evt reference from aux_data
Łukasz Rymanowski [Fri, 9 Nov 2018 09:32:08 +0000 (10:32 +0100)] 
nimble/ll: Remove evt reference from aux_data

Once aux_data->evt is taken, remove reference to it from aux_data as it
is not needed.

12 days agonimble/ll: Make sure hci event size
Łukasz Rymanowski [Thu, 8 Nov 2018 15:29:06 +0000 (16:29 +0100)] 
nimble/ll: Make sure hci event size

This patch make sure single HCI event is not bigger than 255

12 days agonimble/ll: Improve getting aux data
Łukasz Rymanowski [Sun, 4 Nov 2018 00:06:37 +0000 (01:06 +0100)] 
nimble/ll: Improve getting aux data

This patch simplify getting aux data so it is easier to follow the code.
Also, in this patch aux_data is attached to ble_hdr of the received
packet at the very beginning of isr_end and removed from global scan

12 days agonimble/ll: Improve getting advertising and target address
Łukasz Rymanowski [Mon, 5 Nov 2018 14:40:54 +0000 (15:40 +0100)] 
nimble/ll: Improve getting advertising and target address

aux_data pointer contains valid advertiser and directed address from the
very beggining if it is available. Later on when getting address let's
make use of it and do not try to parse packet unless this is empty

12 days agonimble/ll: Fix parsing aux_ptr
Łukasz Rymanowski [Mon, 5 Nov 2018 14:30:49 +0000 (15:30 +0100)] 
nimble/ll: Fix parsing aux_ptr

With this patch we make sure that when parsing aux ptr we store
advertiser and target address.

12 days agonimble/ll: Check privacy mode on Connect Ind receive
Łukasz Rymanowski [Thu, 18 Oct 2018 21:21:09 +0000 (23:21 +0200)] 
nimble/ll: Check privacy mode on Connect Ind receive

This should fix: LL/SEC/ADV/BV-16-C

12 days agoble_ll_dtm.c: Add missing #include
Christopher Collins [Tue, 4 Dec 2018 00:14:49 +0000 (16:14 -0800)] 
ble_ll_dtm.c: Add missing #include

13 days agoL2CAP sm: do not discard alignment information.
Juan Carrano [Thu, 29 Nov 2018 12:40:36 +0000 (13:40 +0100)] 
L2CAP sm: do not discard alignment information.

ble_sm_gen_ediv and ble_sm_gen_master_id_rand took a simple pointer to
integers, but were being called with pointers to members of a packed
struct. This discarded the alignment information.

Not only did it produce an error with clang's -Wno-address-of-packed-member,
but it may also cause an error in a platform with alignment requirements.

The solution was to modify both procedures to take a pointer to the whole
structure instead of only the members.

13 days agoMerge pull request #257 from wes3/hfxo_settle_time_zero_fix
wes3 [Mon, 3 Dec 2018 21:24:39 +0000 (13:24 -0800)] 
Merge pull request #257 from wes3/hfxo_settle_time_zero_fix

net/nimble/drivers: Fix compile error if BLE_XTAL_SETTLE_TIME = 0

13 days agonet/nimble/drivers: Fix compile error if BLE_XTAL_SETTLE_TIME = 0 257/head
William San Filippo [Mon, 3 Dec 2018 21:16:58 +0000 (13:16 -0800)] 
net/nimble/drivers: Fix compile error if BLE_XTAL_SETTLE_TIME = 0

The ble_phy_rfclk_enable function is called even when the settle
time is set to 0 (to turn the HFXO on all the time). That function
was getting compiled out (erroneously) when the settle time gets
set to 0.

13 days agoMerge pull request #255 from wes3/slave_conn_upd_fix
wes3 [Mon, 3 Dec 2018 18:35:13 +0000 (10:35 -0800)] 
Merge pull request #255 from wes3/slave_conn_upd_fix

net/nimble/controller: Slave connection update fix

2 weeks agonet/nimble/controller Slave connection update fix 255/head
William San Filippo [Fri, 30 Nov 2018 18:44:22 +0000 (10:44 -0800)] 
net/nimble/controller Slave connection update fix

The code was not correctly handling the case where a slave receives
a connection update where the current connection event counter is
equal to the instant in the connection update PDU. This is a valid
case (as per spec errata). With this fix the controller should
correctly handle this case.

Christopher Collins [Mon, 19 Nov 2018 18:26:20 +0000 (10:26 -0800)] 

3 weeks agoUse syscfg settings for sysinit stage numbers
Christopher Collins [Thu, 25 Oct 2018 20:21:09 +0000 (13:21 -0700)] 
Use syscfg settings for sysinit stage numbers

This allows the app or target to rearrange package initialization order
via syscfg overrides.

Note: This requires an updated version of newt
(  Older versions of
newt fail to parse the updated `pkg.yml` files.

3 weeks agorename ble_hs_enabled --> ble_hs_is_enabled
Christopher Collins [Mon, 19 Nov 2018 18:44:51 +0000 (10:44 -0800)] 
rename ble_hs_enabled --> ble_hs_is_enabled

3 weeks agoCombine ble_gap_preempt() and ble_gap_ensure_preempted()
Christopher Collins [Mon, 19 Nov 2018 18:37:57 +0000 (10:37 -0800)] 
Combine ble_gap_preempt() and ble_gap_ensure_preempted()

3 weeks agoapps/btshell: Allow enable / disable of host
Christopher Collins [Thu, 4 Oct 2018 19:28:20 +0000 (12:28 -0700)] 
apps/btshell: Allow enable / disable of host

This commit adds two commands to btshell:
    * host-enable
    * host-disable

3 weeks agoMynewt: Stop the host on system shutdown
Christopher Collins [Thu, 4 Oct 2018 00:57:15 +0000 (17:57 -0700)] 
Mynewt: Stop the host on system shutdown

This is Mynewt-only feature.  When the system is shutting down, the host

3 weeks agoAllow the host to be stopped and started again
Christopher Collins [Thu, 4 Oct 2018 00:57:02 +0000 (17:57 -0700)] 
Allow the host to be stopped and started again

The application can stop the host by calling `ble_hs_stop()`.  Stopping
the host has the following effects:
* Abort all active GAP procedures with status BLE_HS_EPREEMPTED.
* Disallow any subsequent GAP procedures until the host is started
* Terminate all established connections.

If multiple clients attempt to stop the host simultaneously, all of
their provided callbacks are executed when the host stops.  The purpose
of this behavior is to guarantee a consistent shutdown procedure.

3 weeks agohost: Divide startup into two stages
Christopher Collins [Thu, 4 Oct 2018 00:34:56 +0000 (17:34 -0700)] 
host: Divide startup into two stages

Prior to this commit: host startup was done in a single stage by an
event on the default event queue.  This creates a problem if the
application wishes to run the host in a different event queue (i.e., not
the default task).  The typical init sequence looks like this:

1. Sysinit (start event enqueued to default event queue).
2. Application configures host, possible changing the host event queue.
3. Host start event runs in the default task.

The problem is that the start event in step three determines that the
host task is the currently running task.  This is always the default
task, which is incorrect if the user reconfigured the event queue.

Now: host startup is divided into two stages.  The first stage simply
enqueues a second event on the host event queue.  The startup sequence
now looks like this:

1. Sysinit (start event enqueued to default event queue).
2. Application configures host, possible changing the host event queue.
3. Stage 1 start event runs in the default task (stage 2 event enqueued
to host task).
4. Stage 2 start event runs in the host task.

4 weeks agoporting: Fix Makefile that lists non-existing file
Michał Narajowski [Thu, 15 Nov 2018 13:05:01 +0000 (14:05 +0100)] 
porting: Fix Makefile that lists non-existing file

4 weeks agohost/util: move function doc to header file
Hauke Petersen [Thu, 15 Nov 2018 09:33:36 +0000 (10:33 +0100)] 
host/util: move function doc to header file

4 weeks agohost/util/addr.c: fix typo in doc
Hauke Petersen [Thu, 15 Nov 2018 09:31:44 +0000 (10:31 +0100)] 
host/util/addr.c: fix typo in doc

4 weeks agoFixed build error of Mesh stack for 64-bit machine
Mehul Hirpara [Thu, 1 Nov 2018 03:50:47 +0000 (09:20 +0530)] 
Fixed build error of Mesh stack for 64-bit machine

4 weeks ago[porting][linux] Added timeout support to Eventq Get API
Mehul Hirpara [Wed, 24 Oct 2018 12:26:11 +0000 (17:56 +0530)] 
[porting][linux] Added timeout support to Eventq Get API

This change helps to get event from eventq with 0 timeout period.

4 weeks agoDynamically considering pointer size to support multiple platforms
Mehul Hirpara [Wed, 24 Oct 2018 12:18:07 +0000 (17:48 +0530)] 
Dynamically considering pointer size to support multiple platforms

This change helps filling bt_mesh_adv buffer correctly while sending
secure beacons (on Linux platform).

4 weeks ago[porting][linux] Added required APIs to build glue.c for BLE Mesh app
Mehul Hirpara [Wed, 24 Oct 2018 12:01:27 +0000 (17:31 +0530)] 
[porting][linux] Added required APIs to build glue.c for BLE Mesh app

4 weeks ago[porting][linux] Fixed build errors when BLE Mesh Shell is disabled
Mehul Hirpara [Wed, 24 Oct 2018 11:18:30 +0000 (16:48 +0530)] 
[porting][linux] Fixed build errors when BLE Mesh Shell is disabled

4 weeks agoMerge pull request #237 from wes3/nrf_hfxo_request
wes3 [Wed, 14 Nov 2018 00:10:55 +0000 (16:10 -0800)] 
Merge pull request #237 from wes3/nrf_hfxo_request

nimble/ll: Request/release hfxo using mynewt API

4 weeks agonimble/host: Allow auto-start to be disabled
Christopher Collins [Fri, 2 Nov 2018 19:44:22 +0000 (12:44 -0700)] 
nimble/host: Allow auto-start to be disabled

Before commit: the host always starts during system initialization.

After commit: a Mynewt syscfg setting (`BLE_HS_AUTO_START`) was added.
When this setting is disabled, the host does not start automatically.
Instead, the application starts the host using the new
`ble_hs_sched_start()` function.

`BLE_HS_AUTO_START` is enabled by default.

4 weeks agonimble/ll: Add hfxo request/release API 237/head
William San Filippo [Tue, 13 Nov 2018 00:02:18 +0000 (16:02 -0800)] 
nimble/ll: Add hfxo request/release API

Per code review, the new nrfx API are now only used if MYNEWT
is set to a non-zero value. For non-MYNEWT builds the nordic
clock register is accessed directly.

5 weeks agomesh: Minor fix trailing whitespaces
Łukasz Rymanowski [Fri, 9 Nov 2018 10:58:34 +0000 (11:58 +0100)] 
mesh: Minor fix trailing whitespaces

5 weeks agonimble/ll: Minor comment fix
Łukasz Rymanowski [Fri, 9 Nov 2018 10:43:41 +0000 (11:43 +0100)] 
nimble/ll: Minor comment fix

5 weeks agonimble/ll: Minor parameter name change
Łukasz Rymanowski [Thu, 8 Nov 2018 15:23:22 +0000 (16:23 +0100)] 
nimble/ll: Minor parameter name change

Let be consistent and use aux_data everywhere

6 weeks ago[linux] resolve merge conflict. Default to providing access to psm for l2cap coc...
Martin Turon [Mon, 29 Oct 2018 21:55:43 +0000 (14:55 -0700)] 
[linux] resolve merge conflict.  Default to providing access to psm for l2cap coc connections.

6 weeks ago[linux] Cleanup npl layer in linux port.
Martin Turon [Fri, 24 Aug 2018 01:39:33 +0000 (18:39 -0700)] 
[linux] Cleanup npl layer in linux port.

6 weeks ago[build] Adjust makefiles to support autotools integration.
Martin Turon [Fri, 24 Aug 2018 01:39:33 +0000 (18:39 -0700)] 
[build] Adjust makefiles to support autotools integration.

6 weeks agoFix links in
Chris Hemingway [Sat, 3 Nov 2018 12:07:53 +0000 (12:07 +0000)] 
Fix links in

6 weeks agonimble/ll: Fix handling TERMINATE_IND
Łukasz Rymanowski [Mon, 5 Nov 2018 10:43:03 +0000 (11:43 +0100)] 
nimble/ll: Fix handling TERMINATE_IND

When being master, we need to takie into acount MD flag when ACKing
TERMINATE_IND packet. Spec does not says that ACK shall be in the same
Connection Event

This fixes: LL/CON/INI/BV-06 and LL/CON/INI/BV-07

6 weeks agonimble/ll: Don't send scan request in passive scan
Łukasz Rymanowski [Thu, 25 Oct 2018 11:05:59 +0000 (13:05 +0200)] 
nimble/ll: Don't send scan request in passive scan

This fix applies only for extended scanner.

6 weeks agonimble/ll: Fix handling LL_CTRL is not used for given role
Łukasz Rymanowski [Thu, 18 Oct 2018 22:35:54 +0000 (00:35 +0200)] 
nimble/ll: Fix handling LL_CTRL is not used for given role

In such a case we should reply with LL_UNKNOWN_RSP

6 weeks agonimble/ll: Add missing check for support BLE_LL_CTRL_PHY_UPD_IND
Łukasz Rymanowski [Thu, 18 Oct 2018 22:09:17 +0000 (00:09 +0200)] 
nimble/ll: Add missing check for support BLE_LL_CTRL_PHY_UPD_IND

This is needed for LL/PAC/SLA/BV-01

6 weeks agoporting: Fix Tinycrypt port build
Michał Narajowski [Mon, 29 Oct 2018 10:43:06 +0000 (11:43 +0100)] 
porting: Fix Tinycrypt port build

Tinycrypt requires -std=c99 flag to build.

6 weeks agonimble/ll: Remove AUX from scheduler on scanner stop
Łukasz Rymanowski [Wed, 12 Sep 2018 11:50:51 +0000 (13:50 +0200)] 
nimble/ll: Remove AUX from scheduler on scanner stop

6 weeks agonimble/sched: Add way to remove given type of scheduled element
Łukasz Rymanowski [Wed, 24 Oct 2018 12:24:52 +0000 (14:24 +0200)] 
nimble/sched: Add way to remove given type of scheduled element

6 weeks agonimble/ll: Request/release hfxo using mynewt API
William San Filippo [Sat, 3 Nov 2018 03:57:33 +0000 (20:57 -0700)] 
nimble/ll: Request/release hfxo using mynewt API

This change is to use a new API committed to mynewt core that
will request the hfxo to be turned on and release it when the
hfxo is no longer desired. One reason to do this is that an
application may desire the hfxo to be on and nimble would
blindly turn it on/off when it wanted to. Note that the API
requires that the request/release be paired; you cannot release
without a request and if you request without a release the hfxo
will be on continuously.

A final note: the nimble link layer assumes that when it requests
the hfxo it needs to settle. If the hfxo was already on the code
would not need to wait for the settling time. The code has not
been updated to handle that case. This is not going to cause
any issues; it will operate as it did before. However, future
improvements could be to check if the hfxo was already on and
settled and thus not have to wait for the settling time.

6 weeks agoporting: do not assing timer ISR prio using RIOT
Hauke Petersen [Wed, 24 Oct 2018 13:30:05 +0000 (15:30 +0200)] 
porting: do not assing timer ISR prio using RIOT

6 weeks agonimble/host: Fix LE meta event length in debug code (#233)
Sam Anderson [Wed, 31 Oct 2018 10:22:18 +0000 (03:22 -0700)] 
nimble/host: Fix LE meta event length in debug code (#233)

* fix length comparison bug

* Revert "fix length comparison bug"

This reverts commit 9911d7744d23efa9d4f94a8c141fb4cedfcefec6.

* reflect length change as result of moving pointer forward

7 weeks agoMerge pull request #234 from cedric84/patch-1
Andrzej Kaczmarek [Mon, 29 Oct 2018 11:10:30 +0000 (12:10 +0100)] 
Merge pull request #234 from cedric84/patch-1


7 weeks agoBLE_L2CAP_EVENT_COC_DATA_RECEIVED and conn_handle 234/head
cedric84 [Mon, 29 Oct 2018 10:41:28 +0000 (11:41 +0100)] 

It seems that the "ble_l2cap_event_coc_received_data" function does not assign the "conn_handle" member of the "event" variable before calling the channel callback.
I did not found any other function raising the "BLE_L2CAP_EVENT_COC_DATA_RECEIVED" event so I think this is the only place to make such a correction.

7 weeks agoMerge pull request #228 from cedric84/patch-1
Andrzej Kaczmarek [Wed, 24 Oct 2018 07:45:25 +0000 (09:45 +0200)] 
Merge pull request #228 from cedric84/patch-1

Connection request rx while already connected

7 weeks agomesh: Fix memory leaks
banzhuan [Mon, 15 Oct 2018 03:06:59 +0000 (11:06 +0800)] 
mesh: Fix memory leaks
Function return without os_mbuf_free_chain(buf) after buf = NET_BUF_SIMPLE(n)
will cause memory leaks

7 weeks agoMerge pull request #218 from rymanluk/ll_part3
Łukasz Rymanowski [Tue, 23 Oct 2018 20:54:36 +0000 (22:54 +0200)] 
Merge pull request #218 from rymanluk/ll_part3

nimble/ll: Certification fixes part3

7 weeks agonimble/ll: Minor fix for missing static 218/head
Łukasz Rymanowski [Wed, 17 Oct 2018 22:35:58 +0000 (00:35 +0200)] 
nimble/ll: Minor fix for missing static

7 weeks agonimble/ll: Fix for sending unencrypted data on key refreshing
Łukasz Rymanowski [Wed, 17 Oct 2018 20:37:58 +0000 (22:37 +0200)] 
nimble/ll: Fix for sending unencrypted data on key refreshing

After encryption is paused we should make sure to not send any packets
from the queue before we encrypt again.

This is a fix for LL/SEC/SLA/BV-03-C

7 weeks agonimble/ll: Fix data TX time when slave response on PHY update proc
Łukasz Rymanowski [Tue, 16 Oct 2018 07:16:49 +0000 (09:16 +0200)] 
nimble/ll: Fix data TX time when slave response on PHY update proc

With this patch we make sure that slave does not send longer then it
should after it response on on PHY_REQ and when it receives LL_PHY_UPDATE_IND

This is according to Bluetooth specification 5.0 Vol.6 Part B,

"If a slave responds to the PHY Update Procedure then, during the period
starting when it sends the LL_PHY_RSP PDU and ending when it receives the
LL_PHY_UPDATE_IND PDU in response, the slave's Link Layer shall not
transmit a packet that would take longer than connEffectiveMaxTxTime
microseconds to transmit on any PHY that appears in both the TX_PHYS field
of its LL_PHY_RSP PDU and the RX_PHYS field of the master's

This fixes LL/CON/SLA/BV-49-C

7 weeks agonimble/ll: Fix data TX time when PHY update is started by slave
Łukasz Rymanowski [Tue, 16 Oct 2018 07:16:09 +0000 (09:16 +0200)] 
nimble/ll: Fix data TX time when PHY update is started by slave

This patch makes sure that Slave does not send longer then
connEffectiveMaxTxTime after it init PHY update procedure:

It is according to Bluetooth specification 5.0 Vol.6 Part B,

"After a slave sends an LL_PHY_REQ PDU, and until it receives an
 PDU in response, its link layer shall not transmit a packet that would take
 longer than connEffectiveMaxTxTime microseconds to transmit on any PHY
 that appears in the TX_PHYS field of that LL_PHY_REQ PDU."

This fixes LL/CON/SLA/BV-49-C

7 weeks agonimble/ll: Fix handling data pdu when starting encryption
Łukasz Rymanowski [Thu, 11 Oct 2018 22:30:16 +0000 (00:30 +0200)] 
nimble/ll: Fix handling data pdu when starting encryption

According to Bluetooth specification Vol 6, Part B, and
When master sends LL_ENC_REQ or LL_PAUSE_ENC_REQ, Slave can send all the
data which has in the queues. Once Slave sends LL_ENC_RSP or
LL_PAUSE_ENC_RSP, master should start to verify data pdu.

This solves: LL/SEC/MAS/BV-04-C, LL/SEC/MAS/BV-05-C, LL/SEC/MAS/BV-12-C,

7 weeks agonimble/ll: Fix InitA address type in the advertising report
Łukasz Rymanowski [Tue, 9 Oct 2018 11:36:21 +0000 (13:36 +0200)] 
nimble/ll: Fix InitA address type in the advertising report

7 weeks agonimble/ll: Improve handling disconnect when being Slave
Łukasz Rymanowski [Tue, 9 Oct 2018 08:41:56 +0000 (10:41 +0200)] 
nimble/ll: Improve handling disconnect when being Slave

When slave latency is greater than 0 we might not catch ACK on Terminate
Ind send by us being Slave.

At the moment, when Terminate Ind is sent, we keep listening for the ACK
however some devices waits with sending ACK for the next connection
event which we miss due to slave latency.

This patch fixes this.

7 weeks agonimble/ll: Fix handling BLE_LL_CTRL_CONN_UPDATE_IND and BLE_LL_CTRL_CHANNEL_MAP_REQ
Łukasz Rymanowski [Fri, 5 Oct 2018 13:33:03 +0000 (15:33 +0200)] 

When being master on the link, above LL commands are not used.
We should response with ERROR UNKNOWN RSP as per Bluetooth 5

"If an LL Control PDU is received that is not used or not supported, the Link
Layer shall respond with an LL_UNKNOWN_RSP PDU"

This is fix for LL/PAC/MAS/BV-01-C

7 weeks agonimble/ll: Store directed address in aux_ptr
Łukasz Rymanowski [Fri, 5 Oct 2018 08:13:42 +0000 (10:13 +0200)] 
nimble/ll: Store directed address in aux_ptr

We need to store so we can use it for e.g
directed scannable non-connectable advertising reports

7 weeks agonimble/ll: Improve sending extended advertising report
Łukasz Rymanowski [Thu, 4 Oct 2018 12:57:26 +0000 (14:57 +0200)] 
nimble/ll: Improve sending extended advertising report

Since adva and inita is already decoded and resolved if necessary,
let's pass it to function which prepare ext advertising event and do not
try to decode it one more time

7 weeks agonimble/ll: Improve handling exchange features
Łukasz Rymanowski [Thu, 4 Oct 2018 07:24:45 +0000 (09:24 +0200)] 
nimble/ll: Improve handling exchange features

There are certification test cases (e.g LL/CON/SLA/BV-80-C)
which expect us to send start LL procedure even features has not been
exchanged yet. In the same time, if given procedure failed, controller
shall remember it and do not start same procedure next time.

Note: In our controller, due to IOP issues, features are not exchanged only
when we are slave on the link.

Anyway, with this patch, when connection is established we assume
connection features matches our features. Any LL_UNKNOWN_RSP will clear
features from the mask.

Note: If feature exchange happen that this will be overwrite by actual

7 weeks agonimble/ll: Improve connect on directed advertising
Łukasz Rymanowski [Wed, 3 Oct 2018 13:19:18 +0000 (15:19 +0200)] 
nimble/ll: Improve connect on directed advertising

This patch fixes certification issues: LL/CON/INI/BV-10-C, LL/CON/INI/BV-21-C

When remote does directed advertising using identity address, initiator
should make sure privacy mode and also check local IRK if it is non zero

7 weeks agoUpdate ble_ll_adv.c 228/head
cedric84 [Tue, 23 Oct 2018 13:42:28 +0000 (15:42 +0200)] 
Update ble_ll_adv.c

The "ble_ll_adv_already_connected" call is now performed only if the PDU is an initiating PDU (BLE_ADV_PDU_TYPE_CONNECT_REQ, BLE_ADV_PDU_TYPE_AUX_CONNECT_REQ) so the advertiser will not ignore any scan request from an already connected peer.

7 weeks agoMerge pull request #198 from andrzej-kaczmarek/att-uuid-fix
Andrzej Kaczmarek [Tue, 23 Oct 2018 09:01:05 +0000 (11:01 +0200)] 
Merge pull request #198 from andrzej-kaczmarek/att-uuid-fix

nimble/host: Fixes for UUID handling

7 weeks agoConnection request rx while already connected
cedric84 [Tue, 23 Oct 2018 07:35:15 +0000 (09:35 +0200)] 
Connection request rx while already connected

In the situation I have to face, my slave allows several masters to create a connection with it.
The slave uses extended advertising and sends it continuously until a connection request is received.
A first connection is created and the slave transmits a new extended advertising. The master is reset (to simulate an issue) and restarts before the slave detects the disconnection. The master sends a new connection request as it receives the extended advertising and the slave stops the advertising state to enter the connection state. From the slave point of view, the connection already exists so the connection creation (done in the ble_ll_conn_slave_start function) fails but the advertising does not restart.
The update I propose is to ignore the connection request if the connection is already created before trying to create the connection. This way, the advertising state continues as if the frame was reject by the white list.
According to me, this update conforms with the Bluetooth Core Specification Version 5.0, Volume 6, Part B, Section 4.5, page 2637 "If an advertiser receives a connection request from an initiator it is already connected to, it shall ignore that request".
What do you think ?

Note : The code I insert in my "ble_ll_adv_already_connected" function is very similar from the one in the start of the "ble_ll_conn_slave_start" function, so it would perhaps be better to create this new function in the "ble_ll_conn.c" and to call it from the "ble_ll_conn_slave_start" and "ble_ll_adv_rx_req" functions.

Best regards,

8 weeks agoMerge pull request #227 from andrzej-kaczmarek/remove-yml-comments
Andrzej Kaczmarek [Mon, 22 Oct 2018 13:17:51 +0000 (15:17 +0200)] 
Merge pull request #227 from andrzej-kaczmarek/remove-yml-comments

Remove misleading comments from .yml files

8 weeks agonimble/host: Return non-equal when comparing invalid UUIDs 198/head
Andrzej Kaczmarek [Thu, 18 Oct 2018 16:02:36 +0000 (18:02 +0200)] 
nimble/host: Return non-equal when comparing invalid UUIDs

With all debug check disabled, we need to make sure that invalid UUIDs
are not compared as equal.

8 weeks agonimble/host: Do not assert on 16-in-128-bit UUIDs
Andrzej Kaczmarek [Thu, 27 Sep 2018 08:11:39 +0000 (10:11 +0200)] 
nimble/host: Do not assert on 16-in-128-bit UUIDs

It may happen that some evil peer sends 16-bit UUIDs as 128-bit ones
over ATT - we will just accept them and use as regular 128-bit UUID.

However, they will not pass sanity check thus we can have unexpected
assertion which should not happen. Let's just check UUID type and
ignore invalid contets which allows such requests to fail gracefully.

Note that we may still want to have better sanity checks for UUIDs
received from app which should not be able to pass 128-bit UUID instead
of 16-bit one, but this can be addressed later.

8 weeks agonimble/host: Cleanup handling UUIDs in ATT
Andrzej Kaczmarek [Thu, 27 Sep 2018 07:18:11 +0000 (09:18 +0200)] 
nimble/host: Cleanup handling UUIDs in ATT

This patch adds private APIs to initialize UUIDs which should be used
in ATT code - they guarantee that only 16-bit and 128-bit UUIDs are
valid since public API function also allows 32-bit UUID which are not
allowed in ATT.

8 weeks agoMerge pull request #137 from aykevl/function-pointer-types
Andrzej Kaczmarek [Fri, 19 Oct 2018 11:09:07 +0000 (13:09 +0200)] 
Merge pull request #137 from aykevl/function-pointer-types

porting: Use real function pointer types for ISR functions

8 weeks agoporting: Use correct type for ISR function pointers 137/head
Ayke van Laethem [Fri, 19 Oct 2018 10:36:21 +0000 (12:36 +0200)] 
porting: Use correct type for ISR function pointers

This fixes -Werror=strict-prototypes in RIOT.

8 weeks agoRemove misleading comments from .yml files 227/head
Andrzej Kaczmarek [Fri, 19 Oct 2018 09:19:49 +0000 (11:19 +0200)] 
Remove misleading comments from .yml files

These comments were added by some old version of newt and are never
updated after c&p so they are just misleading and unnecessary.

8 weeks agoMerge pull request #220 from michal-narajowski/btshell-adv-restart
Michał Narajowski [Thu, 18 Oct 2018 20:21:26 +0000 (22:21 +0200)] 
Merge pull request #220 from michal-narajowski/btshell-adv-restart

apps/btshell: Add option to restart advertising after disconnect

8 weeks agoapps/btshell: Add option to restart advertising after disconnect 220/head
Michał Narajowski [Thu, 11 Oct 2018 21:30:34 +0000 (23:30 +0200)] 
apps/btshell: Add option to restart advertising after disconnect

This patch takes into account both legacy and extended advertising. When using
legacy advertising (BLE_EXT_ADV: 0) all advertising parameters are remembered
to use when restarting. When using extended advertising the parameters
per instance are remembered by the host. For ext adv the app remembers
the handle of the connection that issued Advertising Complete Event.
Later, at a Disconnect Event, the code checks if we should restart advertising
for an instance related to that connection.

8 weeks agoMerge pull request #225 from haukepetersen/fix_nplriot_develhelpissues
Andrzej Kaczmarek [Thu, 18 Oct 2018 13:40:22 +0000 (15:40 +0200)] 
Merge pull request #225 from haukepetersen/fix_nplriot_develhelpissues

npl/riot: fix issues if building without DEVELHELP

8 weeks agonpl/riot: fix issues if building without DEVELHELP 225/head
Hauke Petersen [Thu, 18 Oct 2018 12:40:38 +0000 (14:40 +0200)] 
npl/riot: fix issues if building without DEVELHELP

2 months agoMerge pull request #222 from michal-narajowski/newt-compat
Michał Narajowski [Mon, 15 Oct 2018 20:36:39 +0000 (22:36 +0200)] 
Merge pull request #222 from michal-narajowski/newt-compat

Add latest version to newt compatibility list

2 months agoAdd latest version to newt compatibility list 222/head
Michał Narajowski [Mon, 15 Oct 2018 19:47:01 +0000 (21:47 +0200)] 
Add latest version to newt compatibility list

2 months agoAllow parallel tests
Fabio Utzig [Thu, 11 Oct 2018 03:30:14 +0000 (20:30 -0700)] 
Allow parallel tests

The build matrix was updated to support running tests on multiple machines.

Other small changes to formatting and style where applied, plus clone git
repos without history.

2 months agoMerge pull request #215 from michal-narajowski/gap-find-by-addr
Michał Narajowski [Thu, 11 Oct 2018 19:17:03 +0000 (21:17 +0200)] 
Merge pull request #215 from michal-narajowski/gap-find-by-addr

host/gap: Add connection find by address API

2 months agohost/gap: Add connection find by address API 215/head
Michał Narajowski [Tue, 9 Oct 2018 13:02:47 +0000 (15:02 +0200)] 
host/gap: Add connection find by address API

This may be useful in some cases.

2 months agoMerge pull request #214 from ccollins476ad/fix-hs-unit-tests
ccollins476ad [Tue, 9 Oct 2018 18:50:56 +0000 (11:50 -0700)] 
Merge pull request #214 from ccollins476ad/fix-hs-unit-tests

Fix unit tests involving `ble_gap_preempt()`