Merge pull request #3 from sandeepmistry/bluetooth
Add support for BLE HCI UART mode
This commit is contained in:
5
Makefile
5
Makefile
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
23
sdkconfig
23
sdkconfig
@@ -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=
|
||||||
|
|||||||
Reference in New Issue
Block a user