49 void SensorTrackCoasted(
double aSimTime,
WsfSensor* aSensorPtr,
const WsfTrack* aTrackPtr);
50 void SensorTrackDropped(
double aSimTime,
WsfSensor* aSensorPtr,
const WsfTrack* aTrackPtr);
54 void SensorTrackUpdated(
double aSimTime,
WsfSensor* aSensorPtr,
const WsfTrack* aTrackPtr);
56 void UpdateSensorCallbacks();
60 class UpdateSendEvent :
public WsfEvent
64 ~UpdateSendEvent()
override =
default;
65 EventDisposition Execute()
override;
69 using TrackIdSet = std::set<WsfTrackId>;
71 double mUpdateInterval;
74 WsfXIO_Subscription* mSubscriptionPtr;
75 WsfPlatform* mPlatformPtr;
76 WsfTrackManager* mTrackManagerPtr;
78 TrackIdSet mLocalUpdateSet;
79 TrackIdSet mLocalDropSet;
80 TrackIdSet mRawUpdateSet;
81 TrackIdSet mRawDropSet;
83 UtCallbackHolder mCallbacks;
88 class PlatformObserver :
public WsfXIO_Destination
91 PlatformObserver(WsfPlatform* aPlatformPtr);
94 WsfPlatform* mPlatformPtr;
95 WsfTrackManager* mTrackManagerPtr;
96 UtCallbackHolder mCallbacks;
99 class SensorObserver :
public WsfXIO_Destination
103 WsfSensor* mSensorPtr;
106 PlatformObserver* FindPlatformObserver(
int aPlatformIndex);
108 void HandleRequest(WsfXIO_RequestTracksPkt& aPkt);
109 void HandleExtendedTrackInfoRequest(WsfXIO_ExtendedTrackInfoRequestPkt& aPkt);
111 void SelectSensorTracks(WsfXIO_ExtendedTrackInfoPkt& aPkt,
112 const WsfTrackId& aOtherTrackId,
113 std::set<WsfTrackId>& aSelectedTrackIds,
114 std::set<WsfTrackId>& aSearchedTrackIds);
116 using PlatformObserverMap = std::map<int, PlatformObserver*>;
117 using SensorObserverMap = std::map<WsfSensor*, SensorObserver*>;
119 WsfSimulation& mSimulation;
120 UtCallbackHolder mCallbacks;
121 UtCallbackHolder mSensorCallbacks;
122 PlatformObserverMap mPlatformObservers;
123 SensorObserverMap mSensorObservers;
125 std::vector<UpdateSendEvent*> mUpdateSendEvents;