cea_tswdb

PURPOSE ^

C/C++ source

SYNOPSIS ^

C/C++ source

DESCRIPTION ^

C/C++ source

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 /*****************************************************************************
0002  
0003    NOM  DU MODULE        :  cea_tswdb.c
0004 
0005    DESCRIPTION DU MODULE :  module client de la bibliotheque TSLib
0006                             fonctions d'ecriture de donnees brutes
0007 
0008    Auteur       :       C. ETCHEBER
0009    Societe      :       CISI
0010    Projet       :       TRANS-INT
0011 
0012    Date de Creation :   01/04/93
0013    Modifications    :
0014 
0015  *****************************************************************************/
0016 
0017 /*****************************************************************************
0018 
0019    Liste des fonctions du module :
0020 
0021         TSWdb
0022 
0023  *****************************************************************************/
0024 
0025 #include <stdio.h>            /* bibliotheques standards           */
0026 #include <stdlib.h>            
0027 #include <string.h>        
0028 #include "tsdef.h"                      /* liste des constantes utilisees    */
0029 #include "tsconf.h"                     /* configuration du client           */
0030 #if (client == MAC)
0031 #include <Connections.h>           /* interface C - gestionnaire de connexion */
0032 #endif
0033 #include "tsfonc.h"                     /* liste des fonctions appelees   */
0034 #include "tsmes.h"                      /* liste des erreurs              */
0035 #include "tstype.h"                     /* liste des types de donnees     */
0036 #include "tsext.h"                      /* liste des variables globales   */
0037 
0038 #include "ceaf.h"            /* fonctions ajoutees par le CEA  */
0039 
0040 /* ajout d'un code erreur (tsmes.h) */
0041 #define erreur_valeur (Longint)113
0042 #define choc_pas_la   (Longint)114
0043 
0044 /*----------------------------------------------------------------------------
0045 
0046                         TSWdb
0047 
0048   But : fonction envoyant au serveur la liste des donnees a ecrire ou a
0049         mettre a jour apres choc en base de donnees et dans les fichiers
0050         de donnees brutes
0051 
0052   Arguments :
0053         num_choc        : numero du choc
0054         nom_diagnostic  : nom du diagnostic
0055         format          : type de la station d'acquisition des mesures
0056                           (MAC, PC, SUN, DEC)
0057         nb_donnees      : nombre de donnees a ajouter ou a mettre a jour
0058         nom_donnees     : tableau des noms de donnees
0059         long_coord      : longueur en octets du tableau tab_coord
0060         tab_coord       : tableau du nombre de mesures de chaque donnee
0061         long_val        : longueur en octets du tableau tab_val
0062         tab_val         : tableau des mesures
0063 
0064   Retour          : compte-rendu d'execution
0065 
0066  ------------------------------------------------------------------------------*/
0067 
0068 
0069 Longint TSWdb(num_choc, nom_diagnostic, format_acq,
0070                nb_donnees, nom_donnees,
0071                long_coord, tab_coord,
0072                long_val, tab_val)
0073 
0074 Longint   num_choc;
0075 char      *nom_diagnostic;
0076 char      format_acq;
0077 short     nb_donnees;
0078 char      *nom_donnees[128];
0079 Longint   long_coord;
0080 Longint   *tab_coord;
0081 Longint   long_val; 
0082 char      *tab_val;
0083 
0084 {
0085   Longint  CR = 0; 
0086   Longint  code_param;
0087   int i;
0088 
0089 #if (client == MAC)
0090   ConnHandle NumSocket; /* descripteur de la socket de communication */
0091 #else
0092   int       NumSocket;  /* descripteur de la socket de communication */
0093 #endif
0094   short int CodeFonc;   /* code de la fonction TSLib appelee         */
0095   Longint   Resultat;   /* compte-rendu d'execution du client        */ 
0096 
0097    /**   YB 12/01/95 : erreur si on veut ajouter des donnees a un choc qui n'a 
0098                        pas encore eu lieu
0099    **/
0100    pS_Entree ptEntree;   
0101    char date[TAILLE_DATE], heure[TAILLE_HEURE]; 
0102    Longint numv, nbcoord[5], certif[64];
0103    /**   YB 12/01/95  **/
0104 
0105   /* controle des parametres */ 
0106 
0107    if (num_choc < 0) {  
0108       code_param = p_numchoc;
0109       return (Gestion_Erreur(erreur_valeur,code_param));
0110    }
0111    if (nb_donnees<=0) { 
0112       code_param = p_longueurs;
0113       return (Gestion_Erreur(erreur_tableau_vide,code_param));
0114    }
0115    if (nb_donnees >128 ) {
0116       code_param = p_nbmax;
0117       return (Gestion_Erreur(erreur_valeur,code_param));
0118    }
0119    if (long_coord<=0) { 
0120       code_param = p_longnb;
0121       return (Gestion_Erreur(erreur_tableau_vide,code_param));
0122    }
0123    if (long_val<=0) { 
0124       code_param = p_valnb;
0125       return (Gestion_Erreur(erreur_tableau_vide,code_param));
0126    }
0127         
0128    if (nom_diagnostic==NULL) {
0129       code_param = p_nomdiag;
0130       return (Gestion_Erreur(erreur_chaine_vide,code_param));
0131    }
0132 
0133    if (nom_donnees==NULL) { 
0134       code_param = p_nomdon;
0135       return (Gestion_Erreur(erreur_tableau_vide,code_param));
0136    }
0137    if (tab_coord==NULL) { 
0138       code_param = p_coord;
0139       return (Gestion_Erreur(erreur_tableau_vide,code_param));
0140    }
0141    if (tab_val==NULL) { 
0142       code_param = p_tabval;
0143       return (Gestion_Erreur(erreur_tableau_vide,code_param));
0144    }
0145 
0146    /**   YB 12/01/95 : erreur si on veut ajouter des donnees a un choc qui n'a 
0147                        pas encore eu lieu
0148    **/
0149 
0150   ptEntree = (pS_Entree) malloc (sizeof (struct S_Entree));
0151   ptEntree->union_var.lval = num_choc;
0152   ptEntree->ps_suivant = NULL;
0153 
0154 
0155   /* debut de communication */
0156 
0157   /* Chocs serveur RHEA */
0158       if ((Resultat = Debut_Communication (&NumSocket, 1)) != ok)
0159         return Resultat;
0160 
0161   /* emission du code de la fonction */
0162 
0163   CodeFonc = fonc_tswdb;
0164   if ((Resultat = Emission(NumSocket,(char *)&CodeFonc,taille_short,p_codefonc))
0165          != ok)
0166   return Resultat;
0167 
0168 
0169   /* emission des parametres */
0170 
0171   if ((Resultat = Emission(NumSocket,(char *)&num_choc,taille_long,p_numchoc))
0172          != ok)
0173   return Resultat;
0174 
0175   if ((Resultat = Emission(NumSocket,nom_diagnostic,TAILLE_NOM_DIAGNOSTIC,p_nomdiag))
0176          != ok)
0177   return Resultat;
0178 
0179   if ((Resultat = Emission(NumSocket,&format_acq, 1, p_unite))
0180          != ok)
0181   return Resultat;
0182 
0183   if (( Resultat = Emission(NumSocket,(char *)&nb_donnees,taille_short,p_longueurs))
0184          != ok)
0185   return Resultat;
0186 
0187    for (i=0; iif (( Resultat = Emission(NumSocket,nom_donnees[i],TAILLE_NOM_DONNEE,p_nomdon))
0189          != ok)
0190         return Resultat;
0191    }
0192 
0193    if (( Resultat = Emission(NumSocket,(char *)&long_coord,taille_long,p_longnb))
0194          != ok)
0195       return Resultat;
0196 
0197    if (( Resultat = Emission(NumSocket,(char *)tab_coord,long_coord,p_coord))
0198          != ok)
0199       return Resultat;
0200 
0201    if (( Resultat = Emission(NumSocket,(char *)&long_val,taille_long,p_valnb))
0202          != ok)
0203       return Resultat;
0204 
0205    if (( Resultat = Emission(NumSocket,(char *)tab_val,long_val,p_tabval))
0206          != ok)
0207       return Resultat;
0208 
0209   /* fin d'emission */
0210   
0211 #if ((client!=PC) && (client !=MAC))
0212   if (( Resultat = Fin_Emission(NumSocket)) 
0213        == erreur_fin_emission)
0214   return Resultat;
0215 #endif
0216 
0217   /* reception d'un parametre */
0218 
0219   if (( Resultat = Reception(NumSocket,(char *)&CR,taille_long,p_cr))
0220          != ok)
0221   return Resultat;
0222 
0223   /* fin de communication */
0224 
0225   Fin_Communication(NumSocket);
0226 
0227   if (CR==305)  printf (" TSWdb : trame de rang 0 interdite en ajout \n");
0228   else if (CR==307)  printf (" TSWdb : Serveur_Choc n'a pas encore ecrit \n");
0229   return CR;
0230 }

Community support and wiki are available on Redmine. Last update: 18-Apr-2019.