Auteur Sujet: Bibliothèque Accessoire regression BaseAccessoryLigh gestion Blink()  (Lu 91 fois)

golgoth1009

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Bonjour,
Déjà merci beaucoup pour cette librairie Accessory qui facilite grandement la gestion de mon réseau.
J'ai découvert une régression sur la bibliothèque >1.0 concernant la gestion du blink() dans BaseAccessoryLight::ActionEnded().
Sur les cases Light_On et Light_Off, il faut rajouter des tests sur les cas LIGHTBLINK pour rentrer dans le if et il faut aussi empêcher de changer le current_state si le temps n'est pas écoulé (rajouter un else if).
J'ai fait ces modifs et cela refonctionne.
Il est aussi intéressant de rajouter SetBLink(..) dans AccessoryLight (comme cela est fait dans AccessoryMultiLight).
Utiliser SetDuration ne fonctionne pas pour AccessoryLight (petite erreur dans la doc)


Thierry

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 297
    • Voir le profil
Re : Bibliothèque Accessoire regression BaseAccessoryLigh gestion Blink()
« Réponse #1 le: février 15, 2018, 11:42:35 am »
Merci pour les infos, je regarde ça demain soir pour publier une version qui marche ! Il y aura pour cette occasion aussi des mises à jour de DCCpp et de Commanders.

golgoth1009

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Re : Bibliothèque Accessoire regression BaseAccessoryLigh gestion Blink()
« Réponse #2 le: février 15, 2018, 07:34:16 pm »
Bonsoir Thierry,
je l'ai modifié comme ci-dessous et testé grâce à l'émulateur que tu as fait (encore merci!)
case LIGHT_ON:
if (this->state == LIGHTOFF || this->IsBlinking())
{
if (this->IsFading() || (this->IsBlinking() && millis() - this->startingMillis > this->blinkingDelay - FADING_FULL_DELAY))
{
this->currentState = LIGHT_DESCENDING;
this->startingMillis = millis();
this->LightFadingRaw(this->pPort->GetSpeed());
return false;
}
else if (!this->IsBlinking())
{
this->currentState = LIGHT_OFF;
this->pPort->MoveStop();
}
}
break;
case LIGHT_OFF:
if (this->state == LIGHTON || this->IsBlinking())
{
if (this->IsFading() || (this->IsBlinking() && millis() - this->startingMillis > this->blinkingDelay - FADING_FULL_DELAY))
{
this->currentState = LIGHT_ASCENDING;
this->startingMillis = millis();
this->LightFadingRaw(0);
return false;
}
else if (!this->IsBlinking())
{
this->currentState = LIGHT_ON;
this->pPort->MoveLeftDir();
}
}
break;
Je pense que tu n'as pas besoin de mon aide pour fixer ça mais au cas où ;-)

Thierry

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 297
    • Voir le profil
Re : Bibliothèque Accessoire regression BaseAccessoryLigh gestion Blink()
« Réponse #3 le: février 16, 2018, 06:21:07 pm »
Tu pourrais poster ici le .ino qui t'a servi à tester la modification ? Juste pour m'assurer si je ne reporte pas ta modif au caractère près que ça marche quand même...
« Modifié: février 16, 2018, 09:13:38 pm par Thierry »

golgoth1009

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Re : Bibliothèque Accessoire regression BaseAccessoryLigh gestion Blink()
« Réponse #4 le: février 16, 2018, 08:17:04 pm »
J'ai juste dupliqué le simpleLed.ino et rajouté l'appel au blink. (en fait j'ai testé un midi au taf et je n'ai pas le test à la maison)
Ensuite dans le loop(), sans la modif, le changement d'état ne se fait pas.
Avec la modif, dans l'interface, on voit le changement d'état HIGH/LOW qui s'effectue périodiquement.

Thierry

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 297
    • Voir le profil
Re : Bibliothèque Accessoire regression BaseAccessoryLigh gestion Blink()
« Réponse #5 le: février 16, 2018, 09:13:46 pm »
Si tu pouvais aussi préciser pour la doc, parce que je ne vois pas...

golgoth1009

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Re : Bibliothèque Accessoire regression BaseAccessoryLigh gestion Blink()
« Réponse #6 le: février 16, 2018, 10:14:43 pm »
ah oui pardon,
au niveau de la doc, tu indique que le SetDuration() dans Accessory.hpp est utilisé pour le temps du Blink.
Mais, en fait, AccessoryLight, le temps de blink ne peut plus être modifié après le begin().
Il faudrait soit surcharger SetDuration() au niveau de AccessoryLight pour aussi appeller SetBlinking() de AccessoryBaseLight() (et la doc devient ok ;-))
soir créer une méthode SetBlinking au niveau de AccessoryLight (ce que tu as fait pour AccessoryMultiLight).

golgoth1009

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Re : Bibliothèque Accessoire regression BaseAccessoryLigh gestion Blink()
« Réponse #7 le: Aujourd'hui à 10:47:51 pm »
Bonsoir Thierry,
Je m'aperçois que ma proposition ne restaure le fonctionnement du blink uniquement si le fading n'est pas activé.
Si le fading est activé, le blink fonctionne mais dure le temps du fading (à cause du test isfading dans la condition).
Sur ce, bonne nuit !