7 Commits

Author SHA1 Message Date
7c2cb387f2 PS_Win_BLE : fix crash shutdown + cache caractéristiques GATT
Crash shutdown (Index >= 0) :
- OnPreExit se déclenche encore trop tard (GC déjà en cours).
- Remplacé par OnEnginePreExit qui fire avant le shutdown des core
  modules, donc avant toute destruction d'UObject. RemoveFromRoot()
  est maintenant appelé au bon moment.

Cache caractéristiques GATT :
- Bug : Read/Write/Subscribe rappelaient GetCharacteristicsAsync(Cached)
  à chaque opération, ce qui peut retourner un ordre différent du
  discovery initial (Uncached) → mauvaise caractéristique ciblée.
- Fix : les GattCharacteristic sont maintenant stockées dans
  FPS_GattServiceHandle::Characteristics (std::vector) lors du
  ConnectDevice, et réutilisées directement via [CI] dans toutes
  les opérations ultérieures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 19:28:05 +01:00
d53dd36194 Fix crash shutdown + IMU BLE toujours actif pour tests
PS_Win_BLE : crash à la fermeture d'Unreal (assertion Index >= 0 dans
UObjectArray) car RemoveFromRoot() était appelé dans ShutdownModule()
alors que l'UObject array est déjà partiellement détruit. Fix : cleanup
du BLEManager déplacé dans un delegate FCoreDelegates::OnPreExit qui
s'exécute plus tôt, avant la destruction des UObjects.

uproject : désactivation explicite de WinBluetoothLE (les nœuds
Blueprint restaient dans le groupe Bluetooth Low Energy car le plugin
était chargé automatiquement depuis le dossier Plugins/).

Firmware : envoi IMU BLE découplé du debug mode pour pouvoir tester
la caractéristique 6E400002 à distance (TODO_TEST — remettre la
condition debugMode != DEBUG_OFF quand Pico Motion Tracker intégré).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 19:23:13 +01:00
0573cd9a57 PS_Win_BLE : catégories Blueprint → ASTERION|Win_BLE
Toutes les entrées Blueprint (UFUNCTION, UPROPERTY, UCLASS, USTRUCT, UENUM)
sont désormais rangées dans ASTERION|Win_BLE au lieu de "PS BLE".
64 occurrences mises à jour dans les 4 headers publics.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 16:54:35 +01:00
113eddef46 PS_Win_BLE : fix erreurs de compilation WinRT
- Suppression des 'using namespace Windows::*' au scope global
  (conflit avec le namespace Windows d'Unreal via AllowWindowsPlatformTypes)
- Remplacement par un macro PS_BLE_WINRT_NS avec aliases locaux
  (WinBT, WinAdv, WinGAP, WinStr) utilisés dans chaque fonction
- Ajout de FPS_BLEDeviceHandle et FPS_GattServiceHandle : wrappers
  heap-alloués pour les types WinRT qui suppriment operator new
- Suppression warning C4265 (dtor non-virtual interne aux headers WinRT)
- Plugin charge sans erreur dans UE 5.5

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 16:46:01 +01:00
d593bbd9fd Ajout plugin PS_Win_BLE : réécriture native WinRT sans DLL tierce
Remplace WinBluetoothLE (dépendant de BLEproto64.dll) par une
implémentation C++ native utilisant les APIs WinRT Windows.Devices.Bluetooth.

Structure :
- PS_Win_BLE.uplugin / PS_Win_BLE.Build.cs
- PS_BLETypes.h     : enums (EPS_GATTStatus, EPS_BLEError, EPS_CharacteristicDescriptor),
                      structs (FPS_MACAddress, FPS_ServiceItem, FPS_CharacteristicItem),
                      delegates (FPS_OnConnect, FPS_OnNotify, FPS_OnRead, etc.)
- PS_BLEModule      : startup WinRT, scan BLE (Live/Background), connect/disconnect,
                      Read/Write/Subscribe/Unsubscribe, dispatch GameThread
- PS_BLEDevice      : UObject par périphérique BLE, gestion handles WinRT natifs
- PS_BLEManager     : gestionnaire global, discovery, MAC utils
- PS_BLELibrary     : Blueprint function library (GetBLEManager, descriptors, etc.)
- Content/Sample    : assets Blueprint copiés depuis WinBluetoothLE

Préfixe PS_ sur tous les fichiers, classes, structs et enums.
Copyright (C) 2025 ASTERION VR

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 16:27:23 +01:00
1836e4e2b1 no message 2026-02-18 16:12:57 +01:00
00f44bf81b Initial Import 2026-02-18 09:17:57 +01:00