| /* |
| * Copyright (c) 2019 Manivannan Sadhasivam |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <device.h> |
| #include <drivers/lora.h> |
| #include <errno.h> |
| #include <sys/util.h> |
| #include <zephyr.h> |
| |
| #define DEFAULT_RADIO_NODE DT_ALIAS(lora0) |
| BUILD_ASSERT(DT_NODE_HAS_STATUS(DEFAULT_RADIO_NODE, okay), |
| "No default LoRa radio specified in DT"); |
| #define DEFAULT_RADIO DT_LABEL(DEFAULT_RADIO_NODE) |
| |
| #define MAX_DATA_LEN 255 |
| |
| #define LOG_LEVEL CONFIG_LOG_DEFAULT_LEVEL |
| #include <logging/log.h> |
| LOG_MODULE_REGISTER(lora_receive); |
| |
| void main(void) |
| { |
| const struct device *lora_dev; |
| struct lora_modem_config config; |
| int ret, len; |
| uint8_t data[MAX_DATA_LEN] = {0}; |
| int16_t rssi; |
| int8_t snr; |
| |
| lora_dev = device_get_binding(DEFAULT_RADIO); |
| if (!lora_dev) { |
| LOG_ERR("%s Device not found", DEFAULT_RADIO); |
| return; |
| } |
| |
| config.frequency = 865100000; |
| config.bandwidth = BW_125_KHZ; |
| config.datarate = SF_10; |
| config.preamble_len = 8; |
| config.coding_rate = CR_4_5; |
| config.tx_power = 14; |
| config.tx = false; |
| |
| ret = lora_config(lora_dev, &config); |
| if (ret < 0) { |
| LOG_ERR("LoRa config failed"); |
| return; |
| } |
| |
| while (1) { |
| /* Block until data arrives */ |
| len = lora_recv(lora_dev, data, MAX_DATA_LEN, K_FOREVER, |
| &rssi, &snr); |
| if (len < 0) { |
| LOG_ERR("LoRa receive failed"); |
| return; |
| } |
| |
| LOG_INF("Received data: %s (RSSI:%ddBm, SNR:%ddBm)", |
| log_strdup(data), rssi, snr); |
| } |
| } |