Mot-clé - Android

Fil des billets - Fil des commentaires

dimanche 5 juillet 2020

Mode développeur sur RedMi 8

Aller dans "Paramètres" (Settings), Puis dans "À propos du téléphone" (About phone), Puis appuyer 7 fois sur "Version MIUI" (MIUI version)

Le mode développeur est activé

Retourner sous "Paramètres" (Settings), Aller dans "Paramètres supplémentaires" (Additional settings), puis dans "Options développeur" (Developer options)

jeudi 13 février 2020

Cordova, Matlab et code C généré avec des statiques

Le code C généré depuis Matlab, utilisent des variables statiques.

Ce qui n'est pas génant en soit dans une application classique, car ça améliore la vitesse de traitement : l'application n'ayant pas en permanence à allouer et désallouer de la mémoire.

Pour un application mobile Cordova, dans lequel le code C est encapsulé dans un plugin. Celà pose problème, car une fois le plugin utilisé on n'a que faire de cette mémoire allouer. Problème on ne peut pas déchargé le plugin.

Sur Android, en compilant le code C dans une librairie dynamique. ça semble fonctionner, la mémoire des variables statiques semblent être supprimer en déchargeant la lib. (Je n'ai pas pu vraiment tester, appli + monitoring dans Android Studio, ça rame tellement que tout fini par planter).

Sur iOS: une bibliothèque dynamique faut oublié. Donc lib statique, ou plus simple le code C direct dans le plugin (plus facile pour débuguer).

donc j'ai passé les tableaux de taille importante @@ static TYPE table100000; @@

en dynamique dans un header j'aurai

@@ extern TYPE * table_nomDeFonction; @@

Je rajoute des suffixes à mes variables, car la plupart des variables on le même nom. C'est bien la génération automatique de code ;). et dans ma fonction principale il va falloir que j'initialise tout ça, et surtout que je désalloue.

dans mon code de la fonction je remplace mes static TYPE table100000; par

@@ type * table; if ( table_nomDeFonction == NULL ) { table_nomDeFonction = (TYPE)malloc(100000); } table = table_nomDeFonction; @@

dans le code principal, je définie et j'initialise à NULL toutes mes nouvelles variables.

@@ TYPE * table_nomDeFonction = NULL; @@

après avoir fait mon traitement Matlab, une bonne déalloc

@@ free(table_nomDeFonction) ; table_nomDeFonction = NULL; @@

Faut mettre le NULL, sinon au prochain coup youppi, on écris je sais pas où. même mieux, étant habitué au vieux compilo C, qui ne tenait pas compte de l'initialisation avec la déclaration. c'est mieux de mettre en début de fonction, avant l'appel de la fonction principale Matlab.

@@ table_nomDeFonction = NULL; @@

Simplement virer les static dans les fonctions, ne convient pas, car les pointeurs sur les données des tableaux sont stoquées dans d'autres tableaux qui sont utilisés dans d'autres fonctions.