Support of NW modules (Ion, Kandinsky and Time) on fxCG50 #14

Closed
Slyvtt wants to merge 29 commits from Slyvtt/PythonExtra:numworks into dev
First-time contributor

Désolé, le formatter de vscode m'a tué le formatage de certaines sources.

Pour tester.

Je joins le code de Orlog, un jeu d'Afyu pour tester. C'est du pur code Python NW, avec zéro modifications.

Je te laisse mettre à ta sauce.

Désolé, le formatter de vscode m'a tué le formatage de certaines sources. Pour tester. Je joins le code de Orlog, un jeu d'Afyu pour tester. C'est du pur code Python NW, avec zéro modifications. Je te laisse mettre à ta sauce.
Slyvtt added 1 commit 2024-01-30 22:27:00 +01:00
Owner

Ça me paraît pas mal sur l'implémentation, c'est relativement direct et c'est à mon avis une très bonne fonctionnalité à avoir.

Il y a plusieurs choses qu'il faudrait nettoyer sur la PR :

  • Virer .vscode des commits. Un coup de git filter-branch peut faire ça. C'est un peu avancé par contre, je peux le faire sur ta branche si tu veux (auquel cas signale-moi un moment où tu n'es pas en train de travailler et tout ton travail est poussé, parce que je vais force push la branche).
  • Découpler tes changements du reformatage automatique. Faut le faire à la main (recoller tes changements sur la version originale du code). Je vais devenir fou si je dois le faire (j'ai absolument zéro patience pour ça), donc ce serait bien que tu le fasses. Là aussi force-push pour nettoyer les commits.
  • Rebaser sur mes changements d'image ou fusionner la branche dev actuelle.
Ça me paraît pas mal sur l'implémentation, c'est relativement direct et c'est à mon avis une très bonne fonctionnalité à avoir. Il y a plusieurs choses qu'il faudrait nettoyer sur la PR : * Virer `.vscode` des commits. Un coup de `git filter-branch` peut faire ça. C'est un peu avancé par contre, je peux le faire sur ta branche si tu veux (auquel cas signale-moi un moment où tu n'es pas en train de travailler et tout ton travail est poussé, parce que je vais force push la branche). * Découpler tes changements du reformatage automatique. Faut le faire à la main (recoller tes changements sur la version originale du code). Je vais devenir fou si je dois le faire (j'ai absolument zéro patience pour ça), donc ce serait bien que tu le fasses. Là aussi force-push pour nettoyer les commits. * Rebaser sur mes changements d'image ou fusionner la branche dev actuelle.
Author
First-time contributor

Tu peux y aller aujourd'hui ou demain, je suis en déplacement donc je vais pas travailler dessus.

Tu peux y aller aujourd'hui ou demain, je suis en déplacement donc je vais pas travailler dessus.
Lephenixnoir force-pushed numworks from b8cd092219 to 96077c1653 2024-01-31 10:58:07 +01:00 Compare
Owner

Ok, c'est fait. Pour référence j'ai balancé la commande suivante sur la branch numworks :

git filter-branch --index-filter 'git rm --cached -r --ignore-unmatch .vscode' --prune-empty -- origin/dpoly..@

Quand tu reprendras le développement, télécharge les modifications avec git fetch, vérifie que tu n'as aucun travail non-staged, staged, ou des commits en plus sur ta branche locale, puis aligne-toi sur la branche distante avec git reset --hard origin/numworks.

Note aussi qu'il faut faire le point 2 (nettoyer l'auto-formatage) avant de faire le point 3 (rebase) parce que l'auto-formatage va rendre le rebase insupportable.

Ok, c'est fait. Pour référence j'ai balancé la commande suivante sur la branch `numworks` : ``` git filter-branch --index-filter 'git rm --cached -r --ignore-unmatch .vscode' --prune-empty -- origin/dpoly..@ ``` Quand tu reprendras le développement, télécharge les modifications avec `git fetch`, vérifie que tu n'as aucun travail non-staged, staged, ou des commits en plus sur ta branche locale, puis aligne-toi sur la branche distante avec `git reset --hard origin/numworks`. Note aussi qu'il faut faire le point 2 (nettoyer l'auto-formatage) avant de faire le point 3 (rebase) parce que l'auto-formatage va rendre le rebase insupportable.
Slyvtt added 1 commit 2024-02-02 20:32:28 +01:00
Slyvtt added 1 commit 2024-02-02 20:36:25 +01:00
Author
First-time contributor

Ok, j'ai fait un gros ménage. A priori cette fois on est OK pour merge. J'en ai profité pour checker avec Afyu que le rendu est correct. Je rajouterai au fur et à mesure mais cette partie est fonctionnelle.

Ok, j'ai fait un gros ménage. A priori cette fois on est OK pour merge. J'en ai profité pour checker avec Afyu que le rendu est correct. Je rajouterai au fur et à mesure mais cette partie est fonctionnelle.
Owner

Aaah, merci bien. Voilà qui a une bien meilleure tête pour le diff. Je m'occuperai de rebase, squash et ajuster un ou deux détails de style avant de fusionner. Peux-tu ajouter un programme d'exemple simple dans ports/sh/example (dans le genre cg_numworks.py) pour qu'on ait une référence ?

Aaah, merci bien. Voilà qui a une bien meilleure tête pour le diff. Je m'occuperai de rebase, squash et ajuster un ou deux détails de style avant de fusionner. Peux-tu ajouter un programme d'exemple simple dans `ports/sh/example` (dans le genre `cg_numworks.py`) pour qu'on ait une référence ?
Slyvtt added 1 commit 2024-02-02 22:17:10 +01:00
Slyvtt added 1 commit 2024-02-03 09:05:16 +01:00
Author
First-time contributor

Done.

Exemples dans ports/sh/examples avec des noms qui commencent tous par cg_NW_ Documentation en français au format md dans docs\sh

Done. Exemples dans `ports/sh/examples` avec des noms qui commencent tous par `cg_NW_` Documentation en français au format `md` dans `docs\sh`
Slyvtt added 1 commit 2024-02-03 18:10:01 +01:00
Slyvtt added 1 commit 2024-02-03 20:11:31 +01:00
Slyvtt added 1 commit 2024-02-04 16:00:53 +01:00
Slyvtt added 1 commit 2024-02-04 17:29:42 +01:00
Slyvtt added 1 commit 2024-02-04 19:38:23 +01:00
Slyvtt added 1 commit 2024-02-05 09:20:46 +01:00
Slyvtt added 1 commit 2024-02-05 16:37:37 +01:00
Author
First-time contributor

Pour moi ça devrait plus bouger. J'ai vérifié que les modules math, cmath, random sont compatibles avec les builtins de Micropython.

Pour turtle et matplotlib.pyplot, il est possible d'utiliser les modules turtle, matplotlib et casioplot de Casio Education dont la version Python est fournie en example dans ports/sh/examples.

De mon côté je touche plus (sauf détection de bugs et demandes spécifiques). Je suis content du résultat.

Pour moi ça devrait plus bouger. J'ai vérifié que les modules math, cmath, random sont compatibles avec les builtins de Micropython. Pour turtle et matplotlib.pyplot, il est possible d'utiliser les modules `turtle`, `matplotlib` et `casioplot` de Casio Education dont la version Python est fournie en example dans `ports/sh/examples`. De mon côté je touche plus (sauf détection de bugs et demandes spécifiques). Je suis content du résultat.
Slyvtt added 1 commit 2024-02-07 21:31:11 +01:00
Slyvtt added 2 commits 2024-02-08 21:01:44 +01:00
Slyvtt added 1 commit 2024-02-10 10:34:02 +01:00
Slyvtt added 1 commit 2024-02-10 10:39:36 +01:00
Author
First-time contributor

Cette fois je touche plus pendant qq temps - sauf si remontée(s) de bug(s) non détecté(s) - j'ai envie de passer un peu à autre chose. Comme ça tu pourras intégrer dans dev tranquilement.

Cette fois je touche plus pendant qq temps - sauf si remontée(s) de bug(s) non détecté(s) - j'ai envie de passer un peu à autre chose. Comme ça tu pourras intégrer dans `dev` tranquilement.
Slyvtt added 1 commit 2024-02-13 18:27:57 +01:00
Slyvtt added 1 commit 2024-02-13 18:31:37 +01:00
Slyvtt added 1 commit 2024-02-13 19:56:41 +01:00
Slyvtt added 1 commit 2024-02-24 09:14:35 +01:00
Slyvtt added 1 commit 2024-02-24 10:49:39 +01:00
Slyvtt added 1 commit 2024-02-25 19:41:12 +01:00
Lephenixnoir reviewed 2024-03-03 10:55:38 +01:00
@ -0,0 +46,4 @@
{
tickmono = 0;
int t = timer_configure(TIMER_TMU, 1000, GINT_CALL(monotonic_callback));
Owner

Ce n'est pas une façon vraiment satisfaisante de compter le temps. Déjà on pourrait utiliser libprof à la place, qui ne nécessite pas de gérer des interruptions tout le temps.

Et tant qu'à faire quelle est la précision de la mesure sur Numworks? Parce qu'on a déjà la RTC qui nous donne une résolution de 7.8 ms, donc si ça suffit autant utiliser ça.

Ce n'est pas une façon vraiment satisfaisante de compter le temps. Déjà on pourrait utiliser libprof à la place, qui ne nécessite pas de gérer des interruptions tout le temps. Et tant qu'à faire quelle est la précision de la mesure sur Numworks? Parce qu'on a déjà la RTC qui nous donne une résolution de 7.8 ms, donc si ça suffit autant utiliser ça.
Owner

Le module time est déjà fourni par PythonExtra non ? Comment ça se fait qu'on le redéfinit à la main ici ?

Le module `time` est déjà fourni par PythonExtra non ? Comment ça se fait qu'on le redéfinit à la main ici ?
Author
First-time contributor

C'est pour ajouter le support de monotonic() qui est pas dans le time d'origine.

Pour libprof ou RTC au lieu des interruptions, pourquoi pas en effet. j'essaierai de voir la précision sur le hardware Numworks.

C'est pour ajouter le support de `monotonic()` qui est pas dans le `time` d'origine. Pour `libprof` ou `RTC` au lieu des interruptions, pourquoi pas en effet. j'essaierai de voir la précision sur le hardware Numworks.
Owner

Vu que c'est une fonction qui existe sur le module CPython on n'a qu'à l'ajouter dans extmod/modtime.c en appelant simplement mp_hal_ticks_ms(). Si la précision de 7.8 ms est pas suffisante on peut modifier mp_hal_ticks_ms() pour utiliser libprof.

Vu que c'est une fonction qui existe sur le module CPython on n'a qu'à l'ajouter dans `extmod/modtime.c` en appelant simplement `mp_hal_ticks_ms()`. Si la précision de 7.8 ms est pas suffisante on peut modifier `mp_hal_ticks_ms()` pour utiliser libprof.
Author
First-time contributor

Yep ça me va. Je pense que le sleep( duration ) doit être OK, j'ai pas vérifié mais de tête c'était OK (duration est un float qui contient le nombre de secondes à attendre).

Yep ça me va. Je pense que le `sleep( duration )` doit être OK, j'ai pas vérifié mais de tête c'était OK (`duration` est un float qui contient le nombre de secondes à attendre).
Owner

Alright. Je vais merger la branche telle quelle et ensuite faire quelques commits de nettoyage pour mettre "à mon goût" certains détails. Notamment le module time, le tableau de timers qui n'est pas super satisfaisant, des détails comme ça.

Alright. Je vais merger la branche telle quelle et ensuite faire quelques commits de nettoyage pour mettre "à mon goût" certains détails. Notamment le module time, le tableau de timers qui n'est pas super satisfaisant, des détails comme ça.
Lephenixnoir changed title from [WIP] - Support of NW modules (Ion, Kandinsky and Time) on fxCG50 to Support of NW modules (Ion, Kandinsky and Time) on fxCG50 2024-03-03 14:17:43 +01:00
Owner

Info : c'est sur la branche numworks que ça se passe du coup. J'ai bientôt fini, promis...

Info : c'est sur la branche numworks que ça se passe du coup. J'ai bientôt fini, promis...
Author
First-time contributor

Pas de problème, prends le temps qu'il te faut, ça fait une plombe que j'ai pas codé je suis au triple taquet avec le taf.

Pas de problème, prends le temps qu'il te faut, ça fait une plombe que j'ai pas codé je suis au triple taquet avec le taf.
Owner

Fusionné manuellement et publié via 0.3.0-beta.

Fusionné manuellement et publié via 0.3.0-beta.
Lephenixnoir closed this pull request 2024-03-19 10:08:55 +01:00

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Lephenixnoir/PythonExtra#14
No description provided.