Merge branch 'master' into release/v2.x
This commit is contained in:
commit
788a4caf27
9 changed files with 142 additions and 13 deletions
|
|
@ -99,6 +99,7 @@ set(LIBRARY_SRCS
|
|||
libraries/RainMaker/src/RMakerType.cpp
|
||||
libraries/RainMaker/src/RMakerQR.cpp
|
||||
libraries/RainMaker/src/RMakerUtils.cpp
|
||||
libraries/RainMaker/src/AppInsights.cpp
|
||||
libraries/SD_MMC/src/SD_MMC.cpp
|
||||
libraries/SD/src/SD.cpp
|
||||
libraries/SD/src/sd_diskio.cpp
|
||||
|
|
|
|||
|
|
@ -17817,12 +17817,12 @@ deneyapkart1Av2.menu.DFUOnBoot.default.build.dfu_on_boot=0
|
|||
deneyapkart1Av2.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode)
|
||||
deneyapkart1Av2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
|
||||
|
||||
deneyapkart1Av2.menu.UploadMode.default=UART0 / Hardware CDC
|
||||
deneyapkart1Av2.menu.UploadMode.default.upload.use_1200bps_touch=false
|
||||
deneyapkart1Av2.menu.UploadMode.default.upload.wait_for_upload_port=false
|
||||
deneyapkart1Av2.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB)
|
||||
deneyapkart1Av2.menu.UploadMode.cdc.upload.use_1200bps_touch=true
|
||||
deneyapkart1Av2.menu.UploadMode.cdc.upload.wait_for_upload_port=true
|
||||
deneyapkart1Av2.menu.UploadMode.default=UART0 / Hardware CDC
|
||||
deneyapkart1Av2.menu.UploadMode.default.upload.use_1200bps_touch=false
|
||||
deneyapkart1Av2.menu.UploadMode.default.upload.wait_for_upload_port=false
|
||||
|
||||
deneyapkart1Av2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
|
||||
deneyapkart1Av2.menu.PartitionScheme.default.build.partitions=default
|
||||
|
|
@ -22714,5 +22714,3 @@ crabik_slot_esp32_s3.menu.EraseFlash.all=Enabled
|
|||
crabik_slot_esp32_s3.menu.EraseFlash.all.upload.erase_cmd=-e
|
||||
|
||||
##############################################################
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -25,11 +25,11 @@ This is the way to install Arduino-ESP32 directly from the Arduino IDE.
|
|||
|
||||
- Stable release link::
|
||||
|
||||
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
||||
https://espressif.github.io/arduino-esp32/package_esp32_index.json
|
||||
|
||||
- Development release link::
|
||||
|
||||
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
|
||||
https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json
|
||||
|
||||
|
||||
.. note::
|
||||
|
|
|
|||
|
|
@ -49,13 +49,18 @@ ESPInsightsClass::~ESPInsightsClass(){
|
|||
end();
|
||||
}
|
||||
|
||||
bool ESPInsightsClass::begin(const char *auth_key, const char *node_id, uint32_t log_type, bool alloc_ext_ram){
|
||||
bool ESPInsightsClass::begin(const char *auth_key, const char *node_id, uint32_t log_type, bool alloc_ext_ram, bool use_default_transport){
|
||||
if(!initialized){
|
||||
if(log_type == 0xFFFFFFFF){
|
||||
log_type = (ESP_DIAG_LOG_TYPE_ERROR | ESP_DIAG_LOG_TYPE_WARNING | ESP_DIAG_LOG_TYPE_EVENT);
|
||||
}
|
||||
esp_insights_config_t config = {.log_type = log_type, .node_id = node_id, .auth_key = auth_key, .alloc_ext_ram = alloc_ext_ram};
|
||||
esp_err_t err = esp_insights_init(&config);
|
||||
esp_err_t err = ESP_OK;
|
||||
if (use_default_transport) {
|
||||
err = esp_insights_init(&config);
|
||||
} else {
|
||||
err = esp_insights_enable(&config);
|
||||
}
|
||||
if (err != ESP_OK) {
|
||||
log_e("Failed to initialize ESP Insights, err:0x%x", err);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ class ESPInsightsClass
|
|||
ESPInsightsClass();
|
||||
~ESPInsightsClass();
|
||||
|
||||
bool begin(const char *auth_key, const char *node_id = NULL, uint32_t log_type = 0xFFFFFFFF, bool alloc_ext_ram = false);
|
||||
bool begin(const char *auth_key, const char *node_id = NULL, uint32_t log_type = 0xFFFFFFFF, bool alloc_ext_ram = false, bool use_default_transport = true);
|
||||
void end();
|
||||
bool send();
|
||||
const char * nodeID();
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "RMaker.h"
|
||||
#include "WiFi.h"
|
||||
#include "WiFiProv.h"
|
||||
#include "AppInsights.h"
|
||||
|
||||
#define DEFAULT_POWER_MODE true
|
||||
const char *service_name = "PROV_1234";
|
||||
|
|
@ -98,6 +99,9 @@ void setup()
|
|||
RMaker.enableSchedule();
|
||||
|
||||
RMaker.enableScenes();
|
||||
// Enable ESP Insights. Insteads of using the default http transport, this function will
|
||||
// reuse the existing MQTT connection of Rainmaker, thereby saving memory space.
|
||||
initAppInsights();
|
||||
|
||||
RMaker.enableSystemService(SYSTEM_SERV_FLAGS_ALL, 2, 2, 2);
|
||||
|
||||
|
|
|
|||
81
libraries/RainMaker/src/AppInsights.cpp
Normal file
81
libraries/RainMaker/src/AppInsights.cpp
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include "sdkconfig.h"
|
||||
#include <inttypes.h>
|
||||
#if defined(CONFIG_ESP_INSIGHTS_ENABLED) && defined(CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK)
|
||||
#include "Arduino.h"
|
||||
#include "AppInsights.h"
|
||||
#include "Insights.h"
|
||||
#include <esp_rmaker_mqtt.h>
|
||||
#include <esp_insights.h>
|
||||
#include <esp_diagnostics.h>
|
||||
#include <esp_rmaker_core.h>
|
||||
#include <esp_rmaker_common_events.h>
|
||||
|
||||
extern "C" {
|
||||
bool esp_rmaker_mqtt_is_budget_available();
|
||||
}
|
||||
|
||||
#define INSIGHTS_TOPIC_SUFFIX "diagnostics/from-node"
|
||||
#define INSIGHTS_TOPIC_RULE "insights_message_delivery"
|
||||
|
||||
static void _rmakerCommonEventHandler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data)
|
||||
{
|
||||
if (event_base != RMAKER_COMMON_EVENT) {
|
||||
return;
|
||||
}
|
||||
esp_insights_transport_event_data_t data;
|
||||
switch(event_id) {
|
||||
case RMAKER_MQTT_EVENT_PUBLISHED:
|
||||
memset(&data, 0, sizeof(data));
|
||||
data.msg_id = *(int *)event_data;
|
||||
esp_event_post(INSIGHTS_EVENT, INSIGHTS_EVENT_TRANSPORT_SEND_SUCCESS, &data, sizeof(data), portMAX_DELAY);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static int _appInsightsDataSend(void *data, size_t len)
|
||||
{
|
||||
char topic[128];
|
||||
int msg_id = -1;
|
||||
if (data == NULL) {
|
||||
return 0;
|
||||
}
|
||||
char *node_id = esp_rmaker_get_node_id();
|
||||
if (!node_id) {
|
||||
return -1;
|
||||
}
|
||||
if (esp_rmaker_mqtt_is_budget_available() == false) {
|
||||
return ESP_FAIL;
|
||||
}
|
||||
esp_rmaker_create_mqtt_topic(topic, sizeof(topic), INSIGHTS_TOPIC_SUFFIX, INSIGHTS_TOPIC_RULE);
|
||||
esp_rmaker_mqtt_publish(topic, data, len, RMAKER_MQTT_QOS1, &msg_id);
|
||||
return msg_id;
|
||||
}
|
||||
|
||||
bool initAppInsights(uint32_t log_type, bool alloc_ext_ram)
|
||||
{
|
||||
char *node_id = esp_rmaker_get_node_id();
|
||||
esp_insights_transport_config_t transport;
|
||||
transport.userdata = NULL;
|
||||
transport.callbacks.data_send = _appInsightsDataSend;
|
||||
transport.callbacks.init = NULL;
|
||||
transport.callbacks.deinit = NULL;
|
||||
transport.callbacks.connect = NULL;
|
||||
transport.callbacks.disconnect = NULL;
|
||||
esp_insights_transport_register(&transport);
|
||||
esp_event_handler_register(RMAKER_COMMON_EVENT, ESP_EVENT_ANY_ID, _rmakerCommonEventHandler, NULL);
|
||||
return Insights.begin(NULL, node_id, log_type, alloc_ext_ram, false);
|
||||
}
|
||||
#else
|
||||
bool initAppInsights(uint32_t log_type, bool alloc_ext_ram)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
12
libraries/RainMaker/src/AppInsights.h
Normal file
12
libraries/RainMaker/src/AppInsights.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "sdkconfig.h"
|
||||
#include "Arduino.h"
|
||||
#include <inttypes.h>
|
||||
|
||||
bool initAppInsights(uint32_t log_type = 0xffffffff, bool alloc_ext_ram = false);
|
||||
|
|
@ -14,13 +14,41 @@ void setup() {
|
|||
pinMode(buttonPin, INPUT_PULLUP);
|
||||
Gamepad.begin();
|
||||
USB.begin();
|
||||
Serial.begin(115200);
|
||||
Serial.println("\n==================\nUSB Gamepad Testing\n==================\n");
|
||||
Serial.println("Press BOOT Button to activate the USB gamepad.");
|
||||
Serial.println("Longer press will change the affected button and controls.");
|
||||
Serial.println("Shorter press/release just activates the button and controls.");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
static uint8_t padID = 0;
|
||||
static long lastPress = 0;
|
||||
|
||||
int buttonState = digitalRead(buttonPin);
|
||||
if ((buttonState != previousButtonState) && (buttonState == LOW)) {
|
||||
Gamepad.pressButton(BUTTON_START);
|
||||
Gamepad.releaseButton(BUTTON_START);
|
||||
if (buttonState != previousButtonState) {
|
||||
if (buttonState == LOW) { // BOOT Button pressed
|
||||
Gamepad.pressButton(padID); // Buttons 1 to 32
|
||||
Gamepad.leftStick(padID << 3, padID << 3); // X Axis, Y Axis
|
||||
Gamepad.rightStick(-(padID << 2), padID << 2); // Z Axis, Z Rotation
|
||||
Gamepad.leftTrigger(padID << 4); // X Rotation
|
||||
Gamepad.rightTrigger(-(padID << 4)); // Y Rotation
|
||||
Gamepad.hat((padID & 0x7) + 1); // Point of View Hat
|
||||
log_d("Pressed PadID [%d]", padID);
|
||||
lastPress = millis();
|
||||
} else {
|
||||
Gamepad.releaseButton(padID);
|
||||
Gamepad.leftStick(0, 0);
|
||||
Gamepad.rightStick(0, 0);
|
||||
Gamepad.leftTrigger(0);
|
||||
Gamepad.rightTrigger(0);
|
||||
Gamepad.hat(HAT_CENTER);
|
||||
log_d("Released PadID [%d]\n", padID);
|
||||
if (millis() - lastPress > 300) {
|
||||
padID = (padID + 1) & 0x1F;
|
||||
log_d("Changed padID to %d\n", padID);
|
||||
}
|
||||
}
|
||||
}
|
||||
previousButtonState = buttonState;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue