×

INDI Library v2.0.6 is Released (02 Feb 2024)

Bi-monthly release with minor bug fixes and improvements

Next dumb question - how does dome simulator get its az from Indi?

  • Posts: 9
  • Thank you received: 2
Just trying to suss out how Indi works. I'm looking through all the dome examples and drivers and reading the manual but I just can't seem to find the part where domes get their Az handed to them...

I thought it would be snoop since you have to tell a dome to snoop on a scope before it can track it but I can't find the snoop code in any of the domes so I guess that's not it. What am I missing?

Thanks!
4 years 11 months ago #37939

Please Log in or Create an account to join the conversation.

  • Posts: 472
  • Thank you received: 165
INDI Dome base class snoops the telescope coordinates and calculates the needed dome azimuth in GetTargetAz function which is then set to the dome via driver's MoveAbs function. The code is in Dome::UpdateAutoSync() in indidome.cpp.
The following user(s) said Thank You: Jasem Mutlaq, Pat
4 years 11 months ago #37946

Please Log in or Create an account to join the conversation.

  • Posts: 554
  • Thank you received: 138
The dome azimuth can be different to the mount azimuth because the mount may be offset from the centre of the dome and in the case of a German Equatorial mount (The one with the telescope and a counterweight on opposite sides) will vary depending on the pier side.

What happens is that the dome azimuth is calculated from the mount ra and Dec, pier side, time, location and mount position in the dome. This is all dome in the base dome implementation, which all dome drivers are based on, so you won't see it in the individual dome drivers.
The following user(s) said Thank You: Jasem Mutlaq
4 years 11 months ago #37947

Please Log in or Create an account to join the conversation.

  • Posts: 9
  • Thank you received: 2
Ah I think I'm catching on a little more now.

I knew that Indi calculated the dome azimuth based on the scope and dome geometries, I just can't figure out how that value was getting to the child dome driver. It's probably my unfamiliarity with real C++ (Only used the Arduino version).

I'm looking at dome::MoveAbs() in Indidome which I imagine is what tells the child to do but I'm not seeing anything that looks like it calls the child's MoveAbs() method or sets the az in it.
Last edit: 4 years 11 months ago by Pat.
4 years 11 months ago #37964

Please Log in or Create an account to join the conversation.

  • Posts: 9
  • Thank you received: 2
Ahha! The light comes on!

Indidome::MoveAbs() doesn't call the child MoveAbs() or pass the az along because its a virtual method that has been overridden by the child's MoveAbs().

Sorry. The name "virtual" seems completely inappropriate for what it does. Why didn't they use "Overridable" since that's what it really means and you even use "override" to specify you're overriding the virtual method?
The following user(s) said Thank You: Greg
Last edit: 4 years 11 months ago by Pat.
4 years 11 months ago #37965

Please Log in or Create an account to join the conversation.

  • Posts: 9
  • Thank you received: 2
What my base problem was is that I've never actually used inheritance to expand or modify a class so I my brain was stuck on thinking of the parent as a calling class and I was trying to find where it calls the dome driver. I knew about inheritance but it just wasn't reaching surface thoughts.
4 years 11 months ago #38005

Please Log in or Create an account to join the conversation.

Time to create page: 0.923 seconds