#define _HPUX_SOURCE

#include <sys/sem.h>
#include <stdio.h>
#include <stdlib.h>
#include "libascensor.h"

int main(void)
   {
    int semAforo,i;
    struct datos_ascensor *sdap;

    /* En este programa de prueba usamos memoria dinámica.
       Vosotros tenéis que usar memoria compartida. */
    sdap=malloc(sizeof(struct datos_ascensor));
    if (sdap==NULL) {fprintf(stderr,"Sin memoria.\n"); return 1;}
    
    semAforo=semget(IPC_PRIVATE,1,0600);
    if (semAforo==-1) {perror("semget"); return 1;}

    if (inicio_ascensor(semAforo,sdap)==-1)
       {return 1;}

    for (i=0; i<4; i++)
       {ir_piso(i); sleep(1);}

    abrir_puerta();
    sleep(1);
    cerrar_puerta();

    for (i=3; i>=0; i--)
       {ir_piso(i); sleep(1);}

    for (i=0; i<4; i++)
       {ir_piso(i); sleep(1);}

    abrir_puerta();
   
    persona_de_pie(0);
    sleep(1);
    persona_sentada(0);
    sleep(1);
    persona_de_pie(1);
    persona_de_pie(3);

    sleep(1);
    persona_dentro(1);
    persona_dentro(2);
    persona_dentro(3);

    cerrar_puerta();
    for (i=3; i>1; i--)
       {ir_piso(i); sleep(1);}

    abrir_puerta();
    sleep(1);
    persona_fuera(3);
    sleep(1);
    cerrar_puerta();

    for (i=1; i>=0; i--)
       {ir_piso(i); sleep(1);}
    abrir_puerta();
    sleep(1);
    persona_fuera(1);
    sleep(1);
    cerrar_puerta();

    semctl(semAforo,0,IPC_RMID,0);
    pause();
    }
