Hi all,
I am having problems collecting AI data for my TCAS display from SimConnect:
The ObjectAdded and ObjectRemoved work fine but the SIMCONNECT_RECV_ID_SIMOBJECT_DATA event is called a few times for the last aircraft added by FSX and then simply stops working.
I am probably missing something but I can't find what !
Any ideas anyone ?
Thx,
Björn
I am having problems collecting AI data for my TCAS display from SimConnect:
Code:
void CALLBACK MyDispatchProcMI(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext)
{
HRESULT hr;
DWORD dwData;
switch(pData->dwID)
{
////////////////////////////////////////////////
// AI Traffic
////////////////////////////////////////////////
case SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE:
{
SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE *evt = (SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE*)pData;
switch(evt->uEventID)
{
case EVENT_ADDED_AIRCRAFT:
if ( evt->eObjType == SIMCONNECT_SIMOBJECT_TYPE_AIRCRAFT )
{
hr = SimConnect_RequestDataOnSimObject(hSimConnect, REQUEST_AIAIRCRAFT_DATA, DEFINITION_AI,
evt->dwData, SIMCONNECT_PERIOD_SECOND, SIMCONNECT_DATA_REQUEST_FLAG_CHANGED );
AddTCASData(evt->dwData);
}
break;
case EVENT_REMOVED_AIRCRAFT:
if ( evt->eObjType == SIMCONNECT_SIMOBJECT_TYPE_AIRCRAFT )
{
hr = SimConnect_RequestDataOnSimObject(hSimConnect, REQUEST_AIAIRCRAFT_DATA, DEFINITION_AI,
evt->dwData, SIMCONNECT_PERIOD_NEVER, SIMCONNECT_DATA_REQUEST_FLAG_CHANGED );
RemoveTCASData(evt->dwData);
}
break;
}
break;
}
case SIMCONNECT_RECV_ID_SIMOBJECT_DATA:
{
SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE *pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE*)pData;
switch(pObjData->dwRequestID)
{
case REQUEST_AIAIRCRAFT_DATA:
{
DWORD ObjectID = pObjData->dwObjectID;
PositionData *pS = (PositionData*)&pObjData->dwData;
UpdateTCASData(ObjectID, *pS);
break;
}
default:
break;
}
break;
}
case SIMCONNECT_RECV_ID_QUIT:
{
SimConnectQuit = 1;
break;
}
default:
break;
}
}
void OpenSimConnect()
{
HRESULT hr;
if (SUCCEEDED(SimConnect_Open(&hSimConnect, "SimConnect", NULL, 0, 0, 0)))
{
hr = SimConnect_SubscribeToSystemEvent(hSimConnect, EVENT_ADDED_AIRCRAFT, "ObjectAdded");
hr = SimConnect_SubscribeToSystemEvent(hSimConnect, EVENT_REMOVED_AIRCRAFT, "ObjectRemoved");
SimConnect_CallDispatch(hSimConnect, MyDispatchProcMI, NULL);
}
}
The ObjectAdded and ObjectRemoved work fine but the SIMCONNECT_RECV_ID_SIMOBJECT_DATA event is called a few times for the last aircraft added by FSX and then simply stops working.
I am probably missing something but I can't find what !
Any ideas anyone ?
Thx,
Björn
Last edited:
