/*
%-----------------------------------------------------------------------------
% PROJET  : STS INTERFACE
%
% MODULE  : HEADER STS INTERFACE
%
% VERSION : cf #define ci-après
%
% FICHIER : sts.h
%
% Déclaration des prototypes des fonctions STS - INTERFACE
%-----------------------------------------------------------------------------
%
% EDS DHU - 09/04/03 - Création du .h
%
% EDS OCL - 06/06/03 - Defect 91 : Rectification du prototype de InitTrace()
%
% EDS OCL - 04/07/03 - Defect 115 : Nettoyage de stsitf.h (devenu sts.h)
%
%-----------------------------------------------------------------------------
*/

#ifndef __STSITF_H
#define __STSITF_H
#define __STSITF_VERSION "0103"
/* Ne pas oublier d'impacter idef.h aussi */

#ifdef __cplusplus
extern "C" {
#endif

/*
% Bibliothèques ANSI ou système
%------------------------------
*/


/*
% Fichiers h inclus
%------------------
*/

#include "sys_dep.h"
/*
% Macros et Constantes
%---------------------
*/

/* OCL - Defect 115 : Suppression du #define G_xxx ici même */

/* OCL - Defect 115 : Suppression du second #ifdef _cplusplus ici même */


/*********************************************************************************
 ************************* Fonctions réentrantes *********************************
 *********************************************************************************/

/*
%-----------------------------------------------------------------------------
% STS_Tarification
%
% Rôle : Tarification de la part complémentaire des actes de la facture
%
% Paramètres d'entrée :
%			MotifAppel (char) : 1er appel ('P') ou Appel sur echec de
%				tarification ('E').
%			ZDonneesEntree (void*) : Zone d'échange fournie par le Progiciel
%				contenant toutes les informations sur la facture
%			TailleDonneesEntree (size_t) : Taille de la zone d'échange Zin
%
% Paramètres de sortie :
%			ZDonneesSortie (void**) : Zone d'échange fournie par le module STS appelé
%				contenant toutes les informations modifiées de la facture
%				en entrée et de nouvelles informations.
%			TailleDonneesSortie (size_t*) : Taille de la zone d'échange Zout
%
% Valeur retournée :
%			OK si pas d'erreur
%			ERR_STS_NON_INITIALISE si module STS non initialisé
%        et les codes d'erreurs de la tarification du module STS appelé
% 
%-----------------------------------------------------------------------------
*/
/* OCL - Defect 115 : Remplacement PTR par FARPTR */
typedef unsigned short (API_ENTRY FARPTR STS_Tarification)(char	MotifAppel, void FARPTR	ZDonneesEntree,
														   size_t TailleDonneesEntree, void FARPTR FARPTR ZDonneesSortie,
														   size_t FARPTR TailleDonneesSortie);

/* Fonction simplifiée */
/* OCL - Defect 115 : Remplacement STS_SIM par SGD */
#ifdef SGD
typedef unsigned short (API_ENTRY FARPTR STS_Tarification_S)(char MotifAppel, unsigned short NumeroSession);
#endif

/*
%-----------------------------------------------------------------------------
% STS_Assistance
%
% Rôle : Assistance à la facturation.
%
% Paramètres d'entrée :
%			MotifAppel (char) : 1er appel ('P') ou Appel sur echec de
%				tarification ('E').
%			PorteeAppel (ushort) : 0 pour une assistance sur toute la facture.
%				1..n pour une assistance sur un acte de rang donné /zone
%			ZDonneesEntree (void*) : Zone d'échange fournie par le Progiciel
%				contenant toutes les informations sur la facture
%			TailleDonneesEntree (size_t) : Taille de la zone d'échange Zin
%
% Paramètres de sortie :
%			ZDonneesSortie (void**) : Zone d'échange fournie par le module STS appelé
%			TailleDonneesSortie (size_t*) : Taille de la zone d'échange Zout
%
% Valeur retournée : (idem Tarification)
%			OK si pas d'erreur
%			ERR_STS_NON_INITIALISE si module STS non initialisé
%        et les codes d'erreurs de la tarification du module STS appelé
%
%-----------------------------------------------------------------------------
*/
/* OCL - Defect 115 : Remplacement PTR par FARPTR */
typedef unsigned short (API_ENTRY FARPTR STS_Assistance)(char MotifAppel, unsigned short PorteeAppel,
														 void FARPTR ZDonneesEntree, size_t	TailleDonneesEntree,
														 void FARPTR FARPTR	ZDonneesSortie, size_t FARPTR TailleDonneesSortie);

/* Fonction simplifiée */
#ifdef SGD
typedef unsigned short (API_ENTRY FARPTR STS_Assistance_S)(char MotifAppel, unsigned short PorteeAppel,
														   unsigned short NumeroSession);
#endif

/*
%-----------------------------------------------------------------------------
% STS_LireVersion
%
% Rôle : Lecture de la version de ce module et du fichier de ces tables externes
%			dans le groupe 3780. Appeller la lecture de version de chaque module STS 
%        puis recopier la réponse 3780 de chacun dans la zone de sortie.
%
% Paramètres d'entrée : aucun
%
% Paramètres de sortie :
%			ZDonneesSortie (void**) : Zone d'échange fournie par ce module
%				contenant les versions (grp 3780) demandées.
%			TailleDonneesSortie (size_t*) : Taille de la zone d'échange Zout
%
% Valeur retournée :
%			OK si pas d'erreur
%			ERR_STS_NON_INITIALISE si module STS non initialisé
%			ERR_ZOUT si ZDonneesSortie==NULL ou TailleDonneesSortie==NULL
%			ERR_ZONE_ALLOC si mémoire insuffisante pour allouer la Zout
%
%-----------------------------------------------------------------------------
*/
/* OCL - Defect 115 : Remplacement PTR par FARPTR */
typedef unsigned short (API_ENTRY FARPTR STS_LireVersion)(void FARPTR FARPTR ZDonneesSortie, size_t FARPTR TailleDonneesSortie);

/* Fonction simplifiée */
#ifdef SGD
typedef unsigned short (API_ENTRY FARPTR STS_LireVersion_S)(unsigned short NumeroSession);
#endif

/*
%-----------------------------------------------------------------------------
% STS_InitTrace
%
% Rôle : Initialisation des traces du module STS-Interface dans un fichier log.
%			Cette fonction permet d'activer ou désactiver (niveau 0) les
%			traces. Une activation requiert un nom de fichier et un mode
%			d'ouverture. Un changement de niveau peut se faire sur le même
%			fichier ou sur un différent s'il est précisé en entrée
%
% Paramètres d'entrée :
%			NomFichier (char*) : Chemin et nom de fichier de trace
%			ModeOuverture (char*) : Mode d'ouverture du fichier de trace
%				"a", "w" (,"ab", "wb").
%			Module (ushort) : n° de module 0 à 5 (6=TOUS)
%			Niveau (uchar) : Niveau de trace : 0 signifie pas de trace, 1
%				signifie traces de profondeur 8 et >=2 signifie traces sans limite
%				de profondeur et activation traces module STS_SI
%
% Paramètres de sortie : aucun
%
% Valeur retournée :
%			OK si pas d'erreur
%			ERR_PARAM si NomFichier/ModeOuverture incorrect quand Niveau > 0
%			ERR_TRACE_FILE si erreur d'ouverture du fichier de trace
%
%-----------------------------------------------------------------------------
*/
/* OCL - Defect 91 : Rectification du prototype de InitTrace() */
/* OCL - Defect 115 : Remplacement PTR par FARPTR */
typedef unsigned short (API_ENTRY FARPTR STS_InitTrace)(const char FARPTR pathConf, const char FARPTR	ModeOuverture,
														unsigned short Module, unsigned char Niveau);

/*********************************************************************************
 ************************* Fonctions d'initialisation et de terminaison  *********
 *********************************************************************************/

/*
%-----------------------------------------------------------------------------
% STS_InitLIB
%
% Rôle : Initialisation du module STS-Interface : Chargement des tables externes
%			et suivi de parc. Appel de l'nitialisation de chaque module STS 
%
% Paramètres d'entrée : aucun
%			
% Paramètres de sortie : aucun
%
% Valeur retournée :
%			OK si pas d'erreur
%			ERR_INTERNE_ITF si erreur interne du module STS-Interface (ou STS SI)
%			ERR_MEM_DISPO si plus de mémoire disponible
%			ERR_PKG_PATH_INI si le chemin d'accès au fichier binaire est
%				inconnu (fichier de configuration inaccessible ou information
%				manquante)
%			ERR_ITF_PKG_ACCES si fichier binaire de table inaccessible
%			ERR_ITF_PKG_VER si version du fichier incohérent avec version du
%				module STS-Interface (dans les deux sens)
%			ERR_ITF_PKG_CRC si CRC du fichier binaire est incorrect
%			ERR_ITF_PKG_FORME si format du fichier incorrect
%			ERR_ITF_PKG_INCPT s'il manque une table dans le fichier binaire
%			ERR_ITF_PKG_NOM si le nom du fichier est différent du nom dans
%				l'en-tête du fichier.
%			les codes suivants ne sont pas des erreurs fatales (non bloquant)
%				mais juste des avertissements
%				WAR_STS_DEJA_INITIALISE si module déjà initialisé
%				WAR_ADM_PATH si chemin au suivi de parc non trouvé dans fichier
%					de configuration des produits SV
%				WAR_ADM_FILE si impossible de créer les fichiers de suivi de
%					parc
%        ET les codes de retour de chaque module STS appelé
%
%-----------------------------------------------------------------------------
*/
/* extern unsigned short API_ENTRY STS_InitLIB(); */
/*
%-----------------------------------------------------------------------------
% STS_InitLIB2
%
% Rôle : Initialisation du module STS-Interface : Chargement des tables externes
%			et suivi de parc. Appel de l'nitialisation de chaque module STS 
%
% Paramètres d'entrée :
%			NomFichierIni (char*) : Chemin et nom du fichier de configuration des
%				produits SESAM Vitale du poste de travail (sesam.ini)
%
% Paramètres de sortie : aucun
%
% Valeur retournée :
%			OK si pas d'erreur
%			ERR_INTERNE_ITF si erreur interne du module STS-Interface (ou STS SI)
%			ERR_MEM_DISPO si plus de mémoire disponible
%			ERR_PKG_PATH_INI si le chemin d'accès au fichier binaire est
%				inconnu (fichier de configuration inaccessible ou information
%				manquante)
%			ERR_ITF_PKG_ACCES si fichier binaire de table inaccessible
%			ERR_ITF_PKG_VER si version du fichier incohérent avec version du
%				module STS-Interface (dans les deux sens)
%			ERR_ITF_PKG_CRC si CRC du fichier binaire est incorrect
%			ERR_ITF_PKG_FORME si format du fichier incorrect
%			ERR_ITF_PKG_INCPT s'il manque une table dans le fichier binaire
%			ERR_ITF_PKG_NOM si le nom du fichier est différent du nom dans
%				l'en-tête du fichier.
%			les codes suivants ne sont pas des erreurs fatales (non bloquant)
%				mais juste des avertissements
%				WAR_STS_DEJA_INITIALISE si module déjà initialisé
%				WAR_ADM_PATH si chemin au suivi de parc non trouvé dans fichier
%					de configuration des produits SV
%				WAR_ADM_FILE si impossible de créer les fichiers de suivi de
%					parc
%        ET les codes de retour de chaque module STS appelé
%
%-----------------------------------------------------------------------------
*/
typedef unsigned short (API_ENTRY FARPTR STS_InitLIB2)(const char FARPTR nomFichierIni);

/*
%-----------------------------------------------------------------------------
% STS_TermLIB
%
% Rôle : Terminaison du module STS-Interface : Déchargement des tables externes.
%
% Paramètres d'entrée : aucun
%
% Paramètres de sortie : aucun
%
% Valeur retournée :
%			OK si pas d'erreur
%			ERR_INTERNE_ITF si erreur interne du module STS-Interface (ou STS SI)
%
%-----------------------------------------------------------------------------
*/
typedef unsigned short (API_ENTRY FARPTR STS_TermLIB)(void);

/*********************************************************************************
 ************************* Fonctions de gestion de la mémoire  *******************
 *********************************************************************************/

/*
%-----------------------------------------------------------------------------
% STS_AllouerZoneMem
%
% Rôle : Allocation d'une zone d'échange de sortie par STS Interface.
%			Cette fonction permet la réallocation d'une zone d'échange.
%			L'allocation d'une nouvelle zone d'échange nécessite un pointeur
%			NULL en entrée !
%			Cette fonctio est à utiliser conjointement avec STS_LibererZoneMem
%			pour faciliter le Debugage (zone allouée par l'écrivain)
%
% Paramètres d'entrée :
%			Taille (size_t) : Taille de la zone d'échange à allouer.
%
% Paramètres d'entrée et de sortie :
%			Zone (void**) : Zone d'échange préallouée en entrée (ou NULL).
%				Zone allouée (réallouée) par le module STS-Interface.
%
% Valeur retournée :
%			OK si pas d'erreur
%			ERR_ZOUT si Zone==NULL ou Taille==0
%			ERR_ZONE_ALLOC si plus de mémoire disponible
%
%-----------------------------------------------------------------------------
*/
/* OCL - Defect 115 : Remplacement PTR par FARPTR */
typedef unsigned short (API_ENTRY FARPTR STS_AllouerZoneMem)(void FARPTR FARPTR	Zone, size_t Taille);


/*
%-----------------------------------------------------------------------------
% STS_LibererZoneMem
%
% Rôle : Libération de la zone d'échange de sortie par STS Interface.
%
% Paramètres d'entrée :
%			Zone (void*) : Zone d'échange à libérer (allouée précédemment par
%				le module STS-Interce par STS_AllouerZoneMem).
%
% Paramètres de sortie : aucun
%
% Valeur retournée : aucune
%
%-----------------------------------------------------------------------------
*/
/* OCL - Defect 115 : Remplacement PTR par FARPTR */
typedef void (API_ENTRY FARPTR STS_LibererZoneMem)(void FARPTR Zone);

#ifdef __cplusplus
}
#endif

#endif /* __STSITF_H */