tsdecl

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        :  tsdecl.c
0004 
0005    DESCRIPTION DU MODULE :  module client de la bibliotheque TSLib
0006                             ensemble des fonctions de lecture de donnees brutes
0007 
0008    Auteur       :       Vita-Maria GUZZI
0009    Societe      :       CR2A
0010    Projet       :       TSLib
0011 
0012    Date de Creation :   29/09/92
0013    Modifications    :
0014 
0015  *****************************************************************************/
0016 
0017 /*****************************************************************************
0018 
0019    Liste des fonctions du module :
0020 
0021         TSSigDeclenche
0022         TSXtrDeclenche
0023         TSGrpDeclenche
0024 
0025  *****************************************************************************/
0026 #include <stdio.h>        /* bibliotheques standards           */
0027 #include <stdlib.h>
0028 #include <string.h>
0029 #include "tsdef.h"        /* liste des constantes utilisees */
0030 #include "tsconf.h"        /* configuration du client        */
0031 #if (client == MAC)
0032 
0033 #endif
0034 
0035 #include "tsfonc.h"        /* liste des fonctions appelees   */
0036 #include "tsmes.h"        /* liste des erreurs              */
0037 #include "tstype.h"        /* liste des types de donnees     */
0038 #include "tsext.h"        /* liste des variables globales   */
0039 #include "functs.h"        /* prototypes fcts TSLib */
0040 /*----------------------------------------------------------------------------
0041 
0042                         TSSigDeclenche
0043 
0044   But : fonction demandant au serveur de lui renvoyer les valeurs d'un signal
0045         brut pour une occurrence d'une declenche donnee
0046 
0047   Arguments :
0048         NomDon    : nom de la donnee
0049         NumChoc   : numero de choc
0050         NomDec    : nom d'une declenche
0051         Occur     : occurrence d'une declenche
0052         NbMax     : nombre maximum de mesures souhaitees
0053         Extract   : type d'extraction souhaitee
0054 
0055         Unite     : liste des unites des mesures rendues
0056         NumVer    : numero de version du createur
0057         Date      : date d'execution du diagnostic ou du traitement
0058         Heure     : heure  d'execution du diagnostic ou du traitement
0059         NbMes     : nombre de valeurs rendues
0060         MaxReel   : nombre de valeurs trouvees
0061         T         : tableau des valeurs des temps
0062         Y         : tableau des valeurs des mesures
0063 
0064   Retour          : compte-rendu d'execution
0065 
0066 ------------------------------------------------------------------------------*/
0067 Longint FAR_PASCAL
0068 TSSigDeclenche (    char *NomDon,
0069             Longint NumChoc,
0070             char *NomDec,
0071             Longint Occur,
0072             Longint NbMax,
0073             Longint Extract,
0074             pS_Unite *Unite,
0075             Longint *NumVer,
0076             char *Date,
0077             char *Heure,
0078             Longint *NbMes,
0079             Longint *MaxReel,
0080             char HUGE *T,
0081             char HUGE *Y )  
0082 {
0083   Longint CR;
0084   Longint TNb;            /* taille en octets du tableau T  */
0085   Longint YNb;            /* taille en octets du tableau Y  */
0086   char TType[2];        /* type des elements du tableau T  */
0087   char YType[2];        /* type des elements du tableau Y  */
0088   Longint code_param;
0089 
0090 #if (client == MAC)
0091   ConnHandle NumSocket;        /* descripteur de la socket de communication */
0092 #else
0093   int NumSocket;        /* descripteur de la socket de communication */
0094 #endif
0095   short int CodeFonc;        /* code de la fonction TSLib appelee         */
0096   Longint Resultat;        /* compte-rendu d'execution du client        */
0097 
0098   /* test des pointeurs de chaines */
0099 
0100   code_param = ok;
0101 
0102   if (NomDon == NULL)
0103     code_param = p_nomdon;
0104   if (NomDec == NULL)
0105     code_param = p_nomdec;
0106   if (Date == NULL)
0107     code_param = p_date;
0108   if (Heure == NULL)
0109     code_param = p_heure;
0110   if (code_param != ok)
0111     return (Gestion_Erreur (erreur_chaine_vide, code_param));
0112 
0113   /* test des pointeurs de tableaux */
0114 
0115   if (T == NULL)
0116     code_param = p_t;
0117   if (code_param != ok)
0118     return (Gestion_Erreur (erreur_tableau_vide, code_param));
0119 
0120   /* debut de communication */
0121 
0122       if ((Resultat = Debut_Communication (&NumSocket, 1)) != ok)
0123         return Resultat;
0124 
0125   /* emission du code de la fonction */
0126 
0127   if( compress_on )
0128     CodeFonc = fonc_tssigdeclenche;
0129   else
0130     CodeFonc = fonc_tssigdeclenche - MAX_FUNCT_NUMBER;
0131 
0132   if ((Resultat = Emission (NumSocket, (char *) &CodeFonc, taille_short, p_codefonc))
0133       != ok)
0134     return Resultat;
0135 
0136   /* emission des parametres */
0137 
0138   if ((Resultat = Emission (NumSocket, NomDon, TAILLE_NOM_DONNEE, p_nomdon))
0139       != ok)
0140     return Resultat;
0141 
0142   if ((Resultat = Emission (NumSocket, (char *) &NumChoc, taille_long, p_numchoc))
0143       != ok)
0144     return Resultat;
0145 
0146   if ((Resultat = Emission (NumSocket, NomDec, TAILLE_NOM_DECLENCHE, p_nomdec))
0147       != ok)
0148     return Resultat;
0149 
0150   if ((Resultat = Emission (NumSocket, (char *) &Occur, taille_long, p_occur))
0151       != ok)
0152     return Resultat;
0153 
0154   if ((Resultat = Emission (NumSocket, (char *) &NbMax, taille_long, p_nbmax))
0155       != ok)
0156     return Resultat;
0157 
0158   if ((Resultat = Emission (NumSocket, (char *) &Extract, taille_long, p_extract))
0159       != ok)
0160     return Resultat;
0161 
0162   /* fin d'emission */
0163 
0164 #if ((client!=PC) && (client !=MAC))
0165   if ((Resultat = Fin_Emission (NumSocket))
0166       == erreur_fin_emission)
0167     return Resultat;
0168 #endif
0169 
0170   /* reception des parametres */
0171 
0172   if ((Resultat = Reception (NumSocket, (char *) &CR, taille_long, p_cr))
0173       != ok)
0174     return Resultat;
0175 
0176   if (CR == ok)
0177     {
0178       if ((Resultat = Reception_Unite (NumSocket, Unite, p_unite))
0179       != ok)
0180     return Resultat;
0181 
0182       if ((Resultat = Reception (NumSocket, (char *) NumVer, taille_long, p_numver))
0183       != ok)
0184     return Resultat;
0185 
0186       if ((Resultat = Reception (NumSocket, Date, TAILLE_DATE, p_date))
0187       != ok)
0188     return Resultat;
0189 
0190       if ((Resultat = Reception (NumSocket, Heure, TAILLE_HEURE, p_heure))
0191       != ok)
0192     return Resultat;
0193 
0194       if ((Resultat = Reception (NumSocket, (char *) NbMes, taille_long, p_nbmes))
0195       != ok)
0196     return Resultat;
0197 
0198       if ((Resultat = Reception (NumSocket, (char *) MaxReel, taille_long, p_maxreel))
0199       != ok)
0200     return Resultat;
0201 
0202       if ((Resultat = Reception (NumSocket, (char *) &TNb, taille_long, p_t))
0203       != ok)
0204     return Resultat;
0205 
0206       if ((Resultat = Reception (NumSocket, TType, TAILLE_FORMAT_SERVEUR, p_t))
0207       != ok)
0208     return Resultat;
0209 
0210       if ((Resultat = Reception_Tableau (NumSocket, T, TNb, TType, p_t))
0211       != ok)
0212     return Resultat;
0213 
0214       if ((Resultat = Reception (NumSocket, (char *) &YNb, taille_long, p_y))
0215       != ok)
0216     return Resultat;
0217 
0218       if ((YNb != 0) && (Y == NULL))
0219     {
0220       Fin_Communication (NumSocket);
0221       return (Gestion_Erreur (erreur_tableau_vide, p_y));
0222     }
0223 
0224       if ((Resultat = Reception (NumSocket, YType, TAILLE_FORMAT_SERVEUR, p_y))
0225       != ok)
0226     return Resultat;
0227 
0228       if ((Resultat = Reception_Tableau (NumSocket, Y, YNb, YType, p_y))
0229       != ok)
0230     return Resultat;
0231     }
0232   /* fin de communication */
0233 
0234   Fin_Communication (NumSocket);
0235 
0236   return CR;
0237 
0238 }
0239 
0240 /*----------------------------------------------------------------------------
0241 
0242                         TSXtrDeclenche
0243 
0244   But : fonction demandant au serveur de lui renvoyer les valeurs d'un signal
0245         brut extrait d'un groupe pour une occurrence d'une declenche donnee
0246 
0247   Arguments :
0248         NomDon    : nom de la donnee
0249         NumChoc   : numero de choc
0250         Indices   : tableau des indices du signal dans le groupe
0251         NomDec    : nom d'une declenche
0252         Occur     : occurrence d'une declenche
0253         NbMax     : nombre maximum de mesures souhaitees
0254         Extract   : type d'extraction souhaitee
0255 
0256         Unite     : liste des unites des mesures rendues
0257         NumVer    : numero de version du createur
0258         Date      : date d'execution du diagnostic ou du traitement
0259         Heure     : heure  d'execution du diagnostic ou du traitement
0260         NbMes     : nombre de valeurs rendues
0261         MaxReel   : nombre de valeurs trouvees
0262         T         : tableau des valeurs des temps
0263         Y         : tableau des valeurs des mesures
0264 
0265   Retour          : compte-rendu d'execution
0266 
0267 ------------------------------------------------------------------------------*/
0268 Longint FAR_PASCAL
0269 TSXtrDeclenche (    char *NomDon,
0270             Longint NumChoc,
0271             Longint *Indices,
0272             char *NomDec,
0273             Longint Occur,
0274             Longint NbMax,
0275             Longint Extract,
0276             pS_Unite *Unite,
0277             Longint *NumVer,
0278             char *Date,
0279             char *Heure,
0280             Longint *NbMes,
0281             Longint *MaxReel,
0282             char HUGE *T,
0283             char HUGE *Y    )
0284 
0285 {
0286   Longint CR;
0287   Longint TNb;            /* taille en octets du tableau T  */
0288   Longint YNb;            /* taille en octets du tableau Y  */
0289   char TType[2];        /* type des elements du tableau T */
0290   char YType[2];        /* type des elements du tableau Y */
0291   Longint code_param;
0292 
0293 #if (client == MAC)
0294   ConnHandle NumSocket;        /* descripteur de la socket de communication */
0295 #else
0296   int NumSocket;        /* descripteur de la socket de communication */
0297 #endif
0298   short int CodeFonc;        /* code de la fonction TSLib appelee         */
0299   Longint Resultat;        /* compte-rendu d'execution du client        */
0300 
0301 
0302   /* test des pointeurs de chaines */
0303 
0304   code_param = ok;
0305 
0306   if (NomDon == NULL)
0307     code_param = p_nomdon;
0308   if (NomDec == NULL)
0309     code_param = p_nomdec;
0310   if (Date == NULL)
0311     code_param = p_date;
0312   if (Heure == NULL)
0313     code_param = p_heure;
0314   if (code_param != ok)
0315     return (Gestion_Erreur (erreur_chaine_vide, code_param));
0316 
0317   /* test des pointeurs de tableaux */
0318 
0319   if (T == NULL)
0320     code_param = p_t;
0321   if (Indices == NULL)
0322     code_param = p_indices;
0323   if (code_param != ok)
0324     return (Gestion_Erreur (erreur_tableau_vide, code_param));
0325 
0326   /* debut de communication */
0327       if ((Resultat = Debut_Communication (&NumSocket, 1)) != ok)
0328         return Resultat;
0329 
0330   /* emission du code de la fonction */
0331   if (compress_on)
0332     CodeFonc = fonc_tsxtrdeclenche;
0333   else
0334     CodeFonc = fonc_tsxtrdeclenche - MAX_FUNCT_NUMBER;
0335   if ((Resultat = Emission (NumSocket, (char *) &CodeFonc, taille_short, p_codefonc))
0336       != ok)
0337     return Resultat;
0338 
0339   /* emission des parametres */
0340 
0341   if ((Resultat = Emission (NumSocket, NomDon, TAILLE_NOM_DONNEE, p_nomdon))
0342       != ok)
0343     return Resultat;
0344 
0345   if ((Resultat = Emission (NumSocket, (char *) &NumChoc, taille_long, p_numchoc))
0346       != ok)
0347     return Resultat;
0348 
0349   if ((Resultat = Emission (NumSocket, (char *) Indices, MAX_INDICE * taille_long,
0350                 p_indices))
0351       != ok)
0352     return Resultat;
0353 
0354   if ((Resultat = Emission (NumSocket, NomDec, TAILLE_NOM_DECLENCHE, p_nomdec))
0355       != ok)
0356     return Resultat;
0357 
0358   if ((Resultat = Emission (NumSocket, (char *) &Occur, taille_long, p_occur))
0359       != ok)
0360     return Resultat;
0361 
0362   if ((Resultat = Emission (NumSocket, (char *) &NbMax, taille_long, p_nbmax))
0363       != ok)
0364     return Resultat;
0365 
0366   if ((Resultat = Emission (NumSocket, (char *) &Extract, taille_long, p_extract))
0367       != ok)
0368     return Resultat;
0369 
0370 
0371   /* fin d'emission */
0372 
0373 #if ((client!=PC) && (client !=MAC))
0374   if ((Resultat = Fin_Emission (NumSocket))
0375       == erreur_fin_emission)
0376     return Resultat;
0377 #endif
0378 
0379 
0380   /* reception des parametres */
0381 
0382   if ((Resultat = Reception (NumSocket, (char *) &CR, taille_long, p_cr))
0383       != ok)
0384     return Resultat;
0385 
0386   if (CR == ok)
0387     {
0388       if ((Resultat = Reception_Unite (NumSocket, Unite, p_unite))
0389       != ok)
0390     return Resultat;
0391 
0392       if ((Resultat = Reception (NumSocket, (char *) NumVer, taille_long, p_numver))
0393       != ok)
0394     return Resultat;
0395 
0396       if ((Resultat = Reception (NumSocket, Date, TAILLE_DATE, p_date))
0397       != ok)
0398     return Resultat;
0399 
0400       if ((Resultat = Reception (NumSocket, Heure, TAILLE_HEURE, p_heure))
0401       != ok)
0402     return Resultat;
0403 
0404       if ((Resultat = Reception (NumSocket, (char *) NbMes, taille_long, p_nbmes))
0405       != ok)
0406     return Resultat;
0407 
0408       if ((Resultat = Reception (NumSocket, (char *) MaxReel, taille_long, p_maxreel))
0409       != ok)
0410     return Resultat;
0411 
0412       if ((Resultat = Reception (NumSocket, (char *) &TNb, taille_long, p_t))
0413       != ok)
0414     return Resultat;
0415 
0416       if ((Resultat = Reception (NumSocket, TType, TAILLE_FORMAT_SERVEUR, p_t))
0417       != ok)
0418     return Resultat;
0419 
0420       if ((Resultat = Reception_Tableau (NumSocket, T, TNb, TType, p_t))
0421       != ok)
0422     return Resultat;
0423 
0424       if ((Resultat = Reception (NumSocket, (char *) &YNb, taille_long, p_y))
0425       != ok)
0426     return Resultat;
0427 
0428       if ((YNb != 0) && (Y == NULL))
0429     {
0430       Fin_Communication (NumSocket);
0431       return (Gestion_Erreur (erreur_tableau_vide, p_y));
0432     }
0433 
0434       if ((Resultat = Reception (NumSocket, YType, TAILLE_FORMAT_SERVEUR, p_y))
0435       != ok)
0436     return Resultat;
0437 
0438       if ((Resultat = Reception_Tableau (NumSocket, Y, YNb, YType, p_y))
0439       != ok)
0440     return Resultat;
0441 
0442     }
0443   /* fin de communication */
0444 
0445   Fin_Communication (NumSocket);
0446 
0447   return CR;
0448 
0449 }
0450 
0451 /*----------------------------------------------------------------------------
0452 
0453                         TSGrpDeclenche
0454 
0455   But : fonction demandant au serveur de lui renvoyer les valeurs d'un groupe
0456         de signaux bruts pour une occurrence d'une declenche donnee
0457 
0458   Arguments :
0459         NomDon    : nom de la donnee
0460         NumChoc   : numero de choc
0461         NomDec    : nom d'une declenche
0462         Occur     : occurrence d'une declenche
0463         NbMax     : nombre maximum de mesures souhaitees
0464         Extract   : type d'extraction souhaitee
0465 
0466         Unite     : liste des unites des mesures rendues
0467         NumVer    : numero de version du createur
0468         Date      : date d'execution du diagnostic ou du traitement
0469         Heure     : heure  d'execution du diagnostic ou du traitement
0470         NbMes     : nombre de valeurs rendues
0471         MaxReel   : nombre de valeurs trouvees
0472         T         : tableau des valeurs des temps
0473         Y         : tableau des valeurs des mesures
0474 
0475   Retour          : compte-rendu d'execution
0476 
0477 ------------------------------------------------------------------------------*/
0478 Longint FAR_PASCAL
0479 TSGrpDeclenche (    char *NomDon,
0480             Longint NumChoc,
0481             char *NomDec,
0482             Longint Occur,
0483             Longint NbMax,
0484             Longint Extract,
0485             pS_Unite *Unite,
0486             Longint *NumVer,
0487             char *Date,
0488             char *Heure,
0489             Longint *NbMes,
0490             Longint *MaxReel,
0491             char HUGE *T,
0492             char HUGE *Y    )
0493 {
0494   Longint CR;
0495   Longint TNb;            /* taille en octets du tableau T  */
0496   Longint YNb;            /* taille en octets du tableau Y  */
0497   char TType[2];        /* type des elements du tableau T */
0498   char YType[2];        /* type des elements du tableau Y */
0499   Longint code_param;
0500 
0501 #if (client == MAC)
0502   ConnHandle NumSocket;        /* descripteur de la socket de communication */
0503 #else
0504   int NumSocket;        /* descripteur de la socket de communication */
0505 #endif
0506   short int CodeFonc;        /* code de la fonction TSLib appelee         */
0507   Longint Resultat;        /* compte-rendu d'execution du client        */
0508 
0509 
0510   /* test des pointeurs de chaines */
0511 
0512   code_param = ok;
0513 
0514   if (NomDon == NULL)
0515     code_param = p_nomdon;
0516   if (NomDec == NULL)
0517     code_param = p_nomdec;
0518   if (Date == NULL)
0519     code_param = p_date;
0520   if (Heure == NULL)
0521     code_param = p_heure;
0522   if (code_param != ok)
0523     return (Gestion_Erreur (erreur_chaine_vide, code_param));
0524 
0525   /* test des pointeurs de tableaux */
0526 
0527   if (T == NULL)
0528     code_param = p_t;
0529   if (code_param != ok)
0530     return (Gestion_Erreur (erreur_tableau_vide, code_param));
0531 
0532 
0533   /* debut de communication */
0534       if ((Resultat = Debut_Communication (&NumSocket, 1)) != ok)
0535         return Resultat;
0536 
0537   /* emission du code de la fonction */
0538   if(compress_on)
0539     CodeFonc = fonc_tsgrpdeclenche;
0540   else
0541     CodeFonc = fonc_tsgrpdeclenche - MAX_FUNCT_NUMBER;
0542   if ((Resultat = Emission (NumSocket, (char *) &CodeFonc, taille_short, p_codefonc))
0543       != ok)
0544     return Resultat;
0545 
0546   /* emission des parametres */
0547 
0548   if ((Resultat = Emission (NumSocket, NomDon, TAILLE_NOM_DONNEE, p_nomdon))
0549       != ok)
0550     return Resultat;
0551 
0552   if ((Resultat = Emission (NumSocket, (char *) &NumChoc, taille_long, p_numchoc))
0553       != ok)
0554     return Resultat;
0555 
0556   if ((Resultat = Emission (NumSocket, NomDec, TAILLE_NOM_DECLENCHE, p_nomdec))
0557       != ok)
0558     return Resultat;
0559 
0560   if ((Resultat = Emission (NumSocket, (char *) &Occur, taille_long, p_occur))
0561       != ok)
0562     return Resultat;
0563 
0564   if ((Resultat = Emission (NumSocket, (char *) &NbMax, taille_long, p_nbmax))
0565       != ok)
0566     return Resultat;
0567 
0568   if ((Resultat = Emission (NumSocket, (char *) &Extract, taille_long, p_extract))
0569       != ok)
0570     return Resultat;
0571 
0572 
0573   /* fin d'emission */
0574 
0575 #if ((client!=PC) && (client !=MAC))
0576   if ((Resultat = Fin_Emission (NumSocket))
0577       == erreur_fin_emission)
0578     return Resultat;
0579 #endif
0580 
0581   /* reception des parametres */
0582 
0583   if ((Resultat = Reception (NumSocket, (char *) &CR, taille_long, p_cr))
0584       != ok)
0585     return Resultat;
0586 
0587   if (CR == ok)
0588     {
0589       if ((Resultat = Reception_Unite (NumSocket, Unite, p_unite))
0590       != ok)
0591     return Resultat;
0592 
0593       if ((Resultat = Reception (NumSocket, (char *) NumVer, taille_long, p_numver))
0594       != ok)
0595     return Resultat;
0596 
0597       if ((Resultat = Reception (NumSocket, Date, TAILLE_DATE, p_date))
0598       != ok)
0599     return Resultat;
0600 
0601       if ((Resultat = Reception (NumSocket, Heure, TAILLE_HEURE, p_heure))
0602       != ok)
0603     return Resultat;
0604 
0605       if ((Resultat = Reception (NumSocket, (char *) NbMes, MAX_MESURE * taille_long, p_nbmes))
0606       != ok)
0607     return Resultat;
0608 
0609       if ((Resultat = Reception (NumSocket, (char *) MaxReel, taille_long, p_maxreel))
0610       != ok)
0611     return Resultat;
0612 
0613       if ((Resultat = Reception (NumSocket, (char *) &TNb, taille_long, p_t))
0614       != ok)
0615     return Resultat;
0616 
0617       if ((Resultat = Reception (NumSocket, TType, TAILLE_FORMAT_SERVEUR, p_t))
0618       != ok)
0619     return Resultat;
0620 
0621       if ((Resultat = Reception_Tableau (NumSocket, T, TNb, TType, p_t))
0622       != ok)
0623     return Resultat;
0624 
0625       if ((Resultat = Reception (NumSocket, (char *) &YNb, taille_long, p_y))
0626       != ok)
0627     return Resultat;
0628 
0629       if ((YNb != 0) && (Y == NULL))
0630     {
0631       Fin_Communication (NumSocket);
0632       return (Gestion_Erreur (erreur_tableau_vide, p_y));
0633     }
0634 
0635       if ((Resultat = Reception (NumSocket, YType, TAILLE_FORMAT_SERVEUR, p_y))
0636       != ok)
0637     return Resultat;
0638 
0639       if ((Resultat = Reception_Tableau (NumSocket, Y, YNb, YType, p_y))
0640       != ok)
0641     return Resultat;
0642 
0643     }
0644 
0645   /* fin de communication */
0646 
0647   Fin_Communication (NumSocket);
0648 
0649   return CR;
0650 
0651 }

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