Une attente sans fin ne dit rien : échéances sur les appels du SDK
L'envoi tournait sans jamais rendre la main, ni message ni erreur. Cause : les `async` du SDK Polar n'ont aucune limite de temps, et `waitPsFtpReady` attend indéfiniment une montre qui ne finit pas sa négociation — canal déjà pris, écran éteint, appairage en cours. Une attente sans fin est pire qu'un échec : elle n'apprend rien, et c'est exactement ce qu'on cherche à éviter depuis ce matin. `waitPsFtpReady` a désormais 12 s, chaque écriture 20 s, et un dépassement compte comme une montre muette — c'est ce qu'elle est. Le message dit quoi faire : réveiller l'écran, rapprocher, fermer Flow. Le fait qu'on soit arrivé jusqu'à ce blocage est en soi une information : avant le réveil du manager lazy, on n'atteignait même pas la phase de connexion. 82 tests au vert sur tests-linux. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -109,6 +109,8 @@ public enum PolarPftpError: Error, CustomStringConvertible, Equatable {
|
||||
/// Le SDK n'a remonté aucune session, mais CoreBluetooth, interrogé
|
||||
/// directement, a vu `vusParCoreBluetooth` appareils. Deux diagnostics
|
||||
/// opposés selon ce nombre.
|
||||
/// Une opération du SDK n'a pas rendu la main dans le délai imparti.
|
||||
case echeanceDepassee(Double)
|
||||
case sdkSilencieux(vusParCoreBluetooth: Int,
|
||||
publisherAParle: Bool = true,
|
||||
erreurSdk: String? = nil)
|
||||
@@ -125,6 +127,12 @@ public enum PolarPftpError: Error, CustomStringConvertible, Equatable {
|
||||
case .bluetoothUnusable(let why):
|
||||
return why
|
||||
|
||||
case .echeanceDepassee(let seconds):
|
||||
return "la montre n'a pas répondu en \(Int(seconds)) s. Réveiller son "
|
||||
+ "écran et la rapprocher de l'iPhone ; vérifier que Polar Flow "
|
||||
+ "est bien fermée."
|
||||
|
||||
|
||||
case .sdkSilencieux(_, false, _):
|
||||
// Le publisher n'a JAMAIS rien émis : `search()` s'arrête sur
|
||||
// `monitorBleState().filter { $0 == .poweredOn }`. Le scan n'a donc
|
||||
|
||||
Reference in New Issue
Block a user