22. Mise à jour du firmware
YFirmwareUpdate
fw_update
....
int
status
= fw_update.startUpdate();
while
(status
<
100
int
newstatus
= fw_update.get_progress();
if
(newstatus
!= status) {
Console.WriteLine(status
+ fw_update.get_progressMessage());
}
YAPI.Sleep(500,
status
= newstatus;
}
if
(status
< 0) {
Console.WriteLine("Firmware Update failed: "
+ fw_update.get_progressMessage());
} else {
Console.WriteLine("Firmware Updated
}
Particularité d'Android
Il est possible de mettre à jour un firmware d'un module en utilisant la librairie Android. Mais pour les
modules branchés en USB, Android va demander à l'utilisateur d'autoriser l'application à accéder au
port USB.
Pendant la mise à jour du firmware, le module redémarre plusieurs fois. Android interprète le reboot
d'un périphérique USB comme une déconnexion et reconnexion du port USB, et interdit tout accès
USB tant que l'utilisateur n'a pas fermé le pop-up. L'utilisateur est obligé de cliquer sur OK pour que
la procédure de mise à jour puisse continuer correctement. Il n'est pas possible de mettre à jour
un module branché en USB à un appareil Android sans que l'utilisateur ne soit obligé
d'interagir avec l'appareil.
22.5. Le mode "mise à jour"
Si vous désirez effacer tous les paramètres du module ou que votre module ne démarre plus
correctement, il est possible d'installer un firmware depuis le mode "mise à jour".
Pour forcer le module à fonctionner dans le mode "mis à jour", débranchez-le, attendez quelques
secondes, et rebranchez-le en maintenant le Yocto-Bouton appuyé. Cela a pour effet de faire
démarrer le module en mode "mise à jour". Ce mode de fonctionnement est protégé contre les
corruptions et est toujours accessible.
Dans ce mode, le module n'est plus détecté par les objets YModules. Pour obtenir la liste des
modules connectés en mode "mise à jour", il faut utiliser la fonction
. Cette fonction retourne un tableau de chaînes de caractères avec le numéro de série des
()
modules en le mode "mise à jour".
List<string>
allBootLoader
La procédure de mise à jour est identique au cas standard (voir section précédente), mais il faut
instancier
manuellement
module.updateFirmware()
de série du module, le path du firmware à installer, et un tableau de bytes avec les paramètres à
restaurer à la fin de la mise à jour (ou
YFirmwareUpdateupdate
fw_update
= new
YFirmwareUpdate(allBootLoader[0], newfirm,
int
status
= fw_update.startUpdate();
.....
162
= m.updateFirmware(newfirm);
&&
status
>= 0) {
+
"% "
ref errmsg);
Successfully!");
= YAPI.GetAllBootLoaders();
l'objet
. Le constructeur prend en argument trois paramètres: le numéro
null
fw_update;
YFirmwareUpdate
pour restaurer les paramètres d'origine).
null);
YAPI.GetAllBootLoaders
au
lieu
www.yoctopuce.com
d'appeler