Project 2 - Implement the Code for controlling the retraction and extension of Airplane’s landing gear
#include<stdio.h>
typedef enum states
{
init_state,
checking_before_takeoff,
raising_gear,
gear_up,
checking_before_landing,
lowering_gear,
gear_down
}state_type;
static volatile int gear=0;
static volatile int out=0;
state_type current_state;
state_type next_state;
void Init_state_handler()
{
current_state=init_state;
gear=0;
out=0;
printf("initial state is:%d\n",out);
//next_state=checking_before_takeoff;
}
void Checking_before_takeoff()
{
current_state=checking_before_takeoff;
out++;
printf("gear is in checking before takeoff state & ");
printf(" value of out is:%d\n",out);
gear++;
printf("gear value is:%d\n",gear);
if(gear==2)
{current_state=raising_gear;}
}
void Raising_gear()
{
current_state=raising_gear;
out++;
printf("Gear is in raising state ");
printf("value of out is:%d\n",out);
gear++;
printf("gear value is:%d\n",gear);
if(gear==3)
{current_state=gear_up;}
}
void Gear_up()
{
current_state=gear_up;
out++;
printf("Gear is in gear up state ");
printf("value of out is:%d\n",out);
gear++;
printf("gear value is:%d\n",gear);
if(gear==4)
{current_state=checking_before_landing;}
}
void Checking_before_landing()
{
current_state=checking_before_landing;
out++;
printf("gear is in checking before landing state ");
printf("value of out is:%d\n",out);
gear++;
printf("gear value is:%d\n",gear);
if(gear==5)
{current_state=lowering_gear;}
}
void Lowering_gear()
{
current_state=lowering_gear;
out++;
printf("gear is in lowering gear state ");
printf("value of out is:%d\n",out);
gear++;
printf("gear value is:%d\n",gear);
if(gear==6)
{next_state=gear_down;}
}
void Gear_down()
{
current_state=gear_down;
out++;
printf("gear is in gear down state ");
printf(" value of out is:%d\n",out);
gear++;
printf("gear value is:%d\n",gear);
if(gear==0)
{current_state=init_state;}
}
static void(*state_table[])(void)={Checking_before_takeoff,Raising_gear,Gear_up,Checking_before_landing,Lowering_gear,Gear_down};
int main()
{
Init_state_handler();
while(1)
{
//state_table[current_state]();
state_table[current_state]();
//break;
}
}