// *****************************************************************************
// * Config_SIOC ver 3.5   -     By Manolo Vlez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : KaTZe_02-01.txt
// * Date : 16/05/2009



Var 0000, name LOCKONVAL     // Valeur pour LOCKONCMD 

Var 0001, name LOCKONCMD     // Commandes LOCKON
{
  &LOCKONCMD = 0    
}

Var 0002, name SPECIALCMD     // Commandes spciales
{
  &SPECIALCMD = 0    
}

Var 0003, name SIOCKEYS     // Emulateur clavier SIOC
{
  &SIOCKEYS = 0    
}

Var 0004, name LOSIOCCMD     // Commandes LOSIOCTools
{
  &LOSIOCCMD = 0    
}

Var 0005, name LOCKONINIT     // Initialisation variable SIOC
{
  &Jett_Tank = 1    
}

Var 0010, name MTime     // Chrono de la mission
{
  &Time5s = MOD &MTime ,5
  &Now_Tot = &MTime + &MStart
}

Var 0011, name MStart     // Heure de dbut de la mission

Var 0023, name TAS     // TAS en cm/s
{
  &TAS_mps = &TAS * 0.01     // Calcul de la TAS en m/sec
  &TAS_mpmn = &TAS * 0.6     // Calcul de la TAS en m/mn
}

Var 0024, name QNH     // Altitude QNH en cm (Mer)

Var 0029, name Mach_nbr     // Mach Nbr (*10)

Var 0041, name L_rpm     // rpm moteur gauche

Var 0042, name R_rpm     // rpm moteur droit 

Var 0047, name Fuel_I     // Fuel internal (Deca-gramme = Unit Koko 
{
  &Fuel_T = &Fuel_I + &Fuel_E     // Calcul de la quantit de Kro total (UK)
  CALL &Refuel_Sub, &Fuel_I     // SUBRUTINE Refuel control
}

Var 0048, name Fuel_E     // Fuel external (Deca-gramme)
{
  &Fuel_T = &Fuel_I + &Fuel_E     // Calcul de la quantit de Kro total (UK)
}

Var 0050, name Terrain_X    // Position X du terrain selectionn
{
	CALL &Ter_Num, &Terrain_X
}

Var 0055, name WP_Distance     // Distance du WP selectionn (cm)

Var 0064, name ResMode     // Test byte input
{
  CALL &ResM, &ResMode
}

Var 0071, name MCPState     // Panel Alarme subroutine exploration
{
  CALL &MCPS, &MCPState
}

Var 0182, name CurrentWeapon    // Arme Selectionne
{
CALL &W_Type_sub, &WeaponType
}

Var 0183, name WeaponType       // Type d'arme

Var 0191, name PanelWeapon     // Panel Weapon Status subroutine
{
  CALL &WeaponStatus, &PanelWeapon
}


//
// Modification , Conversion des variables LockON ----------------------------------------------------
//


Var 0200, name Now_hr

Var 0201, name Now_mn

Var 0202, name Now_sec

Var 0203, name Now_mnsec

Var 0210, name Now_Tot     // Heure Actuelle en Seconde, incrmente t
{
  &Now_hr = &Now_Tot / 3600     // Heure actuelle
  &Now_mnsec = MOD &Now_Tot ,3600
  &Now_mn = &Now_mnsec / 60     // Minute actuelle
  &Now_sec = MOD &Now_Tot ,60     // Seconde actuelle
  CALL &WP_Comput, &WP_Distance
}

Var 0220, name Time5s     // Temps modulus 5 secondes
{
  IF &Time5s = 0     // Calculs consommation effectus toutes le
  {
    CALL &TankOS_Sub, &Pylon04     // SUBRUTINE de Check Overspeed
    CALL &Conso_Sub, &Fuel_T     // SUBRUTINE de calcul de Consommation
    CALL &Autonom_sub, &Fuel_T     // SUBRUTINE de calcul d'Autonomie
  }
}

Var 0223, name TAS_mpmn     // TAS en m/mn

Var 0224, name TAS_mps     // TAS en m/s


//
// Module Terrain ----------------------------------------------------------------------------------------
//

Var 0250, name Ter_Num, Link SUBRUTINE     // Numero du terrain selectionn
{
	If &Terrain_X = -7937656 
	{
	&Ter_Num = 1
	}
	If &Terrain_X = -7051329 
	{
	&Ter_Num = 1
	}
	If &Terrain_X = -1754610
	{
	&Ter_Num = 2
	}
	If &Terrain_X = -1118214
	{
	&Ter_Num = 2
	}
	If &Terrain_X = -2969512
	{
	&Ter_Num = 3
	}
	If &Terrain_X = -2080590
	{
	&Ter_Num = 3
	}
	If &Terrain_X = 4975507
	{
	&Ter_Num = 4
	}
	If &Terrain_X = 5875507
	{
	&Ter_Num = 4
	}
	If &Terrain_X = 5159991
	{
	&Ter_Num = 5
	}
	If &Terrain_X = 5744492
	{
	&Ter_Num = 5
	}
	If &Terrain_X = 1003702
	{
	&Ter_Num = 6
	}
	If &Terrain_X = 785991
	{
	&Ter_Num = 6
	}
	If &Terrain_X = 2259960
	{
	&Ter_Num = 7
	}
	If &Terrain_X = 2885153
	{
	&Ter_Num = 7
	}
	If &Terrain_X = -5496775
	{
	&Ter_Num = 8
	}
	If &Terrain_X = -5203760
	{
	&Ter_Num = 8
	}
	If &Terrain_X = 3862364
	{
	&Ter_Num = 9
	}
	If &Terrain_X = 4446868
	{
	&Ter_Num = 9
	}
	If &Terrain_X = 1265645
	{
	&Ter_Num = 10
	}
	If &Terrain_X = 1742572
	{
	&Ter_Num = 10
	}
	If &Terrain_X = -1963697
	{
	&Ter_Num = 11
	}
	If &Terrain_X = -1086765
	{
	&Ter_Num = 11
	}
	If &Terrain_X = -1889207
	{
	&Ter_Num = 12
	}
	If &Terrain_X = -1215149
	{
	&Ter_Num = 12
	}
	If &Terrain_X = 1262619
	{
	&Ter_Num = 13
	}
	If &Terrain_X = 1215569
	{
	&Ter_Num = 13
	}
	If &Terrain_X = -5429721
	{
	&Ter_Num = 14
	}
	If &Terrain_X = -4760892
	{
	&Ter_Num = 14
	}
	If &Terrain_X = 730174
	{
	&Ter_Num = 15
	}
	If &Terrain_X = 35910
	{
	&Ter_Num = 15
	}
	If &Terrain_X = -1245388
	{
	&Ter_Num = 16
	}
	If &Terrain_X = -1944822
	{
	&Ter_Num = 16
	}
	If &Terrain_X = -6418658
	{
	&Ter_Num = 17
	}
	If &Terrain_X = -5729214
	{
	&Ter_Num = 17
	}
	If &Terrain_X = -17293137
	{
	&Ter_Num = 18
	}
	If &Terrain_X = -16870685
	{
	&Ter_Num = 18
	}
	If &Terrain_X = -456659
	{
	&Ter_Num = 19
	}
	If &Terrain_X = 157079
	{
	&Ter_Num = 19
	}
	If &Terrain_X = -22842953
	{
	&Ter_Num = 20
	}
	If &Terrain_X = -22448371
	{
	&Ter_Num = 20
	}
	If &Terrain_X = -21246093
	{
	&Ter_Num = 21
	}
	If &Terrain_X = -20458910
	{
	&Ter_Num = 21
	}
}


//
// Module d'armement ----------------------------------------------------------------------------------------
//



Var 0260, name WeaponStatus, Link SUBRUTINE    // Status du Payload
{
&Pylon01 = TESTBIT &panelWeapon ,0 // Pilon 1
&Pylon02 = TESTBIT &panelWeapon ,2 // Pilon 2
&Pylon03 = TESTBIT &panelWeapon ,4 // Pilon 3
&Pylon04 = TESTBIT &panelWeapon ,6 // Pilon 4
&Pylon05 = TESTBIT &panelWeapon ,5 // Pilon 5
&Pylon06 = TESTBIT &panelWeapon ,3 // Pilon 6
&Pylon07 = TESTBIT &panelWeapon ,1 // Pilon 7
// &Pylon08 = TESTBIT &panelWeapon ,7 // Pilon 8
// &Pylon09 = TESTBIT &panelWeapon ,5 // Pilon 9
// &Pylon10 = TESTBIT &panelWeapon ,3 // Pilon 10
// &Pylon11 = TESTBIT &panelWeapon ,1 // Pilon 11
}

Var 0261, name Pylon01
Var 0262, name Pylon02
Var 0263, name Pylon03
Var 0264, name Pylon04
Var 0265, name Pylon05
Var 0266, name Pylon06
Var 0267, name Pylon07
// Var 0268, name Pylon08
// Var 0269, name Pylon09
// Var 0270, name Pylon10
// Var 0271, name Pylon11
// Var 0272, name Pylon12

Var 0280, name W_Type_sub, Link SUBRUTINE  // Type de Weapon
{
	IF &CurrentWeapon = 1     // Valeur  prciser (selection de pylone)
	{
	&P1Type = &WeaponType
	}
	IF &CurrentWeapon = 2
	{
	&P2Type = &WeaponType
	}
	IF &CurrentWeapon = 3
	{
	&P3Type = &WeaponType
	}
	IF &CurrentWeapon = 4
	{
	&P4Type = &WeaponType
	}
	IF &CurrentWeapon = 5
	{
	&P5Type = &WeaponType
	}
	IF &CurrentWeapon = 6
	{
	&P6Type = &WeaponType
	}
	IF &CurrentWeapon = 7
	{
	&P7Type = &WeaponType
	}
}

Var 0281, name P1Type
Var 0282, name P2Type
Var 0283, name P3Type
Var 0284, name P4Type
Var 0285, name P5Type
Var 0286, name P6Type
Var 0287, name P7Type



//
// Module de Navigation ----------------------------------------------------------------------------------------
//



Var 0300, name WP_Comput, Link SUBRUTINE     // Calcul de Route toute les secondes
{
  &Time2_WP = &WP_Distance / &TAS_mps     // Trajet vers le WP en secondes
  &ETA_WP = &Now_Tot + &Time2_WP
  &ETA_WPmn = MOD &ETA_WP ,3600
  &Time5s_WP = &Time2_WP / 5     // Trajet en multiple de 5 sec
  &Fuel2_WP = &Time5s_WP * &Conso_5s     // Consommation Kero jusqu'au WP (UK)
  &TimeO2_WP = &WP_Distance / &TAS_Optmn     // Consommation kero  rgime co  
  &FuelO2_WP = &TimeO2_WP * &Consopt_mn     // Dure de vol  rgime co
  &PlayFuel = &Fuel_T - &FuelO2_WP
  &PlayTime = &PlayFuel / &Conso_mn     // Calcul du PlayTime (Kro total - retour 
}

Var 0302, name Time2_WP     // Time TAC to WP en secondes

Var 0303, name Time5s_WP     // Time to WP en multiple de 5sec

Var 0304, name ETA_WP     // ETA en secondes

Var 0305, name ETA_WPmn     // ETA en minutes

Var 0306, name TimeO2_WP     // Time OPT to WP

Var 0308, name Fuel2_WP     // Fuel TAC to WP en UK

Var 0309, name FuelO2_WP     // Fuel OPT to WP en UK

Var 0310, name PlayFuel     // Kero dispo sur zone en UK

Var 0311, name PlayTime     // Playtime (mn)


//
// Module de Consommation ----------------------------------------------------------------------------------------
//



Var 0410, name Conso_Sub, Link SUBRUTINE     // Calcul de Consommation
{
  &Fuel_T1 = &Fuel_T0    
  &Fuel_T0 = &Fuel_T    
  &Conso_5s = &Fuel_T1 - &Fuel_T0     // Consommation kro sur 5 secondes en UK
  &Conso_mn = &Conso_5s * 12     // Consommation kro extrapole sur 1 mn en
  &TAS_Optac = 0.008 * &QNH
  &TAS_Optmn = 6500 + &TAS_Optac
}

Var 0411, name Fuel_T     // Fuel total

Var 0412, name Fuel_T0     // Fuel Conso 0 :  temps t

Var 0413, name Fuel_T1     // Fuel Conso 1 :  temps t-5 secondes

Var 0414, name Conso_5s     // Consommation UK sur les 5 secondes

Var 0415, name Conso_mn     // Consommation UK / mn

Var 0420, name TAS_Optmn, Value 6500     // TAS de rgime co

Var 0421, name TAS_Optac, Value 0     // Augmentation de la TAS avec l'altitude

Var 0422, name Consopt_mn, Value 2280     // Consommation optimum en UK par secondes 

Var 0430, name Autonom_sub, Link SUBRUTINE     // Calcul d'Autonomie	
{
  &Autonom_mn = &Fuel_T / &Conso_mn     // Dure Kro restant  rgime actuel (TAC)
  &Autonom_m = &Autonom_mn * &TAS_mpmn     // Distance franchissable  rgime actuel (
  &Autonopt_mn = &Fuel_T / &Consopt_mn     // Dure Kro testant  rgime optimal (OPT
  &Autonopt_m0 = &Autonopt_mn * &TAS_Optmn     // Distance franchissable  rgime optimal 
  &Auto_VP = 0.07 * &QNH
  &Autonopt_m = &Autonopt_m0 + &Auto_VP
}

Var 0431, name Autonom_mn     // Autonomie TAC en mn

Var 0432, name Autonom_m     // Distance franchissable maximale TAC en K

Var 0435, name Autonopt_mn     // Autonomie optimale en minute

Var 0436, name Autonopt_m0     // Distance franchissable maximale OPT en p

Var 0437, name Auto_VP     // Autonomie en vol plan (fonction QNH)

Var 0439, name Autonopt_m     // Distance franchissable maximale OPT en k



//
// Module de Ravitaillement ----------------------------------------------------------------------------------------
//


Var 0450, name Refuel_On     // Flag de refuelling

Var 0451, name Fuel_Max, Value 350000     // Capacit du Rservoir interne

Var 0453, name Refuel_Lim, Value 350000     // Limite de Refuel interne

Var 0454, name Refuel_Rot, Value 1     // Selecteur de refueling
{
  IF &Refuel_Rot = 0
  {
    &Refuel_Lim = &Fuel_Max / 2     // 50% Moiti du tank In
  }
  IF &Refuel_Rot = 1
  {
    &Refuel_Lim = &Fuel_Max         // 100% Full Tank In
  }
  IF &Refuel_Rot = 2
  {
    &Refuel_Lim = &Fuel_Max         // 130% Full Tank In + Bidon
  }
  IF &Refuel_Rot = 3
  {
    &Refuel_Lim = 0         // CL Bidon
  }
}

Var 0455, name Refuel_SW, Value 1     // Ecoute du Switch de refueling
{
  IF &TAS < 100     // On ne refuel qu'au sol pour viter de la
  {
    IF &Refuel_Rot = 3     // Mode avec Bidon, rarmement pour refuele
    {
      &LOCKONCMD = 82    
    }
    ELSE
    {
      &Refuel_On = 1    
      &LOCKONCMD = 79         // Mode sans Bidon, refuel simple
      IF &Refuel_Rot = 2
      {
        &LOCKONCMD = 82    
      }
    }
  }
}

Var 0457, name Refuel_Sub, Link SUBRUTINE
{
  IF &Refuel_On = 1
  {
    &Refuel_Stop = &Refuel_Lim - &Fuel_I     // Calcul de la quantit pour le Refuel (Dg
  }
}

Var 0458, name Refuel_Stop     // Detection de fin de refuel
{
  IF &Refuel_On = 1
  {
    IF &Refuel_Stop < 5
    {
      IF &Refuel_Rot > 1     // Mode avec Bidon, rarmement pour refuele
      {
        &LOCKONCMD = 82    
      }
      &LOCKONCMD = 80         // Stop refuel
      &Refuel_On = 0    
    }
  }
}

Var 0460, name Jett_Tank, Value 1     // Jettison Fuel Tank
{
  &LOCKONCMD = 178    
}


//
// Module de Demarrage Moteur ----------------------------------------------------------------------------------------
//



Var 0480, name L_EngStar_SW, Value 1     // Ecoute du switch : Start Left Engine
{
  IF &L_rpm < 200     // Si moteur  l'arrt on le dmarre
  {
    &LOCKONCMD = 311    
  }
  ELSE
  {
    &LOCKONCMD = 313    
  }
}

Var 0481, name R_EngStar_SW, Value 1     // Ecoute du switch : Start Right Engine
{
  IF &R_rpm < 200     // Si moteur  l'arrt on le dmarre
  {
    &LOCKONCMD = 312    
  }
  ELSE
  {
    &LOCKONCMD = 314    
  }
}

Var 0483, name L_EngStop_SW, Value 1     // Ecoute du switch : Stop Left Engine
{
  IF &L_rpm > 200     // Si moteur en marche on l'arrte
  {
    &LOCKONCMD = 313    
  }
}

Var 0484, name R_EngStop_SW, Value 1     // Ecoute du switch : Stop Right Engine
{
  IF &R_rpm > 200     // Si moteur en marche on l'arrte
  {
    &LOCKONCMD = 314    
  }
}

Var 0760, name TankOS_LED     // Tank Overspeed

Var 0761, name TankOS_Sub, Link SUBRUTINE
{
  IF &Pylon04 = 1
  {
    IF &Mach_nbr > 9
    {
      &TankOS_LED = 1         // Alarme OverSpeed si Bidon et Vitesse sup
    }
    ELSE
    {
      &TankOS_LED = 0    
    }
  }
  ELSE
  {
  &TankOS_LED = 0
  }
  
}



//
// Module d'Alarmes ----------------------------------------------------------------------------------------
//

Var 0800, name R_TailPlan     // panne aile droite

Var 0801, name EOS_fail     // Panne EOS, TV 

Var 0802, name ECM_fail     // panne ECM

Var 0803, name R_FlapPlan     // panne aileron Droit

Var 0804, name MW     // Master Warning

Var 0805, name R_engfail     // Panne Moteur Droit

Var 0806, name cann_fail     // Panne Canon

Var 0807, name MLWS_fail     // Panne MLWS

Var 0808, name ACS_fail     // Panne ACS

Var 0809, name Radar_fail     // Panne Radar

Var 0810, name Helmet_fail     // Panne Casque

Var 0811, name Hud_fail     // Panne HUD

Var 0812, name L_mainpomp     // Panne Pompe Principale Gauche

Var 0813, name R_Wingpomp     // Panne Pompe aile Droite

Var 0814, name L_Wingpomp     // Panne Pompe aile Gauche

Var 0815, name MDF_fail     // Panne MDF

Var 0816, name RWS_fail     // Panne RWS

Var 0817, name Gear_fail     // Panne Train

Var 0818, name Hydro_fail     // Panne Hydraulique

Var 0819, name Autopil_fail     // Panne Auto_pilote

Var 0820, name FueltankD     // Panne Reservoir Carburant

Var 0821, name L_FlapPlan     // Panne aileron Gauche

Var 0822, name Canopyop     // Detection Ouverture Canopy

Var 0823, name R_mainpomp     // Panne Pompe Principale Droite

Var 0824, name Stallsig     // Indication dcrochage

Var 0825, name L_engfail     // Panne Moteur Gauche

Var 0826, name autopil_on     // Autopilote On

Var 0827, name L_tailPlan     // Panne aile Gauche

Var 0830, name MCPS, Link SUBRUTINE     // Gestion du MCP
{
  &ECM_fail = TESTBIT &MCPState ,2
  &MW = TESTBIT &MCPState ,4
  &R_engfail = TESTBIT &MCPState ,5
  &Hydro_fail = TESTBIT &MCPState ,18
  &Autopil_fail = TESTBIT &MCPState ,19
  &L_engfail = TESTBIT &MCPState ,25
  &autopil_on = TESTBIT &MCPState ,26
}

Var 0870, name Baro_Hold     // Auto_alti_baro


//
// Module de Mode ----------------------------------------------------------------------------------------
//



Var 0880, name ResM, Link SUBRUTINE     // Gestion du ResMode
{
  &Baro_Hold = TESTBIT &ResMode ,20
}
