RCS and DAP development

Getting these LNK2019 errors when trying to compile the latest sources:

1> Creating library .\..\..\Modules/MG_Atlantis.lib and object .\..\..\Modules/MG_Atlantis.exp
1>Atlantis.obj : error LNK2019: unresolved external symbol "public: __thiscall vc::DAPControl::DAPControl(class Atlantis *)" (??0DAPControl@vc@@QAE@PAVAtlantis@@@Z) referenced in function "public: __thiscall Atlantis::Atlantis(void *,int)" (??0Atlantis@@QAE@PAXH@Z)
1>PanelC3.obj : error LNK2019: unresolved external symbol "public: bool __thiscall vc::DAPControl::VCMouseEvent(int,int,union VECTOR3 const &)" (?VCMouseEvent@DAPControl@vc@@QAE_NHHABTVECTOR3@@@Z) referenced in function "public: bool __thiscall PanelC3::VCMouseEvent(int,int,union VECTOR3 &)" (?VCMouseEvent@PanelC3@@QAE_NHHAATVECTOR3@@@Z)
1>..\..\Modules\MG_Atlantis.dll : fatal error LNK1120: 2 unresolved externals
1>Build log was saved at "file://c:\Orbiter_SSU\Orbitersdk\Space Shuttle Ultra\Release\BuildLog.htm"
1>Atlantis - 3 error(s), 58 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
 
Have you added the DAPControl files to the project? I forgot to mention that I added these two files.
 
Have you added the DAPControl files to the project? I forgot to mention that I added these two files.
No such files to add. Maybe you forgot to check them in?
 
They should be in the VC folder.
There they were! Added them and now it compiles nicely.

BTW, the DAP lights on the C3 DAP doesn't work. Responds to mouse-clicks though.
 
At the moment the pushbuttons display a debug string message and that's it. I'm working on adding functionality to them.


-----Posted Added-----


I'm planning to use 'dummy thrusters' to get thruster commands and use these to fire the real RCS thrusters. This will have the side effect of preventing any other autopilots from controlling the shuttle.

How should the RHC softstop be handled? In real life, moving the RHC past the softstop causes continuous RCS firings, whereas if the RHC is moved up to the softstop the thrusters will fire to match the mode selected on the DAP. I think the best way of simulating this is to treat a thruster command of less than 75% as moving the RHC within the softstop and a thruster command greater than 75% as outside the softstop.

Any comments?
 
Last edited:
I've checked in the new RCS handling code. For RCS commands of less than 75%, the DAP will use the DISC RATE rotation mode, otherwise, the thrusters will fire continuously. When the RHC is released, the DAP will hold the inertial attitude. At the moment, it will maintain the attitude when the RHC was released; I'm not sure if it should do this or simply null the rotation rates.

The RCS sounds don't quite work properly, due to the use of dummy thrusters. Also, the PULSE mode is not simulated yet.
 
A bunch of errors:

1>.\GPC.cpp(758) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(758) : error C2228: left of '.x' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(758) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(758) : error C2228: left of '.y' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(758) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(758) : error C2228: left of '.z' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(764) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(764) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(765) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(765) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(768) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(768) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(769) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(769) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(773) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(773) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(774) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(774) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(777) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(777) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(778) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(778) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(782) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(782) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(783) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(783) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(786) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(786) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\GPC.cpp(787) : error C2065: 'RHCInput' : undeclared identifier
1>.\GPC.cpp(787) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''

1>.\Atlantis.cpp(730) : error C2065: 'RHCInput' : undeclared identifier
1>.\Atlantis.cpp(730) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\Atlantis.cpp(731) : error C2065: 'THCInput' : undeclared identifier
1>.\Atlantis.cpp(731) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\Atlantis.cpp(4760) : warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
1>.\Atlantis.cpp(5063) : error C2065: 'RHCInput' : undeclared identifier
1>.\Atlantis.cpp(5063) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\Atlantis.cpp(5064) : error C2065: 'RHCInput' : undeclared identifier
1>.\Atlantis.cpp(5064) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\Atlantis.cpp(5065) : error C2065: 'RHCInput' : undeclared identifier
1>.\Atlantis.cpp(5065) : error C2228: left of '.data' must have class/struct/union
1> type is ''unknown-type''
1>.\Atlantis.cpp(5066) : error C2065: 'RHCInput' : undeclared identifier
1>.\Atlantis.cpp(5066) : error C2228: left of '.x' must have class/struct/union
1> type is ''unknown-type''
1>.\Atlantis.cpp(5066) : error C2065: 'RHCInput' : undeclared identifier
1>.\Atlantis.cpp(5066) : error C2228: left of '.y' must have class/struct/union
1> type is ''unknown-type''
1>.\Atlantis.cpp(5066) : error C2065: 'RHCInput' : undeclared identifier
1>.\Atlantis.cpp(5066) : error C2228: left of '.z' must have class/struct/union
1> type is ''unknown-type''
1>Generating Code...
1>Build log was saved at "file://c:\Orbiter_SSU\Orbitersdk\Space Shuttle Ultra\Release\BuildLog.htm"
1>Atlantis - 46 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
 
Compiles, but attitude controls is totally dead. No keyboard inputs or joystick inputs.
 
The 'Atlantis Cockpit' scenario should work now. I had to add a new propellant tank for the fake thrusters and forgot to update the scenario files.
 
The 'Atlantis Cockpit' scenario should work now. I had to add a new propellant tank for the fake thrusters and forgot to update the scenario files.
Works now.
 
Checked an updated C3.dds with corrected DAP panel. Now matches today's Orbit DAP panel. I hope Donamy doesn't mind.
 
Not at all !!
 
Not at all !!
Then I'll just update the A6U DAP panel and check it in.


-----Posted Added-----


And that has been done. Also issued an updated C3 DAP panel as I had forgot to add the DISC RATE buttons.
 
I've checked in the new RCS handling code. For RCS commands of less than 75%, the DAP will use the DISC RATE rotation mode, otherwise, the thrusters will fire continuously. When the RHC is released, the DAP will hold the inertial attitude. At the moment, it will maintain the attitude when the RHC was released; I'm not sure if it should do this or simply null the rotation rates.
I would expect the DAP to just null the rates upon releasing the RHC. But then I know nothing of how the real thing operates, that is just my opinion.

BTW, I like your "soft-stop" solution. Minor issue, but can you get a DISC RATE using the keyboard, ie, numpad keys by themselves give you continuous firing but CTRL-numpad keys give you DISC RATE?
 
CTRL+numpad keys fire the thrusters at 10%, so this would give you DISC RATE. The numpad keys alone will provide continuous thruster firing.
 
DaveS,

I can give you the .psd files, for any panel you want to change, if that helps.
 
Back
Top