Dummy 802.15.4 has now some additional check to verify that we
are really sending correct amount of bytes.
Change-Id: I4d223c02e2628966e3b1a3cdcf7b560043d7d788
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If the stack is sending network packets by itself, like when
sending router or neighbor solicitation messages, then remember
the original length of the message. This is important because
uIP stack will clear the length of the sent message after it
is sent.
After this change, the lower level drivers can use
the net_buf_datalen() to get the original length of the
buffer. The issue is seen because uIP stack is running in
different fiber than the network device driver.
Change-Id: I6078c5d716bba455a93be9be122e97cd24b8dc0e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Print information about how much data we are losing if
null fragmentation is used.
Change-Id: I2f18d180a4c75768534de851c7cc27c3e70ca310
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Adding selection of 6LoWPAN compression method to Kconfig.
Possible values are:
* no compression
* IP header compression
Change-Id: I8721fa683f7488ec9ad0bf37f6637fa264c2038f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
User can set the desired network id from Kconfig.
Change-Id: Iac9de1deb2b01bcfcb3382849d451dce1a05077a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
When 802.15.4 code is receiving the network buffer, the uIP
stack might have zeroed the buf->len value. Restore it back
here so that other parts of the stack will get sane value.
Change-Id: I8fb3c1d3a3c9b0f41f3915d0f31d78afeccf68b6
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Gather connection and SMP related code togerther to that those can
be places under single blocks of ifdefs.
Change-Id: Ief418536e0e0f389fdde3bb3ac8b85bcfce9ac79
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to monitor stack usage in timeout fiber. Since timeout
fiber migth not be even started (eg when there was no SMP command
sent or receive) analysis is done only when timeout fiber is stopped.
Change-Id: I0ff6c081b9077f8f8294386306a3fe0ed77099a8
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This introduces simple API for analysing stack usage. Stack growth
direction is determined on build instead of runtime.
Change-Id: Iacb160d088cc0af57e2e9dedc72cbc5e31fd22f4
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Add support for timing out SMP commands. Timer is restarted on sending
any SMP PDU and if reached 30 seconds pairing procedure shall be
considered to have failed.
This was affecting TC_PROT_BV_01_C and TC_PROT_BV_02_C SMP
qualification tests.
Stack size used by timeout fiber is based on observation:
smp timeout (real size 128): unused 16 usage 80 / 96 (83 %)
Change-Id: I87a16cc51046b6a2487a0a1a736035d64b011d09
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This patch adds additional flag that is used for tracking if pairing
is in progress.
Change-Id: Ie21b8d9440ea4bc64dd552d49eaebfd4b569f176
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Parent link metric was incorrectly printed.
Change-Id: I479820f850d8e9a5459667d58bc35c8174a77559
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
When enabled, probes will be sent periodically to keep
parent link estimates up to date.
Change-Id: Ia7f1fe7cd28bb487c64a41159fffdf3665e9e1df
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
User needs to be able to configure used OF as all RPL nodes
in DODAG need to use the same OF. Default OF is MRHOF RFC 6719.
Other alternative is OF0 RFC 6552.
Change-Id: I6d135a6a2c6880a919993e29b0985d4c686b8a9d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Refines errors check when attempting to write over the boundary
of attribute room.
Change-Id: Ia27b86ce380a178b8e7834adf6da4009a6d60233
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
The etimer.c does not need to know about ctimer_process so
remove the extra variable.
Change-Id: I761a9d79c09876c5270e294dd008a8821705e9a2
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The code did not mark net_buf to be freed in a case of error
when receiving data. This caused the system run out of network
buffers very fast. It is necessary to set uip_len variable to 0 so
that the upper stack can free the buffer in this case.
Change-Id: Id5e009affcb2ce916f21fcf60060efb1c6d1ec0c
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Allocate a net_buf when a network packet is about to be sent.
Earlier one statistically allocated buffer was used for sending
RPL packets but this did not work well enough and it cluttered
the RPL APIs with redundant net_buf parameter.
Change-Id: Ib4160167f8deac83c30852af2346acdf6c6f711b
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
When the timer is set, the caller needs to specify the function
that is called when timer expires.
Change-Id: Iae69986c6f32b789d708247b187d143e45d73828
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The RPL support needs bigger stack than 600 bytes.
Change-Id: If61fb2b4874d32d6e02c8e510cccd45246332da5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Print RPL statistics in the general IP statistics printing
function if CONFIG_RPL_STATS is defined.
Change-Id: Iefc3a1e5186b052e91b17309a6e9fdeb2fa70886
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Need to use pointer when printing link address.
Change-Id: Ied7fcbefc02034e0ddbe714716b883de33d1e724
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
For RDC (Radio Duty Cycling) we activate nullrdc driver
if 802.15.4 is not used.
Change-Id: I793b84ee8e81cdbc8315758f1b83f7ad3bd7555a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This allows to reduce BT buffers used if connection
support is disabled.
Sample beacon application size reduced from 15212 to 14956 bytes.
Change-Id: I431ea5087706a06eaea76d572839c3afebfb963e
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Make connection related code splitable. This is in preparation for
not compiling connection related code.
Change-Id: I24e21eb553da4a3522916e5cfe17e4b51526ad4d
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to not compile SMP support for devices that don't
require pairing. It is required to support SMP channel and reply
with error for any command received even if pairing is not supported.
To handle this cleanly a null smp implementation is used that case.
Change-Id: I656a52dac882839db904eee65f25a4e29ea2d8c2
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to not compile data signing support if it is not
required. Reduces image size of peripheral sample app from
45772 to 44436 bytes.
Change-Id: I2cd3515973d1a70f478cbd68426ec84fd1645d19
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to specify which roles are supported. Broadcaster and
Observer roles are always supported.
Image size reduction for samples apps:
beacon 43148 -> 15196
central 46892 -> 46356
peripheral 47532 -> 45940
Change-Id: If260c13d63651b9b54df5bafc2c412b01dcb1eb0
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
If remote IO capabilities is KeyboardOnly and local is KeboardDisplay
passkey should be displayed on local side.
This was affecting TC_PKE_BV_01_C Security Manager qualification test.
Change-Id: I4d21925f3f0903250b190ae83eee7f4529114579
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This adds support to BT_GATT_DISCOVER_SECONDARY to bt_gatt_discover using
Read by Group Type request as following:
Change-Id: I2c3907dcc18ad077c3161fda9ad94fe3b5e4fd45
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds support to BT_GATT_DISCOVER_INCLUDE to bt_gatt_discover using
Read by Type request as following:
< ACL Data TX: Handle 3585 flags 0x00 dlen 11
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0001-0xffff
Attribute type: Include (0x2802)
Change-Id: I4452e99f08d0b61cc52fe943eb40527561f3ed60
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Add discover type to bt_gatt_discover_params to the API is reduced to
just bt_gatt_discover, this should simplify adding support for
discovering secondary and included services.
Change-Id: Iadeed86fed115afee1340b2c09821d7fafdda0f4
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
If tinycrypt is compiled in use it for encryption instead of HCI LE
Encrypt command.
Change-Id: I9cf70540f14ed449bfda52c4a0901462b9a60fe9
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
These features set are not experimental anymore.
Change-Id: Ia9e4803982f625157e78c8002c38fed1e95c4892
Signed-off-by: Jesus Sanchez-Palencia <jesus.sanchez-palencia@intel.com>
This enables bt_gatt_subscribe to subscribe using indication value in
addition to notification.
Change-Id: I25f3b057e36b023a79fb66b11b70716ecc299ba9
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
The correct code is 0x1e not 0x1f.
Change-Id: Icee68ebd01d76a4b3ed31a54e18b1115172f5b71
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Some controllers are broken in that they may send a completed packets
event after a disconnection has already occurred and the handle is
invalid:
> HCI Event: Disconnect Complete (0x05) plen 4
Status: Success (0x00)
Handle: 64
Reason: Remote User Terminated Connection (0x13)
< HCI Command: LE Set Advert.. (0x08|0x000a) plen 1
Advertising: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4
LE Set Advertise Enable (0x08|0x000a) ncmd 1
Status: Success (0x00)
> HCI Event: Number of Completed Pa.. (0x13) plen 5
Num handles: 1
Handle: 64
Count: 1
Since the disconnection code already takes care of updating the
le_pkts_sem semaphore appropriately there is no need to do anything
for this kind of events (except log a warning of a misbehaving
controller).
Change-Id: I67b35aa50f7297d6bcdeeeab62f1f1d224b1a372
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This is in preparation for being able to compile out SMP support.
Change-Id: Idb3597dd16e457d19d592a9b7dce954b950b174e
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Separate connection master role related parts in single block making
it simpler to split. This is a preparation for being able to compile
in only central or peripheral role support.
Change-Id: I27dc9b32048bf4e682149d5f1d5edbd994155e2b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
The HCI driver send() callback may fail and in such a case require
different handling on the core stack side. This patch introduces the
missing error handling to the places calling drv->send().
Change-Id: Ia0e4f05aedd88c268cf0da98b11924eb3c5c4c0b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
The core specification says the following about the treatment of
unacknowledged packets when a disconnection occurs (page 773 in core
spec 4.2):
"When the Host receives a Disconnection Complete, Disconnection Physical
Link Complete or Disconnection Logical Link Complete event, the Host shall
assume that all unacknowledged HCI Data Packets that have been sent to the
Controller for the returned Handle have been flushed, and that the
corresponding data buffers have been freed. A Primary Controller does not
have to notify the Host about this in a Number Of Completed Packets event"
This patch adds tracking of unacknowledged packets on a per-connection
basis and makes sure the semaphore that counts controller buffers is
given back the appropriate amount when a disconnection occurs.
Change-Id: I2ff4d12ffa50d4dda5b3e8c75fc75b4c0927e609
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Separate connection related parts in single block making it
simpler to split. This is a preparation for being able to compile
out connection support.
Change-Id: I992e604cae848ed2dfe821a6971248e53ae23498
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This patch factors setting up controller to host data flow control
to separate function. This is a preparation for being able to compile
out connection support.
Change-Id: Ibcce0b740534331a6365c2370b7b637877d71560
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
All required includes should be placed in source file that includes
internal header.
Change-Id: I161e7ebe2e62377ea4cf03f759d48f5900103076
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Writes to GATT attribute that has no write permission set, should
return write not permitted (BT_ATT_ERR_WRITE_NOT_PERMITTED)
in check permission routine.
Change-Id: I95f0988e171294cd98b79d3e7b518383ac47567d
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>