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 "LoRaPHYCN470.h"
kadonotakashi 0:8fdf9a60065b 20
kadonotakashi 0:8fdf9a60065b 21 #include "LoRaPHY_stub.h"
kadonotakashi 0:8fdf9a60065b 22
kadonotakashi 0:8fdf9a60065b 23 class my_radio : public LoRaRadio
kadonotakashi 0:8fdf9a60065b 24 {
kadonotakashi 0:8fdf9a60065b 25 public:
kadonotakashi 0:8fdf9a60065b 26
kadonotakashi 0:8fdf9a60065b 27 virtual void init_radio(radio_events_t *events){};
kadonotakashi 0:8fdf9a60065b 28
kadonotakashi 0:8fdf9a60065b 29 virtual void radio_reset(){};
kadonotakashi 0:8fdf9a60065b 30
kadonotakashi 0:8fdf9a60065b 31 virtual void sleep(void){};
kadonotakashi 0:8fdf9a60065b 32
kadonotakashi 0:8fdf9a60065b 33 virtual void standby(void){};
kadonotakashi 0:8fdf9a60065b 34
kadonotakashi 0:8fdf9a60065b 35 virtual void set_rx_config (radio_modems_t modem, uint32_t bandwidth,
kadonotakashi 0:8fdf9a60065b 36 uint32_t datarate, uint8_t coderate,
kadonotakashi 0:8fdf9a60065b 37 uint32_t bandwidth_afc, uint16_t preamble_len,
kadonotakashi 0:8fdf9a60065b 38 uint16_t symb_timeout, bool fix_len,
kadonotakashi 0:8fdf9a60065b 39 uint8_t payload_len,
kadonotakashi 0:8fdf9a60065b 40 bool crc_on, bool freq_hop_on, uint8_t hop_period,
kadonotakashi 0:8fdf9a60065b 41 bool iq_inverted, bool rx_continuous){};
kadonotakashi 0:8fdf9a60065b 42
kadonotakashi 0:8fdf9a60065b 43 virtual void set_tx_config(radio_modems_t modem, int8_t power, uint32_t fdev,
kadonotakashi 0:8fdf9a60065b 44 uint32_t bandwidth, uint32_t datarate,
kadonotakashi 0:8fdf9a60065b 45 uint8_t coderate, uint16_t preamble_len,
kadonotakashi 0:8fdf9a60065b 46 bool fix_len, bool crc_on, bool freq_hop_on,
kadonotakashi 0:8fdf9a60065b 47 uint8_t hop_period, bool iq_inverted, uint32_t timeout){};
kadonotakashi 0:8fdf9a60065b 48
kadonotakashi 0:8fdf9a60065b 49 virtual void send(uint8_t *buffer, uint8_t size){};
kadonotakashi 0:8fdf9a60065b 50
kadonotakashi 0:8fdf9a60065b 51 virtual void receive(void){};
kadonotakashi 0:8fdf9a60065b 52
kadonotakashi 0:8fdf9a60065b 53 virtual void set_channel(uint32_t freq){};
kadonotakashi 0:8fdf9a60065b 54
kadonotakashi 0:8fdf9a60065b 55 virtual uint32_t random(void){};
kadonotakashi 0:8fdf9a60065b 56
kadonotakashi 0:8fdf9a60065b 57 virtual uint8_t get_status(void){return uint8_value;};
kadonotakashi 0:8fdf9a60065b 58
kadonotakashi 0:8fdf9a60065b 59 virtual void set_max_payload_length(radio_modems_t modem, uint8_t max){};
kadonotakashi 0:8fdf9a60065b 60
kadonotakashi 0:8fdf9a60065b 61 virtual void set_public_network(bool enable){};
kadonotakashi 0:8fdf9a60065b 62
kadonotakashi 0:8fdf9a60065b 63 virtual uint32_t time_on_air(radio_modems_t modem, uint8_t pkt_len){};
kadonotakashi 0:8fdf9a60065b 64
kadonotakashi 0:8fdf9a60065b 65 virtual bool perform_carrier_sense(radio_modems_t modem,
kadonotakashi 0:8fdf9a60065b 66 uint32_t freq,
kadonotakashi 0:8fdf9a60065b 67 int16_t rssi_threshold,
kadonotakashi 0:8fdf9a60065b 68 uint32_t max_carrier_sense_time){ return bool_value;};
kadonotakashi 0:8fdf9a60065b 69
kadonotakashi 0:8fdf9a60065b 70 virtual void start_cad(void){};
kadonotakashi 0:8fdf9a60065b 71
kadonotakashi 0:8fdf9a60065b 72 virtual bool check_rf_frequency(uint32_t frequency){ return bool_value; };
kadonotakashi 0:8fdf9a60065b 73
kadonotakashi 0:8fdf9a60065b 74 virtual void set_tx_continuous_wave(uint32_t freq, int8_t power, uint16_t time){};
kadonotakashi 0:8fdf9a60065b 75
kadonotakashi 0:8fdf9a60065b 76 virtual void lock(void){};
kadonotakashi 0:8fdf9a60065b 77
kadonotakashi 0:8fdf9a60065b 78 virtual void unlock(void){};
kadonotakashi 0:8fdf9a60065b 79
kadonotakashi 0:8fdf9a60065b 80 bool bool_value;
kadonotakashi 0:8fdf9a60065b 81 uint8_t uint8_value;
kadonotakashi 0:8fdf9a60065b 82 };
kadonotakashi 0:8fdf9a60065b 83
kadonotakashi 0:8fdf9a60065b 84 class Test_LoRaPHYCN470 : public testing::Test {
kadonotakashi 0:8fdf9a60065b 85 protected:
kadonotakashi 0:8fdf9a60065b 86 LoRaPHYCN470 *object;
kadonotakashi 0:8fdf9a60065b 87 my_radio radio;
kadonotakashi 0:8fdf9a60065b 88
kadonotakashi 0:8fdf9a60065b 89 virtual void SetUp()
kadonotakashi 0:8fdf9a60065b 90 {
kadonotakashi 0:8fdf9a60065b 91
kadonotakashi 0:8fdf9a60065b 92 LoRaPHY_stub::radio = &radio;
kadonotakashi 0:8fdf9a60065b 93 object = new LoRaPHYCN470();
kadonotakashi 0:8fdf9a60065b 94 }
kadonotakashi 0:8fdf9a60065b 95
kadonotakashi 0:8fdf9a60065b 96 virtual void TearDown()
kadonotakashi 0:8fdf9a60065b 97 {
kadonotakashi 0:8fdf9a60065b 98
kadonotakashi 0:8fdf9a60065b 99 LoRaPHY_stub::radio = NULL;
kadonotakashi 0:8fdf9a60065b 100 delete object;
kadonotakashi 0:8fdf9a60065b 101 }
kadonotakashi 0:8fdf9a60065b 102 };
kadonotakashi 0:8fdf9a60065b 103
kadonotakashi 0:8fdf9a60065b 104 TEST_F(Test_LoRaPHYCN470, constructor)
kadonotakashi 0:8fdf9a60065b 105 {
kadonotakashi 0:8fdf9a60065b 106 EXPECT_TRUE(object);
kadonotakashi 0:8fdf9a60065b 107 }
kadonotakashi 0:8fdf9a60065b 108
kadonotakashi 0:8fdf9a60065b 109 TEST_F(Test_LoRaPHYCN470, set_next_channel)
kadonotakashi 0:8fdf9a60065b 110 {
kadonotakashi 0:8fdf9a60065b 111 channel_selection_params_t params;
kadonotakashi 0:8fdf9a60065b 112 uint8_t channel;
kadonotakashi 0:8fdf9a60065b 113 lorawan_time_t time;
kadonotakashi 0:8fdf9a60065b 114 lorawan_time_t timeoff;
kadonotakashi 0:8fdf9a60065b 115
kadonotakashi 0:8fdf9a60065b 116 params.current_datarate = 4;
kadonotakashi 0:8fdf9a60065b 117 params.aggregate_timeoff = 0;
kadonotakashi 0:8fdf9a60065b 118 LoRaPHY_stub::uint8_value = 0;
kadonotakashi 0:8fdf9a60065b 119 EXPECT_TRUE(LORAWAN_STATUS_NO_CHANNEL_FOUND == object->set_next_channel(&params, &channel, &time, &timeoff));
kadonotakashi 0:8fdf9a60065b 120
kadonotakashi 0:8fdf9a60065b 121 radio.bool_value = false;
kadonotakashi 0:8fdf9a60065b 122 params.aggregate_timeoff = 1;
kadonotakashi 0:8fdf9a60065b 123 EXPECT_TRUE(LORAWAN_STATUS_DUTYCYCLE_RESTRICTED == object->set_next_channel(&params, &channel, &time, &timeoff));
kadonotakashi 0:8fdf9a60065b 124
kadonotakashi 0:8fdf9a60065b 125 params.aggregate_timeoff = 0;
kadonotakashi 0:8fdf9a60065b 126 LoRaPHY_stub::uint8_value = 1;
kadonotakashi 0:8fdf9a60065b 127 EXPECT_TRUE(LORAWAN_STATUS_OK == object->set_next_channel(&params, &channel, &time, &timeoff));
kadonotakashi 0:8fdf9a60065b 128 }
kadonotakashi 0:8fdf9a60065b 129
kadonotakashi 0:8fdf9a60065b 130 TEST_F(Test_LoRaPHYCN470, rx_config)
kadonotakashi 0:8fdf9a60065b 131 {
kadonotakashi 0:8fdf9a60065b 132 rx_config_params_t p;
kadonotakashi 0:8fdf9a60065b 133
kadonotakashi 0:8fdf9a60065b 134 radio.uint8_value = 1;
kadonotakashi 0:8fdf9a60065b 135 EXPECT_TRUE(!object->rx_config(&p));
kadonotakashi 0:8fdf9a60065b 136
kadonotakashi 0:8fdf9a60065b 137 radio.uint8_value = 0;
kadonotakashi 0:8fdf9a60065b 138 p.is_repeater_supported = true;
kadonotakashi 0:8fdf9a60065b 139 EXPECT_TRUE(object->rx_config(&p));
kadonotakashi 0:8fdf9a60065b 140
kadonotakashi 0:8fdf9a60065b 141 p.is_repeater_supported = false;
kadonotakashi 0:8fdf9a60065b 142 EXPECT_TRUE(object->rx_config(&p));
kadonotakashi 0:8fdf9a60065b 143 }
kadonotakashi 0:8fdf9a60065b 144
kadonotakashi 0:8fdf9a60065b 145 TEST_F(Test_LoRaPHYCN470, tx_config)
kadonotakashi 0:8fdf9a60065b 146 {
kadonotakashi 0:8fdf9a60065b 147 tx_config_params_t p;
kadonotakashi 0:8fdf9a60065b 148 int8_t tx;
kadonotakashi 0:8fdf9a60065b 149 lorawan_time_t time;
kadonotakashi 0:8fdf9a60065b 150 p.tx_power = 9;
kadonotakashi 0:8fdf9a60065b 151 EXPECT_TRUE(object->tx_config(&p, &tx, &time));
kadonotakashi 0:8fdf9a60065b 152 }
kadonotakashi 0:8fdf9a60065b 153
kadonotakashi 0:8fdf9a60065b 154 TEST_F(Test_LoRaPHYCN470, link_ADR_request)
kadonotakashi 0:8fdf9a60065b 155 {
kadonotakashi 0:8fdf9a60065b 156 adr_req_params_t params;
kadonotakashi 0:8fdf9a60065b 157 int8_t dr_out;
kadonotakashi 0:8fdf9a60065b 158 int8_t tx_power_out;
kadonotakashi 0:8fdf9a60065b 159 uint8_t nb_rep_out;
kadonotakashi 0:8fdf9a60065b 160 uint8_t nb_bytes_parsed;
kadonotakashi 0:8fdf9a60065b 161
kadonotakashi 0:8fdf9a60065b 162 LoRaPHY_stub::uint8_value = 1;
kadonotakashi 0:8fdf9a60065b 163 LoRaPHY_stub::ch_mask_value = 6;
kadonotakashi 0:8fdf9a60065b 164 LoRaPHY_stub::adr_parse_count = 2;
kadonotakashi 0:8fdf9a60065b 165 EXPECT_TRUE(1 == object->link_ADR_request(&params, &dr_out, &tx_power_out, &nb_rep_out, &nb_bytes_parsed));
kadonotakashi 0:8fdf9a60065b 166
kadonotakashi 0:8fdf9a60065b 167 LoRaPHY_stub::adr_parse_count = 2;
kadonotakashi 0:8fdf9a60065b 168 LoRaPHY_stub::ch_mask_value = 7;
kadonotakashi 0:8fdf9a60065b 169 EXPECT_TRUE(1 == object->link_ADR_request(&params, &dr_out, &tx_power_out, &nb_rep_out, &nb_bytes_parsed));
kadonotakashi 0:8fdf9a60065b 170
kadonotakashi 0:8fdf9a60065b 171 LoRaPHY_stub::adr_parse_count = 2;
kadonotakashi 0:8fdf9a60065b 172 LoRaPHY_stub::ch_mask_value = 5;
kadonotakashi 0:8fdf9a60065b 173 LoRaPHY_stub::uint8_value = 6;
kadonotakashi 0:8fdf9a60065b 174 EXPECT_TRUE(6 == object->link_ADR_request(&params, &dr_out, &tx_power_out, &nb_rep_out, &nb_bytes_parsed));
kadonotakashi 0:8fdf9a60065b 175
kadonotakashi 0:8fdf9a60065b 176 LoRaPHY_stub::adr_parse_count = 2;
kadonotakashi 0:8fdf9a60065b 177 LoRaPHY_stub::ch_mask_value = 66;
kadonotakashi 0:8fdf9a60065b 178 LoRaPHY_stub::uint8_value = 7;
kadonotakashi 0:8fdf9a60065b 179 EXPECT_TRUE(7 == object->link_ADR_request(&params, &dr_out, &tx_power_out, &nb_rep_out, &nb_bytes_parsed));
kadonotakashi 0:8fdf9a60065b 180 }
kadonotakashi 0:8fdf9a60065b 181
kadonotakashi 0:8fdf9a60065b 182 TEST_F(Test_LoRaPHYCN470, accept_rx_param_setup_req)
kadonotakashi 0:8fdf9a60065b 183 {
kadonotakashi 0:8fdf9a60065b 184 rx_param_setup_req_t p;
kadonotakashi 0:8fdf9a60065b 185 EXPECT_TRUE(0 == object->accept_rx_param_setup_req(&p));
kadonotakashi 0:8fdf9a60065b 186
kadonotakashi 0:8fdf9a60065b 187 radio.bool_value = true;
kadonotakashi 0:8fdf9a60065b 188 p.frequency = 923300000 - 1;
kadonotakashi 0:8fdf9a60065b 189 EXPECT_TRUE(0 == object->accept_rx_param_setup_req(&p));
kadonotakashi 0:8fdf9a60065b 190
kadonotakashi 0:8fdf9a60065b 191 radio.bool_value = true;
kadonotakashi 0:8fdf9a60065b 192 p.frequency = 927500000 + 1;
kadonotakashi 0:8fdf9a60065b 193 p.datarate = 6;
kadonotakashi 0:8fdf9a60065b 194 LoRaPHY_stub::bool_counter = 0;
kadonotakashi 0:8fdf9a60065b 195 LoRaPHY_stub::bool_table[0] = true;
kadonotakashi 0:8fdf9a60065b 196 EXPECT_TRUE(2 == object->accept_rx_param_setup_req(&p));
kadonotakashi 0:8fdf9a60065b 197 }
kadonotakashi 0:8fdf9a60065b 198
kadonotakashi 0:8fdf9a60065b 199