/***********************************************
 *  lv_status.c
 * 
 ************************************************/

#include <signal.h>
#include <strings.h>
#include <stdio.h>
#include <errno.h>
#include <module.h>
#include "lv.h"

LV_MBOX *mod;
int evid;
char *caller;

main(argc, argv)
int argc;
char **argv;
{
    int evid;
    int cpu_nr, tcp_ip_nr;
    char *hv_config[3];
    int sonda, cycle;
    int hra[6];
    float vstar[3][N_LV], istar[3][N_LV], vsgs[2][N_LV], isgs[2][N_LV];
    int i, j;
    int nread, nerr;
    int giorno, mese, anno, ora, minuti, secondi;

    caller = argv[0];


    evid = sem_link_cr("lv_mbox", argv[0]);

    /* create module for sy127 informations */
    if((mod = (LV_MBOX *)modlink("lv_mod", 0)) == (LV_MBOX *)-1){
       printf(" cannot open data module \n");
       sem_unl_del(evid, "lv_mbox", argv[0]);
       exit(0);
    }
    sem_wait(evid, argv[0]);
    nread = mod->nread_lv;
    nerr = mod->nerr_lv;
    for(i = 0; i < 6; i++){
       hra[i] = mod->lv_tim[i];
/*       printf(" %d", hra[i]); */
    }
    printf(" \n"); 
/*    for( i = 0; i < N_CHAMBERS; i++) {
       printf(" name %d : %s \n", i, mod->name[i]);
       strncpy(ch_name[i], mod->name[i], 5);
       printf(" ch_name[%d] = %s\n", i, ch_name[i]);
    }
*/
    for ( i = 0; i < N_LV; i++) {
       for ( j = 0; j < 3; j++){
          vstar[j][i] = mod->vstar[j][i];
          istar[j][i] = mod->istar[j][i];
      }
       for ( j = 0; j < 2; j++){
          vsgs[j][i] = mod->vsgs[j][i];
          isgs[j][i] = mod->isgs[j][i];
       }
    }
    sem_free(evid, argv[0]);     


    data_ora( &anno, &mese, &giorno, &ora, &minuti, &secondi);
    printf("Present time:  %2d-%2d-%4d %2d:%2d:%2d\n",
            giorno, mese, anno, ora, minuti, secondi);

    printf("last update    %2d-%2d-%4d %2d:%2d:%2d",
         hra[2], hra[1], hra[0], hra[3], hra[4], hra[5]);
    printf("    ( nread %6d, err %4d )\n\n\n", nread, nerr);

    printf("\n                    S T A R");
    printf("                              S G S\n\n");
    printf("           -6V          +6V          +5V");
    printf("             -5V         +7V\n");
    printf("         V    I       V    I       V    I");
    printf("          V    I      V    I\n");
    for ( i = 0; i < N_LV; i++) {
          printf(" %s  ", ch_name[ lv_t[i] ]);
       for ( j = 0; j < 3; j++)
          printf("%4.1f  %4.1f   ", vstar[j][i], istar[j][i]);
       printf("   ");
       for ( j = 0; j < 2; j++)
          printf("%4.1f  %4.1f  ", vsgs[j][i], isgs[j][i]);
       printf("\n");
    }
    sem_unl_del(evid, "lv_mbox", argv[0]);
    munlink(mod);
}