takashi kadono
/
Nucleo_446
Color Oled(SSD1331) connect to STMicroelectronics Nucleo-F466
mbed-os/UNITTESTS/features/lorawan/loramac/Test_LoRaMac.cpp@3:f3764f852aa8, 2018-10-11 (annotated)
- Committer:
- kadonotakashi
- Date:
- Thu Oct 11 02:27:46 2018 +0000
- Revision:
- 3:f3764f852aa8
- Parent:
- 0:8fdf9a60065b
Nucreo 446 + SSD1331 test version;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kadonotakashi | 0:8fdf9a60065b | 1 | /* |
kadonotakashi | 0:8fdf9a60065b | 2 | * Copyright (c) 2018, Arm Limited and affiliates |
kadonotakashi | 0:8fdf9a60065b | 3 | * SPDX-License-Identifier: Apache-2.0 |
kadonotakashi | 0:8fdf9a60065b | 4 | * |
kadonotakashi | 0:8fdf9a60065b | 5 | * Licensed under the Apache License, Version 2.0 (the "License"); |
kadonotakashi | 0:8fdf9a60065b | 6 | * you may not use this file except in compliance with the License. |
kadonotakashi | 0:8fdf9a60065b | 7 | * You may obtain a copy of the License at |
kadonotakashi | 0:8fdf9a60065b | 8 | * |
kadonotakashi | 0:8fdf9a60065b | 9 | * http://www.apache.org/licenses/LICENSE-2.0 |
kadonotakashi | 0:8fdf9a60065b | 10 | * |
kadonotakashi | 0:8fdf9a60065b | 11 | * Unless required by applicable law or agreed to in writing, software |
kadonotakashi | 0:8fdf9a60065b | 12 | * distributed under the License is distributed on an "AS IS" BASIS, |
kadonotakashi | 0:8fdf9a60065b | 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
kadonotakashi | 0:8fdf9a60065b | 14 | * See the License for the specific language governing permissions and |
kadonotakashi | 0:8fdf9a60065b | 15 | * limitations under the License. |
kadonotakashi | 0:8fdf9a60065b | 16 | */ |
kadonotakashi | 0:8fdf9a60065b | 17 | |
kadonotakashi | 0:8fdf9a60065b | 18 | #include "gtest/gtest.h" |
kadonotakashi | 0:8fdf9a60065b | 19 | #include "LoRaMac.h" |
kadonotakashi | 0:8fdf9a60065b | 20 | #include "LoRaPHY_stub.h" |
kadonotakashi | 0:8fdf9a60065b | 21 | #include "LoRaMacCrypto_stub.h" |
kadonotakashi | 0:8fdf9a60065b | 22 | #include "LoRaMacCommand_stub.h" |
kadonotakashi | 0:8fdf9a60065b | 23 | #include "LoRaWANTimer_stub.h" |
kadonotakashi | 0:8fdf9a60065b | 24 | #include "EventQueue_stub.h" |
kadonotakashi | 0:8fdf9a60065b | 25 | |
kadonotakashi | 0:8fdf9a60065b | 26 | using namespace events; |
kadonotakashi | 0:8fdf9a60065b | 27 | |
kadonotakashi | 0:8fdf9a60065b | 28 | class my_phy : public LoRaPHY |
kadonotakashi | 0:8fdf9a60065b | 29 | { |
kadonotakashi | 0:8fdf9a60065b | 30 | public: |
kadonotakashi | 0:8fdf9a60065b | 31 | my_phy(){}; |
kadonotakashi | 0:8fdf9a60065b | 32 | |
kadonotakashi | 0:8fdf9a60065b | 33 | virtual ~my_phy(){}; |
kadonotakashi | 0:8fdf9a60065b | 34 | }; |
kadonotakashi | 0:8fdf9a60065b | 35 | |
kadonotakashi | 0:8fdf9a60065b | 36 | class Test_LoRaMac : public testing::Test { |
kadonotakashi | 0:8fdf9a60065b | 37 | protected: |
kadonotakashi | 0:8fdf9a60065b | 38 | LoRaMac *object; |
kadonotakashi | 0:8fdf9a60065b | 39 | |
kadonotakashi | 0:8fdf9a60065b | 40 | virtual void SetUp() |
kadonotakashi | 0:8fdf9a60065b | 41 | { |
kadonotakashi | 0:8fdf9a60065b | 42 | object = new LoRaMac(); |
kadonotakashi | 0:8fdf9a60065b | 43 | } |
kadonotakashi | 0:8fdf9a60065b | 44 | |
kadonotakashi | 0:8fdf9a60065b | 45 | virtual void TearDown() |
kadonotakashi | 0:8fdf9a60065b | 46 | { |
kadonotakashi | 0:8fdf9a60065b | 47 | delete object; |
kadonotakashi | 0:8fdf9a60065b | 48 | } |
kadonotakashi | 0:8fdf9a60065b | 49 | }; |
kadonotakashi | 0:8fdf9a60065b | 50 | |
kadonotakashi | 0:8fdf9a60065b | 51 | TEST_F(Test_LoRaMac, constructor) |
kadonotakashi | 0:8fdf9a60065b | 52 | { |
kadonotakashi | 0:8fdf9a60065b | 53 | EXPECT_TRUE(object); |
kadonotakashi | 0:8fdf9a60065b | 54 | } |
kadonotakashi | 0:8fdf9a60065b | 55 | |
kadonotakashi | 0:8fdf9a60065b | 56 | void my_cb() |
kadonotakashi | 0:8fdf9a60065b | 57 | { |
kadonotakashi | 0:8fdf9a60065b | 58 | |
kadonotakashi | 0:8fdf9a60065b | 59 | } |
kadonotakashi | 0:8fdf9a60065b | 60 | |
kadonotakashi | 0:8fdf9a60065b | 61 | TEST_F(Test_LoRaMac, initialize) |
kadonotakashi | 0:8fdf9a60065b | 62 | { |
kadonotakashi | 0:8fdf9a60065b | 63 | my_phy phy; |
kadonotakashi | 0:8fdf9a60065b | 64 | object->bind_phy(phy); |
kadonotakashi | 0:8fdf9a60065b | 65 | |
kadonotakashi | 0:8fdf9a60065b | 66 | lorawan_connect_t conn; |
kadonotakashi | 0:8fdf9a60065b | 67 | uint8_t key[16]; |
kadonotakashi | 0:8fdf9a60065b | 68 | conn.connection_u.otaa.app_key = key; |
kadonotakashi | 0:8fdf9a60065b | 69 | conn.connection_u.otaa.app_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 70 | conn.connection_u.otaa.dev_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 71 | conn.connection_u.otaa.nb_trials = 2; |
kadonotakashi | 0:8fdf9a60065b | 72 | object->prepare_join(&conn, true); |
kadonotakashi | 0:8fdf9a60065b | 73 | |
kadonotakashi | 0:8fdf9a60065b | 74 | LoRaWANTimer_stub::call_cb_immediately = true; |
kadonotakashi | 0:8fdf9a60065b | 75 | EXPECT_TRUE(LORAWAN_STATUS_OK == object->initialize(NULL, my_cb)); |
kadonotakashi | 0:8fdf9a60065b | 76 | } |
kadonotakashi | 0:8fdf9a60065b | 77 | |
kadonotakashi | 0:8fdf9a60065b | 78 | TEST_F(Test_LoRaMac, disconnect) |
kadonotakashi | 0:8fdf9a60065b | 79 | { |
kadonotakashi | 0:8fdf9a60065b | 80 | object->disconnect(); |
kadonotakashi | 0:8fdf9a60065b | 81 | } |
kadonotakashi | 0:8fdf9a60065b | 82 | |
kadonotakashi | 0:8fdf9a60065b | 83 | TEST_F(Test_LoRaMac, nwk_joined) |
kadonotakashi | 0:8fdf9a60065b | 84 | { |
kadonotakashi | 0:8fdf9a60065b | 85 | EXPECT_EQ(false, object->nwk_joined()); |
kadonotakashi | 0:8fdf9a60065b | 86 | } |
kadonotakashi | 0:8fdf9a60065b | 87 | |
kadonotakashi | 0:8fdf9a60065b | 88 | TEST_F(Test_LoRaMac, add_channel_plan) |
kadonotakashi | 0:8fdf9a60065b | 89 | { |
kadonotakashi | 0:8fdf9a60065b | 90 | lorawan_channelplan_t plan; |
kadonotakashi | 0:8fdf9a60065b | 91 | EXPECT_EQ(LORAWAN_STATUS_OK, object->add_channel_plan(plan)); |
kadonotakashi | 0:8fdf9a60065b | 92 | |
kadonotakashi | 0:8fdf9a60065b | 93 | object->set_tx_ongoing(true); |
kadonotakashi | 0:8fdf9a60065b | 94 | EXPECT_EQ(LORAWAN_STATUS_BUSY, object->add_channel_plan(plan)); |
kadonotakashi | 0:8fdf9a60065b | 95 | } |
kadonotakashi | 0:8fdf9a60065b | 96 | |
kadonotakashi | 0:8fdf9a60065b | 97 | TEST_F(Test_LoRaMac, remove_channel_plan) |
kadonotakashi | 0:8fdf9a60065b | 98 | { |
kadonotakashi | 0:8fdf9a60065b | 99 | EXPECT_EQ(LORAWAN_STATUS_OK, object->remove_channel_plan()); |
kadonotakashi | 0:8fdf9a60065b | 100 | |
kadonotakashi | 0:8fdf9a60065b | 101 | object->set_tx_ongoing(true); |
kadonotakashi | 0:8fdf9a60065b | 102 | EXPECT_EQ(LORAWAN_STATUS_BUSY, object->remove_channel_plan()); |
kadonotakashi | 0:8fdf9a60065b | 103 | } |
kadonotakashi | 0:8fdf9a60065b | 104 | |
kadonotakashi | 0:8fdf9a60065b | 105 | TEST_F(Test_LoRaMac, get_channel_plan) |
kadonotakashi | 0:8fdf9a60065b | 106 | { |
kadonotakashi | 0:8fdf9a60065b | 107 | lorawan_channelplan_t plan; |
kadonotakashi | 0:8fdf9a60065b | 108 | EXPECT_EQ(LORAWAN_STATUS_OK, object->get_channel_plan(plan)); |
kadonotakashi | 0:8fdf9a60065b | 109 | } |
kadonotakashi | 0:8fdf9a60065b | 110 | |
kadonotakashi | 0:8fdf9a60065b | 111 | TEST_F(Test_LoRaMac, remove_single_channel) |
kadonotakashi | 0:8fdf9a60065b | 112 | { |
kadonotakashi | 0:8fdf9a60065b | 113 | EXPECT_EQ(LORAWAN_STATUS_OK, object->remove_single_channel(1)); |
kadonotakashi | 0:8fdf9a60065b | 114 | |
kadonotakashi | 0:8fdf9a60065b | 115 | object->set_tx_ongoing(true); |
kadonotakashi | 0:8fdf9a60065b | 116 | EXPECT_EQ(LORAWAN_STATUS_BUSY, object->remove_single_channel(1)); |
kadonotakashi | 0:8fdf9a60065b | 117 | } |
kadonotakashi | 0:8fdf9a60065b | 118 | |
kadonotakashi | 0:8fdf9a60065b | 119 | TEST_F(Test_LoRaMac, multicast_channel_link) |
kadonotakashi | 0:8fdf9a60065b | 120 | { |
kadonotakashi | 0:8fdf9a60065b | 121 | multicast_params_t p; |
kadonotakashi | 0:8fdf9a60065b | 122 | |
kadonotakashi | 0:8fdf9a60065b | 123 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->multicast_channel_link(NULL)); |
kadonotakashi | 0:8fdf9a60065b | 124 | |
kadonotakashi | 0:8fdf9a60065b | 125 | object->set_tx_ongoing(true); |
kadonotakashi | 0:8fdf9a60065b | 126 | EXPECT_EQ(LORAWAN_STATUS_BUSY, object->multicast_channel_link(&p)); |
kadonotakashi | 0:8fdf9a60065b | 127 | |
kadonotakashi | 0:8fdf9a60065b | 128 | object->set_tx_ongoing(false); |
kadonotakashi | 0:8fdf9a60065b | 129 | EXPECT_EQ(LORAWAN_STATUS_OK, object->multicast_channel_link(&p)); |
kadonotakashi | 0:8fdf9a60065b | 130 | } |
kadonotakashi | 0:8fdf9a60065b | 131 | |
kadonotakashi | 0:8fdf9a60065b | 132 | TEST_F(Test_LoRaMac, multicast_channel_unlink) |
kadonotakashi | 0:8fdf9a60065b | 133 | { |
kadonotakashi | 0:8fdf9a60065b | 134 | multicast_params_t p; |
kadonotakashi | 0:8fdf9a60065b | 135 | |
kadonotakashi | 0:8fdf9a60065b | 136 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->multicast_channel_unlink(NULL)); |
kadonotakashi | 0:8fdf9a60065b | 137 | |
kadonotakashi | 0:8fdf9a60065b | 138 | object->set_tx_ongoing(true); |
kadonotakashi | 0:8fdf9a60065b | 139 | EXPECT_EQ(LORAWAN_STATUS_BUSY, object->multicast_channel_unlink(&p)); |
kadonotakashi | 0:8fdf9a60065b | 140 | |
kadonotakashi | 0:8fdf9a60065b | 141 | object->set_tx_ongoing(false); |
kadonotakashi | 0:8fdf9a60065b | 142 | EXPECT_EQ(LORAWAN_STATUS_OK, object->multicast_channel_unlink(&p)); |
kadonotakashi | 0:8fdf9a60065b | 143 | } |
kadonotakashi | 0:8fdf9a60065b | 144 | |
kadonotakashi | 0:8fdf9a60065b | 145 | TEST_F(Test_LoRaMac, send) |
kadonotakashi | 0:8fdf9a60065b | 146 | { |
kadonotakashi | 0:8fdf9a60065b | 147 | loramac_mhdr_t mac_hdr; |
kadonotakashi | 0:8fdf9a60065b | 148 | uint8_t buf[15]; |
kadonotakashi | 0:8fdf9a60065b | 149 | mac_hdr.bits.mtype = FRAME_TYPE_DATA_CONFIRMED_UP; |
kadonotakashi | 0:8fdf9a60065b | 150 | object->send(&mac_hdr, 1, buf, 15); |
kadonotakashi | 0:8fdf9a60065b | 151 | } |
kadonotakashi | 0:8fdf9a60065b | 152 | |
kadonotakashi | 0:8fdf9a60065b | 153 | TEST_F(Test_LoRaMac, get_default_tx_datarate) |
kadonotakashi | 0:8fdf9a60065b | 154 | { |
kadonotakashi | 0:8fdf9a60065b | 155 | object->get_default_tx_datarate(); |
kadonotakashi | 0:8fdf9a60065b | 156 | } |
kadonotakashi | 0:8fdf9a60065b | 157 | |
kadonotakashi | 0:8fdf9a60065b | 158 | TEST_F(Test_LoRaMac, enable_adaptive_datarate) |
kadonotakashi | 0:8fdf9a60065b | 159 | { |
kadonotakashi | 0:8fdf9a60065b | 160 | object->enable_adaptive_datarate(true); |
kadonotakashi | 0:8fdf9a60065b | 161 | } |
kadonotakashi | 0:8fdf9a60065b | 162 | |
kadonotakashi | 0:8fdf9a60065b | 163 | TEST_F(Test_LoRaMac, set_channel_data_rate) |
kadonotakashi | 0:8fdf9a60065b | 164 | { |
kadonotakashi | 0:8fdf9a60065b | 165 | object->set_channel_data_rate(8); |
kadonotakashi | 0:8fdf9a60065b | 166 | } |
kadonotakashi | 0:8fdf9a60065b | 167 | |
kadonotakashi | 0:8fdf9a60065b | 168 | TEST_F(Test_LoRaMac, tx_ongoing) |
kadonotakashi | 0:8fdf9a60065b | 169 | { |
kadonotakashi | 0:8fdf9a60065b | 170 | object->tx_ongoing(); |
kadonotakashi | 0:8fdf9a60065b | 171 | } |
kadonotakashi | 0:8fdf9a60065b | 172 | |
kadonotakashi | 0:8fdf9a60065b | 173 | TEST_F(Test_LoRaMac, set_tx_ongoing) |
kadonotakashi | 0:8fdf9a60065b | 174 | { |
kadonotakashi | 0:8fdf9a60065b | 175 | object->set_tx_ongoing(true); |
kadonotakashi | 0:8fdf9a60065b | 176 | } |
kadonotakashi | 0:8fdf9a60065b | 177 | |
kadonotakashi | 0:8fdf9a60065b | 178 | TEST_F(Test_LoRaMac, reset_ongoing_tx) |
kadonotakashi | 0:8fdf9a60065b | 179 | { |
kadonotakashi | 0:8fdf9a60065b | 180 | object->reset_ongoing_tx(true); |
kadonotakashi | 0:8fdf9a60065b | 181 | } |
kadonotakashi | 0:8fdf9a60065b | 182 | |
kadonotakashi | 0:8fdf9a60065b | 183 | TEST_F(Test_LoRaMac, prepare_ongoing_tx) |
kadonotakashi | 0:8fdf9a60065b | 184 | { |
kadonotakashi | 0:8fdf9a60065b | 185 | uint8_t buf[16]; |
kadonotakashi | 0:8fdf9a60065b | 186 | object->prepare_ongoing_tx(1, buf, 16, 1, 0); |
kadonotakashi | 0:8fdf9a60065b | 187 | } |
kadonotakashi | 0:8fdf9a60065b | 188 | |
kadonotakashi | 0:8fdf9a60065b | 189 | TEST_F(Test_LoRaMac, send_ongoing_tx) |
kadonotakashi | 0:8fdf9a60065b | 190 | { |
kadonotakashi | 0:8fdf9a60065b | 191 | object->send_ongoing_tx(); |
kadonotakashi | 0:8fdf9a60065b | 192 | } |
kadonotakashi | 0:8fdf9a60065b | 193 | |
kadonotakashi | 0:8fdf9a60065b | 194 | TEST_F(Test_LoRaMac, get_device_class) |
kadonotakashi | 0:8fdf9a60065b | 195 | { |
kadonotakashi | 0:8fdf9a60065b | 196 | object->get_device_class(); |
kadonotakashi | 0:8fdf9a60065b | 197 | } |
kadonotakashi | 0:8fdf9a60065b | 198 | |
kadonotakashi | 0:8fdf9a60065b | 199 | void exp_cb() |
kadonotakashi | 0:8fdf9a60065b | 200 | { |
kadonotakashi | 0:8fdf9a60065b | 201 | |
kadonotakashi | 0:8fdf9a60065b | 202 | } |
kadonotakashi | 0:8fdf9a60065b | 203 | |
kadonotakashi | 0:8fdf9a60065b | 204 | TEST_F(Test_LoRaMac, set_device_class) |
kadonotakashi | 0:8fdf9a60065b | 205 | { |
kadonotakashi | 0:8fdf9a60065b | 206 | object->set_device_class(CLASS_B, exp_cb); |
kadonotakashi | 0:8fdf9a60065b | 207 | } |
kadonotakashi | 0:8fdf9a60065b | 208 | |
kadonotakashi | 0:8fdf9a60065b | 209 | TEST_F(Test_LoRaMac, setup_link_check_request) |
kadonotakashi | 0:8fdf9a60065b | 210 | { |
kadonotakashi | 0:8fdf9a60065b | 211 | object->setup_link_check_request(); |
kadonotakashi | 0:8fdf9a60065b | 212 | } |
kadonotakashi | 0:8fdf9a60065b | 213 | |
kadonotakashi | 0:8fdf9a60065b | 214 | TEST_F(Test_LoRaMac, prepare_join) |
kadonotakashi | 0:8fdf9a60065b | 215 | { |
kadonotakashi | 0:8fdf9a60065b | 216 | lorawan_connect_t conn; |
kadonotakashi | 0:8fdf9a60065b | 217 | object->prepare_join(&conn, false); |
kadonotakashi | 0:8fdf9a60065b | 218 | |
kadonotakashi | 0:8fdf9a60065b | 219 | my_phy phy; |
kadonotakashi | 0:8fdf9a60065b | 220 | object->bind_phy(phy); |
kadonotakashi | 0:8fdf9a60065b | 221 | EXPECT_EQ(LORAWAN_STATUS_OK, object->join(false)); |
kadonotakashi | 0:8fdf9a60065b | 222 | |
kadonotakashi | 0:8fdf9a60065b | 223 | uint8_t key[16]; |
kadonotakashi | 0:8fdf9a60065b | 224 | conn.connection_u.otaa.app_key = NULL; |
kadonotakashi | 0:8fdf9a60065b | 225 | conn.connection_u.otaa.app_eui = NULL; |
kadonotakashi | 0:8fdf9a60065b | 226 | conn.connection_u.otaa.dev_eui = NULL; |
kadonotakashi | 0:8fdf9a60065b | 227 | conn.connection_u.otaa.nb_trials = 0; |
kadonotakashi | 0:8fdf9a60065b | 228 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->prepare_join(&conn, true)); |
kadonotakashi | 0:8fdf9a60065b | 229 | |
kadonotakashi | 0:8fdf9a60065b | 230 | conn.connection_u.otaa.app_key = key; |
kadonotakashi | 0:8fdf9a60065b | 231 | conn.connection_u.otaa.app_eui = NULL; |
kadonotakashi | 0:8fdf9a60065b | 232 | conn.connection_u.otaa.dev_eui = NULL; |
kadonotakashi | 0:8fdf9a60065b | 233 | conn.connection_u.otaa.nb_trials = 0; |
kadonotakashi | 0:8fdf9a60065b | 234 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->prepare_join(&conn, true)); |
kadonotakashi | 0:8fdf9a60065b | 235 | |
kadonotakashi | 0:8fdf9a60065b | 236 | conn.connection_u.otaa.app_key = key; |
kadonotakashi | 0:8fdf9a60065b | 237 | conn.connection_u.otaa.app_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 238 | conn.connection_u.otaa.dev_eui = NULL; |
kadonotakashi | 0:8fdf9a60065b | 239 | conn.connection_u.otaa.nb_trials = 0; |
kadonotakashi | 0:8fdf9a60065b | 240 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->prepare_join(&conn, true)); |
kadonotakashi | 0:8fdf9a60065b | 241 | |
kadonotakashi | 0:8fdf9a60065b | 242 | conn.connection_u.otaa.app_key = key; |
kadonotakashi | 0:8fdf9a60065b | 243 | conn.connection_u.otaa.app_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 244 | conn.connection_u.otaa.dev_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 245 | conn.connection_u.otaa.nb_trials = 0; |
kadonotakashi | 0:8fdf9a60065b | 246 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->prepare_join(&conn, true)); |
kadonotakashi | 0:8fdf9a60065b | 247 | |
kadonotakashi | 0:8fdf9a60065b | 248 | LoRaPHY_stub::bool_table[0] = false; |
kadonotakashi | 0:8fdf9a60065b | 249 | LoRaPHY_stub::bool_counter = 0; |
kadonotakashi | 0:8fdf9a60065b | 250 | conn.connection_u.otaa.app_key = key; |
kadonotakashi | 0:8fdf9a60065b | 251 | conn.connection_u.otaa.app_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 252 | conn.connection_u.otaa.dev_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 253 | conn.connection_u.otaa.nb_trials = 2; |
kadonotakashi | 0:8fdf9a60065b | 254 | EXPECT_EQ(LORAWAN_STATUS_OK, object->prepare_join(&conn, true)); |
kadonotakashi | 0:8fdf9a60065b | 255 | |
kadonotakashi | 0:8fdf9a60065b | 256 | conn.connection_u.abp.dev_addr = 0; |
kadonotakashi | 0:8fdf9a60065b | 257 | conn.connection_u.abp.nwk_id = 0; |
kadonotakashi | 0:8fdf9a60065b | 258 | conn.connection_u.abp.nwk_skey = NULL; |
kadonotakashi | 0:8fdf9a60065b | 259 | conn.connection_u.abp.app_skey = NULL; |
kadonotakashi | 0:8fdf9a60065b | 260 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->prepare_join(&conn, false)); |
kadonotakashi | 0:8fdf9a60065b | 261 | |
kadonotakashi | 0:8fdf9a60065b | 262 | conn.connection_u.abp.dev_addr = 1; |
kadonotakashi | 0:8fdf9a60065b | 263 | conn.connection_u.abp.nwk_id = 0; |
kadonotakashi | 0:8fdf9a60065b | 264 | conn.connection_u.abp.nwk_skey = NULL; |
kadonotakashi | 0:8fdf9a60065b | 265 | conn.connection_u.abp.app_skey = NULL; |
kadonotakashi | 0:8fdf9a60065b | 266 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->prepare_join(&conn, false)); |
kadonotakashi | 0:8fdf9a60065b | 267 | |
kadonotakashi | 0:8fdf9a60065b | 268 | conn.connection_u.abp.dev_addr = 1; |
kadonotakashi | 0:8fdf9a60065b | 269 | conn.connection_u.abp.nwk_id = 2; |
kadonotakashi | 0:8fdf9a60065b | 270 | conn.connection_u.abp.nwk_skey = NULL; |
kadonotakashi | 0:8fdf9a60065b | 271 | conn.connection_u.abp.app_skey = NULL; |
kadonotakashi | 0:8fdf9a60065b | 272 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->prepare_join(&conn, false)); |
kadonotakashi | 0:8fdf9a60065b | 273 | |
kadonotakashi | 0:8fdf9a60065b | 274 | conn.connection_u.abp.dev_addr = 1; |
kadonotakashi | 0:8fdf9a60065b | 275 | conn.connection_u.abp.nwk_id = 2; |
kadonotakashi | 0:8fdf9a60065b | 276 | conn.connection_u.abp.nwk_skey = key; |
kadonotakashi | 0:8fdf9a60065b | 277 | conn.connection_u.abp.app_skey = NULL; |
kadonotakashi | 0:8fdf9a60065b | 278 | EXPECT_EQ(LORAWAN_STATUS_PARAMETER_INVALID, object->prepare_join(&conn, false)); |
kadonotakashi | 0:8fdf9a60065b | 279 | |
kadonotakashi | 0:8fdf9a60065b | 280 | conn.connection_u.abp.dev_addr = 1; |
kadonotakashi | 0:8fdf9a60065b | 281 | conn.connection_u.abp.nwk_id = 2; |
kadonotakashi | 0:8fdf9a60065b | 282 | conn.connection_u.abp.nwk_skey = key; |
kadonotakashi | 0:8fdf9a60065b | 283 | conn.connection_u.abp.app_skey = key; |
kadonotakashi | 0:8fdf9a60065b | 284 | EXPECT_EQ(LORAWAN_STATUS_OK, object->prepare_join(&conn, false)); |
kadonotakashi | 0:8fdf9a60065b | 285 | |
kadonotakashi | 0:8fdf9a60065b | 286 | EXPECT_EQ(LORAWAN_STATUS_OK, object->prepare_join(NULL, false)); |
kadonotakashi | 0:8fdf9a60065b | 287 | } |
kadonotakashi | 0:8fdf9a60065b | 288 | |
kadonotakashi | 0:8fdf9a60065b | 289 | TEST_F(Test_LoRaMac, join) |
kadonotakashi | 0:8fdf9a60065b | 290 | { |
kadonotakashi | 0:8fdf9a60065b | 291 | my_phy phy; |
kadonotakashi | 0:8fdf9a60065b | 292 | object->bind_phy(phy); |
kadonotakashi | 0:8fdf9a60065b | 293 | EXPECT_EQ(LORAWAN_STATUS_OK, object->join(false)); |
kadonotakashi | 0:8fdf9a60065b | 294 | |
kadonotakashi | 0:8fdf9a60065b | 295 | lorawan_connect_t conn; |
kadonotakashi | 0:8fdf9a60065b | 296 | uint8_t key[16]; |
kadonotakashi | 0:8fdf9a60065b | 297 | conn.connection_u.otaa.app_key = key; |
kadonotakashi | 0:8fdf9a60065b | 298 | conn.connection_u.otaa.app_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 299 | conn.connection_u.otaa.dev_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 300 | conn.connection_u.otaa.nb_trials = 2; |
kadonotakashi | 0:8fdf9a60065b | 301 | object->prepare_join(&conn, true); |
kadonotakashi | 0:8fdf9a60065b | 302 | EXPECT_EQ(LORAWAN_STATUS_CONNECT_IN_PROGRESS, object->join(true)); |
kadonotakashi | 0:8fdf9a60065b | 303 | } |
kadonotakashi | 0:8fdf9a60065b | 304 | |
kadonotakashi | 0:8fdf9a60065b | 305 | TEST_F(Test_LoRaMac, on_radio_tx_done) |
kadonotakashi | 0:8fdf9a60065b | 306 | { |
kadonotakashi | 0:8fdf9a60065b | 307 | my_phy phy; |
kadonotakashi | 0:8fdf9a60065b | 308 | object->bind_phy(phy); |
kadonotakashi | 0:8fdf9a60065b | 309 | object->on_radio_tx_done(100); |
kadonotakashi | 0:8fdf9a60065b | 310 | } |
kadonotakashi | 0:8fdf9a60065b | 311 | |
kadonotakashi | 0:8fdf9a60065b | 312 | TEST_F(Test_LoRaMac, on_radio_rx_done) |
kadonotakashi | 0:8fdf9a60065b | 313 | { |
kadonotakashi | 0:8fdf9a60065b | 314 | uint8_t buf[16]; |
kadonotakashi | 0:8fdf9a60065b | 315 | object->on_radio_rx_done(buf, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 316 | } |
kadonotakashi | 0:8fdf9a60065b | 317 | |
kadonotakashi | 0:8fdf9a60065b | 318 | TEST_F(Test_LoRaMac, on_radio_tx_timeout) |
kadonotakashi | 0:8fdf9a60065b | 319 | { |
kadonotakashi | 0:8fdf9a60065b | 320 | object->on_radio_tx_timeout(); |
kadonotakashi | 0:8fdf9a60065b | 321 | } |
kadonotakashi | 0:8fdf9a60065b | 322 | |
kadonotakashi | 0:8fdf9a60065b | 323 | TEST_F(Test_LoRaMac, on_radio_rx_timeout) |
kadonotakashi | 0:8fdf9a60065b | 324 | { |
kadonotakashi | 0:8fdf9a60065b | 325 | object->on_radio_rx_timeout(true); |
kadonotakashi | 0:8fdf9a60065b | 326 | } |
kadonotakashi | 0:8fdf9a60065b | 327 | |
kadonotakashi | 0:8fdf9a60065b | 328 | TEST_F(Test_LoRaMac, continue_joining_process) |
kadonotakashi | 0:8fdf9a60065b | 329 | { |
kadonotakashi | 0:8fdf9a60065b | 330 | my_phy phy; |
kadonotakashi | 0:8fdf9a60065b | 331 | object->bind_phy(phy); |
kadonotakashi | 0:8fdf9a60065b | 332 | lorawan_connect_t conn; |
kadonotakashi | 0:8fdf9a60065b | 333 | uint8_t key[16]; |
kadonotakashi | 0:8fdf9a60065b | 334 | conn.connection_u.otaa.app_key = key; |
kadonotakashi | 0:8fdf9a60065b | 335 | conn.connection_u.otaa.app_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 336 | conn.connection_u.otaa.dev_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 337 | conn.connection_u.otaa.nb_trials = 2; |
kadonotakashi | 0:8fdf9a60065b | 338 | object->prepare_join(&conn, true); |
kadonotakashi | 0:8fdf9a60065b | 339 | object->continue_joining_process(); |
kadonotakashi | 0:8fdf9a60065b | 340 | } |
kadonotakashi | 0:8fdf9a60065b | 341 | |
kadonotakashi | 0:8fdf9a60065b | 342 | TEST_F(Test_LoRaMac, continue_sending_process) |
kadonotakashi | 0:8fdf9a60065b | 343 | { |
kadonotakashi | 0:8fdf9a60065b | 344 | my_phy phy; |
kadonotakashi | 0:8fdf9a60065b | 345 | object->bind_phy(phy); |
kadonotakashi | 0:8fdf9a60065b | 346 | object->continue_sending_process(); |
kadonotakashi | 0:8fdf9a60065b | 347 | } |
kadonotakashi | 0:8fdf9a60065b | 348 | |
kadonotakashi | 0:8fdf9a60065b | 349 | TEST_F(Test_LoRaMac, get_mcps_confirmation) |
kadonotakashi | 0:8fdf9a60065b | 350 | { |
kadonotakashi | 0:8fdf9a60065b | 351 | object->get_mcps_confirmation(); |
kadonotakashi | 0:8fdf9a60065b | 352 | } |
kadonotakashi | 0:8fdf9a60065b | 353 | |
kadonotakashi | 0:8fdf9a60065b | 354 | TEST_F(Test_LoRaMac, get_mcps_indication) |
kadonotakashi | 0:8fdf9a60065b | 355 | { |
kadonotakashi | 0:8fdf9a60065b | 356 | object->get_mcps_indication(); |
kadonotakashi | 0:8fdf9a60065b | 357 | } |
kadonotakashi | 0:8fdf9a60065b | 358 | |
kadonotakashi | 0:8fdf9a60065b | 359 | TEST_F(Test_LoRaMac, get_mlme_confirmation) |
kadonotakashi | 0:8fdf9a60065b | 360 | { |
kadonotakashi | 0:8fdf9a60065b | 361 | object->get_mlme_confirmation(); |
kadonotakashi | 0:8fdf9a60065b | 362 | } |
kadonotakashi | 0:8fdf9a60065b | 363 | |
kadonotakashi | 0:8fdf9a60065b | 364 | TEST_F(Test_LoRaMac, get_mlme_indication) |
kadonotakashi | 0:8fdf9a60065b | 365 | { |
kadonotakashi | 0:8fdf9a60065b | 366 | object->get_mlme_indication(); |
kadonotakashi | 0:8fdf9a60065b | 367 | } |
kadonotakashi | 0:8fdf9a60065b | 368 | |
kadonotakashi | 0:8fdf9a60065b | 369 | TEST_F(Test_LoRaMac, post_process_mcps_req) |
kadonotakashi | 0:8fdf9a60065b | 370 | { |
kadonotakashi | 0:8fdf9a60065b | 371 | uint8_t data[16]; |
kadonotakashi | 0:8fdf9a60065b | 372 | LoRaPHY_stub::bool_counter = 0; |
kadonotakashi | 0:8fdf9a60065b | 373 | LoRaPHY_stub::bool_table[0] = true; |
kadonotakashi | 0:8fdf9a60065b | 374 | |
kadonotakashi | 0:8fdf9a60065b | 375 | my_phy phy; |
kadonotakashi | 0:8fdf9a60065b | 376 | object->bind_phy(phy); |
kadonotakashi | 0:8fdf9a60065b | 377 | object->join(false); |
kadonotakashi | 0:8fdf9a60065b | 378 | |
kadonotakashi | 0:8fdf9a60065b | 379 | object->prepare_ongoing_tx(1, data, 15, 0x01, 2); |
kadonotakashi | 0:8fdf9a60065b | 380 | object->send_ongoing_tx(); |
kadonotakashi | 0:8fdf9a60065b | 381 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 382 | |
kadonotakashi | 0:8fdf9a60065b | 383 | LoRaPHY_stub::bool_counter = 0; |
kadonotakashi | 0:8fdf9a60065b | 384 | object->prepare_ongoing_tx(1, data, 15, 0x02, 2); |
kadonotakashi | 0:8fdf9a60065b | 385 | object->send_ongoing_tx(); |
kadonotakashi | 0:8fdf9a60065b | 386 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 387 | |
kadonotakashi | 0:8fdf9a60065b | 388 | //_mcps_confirmation.ack_received missing here |
kadonotakashi | 0:8fdf9a60065b | 389 | uint8_t payload[16] = {}; |
kadonotakashi | 0:8fdf9a60065b | 390 | LoRaPHY_stub::uint16_value = 5; |
kadonotakashi | 0:8fdf9a60065b | 391 | payload[0] = FRAME_TYPE_DATA_CONFIRMED_DOWN << 5; |
kadonotakashi | 0:8fdf9a60065b | 392 | payload[5] = 1 << 5; |
kadonotakashi | 0:8fdf9a60065b | 393 | |
kadonotakashi | 0:8fdf9a60065b | 394 | //address != _params.dev_addr |
kadonotakashi | 0:8fdf9a60065b | 395 | payload[2] = 2; |
kadonotakashi | 0:8fdf9a60065b | 396 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 397 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 398 | |
kadonotakashi | 0:8fdf9a60065b | 399 | payload[2] = 0; |
kadonotakashi | 0:8fdf9a60065b | 400 | //mic failure |
kadonotakashi | 0:8fdf9a60065b | 401 | payload[13] = 2; |
kadonotakashi | 0:8fdf9a60065b | 402 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 403 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 404 | |
kadonotakashi | 0:8fdf9a60065b | 405 | payload[13] = 0; |
kadonotakashi | 0:8fdf9a60065b | 406 | //crypto failure |
kadonotakashi | 0:8fdf9a60065b | 407 | LoRaMacCrypto_stub::int_table_idx_value = 0; |
kadonotakashi | 0:8fdf9a60065b | 408 | LoRaMacCrypto_stub::int_table[0] = 4; |
kadonotakashi | 0:8fdf9a60065b | 409 | LoRaMacCrypto_stub::int_table[1] = 4; |
kadonotakashi | 0:8fdf9a60065b | 410 | // LoRaPHY_stub::uint16_value = 0; |
kadonotakashi | 0:8fdf9a60065b | 411 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 412 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 413 | |
kadonotakashi | 0:8fdf9a60065b | 414 | //process_mac_commands failure |
kadonotakashi | 0:8fdf9a60065b | 415 | LoRaMacCommand_stub::status_value = LORAWAN_STATUS_BUSY; |
kadonotakashi | 0:8fdf9a60065b | 416 | LoRaMacCrypto_stub::int_table[0] = 0; |
kadonotakashi | 0:8fdf9a60065b | 417 | LoRaMacCrypto_stub::int_table[1] = 0; |
kadonotakashi | 0:8fdf9a60065b | 418 | payload[7] = 1; |
kadonotakashi | 0:8fdf9a60065b | 419 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 420 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 421 | |
kadonotakashi | 0:8fdf9a60065b | 422 | //FOpts_len != 0 |
kadonotakashi | 0:8fdf9a60065b | 423 | payload[5] = (1 << 5) + 1; |
kadonotakashi | 0:8fdf9a60065b | 424 | payload[7] = 0; |
kadonotakashi | 0:8fdf9a60065b | 425 | LoRaMacCommand_stub::status_value = LORAWAN_STATUS_OK; |
kadonotakashi | 0:8fdf9a60065b | 426 | payload[0] = FRAME_TYPE_DATA_UNCONFIRMED_DOWN << 5; |
kadonotakashi | 0:8fdf9a60065b | 427 | |
kadonotakashi | 0:8fdf9a60065b | 428 | object->on_radio_rx_done(payload, 13, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 429 | |
kadonotakashi | 0:8fdf9a60065b | 430 | //_mac_commands.process_mac_commands fails |
kadonotakashi | 0:8fdf9a60065b | 431 | LoRaMacCommand_stub::status_value = LORAWAN_STATUS_DATARATE_INVALID; |
kadonotakashi | 0:8fdf9a60065b | 432 | object->on_radio_rx_done(payload, 13, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 433 | |
kadonotakashi | 0:8fdf9a60065b | 434 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 435 | |
kadonotakashi | 0:8fdf9a60065b | 436 | payload[9] = 1; |
kadonotakashi | 0:8fdf9a60065b | 437 | LoRaMacCommand_stub::status_value = LORAWAN_STATUS_OK; |
kadonotakashi | 0:8fdf9a60065b | 438 | payload[0] = FRAME_TYPE_PROPRIETARY << 5; |
kadonotakashi | 0:8fdf9a60065b | 439 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 440 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 441 | |
kadonotakashi | 0:8fdf9a60065b | 442 | payload[9] = 0; |
kadonotakashi | 0:8fdf9a60065b | 443 | payload[5] = 1 << 5; |
kadonotakashi | 0:8fdf9a60065b | 444 | LoRaMacCommand_stub::status_value = LORAWAN_STATUS_OK; |
kadonotakashi | 0:8fdf9a60065b | 445 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 446 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 447 | |
kadonotakashi | 0:8fdf9a60065b | 448 | LoRaPHY_stub::bool_counter = 0; |
kadonotakashi | 0:8fdf9a60065b | 449 | object->prepare_ongoing_tx(1, data, 15, 0x04, 2); |
kadonotakashi | 0:8fdf9a60065b | 450 | object->send_ongoing_tx(); |
kadonotakashi | 0:8fdf9a60065b | 451 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 452 | |
kadonotakashi | 0:8fdf9a60065b | 453 | LoRaPHY_stub::bool_counter = 0; |
kadonotakashi | 0:8fdf9a60065b | 454 | object->prepare_ongoing_tx(1, data, 15, 0x08, 2); |
kadonotakashi | 0:8fdf9a60065b | 455 | object->send_ongoing_tx(); |
kadonotakashi | 0:8fdf9a60065b | 456 | object->post_process_mcps_req(); |
kadonotakashi | 0:8fdf9a60065b | 457 | } |
kadonotakashi | 0:8fdf9a60065b | 458 | |
kadonotakashi | 0:8fdf9a60065b | 459 | TEST_F(Test_LoRaMac, handle_join_accept_frame) |
kadonotakashi | 0:8fdf9a60065b | 460 | { |
kadonotakashi | 0:8fdf9a60065b | 461 | LoRaPHY_stub::bool_counter = 0; |
kadonotakashi | 0:8fdf9a60065b | 462 | LoRaPHY_stub::bool_table[0] = true; |
kadonotakashi | 0:8fdf9a60065b | 463 | |
kadonotakashi | 0:8fdf9a60065b | 464 | my_phy phy; |
kadonotakashi | 0:8fdf9a60065b | 465 | object->bind_phy(phy); |
kadonotakashi | 0:8fdf9a60065b | 466 | |
kadonotakashi | 0:8fdf9a60065b | 467 | uint8_t payload[16] = {}; |
kadonotakashi | 0:8fdf9a60065b | 468 | LoRaPHY_stub::uint16_value = 5; |
kadonotakashi | 0:8fdf9a60065b | 469 | payload[0] = FRAME_TYPE_JOIN_ACCEPT << 5; |
kadonotakashi | 0:8fdf9a60065b | 470 | payload[5] = 1 << 5; |
kadonotakashi | 0:8fdf9a60065b | 471 | |
kadonotakashi | 0:8fdf9a60065b | 472 | LoRaMacCrypto_stub::int_table_idx_value = 0; |
kadonotakashi | 0:8fdf9a60065b | 473 | LoRaMacCrypto_stub::int_table[0] = 4; |
kadonotakashi | 0:8fdf9a60065b | 474 | LoRaMacCrypto_stub::int_table[1] = 4; |
kadonotakashi | 0:8fdf9a60065b | 475 | LoRaMacCrypto_stub::int_table[2] = 4; |
kadonotakashi | 0:8fdf9a60065b | 476 | LoRaMacCrypto_stub::int_table[3] = 4; |
kadonotakashi | 0:8fdf9a60065b | 477 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 478 | |
kadonotakashi | 0:8fdf9a60065b | 479 | LoRaMacCrypto_stub::int_table_idx_value = 0; |
kadonotakashi | 0:8fdf9a60065b | 480 | LoRaMacCrypto_stub::int_table[0] = 0; |
kadonotakashi | 0:8fdf9a60065b | 481 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 482 | |
kadonotakashi | 0:8fdf9a60065b | 483 | LoRaMacCrypto_stub::int_table_idx_value = 0; |
kadonotakashi | 0:8fdf9a60065b | 484 | LoRaMacCrypto_stub::int_table[1] = 0; |
kadonotakashi | 0:8fdf9a60065b | 485 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 486 | |
kadonotakashi | 0:8fdf9a60065b | 487 | //mic failure case |
kadonotakashi | 0:8fdf9a60065b | 488 | payload[13] = 17; |
kadonotakashi | 0:8fdf9a60065b | 489 | LoRaMacCrypto_stub::int_table_idx_value = 0; |
kadonotakashi | 0:8fdf9a60065b | 490 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 491 | |
kadonotakashi | 0:8fdf9a60065b | 492 | payload[13] = 0; |
kadonotakashi | 0:8fdf9a60065b | 493 | LoRaMacCrypto_stub::int_table_idx_value = 0; |
kadonotakashi | 0:8fdf9a60065b | 494 | LoRaMacCrypto_stub::int_table[2] = 0; |
kadonotakashi | 0:8fdf9a60065b | 495 | object->on_radio_rx_done(payload, 16, 0, 0); |
kadonotakashi | 0:8fdf9a60065b | 496 | } |
kadonotakashi | 0:8fdf9a60065b | 497 | |
kadonotakashi | 0:8fdf9a60065b | 498 | TEST_F(Test_LoRaMac, post_process_mcps_ind) |
kadonotakashi | 0:8fdf9a60065b | 499 | { |
kadonotakashi | 0:8fdf9a60065b | 500 | object->post_process_mcps_ind(); |
kadonotakashi | 0:8fdf9a60065b | 501 | } |
kadonotakashi | 0:8fdf9a60065b | 502 | |
kadonotakashi | 0:8fdf9a60065b | 503 | TEST_F(Test_LoRaMac, post_process_mlme_request) |
kadonotakashi | 0:8fdf9a60065b | 504 | { |
kadonotakashi | 0:8fdf9a60065b | 505 | object->post_process_mlme_request(); |
kadonotakashi | 0:8fdf9a60065b | 506 | } |
kadonotakashi | 0:8fdf9a60065b | 507 | |
kadonotakashi | 0:8fdf9a60065b | 508 | TEST_F(Test_LoRaMac, post_process_mlme_ind) |
kadonotakashi | 0:8fdf9a60065b | 509 | { |
kadonotakashi | 0:8fdf9a60065b | 510 | object->post_process_mlme_ind(); |
kadonotakashi | 0:8fdf9a60065b | 511 | } |
kadonotakashi | 0:8fdf9a60065b | 512 | |
kadonotakashi | 0:8fdf9a60065b | 513 | uint8_t batt_cb() |
kadonotakashi | 0:8fdf9a60065b | 514 | { |
kadonotakashi | 0:8fdf9a60065b | 515 | |
kadonotakashi | 0:8fdf9a60065b | 516 | } |
kadonotakashi | 0:8fdf9a60065b | 517 | |
kadonotakashi | 0:8fdf9a60065b | 518 | TEST_F(Test_LoRaMac, set_batterylevel_callback) |
kadonotakashi | 0:8fdf9a60065b | 519 | { |
kadonotakashi | 0:8fdf9a60065b | 520 | object->set_batterylevel_callback(batt_cb); |
kadonotakashi | 0:8fdf9a60065b | 521 | } |
kadonotakashi | 0:8fdf9a60065b | 522 | |
kadonotakashi | 0:8fdf9a60065b | 523 | TEST_F(Test_LoRaMac, get_backoff_timer_event_id) |
kadonotakashi | 0:8fdf9a60065b | 524 | { |
kadonotakashi | 0:8fdf9a60065b | 525 | object->get_backoff_timer_event_id(); |
kadonotakashi | 0:8fdf9a60065b | 526 | } |
kadonotakashi | 0:8fdf9a60065b | 527 | |
kadonotakashi | 0:8fdf9a60065b | 528 | TEST_F(Test_LoRaMac, clear_tx_pipe) |
kadonotakashi | 0:8fdf9a60065b | 529 | { |
kadonotakashi | 0:8fdf9a60065b | 530 | EXPECT_EQ(LORAWAN_STATUS_OK, object->clear_tx_pipe()); //timer id == 0 |
kadonotakashi | 0:8fdf9a60065b | 531 | |
kadonotakashi | 0:8fdf9a60065b | 532 | my_phy phy; |
kadonotakashi | 0:8fdf9a60065b | 533 | object->bind_phy(phy); |
kadonotakashi | 0:8fdf9a60065b | 534 | |
kadonotakashi | 0:8fdf9a60065b | 535 | lorawan_connect_t conn; |
kadonotakashi | 0:8fdf9a60065b | 536 | uint8_t key[16]; |
kadonotakashi | 0:8fdf9a60065b | 537 | conn.connection_u.otaa.app_key = key; |
kadonotakashi | 0:8fdf9a60065b | 538 | conn.connection_u.otaa.app_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 539 | conn.connection_u.otaa.dev_eui = key; |
kadonotakashi | 0:8fdf9a60065b | 540 | conn.connection_u.otaa.nb_trials = 2; |
kadonotakashi | 0:8fdf9a60065b | 541 | object->prepare_join(&conn, true); |
kadonotakashi | 0:8fdf9a60065b | 542 | |
kadonotakashi | 0:8fdf9a60065b | 543 | EXPECT_TRUE(LORAWAN_STATUS_OK == object->initialize(NULL, my_cb)); |
kadonotakashi | 0:8fdf9a60065b | 544 | EventQueue_stub::int_value = 0; |
kadonotakashi | 0:8fdf9a60065b | 545 | EXPECT_EQ(LORAWAN_STATUS_BUSY, object->clear_tx_pipe()); |
kadonotakashi | 0:8fdf9a60065b | 546 | |
kadonotakashi | 0:8fdf9a60065b | 547 | EventQueue_stub::int_value = 1; |
kadonotakashi | 0:8fdf9a60065b | 548 | EXPECT_EQ(LORAWAN_STATUS_OK, object->clear_tx_pipe()); |
kadonotakashi | 0:8fdf9a60065b | 549 | } |
kadonotakashi | 0:8fdf9a60065b | 550 | |
kadonotakashi | 0:8fdf9a60065b | 551 | TEST_F(Test_LoRaMac, get_current_time) |
kadonotakashi | 0:8fdf9a60065b | 552 | { |
kadonotakashi | 0:8fdf9a60065b | 553 | object->get_current_time(); |
kadonotakashi | 0:8fdf9a60065b | 554 | } |
kadonotakashi | 0:8fdf9a60065b | 555 | |
kadonotakashi | 0:8fdf9a60065b | 556 | TEST_F(Test_LoRaMac, get_current_slot) |
kadonotakashi | 0:8fdf9a60065b | 557 | { |
kadonotakashi | 0:8fdf9a60065b | 558 | object->get_current_slot(); |
kadonotakashi | 0:8fdf9a60065b | 559 | } |
kadonotakashi | 0:8fdf9a60065b | 560 |