Commit graph

124 commits

Author SHA1 Message Date
Andrei Emeltchenko
bef9fb8189 drivers/nble: Update RPC to Nordic BLE chip
Update RPC functions and data types, works with NBLE firmware
niko-0301

Change-Id: I3538fab1d20c6e140d995a797d68486be6cd0f23
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-03-08 10:57:03 +00:00
Luiz Augusto von Dentz
68ee16d85c Bluetooth: GATT: Add bt_gatt_indicate
This uses ATT Indicate Value command to indicate changes and wait for
confirmation response.

Change-Id: I123a00e374929d779f96a02440215c32c0e79423
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-03-07 16:44:15 +00:00
Andrei Emeltchenko
ba169c5819 drivers/nble: Implement NBLE GATT discover response
Implement GATT nble_gattc_disc_rsp() function, may be tested with
bluetooth shell app.

Change-Id: I80c9596e83310902de40f6e91d2ecd4b5d2f3292
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-03-05 19:42:00 +00:00
Daniel Leung
e643cede3a uart: add ISR callback mechanism for UART drivers
The peripherals utilizing UART were required to register their own
ISR rountines. This means that all those peripherals drivers need
to know which IRQ line is attached to a UART controller, and all
the other config values required to register a ISR. This causes
scalibility issue as every board and peripherals have to define
those values.

Another reason for this patch is to support virtual serial ports.
Virtual serial ports do not have physical interrupt lines to
attach, and thus would not work.

This patch adds a simple callback mechanism, which calls a function
when UART interrupts are triggered. The low level plumbing still needs
to be done by the peripheral drivers, as these drivers may need to
access low level capability of UART to function correctly. This simply
moves the interrupt setup into the UART drivers themselves. By doing
this, the peripheral drivers do not need to know all the config values
to properly setup the interrupts and attaching the ISR. One drawback
is that this adds to the interrupt latency.

Note that this patch breaks backward compatibility in terms of
setting up interrupt for UART controller. How to use UART is still
the same.

This also addresses the following issues:

() UART driver for Atmel SAM3 currently does not support interrupts.
   So remove the code from vector table. This will be updated when
   there is interrupt support for the driver.
() Corrected some config options for Stellaris UART driver.

This was tested with samples/shell on Arduino 101, and on QEMU
(Cortex-M3 and x86).

Origin: original code
Change-Id: Ib4593d8ccd711f4e97d388c7293205d213be1aec
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2016-03-05 13:37:57 +00:00
Johan Hedberg
bab3b49fdb Bluetooth: Change GATT callback return values to ssize_t
Since the return value of these callbacks is a number of bytes ssize_t
is more appropriate than int.

Change-Id: I3406fb382975d62f51e7a195666d0ae88364fd2c
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-20 15:39:33 +00:00
Andrei Emeltchenko
63ae9e6f53 drivers/nble: Export bt_conn_lookup_handle()
bt_conn_lookup_handle() would be used in gatt.c to access conn's
discovery parameters.

Change-Id: Ibb494cf8af90ccab478fa7463a41942b06029539
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-19 13:03:47 +00:00
Andrei Emeltchenko
36a59be90a drivers/nble: Store GATT discover parameters
Store GATT discover parameters in bt_conn due to lack support from
NBLE RPC.

Change-Id: I47ade89b4861c9f1260ce3a3dc158d6344de334e
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-19 13:02:33 +00:00
Johan Hedberg
7078efb1ae drivers/nble: Fix GATT error response values
Change-Id: I18cc1788e429876702614ddb2810de53625e8791
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-19 12:52:32 +02:00
Andrei Emeltchenko
5d13a3ef96 drivers/nble: Fix function name
Change-Id: I124be5419ec23feeec6ac82857446c134c8c6e96
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-17 17:10:05 +02:00
Andrei Emeltchenko
1138996744 drivers/nble: Cancel connect req when receiving disconnect cmd
Cancel ongoing connect request when we receive disconnect command.

Change-Id: I12f1c1326c4b13672879b8f2dbe457cae395b486
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-17 17:10:05 +02:00
Andrei Emeltchenko
dc9ff5872b drivers/nble: Implement bt_conn_disconnect()
Implement bt_conn_disconnect() API function.

Change-Id: I08979d35400cf947d7ec646bad72f625141f95e0
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-17 17:10:05 +02:00
Johan Hedberg
a72d967d33 Bluetooth: GATT: Expose ATT error codes to application callbacks
Introduce BT_GATT_ERR macro to make it possible for application
callbacks to return exact ATT error codes.

Change-Id: I971536508e75036fbddc40b3f33e5201e11940bc
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-17 15:05:34 +00:00
Andrei Emeltchenko
b125e38f9c drivers/nble: Add connection states
Connection state helps to keep make right choice when connecting /
disconnecting.

Change-Id: Ifea620c05f869a633f578bf5d5c8ba603a58a46a
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-17 14:58:11 +00:00
Andrei Emeltchenko
017394c2a6 drivers/nble: Add debug option for Nordic RPC
This debug option enables debug of Nordic RPC.

Change-Id: I2e963f10ed6407b836e1572673244cb0187227d2
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-16 17:20:53 +00:00
Andrei Emeltchenko
fb68b8e780 drivers/nble: Enable NBLE GAP debug
Use NBLE_DEBUG_GAP to enabled / disable GAP NBLE
debug.

Change-Id: Iefbb18e697d523137a101df00b02d46e209e7f14
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-16 15:45:22 +00:00
Andrei Emeltchenko
68fcd4e04b drivers/nble: Implement client scanning
Implement Bluetooth LE scan start/stop API for Nordic.

Change-Id: I3dc153346d0135501091a4b952a3c60c081802db
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-16 15:10:01 +00:00
Andrei Emeltchenko
b4bf9f8b58 drivers/nble: Implement bt_conn_create_le()
Implement bt_conn_create_le() and copy bt_le_conn_params_valid() from
net/bluetooth.

Change-Id: I6b3fff5027a82b8040c0c724eac1251945415f43
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-16 14:35:14 +00:00
Andrei Emeltchenko
0fc0472bad drivers/nble: Update connect request parameters
Structure has changed in firmware headers.

Change-Id: I0df1549ce5353a2c7807f7839ee9270e833fbbf2
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-16 08:08:03 +00:00
Andrei Emeltchenko
b595f27c13 drivers/nble: Clean up nble headers
Change-Id: Iec078bf3cc4ee99a7df95a687272972b793844e6
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-15 14:52:31 +00:00
Andrei Emeltchenko
dfb5c2172b drivers/nble: Remove not used version_header struct
Change-Id: I72ff7bf785884bf20882af536d9fa2977e70d598
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-15 14:52:22 +00:00
Andrei Emeltchenko
805a126059 drivers/nble: gatt: Implement bt_gatt_discover()
Implement bt_gatt_discover() function.

Change-Id: I1662c650fc2c9c8058c4518c5f9920647f489d40
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-15 14:52:14 +00:00
Andrei Emeltchenko
9162e6aef0 drivers/nble: Use weak function definitions
Remove empty function declaration using weak autogenerated method.
This solves API to NBLE constantly changing problem.

Change-Id: I2ff90559dfbf78e9c34e602195d8a76ab9750a47
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-15 14:51:58 +00:00
Andrei Emeltchenko
d2dde33254 drivers/nble: Fix use of uninitialized data
Change-Id: I447614096180e5984b4b7a2494e0932fafe9c500
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-15 13:50:11 +00:00
Johan Hedberg
058d5b2266 drivers/nble: Kconfig: Add a note about ABI requirements
Change-Id: I2a5ff8b6944fd4022a02364bf75223af33b5cdd7
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-15 12:51:28 +00:00
Andrei Emeltchenko
3df0272a38 drivers/nble: Fix use of uninitialized status
Change-Id: Id14f33ca02717ba9a3d2c7e557672b32a139752d
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-15 12:43:59 +00:00
Johan Hedberg
acdee60fa5 drivers/nble: Export local address for bt_conn_get_info()
The bt_conn_get_info() API also needs the local address. For now
simply use an extern declaration to get access to the variable that
resides in gap.c.

Change-Id: I3ddb598785cfb6a5d07fc10621f6d20a610536be
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-15 11:27:56 +00:00
Johan Hedberg
f0315be577 drivers/nble: Track all connection parameters
The bt_conn_get_info() API requires that we track the role and the
various connection parameters.

Change-Id: I732eace1e45173f94962df3f11dbe5ad520a75cf
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-15 11:05:01 +00:00
Andrei Emeltchenko
cde38ed754 drivers/nble: Fix passing uninitialized callback
Initialize callback to NULL.

Change-Id: I8c985fc656499f1885fbc58ddfd0f80acf2f18cf
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-15 10:25:37 +00:00
Andrei Emeltchenko
123c6b8ba2 drivers/nble: Update headers following new 0215 fw release
These are mostly cosmetic changes, shall work with firmwares
niko-0214 and niko-0215.

Change-Id: Id39c6b9cee6e759f77a05259632e453492ffe498
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-15 09:57:39 +00:00
Andrei Emeltchenko
0270fe43a5 drivers/nble: Change RPC following firmware update
Due to firmware update of NBLE starting from 02/12 revisions onwards
there is a need to sync RPC headers and functions.

Only to be used with above mentioned NBLE firmware!

Change-Id: Ifc2ce28f81e819bb517ef3891610d78089a00428
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-12 16:57:56 +00:00
Johan Hedberg
f15b3fbf6a drivers/nble: Take advantage of the new net_buf_pull_u8() helper
Change-Id: Ia1c90c178b385b5bdb2e60a597810aa296c4da3e
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-12 16:25:47 +00:00
Johan Hedberg
c3ba08c552 drivers/nble: Add proper boundary checks for function tables
We should just discard the data if the received table index goes
beyond the actual table size.

Change-Id: I267621f098e349abab5a1f37f485a28448a9396b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-12 17:10:42 +02:00
Johan Hedberg
ed8c6b361f drivers/nble: Convert RPC deserialization to use net_buf
The data is in a net_buf already so we can just pass this to the
deserialization code. The net_buf context and API helps simplify the
code quite a lot.

Change-Id: Iecb62d3151d229a09538ad652508f1eb9c6c3ffc
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-12 17:10:42 +02:00
Johan Hedberg
984c7a6945 Bluetooth: Kconfig: Introduce BLUETOOTH_RX_STACK_SIZE
Applications may want to fine-tune the stack size of the fiber that's
used to make callbacks into the application.

Change-Id: I2cd3e79283fe85359389528e84d9bcc21e3e19f6
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-12 13:01:13 +02:00
Johan Hedberg
24730069ab drivers/nble: Make UART reading more robust
Don't require being able to read the full header in a single ISR call.
Instead track the number of received header bytes. Also check for IPC
length before allocating buffer to avoid unnecessary buffer
allocations.

Change-Id: I1678c3ac3aaf35a1b9bbe930cc2e942fce3f458a
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-12 11:01:04 +00:00
Andrei Emeltchenko
b436fa16b5 drivers/nble: Enable UART debug only if BLUETOOTH_DEBUG_DRIVER enabled
This allows to decrease number debug messages using config option.

Change-Id: I987d25c6d4b18503d6beb7feab97e9207100323d
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-11 15:34:53 +02:00
Andrei Emeltchenko
14680cf4ff drivers/nble: Add Kconfig option to debug UART driver
Change-Id: I49d3b2f29039e85247329e307d17085b5b5abfe9
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-11 15:34:45 +02:00
Johan Hedberg
9632d46ae7 drivers/nble: Clean up & simplify IPC UART encoding
We can take advantage of the net_buf headroom. At the same time move
the necessary definition straight into uart.c and remove any unused
definitions.

Change-Id: I932bba2cfb11808aabce7bad09e41f94d073bb5b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-11 12:44:41 +00:00
Johan Hedberg
58ba5e8633 drivers/nble: Convert RPC serialization code to use net_buf
Using net_buf helps us remove a lot of the pointer & data length
book-keeping variables and in general makes the code more readable.

Change-Id: Iec870a3bacbb63b55329ef5214b0ee0a757f5b1e
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-11 11:50:28 +00:00
Luiz Augusto von Dentz
6514cda4b2 drivers/nble: Enable debug only if CONFIG_BLUETOOTH_DEBUG_GATT is defined
This will prevent debug output to be printed if in case
CONFIG_BLUETOOTH_DEBUG_GATT is not defined.

Change-Id: I93be7ccbcf0a8eae5ecb54b174d6ed2d892673dd
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-11 11:49:50 +00:00
Luiz Augusto von Dentz
badcb1dc95 drivers/nble: Add BLUETOOTH_DEBUG_GATT to Kconfig
This option can be used to enable debug for GATT using the same option
as with HCI driver.

Change-Id: Ie2f2692422bc1e1f2a5504c60d90961261b53d17
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-11 11:17:16 +00:00
Andrei Emeltchenko
028d7020c4 drivers/nble: Update data types following RPC sync
Change-Id: I04c0976720675f2b73023bdada15d4c54f81f348
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-11 10:17:36 +02:00
Andrei Emeltchenko
483f015359 drivers/nble: Print local Bluetooth address
Add printing local bdaddr to help with discovery.

...
on_ble_gap_read_bda_rsp (0xa80089a4): Local bdaddr: C3:40:54:C7:DE:B4
(random)
...

Change-Id: I19f8000b1029fdc839303203d6bac91ee76231ed
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-10 19:13:02 -05:00
Andrei Emeltchenko
86ae7dcb0c drivers/nble: Read local Bluetooth Address
Read and store local bdaddr, serialize command sequence.

Change-Id: Iea6a0e9d7dab3bbba04c26f47f07bc5d2527e9d7
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-10 19:13:01 -05:00
Andrei Emeltchenko
5e3930cf12 drivers/nble: Use rsp instead of par
Using rsp instead of par makes code more intuitive.

Change-Id: Ib6594e78f4c6d0088e66e9023a696ea42a2e1f4f
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-10 19:13:01 -05:00
Andrei Emeltchenko
ecfc0d12bf drivers/nble: Clean NBLE UART driver
Remove not used code and decrease number of log messages

Change-Id: I3a41fcc15d7f7b7e8802a13f6eb871794437a87c
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-10 19:13:01 -05:00
Johan Hedberg
7dc5596de7 drivers/nble: Pass correct handle in bt_gatt_notify
Change-Id: I90d85e681e4274722ed94dce839287e5868a93af
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-10 19:13:01 -05:00
Andrei Emeltchenko
7d91d3331f drivers/nble: Add debug for SM config response
Change-Id: I96b124cdf1808e1c948dd8a6511847511eacfbd2
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-10 19:13:01 -05:00
Andrei Emeltchenko
edd64e0746 drivers/nble: Update RPC to Nordic chip
Following changes in NBLE firmware update our RPC, shall be compatible
with firmware images building from 02/10.

Change-Id: Ifeb1193a241e9fea39c52a6c0f5bbd6c21041c08
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-10 19:13:01 -05:00
Andrei Emeltchenko
bcab0a8993 drivers/nble: Add configuration for device manager
Change-Id: I6a17462bd54492c4d84b4b92bf6cfbe9a4721fab
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-10 19:13:01 -05:00