Initial tag code
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
CompileFlags:
|
||||
Remove: [-f*, -m*]
|
||||
@@ -0,0 +1,13 @@
|
||||
ARG DOCKER_TAG=latest
|
||||
FROM espressif/idf:${DOCKER_TAG}
|
||||
|
||||
ENV LC_ALL=C.UTF-8
|
||||
ENV LANG=C.UTF-8
|
||||
|
||||
RUN apt-get update -y && apt-get install udev -y
|
||||
|
||||
RUN echo "source /opt/esp/idf/export.sh > /dev/null 2>&1" >> ~/.bashrc
|
||||
|
||||
ENTRYPOINT [ "/opt/esp/entrypoint.sh" ]
|
||||
|
||||
CMD ["/bin/bash", "-c"]
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "ESP-IDF QEMU",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile"
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"settings": {
|
||||
"terminal.integrated.defaultProfile.linux": "bash",
|
||||
"idf.gitPath": "/usr/bin/git"
|
||||
},
|
||||
"extensions": [
|
||||
"espressif.esp-idf-extension",
|
||||
"espressif.esp-idf-web"
|
||||
]
|
||||
}
|
||||
},
|
||||
"runArgs": ["--privileged"]
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
# macOS
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Directory metadata
|
||||
.directory
|
||||
|
||||
# Temporary files
|
||||
*~
|
||||
*.swp
|
||||
*.swo
|
||||
*.bak
|
||||
*.tmp
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
|
||||
# Build artifacts and directories
|
||||
**/build/
|
||||
build/
|
||||
*.o
|
||||
*.a
|
||||
*.out
|
||||
*.exe # For any host-side utilities compiled on Windows
|
||||
|
||||
# ESP-IDF specific build outputs
|
||||
*.bin
|
||||
*.elf
|
||||
*.map
|
||||
flasher_args.json # Generated in build directory
|
||||
sdkconfig.old
|
||||
sdkconfig
|
||||
|
||||
# ESP-IDF dependencies
|
||||
# For older versions or manual component management
|
||||
/components/.idf/
|
||||
**/components/.idf/
|
||||
# For modern ESP-IDF component manager
|
||||
managed_components/
|
||||
# If ESP-IDF tools are installed/referenced locally to the project
|
||||
.espressif/
|
||||
|
||||
# CMake generated files
|
||||
CMakeCache.txt
|
||||
CMakeFiles/
|
||||
cmake_install.cmake
|
||||
install_manifest.txt
|
||||
CTestTestfile.cmake
|
||||
|
||||
# Python environment files
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
__pycache__/
|
||||
*.egg-info/
|
||||
dist/
|
||||
|
||||
# Virtual environment folders
|
||||
venv/
|
||||
.venv/
|
||||
env/
|
||||
|
||||
# Language Servers
|
||||
.clangd/
|
||||
.ccls-cache/
|
||||
compile_commands.json
|
||||
|
||||
# Windows specific
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
Desktop.ini
|
||||
|
||||
# User-specific configuration files
|
||||
*.user
|
||||
*.workspace # General workspace files, can be from various tools
|
||||
*.suo # Visual Studio Solution User Options
|
||||
*.sln.docstates # Visual Studio
|
||||
@@ -0,0 +1,8 @@
|
||||
# For more information about build system see
|
||||
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
|
||||
# The following five lines of boilerplate have to be in your project's
|
||||
# CMakeLists in this exact order for cmake to work correctly
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
project(officesense_tag)
|
||||
@@ -0,0 +1,2 @@
|
||||
idf_component_register(SRCS "main.c"
|
||||
INCLUDE_DIRS ".")
|
||||
@@ -0,0 +1,92 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "nvs_flash.h"
|
||||
|
||||
#include "nimble/nimble_port.h"
|
||||
#include "nimble/nimble_port_freertos.h"
|
||||
|
||||
#include "host/ble_hs.h"
|
||||
#include "services/gap/ble_svc_gap.h"
|
||||
|
||||
static const char *TAG = "BLE";
|
||||
|
||||
static const ble_uuid128_t service_uuid =
|
||||
BLE_UUID128_INIT(
|
||||
0xF0, 0xDE, 0xBC, 0x9A,
|
||||
0x78, 0x56, 0x34, 0x12,
|
||||
0xF0, 0xDE, 0xBC, 0x9A,
|
||||
0x78, 0x56, 0x34, 0x12);
|
||||
|
||||
static void start_adv(void)
|
||||
{
|
||||
struct ble_hs_adv_fields fields;
|
||||
memset(&fields, 0, sizeof(fields));
|
||||
|
||||
fields.flags = BLE_HS_ADV_F_DISC_GEN | BLE_HS_ADV_F_BREDR_UNSUP;
|
||||
|
||||
fields.uuids128 = (ble_uuid128_t *)&service_uuid;
|
||||
fields.num_uuids128 = 1;
|
||||
fields.uuids128_is_complete = 1;
|
||||
|
||||
uint8_t mfg_data[5] = {0x34, 0x34, 0x34, 0x34, 0x34};
|
||||
|
||||
fields.mfg_data = mfg_data;
|
||||
fields.mfg_data_len = sizeof(mfg_data);
|
||||
|
||||
int rc = ble_gap_adv_set_fields(&fields);
|
||||
if (rc != 0)
|
||||
{
|
||||
ESP_LOGE(TAG, "adv set fields failed: %d", rc);
|
||||
return;
|
||||
}
|
||||
|
||||
struct ble_gap_adv_params params;
|
||||
memset(¶ms, 0, sizeof(params));
|
||||
|
||||
params.conn_mode = BLE_GAP_CONN_MODE_NON;
|
||||
params.disc_mode = BLE_GAP_DISC_MODE_GEN;
|
||||
params.itvl_min = 0x80; // ~100ms
|
||||
params.itvl_max = 0x80;
|
||||
|
||||
rc = ble_gap_adv_start(
|
||||
BLE_ADDR_PUBLIC,
|
||||
NULL,
|
||||
BLE_HS_FOREVER,
|
||||
¶ms,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
if (rc != 0)
|
||||
{
|
||||
ESP_LOGE(TAG, "adv start failed: %d", rc);
|
||||
}
|
||||
else
|
||||
{
|
||||
ESP_LOGI(TAG, "advertising started");
|
||||
}
|
||||
}
|
||||
|
||||
static void on_sync(void)
|
||||
{
|
||||
ESP_LOGI(TAG, "BLE synced");
|
||||
|
||||
start_adv();
|
||||
}
|
||||
|
||||
static void host_task(void *param)
|
||||
{
|
||||
nimble_port_run();
|
||||
}
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
ESP_ERROR_CHECK(nvs_flash_init());
|
||||
nimble_port_init();
|
||||
|
||||
ble_svc_gap_init();
|
||||
ble_svc_gap_device_name_set("XIAO_C6");
|
||||
|
||||
ble_hs_cfg.sync_cb = on_sync;
|
||||
|
||||
nimble_port_freertos_init(host_task);
|
||||
}
|
||||
Reference in New Issue
Block a user