summaryrefslogtreecommitdiff
path: root/src/libs/mynewt-nimble/nimble/controller/test
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2020-04-26 10:25:59 +0200
committerJF <jf@codingfield.com>2020-04-26 10:25:59 +0200
commitbdc10744fb338ae197692713a0b48a7ccc36f566 (patch)
treeaf7a8f2f16ddd2e5483758effec15c7683f6c453 /src/libs/mynewt-nimble/nimble/controller/test
parent032fad094c6411ad3ff4321ad61ceed95d7dc4ff (diff)
Add Nimble in libs directory
Diffstat (limited to 'src/libs/mynewt-nimble/nimble/controller/test')
-rw-r--r--src/libs/mynewt-nimble/nimble/controller/test/pkg.yml34
-rw-r--r--src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.c115
-rw-r--r--src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_csa2_test.h27
-rw-r--r--src/libs/mynewt-nimble/nimble/controller/test/src/ble_ll_test.c36
-rw-r--r--src/libs/mynewt-nimble/nimble/controller/test/syscfg.yml25
5 files changed, 237 insertions, 0 deletions
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 <dev@mynewt.apache.org>"
+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 <stddef.h>
+#include <string.h>
+#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