Merge pull request #3 from sandeepmistry/bluetooth

Add support for BLE HCI UART mode
This commit is contained in:
Martino Facchin
2018-11-13 16:13:11 +01:00
committed by GitHub
7 changed files with 92 additions and 5 deletions

View File

@@ -7,6 +7,11 @@ CFLAGS += -DNDEBUG -DCONFIG_FREERTOS_ASSERT_DISABLE -Os -DLOG_LOCAL_LEVEL=0
CPPFLAGS += -DNDEBUG -Os CPPFLAGS += -DNDEBUG -Os
endif endif
ifeq ($(UNO_WIFI_REV2),1)
CFLAGS += -DUNO_WIFI_REV2
CPPFLAGS += -DUNO_WIFI_REV2
endif
include $(IDF_PATH)/make/project.mk include $(IDF_PATH)/make/project.mk
firmware: all firmware: all

View File

@@ -22,5 +22,9 @@
#include "Arduino.h" #include "Arduino.h"
void init() { void init() {
if (nvs_flash_init() != ESP_OK) {
nvs_flash_erase();
nvs_flash_init(); nvs_flash_init();
}
} }

View File

@@ -42,3 +42,8 @@ void digitalWrite(uint32_t pin, uint32_t val)
{ {
gpio_set_level((gpio_num_t)pin, val); gpio_set_level((gpio_num_t)pin, val);
} }
int digitalRead(uint32_t pin)
{
return gpio_get_level(pin);
}

View File

@@ -36,6 +36,8 @@ extern void pinMode(uint32_t pin, uint32_t mode);
extern void digitalWrite(uint32_t pin, uint32_t val); extern void digitalWrite(uint32_t pin, uint32_t val);
extern int digitalRead(uint32_t pin);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@@ -1,5 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
import sys;
booloaderData = open("build/bootloader/bootloader.bin", "rb").read() booloaderData = open("build/bootloader/bootloader.bin", "rb").read()
partitionData = open("build/partitions.bin", "rb").read() partitionData = open("build/partitions.bin", "rb").read()
appData = open("build/nina-fw.bin", "rb").read() appData = open("build/nina-fw.bin", "rb").read()
@@ -29,7 +31,11 @@ for i in range(0, len(certsData)):
# zero terminate the pem file # zero terminate the pem file
outputData[0x10000 + len(certsData)] = 0 outputData[0x10000 + len(certsData)] = 0
outputFilename = "NINA_W102.bin"
if (len(sys.argv) > 1):
outputFilename = sys.argv[1]
# write out # write out
with open("NINA_W102.bin","w+b") as f: with open(outputFilename,"w+b") as f:
f.seek(0) f.seek(0)
f.write(outputData) f.write(outputData)

View File

@@ -21,6 +21,8 @@
extern "C" { extern "C" {
#include <driver/periph_ctrl.h> #include <driver/periph_ctrl.h>
#include <driver/uart.h>
#include <esp_bt.h>
} }
#include <Arduino.h> #include <Arduino.h>
@@ -77,6 +79,9 @@ void setDebug(int d) {
} }
} }
void setupWiFi();
void setupBluetooth();
void setup() { void setup() {
setDebug(debug); setDebug(debug);
@@ -84,6 +89,49 @@ void setup() {
pinMode(15, INPUT); pinMode(15, INPUT);
pinMode(21, INPUT); pinMode(21, INPUT);
pinMode(5, INPUT);
if (digitalRead(5) == LOW) {
setupBluetooth();
} else {
setupWiFi();
}
}
// #define UNO_WIFI_REV2
void setupBluetooth() {
periph_module_enable(PERIPH_UART1_MODULE);
periph_module_enable(PERIPH_UHCI0_MODULE);
#ifdef UNO_WIFI_REV2
uart_set_pin(UART_NUM_1, 1, 3, 33, 0); // TX, RX, RTS, CTS
#else
uart_set_pin(UART_NUM_1, 23, 12, 18, 5);
#endif
uart_set_hw_flow_ctrl(UART_NUM_1, UART_HW_FLOWCTRL_CTS_RTS, 5);
esp_bt_controller_config_t btControllerConfig = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
btControllerConfig.hci_uart_no = UART_NUM_1;
#ifdef UNO_WIFI_REV2
btControllerConfig.hci_uart_baudrate = 115200;
#else
btControllerConfig.hci_uart_baudrate = 912600;
#endif
esp_bt_controller_init(&btControllerConfig);
while (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_IDLE);
esp_bt_controller_enable(ESP_BT_MODE_BLE);
esp_bt_sleep_enable();
vTaskSuspend(NULL);
while (1) {
vTaskDelay(portMAX_DELAY);
}
}
void setupWiFi() {
SPIS.begin(); SPIS.begin();
if (WiFi.status() == WL_NO_SHIELD) { if (WiFi.status() == WL_NO_SHIELD) {

View File

@@ -119,9 +119,26 @@ CONFIG_AWS_IOT_SDK=
# #
# Bluetooth # Bluetooth
# #
CONFIG_BT_ENABLED= CONFIG_BT_ENABLED=y
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE_0=y
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE_1=
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0
CONFIG_BT_RESERVE_DRAM=0 CONFIG_BTDM_CONTROLLER_HCI_MODE_VHCI=
CONFIG_BTDM_CONTROLLER_HCI_MODE_UART_H4=y
#
# HCI UART(H4) Options
#
CONFIG_BT_HCI_UART_NO=1
CONFIG_BT_HCI_UART_BAUDRATE=115200
#
# MODEM SLEEP Options
#
CONFIG_BTDM_CONTROLLER_MODEM_SLEEP=y
CONFIG_BTDM_MODEM_SLEEP_MODE_ORIG=
CONFIG_BTDM_MODEM_SLEEP_MODE_EVED=y
CONFIG_BT_RESERVE_DRAM=0x10000
# #
# Driver configurations # Driver configurations
@@ -213,7 +230,6 @@ CONFIG_ESP32_XTAL_FREQ_26=
CONFIG_ESP32_XTAL_FREQ_AUTO= CONFIG_ESP32_XTAL_FREQ_AUTO=
CONFIG_ESP32_XTAL_FREQ=40 CONFIG_ESP32_XTAL_FREQ=40
CONFIG_DISABLE_BASIC_ROM_CONSOLE= CONFIG_DISABLE_BASIC_ROM_CONSOLE=
CONFIG_NO_BLOBS=
CONFIG_ESP_TIMER_PROFILING= CONFIG_ESP_TIMER_PROFILING=
CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS=
CONFIG_ESP_ERR_TO_NAME_LOOKUP=y CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
@@ -221,6 +237,7 @@ CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
# #
# Wi-Fi # Wi-Fi
# #
CONFIG_SW_COEXIST_ENABLE=
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=