1*042d53a7SEvalZero /* 2*042d53a7SEvalZero * Licensed to the Apache Software Foundation (ASF) under one 3*042d53a7SEvalZero * or more contributor license agreements. See the NOTICE file 4*042d53a7SEvalZero * distributed with this work for additional information 5*042d53a7SEvalZero * regarding copyright ownership. The ASF licenses this file 6*042d53a7SEvalZero * to you under the Apache License, Version 2.0 (the 7*042d53a7SEvalZero * "License"); you may not use this file except in compliance 8*042d53a7SEvalZero * with the License. You may obtain a copy of the License at 9*042d53a7SEvalZero * 10*042d53a7SEvalZero * http://www.apache.org/licenses/LICENSE-2.0 11*042d53a7SEvalZero * 12*042d53a7SEvalZero * Unless required by applicable law or agreed to in writing, 13*042d53a7SEvalZero * software distributed under the License is distributed on an 14*042d53a7SEvalZero * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15*042d53a7SEvalZero * KIND, either express or implied. See the License for the 16*042d53a7SEvalZero * specific language governing permissions and limitations 17*042d53a7SEvalZero * under the License. 18*042d53a7SEvalZero */ 19*042d53a7SEvalZero 20*042d53a7SEvalZero #include <stddef.h> 21*042d53a7SEvalZero #include "os/os.h" 22*042d53a7SEvalZero #include "sysinit/sysinit.h" 23*042d53a7SEvalZero #include "host/ble_hs.h" 24*042d53a7SEvalZero #if NIMBLE_CFG_CONTROLLER 25*042d53a7SEvalZero #include "controller/ble_ll.h" 26*042d53a7SEvalZero #endif 27*042d53a7SEvalZero 28*042d53a7SEvalZero static struct ble_npl_eventq g_eventq_dflt; 29*042d53a7SEvalZero 30*042d53a7SEvalZero void nimble_port_init(void)31*042d53a7SEvalZeronimble_port_init(void) 32*042d53a7SEvalZero { 33*042d53a7SEvalZero void os_msys_init(void); 34*042d53a7SEvalZero void ble_store_ram_init(void); 35*042d53a7SEvalZero #if NIMBLE_CFG_CONTROLLER 36*042d53a7SEvalZero void ble_hci_ram_init(void); 37*042d53a7SEvalZero #endif 38*042d53a7SEvalZero 39*042d53a7SEvalZero /* Initialize default event queue */ 40*042d53a7SEvalZero ble_npl_eventq_init(&g_eventq_dflt); 41*042d53a7SEvalZero 42*042d53a7SEvalZero os_msys_init(); 43*042d53a7SEvalZero 44*042d53a7SEvalZero ble_hs_init(); 45*042d53a7SEvalZero 46*042d53a7SEvalZero /* XXX Need to have template for store */ 47*042d53a7SEvalZero ble_store_ram_init(); 48*042d53a7SEvalZero 49*042d53a7SEvalZero #if NIMBLE_CFG_CONTROLLER 50*042d53a7SEvalZero hal_timer_init(5, NULL); 51*042d53a7SEvalZero os_cputime_init(32768); 52*042d53a7SEvalZero ble_ll_init(); 53*042d53a7SEvalZero ble_hci_ram_init(); 54*042d53a7SEvalZero #endif 55*042d53a7SEvalZero } 56*042d53a7SEvalZero 57*042d53a7SEvalZero void nimble_port_run(void)58*042d53a7SEvalZeronimble_port_run(void) 59*042d53a7SEvalZero { 60*042d53a7SEvalZero struct ble_npl_event *ev; 61*042d53a7SEvalZero 62*042d53a7SEvalZero while (1) { 63*042d53a7SEvalZero ev = ble_npl_eventq_get(&g_eventq_dflt, BLE_NPL_TIME_FOREVER); 64*042d53a7SEvalZero ble_npl_event_run(ev); 65*042d53a7SEvalZero } 66*042d53a7SEvalZero } 67*042d53a7SEvalZero 68*042d53a7SEvalZero struct ble_npl_eventq * nimble_port_get_dflt_eventq(void)69*042d53a7SEvalZeronimble_port_get_dflt_eventq(void) 70*042d53a7SEvalZero { 71*042d53a7SEvalZero return &g_eventq_dflt; 72*042d53a7SEvalZero } 73*042d53a7SEvalZero 74*042d53a7SEvalZero #if NIMBLE_CFG_CONTROLLER 75*042d53a7SEvalZero void nimble_port_ll_task_func(void * arg)76*042d53a7SEvalZeronimble_port_ll_task_func(void *arg) 77*042d53a7SEvalZero { 78*042d53a7SEvalZero extern void ble_ll_task(void *); 79*042d53a7SEvalZero 80*042d53a7SEvalZero ble_ll_task(arg); 81*042d53a7SEvalZero } 82*042d53a7SEvalZero #endif 83