Volevo unire un progetto degli esempi dell'SDK IDF con la libreria M5Unified e mi sono accorto che non e' cosi' banale in quanto gli esempi sono scritti in C mentre M5Unified e' in C++
Si puo' ovviare creando un wrapper
idf.py create-project m5stick_test
idf.py add-dependency "m5stack/m5unified"
nel folder main si creano i file m5_wrapper.c e m5_wrapper.h
m5_wrapper.c
#include <M5Unified.h>
#include "m5_wrapper.h"
extern "C" {
// Initialize M5Unified (C++ side)
void m5_init(void) {
auto cfg = M5.config();
M5.begin(cfg);
}
// Print a C string
void m5_print(const char *text) {
M5.Display.println(text);
}
// Print an integer
void m5_print_int(int value) {
M5.Display.println(value);
}
void m5_set_text_size(int size) {
M5.Display.setTextSize(size);
}
void m5_set_cursor(int x, int y) {
M5.Display.setCursor(x, y);
}
void m5_clear(void) {
M5.Display.clear();
}
}
m5_wrapper.c
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
void m5_init(void);
void m5_print(const char *text);
void m5_print_int(int value);
void m5_set_text_size(int size);
void m5_set_cursor(int x, int y);
void m5_clear(void);
#ifdef __cplusplus
}
#endif
a questo punto si modifica il file CMakeLists.txt aggiungendo il file m5_wrapper.cpp
CMakeLists.txt
idf_component_register(SRCS "hid_host_example.c" "m5_wrapper.cpp"
INCLUDE_DIRS "."
PRIV_REQUIRES usb esp_driver_gpio
)
nel programma main.c si include l'header
#include "m5_wrapper.h"
e poi si inizializza
m5_init();
idf.py -p /dev/ttyUSB0 -b 115200 flash monitor

Nessun commento:
Posta un commento