Commit Graph

9541 Commits

Author SHA1 Message Date
Anas Nashif ba714dc6c2 tests: test_task: rename task group from TEST to TESTGROUP
Change-Id: I32b9470f8eb958e1ef60e11142799882bc6ad89a
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-11-09 18:33:25 +00:00
Anas Nashif c3552e6624 tests: test requires kernel to provide printk
Change-Id: I9ee3eb6cf67c7390a0ade07ace67de64de30bb94
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-11-09 18:33:25 +00:00
Anas Nashif 5b1b2d6123 tests: test_sema: rename task group from TEST to TESTGROUP
Avoid conflicts with redefinition of TEST

Change-Id: I309a1056053d2a998748bbc68f368f2c61d13b70
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-11-09 18:33:25 +00:00
Andrew Boie 0b474eef9c kernel: deprecate old init levels
PRIMARY, SECONDARY, NANOKERNEL, MICROKERNEL init levels are now
deprecated.

New init levels introduced: PRE_KERNEL_1, PRE_KERNEL_2, POST_KERNEL
to replace them.

Most existing code has instances of PRIMARY replaced with PRE_KERNEL_1,
SECONDARY with POST_KERNEL as SECONDARY has had a longstanding bug
where the documentation specified SECONDARY ran before the kernel started
up, but actually ran afterwards.

Change-Id: I771bc634e9caf7f17dbf214a270bc9967eed7d32
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-11-09 17:59:44 +00:00
Andrew Boie 183a79cf6e tests: unit: remove -Werror
sanitycheck already sets this and we need to allow deprecation
warnings.

Change-Id: I3d6bf652403bcbdba47663c8cd0d17682a8a842d
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-11-09 17:33:01 +00:00
Andrew Boie 12af934353 device.h: use new semaphore APIs
Change-Id: I87c84cbdaaf25bc1503ed8a12b595b13f9089740
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-11-09 17:33:00 +00:00
Johan Hedberg 7773893744 Merge bluetooth branch into master
Main changes:

 - Fix handling of LL_UNKNOWN_RSP PDU in controller
 - Add basic support for an internal persistent storage handler
 - Convert initial pieces of code to unified kernel APIs
 - Fix regression with L2CAP CoC credits
 - Update documentation to match latest implementation

----------------------------------------------------------------
Arun Jagadish (1):
      Bluetooth: AVDTP: Set Profile Security Level to Medium

Carles Cufi (1):
      Bluetooth: Controller: Handle LL_UNKNOWN_RSP PDU for remote features

Johan Hedberg (9):
      Bluetooth: doc: Update subsystem description
      Bluetooth: doc: Move PICS documentation to right place
      Bluetooth: storage: Add basic support for internal storage
      Bluetooth: Implement bt_storage_clear()
      Bluetooth: tests/shell: Implement "clear" command
      Bluetooth: samples: Use consistent naming for HCI apps
      Bluetooth: Fix usage of C++ reserved word
      Bluetooth: Use depends on SERIAL instead of selects
      Bluetooth: tests/shell: Add Arduino 101-specific configuration

Luiz Augusto von Dentz (3):
      Bluetooth: L2CAP: Fix regression causing credits not to be restored
      Bluetooth: L2CAP: Limit segments to TX MPS
      Bluetooth: L2CAP: Add helper function to create LE signalling PDUs

Sathish Narasimman (3):
      Bluetooth: AT handling error condition
      Bluetooth: HFP HF: SLC connection-Send/Parse BRSF
      Bluetooth: Sample: handsfree sample application

Szymon Janc (5):
      Bluetooth: Remove workaround for Mynewt firmware bug
      Bluetooth: Controller: Include zephyr.h instead of nanokernel.h
      Bluetooth: Use unified k_sem API for semaphores
      Bluetooth: nble: Use unified k_sem API for semaphores
      Bluetooth: Controller: Use unified k_sem API for semaphore

 doc/bluetooth/gap-pics.txt                              | 624 --------------------
 doc/bluetooth/sm-pics.txt                               |  78 ---
 doc/subsystems/bluetooth/bluetooth.rst                  |  23 +-
 doc/subsystems/bluetooth/gap-pics.rst                   | 731 ++++++++++++++++++++++++
 .../bluetooth/gatt-pics.rst}                            | 170 +++---
 .../bluetooth/l2cap-pics.rst}                           |  75 +--
 doc/subsystems/bluetooth/qualification.rst              |  16 +
 doc/subsystems/bluetooth/sm-pics.rst                    |  95 +++
 drivers/bluetooth/hci/Kconfig                           |   4 +-
 drivers/bluetooth/nble/Kconfig                          |   2 +-
 drivers/bluetooth/nble/conn_internal.h                  |   2 +-
 drivers/bluetooth/nble/gatt.c                           |   8 +-
 include/bluetooth/bluetooth.h                           |   2 +-
 include/bluetooth/l2cap.h                               |   2 +-
 include/bluetooth/rfcomm.h                              |   2 +-
 samples/bluetooth/README                                |   4 +-
 samples/bluetooth/handsfree/Makefile                    |  25 +
 samples/bluetooth/handsfree/prj.conf                    |   9 +
 samples/bluetooth/handsfree/src/Makefile                |   3 +
 samples/bluetooth/handsfree/src/main.c                  |  93 +++
 samples/bluetooth/handsfree/testcase.ini                |   4 +
 samples/bluetooth/{hci-uart => hci_uart}/Makefile       |   0
 samples/bluetooth/{hci-uart => hci_uart}/generic.conf   |   0
 samples/bluetooth/{hci-uart => hci_uart}/nrf5.conf      |   0
 samples/bluetooth/{hci-uart => hci_uart}/src/Makefile   |   0
 samples/bluetooth/{hci-uart => hci_uart}/src/main.c     |   0
 samples/bluetooth/{hci-uart => hci_uart}/testcase.ini   |   0
 samples/bluetooth/{hci-usb => hci_usb}/Makefile         |   0
 samples/bluetooth/{hci-usb => hci_usb}/prj.conf         |   0
 samples/bluetooth/{hci-usb => hci_usb}/src/Makefile     |   0
 samples/bluetooth/{hci-usb => hci_usb}/src/main.c       |   0
 samples/bluetooth/{hci-usb => hci_usb}/testcase.ini     |   0
 subsys/bluetooth/controller/hci/hci.c                   |  38 +-
 subsys/bluetooth/controller/hci/hci_driver.c            |  10 +-
 subsys/bluetooth/controller/ll/ctrl.c                   |   5 +-
 subsys/bluetooth/host/Kconfig                           |   8 +
 subsys/bluetooth/host/Makefile                          |   2 +
 subsys/bluetooth/host/at.c                              |  17 +-
 subsys/bluetooth/host/avdtp.c                           |   2 +
 subsys/bluetooth/host/conn.c                            |  24 +-
 subsys/bluetooth/host/conn_internal.h                   |   4 +-
 subsys/bluetooth/host/hci_core.c                        | 131 +++--
 subsys/bluetooth/host/hci_core.h                        |   6 +-
 subsys/bluetooth/host/hfp_hf.c                          | 127 +++-
 subsys/bluetooth/host/hfp_internal.h                    |  25 +-
 subsys/bluetooth/host/keys.c                            |   5 +
 subsys/bluetooth/host/keys.h                            |   2 +
 subsys/bluetooth/host/keys_br.c                         |  15 +
 subsys/bluetooth/host/l2cap.c                           | 130 ++---
 subsys/bluetooth/host/rfcomm.c                          |  11 +-
 subsys/bluetooth/host/storage.c                         | 237 ++++++++
 tests/bluetooth/shell/Makefile                          |   7 +-
 tests/bluetooth/shell/arduino_101.conf                  |  27 +
 tests/bluetooth/shell/src/main.c                        |  49 ++
 tests/bluetooth/shell/testcase.ini                      |   2 +-
 55 files changed, 1860 insertions(+), 996 deletions(-)
 delete mode 100644 doc/bluetooth/gap-pics.txt
 delete mode 100644 doc/bluetooth/sm-pics.txt
 create mode 100644 doc/subsystems/bluetooth/gap-pics.rst
 rename doc/{bluetooth/gatt-pics.txt => subsystems/bluetooth/gatt-pics.rst} (73%)
 rename doc/{bluetooth/l2cap-pics.txt => subsystems/bluetooth/l2cap-pics.rst} (73%)
 create mode 100644 doc/subsystems/bluetooth/qualification.rst
 create mode 100644 doc/subsystems/bluetooth/sm-pics.rst
 create mode 100644 samples/bluetooth/handsfree/Makefile
 create mode 100644 samples/bluetooth/handsfree/prj.conf
 create mode 100644 samples/bluetooth/handsfree/src/Makefile
 create mode 100644 samples/bluetooth/handsfree/src/main.c
 create mode 100644 samples/bluetooth/handsfree/testcase.ini
 rename samples/bluetooth/{hci-uart => hci_uart}/Makefile (100%)
 rename samples/bluetooth/{hci-uart => hci_uart}/generic.conf (100%)
 rename samples/bluetooth/{hci-uart => hci_uart}/nrf5.conf (100%)
 rename samples/bluetooth/{hci-uart => hci_uart}/src/Makefile (100%)
 rename samples/bluetooth/{hci-uart => hci_uart}/src/main.c (100%)
 rename samples/bluetooth/{hci-uart => hci_uart}/testcase.ini (100%)
 rename samples/bluetooth/{hci-usb => hci_usb}/Makefile (100%)
 rename samples/bluetooth/{hci-usb => hci_usb}/prj.conf (100%)
 rename samples/bluetooth/{hci-usb => hci_usb}/src/Makefile (100%)
 rename samples/bluetooth/{hci-usb => hci_usb}/src/main.c (100%)
 rename samples/bluetooth/{hci-usb => hci_usb}/testcase.ini (100%)
 create mode 100644 subsys/bluetooth/host/storage.c
 create mode 100644 tests/bluetooth/shell/arduino_101.conf

Change-Id: I4da9302f266ba293d27c152d68bb76de76f04ce9
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 12:25:10 +02:00
Johan Hedberg 77dcd7151d Bluetooth: tests/shell: Add Arduino 101-specific configuration
Add an Arduino 101-specific configuration that enables flash-based
storage support as well as the file system shell.

Change-Id: Ic10ea958dd2446df4942a8dfd3cce1e3368852b2
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 09:15:46 +00:00
Luiz Augusto von Dentz bc3af66a01 Bluetooth: L2CAP: Add helper function to create LE signalling PDUs
This consolidate code around LE signalling header handling which has been
duplicated in many places.

Change-Id: I0c2cd48c155b751e1bbbd26070965d075cdc2cc5
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-11-09 08:43:43 +00:00
Sathish Narasimman 46972b1822 Bluetooth: Sample: handsfree sample application
Samble bluetooth application for handsfree profile

Change-Id: I280a313afef4c842896c6470a473127e03dacd88
Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>
2016-11-09 08:57:52 +02:00
Carles Cufi 6ccfa64b5c Bluetooth: Controller: Handle LL_UNKNOWN_RSP PDU for remote features
When a peer controller does not recognize one of the LL control
PDUs received, it will issue an LL_UNKNOWN_RSP PDU to let the
peer know that it does not recognize the request.
The controller now handles this incoming PDU and completes the
procedure by issuing the appropriate HCI event in the case of
an LL_FEATURE_REQ and _RSP pair.

Jira: ZEP-1220

Change-Id: I7c04a346441f04deee41198daa6309c11ae1b571
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2016-11-09 08:57:52 +02:00
Johan Hedberg d7f4fd74a9 Bluetooth: Use depends on SERIAL instead of selects
This suppresses warnings for platforms where SERIAL can't be provided.
All the platforms that these drivers are interesting for already
default to SERIAL=y.

Change-Id: Id692f99e018009b30903db8a2c046a6086be01c2
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 08:57:52 +02:00
Johan Hedberg 195e1b89b1 Bluetooth: Fix usage of C++ reserved word
'private' is a C++ reserved word and will lead to compilation errors:

  C++     ble.o
In file included from ble.cpp:7:0:
 include/bluetooth/bluetooth.h:284:10: error: expected unqualified-id before 'private'
  uint8_t private[4];

Change-Id: I36aef5a84af4fc66e1c810bd0c56e5ab5f803294
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 08:57:52 +02:00
Johan Hedberg 87e18b4fbb Bluetooth: samples: Use consistent naming for HCI apps
The convention for Zephyr sample names is to use _ instead of - for
delimiting words.

Change-Id: I08a63e9f600deb38183f81ddb8f8bf407b6eec2e
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 08:57:52 +02:00
Sathish Narasimman c719bfb689 Bluetooth: HFP HF: SLC connection-Send/Parse BRSF
Service Level Connection(SLC) Initialization part. Sending AT+BRSF
and parsing its response.

< ACL Data TX: Handle 256 flags 0x00 dlen 20
      Channel: 75 len 16 [PSM 3 mode 0] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x09 cr 0 dlci 0x02
         Control: 0xef poll/final 0
         Length: 12
         FCS: 0x40
        41 54 2b 42 52 53 46 3d 31 34 38 0d 40           AT+BRSF=20.

.
> ACL Data RX: Handle 256 flags 0x02 dlen 23
      Channel: 64 len 19 [PSM 3 mode 0] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x0b cr 1 dlci 0x02
         Control: 0xff poll/final 1
         Length: 14
         FCS: 0x86
         Credits: 4
        0d 0a 2b 42 52 53 46 3a 20 38 37 31 0d 0a 86     ..+BRSF: 871.
> ACL Data RX: Handle 256 flags 0x02 dlen 14
      Channel: 64 len 10 [PSM 3 mode 0] {chan 0}
      RFCOMM: Unnumbered Info with Header Check (UIH) (0xef)
         Address: 0x0b cr 1 dlci 0x02
         Control: 0xef poll/final 0
         Length: 6
         FCS: 0x9a
        0d 0a 4f 4b 0d 0a 9a                             ..OK...

Change-Id: I51581928d479ea4229b32a07cbea86c1f6fe09c8
Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>
2016-11-09 08:57:52 +02:00
Sathish Narasimman b0d34d83c5 Bluetooth: AT handling error condition
In function at_get_number check for the value if gets computed.
If not return error. Also change the end state handling.

Change-Id: I193b04fa2880dfb44e7727b30b67c1ec2e051cc7
Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>
2016-11-09 08:57:52 +02:00
Johan Hedberg 7e1234b44b Bluetooth: tests/shell: Implement "clear" command
Implement a new "clear" command to exercise the bt_storage API. The
command can either take an address parameter to clear storage for a
specific device, or, if called with the parameter "all", to clear the
entire storage.

Jira: ZEP-181

Change-Id: I1ebd17033f2062951abeeb7d7c448a34a3672577
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 08:57:52 +02:00
Johan Hedberg 8ed846285e Bluetooth: Implement bt_storage_clear()
Add an implementation for the bt_storage_clear() API.

Jira: ZEP-181

Change-Id: Iae01c571c161317ea0cc44513d108301c7b5a069
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 08:57:52 +02:00
Johan Hedberg 77a8516dd2 Bluetooth: storage: Add basic support for internal storage
Add basic implementation of an internal storage handler that uses the
local file system. The root directory for all Bluetooth related data
is /bt. Each remote device has its own subdirectory and each key its
own file. This helps keep the implementation very simple, but does
come with the meta-data overhead for each file.

As an example, the value of a key 0x0001 for a device with a static
random address cc:11:22:33:44:55 would be stored in the following
file: /bt/cc11223344551/0001. Local values such as the identity
address are stored directly under /bt with a file name that matches
the key the same way as remote-device files.

For full functionality the implementation requires a file system that
can support file/directory names of up to 13 characters in length. If
the file system supports less than that (as is the case with FAT12)
then only local values can be stored (in /bt/abcd). Local values
include the identity address as well as the local IRK.

Jira: ZEP-181

Change-Id: I7dc696af6353a154cb00dcd01a5f4ac3d7127e6b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 08:57:52 +02:00
Szymon Janc e18e3ed60a Bluetooth: Controller: Use unified k_sem API for semaphore
Change-Id: I02b4e5f4d0a2995cfae1b9a2edcbdf01d6ec631a
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-11-09 08:57:52 +02:00
Szymon Janc b73b77652c Bluetooth: nble: Use unified k_sem API for semaphores
Change-Id: I5bf66ab7c3f863945f2c9f9392d773b348020367
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-11-09 08:57:52 +02:00
Szymon Janc 8f800a8bfe Bluetooth: Use unified k_sem API for semaphores
Change-Id: I0099c837cc8ad67b8f927b2debd771acfe626eea
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-11-09 08:57:52 +02:00
Szymon Janc 8944c25c90 Bluetooth: Controller: Include zephyr.h instead of nanokernel.h
zephyr.h includes required kernel header depending on selected
configuration.

Change-Id: Ib72c4038637c303ee32e433706355299ae1b9a13
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-11-09 08:57:52 +02:00
Luiz Augusto von Dentz 3808ad0a96 Bluetooth: L2CAP: Limit segments to TX MPS
le_data buffers are no longer limited to the minimun of 23 bytes, instead
it uses CONFIG_BLUETOOTH_L2CAP_IN_MTU which means it can be bigger than
the MPS thus causing invalid data to be sent:

> ACL Data RX: Handle 64 flags 0x02 dlen 18
      LE L2CAP: LE Connection Request (0x14) ident 1 len 10
        PSM: 128 (0x0080)
        Source CID: 64
        MTU: 672
        MPS: 23
        Credits: 65535
< ACL Data TX: Handle 64 flags 0x00 dlen 18
      LE L2CAP: LE Connection Response (0x15) ident 1 len 10
        Destination CID: 64
        MTU: 230
        MPS: 65
        Credits: 4
        Result: Connection successful (0x0000)
< ACL Data TX: Handle 64 flags 0x00 dlen 27
< ACL Data TX: Handle 64 flags 0x01 dlen 2
      Channel: 64 len 25 [PSM 128 mode 0] {chan 0}
        3c 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff  <...............
        ff ff ff ff ff ff ff ff ff

JIRA: ZEP-1219

Change-Id: Id67f1faac8766c66aa24c7421d44112434666a10
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-11-09 08:57:52 +02:00
Szymon Janc 3317227437 Bluetooth: Remove workaround for Mynewt firmware bug
This is not needed for Zephyr controller build and should already
be fixed in Mynewt.

Change-Id: I39e81dc3e9b5fd5a3f5f823465527248625caf26
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-11-09 08:57:52 +02:00
Johan Hedberg c1f47859e1 Bluetooth: doc: Move PICS documentation to right place
There's no point in having both a doc/bluetooth and a
doc/subsystems/bluetooth. Move the PICS documentation to the right
place and convert it to rst in the same go.

Change-Id: Iada1f19d0ed3fb3b374e7f708f175d53d797bd93
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 08:57:52 +02:00
Arun Jagadish 227b1d4643 Bluetooth: AVDTP: Set Profile Security Level to Medium
Setting AVDTP Profile Security to Medium

Change-Id: I93aa367ac5bfe4e8bfe08f25d0e7e9d65b891350
Signed-off-by: Arun Jagadish <arun.jagadish@intel.com>
2016-11-09 08:57:52 +02:00
Johan Hedberg 257ccbeece Bluetooth: doc: Update subsystem description
Add information about the controller support, raw HCI interface and
the new location in the source tree.

Change-Id: I6fab7f17e4a96b8217cd9de4f2437cfba8c06564
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-11-09 08:57:52 +02:00
Luiz Augusto von Dentz 4f39b4ceb1 Bluetooth: L2CAP: Fix regression causing credits not to be restored
Patch 8c118f8673 causes the wrong semaphore
to checked so receiving credits are never restored which caused the
channel to get stuck after all the credits are consumed.

JIRA: ZEP-1199

Change-Id: I9cd5474b3bcaafcb19d15613939ce30d07befe0a
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-11-09 08:57:52 +02:00
Baohong Liu 621c1d6dbd boards: arduino_101: correct an error related to SPI CS
The right flag to enable GPIO as SPI CS is SPI_CS_GPIO.

Change-Id: I06fc5e7e44f9aa6bad5867462c6c069d545bb0b7
Signed-off-by: Baohong Liu <baohong.liu@intel.com>
2016-11-09 02:48:26 +00:00
Juro Bystricky f3bf5abd52 newlib: add support for nano-formatted-io
If newlib is configured with --enable-newlib-nano-formatted-io,
floating-point support is split out of the formatted I/O code into
weak functions which are not linked by default. This leads to a smaller
code by about 16~20k when using newlib "printf" and/or "sscanf" but not
using floating point I/O.

Programs that need floating-point I/O support must explicitly request
linking of one or both of the floating-point functions:

    _printf_float or _scanf_float.

This can be done at link time using the -u option which can be passed
to either gcc or ld.

Implemented via new configuration options:
    CONFIG_NEWLIB_LIBC_FLOAT_PRINTF
    CONFIG_NEWLIB_LIBC_FLOAT_SCANF

Change-Id: I57f9d9f02e6d21d6011d14de7153b1d3ba6f6e32
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2016-11-09 02:47:43 +00:00
Jithu Joseph cc9cdadeae samples: usb: Sample to demo USB Mass Storage support
Sample to put the device in USB mass storage mode via
config options.

Change-Id: Icaf4839d8e8ac0526d1b723adc87607d6b4df9d7
Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
2016-11-09 02:45:47 +00:00
Jithu Joseph 63b4e2134f usb: class: Add USB mass storage class support.
This patch implements USB Mass Storage device Class,
which allows the  Zephyr target Board to appear
as a USB drive to a host.

This code would invoke disk_read() /disk_write()
hooks which are to be provided by the storage
layer.

The Mass Storage protocol state machine is based on
mbed's implementation. We augment it by adding Zephyr's
USB transport and Storage APIs, and offload disk ops
to a fiber context rather than in the USB irq context.

origin: https://developer.mbed.org/users/mbed_official/code/USBDevice/file/01321bd6ff89/USBMSD

Jira: ZEP-233

Change-Id: I8199598c76da20ab20012d81dac7615f6a366303
Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
2016-11-09 02:45:46 +00:00
Jithu Joseph 7eab305593 usb: Add end-point stall APIs and flow control APIS
USB class drivers may need to offload some work from
upcall interrupt context to a background fiber. This
requires some way to defer taking more data from host
till the offloaded work completes. Two APIs are added to
achieve this.

Further USB class drivers sometimes need to set STALL condition
on end-points to signal errors to host.These too are
added.

Change-Id: Ic973522c3394e23d7f9c4c67affc0cd050afc20f
Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
2016-11-09 02:45:46 +00:00
Jithu Joseph 2fe288b4aa fs: expose generic ramdisk/flash disk access functions
This patch removes "FAT" from  files names, config names and
symbol names so as to avoid confusion, when other modules use
them in a more generic way.

Also flash_disk_access.c and ram_disk_access.c now exports generic
disk_access symbols as defined in include/disk_access.h rather
than FAT specific ones in fs/fat_diskio.h. Thus modules like
USB which need to use disk_access interface is not dependent
on symbols from ELMChan FAT module. Also fat_diskio.h
is removed.

Further the shim between ELM chan and Zephyr is modified as
per these changes.

Change-Id: Ifd80f14a629e467ee9c7a9aaff8a4896eed11982
Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
2016-11-09 02:45:45 +00:00
Jithu Joseph 383d9b757a include: Add a generic disk interface
Adds a disk interface which is independent
of filesystem specific symbols or headers.

Change-Id: I8c72fd3a9d12c5d9623721513fc66edc7bce0a5d
Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
2016-11-09 02:45:44 +00:00
Baohong Liu 6096e7866c drivers: spi: update to unified kernel
Use new semaphore APIs from unified kernel.

Change-Id: I0424e8b1fee51df6fd3eb06ba6d99284a2e83393
Signed-off-by: Baohong Liu <baohong.liu@intel.com>
2016-11-09 02:40:32 +00:00
jing wang 2c311431fc tests: add a dma transfer test with different channel and burstlen
This TC cover dma transfer with different channel and burst length
It support 2 ways to execute
*) full-auto: by default, it run all sub test cases defined in array
   once flashing done and reset.
*) interactive: when CONFIG_CONFIG_CONSOLE_HANDLER_SHELL=y, it go into
   shell first, user can input test command one by one for debugging.

move original test under drivers/dma to test_loop_transfer/

Change-Id: I7e78b730592c80bf2c23b20c8b0eb65a9b353acd
Signed-off-by: jing wang <jing.j.wang@intel.com>
2016-11-09 02:38:57 +00:00
Benjamin Walsh c7ba8b17e1 kernel: rename k_am_in_isr() to k_is_in_isr()
Change-Id: Ie312da34dbbfbeb2c76bbf38905d8f334da28b63
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-11-08 20:27:31 -05:00
Benjamin Walsh 3cc2ba9f9c kernel: add __ASSERT() for thread priorities
Verify the thread priorities are within the bounds when starting a new
thread and when changing the priority of a thread.

Change-Id: I007b3b249e4b80235b6439cbee44cad2f31973bb
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-11-08 20:27:31 -05:00
Benjamin Walsh c13fad3bb8 kernel: add utility functions to compare thread priorities
Since lower-numbered thread priorities are higher, the code can be
misleading when comparing priorities, and often require the same type of
comments. Instead, use utility inline functions that does the
comparisons.

_is_prio_higher already existed, but add comparisons for "lower than",
"higher than or equal to" and "lower than or equal to".

Change-Id: I8b58fe9a3dd0eb70e224e970fe851a2575ad468b
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-11-08 20:26:39 -05:00
Benjamin Walsh 8450c903be kernel: fix issues in idle thread
- Add missing irq_lock() before invoking power management.
- Only yield if the idle thread is a coop thread (in coop-only
  configurations).

Change-Id: I030795e782590b3023f1d7883bbd058da2c45f4f
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-11-08 23:38:55 +00:00
Benjamin Walsh fab8d92936 kernel: add K_IDLE_PRIO
Define the priority reserved for the idle thread rather than use
K_LOWEST_THREAD_PRIO.

Change-Id: I514296d774047fa1348249da8ee90a68b6aace17
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-11-08 23:38:48 +00:00
Benjamin Walsh 0d5f541052 samples: remove useless prj_unified.conf from kernel logger sample
Change-Id: I67c8afd4ba7b89953a1d4adb19febba2f0ae8165
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-11-08 23:38:41 +00:00
Benjamin Walsh 4e5b4c74af kernel_event_logger: fix _current.prio acces in __ASSERT()
_current is a pointer.

Change-Id: I8efbd1daca58b687732abec4d759f10a5dff8ef6
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-11-08 23:38:34 +00:00
Benjamin Walsh 5986ec040b arc: fix race condition when returning from interrupt
A race condition would happend if a FIRQ interrupted a
return-from-interrupt from a RIRQ at the wrong moment: if a decision was
already taken which thread to context switch in and the FIRQ woke up
another thread of higher priority, the ready queue would be corrupted.

The solution is to lock interrupts at the moment the interrupt return
code starts looking at the kernel queues. Interrupts do not need to be
unlocked before exiting: the return-from-interrupt (rtie) instruction
will restore the correct interrupt locking state for the thread being
context switched in.

Change-Id: I777665c2faeca7b1f2a77ddd9ee2a520080bae88
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-11-08 22:50:14 +00:00
Andrew Boie 84a92048cf test_ipm: increase stack size
The main task uses stack-hungry() printf(), and the switch to the unified
kernel pushed the necessary space over the edge.

Change-Id: I7b64e7f09d91c5050ffe7fb18506ff24289169fc
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-11-08 22:45:56 +00:00
Andrew Boie 9b0ec51098 arc: remove CONFIG_NANOKERNEL code
Change-Id: I1978c067d422aebb52d736ac747443a06bd437c3
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-11-08 22:02:46 +00:00
Andrew Boie ee95dd22a4 x86: remove CONFIG_NANOKERNEL references
Change-Id: I8c6ca9189dd09133162816675e33332d6e5a34b3
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-11-08 22:02:45 +00:00
Dmitriy Korovkin 44af016810 tests: Add configuration for small frequency dividers for system clock
For systems that have both high base (CPU, bus, etc.) frequency and
small divider of the base frequency for system clock and this way,
do not allow 1 second period for the system clock, set the system
clock period to 0.1.

Change-Id: Iafb4604112d4adb8430f8bf57a5a31de3f6cf91d
Signed-off-by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
2016-11-08 21:34:31 +00:00