Adds HCI layer defines to be used by LE Remote Connection Parameter
Request routines.
Change-Id: I7274a33c704c47d81612dd67bd732ba48d3aa1c8
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
Adds new error codes to be used by Remote Connection Parameter
Request handlers.
Change-Id: Ief163350c677f251ea30c0ff2f1b70b86ee2a5f6
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
This callback is called if identity was resolved for remote device
that was using Resolvable Private Address while connection. From
now on only Identity Address is used.
Change-Id: I5976be575a8e4ad8c13f56d7bc274d751ae37511
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to request passkey being entered by user.
Change-Id: I6a56c65ca689473659a13c19f8578058476d2685
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
The term 'context' is vague and overloaded. Its usage for 'an execution
context' is now referred as such, in both comments and some APIs' names.
When the execution context can only be a fiber or a task (i.e. not an
ISR), it is referred to as a 'thread', again in comments and everywhere
in the code.
APIs that had their names changed:
- nano_context_id_t is now nano_thread_id_t
- context_self_get() is now sys_thread_self_get()
- context_type_get() is now sys_execution_context_type_get()
- context_custom_data_set/get() are now
sys_thread_custom_data_set/get()
The 'context' prefix namespace does not have to be reserved by the
kernel anymore.
The Context Control Structure (CCS) data structure is now the Thread
Control Structure (TCS):
- struct ccs is now struct tcs
- tCCS is now tTCS
Change-Id: I7526a76c5b01e7c86333078e2d2e77c9feef5364
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
Add support for signed write with sign parameter for write without
response.
Change-Id: I79008532d88b10d34db1f68898ad4258dd3e761b
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
This adds validation for passed callbacks. Previously registered
callbacks need to be explicitly unregistered by passing NULL.
It is no longer possible to implicitly overwrite callback
structure.
Input Output Capabilities generation is factored out to separate
function. This is in preparation for adding more callbacks.
Change-Id: Ie809ea2daa80f9c54585efb459b49af1107007d3
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to register agent with display capability resulting
in DisplayOnly InputOuput Capability being used.
Change-Id: I98931af35c51a71882b60303c0f5d4da19eefbc4
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
For now this is used only in conn.h. Allows to reduce includes
dependencies.
Change-Id: I60dbe588e711fa0332049cbea43ffb6838a58823
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This split the use of ATT Write Command and ATT Write Request since with
the former it is possible to sign the data thus making combinations of
parameters in bt_gatt_write complex/confusing.
Change-Id: I0349acd16d22ea4e38ac3e5ad8c3cdc318851633
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This enables writing from offset using Prepare Write + Execute Write
procedures including Long Write procedure when the data is bigger than
the MTU.
Change-Id: Id35d66c011ba582a4ba92ffe75444226e479335a
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
We need to be able to perform the init procedure asynchronously
through a callback. The RX fiber is a good candidate to use for the
callback since it's not active in its normal operation before
drv->open has been called. In order to prepare for a future
bt_disable() API the init API is renamed from bt_init() to
bt_enable(). If a NULL pointer is given as the callback the API
behaves synchronously like the old bt_init().
Change-Id: I4e78fa8f32dcf5477ea05a8db75aca5cdce591fd
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Adds bitmask to be used for validation of LE features
exchange support.
Change-Id: I96a79f5e5c4fef330933480f9dd5ec567cd9523f
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
Adds LE read remote features command and event types.
Change-Id: I3270142379c6f822f6f4be2e720c9cabb5d3df3e
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
The slave may request a change to the connection parameters using
the L2CAP LE signaling channel if either the master or the slave
or both do not support the Connection Parameters Request procedure.
Therefore if local controller doesn't support this, the request
can be made for sure.
Change-Id: I23e70793763693e40dab3bfb6a9634816f5b02b2
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
This is consistent with the rest of the API since the attribute length
can be at most 512 bytes long.
Change-Id: Ia2e60cf8dadcb93d0d091cda5be1b80de98fae94
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Attribute length can be up to 512 bytes long so it needs to be at least
uint16_t, ATT already takes care that the MTU does not exceed 512 bytes.
Change-Id: I6c8dc80a4b63f212420c26c0a24d93939fa510fe
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
With this patch advertising state and scanning state are stored as flags.
Change-Id: I5d2dc37972620ee89aaf55d45e294e8be82863d3
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
This adds bt_gatt_unsubscribe which can used to unsubscribe to attribute
value notification using CCC handle.
Change-Id: I8a3b1594787a3322834516d0306a84c8ef7792dd
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds bt_gatt_subscribe which can used to subscribe to attribute
value notification using CCC handle.
Change-Id: I0983843836b0c2253f750b34b7765dd880cb10a0
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
All public APIs shall contain the complete documentation including
@return in case the function return something.
Change-Id: I1f16eaf988ace1a3ac760c59eacd71a6a5912df9
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds bt_gatt_write which can used to write attribute value.
Change-Id: I45a02e6dbf642ed1bcab8234180f2c48a28e2874
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This function operates on bt_conn so it should be in conn.c and
exported through conn.h. Rename it with the appropriate bt_conn_*
prefix.
Change-Id: Id17c67f0e95cc1afb10aa7742b2d2ce0110ea616
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
The bt_disconnect deals with the bt_conn object and should therefore
reside in conn.c and be exported through conn.h. It should also have
the appropriate bt_conn_* prefix.
Change-Id: I75eb648fd9aa8ced9a991d472c319d25f4b772af
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This adds bt_gatt_read which can used to read attribute values.
Note: Attributes which values are bigger than the MTU need to be read
multiple time until the end since the stack cannot cache any data.
Change-Id: I09c502eeb674a577673182c35a0e1a84519fd3b7
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Calling bt_conn_set_auto_conn one can decide if auto connect shall
be used. If so, everytime the connection is lost, passive scanning
will be enabled to listen for connectable advertisements from
remote device and re-establish the connection.
Auto connect can be disabled if one decide to disconnect from
this device using bt_disconnect or call bt_conn_set_auto_conn
with auto_conn flag set to false.
Change-Id: Ic9952e313cb8612ea6c72838be0755805daeffcf
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
Enables directly add 16-bit value at the end of operational buffer.
Value is converted to little-endian format before is appended.
Position of buffer's tail is updated during addition.
Usage of bt_buf_add() call enables monitoring available limited room
in the buffer when CONFIG_BLUETOOTH_DEBUG is on.
Change-Id: Id7ac62cd3b11ef03302e94185a7faae747eccb20
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
This adds bt_gatt_discover_descriptors which can used to discover all
descriptors in the given range.
Change-Id: Idf93852ef9d8ba3bfce20dc0b95f4e11aa0dc73d
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds above function to stop ongoing advertising.
Change-Id: I16b3913524a61e844a81cbe733f2b8e6072ab442
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
This adds bt_gatt_discover_characteristic which can used to discover all
characteristics in the given range.
Change-Id: Ia7ddb93dfdb0f979409e133c902a1cbd9ae9fe71
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
gatt.h API depend on bt_uuid so make use uuid.h is always included.
Change-Id: If9d4e5a668ac4e0b167eda8fe41e8b4810dfe298
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
bt_gatt_discover can be used to discover primary GATT service by UUID in
a selected handle range, after it attribute found the function callback
is called so the user can interact the attribute found and decide to
continue to the next or stop.
Change-Id: I37514f00c82ce5520d7a14757a6ff12ee34f0736
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
If the Command Complete status is read, this status shall be returned.
Change-Id: Ic3fe102c16da4b01d002a2d39952fd401e9f832d
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
bt_gatt_exchange_mtu can be used to exchange MTU used by GATT, the MTU
is selected automatically based on the amount of data bt_buf can hold.
Change-Id: Id49a506663d922132e81c0a753a983b93579ffd0
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
The change replaces multiple asterisks to ** at
the beginning of comments and adds a space before
the asterisks at the beginning of lines.
Change-Id: I7656bde3bf4d9a31e38941e43b580520432dabc1
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Change all occurances of /*! to /** to match javadoc
style.
Change-Id: I3a759d34e0e928216f61252682266e64c5b875f8
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Adds HCI routine to cancel creation of outgoing connection.
bt_disconnect is called to cancel connection or disconnect based on current
connection state.
Change-Id: I462a61308a580bb24aa9a6c398eb7e443b995655
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
Enables make outgoing connection with error handling.
Free connection objects maintained in polls are assigned to active
connection by result of lookup on the polls based on input
peer LE address.
Updates shell application to reflect above changes in stack.
Change-Id: Ibc71343c0d122cc78c48bac2ff1e50533369b7d2
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
Also rename bt_conn_security function to bt_security and
bt_conn_security_t to bt__security_t.
Change-Id: I543c7b97241c4389ef0eb491b6869f93105ae533
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
This was same as low security and is not needed. This also match
security levels with LE Mode 1 security level from Core Specification.
Change-Id: Ia82e1f4d94c281d7e7f88f03a16a1e34eb49f710
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
This command will be used to enable encryption when acting as master.
Change-Id: Iaaf1d5b98bfcfcf17a5cc7006a6c40d0905011fd
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
This adds bt_conn_security function that can be used to elevate
security on connection. If device is not paired it will trigger
pairing first.
For now only JustWorks pairing is supported so full security level
tracking is not needed as only medium level is supported.
Change-Id: I6d344f55286a79bd989bd18f852a6859dc8ea96a
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
Now that bt_conn is public using it directly is much more convenient
and in some cases save a lookup by address.
Change-Id: Ia489948634984fe4f1a430da553f8a2a740fb531
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This makes sure the bigger members are always list first in non-packed
struct to minimize the use of padding for alignment by the compiler.
Change-Id: I64419e9b27f4e7d3abb4eeb0ef2a88beda5b22e3
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Changing the spelling to comply with the checkpatch tool.
Change-Id: I7f28fd73bfbc89d91e4d7caccffa2c018dcadf6d
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
When connected, the peripheral/slave can trigger changing connection parameters.
Handle such request on central/master and if needed update controller settings
regarding the relevant connection parameters.
Change-Id: If3c1d91752f8d3875918bd8bfe923330790f530e
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
This function allows to pick connection destination address.
Change-Id: I3e4959eec00905c64de3d8b9ef810b613c2e9f91
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
Make the documentation style consistent and add documentation to
functions that were missing it.
Change-Id: I1822480a604bb2efcb0dbfc63ae0675ebf4b5987
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Adds user helper functions dealing with formatting bluetooth
address.
Refactors internal helpers using public ones.
Change-Id: If7b9f9a93b2aef3d25df55d6cfae9de05d8830b0
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
Enables sending LE discovery results to user app.
Updates central apps to use new scan API.
Change-Id: Id319c96e15554f2eed4cf507cddd114ca74aa8e5
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
This API is useful for applications wanting to monitor and disconnect
connections.
Change-Id: Ib1a98ece364f137262515fbb1163c6b08ddf792c
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
There's no clear need for this API (at least for now) and supporting
it means we really need to get all state cleanup procedures correct.
Remove it for now.
Change-Id: Ia2c7d51d410117bef12bc08f4f97a4e38ccfb77a
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This makes it clearer that this is a specialized API not intended for
general app usage (unlike most other things in bluetooth.h).
Change-Id: I0ce1d5903610a9b3a99cf0be9f0e1462b04bf45a
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
To make it clearer that these helpers are intended only for
Bluetooth-subsystem internal code, move them to a separate file.
Change-Id: Iea64780f5c61c1c96e12c9df378676bc49498fe4
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Always prefix UUIDS for characteristics with service name.
Change-Id: Ic435fa725e6bc8918af631632156b071121cd0e0
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This makes use of new guidelines to document Bluetooth UUID API.
Change-Id: Ib4c96f97709610b762f6e839294a4db3ac447e73
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Adds internal HCI interface routine for creation of basic ACL LE link.
Most of the command interface parameters are fixed.
The internal interface is then used directly by simple public interface with
no connection validation.
Change-Id: I8ed72a9d01348e2a05b62facc9e85060e4500631
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
Now that we have a publicly exposed connection object it makes sense
to pass that to the connection callbacks rather than an address.
Change-Id: I8e9b17733d1789539a83c3dbc7a778336d2b71ff
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This one should be used for all public connection related APIs. Right
now it includes the reference counting and connection callback APIs.
Change-Id: Ib9b67e6115bb2e51322644757da1170851c3ca17
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Functions bt_init and bt_start_advertising are referenced in the
doxygen documentation. Documenting them gives better overview.
Change-Id: I70cb19a0a3232ce5abfb22c3a352bf3868c6f8fb
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Add BT_GATT_CEP and BT_GATT_LONG_DESCRIPTOR so which can be used by
a task to declare long attributes.
Change-Id: I37a0bb1851b60f3cdfa7e2f00ade70d5c344abbf
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Characteristic Extended Properties has 16 bits not 8 bits as value.
Change-Id: I307fd27a6d589d6614829df178ff890301a9b6be
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This introduce a new callback called flush to bt_gatt_attr to indicate
when and attribute can cache data, the data is automatically flushed if
regular write request happens and in case of prepare write it checks if
flush is supported otherwise return an error, then upon receiving an
execute write it perform flush over the entire database and respond
with result:
< ACL Data TX: Handle 42 flags 0x00 dlen 6
ATT: Execute Write Request (0x18) len 1
Flags: Immediately write all pending values (0x01)
> ACL Data RX: Handle 42 flags 0x02 dlen 5
ATT: Execute Write Response (0x19) len 0
Change-Id: I2c47f962858b8a741bf40509a648fe2cd6755691
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This makes use of new guidelines to document the GATT API.
Change-Id: I5544f449e11dd72c68b0efb15bd06db44ec30279
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
When a connection is made, track its role.
Only peripherial/slave role may trigger update of L2CAP connection
parameters.
Change-Id: I72244581650248c7b020c9e5673b73ce46e7399d
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
The spec says that CCC shall only be persistent accross connection for
bonded devices:
'The Client Characteristic Configuration descriptor value shall be
persistent across connections for bonded devices. The Client Characteristic
Configuration descriptor value shall be set to the default value at each
connection with non-bonded devices'.
To handle this now each configuration has a valid field indicating if the
configuration is valid.
Change-Id: Id74ac54f5e23a7a0b286f90dbc9af4e9ee966dd4
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This patch adds callbacks to notify app about connection and disconnection.
Change-Id: If8091254d929fe53d12b153e6f216223a8913f2d
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
The PACK_STRUCT macro will be removed soon and __packed is what all
code should use. Convert all the usages in Bluetooth code.
Change-Id: Id5c724566565f67fa8167b61398c508194ece89b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Reorganize and compress some of the buffer variable to achieve smaller
struct size.
Change-Id: I1ce711c22844470403b085b0f13e77f762f25262
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
All public headers should be self-contained. Since gatt.h uses the
ARRAY_SIZE macro it should also include the <misc/util.h> header file
that provides it.
Change-Id: I1fea66d10f452e51d9af5f5c6c345b5bb5a92d00
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This field can be used to set the required permissions for an attribute
which can be checked by Bluetooth core before calling the callback.
Change-Id: Idcab8cdc5744358fab0b3c67b9c0503f1d1d9736
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Add Device Information Service along with model characteristics and
descriptor to the database table.
Change-Id: I28775cf48abe76d0a841ebc92e1579e2d4cdfa09
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This event comes instead of Encrypt Change when we re-encrypt an
already encrypted connection.
Change-Id: I7fe9545e6c58392a34d72f3dd3962c475ebb7871
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
The public header file buf.h uses stdint.h definitions and should
therefore have the necessary include statement (since public header
files are supposed to be self-contained).
Change-Id: I9e2a9e13e5d2c35aa61c7552c3ba9fa73b8886a6
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
bt_gatt_notify can be used to send ATT notifications:
< ACL Data TX: Handle 3585 flags 0x00 dlen 8
ATT: Handle Value Notification (0x1b) len 3
Handle: 0x0010
Data: 64
Change-Id: I908f10f9e60dc7cef221e4b27c3b6e49e7b0cfc9
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
BT_GATT_CCC uses _bt_gatt_ccc internal struct to handle peer
configurations and special helpers to read and write to minimize the
code necessary to handle CCC in the task.
Note this not yet include handling of connection and disconnection but
the idea is that the core would automatically disable the configurations
while disconnected and re-enable once peer connect back.
Change-Id: I89325b8a074766b9fd2423085565df669f7275e1
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
To implement CCC properly it is required to know the remote address since
it is per client, futhermore bt_gatt_notify requires an address where to
send the notification.
Change-Id: I9d9fdf72d668831bed76e2aef06816af3620f4b8
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Hexadecimal values should be in lower case.
Change-Id: Id79347997bab0673fb90f6f00ec9c2cff1440ee2
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
bt_gatt_foreach_attr iterates over attributes via callback, it will be
used to implement discovery functionality.
Change-Id: Ice66f4b3d0d12b3616986931d5da0fe0f202e533
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
bt_uuid_cmp compares 2 UUIDs returning if they match, if the types are
different it converts both to 128 bit format before performing the
comparison.
Change-Id: Iacf330cc0271a7e5429cbb2f405a7d9ef249a1a3
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Add Battery Service along with its characteristics and descriptors
to the database table.
Change-Id: Ifb83ebcb4d6cdafa5df84d643b2e2a69e5a6c1e3
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Add Heart Rate Service along with its characteristics and descriptors
to the database table.
Change-Id: Ibff52da7352883edccb7c5b903538a81aad2ba55
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>