From d90b7274fa8bbfa09f79660b45b550d91f7b0125 Mon Sep 17 00:00:00 2001 From: Jean-François Milants Date: Tue, 2 Feb 2021 22:09:00 +0100 Subject: Update to nimble 1.3 master branch commit 82153e744833821e20e9a8b0d61c38b2b0dbcfe1 WARNING : heartbeat task is disabled! --- .../npl/nuttx/include/nimble/nimble_npl_os.h | 71 +++++++++++++++++ .../porting/npl/nuttx/include/nimble/os_types.h | 90 ++++++++++++++++++++++ 2 files changed, 161 insertions(+) create mode 100644 src/libs/mynewt-nimble/porting/npl/nuttx/include/nimble/nimble_npl_os.h create mode 100644 src/libs/mynewt-nimble/porting/npl/nuttx/include/nimble/os_types.h (limited to 'src/libs/mynewt-nimble/porting/npl/nuttx/include/nimble') diff --git a/src/libs/mynewt-nimble/porting/npl/nuttx/include/nimble/nimble_npl_os.h b/src/libs/mynewt-nimble/porting/npl/nuttx/include/nimble/nimble_npl_os.h new file mode 100644 index 00000000..0f765f5a --- /dev/null +++ b/src/libs/mynewt-nimble/porting/npl/nuttx/include/nimble/nimble_npl_os.h @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#ifndef _NIMBLE_NPL_OS_H_ +#define _NIMBLE_NPL_OS_H_ + +#include +#include +#include +#include + +#include "os_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define BLE_NPL_OS_ALIGNMENT 4 + +#define BLE_NPL_TIME_FOREVER INT32_MAX + +#define SYSINIT_PANIC_MSG(msg) { fprintf(stderr, "%s\n", msg); abort(); } + +#define SYSINIT_PANIC_ASSERT_MSG(rc, msg) do \ +{ \ + if (!(rc)) { \ + SYSINIT_PANIC_MSG(msg); \ + } \ +} while (0) + +#ifdef __cplusplus +} +#endif + +/* Define some variables since nimBLE is designed to be built ignoring + * undefined macros and we do not ignore warnings on NuttX. + * + * Note: MYNEWT will give undefined warning, but some parts of the code + * interpret !defined(MYNEWT) as MYNEWT=0, so we shouldn't define it to zero + * either. + * + * Note 2: default_RNG_defined could probably set to 1 but this requires + * testing + */ + +#define MYNEWT_VAL_BLE_LL_CFG_FEAT_LL_PRIVACY 0 +#define MYNEWT_VAL_BLE_LL_CFG_FEAT_LL_EXT_ADV 0 +#define MYNEWT_VAL_BLE_LL_DTM_EXTENSIONS 0 +#define MYNEWT_VAL_BLE_CONTROLLER 0 +#define default_RNG_defined 0 +#define BLETEST_THROUGHPUT_TEST 0 +#define MYNEWT_VAL_TRNG 0 +#define MYNEWT_VAL_SELFTEST 0 + +#endif /* _NPL_H_ */ diff --git a/src/libs/mynewt-nimble/porting/npl/nuttx/include/nimble/os_types.h b/src/libs/mynewt-nimble/porting/npl/nuttx/include/nimble/os_types.h new file mode 100644 index 00000000..93d52891 --- /dev/null +++ b/src/libs/mynewt-nimble/porting/npl/nuttx/include/nimble/os_types.h @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#ifndef _NPL_OS_TYPES_H +#define _NPL_OS_TYPES_H + +#include +#include +#include +#include +#include +#include +#include +#include + +/* The highest and lowest task priorities */ +#define OS_TASK_PRI_HIGHEST (sched_get_priority_max(SCHED_RR)) +#define OS_TASK_PRI_LOWEST (sched_get_priority_min(SCHED_RR)) + +typedef uint32_t ble_npl_time_t; +typedef int32_t ble_npl_stime_t; + +//typedef int os_sr_t; +typedef int ble_npl_stack_t; + + +struct ble_npl_event { + uint8_t ev_queued; + ble_npl_event_fn *ev_cb; + void *ev_arg; +}; + +struct ble_npl_eventq { + mqd_t mq; +}; + +struct ble_npl_callout { + struct ble_npl_event c_ev; + struct ble_npl_eventq *c_evq; + uint32_t c_ticks; + timer_t c_timer; + bool c_active; +}; + +struct ble_npl_mutex { + pthread_mutex_t lock; + pthread_mutexattr_t attr; + struct timespec wait; +}; + +struct ble_npl_sem { + sem_t lock; +}; + +struct ble_npl_task { + pthread_t handle; + pthread_attr_t attr; + struct sched_param param; + const char* name; +}; + +typedef void *(*ble_npl_task_func_t)(void *); + +int ble_npl_task_init(struct ble_npl_task *t, const char *name, ble_npl_task_func_t func, + void *arg, uint8_t prio, ble_npl_time_t sanity_itvl, + ble_npl_stack_t *stack_bottom, uint16_t stack_size); + +int ble_npl_task_remove(struct ble_npl_task *t); + +uint8_t ble_npl_task_count(void); + +void ble_npl_task_yield(void); + +#endif // _NPL_OS_TYPES_H -- cgit v1.2.3