Italian [Risolto]Bluetooth & MTU

stefanoxjx

Active Member
Licensed User
Longtime User
Ciao a tutti, sono di nuovo qui :)
Nell'app che sto sviluppando vorrei provare ad aumentare l'MTU.
Quindi mi sono messo a fare un po' di ricerchè ed ho trovato questo thread: https://www.b4x.com/android/forum/threads/need-to-change-mtu-in-ble-application-solved.101722/
Ho provato subito questa soluzione, ma la funzione "Manager_MtuChanged" non viene richiamata, quindi deduco che l'MTU non venga modificato, anche perchè non vedo differenze nel trasferimento dati.
Detto questo, ho cercato anche di documentarmi un pochino e da quello che ho capito (si trovano solo siti in inglese mannaggia) ho visto che durante la connessione i due interlocutori eseguono una negoziazione e impostano l'MTU in base a chi dei due ha il valore più basso.
Questo mi confonde un po', perchè ho dei dubbi su cossa possa succedere nel momento in cui a connessione avvenuta cambio l'MTU.
Per esempio, se i due marchingegni hanno MTU a 23 byte (ipotesi), alla connessione il valore sarà (ovviamente) 23, ma se io dal mio dispositivo imposto 200 byte ed è vero che si adattano al valore più basso, in automatico il mio dispositivo dovrebbe riprendere il valore 23 dell'interlocutore.
Mi sto facendo un sacco di pippe mentali per niente?
Grazie.

Stefano
 

Star-Dust

Expert
Licensed User
Ciao a tutti, sono di nuovo qui :)
Non so come aiutarti, l'unica cosa che volevo dirti che è dal 2014 che dici di essere nuovo. Io sono iscritto dal 2016 e quindi sono nuovissimo, praticamente non ho finito il rodaggio, e ne so meno di te 🙄 🙄
 

stefanoxjx

Active Member
Licensed User
Longtime User
l'unica cosa che volevo dirti che è dal 2014 che dici di essere nuovo.

Si perchè nel 2014 avevo fatto qualcosina, poi ho seguito altre strade e sono riapprodato a B4A qualche giorno fa, ma solo perchè mi serve un app per testare un dispositivo su cui sto lavorando.
Capirai che dopo 6 anni quel pochissimo che avevo imparato nel 2014 l'ho dimenticato tutto, anche perchè un po' di cose sono cambiate nel frattempo.
Inoltre posso già dirti che non avendo molto tempo libero, credo che una volta fatta questa app (che mi serve solo per test) probabilmente la prossima volta riapproderò a B4A nel 2026.
Non perchè non mi piaccia, anzi, ma perchè sono impegnato su altri fronti e non ho tempo di seguire anche questo ramo della programmazione.
Ecco spiegato perchè continuo a definirmi niubbo dopo tutto questo tempo.
Se poi questo da fastidio, basta dirlo e mi tolgo dalle scatole 🤔
 

stefanoxjx

Active Member
Licensed User
Longtime User
Dimenticavo, non ho scritto che "sono nuovo", anche perchè appunto basta guardare la data di iscrizione per capire che non è vero.
Ho scritto "Sono di nuovo qui" che vuol dire ben altra cosa.
 

Star-Dust

Expert
Licensed User
Ciao a tutti, sono di nuovo qui :) (LASCIAMO PERDERE)

Ho provato subito questa soluzione, ma la funzione "Manager_MtuChanged" non viene richiamata, quindi deduco che l'MTU non venga modificato, anche perchè non vedo differenze nel trasferimento dati.
Anche se non ha successo dev'essere sollevato lo stesso l'evento con success=False
Quindi ci sarà qualche altro motivo
 

stefanoxjx

Active Member
Licensed User
Longtime User
Immagino di si, ho provato a verificare la sintassi dei nomi, ma sembra corretta.
Infatti, solo per fare qualche esempio, incollo sotto i nomi di alcune callback che ho nel codice e che vengono richiamate regolarmente:

B4X:
Manager_Connected
Manager_Disconnected
Manager_DeviceFound

quindi seguendo questa linea, Manager_MtuChanged dovrebbe essere un nome corretto.
 

Star-Dust

Expert
Licensed User
Immagino di si, ho provato a verificare la sintassi dei nomi, ma sembra corretta.
Infatti, solo per fare qualche esempio, incollo sotto i nomi di alcune callback che ho nel codice e che vengono richiamate regolarmente:

B4X:
Manager_Connected
Manager_Disconnected
Manager_DeviceFound

quindi seguendo questa linea, Manager_MtuChanged dovrebbe essere un nome corretto.
Non so dirti, non ho mai provato. Il dispositivo consente questo tipo di cambiamento?
 

stefanoxjx

Active Member
Licensed User
Longtime User
Presumo di si, è un Android 8.0
Comunque come dicevi, dovrebbe sempre sollevare l'evento con success=False
 

Star-Dust

Expert
Licensed User
Presumo di si, è un Android 8.0
Comunque come dicevi, dovrebbe sempre sollevare l'evento con success=False
Metti la domanda nel forum internazionale
 

stefanoxjx

Active Member
Licensed User
Longtime User
Nel frattempo ho scoperto il problema.
Lo scrivo qui così se qualcuno dovesse aver bisogno un giorno...

Da quello che ho visto la chiamata a RequestMtu è prematura se richiamata all'interno di Manager_Connected.
Infatti, anche se RequestMtu mi ritorna true, l'MTU di fatto non viene cambiato.
Ora chiamo RequestMtu dopo 2 secondi dalla connessione e in questo modo il valore MTU viene effettivamente e correttamente cambiato oltre che esserci anche la chiamata a Manager_MtuChanged.
Probabilmente dipende dal modulo bluetooth montato sul device su cui sto lavorando, perchè effettivamente è un po' lento a mettersi in condizioni di lavorare dopo la connessione.
 

amorosik

Expert
Licensed User
Si perchè nel 2014 avevo fatto qualcosina, poi ho seguito altre strade e sono riapprodato a B4A qualche giorno fa, ....

Se hai usato altri ambienti per la programmazione Android, sarebbe molto interessante un tuo punto di vista dell'ambiente B4A rispetto ad altri ambienti di sviluppo
 

stefanoxjx

Active Member
Licensed User
Longtime User
No, non ho usato altri ambienti per lo sviluppo di app Android, anzi non ho proprio più sviluppato su Android anche se mi piacerebbe, ma non si può fare tutto.
Attualmente sviluppo in C su ambienti Embedded, per la precisione sul mondo degli elettrodomestici e nel frattempo ho approfondito (sempre per necessità lavorative) lo sviluppo di programmi Desktop in C++ con librerie Qt.
 
Top