domenica 9 novembre 2025

Compilare libreria M5Unified in progetti IDF

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

Mappa frane da news on line

Correva l'anno 2008 ed il mio direttore di Dipartimento mi aveva chiesto di lavorare sui Big Data per estrarre dati di geolocalizzazione...