void AhrsInitHandles(void)
{
	int idx = 0;
//Note: the first item in this list has the highest priority
//the last has the lowest priority
	ADDHANDLE(idx++, AttitudeRaw);
	ADDHANDLE(idx++, AttitudeActual);
	ADDHANDLE(idx++, AHRSCalibration);
	ADDHANDLE(idx++, AhrsStatus);
	ADDHANDLE(idx++, BaroAltitude);
	ADDHANDLE(idx++, GPSPosition);
	ADDHANDLE(idx++, PositionActual);
	ADDHANDLE(idx++, VelocityActual);
	ADDHANDLE(idx++, HomeLocation);
	ADDHANDLE(idx++, AHRSSettings);
	if (idx != MAX_AHRS_OBJECTS) {
		PIOS_DEBUG_Assert(0);
	}
//Note: Only connect objects that the AHRS needs to read
//When the AHRS writes to these the data does a round trip
//AHRS->OP->AHRS due to these events
#ifndef IN_AHRS
	AHRSSettingsConnectCallback(ObjectUpdatedCb);
	BaroAltitudeConnectCallback(ObjectUpdatedCb);
	GPSPositionConnectCallback(ObjectUpdatedCb);
	HomeLocationConnectCallback(ObjectUpdatedCb);
	AHRSCalibrationConnectCallback(ObjectUpdatedCb);

#endif
}
void CLuaCallInHandler::AddHandle(CLuaHandle* lh)
{
	ListInsert(handles, lh);

#define ADDHANDLE(name) \
  if (lh->HasCallIn(#name)) { ListInsert(list ## name, lh); }
  
	ADDHANDLE(GamePreload);
	ADDHANDLE(GameStart);
	ADDHANDLE(GameOver);
	ADDHANDLE(TeamDied);

	ADDHANDLE(UnitCreated);
	ADDHANDLE(UnitFinished);
	ADDHANDLE(UnitFromFactory);
	ADDHANDLE(UnitDestroyed);
	ADDHANDLE(UnitTaken);
	ADDHANDLE(UnitGiven);

	ADDHANDLE(UnitIdle);
	ADDHANDLE(UnitCmdDone);
	ADDHANDLE(UnitDamaged);
	ADDHANDLE(UnitExperience);

	ADDHANDLE(UnitSeismicPing);
	ADDHANDLE(UnitEnteredRadar);
	ADDHANDLE(UnitEnteredLos);
	ADDHANDLE(UnitLeftRadar);
	ADDHANDLE(UnitLeftLos);

	ADDHANDLE(UnitLoaded);
	ADDHANDLE(UnitUnloaded);

	ADDHANDLE(UnitCloaked);
	ADDHANDLE(UnitDecloaked);

	ADDHANDLE(FeatureCreated);
	ADDHANDLE(FeatureDestroyed);

	ADDHANDLE(Explosion);

	ADDHANDLE(StockpileChanged);

	ADDHANDLE(Update);

	ADDHANDLE(DefaultCommand);

	ADDHANDLE(DrawGenesis);
	ADDHANDLE(DrawWorld);
	ADDHANDLE(DrawWorldPreUnit);
	ADDHANDLE(DrawWorldShadow);
	ADDHANDLE(DrawWorldReflection);
	ADDHANDLE(DrawWorldRefraction);
	ADDHANDLE(DrawScreenEffects);
	ADDHANDLE(DrawScreen);
	ADDHANDLE(DrawInMiniMap);
}