#include #include #include #include #include #include #define DEFAULT_RADIO_NODE DT_ALIAS(lora0) BUILD_ASSERT(DT_NODE_HAS_STATUS(DEFAULT_RADIO_NODE, okay), "Board has no LoRa modem"); const struct device *const lora_dev = DEVICE_DT_GET(DEFAULT_RADIO_NODE); #define LOG_LEVEL CONFIG_LOG_DEFAULT_LEVEL #include LOG_MODULE_REGISTER(lora); static struct lora_modem_config modem_config = { .frequency = 433175000, .bandwidth = BW_125_KHZ, .datarate = SF_10, .preamble_len = 8, .coding_rate = CR_4_5, .iq_inverted = false, .public_network = false, .tx_power = 4, .tx = true }; void lora_tx_cb(const struct shell *sh, size_t argc, char *argv[]) { if (argc != 2) { LOG_ERR("lora_tx requires exactly one argument"); return; } int ret = lora_send(lora_dev, argv[1], strlen(argv[1])); if (ret < 0) { LOG_ERR("LoRa send failed"); return; } LOG_INF("tx: %s", argv[1]); } SHELL_CMD_ARG_REGISTER(tx, NULL, "send via LoRa", lora_tx_cb, 2, 0); void lora_rx_cb(const struct device *dev, uint8_t *data, uint16_t size, int16_t rssi, int8_t snr) { ARG_UNUSED(dev); ARG_UNUSED(size); LOG_INF("rx: %s (RSSI: %d dBm, SNR: %d dBm)", data, rssi, snr); } int main(void) { if (!device_is_ready(lora_dev)) { LOG_ERR("%s Device not ready", lora_dev->name); return 0; } int ret = lora_config(lora_dev, &modem_config); if (ret < 0) { LOG_ERR("LoRa config failed"); return 0; } // lora_recv_async(lora_dev, lora_rx_cb); k_sleep(K_FOREVER); return 0; }