Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Config/ProjectApollo/SaturnSystems.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -1240,6 +1240,7 @@
HYDRAULIC:FUELCELLRADIATOR8 150.0
</COOLING>

# Ext Lighting
<LIGHT> SPOTLIGHT DC_DUMMY 0 0.0 0.0 <-1.439 1.390 0.920> <0.0045 -0.0046 0.9999> 5000.0 0.0 0.0 0.0015 0.174533 0.5 <1.0 0.945 0.878 0.0> <1.0 0.945 0.878 0.0> <0.0 0.0 0.0 0.0> 100.0 115.0
<LIGHT> RNDZLIGHT DC_DUMMY 1 0.02 0.98 <-0.490 -1.975 0.920> <0.0 -0.866 0.5> 5000.0 0.0 0.0 0.0015 2.094 3.142 <1.0 1.0 0.950 0.0> <1.0 1.0 0.950 0.0> <0.0 0.0 0.0 0.0> 10.0 28.0

Expand Down
50 changes: 50 additions & 0 deletions Orbitersdk/samples/ProjectApollo/src_csm/eps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -198,4 +198,54 @@ void CryoPressureSwitch::SaveState(FILEHANDLE scn, char *name_str)

sprintf(buffer, "%d %d", PressureSwitch1, PressureSwitch2);
oapiWriteScenario_string(scn, name_str, buffer);
}

ExteriorLighting::ExteriorLighting()
{
saturn = NULL;
SpotDeployed = false;
EVALtDeployed = false;
}

ExteriorLighting::~ExteriorLighting()
{

}

void ExteriorLighting::Init(Saturn *s, CircuitBrakerSwitch *MNB, ThreeSourceTwoDestSwitch *RDZSPOT)
{
saturn = s;
RNDZSPOTMNBcb = MNB;
RDZSPOTsw = RDZSPOT;
}

void ExteriorLighting::SystemTimestep(double simdt)
{
if (!saturn->LETAttached())
{
EVALtDeployed = true;
}

if (RDZSPOTsw->IsDown() && RNDZSPOTMNBcb->IsPowered())
{
SpotDeployed = true;
}
}

void ExteriorLighting::LoadState(char *line, int strlen)
{
int i, j;

sscanf(line + strlen + 1, "%i %i", &i, &j);

SpotDeployed = (i != 0);
EVALtDeployed = (j != 0);
}

void ExteriorLighting::SaveState(FILEHANDLE scn, char *name_str)
{
char buffer[100];

sprintf(buffer, "%d %d", SpotDeployed, EVALtDeployed);
oapiWriteScenario_string(scn, name_str, buffer);
}
20 changes: 20 additions & 0 deletions Orbitersdk/samples/ProjectApollo/src_csm/eps.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,24 @@ class CryoPressureSwitch
bool PressureSwitch2;
double lowpress;
double highpress;
};


/// This class simulates exterior lighting behavior in the CSM
class ExteriorLighting
{
public:
ExteriorLighting();
virtual ~ExteriorLighting();
void Init(Saturn *s, CircuitBrakerSwitch *MNB, ThreeSourceTwoDestSwitch *RDZSPOT);
void SystemTimestep(double simdt);
void SaveState(FILEHANDLE scn, char *name_str);
void LoadState(char *line, int strlen);

protected:
Saturn *saturn;
CircuitBrakerSwitch *RNDZSPOTMNBcb;
ThreeSourceTwoDestSwitch *RDZSPOTsw;
bool SpotDeployed;
bool EVALtDeployed;
};
5 changes: 4 additions & 1 deletion Orbitersdk/samples/ProjectApollo/src_csm/satsystems.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,14 @@ void Saturn::SystemsInit() {
FuelCellN2Blanket[2] = (h_Tank *)Panelsdk.GetPointerByString("HYDRAULIC:N2FUELCELL3BLANKET");

//
// Electric Lights
// Exterior Lights
//

SpotLight = (ElectricLight *)Panelsdk.GetPointerByString("ELECTRIC:SPOTLIGHT");
RndzLight = (ElectricLight *)Panelsdk.GetPointerByString("ELECTRIC:RNDZLIGHT");

ExteriorLighting.Init(this, &LightingRndzMNBCB, &RndzLightSwitch);

//
// EPS/Cryo devices
//
Expand Down Expand Up @@ -1862,6 +1864,7 @@ void Saturn::SystemsInternalTimestep(double simdt)
EventTimer306Display.SystemTimestep(tFactor);
H2CryoPressureSwitch.SystemTimestep(tFactor);
O2CryoPressureSwitch.SystemTimestep(tFactor);
ExteriorLighting.SystemTimestep(tFactor);

simdt -= tFactor;
tFactor = __min(mintFactor, simdt);
Expand Down
7 changes: 5 additions & 2 deletions Orbitersdk/samples/ProjectApollo/src_csm/saturn.h
Original file line number Diff line number Diff line change
Expand Up @@ -1902,9 +1902,9 @@ class Saturn: public ProjectApolloConnectorVessel, public PanelSwitchListener {
ThreePosSwitch TVCGimbalDriveYawSwitch;

SwitchRow CSMLightSwitchesRow;
ToggleSwitch RunEVALightSwitch;
TwoSourceSwitch RunEVALightSwitch;
ThreeSourceTwoDestSwitch RndzLightSwitch;
ToggleSwitch TunnelLightSwitch;
TwoSourceSwitch TunnelLightSwitch;

SwitchRow LMPowerSwitchRow;
CSMLMPowerSwitch LMPowerSwitch;
Expand Down Expand Up @@ -3835,6 +3835,9 @@ class Saturn: public ProjectApolloConnectorVessel, public PanelSwitchListener {
ThreePhasePowerMerge SuitCompressor1Feeder;
ThreePhasePowerMerge SuitCompressor2Feeder;

// Exterior Lighting
ExteriorLighting ExteriorLighting;

// GSE
Pump* GSEGlycolPump;
h_Radiator* GSERadiator;
Expand Down
6 changes: 3 additions & 3 deletions Orbitersdk/samples/ProjectApollo/src_csm/saturnpanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1860,9 +1860,9 @@ void Saturn::SetSwitches(int panel) {
TVCGimbalDriveYawSwitch.Init (43, 0, 34, 29, srf[SRF_THREEPOSSWITCH], srf[SRF_BORDER_34x29], TVCGimbalDriveSwitchesRow);

CSMLightSwitchesRow.Init(AID_CSMLIGHTSWITCHES, MainPanel);
RunEVALightSwitch.Init( 0, 0, 34, 29, srf[SRF_SWITCHUP], srf[SRF_BORDER_34x29], CSMLightSwitchesRow);
RndzLightSwitch.Init( 57, 0, 34, 29, srf[SRF_THREEPOSSWITCH], srf[SRF_BORDER_34x29], CSMLightSwitchesRow, &RunEVATRGTAC2CB, NULL, &LightingRndzMNACB, RndzLight, SpotLight);
TunnelLightSwitch.Init(111, 0, 34, 29, srf[SRF_SWITCHUP], srf[SRF_BORDER_34x29], CSMLightSwitchesRow);
RunEVALightSwitch.Init(0, 0, 34, 29, srf[SRF_SWITCHUP], srf[SRF_BORDER_34x29], CSMLightSwitchesRow, &RunEVATRGTAC1CB, &RunEVATRGTAC2CB);
RndzLightSwitch.Init(57, 0, 34, 29, srf[SRF_THREEPOSSWITCH], srf[SRF_BORDER_34x29], CSMLightSwitchesRow, &RunEVATRGTAC2CB, NULL, &LightingRndzMNACB, RndzLight, SpotLight);
TunnelLightSwitch.Init(111, 0, 34, 29, srf[SRF_SWITCHUP], srf[SRF_BORDER_34x29], CSMLightSwitchesRow, &LightingRndzMNACB, &LightingRndzMNBCB);

LMPowerSwitchRow.Init(AID_LMPOWERSWITCH, MainPanel);
LMPowerSwitch.Init( 0, 0, 34, 29, srf[SRF_THREEPOSSWITCH], srf[SRF_BORDER_34x29], LMPowerSwitchRow, this);
Expand Down