barback32/main/main.c

100 lines
2.4 KiB
C
Raw Normal View History

2020-02-26 00:31:55 -05:00
#include <stdio.h>
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/uart.h"
#include "esp_log.h"
#include "esp_debug_helpers.h"
2020-04-23 01:43:27 -04:00
#include "nvs_flash.h"
#include "esp_vfs_dev.h"
2020-02-26 00:31:55 -05:00
#include "main.h"
#include "lorcomm.h"
2020-02-26 00:31:55 -05:00
#include "esp32-lora.h"
2020-02-26 10:11:57 -05:00
#include "console.h"
#include "ble.h"
2020-02-26 00:31:55 -05:00
static const char *TAG = "loracom-main";
2020-02-26 00:31:55 -05:00
lora32_cfg_t lora;
uint8_t mac[6];
2020-02-26 00:31:55 -05:00
static void handle_lora_txdone() {
lora32_enable_continuous_rx(&lora);
}
void handle_lora_caddone(bool detected) {
//ESP_LOGI(TAG, "CAD done: detected? %s", detected ? "true" : "false");
if(detected) {
lora32_enable_cad(&lora);
} else {
2020-03-03 20:38:04 -05:00
ESP_LOGI(TAG, "candone (no channel activity): enabling continuous RX");
2020-02-26 00:31:55 -05:00
lora32_enable_continuous_rx(&lora);
}
}
void app_main(void) {
2020-04-23 01:43:27 -04:00
esp_err_t err = nvs_flash_init();
if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_ERROR_CHECK(nvs_flash_erase());
err = nvs_flash_init();
}
ESP_ERROR_CHECK( err );
nvs_handle_t nvs_handle;
err = nvs_open("config", NVS_READWRITE, &nvs_handle);
if (err != ESP_OK) {
printf("Error (%s) opening NVS handle!\n", esp_err_to_name(err));
2020-04-24 15:56:14 -04:00
//lorcomm_cfg.nvs_handle = NULL;
2020-04-23 01:43:27 -04:00
} else {
2020-04-24 15:56:14 -04:00
lorcomm_cfg.nvs_handle = nvs_handle;
ESP_LOGI(TAG, "nvs_handle: %d", nvs_handle);
2020-04-23 01:43:27 -04:00
}
2020-02-26 00:31:55 -05:00
esp_efuse_mac_get_default((uint8_t*)&mac);
ESP_LOGI(TAG, "MAC: [%02X:%02X:%02X:%02X:%02X:%02X]", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
//lora.bandwidth = B208;
//lora.codingRate = 5;
lora.frequency = 915000000;
2020-04-25 01:47:26 -04:00
lora.spreadingFactor = 11;
lora.preamble = DEFAULT_PREAMBLE;
2020-02-26 00:31:55 -05:00
lora.dio0 = CONFIG_LORA32_DIO0_PIN;
lora.implicitHeader = false;
lora.nss = CONFIG_LORA32_NSS_PIN;
lora.reset = CONFIG_LORA32_RESET_PIN;
lora.useCRC = false;
lora.fifoIdx = 0;
2020-04-25 00:06:56 -04:00
lora.receive = &lorcomm_handle_receive;
2020-02-26 00:31:55 -05:00
lora.tx_done = &handle_lora_txdone;
//lora.cad_done = &handle_lora_caddone;
2020-02-26 00:31:55 -05:00
//lora.cad_detected = &handle_lora_caddetected;
lora32_init(&lora);
2020-04-25 01:47:26 -04:00
lora32_set_spreadfactor(&lora, lora.spreadingFactor);
2020-02-26 00:31:55 -05:00
//double dr = lora32_calc_datarate(&lora);
//ESP_LOGI(TAG, "data rate: %fbps", dr);
lora32_dump_regs(&lora);
2020-04-23 01:43:27 -04:00
lorcomm_cfg.lora = &lora;
xTaskCreate(console_task, "console", 4048, &lorcomm_cfg, tskIDLE_PRIORITY + 3, NULL);
2020-02-26 00:31:55 -05:00
//lora32_send(&lora, (uint8_t*)"hi\0", 3);
//ble_init();
lora32_enable_continuous_rx(&lora);
2020-02-29 18:43:15 -05:00
2020-02-26 00:31:55 -05:00
while(1) {
vTaskDelay(1000 / portTICK_PERIOD_MS);
2020-02-26 00:31:55 -05:00
}
}