tiens, je relisais le code de l'entrée IR du DSPiy publié plus haut. J'aurai du lire bien en détail la première fois, j'aurai gagné du temps
Code : Tout sélectionner
if(D01_IR_CODE==1)if(IRcode==laction){laction=0xff;return 1;}//return si même action 2 fois de suite pour sony12bits
laction=IRcode;
if(nwaitcode){nwaitcode--; return 1;}
Cette particuliarité "doublon Sony" explique bien des choses !
En outre, pourquoi je n'arrivais plus a rien en envoyant deux fois de suite Vol+ ou Vol- pour sauter les volumes décimaux alors que ça marchait tres bien en Nec.
envoi successifs de monCode sony (D01_NWAITCODE est configuré à 1)
je suppose que hors de la fonction, nwaitcode est mis à 0 au départ. sinon nwait a la valeur mise précédemment.
1er envoi:
accepté car monCode != laction et nwaitcode=0 ou
refusé si nwaitcode avait été mis a 1 (SBY ou MUTE)
si accepté : nwait
devient -1 reste a 0 ; laction devient monCode ; plus loin loin nwait est mis à 1 pour les codes mute, standby.
si refusé pour cause de doublon (toggle mute/unmute) nwaitcode reste inchangé à 1.
si refusé pour cause de nwait >0 (cas du ON), nwait décrémenté devient 0.
2eme : refusé car doublon sony. nwait inchangé et laction devient FF
3eme: accepté si nwait est =0 (cas du ON) soit refusé si nwait =1 (cas du MUTE). nwait décrémenté et devient 0.
4eme : refusé car doublon si accepté au coup d'avant ou accepté sinon.
Ensuite, un sur deux est accepté
explique ce que je trouvais empiriquement : faut envoyer 4 fois unmute apres un mute puisque c'est la meme touche bascule et que nwait est initialisé a 1 lors du MUTE
Explique aussi pourquoi 3x ON quand il est en sby puisque nwait est initialisé à 1 lors de la mise en SBY et ce n'est pas le meme code pour ON et SBY dans la configuration.
Une plaie ce "doublon sony". Ca doit bien perturber l'appui long sur Vol+/Vol-.
Peut etre essayer d'envoyer un code intermédiaire qui n'existe pas pour le tromper.
edit: correction dans la compréhension du déroulement du code