Color Oled(SSD1331) connect to STMicroelectronics Nucleo-F466

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Wed Oct 10 00:33:53 2018 +0000
Revision:
0:8fdf9a60065b
how to make mbed librry

Who changed what in which revision?

UserRevisionLine numberNew 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 "LoRaMacCommand.h"
kadonotakashi 0:8fdf9a60065b 20
kadonotakashi 0:8fdf9a60065b 21 #include "LoRaPHY_stub.h"
kadonotakashi 0:8fdf9a60065b 22
kadonotakashi 0:8fdf9a60065b 23 class my_LoRaPHY : public LoRaPHY
kadonotakashi 0:8fdf9a60065b 24 {
kadonotakashi 0:8fdf9a60065b 25 public:
kadonotakashi 0:8fdf9a60065b 26 my_LoRaPHY(){};
kadonotakashi 0:8fdf9a60065b 27
kadonotakashi 0:8fdf9a60065b 28 virtual ~my_LoRaPHY(){};
kadonotakashi 0:8fdf9a60065b 29 };
kadonotakashi 0:8fdf9a60065b 30
kadonotakashi 0:8fdf9a60065b 31 uint8_t my_cb()
kadonotakashi 0:8fdf9a60065b 32 {
kadonotakashi 0:8fdf9a60065b 33 return 1;
kadonotakashi 0:8fdf9a60065b 34 }
kadonotakashi 0:8fdf9a60065b 35
kadonotakashi 0:8fdf9a60065b 36 class Test_LoRaMacCommand : public testing::Test {
kadonotakashi 0:8fdf9a60065b 37 protected:
kadonotakashi 0:8fdf9a60065b 38 LoRaMacCommand *object;
kadonotakashi 0:8fdf9a60065b 39
kadonotakashi 0:8fdf9a60065b 40 virtual void SetUp()
kadonotakashi 0:8fdf9a60065b 41 {
kadonotakashi 0:8fdf9a60065b 42 object = new LoRaMacCommand();
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_LoRaMacCommand, constructor)
kadonotakashi 0:8fdf9a60065b 52 {
kadonotakashi 0:8fdf9a60065b 53 EXPECT_TRUE(object);
kadonotakashi 0:8fdf9a60065b 54 }
kadonotakashi 0:8fdf9a60065b 55
kadonotakashi 0:8fdf9a60065b 56 TEST_F(Test_LoRaMacCommand, get_mac_cmd_length)
kadonotakashi 0:8fdf9a60065b 57 {
kadonotakashi 0:8fdf9a60065b 58 object->add_link_check_req();
kadonotakashi 0:8fdf9a60065b 59 EXPECT_TRUE(object->get_mac_cmd_length() == 1);
kadonotakashi 0:8fdf9a60065b 60 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 61 EXPECT_TRUE(object->get_mac_cmd_length() == 0);
kadonotakashi 0:8fdf9a60065b 62 }
kadonotakashi 0:8fdf9a60065b 63
kadonotakashi 0:8fdf9a60065b 64 TEST_F(Test_LoRaMacCommand, parse_mac_commands_to_repeat)
kadonotakashi 0:8fdf9a60065b 65 {
kadonotakashi 0:8fdf9a60065b 66 loramac_mlme_confirm_t mlme;
kadonotakashi 0:8fdf9a60065b 67 lora_mac_system_params_t params;
kadonotakashi 0:8fdf9a60065b 68 my_LoRaPHY phy;
kadonotakashi 0:8fdf9a60065b 69 uint8_t buf[20];
kadonotakashi 0:8fdf9a60065b 70
kadonotakashi 0:8fdf9a60065b 71 object->parse_mac_commands_to_repeat();
kadonotakashi 0:8fdf9a60065b 72
kadonotakashi 0:8fdf9a60065b 73 buf[0] = 2;
kadonotakashi 0:8fdf9a60065b 74 buf[1] = 16;
kadonotakashi 0:8fdf9a60065b 75 buf[2] = 32;
kadonotakashi 0:8fdf9a60065b 76 EXPECT_TRUE(object->process_mac_commands(buf, 0, 3, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 77
kadonotakashi 0:8fdf9a60065b 78 buf[0] = 3;
kadonotakashi 0:8fdf9a60065b 79 LoRaPHY_stub::uint8_value = 7;
kadonotakashi 0:8fdf9a60065b 80 LoRaPHY_stub::linkAdrNbBytesParsed = 5;
kadonotakashi 0:8fdf9a60065b 81 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 82
kadonotakashi 0:8fdf9a60065b 83 buf[0] = 4;
kadonotakashi 0:8fdf9a60065b 84 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 85 EXPECT_TRUE(object->process_mac_commands(buf, 0, 1, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 86
kadonotakashi 0:8fdf9a60065b 87 buf[0] = 5;
kadonotakashi 0:8fdf9a60065b 88 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 89 buf[2] = 2;
kadonotakashi 0:8fdf9a60065b 90 buf[3] = 2;
kadonotakashi 0:8fdf9a60065b 91 buf[4] = 2;
kadonotakashi 0:8fdf9a60065b 92 buf[5] = 2;
kadonotakashi 0:8fdf9a60065b 93 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 94
kadonotakashi 0:8fdf9a60065b 95 buf[0] = 6;
kadonotakashi 0:8fdf9a60065b 96 object->set_batterylevel_callback(my_cb);
kadonotakashi 0:8fdf9a60065b 97 EXPECT_TRUE(object->process_mac_commands(buf, 0, 1, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 98
kadonotakashi 0:8fdf9a60065b 99 buf[0] = 7;
kadonotakashi 0:8fdf9a60065b 100 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 101 buf[2] = 2;
kadonotakashi 0:8fdf9a60065b 102 buf[3] = 2;
kadonotakashi 0:8fdf9a60065b 103 buf[4] = 2;
kadonotakashi 0:8fdf9a60065b 104 buf[5] = 2;
kadonotakashi 0:8fdf9a60065b 105 EXPECT_TRUE(object->process_mac_commands(buf, 0, 6, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 106
kadonotakashi 0:8fdf9a60065b 107 buf[0] = 8;
kadonotakashi 0:8fdf9a60065b 108 buf[1] = 0;
kadonotakashi 0:8fdf9a60065b 109 EXPECT_TRUE(object->process_mac_commands(buf, 0, 2, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 110
kadonotakashi 0:8fdf9a60065b 111 buf[0] = 9;
kadonotakashi 0:8fdf9a60065b 112 buf[1] = 48;
kadonotakashi 0:8fdf9a60065b 113 EXPECT_TRUE(object->process_mac_commands(buf, 0, 2, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 114
kadonotakashi 0:8fdf9a60065b 115 buf[0] = 10;
kadonotakashi 0:8fdf9a60065b 116 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 117 buf[1] = 3;
kadonotakashi 0:8fdf9a60065b 118 buf[1] = 4;
kadonotakashi 0:8fdf9a60065b 119 EXPECT_TRUE(object->process_mac_commands(buf, 0, 4, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 120
kadonotakashi 0:8fdf9a60065b 121 object->parse_mac_commands_to_repeat();
kadonotakashi 0:8fdf9a60065b 122 }
kadonotakashi 0:8fdf9a60065b 123
kadonotakashi 0:8fdf9a60065b 124 TEST_F(Test_LoRaMacCommand, clear_repeat_buffer)
kadonotakashi 0:8fdf9a60065b 125 {
kadonotakashi 0:8fdf9a60065b 126 object->clear_repeat_buffer();
kadonotakashi 0:8fdf9a60065b 127 }
kadonotakashi 0:8fdf9a60065b 128
kadonotakashi 0:8fdf9a60065b 129 TEST_F(Test_LoRaMacCommand, copy_repeat_commands_to_buffer)
kadonotakashi 0:8fdf9a60065b 130 {
kadonotakashi 0:8fdf9a60065b 131 loramac_mlme_confirm_t mlme;
kadonotakashi 0:8fdf9a60065b 132 lora_mac_system_params_t params;
kadonotakashi 0:8fdf9a60065b 133 my_LoRaPHY phy;
kadonotakashi 0:8fdf9a60065b 134 uint8_t buf[20];
kadonotakashi 0:8fdf9a60065b 135
kadonotakashi 0:8fdf9a60065b 136 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 137 buf[0] = 5;
kadonotakashi 0:8fdf9a60065b 138 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 139 buf[2] = 2;
kadonotakashi 0:8fdf9a60065b 140 buf[3] = 2;
kadonotakashi 0:8fdf9a60065b 141 buf[4] = 2;
kadonotakashi 0:8fdf9a60065b 142 buf[5] = 2;
kadonotakashi 0:8fdf9a60065b 143 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 144 object->parse_mac_commands_to_repeat();
kadonotakashi 0:8fdf9a60065b 145
kadonotakashi 0:8fdf9a60065b 146 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 147 EXPECT_TRUE(object->get_mac_cmd_length() == 0);
kadonotakashi 0:8fdf9a60065b 148
kadonotakashi 0:8fdf9a60065b 149 object->copy_repeat_commands_to_buffer();
kadonotakashi 0:8fdf9a60065b 150
kadonotakashi 0:8fdf9a60065b 151 EXPECT_TRUE(object->get_mac_cmd_length() != 0);
kadonotakashi 0:8fdf9a60065b 152 }
kadonotakashi 0:8fdf9a60065b 153
kadonotakashi 0:8fdf9a60065b 154 TEST_F(Test_LoRaMacCommand, get_repeat_commands_length)
kadonotakashi 0:8fdf9a60065b 155 {
kadonotakashi 0:8fdf9a60065b 156 EXPECT_TRUE(object->get_repeat_commands_length() == 0 );
kadonotakashi 0:8fdf9a60065b 157 }
kadonotakashi 0:8fdf9a60065b 158
kadonotakashi 0:8fdf9a60065b 159 TEST_F(Test_LoRaMacCommand, clear_sticky_mac_cmd)
kadonotakashi 0:8fdf9a60065b 160 {
kadonotakashi 0:8fdf9a60065b 161 loramac_mlme_confirm_t mlme;
kadonotakashi 0:8fdf9a60065b 162 lora_mac_system_params_t params;
kadonotakashi 0:8fdf9a60065b 163 my_LoRaPHY phy;
kadonotakashi 0:8fdf9a60065b 164 uint8_t buf[20];
kadonotakashi 0:8fdf9a60065b 165
kadonotakashi 0:8fdf9a60065b 166 EXPECT_TRUE(object->has_sticky_mac_cmd() == false);
kadonotakashi 0:8fdf9a60065b 167
kadonotakashi 0:8fdf9a60065b 168 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 169 buf[0] = 5;
kadonotakashi 0:8fdf9a60065b 170 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 171 buf[2] = 2;
kadonotakashi 0:8fdf9a60065b 172 buf[3] = 2;
kadonotakashi 0:8fdf9a60065b 173 buf[4] = 2;
kadonotakashi 0:8fdf9a60065b 174 buf[5] = 2;
kadonotakashi 0:8fdf9a60065b 175 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 176
kadonotakashi 0:8fdf9a60065b 177 EXPECT_TRUE(object->has_sticky_mac_cmd() == true);
kadonotakashi 0:8fdf9a60065b 178
kadonotakashi 0:8fdf9a60065b 179 object->clear_sticky_mac_cmd();
kadonotakashi 0:8fdf9a60065b 180 EXPECT_TRUE(object->has_sticky_mac_cmd() == false);
kadonotakashi 0:8fdf9a60065b 181 }
kadonotakashi 0:8fdf9a60065b 182
kadonotakashi 0:8fdf9a60065b 183 TEST_F(Test_LoRaMacCommand, has_sticky_mac_cmd)
kadonotakashi 0:8fdf9a60065b 184 {
kadonotakashi 0:8fdf9a60065b 185 loramac_mlme_confirm_t mlme;
kadonotakashi 0:8fdf9a60065b 186 lora_mac_system_params_t params;
kadonotakashi 0:8fdf9a60065b 187 my_LoRaPHY phy;
kadonotakashi 0:8fdf9a60065b 188 uint8_t buf[20];
kadonotakashi 0:8fdf9a60065b 189
kadonotakashi 0:8fdf9a60065b 190 EXPECT_TRUE(object->has_sticky_mac_cmd() == false);
kadonotakashi 0:8fdf9a60065b 191
kadonotakashi 0:8fdf9a60065b 192 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 193 buf[0] = 5;
kadonotakashi 0:8fdf9a60065b 194 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 195 buf[2] = 2;
kadonotakashi 0:8fdf9a60065b 196 buf[3] = 2;
kadonotakashi 0:8fdf9a60065b 197 buf[4] = 2;
kadonotakashi 0:8fdf9a60065b 198 buf[5] = 2;
kadonotakashi 0:8fdf9a60065b 199 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 200
kadonotakashi 0:8fdf9a60065b 201 EXPECT_TRUE(object->has_sticky_mac_cmd() == true);
kadonotakashi 0:8fdf9a60065b 202 }
kadonotakashi 0:8fdf9a60065b 203
kadonotakashi 0:8fdf9a60065b 204 TEST_F(Test_LoRaMacCommand, process_mac_commands)
kadonotakashi 0:8fdf9a60065b 205 {
kadonotakashi 0:8fdf9a60065b 206 loramac_mlme_confirm_t mlme;
kadonotakashi 0:8fdf9a60065b 207 lora_mac_system_params_t params;
kadonotakashi 0:8fdf9a60065b 208 my_LoRaPHY phy;
kadonotakashi 0:8fdf9a60065b 209 uint8_t buf[20];
kadonotakashi 0:8fdf9a60065b 210 EXPECT_TRUE(object->process_mac_commands(NULL, 0, 0, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 211
kadonotakashi 0:8fdf9a60065b 212 buf[0] = 2;
kadonotakashi 0:8fdf9a60065b 213 buf[1] = 16;
kadonotakashi 0:8fdf9a60065b 214 buf[2] = 32;
kadonotakashi 0:8fdf9a60065b 215 EXPECT_TRUE(object->process_mac_commands(buf, 0, 3, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 216
kadonotakashi 0:8fdf9a60065b 217 buf[0] = 3;
kadonotakashi 0:8fdf9a60065b 218 LoRaPHY_stub::uint8_value = 7;
kadonotakashi 0:8fdf9a60065b 219 LoRaPHY_stub::linkAdrNbBytesParsed = 5;
kadonotakashi 0:8fdf9a60065b 220 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 221
kadonotakashi 0:8fdf9a60065b 222 //Overflow add_link_adr_ans function here
kadonotakashi 0:8fdf9a60065b 223 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 224 buf[0] = 3;
kadonotakashi 0:8fdf9a60065b 225 for (int i=0; i < 64; i++) {
kadonotakashi 0:8fdf9a60065b 226 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 227 }
kadonotakashi 0:8fdf9a60065b 228 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_LENGTH_ERROR);
kadonotakashi 0:8fdf9a60065b 229
kadonotakashi 0:8fdf9a60065b 230 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 231 buf[0] = 4;
kadonotakashi 0:8fdf9a60065b 232 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 233 EXPECT_TRUE(object->process_mac_commands(buf, 0, 1, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 234
kadonotakashi 0:8fdf9a60065b 235 //Overflow add_duty_cycle_ans()
kadonotakashi 0:8fdf9a60065b 236 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 237 for (int i=0; i < 128; i++) {
kadonotakashi 0:8fdf9a60065b 238 EXPECT_TRUE(object->process_mac_commands(buf, 0, 1, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 239 }
kadonotakashi 0:8fdf9a60065b 240 EXPECT_TRUE(object->process_mac_commands(buf, 0, 1, 0, mlme, params, phy) == LORAWAN_STATUS_LENGTH_ERROR);
kadonotakashi 0:8fdf9a60065b 241
kadonotakashi 0:8fdf9a60065b 242 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 243 buf[0] = 5;
kadonotakashi 0:8fdf9a60065b 244 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 245 buf[2] = 2;
kadonotakashi 0:8fdf9a60065b 246 buf[3] = 2;
kadonotakashi 0:8fdf9a60065b 247 buf[4] = 2;
kadonotakashi 0:8fdf9a60065b 248 buf[5] = 2;
kadonotakashi 0:8fdf9a60065b 249 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 250
kadonotakashi 0:8fdf9a60065b 251 //Overflow add_rx_param_setup_ans
kadonotakashi 0:8fdf9a60065b 252 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 253 LoRaPHY_stub::uint8_value = 7;
kadonotakashi 0:8fdf9a60065b 254 for (int i=0; i < 64; i++) {
kadonotakashi 0:8fdf9a60065b 255 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 256 }
kadonotakashi 0:8fdf9a60065b 257 EXPECT_TRUE(object->process_mac_commands(buf, 0, 5, 0, mlme, params, phy) == LORAWAN_STATUS_LENGTH_ERROR);
kadonotakashi 0:8fdf9a60065b 258
kadonotakashi 0:8fdf9a60065b 259 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 260 buf[0] = 6;
kadonotakashi 0:8fdf9a60065b 261 object->set_batterylevel_callback(my_cb);
kadonotakashi 0:8fdf9a60065b 262 EXPECT_TRUE(object->process_mac_commands(buf, 0, 1, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 263
kadonotakashi 0:8fdf9a60065b 264 //overflow add_dev_status_ans
kadonotakashi 0:8fdf9a60065b 265 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 266 for (int i=0; i < 42; i++) {
kadonotakashi 0:8fdf9a60065b 267 EXPECT_TRUE(object->process_mac_commands(buf, 0, 1, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 268 }
kadonotakashi 0:8fdf9a60065b 269 EXPECT_TRUE(object->process_mac_commands(buf, 0, 1, 0, mlme, params, phy) == LORAWAN_STATUS_LENGTH_ERROR);
kadonotakashi 0:8fdf9a60065b 270
kadonotakashi 0:8fdf9a60065b 271 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 272 buf[0] = 7;
kadonotakashi 0:8fdf9a60065b 273 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 274 buf[2] = 2;
kadonotakashi 0:8fdf9a60065b 275 buf[3] = 2;
kadonotakashi 0:8fdf9a60065b 276 buf[4] = 2;
kadonotakashi 0:8fdf9a60065b 277 buf[5] = 2;
kadonotakashi 0:8fdf9a60065b 278 EXPECT_TRUE(object->process_mac_commands(buf, 0, 6, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 279
kadonotakashi 0:8fdf9a60065b 280 //Overflow add_new_channel_ans
kadonotakashi 0:8fdf9a60065b 281 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 282 LoRaPHY_stub::uint8_value = 7;
kadonotakashi 0:8fdf9a60065b 283 for (int i=0; i < 64; i++) {
kadonotakashi 0:8fdf9a60065b 284 EXPECT_TRUE(object->process_mac_commands(buf, 0, 6, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 285 }
kadonotakashi 0:8fdf9a60065b 286 EXPECT_TRUE(object->process_mac_commands(buf, 0, 6, 0, mlme, params, phy) == LORAWAN_STATUS_LENGTH_ERROR);
kadonotakashi 0:8fdf9a60065b 287
kadonotakashi 0:8fdf9a60065b 288 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 289 buf[0] = 8;
kadonotakashi 0:8fdf9a60065b 290 buf[1] = 0;
kadonotakashi 0:8fdf9a60065b 291 EXPECT_TRUE(object->process_mac_commands(buf, 0, 2, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 292
kadonotakashi 0:8fdf9a60065b 293 //Overflow add_rx_timing_setup_ans
kadonotakashi 0:8fdf9a60065b 294 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 295 LoRaPHY_stub::uint8_value = 7;
kadonotakashi 0:8fdf9a60065b 296 for (int i=0; i < 128; i++) {
kadonotakashi 0:8fdf9a60065b 297 EXPECT_TRUE(object->process_mac_commands(buf, 0, 2, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 298 }
kadonotakashi 0:8fdf9a60065b 299 EXPECT_TRUE(object->process_mac_commands(buf, 0, 2, 0, mlme, params, phy) == LORAWAN_STATUS_LENGTH_ERROR);
kadonotakashi 0:8fdf9a60065b 300
kadonotakashi 0:8fdf9a60065b 301 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 302 buf[0] = 9;
kadonotakashi 0:8fdf9a60065b 303 buf[1] = 48;
kadonotakashi 0:8fdf9a60065b 304 EXPECT_TRUE(object->process_mac_commands(buf, 0, 2, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 305
kadonotakashi 0:8fdf9a60065b 306 //Overflow add_tx_param_setup_ans
kadonotakashi 0:8fdf9a60065b 307 LoRaPHY_stub::bool_counter = 0;
kadonotakashi 0:8fdf9a60065b 308 LoRaPHY_stub::bool_table[0] = true;
kadonotakashi 0:8fdf9a60065b 309 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 310 LoRaPHY_stub::uint8_value = 7;
kadonotakashi 0:8fdf9a60065b 311 for (int i=0; i < 128; i++) {
kadonotakashi 0:8fdf9a60065b 312 EXPECT_TRUE(object->process_mac_commands(buf, 0, 2, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 313 LoRaPHY_stub::bool_counter = 0;
kadonotakashi 0:8fdf9a60065b 314 }
kadonotakashi 0:8fdf9a60065b 315 EXPECT_TRUE(object->process_mac_commands(buf, 0, 2, 0, mlme, params, phy) == LORAWAN_STATUS_LENGTH_ERROR);
kadonotakashi 0:8fdf9a60065b 316
kadonotakashi 0:8fdf9a60065b 317 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 318 buf[0] = 10;
kadonotakashi 0:8fdf9a60065b 319 buf[1] = 2;
kadonotakashi 0:8fdf9a60065b 320 buf[1] = 3;
kadonotakashi 0:8fdf9a60065b 321 buf[1] = 4;
kadonotakashi 0:8fdf9a60065b 322 EXPECT_TRUE(object->process_mac_commands(buf, 0, 4, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 323
kadonotakashi 0:8fdf9a60065b 324 //Overflow add_tx_param_setup_ans
kadonotakashi 0:8fdf9a60065b 325 LoRaPHY_stub::bool_counter = 0;
kadonotakashi 0:8fdf9a60065b 326 LoRaPHY_stub::bool_table[0] = true;
kadonotakashi 0:8fdf9a60065b 327 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 328 LoRaPHY_stub::uint8_value = 7;
kadonotakashi 0:8fdf9a60065b 329 for (int i=0; i < 64; i++) {
kadonotakashi 0:8fdf9a60065b 330 EXPECT_TRUE(object->process_mac_commands(buf, 0, 4, 0, mlme, params, phy) == LORAWAN_STATUS_OK);
kadonotakashi 0:8fdf9a60065b 331 LoRaPHY_stub::bool_counter = 0;
kadonotakashi 0:8fdf9a60065b 332 }
kadonotakashi 0:8fdf9a60065b 333 EXPECT_TRUE(object->process_mac_commands(buf, 0, 4, 0, mlme, params, phy) == LORAWAN_STATUS_LENGTH_ERROR);
kadonotakashi 0:8fdf9a60065b 334
kadonotakashi 0:8fdf9a60065b 335 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 336 buf[0] = 80;
kadonotakashi 0:8fdf9a60065b 337 EXPECT_TRUE(object->process_mac_commands(buf, 0, 1, 0, mlme, params, phy) == LORAWAN_STATUS_UNSUPPORTED);
kadonotakashi 0:8fdf9a60065b 338 }
kadonotakashi 0:8fdf9a60065b 339
kadonotakashi 0:8fdf9a60065b 340 TEST_F(Test_LoRaMacCommand, add_link_check_req)
kadonotakashi 0:8fdf9a60065b 341 {
kadonotakashi 0:8fdf9a60065b 342 object->add_link_check_req();
kadonotakashi 0:8fdf9a60065b 343 EXPECT_TRUE(object->get_mac_commands_buffer()[0] == 2);
kadonotakashi 0:8fdf9a60065b 344 EXPECT_TRUE(object->get_mac_cmd_length() == 1);
kadonotakashi 0:8fdf9a60065b 345 object->clear_command_buffer();
kadonotakashi 0:8fdf9a60065b 346 EXPECT_TRUE(object->get_mac_cmd_length() == 0);
kadonotakashi 0:8fdf9a60065b 347 }
kadonotakashi 0:8fdf9a60065b 348
kadonotakashi 0:8fdf9a60065b 349 TEST_F(Test_LoRaMacCommand, set_batterylevel_callback)
kadonotakashi 0:8fdf9a60065b 350 {
kadonotakashi 0:8fdf9a60065b 351 object->set_batterylevel_callback(my_cb);
kadonotakashi 0:8fdf9a60065b 352 }
kadonotakashi 0:8fdf9a60065b 353