From bdc10744fb338ae197692713a0b48a7ccc36f566 Mon Sep 17 00:00:00 2001 From: JF Date: Sun, 26 Apr 2020 10:25:59 +0200 Subject: Add Nimble in libs directory --- .../mynewt-nimble/nimble/controller/test/pkg.yml | 34 ++++++ .../nimble/controller/test/src/ble_ll_csa2_test.c | 115 +++++++++++++++++++++ .../nimble/controller/test/src/ble_ll_csa2_test.h | 27 +++++ .../nimble/controller/test/src/ble_ll_test.c | 36 +++++++ .../nimble/controller/test/syscfg.yml | 25 +++++ 5 files changed, 237 insertions(+) create mode 100644 src/libs/mynewt-nimble/nimble/controller/test/pkg.yml create mode 100644 src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.c create mode 100644 src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.h create mode 100644 src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_test.c create mode 100644 src/libs/mynewt-nimble/nimble/controller/test/syscfg.yml (limited to 'src/libs/mynewt-nimble/nimble/controller/test') diff --git a/src/libs/mynewt-nimble/nimble/controller/test/pkg.yml b/src/libs/mynewt-nimble/nimble/controller/test/pkg.yml new file mode 100644 index 00000000..ea728811 --- /dev/null +++ b/src/libs/mynewt-nimble/nimble/controller/test/pkg.yml @@ -0,0 +1,34 @@ +# 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. +# +pkg.name: nimble/controller/test +pkg.type: unittest +pkg.description: "NimBLE controller unit tests." +pkg.author: "Apache Mynewt " +pkg.homepage: "http://mynewt.apache.org/" +pkg.keywords: + +pkg.deps: + - "@apache-mynewt-core/test/testutil" + - nimble/controller + +pkg.deps.SELFTEST: + - "@apache-mynewt-core/sys/console/stub" + - "@apache-mynewt-core/sys/log/full" + - "@apache-mynewt-core/sys/stats/stub" + - nimble/drivers/native + - nimble/transport/ram diff --git a/src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.c b/src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.c new file mode 100644 index 00000000..5261eb5b --- /dev/null +++ b/src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.c @@ -0,0 +1,115 @@ +/* + * 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. + */ + +#include +#include +#include "testutil/testutil.h" +#include "controller/ble_ll_test.h" +#include "controller/ble_ll_conn.h" +#include "ble_ll_csa2_test.h" + +TEST_CASE_SELF(ble_ll_csa2_test_1) +{ + struct ble_ll_conn_sm conn; + uint8_t rc; + + /* + * Note: This test only verified mapped channel. Sample data also specifies + * prn_e and unmapped channel values but those would require extra access + * to internal state of algorithm which is not exposed. + */ + + memset(&conn, 0, sizeof(conn)); + + CONN_F_CSA2_SUPP(&conn) = 1; + + /* + * based on sample data from CoreSpec 5.0 Vol 6 Part C 3.1 + * (all channels used) + */ + conn.channel_id = ((0x8e89bed6 & 0xffff0000) >> 16) ^ + (0x8e89bed6 & 0x0000ffff); + + conn.num_used_chans = 37; + conn.chanmap[0] = 0xff; + conn.chanmap[1] = 0xff; + conn.chanmap[2] = 0xff; + conn.chanmap[3] = 0xff; + conn.chanmap[4] = 0x1f; + + conn.event_cntr = 1; + rc = ble_ll_conn_calc_dci(&conn, 0); + TEST_ASSERT(rc == 20); + + conn.event_cntr = 2; + rc = ble_ll_conn_calc_dci(&conn, 0); + TEST_ASSERT(rc == 6); + + conn.event_cntr = 3; + rc = ble_ll_conn_calc_dci(&conn, 0); + TEST_ASSERT(rc == 21); +} + +TEST_CASE_SELF(ble_ll_csa2_test_2) +{ + struct ble_ll_conn_sm conn; + uint8_t rc; + + /* + * Note: This test only verified mapped channel. Sample data also specifies + * prn_e and unmapped channel values but those would require extra access + * to internal state of algorithm which is not exposed. + */ + + memset(&conn, 0, sizeof(conn)); + + CONN_F_CSA2_SUPP(&conn) = 1; + + /* + * based on sample data from CoreSpec 5.0 Vol 6 Part C 3.2 + * (9 channels used) + */ + conn.channel_id = ((0x8e89bed6 & 0xffff0000) >> 16) ^ + (0x8e89bed6 & 0x0000ffff); + + conn.num_used_chans = 9; + conn.chanmap[0] = 0x00; + conn.chanmap[1] = 0x06; + conn.chanmap[2] = 0xe0; + conn.chanmap[3] = 0x00; + conn.chanmap[4] = 0x1e; + + conn.event_cntr = 6; + rc = ble_ll_conn_calc_dci(&conn, 0); + TEST_ASSERT(rc == 23); + + conn.event_cntr = 7; + rc = ble_ll_conn_calc_dci(&conn, 0); + TEST_ASSERT(rc == 9); + + conn.event_cntr = 8; + rc = ble_ll_conn_calc_dci(&conn, 0); + TEST_ASSERT(rc == 34); +} + +TEST_SUITE(ble_ll_csa2_test_suite) +{ + ble_ll_csa2_test_1(); + ble_ll_csa2_test_2(); +} diff --git a/src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.h b/src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.h new file mode 100644 index 00000000..5bcc142b --- /dev/null +++ b/src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.h @@ -0,0 +1,27 @@ +/* + * 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 H_BLE_LL_CSA2_TEST_ +#define H_BLE_LL_CSA2_TEST_ + +#include "testutil/testutil.h" + +TEST_SUITE_DECL(ble_ll_csa2_test_suite); + +#endif diff --git a/src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_test.c b/src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_test.c new file mode 100644 index 00000000..ee089afe --- /dev/null +++ b/src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_test.c @@ -0,0 +1,36 @@ +/* + * 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. + */ + +#include "sysinit/sysinit.h" +#include "syscfg/syscfg.h" +#include "controller/ble_ll_test.h" +#include "os/os.h" +#include "testutil/testutil.h" +#include "ble_ll_csa2_test.h" + +#if MYNEWT_VAL(SELFTEST) + +int +main(int argc, char **argv) +{ + ble_ll_csa2_test_suite(); + return tu_any_failed; +} + +#endif diff --git a/src/libs/mynewt-nimble/nimble/controller/test/syscfg.yml b/src/libs/mynewt-nimble/nimble/controller/test/syscfg.yml new file mode 100644 index 00000000..6edad438 --- /dev/null +++ b/src/libs/mynewt-nimble/nimble/controller/test/syscfg.yml @@ -0,0 +1,25 @@ +# 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. +# + +syscfg.vals: + BLE_LL_CFG_FEAT_LE_CSA2: 1 + + # Prevent priority conflict with controller task. + MCU_TIMER_POLLER_PRIO: 1 + MCU_UART_POLLER_PRIO: 2 + NATIVE_SOCKETS_PRIO: 3 -- cgit v1.2.3