You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitlib.pub/MITLIB/Include/ETEL/etne20.h

291 lines
7.6 KiB
C++

/*
* etne20.h
*
* Copyright (c) 1997-2008 ETEL SA. All Rights Reserved.
*
* This software is the confidential and proprietary informatione of ETEL SA
* ("Confidential Information"). You shall not disclose such Confidential
* Information and shall use it only in accordance with the terms of the
* license agreement you entered into with ETEL.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. ETEL AND ITS LICENSORS SHALL NOT BE
* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL ETEL OR ITS
* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF ETEL HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications; or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*
*/
/**
* This header file contains public declaration of etne library.\n
* This library allows enabling access to already connected hardware for other process
* This library in conformed to POSIX 1003.1c
* @file etne20.h
*/
#ifndef _ETNE20_H
#define _ETNE20_H
/*** libraries ***/
#ifdef __cplusplus
#include <typeinfo.h>
#endif
/*** litterals ***/
#ifdef __WIN32__ /* defined by Borland C++ Builder */
#ifndef WIN32
#define WIN32
#endif
#endif
#ifdef __cplusplus
#ifdef ETEL_OO_API /* defined by the user when he need the Object Oriented interface */
#define ETNE_OO_API
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
/**
* @defgroup ETNEAll ETNE All functions
*/
/*@{*/
/*@}*/
/**
* @defgroup ETNEErrorsAndWarnings ETNE Errors and warnings
*/
/*@{*/
/*@}*/
/**
* @defgroup ETNEVersion ETNE Library version access functions
*/
/*@{*/
/*@}*/
/**
* @defgroup ETNELibrary ETNE Connection enabling functions
*/
/*@{*/
/*@}*/
#ifndef __BYTE_ORDER
#if defined WIN32 || defined QNX4
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __BYTE_ORDER __LITTLE_ENDIAN /* define byte order for INTEL processor */
#endif /*WIN32 || QNX4*/
#ifdef POSIX
#ifdef SOLARIS
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#ifdef _BIG_ENDIAN
#define __BYTE_ORDER __BIG_ENDIAN /* define byte order for SPARC processor */
#else
#define __BYTE_ORDER __LITTLE_ENDIAN /* define byte order for SPARC processor */
#endif
#endif /*SOLARIS*/
#ifdef LINUX
#include <endian.h>
#endif /*LINUX*/
#ifdef QNX6
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#ifdef __BIGENDIAN__
#define __BYTE_ORDER __BIG_ENDIAN /* define byte order for SPARC processor */
#else
#define __BYTE_ORDER __LITTLE_ENDIAN /* define byte order for SPARC processor */
#endif
#endif /*QNX6*/
#endif /*POSIX*/
#endif /*BYTE_ORDER*/
/*
* error codes - c
*/
#ifndef ETNE_OO_API
#define ETNE_EPORTMAX -704 /**< maximal number of user port exceeded */
#define ETNE_EPRESENT -703 /**< an etne or a custom application is already running for this url */
#define ETNE_EINTERNAL -702 /**< some internal error in the etel software */
#define ETNE_ESYSTEM -701 /**< some system resource return an error */
#define ETNE_EBADPARAM -700 /**< one of the parameter is not valid */
#endif /* ETNE_OO_API */
/*** types ***/
/*
* type modifiers
*/
#ifdef WIN32
#define _ETNE_EXPORT __cdecl /* function exported by static library */
#endif /* WIN32 */
#ifdef QNX4
#define _ETNE_EXPORT __cdecl /* function exported by library */
#endif /* QNX4 */
#ifdef POSIX
#define _ETNE_EXPORT /* function exported by library */
#endif /* POSIX */
/*
* hidden structure for library clients
*/
#ifndef ETB
#define ETB void
struct EtbBus { ETB *etb; };
#endif
#ifndef STA
#define STA void
#endif
/*** prototypes ***/
/**
* @addtogroup ETNEAll
* @{
*/
char_cp _ETNE_EXPORT etne_translate_error (int code);
void _ETNE_EXPORT etne_connection_clear(int sta_port_idx);
void _ETNE_EXPORT etne_connection_destroy(int sta_port_idx);
int _ETNE_EXPORT etne_connection_init(int sta_port_idx,
ETB *bus,
char *name,
char *url,
int flags,
char *baudrate,
char *accept_driver_name,
int accept_driver_port,
int port_properties_driver_port,
STA *sta);
int _ETNE_EXPORT etne_accept_destroy(int port_idx);
int _ETNE_EXPORT etne_accept_init(int port_idx, char *accept_driver_name, int accept_driver_port);
int _ETNE_EXPORT etne_start_custom(ETB *bus, int accept_driver_port, char *name);
int _ETNE_EXPORT etne_stop_custom(ETB *bus, int accept_port);
int _ETNE_EXPORT etne_connection_spy(int sta_port_idx);
dword _ETNE_EXPORT etne_get_version();
dword _ETNE_EXPORT etne_get_edi_version();
time_t _ETNE_EXPORT etne_get_build_time();
int _ETNE_EXPORT etne_wait_event(int port_idx, int timeout);
/*@}*/
#ifdef __cplusplus
} /* extern "C" */
#endif
/*
* ETNE constants - c++
*/
#ifdef ETNE_OO_API
/*
* generate exceptions from error codes
*/
#define ERRCHK(a) do { int _err = (a); if(_err) throw EtneException(_err); } while(0)
/*
* ETNE exception - c++
*/
class EtneException {
/* error codes - c++ */
public:
enum {EBADPARAM = -700 }; /* one of the parameter is not valid */
enum {EINTERNAL = -702 }; /* some internal error in the etel software */
enum {EPORTMAX = -704 }; /* maximal number of user port exceeded */
enum {EPRESENT = -703 }; /* an etne or a custom application is already running for this url */
enum {ESYSTEM = -701 }; /* some system resource return an error */
/* exception code */
private:
int code;
/* constructor */
protected:
EtneException(int e) { code = e; };
/* translate error code */
public:
static char_cp translate(int code) {
return etne_translate_error(code);
}
/* get error description */
public:
int getCode() {
return code;
}
const char *getText() {
return translate(code);
}
};
/**
* Etne class - C++
*/
class Etne {
/* constructors */
public:
Etne(void) {
}
public:
/* functions */
void startCustom(EtbBus etb, int accept_port, char *name) {
ERRCHK(etne_start_custom(etb, accept_port, name));
}
void stopCustom(EtbBus etb, int accept_port) {
ERRCHK(etne_stop_custom(etb, accept_port));
}
static char_cp translateError(int code) {
return etne_translate_error(code);
}
static dword getVersion() {
return etne_get_version();
}
static dword getEdiVersion() {
return etne_get_edi_version();
}
static time_t getBuildTime() {
return etne_get_build_time();
}
};
#undef ERRCHK
#endif /* ETNE_OO_API */
#endif /* _ETNE20_H */