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

Kernel Panic QrCode

 In tanti anni ho visto qualche kernel panic, ma in questo formato non mi era mai successo    la cosa curiosa che al riavvio successivo ness...