60

Folco (./58) :
Pwet encore.

Tu avais réimplémenté, à ma demande, pedrom::unlink afin que celui-ci efface un fichier même en archive, permettant son effacement même avec une RAM pleine. Merci beaucoup, c'est en effet impossible sans hacker la flash sous AMS.

Le truc, c'est que tant qu'à faire, ne pourrait-on pas rendre unlink plus profitable, afin qu'il sache effacer un fichier en flash ou en RAM ? Là, il ne fait rien si le fichier est en RAM, c'est en peu dommage. En effet, c'est au programme de regarder où est le fichier, et d'appeler pedrom::unlink dans un cas, ou alors SymDel dans l'autre...

Autre pointà noter, pedrom::unlink retourne toujours 0.

Alors ce qui serait faisable à peu de frais, ce serait ça :
- pedrom::unlink appelle EM_delSym (ce qu'il fait actuellement).
- si fichier en flash, EM_delSym appelle EM_abandon et renvoie TRUE en cas de succès (comme SymDel).
- si fichier en RAM, EM_delSym appelle SymDel et renvoie la valeur de SymDel.
- pedrom::unlink retourne la valeur de EM_delSym (au lieu de 0 actuemment).


Voilà, je suis en train de coder ce qui touche à mon switch -force dans par (plus que 2 fonctions à écrire cheeky), et je me rends compte que le programme doit dupliquer le travail pour effacer à coup sûr.
Si tu acceptes cette proposition mais que ça te fait suer de l'implémenter, je veux bien écrire le patch.

Merci d'avance. smile

(ps -> en plus ce qui facilite la tâche, c'est que EM_abandon renvoie FALSE en cas d'échec, alors que sous AMS c'est un void, donc c'est du tout cuit cheeky)
(ps2 -> quand je parle de SymDel, je parle en fait de SymDel_SymEntry_reg)


Mais EM_delSym fonctionne avec les fichiers RAM & FLASH sous PedroM.
Ok pour le code retour, je m'en occupe.

61

Ah en effet, j'ai raté un appel (qui gère d'ailleurs les entrées sans handle, alors que je crois que ça plante sous AMS, bien vu).

Merci bien. smile

62

ROM_BASE est déclaré comme ça dans examples/include/ :
#define ROM_BASE __RAM_CALL(3, unsigned char *)
C'est un unsigned char*, pas un unsigned long* ? Je ne comprends pas très bien comment ça marche alors.
C'est normal ?

Si je fais 'if (Ptr > ROM_BASE)' ça fera ce que je veux ?

63

oui. Pourquoi tu voudrais que ca ne marche pas ?

64

Parce que j'ai codé toute la journée et que je suis fatigué. Je viens de caster mon pointeur en unsigned char* (c'était un void*) et tout va bien, je sais pas où j'avais la tête grin
Merci bien.

65

les pointeurs de différent types pointent tous sur la même adresse. Ca change juste quand tu veux faire de l'arithmétique avec.