Unverified Commit 788a4caf authored by Me No Dev's avatar Me No Dev Committed by GitHub

Merge branch 'master' into release/v2.x

parents 2ff2b43a 224e778b
......@@ -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);
......
/*
* 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
/*
* 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;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment