You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by we...@apache.org on 2016/08/11 21:27:10 UTC

[10/50] [abbrv] incubator-mynewt-core git commit: Update sample BLE apps to use transports.

Update sample BLE apps to use transports.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/0f11f27c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/0f11f27c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/0f11f27c

Branch: refs/heads/phyrx_no_mbuf
Commit: 0f11f27c04868668a2600e3805442a42291dd880
Parents: 093cae0
Author: Christopher Collins <cc...@apache.org>
Authored: Wed Aug 3 19:43:50 2016 -0700
Committer: William San Filippo <wi...@runtime.io>
Committed: Thu Aug 11 14:26:24 2016 -0700

----------------------------------------------------------------------
 apps/blecent/pkg.yml           |   1 +
 apps/blecent/src/main.c        |  25 ++-
 apps/blehci/pkg.yml            |   5 +-
 apps/blehci/src/main.c         | 312 +-----------------------------------
 apps/bleprph/pkg.yml           |   1 +
 apps/bleprph/src/main.c        |  32 +++-
 apps/bletest/pkg.yml           |   1 +
 apps/bletest/src/bletest_hci.c |   2 +-
 apps/bletest/src/main.c        |  12 +-
 apps/bletiny/pkg.yml           |   1 +
 apps/bletiny/src/main.c        |  24 ++-
 apps/bleuart/pkg.yml           |   1 +
 apps/bleuart/src/main.c        |  11 +-
 13 files changed, 94 insertions(+), 334 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/blecent/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/blecent/pkg.yml b/apps/blecent/pkg.yml
index 2fb8be9..b413fad 100644
--- a/apps/blecent/pkg.yml
+++ b/apps/blecent/pkg.yml
@@ -30,6 +30,7 @@ pkg.deps:
     - net/nimble/host/services/gap
     - net/nimble/host/services/gatt
     - net/nimble/host/store/ram
+    - net/nimble/transport/ram
     - libs/console/full
     - libs/baselibc
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/blecent/src/main.c
----------------------------------------------------------------------
diff --git a/apps/blecent/src/main.c b/apps/blecent/src/main.c
index cea4c56..6cc01e2 100755
--- a/apps/blecent/src/main.c
+++ b/apps/blecent/src/main.c
@@ -29,6 +29,9 @@
 #include "controller/ble_ll.h"
 #include "host/ble_hs.h"
 
+/* RAM HCI transport. */
+#include "transport/ram/ble_hci_ram.h"
+
 /* RAM persistence layer. */
 #include "store/ram/ble_store_ram.h"
 
@@ -448,6 +451,19 @@ blecent_gap_event(struct ble_gap_event *event, void *arg)
     }
 }
 
+static void
+blecent_on_reset(int reason)
+{
+    BLECENT_LOG(ERROR, "Resetting state; reason=%d\n", reason);
+}
+
+static void
+blecent_on_sync(void)
+{
+    /* Begin scanning for a peripheral to connect to. */
+    blecent_scan();
+}
+
 /**
  * Event loop for the main blecent task.
  */
@@ -464,9 +480,6 @@ blecent_task_handler(void *unused)
     rc = ble_hs_start();
     assert(rc == 0);
 
-    /* Begin scanning for a peripheral to connect to. */
-    blecent_scan();
-
     while (1) {
         ev = os_eventq_get(&blecent_evq);
         switch (ev->ev_type) {
@@ -553,6 +566,10 @@ main(void)
     rc = ble_ll_init(BLE_LL_TASK_PRI, MBUF_NUM_MBUFS, BLE_MBUF_PAYLOAD_SIZE);
     assert(rc == 0);
 
+    /* Initialize the RAM HCI transport. */
+    rc = ble_hci_ram_init(&ble_hci_ram_cfg_dflt);
+    assert(rc == 0);
+
     /* Configure the host. */
     cfg = ble_hs_cfg_dflt;
     cfg.max_hci_bufs = 3;
@@ -560,6 +577,8 @@ main(void)
     cfg.sm_bonding = 1;
     cfg.sm_our_key_dist = BLE_SM_PAIR_KEY_DIST_ENC;
     cfg.sm_their_key_dist = BLE_SM_PAIR_KEY_DIST_ENC;
+    cfg.reset_cb = blecent_on_reset;
+    cfg.sync_cb = blecent_on_sync;
     cfg.store_read_cb = ble_store_ram_read;
     cfg.store_write_cb = ble_store_ram_write;
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/blehci/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/blehci/pkg.yml b/apps/blehci/pkg.yml
index f36e383..198e395 100644
--- a/apps/blehci/pkg.yml
+++ b/apps/blehci/pkg.yml
@@ -23,7 +23,8 @@ pkg.homepage: "http://mynewt.apache.org/"
 pkg.keywords:
 
 pkg.deps:
-    - libs/os
-    - net/nimble/controller
     - libs/baselibc
     - libs/console/stub
+    - libs/os
+    - net/nimble/controller
+    - net/nimble/transport/uart

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/blehci/src/main.c
----------------------------------------------------------------------
diff --git a/apps/blehci/src/main.c b/apps/blehci/src/main.c
index 09fb456..20fc4bc 100755
--- a/apps/blehci/src/main.c
+++ b/apps/blehci/src/main.c
@@ -17,24 +17,14 @@
  * under the License.
  */
 #include <assert.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include "bsp/bsp.h"
 #include "os/os.h"
-#include "bsp/bsp.h"
-#include "hal/hal_gpio.h"
 #include "hal/hal_cputime.h"
 #include "hal/hal_uart.h"
 
 /* BLE */
 #include "nimble/ble.h"
-#include "nimble/nimble_opt.h"
-#include "nimble/hci_transport.h"
 #include "controller/ble_ll.h"
-
-#define HCI_UART_SPEED 1000000
-#define HCI_UART CONSOLE_UART
+#include "transport/uart/ble_hci_uart.h"
 
 /* Nimble task priorities */
 #define BLE_LL_TASK_PRI         (OS_TASK_PRI_HIGHEST)
@@ -53,291 +43,11 @@ uint8_t g_random_addr[BLE_DEV_ADDR_LEN] = { 0 };
 
 #define HCI_MAX_BUFS        (5)
 
-#define HCI_EVT_BUF_SIZE    (260)
-struct os_mempool g_hci_evt_pool;
-static void *hci_cmd_buf;
-
-#define HCI_OS_EVENT_BUF_SIZE   (sizeof(struct os_event))
-
-#define BLE_HOST_HCI_EVENT_CTLR_EVENT   (OS_EVENT_T_PERUSER + 0)
-#define BLE_HOST_HCI_EVENT_CTLR_DATA    (OS_EVENT_T_PERUSER + 1)
-
-struct os_mempool g_hci_os_event_pool;
-static void *hci_os_event_buf;
-
 os_membuf_t default_mbuf_mpool_data[MBUF_MEMPOOL_SIZE];
 
 struct os_mbuf_pool default_mbuf_pool;
 struct os_mempool default_mbuf_mpool;
 
-#define H4_NONE 0x00
-#define H4_CMD  0x01
-#define H4_ACL  0x02
-#define H4_SCO  0x03
-#define H4_EVT  0x04
-
-#define HCI_CMD_HDR_LEN 3
-#define HCI_ACL_HDR_LEN 4
-#define HCI_EVT_HDR_LEN 2
-
-struct memblock {
-    uint8_t *data;      /* Pointer to memblock data */
-    uint16_t cur;       /* Number of bytes read/written */
-    uint16_t len;       /* Total number of bytes to read/write */
-};
-
-struct tx_acl {
-    struct os_mbuf *buf; /* Buffer containing the data */
-    uint16_t len;        /* Target size when buf is considered complete */
-};
-
-static struct {
-    /* State of data from host to controller */
-    uint8_t tx_type;    /* Pending packet type. 0 means nothing pending */
-    union {
-        struct memblock tx_cmd;
-        struct tx_acl tx_acl;
-    };
-
-    /* State of data from controller to host */
-    uint8_t rx_type;    /* Pending packet type. 0 means nothing pending */
-    union {
-        struct memblock rx_evt;
-        struct os_mbuf *rx_acl;
-    };
-    STAILQ_HEAD(, os_event) rx_pkts; /* Packet queue to send to UART */
-} hci;
-
-int
-ble_hs_rx_data(struct os_mbuf *om)
-{
-    struct os_event *ev;
-    os_sr_t sr;
-
-    ev = os_memblock_get(&g_hci_os_event_pool);
-    if (!ev) {
-        os_mbuf_free_chain(om);
-        return -1;
-    }
-
-    ev->ev_type = BLE_HOST_HCI_EVENT_CTLR_DATA;
-    ev->ev_arg = om;
-    ev->ev_queued = 1;
-
-    OS_ENTER_CRITICAL(sr);
-    STAILQ_INSERT_TAIL(&hci.rx_pkts, ev, ev_next);
-    OS_EXIT_CRITICAL(sr);
-
-    hal_uart_start_tx(HCI_UART);
-
-    return 0;
-}
-
-int
-ble_hci_transport_ctlr_event_send(uint8_t *hci_ev)
-{
-    struct os_event *ev;
-    os_sr_t sr;
-
-    ev = os_memblock_get(&g_hci_os_event_pool);
-    if (!ev) {
-        os_error_t err;
-
-        err = os_memblock_put(&g_hci_evt_pool, hci_ev);
-        assert(err == OS_OK);
-
-        return -1;
-    }
-
-    ev->ev_type = BLE_HOST_HCI_EVENT_CTLR_EVENT;
-    ev->ev_arg = hci_ev;
-    ev->ev_queued = 1;
-
-    OS_ENTER_CRITICAL(sr);
-    STAILQ_INSERT_TAIL(&hci.rx_pkts, ev, ev_next);
-    OS_EXIT_CRITICAL(sr);
-
-    hal_uart_start_tx(HCI_UART);
-
-    return 0;
-}
-
-static int
-uart_tx_pkt_type(void)
-{
-    struct os_event *ev;
-    os_sr_t sr;
-    int rc;
-
-    OS_ENTER_CRITICAL(sr);
-
-    ev = STAILQ_FIRST(&hci.rx_pkts);
-    if (!ev) {
-        OS_EXIT_CRITICAL(sr);
-        return -1;
-    }
-
-    STAILQ_REMOVE(&hci.rx_pkts, ev, os_event, ev_next);
-    ev->ev_queued = 0;
-
-    OS_EXIT_CRITICAL(sr);
-
-    switch (ev->ev_type) {
-    case BLE_HOST_HCI_EVENT_CTLR_EVENT:
-        hci.rx_type = H4_EVT;
-        hci.rx_evt.data = ev->ev_arg;
-        hci.rx_evt.cur = 0;
-        hci.rx_evt.len = hci.rx_evt.data[1] + HCI_EVT_HDR_LEN;
-        rc = H4_EVT;
-        break;
-    case BLE_HOST_HCI_EVENT_CTLR_DATA:
-        hci.rx_type = H4_ACL;
-        hci.rx_acl = ev->ev_arg;
-        rc = H4_ACL;
-        break;
-    default:
-        rc = -1;
-        break;
-    }
-
-    os_memblock_put(&g_hci_os_event_pool, ev);
-
-    return rc;
-}
-
-static int
-uart_tx_char(void *arg)
-{
-    int rc = -1;
-
-    switch (hci.rx_type) {
-    case H4_NONE: /* No pending packet, pick one from the queue */
-        rc = uart_tx_pkt_type();
-        break;
-    case H4_EVT:
-        rc = hci.rx_evt.data[hci.rx_evt.cur++];
-
-        if (hci.rx_evt.cur == hci.rx_evt.len) {
-            os_memblock_put(&g_hci_evt_pool, hci.rx_evt.data);
-            hci.rx_type = H4_NONE;
-        }
-
-        break;
-    case H4_ACL:
-        rc = *OS_MBUF_DATA(hci.rx_acl, uint8_t *);
-        os_mbuf_adj(hci.rx_acl, 1);
-        if (!OS_MBUF_PKTLEN(hci.rx_acl)) {
-            os_mbuf_free_chain(hci.rx_acl);
-            hci.rx_type = H4_NONE;
-        }
-
-        break;
-    }
-
-    return rc;
-}
-
-static int
-uart_rx_pkt_type(uint8_t data)
-{
-    hci.tx_type = data;
-
-    switch (hci.tx_type) {
-    case H4_CMD:
-        hci.tx_cmd.data = os_memblock_get(&g_hci_evt_pool);
-        hci.tx_cmd.len = 0;
-        hci.tx_cmd.cur = 0;
-        break;
-    case H4_ACL:
-        hci.tx_acl.buf = os_msys_get_pkthdr(HCI_ACL_HDR_LEN, 0);
-        hci.tx_acl.len = 0;
-        break;
-    default:
-        hci.tx_type = H4_NONE;
-        return -1;
-    }
-
-    return 0;
-}
-
-static int
-uart_rx_cmd(uint8_t data)
-{
-    int rc;
-
-    hci.tx_cmd.data[hci.tx_cmd.cur++] = data;
-
-    if (hci.tx_cmd.cur < HCI_CMD_HDR_LEN) {
-        return 0;
-    } else if (hci.tx_cmd.cur == HCI_CMD_HDR_LEN) {
-        hci.tx_cmd.len = hci.tx_cmd.data[2] + HCI_CMD_HDR_LEN;
-    }
-
-    if (hci.tx_cmd.cur == hci.tx_cmd.len) {
-        rc = ble_hci_transport_host_cmd_send(hci.tx_cmd.data);
-        if (rc != 0) {
-            os_memblock_put(&g_hci_evt_pool, hci.tx_cmd.data);
-        }
-        hci.tx_type = H4_NONE;
-    }
-
-    return 0;
-}
-
-static int
-uart_rx_acl(uint8_t data)
-{
-    os_mbuf_append(hci.tx_acl.buf, &data, 1);
-
-    if (OS_MBUF_PKTLEN(hci.tx_acl.buf) < HCI_ACL_HDR_LEN) {
-        return 0;
-    } else if (OS_MBUF_PKTLEN(hci.tx_acl.buf) == HCI_ACL_HDR_LEN) {
-        os_mbuf_copydata(hci.tx_acl.buf, 2, sizeof(hci.tx_acl.len),
-                         &hci.tx_acl.len);
-        hci.tx_acl.len = le16toh(&hci.tx_acl.len) + HCI_ACL_HDR_LEN;
-    }
-
-    if (OS_MBUF_PKTLEN(hci.tx_acl.buf) == hci.tx_acl.len) {
-        ble_hci_transport_host_acl_data_send(hci.tx_acl.buf);
-        hci.tx_type = H4_NONE;
-    }
-
-    return 0;
-}
-
-static int
-uart_rx_char(void *arg, uint8_t data)
-{
-    switch (hci.tx_type) {
-    case H4_NONE:
-        return uart_rx_pkt_type(data);
-    case H4_CMD:
-        return uart_rx_cmd(data);
-    case H4_ACL:
-        return uart_rx_acl(data);
-    default:
-        return -1;
-    }
-}
-
-static int
-uart_init(void)
-{
-    int rc;
-
-    memset(&hci, 0, sizeof(hci));
-
-    STAILQ_INIT(&hci.rx_pkts);
-
-    rc = hal_uart_init_cbs(HCI_UART, uart_tx_char, NULL, uart_rx_char, NULL);
-    if (rc) {
-        return rc;
-    }
-
-    return hal_uart_config(HCI_UART, HCI_UART_SPEED, 8, 1, HAL_UART_PARITY_NONE,
-                           HAL_UART_FLOW_CTL_RTS_CTS);
-}
-
 int
 main(void)
 {
@@ -366,25 +76,7 @@ main(void)
     rc = ble_ll_init(BLE_LL_TASK_PRI, MBUF_NUM_MBUFS, BLE_MBUF_PAYLOAD_SIZE);
     assert(rc == 0);
 
-    hci_cmd_buf = malloc(OS_MEMPOOL_BYTES(HCI_MAX_BUFS, HCI_EVT_BUF_SIZE));
-    assert(hci_cmd_buf != NULL);
-
-    /* Create memory pool of command buffers */
-    rc = os_mempool_init(&g_hci_evt_pool, HCI_MAX_BUFS, HCI_EVT_BUF_SIZE,
-                         hci_cmd_buf, "HCICmdPool");
-    assert(rc == 0);
-
-    hci_os_event_buf = malloc(OS_MEMPOOL_BYTES(HCI_MAX_BUFS,
-                              HCI_OS_EVENT_BUF_SIZE));
-    assert(hci_os_event_buf != NULL);
-
-    /* Create memory pool of OS events */
-    rc = os_mempool_init(&g_hci_os_event_pool, HCI_MAX_BUFS,
-                         HCI_OS_EVENT_BUF_SIZE, hci_os_event_buf,
-                         "HCIOsEventPool");
-    assert(rc == 0);
-
-    rc = uart_init();
+    rc = ble_hci_uart_init(&ble_hci_uart_cfg_dflt);
     assert(rc == 0);
 
     /* Start the OS */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/bleprph/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/bleprph/pkg.yml b/apps/bleprph/pkg.yml
index f697d83..cfc8e3b 100644
--- a/apps/bleprph/pkg.yml
+++ b/apps/bleprph/pkg.yml
@@ -30,6 +30,7 @@ pkg.deps:
     - net/nimble/host/services/gap
     - net/nimble/host/services/gatt
     - net/nimble/host/store/ram
+    - net/nimble/transport/ram
     - libs/console/full
     - libs/baselibc
     - libs/newtmgr

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/bleprph/src/main.c
----------------------------------------------------------------------
diff --git a/apps/bleprph/src/main.c b/apps/bleprph/src/main.c
index b1d38e6..8261de3 100755
--- a/apps/bleprph/src/main.c
+++ b/apps/bleprph/src/main.c
@@ -40,9 +40,9 @@
 #include "host/ble_l2cap.h"
 #include "host/ble_sm.h"
 #include "controller/ble_ll.h"
-/* Newtmgr include */
-#include "newtmgr/newtmgr.h"
-#include "nmgrble/newtmgr_ble.h"
+
+/* RAM HCI transport. */
+#include "transport/ram/ble_hci_ram.h"
 
 /* RAM persistence layer. */
 #include "store/ram/ble_store_ram.h"
@@ -51,6 +51,10 @@
 #include "services/gap/ble_svc_gap.h"
 #include "services/gatt/ble_svc_gatt.h"
 
+/* Newtmgr include */
+#include "newtmgr/newtmgr.h"
+#include "nmgrble/newtmgr_ble.h"
+
 /* Application-specified header. */
 #include "bleprph.h"
 
@@ -266,6 +270,19 @@ bleprph_gap_event(struct ble_gap_event *event, void *arg)
     return 0;
 }
 
+static void
+bleprph_on_reset(int reason)
+{
+    BLEPRPH_LOG(ERROR, "Resetting state; reason=%d\n", reason);
+}
+
+static void
+bleprph_on_sync(void)
+{
+    /* Begin advertising. */
+    bleprph_advertise();
+}
+
 /**
  * Event loop for the main bleprph task.
  */
@@ -280,10 +297,6 @@ bleprph_task_handler(void *unused)
      * controller.
      */
     rc = ble_hs_start();
-    assert(rc == 0);
-
-    /* Begin advertising. */
-    bleprph_advertise();
 
     while (1) {
         ev = os_eventq_get(&bleprph_evq);
@@ -383,6 +396,8 @@ main(void)
     cfg.sm_bonding = 1;
     cfg.sm_our_key_dist = BLE_SM_PAIR_KEY_DIST_ENC;
     cfg.sm_their_key_dist = BLE_SM_PAIR_KEY_DIST_ENC;
+    cfg.reset_cb = bleprph_on_reset;
+    cfg.sync_cb = bleprph_on_sync;
     cfg.store_read_cb = ble_store_ram_read;
     cfg.store_write_cb = ble_store_ram_write;
     cfg.gatts_register_cb = gatt_svr_register_cb;
@@ -404,6 +419,9 @@ main(void)
     rc = ble_hs_init(&bleprph_evq, &cfg);
     assert(rc == 0);
 
+    rc = ble_hci_ram_init(&ble_hci_ram_cfg_dflt);
+    assert(rc == 0);
+
     nmgr_task_init(NEWTMGR_TASK_PRIO, newtmgr_stack, NEWTMGR_TASK_STACK_SIZE);
     imgmgr_module_init();
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/bletest/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/bletest/pkg.yml b/apps/bletest/pkg.yml
index 84b6e71..3e94ede 100644
--- a/apps/bletest/pkg.yml
+++ b/apps/bletest/pkg.yml
@@ -28,6 +28,7 @@ pkg.deps:
     - fs/nffs
     - net/nimble/controller
     - net/nimble/host
+    - net/nimble/transport/ram
     - libs/os 
     - libs/console/full
     - libs/shell

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/bletest/src/bletest_hci.c
----------------------------------------------------------------------
diff --git a/apps/bletest/src/bletest_hci.c b/apps/bletest/src/bletest_hci.c
index 5e6c31e..64d0270 100755
--- a/apps/bletest/src/bletest_hci.c
+++ b/apps/bletest/src/bletest_hci.c
@@ -24,7 +24,7 @@
 
 /* BLE */
 #include "nimble/ble.h"
-#include "nimble/hci_transport.h"
+#include "nimble/ble_hci_trans.h"
 #include "nimble/hci_common.h"
 #include "host/ble_hs.h"
 #include "controller/ble_ll.h"

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/bletest/src/main.c
----------------------------------------------------------------------
diff --git a/apps/bletest/src/main.c b/apps/bletest/src/main.c
index f6bb187..be0cf6d 100755
--- a/apps/bletest/src/main.c
+++ b/apps/bletest/src/main.c
@@ -36,7 +36,7 @@
 
 /* BLE */
 #include "nimble/ble.h"
-#include "nimble/hci_transport.h"
+#include "nimble/ble_hci_trans.h"
 #include "nimble/hci_common.h"
 #include "host/ble_hs.h"
 #include "controller/ble_ll.h"
@@ -44,6 +44,7 @@
 #include "controller/ble_ll_conn.h"
 #include "controller/ble_ll_scan.h"
 #include "controller/ble_ll_adv.h"
+#include "transport/ram/ble_hci_ram.h"
 
 /* XXX: An app should not include private headers from a library.  The bletest
  * app uses some of nimble's internal details for logging.
@@ -767,7 +768,7 @@ bletest_execute_advertiser(void)
 
                         /* Add length */
                         OS_MBUF_PKTHDR(om)->omp_len = om->om_len;
-                        ble_hci_transport_host_acl_data_send(om);
+                        ble_hci_trans_hs_acl_data_send(om);
 
                         /* Increment last handle used */
                         ++g_last_handle_used;
@@ -823,7 +824,7 @@ bletest_execute_advertiser(void)
 
                 /* Add length */
                 OS_MBUF_PKTHDR(om)->omp_len = om->om_len;
-                ble_hci_transport_host_acl_data_send(om);
+                ble_hci_trans_hs_acl_data_send(om);
 
                 ++g_bletest_outstanding_pkts;
             }
@@ -895,6 +896,8 @@ bletest_task_handler(void *arg)
     os_callout_func_init(&g_bletest_timer, &g_bletest_evq, bletest_timer_cb,
                          NULL);
 
+    ble_hs_dbg_set_sync_state(BLE_HS_SYNC_STATE_GOOD);
+
     /* Send the reset command first */
     rc = bletest_hci_reset_ctlr();
     assert(rc == 0);
@@ -1151,6 +1154,9 @@ main(void)
     rc = ble_hs_init(&g_bletest_evq, NULL);
     assert(rc == 0);
 
+    rc = ble_hci_ram_init(&ble_hci_ram_cfg_dflt);
+    assert(rc == 0);
+
     rc = os_task_init(&bletest_task, "bletest", bletest_task_handler, NULL,
                       BLETEST_TASK_PRIO, OS_WAIT_FOREVER, bletest_stack,
                       BLETEST_STACK_SIZE);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/bletiny/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/bletiny/pkg.yml b/apps/bletiny/pkg.yml
index 49eba38..9a8b08f 100644
--- a/apps/bletiny/pkg.yml
+++ b/apps/bletiny/pkg.yml
@@ -30,6 +30,7 @@ pkg.deps:
     - net/nimble/host/services/gap
     - net/nimble/host/services/gatt
     - net/nimble/host/store/ram
+    - net/nimble/transport/ram
     - libs/console/full
     - libs/shell
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/bletiny/src/main.c
----------------------------------------------------------------------
diff --git a/apps/bletiny/src/main.c b/apps/bletiny/src/main.c
index bb88706..33de2f0 100755
--- a/apps/bletiny/src/main.c
+++ b/apps/bletiny/src/main.c
@@ -35,8 +35,8 @@
 /* BLE */
 #include "nimble/ble.h"
 #include "nimble/nimble_opt.h"
-#include "nimble/hci_transport.h"
-#include "host/host_hci.h"
+#include "nimble/ble_hci_trans.h"
+#include "controller/ble_ll.h"
 #include "host/ble_hs.h"
 #include "host/ble_hs_adv.h"
 #include "host/ble_uuid.h"
@@ -45,7 +45,7 @@
 #include "host/ble_gatt.h"
 #include "host/ble_store.h"
 #include "host/ble_sm.h"
-#include "controller/ble_ll.h"
+#include "transport/ram/ble_hci_ram.h"
 
 /* RAM persistence layer. */
 #include "store/ram/ble_store_ram.h"
@@ -1084,7 +1084,7 @@ bletiny_tx_timer_cb(void *arg)
 
         /* Set packet header length */
         OS_MBUF_PKTHDR(om)->omp_len = om->om_len;
-        ble_hci_transport_host_acl_data_send(om);
+        ble_hci_trans_hs_acl_tx(om);
 
         --bletiny_tx_data.tx_num;
     }
@@ -1552,6 +1552,12 @@ bletiny_rssi(uint16_t conn_handle, int8_t *out_rssi)
     return 0;
 }
 
+static void
+bletiny_on_reset(int reason)
+{
+    console_printf("Error: Resetting state; reason=%d\n", reason);
+}
+
 /**
  * BLE test task
  *
@@ -1594,6 +1600,7 @@ bletiny_task_handler(void *arg)
 int
 main(void)
 {
+    struct ble_hci_ram_cfg hci_cfg;
     struct ble_hs_cfg cfg;
     uint32_t seed;
     int rc;
@@ -1688,10 +1695,17 @@ main(void)
     rc = ble_ll_init(BLE_LL_TASK_PRI, MBUF_NUM_MBUFS, BLE_MBUF_PAYLOAD_SIZE);
     assert(rc == 0);
 
+    /* Initialize the RAM HCI transport. */
+    hci_cfg = ble_hci_ram_cfg_dflt;
+    hci_cfg.num_evt_bufs = 3;
+    rc = ble_hci_ram_init(&hci_cfg);
+    assert(rc == 0);
+
     /* Initialize the NimBLE host configuration. */
     cfg = ble_hs_cfg_dflt;
-    cfg.max_hci_bufs = 3;
+    cfg.max_hci_bufs = hci_cfg.num_evt_bufs;
     cfg.max_gattc_procs = 2;
+    cfg.reset_cb = bletiny_on_reset;
     cfg.store_read_cb = ble_store_ram_read;
     cfg.store_write_cb = ble_store_ram_write;
     cfg.gatts_register_cb = gatt_svr_register_cb;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/bleuart/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/bleuart/pkg.yml b/apps/bleuart/pkg.yml
index dbe08cc..7a7d20e 100644
--- a/apps/bleuart/pkg.yml
+++ b/apps/bleuart/pkg.yml
@@ -30,6 +30,7 @@ pkg.deps:
     - net/nimble/host/services/gap
     - net/nimble/host/services/gatt
     - net/nimble/host/store/ram
+    - net/nimble/transport/ram
     - libs/console/full
     - libs/baselibc
     - libs/newtmgr

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0f11f27c/apps/bleuart/src/main.c
----------------------------------------------------------------------
diff --git a/apps/bleuart/src/main.c b/apps/bleuart/src/main.c
index 75d9e16..e68d097 100755
--- a/apps/bleuart/src/main.c
+++ b/apps/bleuart/src/main.c
@@ -195,6 +195,13 @@ bleuart_gap_event(struct ble_gap_event *event, void *arg)
     return 0;
 }
 
+static void
+bleuart_on_sync(void)
+{
+    /* Begin advertising. */
+    bleuart_advertise();
+}
+
 /**
  * Event loop for the main bleuart task.
  */
@@ -208,9 +215,6 @@ bleuart_task_handler(void *unused)
     rc = ble_hs_start();
     assert(rc == 0);
 
-    /* Begin advertising. */
-    bleuart_advertise();
-
     while (1) {
         ev = os_eventq_get(&bleuart_evq);
 
@@ -298,6 +302,7 @@ main(void)
     cfg.sm_bonding = 1;
     cfg.sm_our_key_dist = BLE_SM_PAIR_KEY_DIST_ENC;
     cfg.sm_their_key_dist = BLE_SM_PAIR_KEY_DIST_ENC;
+    cfg.sync_cb = bleuart_on_sync;
     cfg.store_read_cb = ble_store_ram_read;
     cfg.store_write_cb = ble_store_ram_write;