Depuis longtemps attendue pour être ensuite abandonnée, car tuée sur l'hôtel des profits financiers (surtout ceux d'Intel) par ses créateurs, voici de retour la venue de la pile FireWire/IEEE1394/Lynx/i.Link_<inserer ici votre marque> spécialement pour notre OS préféré, le bien nommé MorphOS!

Voui, voui, voui, vous avez bien lu!

Si vous n'avez pas bien vu encore, j'ai eu 30 ans en août!
Hein ? C'est quoi le rapport ?? Comme vous le voyez sur mon billet d'anniv, j'ai eu une caméra vidéo au format DV (HDV même) et donc avec son petit port 1394...
Ouai c'est cool mais c'est pas du tout cool sous Window... la moindre application faisant correctement de la vidéo est payante, et encore ce sont des usines à gaz!

Guerre de choix s'offre donc à vous que d'avoir un bon vieux Mac (pas le cas pour moi et cela résous pas le problème du prix, oh non!) ou bien de pirater emprunter un soft à un ami pour finalement vous dire que ouai c'est vraiment une merde un casse tête pour travailler avec.

Bon, bah y a pas trop le choix et comme je le dis régulièrement on est jamais mieux servis que par soit même.

Donc la caméra c'était en août, le bilan pas très joyeux de l'existant c'était début septembre, le voyage au Canada (histoire de dire que l'achat en valait le coup) c'était fin septembre, donc le début du projet c'était fin septembre - début octobre.

Comme tout bon développement qui se commence, j'ai commencé par voir si cela n'était pas déjà en cours (cf le premier lien du billet). J'ai donc contacté Sonic qui a en premier tenté un port de la pile Linux (cf toujours le premier lien, décidément!). Malheureusement au vu du Firewire en 2006, abandonné par ses pères, il décida qu'il ne valait plus la peine (dixit Sonic, que j'ai eu par e-mail) de continuer. Fin de l'histoire.

Dommage pour les utilisateurs, cool pour moi (ouai enfin je me donne du taf de nuit en même temps...) je saute sur l'occasion et commence à réunir la documentation après avoir vérifié le chipset en place dans mes Peg1 et 2, un VIA VT6306 (ieee1394a-1995, 3 ports). Ce qui nous donne:

  • la norme IEEE1394a-1995, ainsi que son amendement de 2000 (utile pour certaines explications sur les paquets du type Self-ID et la ROM) ;
  • la norme OHCI1394 qui elle est une couche d'abstraction pour les concepteurs de chipset comme VIA et qui nous facilite les choses pour nous les concepteurs de drivers ;
  • le datasheet du VT6303, utile pour le format des paquets de la couche PHY.

En même temps que je me prend un gros mal de crâne à lire tout cela en même temps, je passe un peu de temps sur l'implémentation sous Linux histoire de voir si j'ai bien compris les docs tordues peu triviales du Firewire.
Et zou passage au code début octobre en commençant par utiliser les nouveaux includes du SDK de MorphOS 2.x dont certains fichiers pas encore publiques quand j'écris ces lignes par ailleurs (lib PCIX pour remplacer openpci par exemple).
D'ailleurs j'avais jamais attaqué le PCI sur MorphOS, c'est tout de même bien ce projet ;-)

Nous voilà donc aujourd'hui (début décembre) et qu'en est-il?
Et bien après plus de 2 semaines sur un bug des plus crétin subtile, inventé par votre crétin de subtile serviteur, je gère complètement la modification temps-réel de la topologie du bus (connections/déconnections des devices)et quasiment le mode asynchrone en envoi-réception. Il me reste à:

  • débuger le code de réception des acquittements des requêtes en transmission ;
  • gérer complètement et correctement les paquets de types 'lock' et 'phy' (toujours en asynchrone) ;
  • envoyer des paquets de réponses aux paquets de requêtes reçus ;
  • terminer le code de la couche 'device' qui sera vue par l'utilisateur et par où il pourra les contrôler ;
  • coder toute la partie isochrone, le mode le plus intéressant bien-sûr ;
  • faire un petit 1394raw.device pour déjà s'amuser avec.

Vous l'aurez compris (comment ça non ?!) cette pile ne s'occupe que du transport de données entre les nœuds sur le bus 1394, le contrôle sera donc laisser au soins de bibliothèques en xxxxxxx.device (genre dv1394.device ou bien sbp2.device et même avc1394.device).
Si tout cela marche bien j'espère pas moins que sont intégration officielle dans MorphOS 2.x (3.x?) à l'instar de son homologue USB: Poseidon.

Voilà, voilà pour les nouvelles ;-)

PS: Je me disais bien que j'avais oublié quelque chose d'important: cette pile n'est pas un port, mais bien un truc développé sur et pour MorphOS!