2019-04-08 13:45:23 -04:00

285 lines
11 KiB
C

#ifndef __SEAMAX_H__
#define __SEAMAX_H__
#ifdef LINUX
#include "wincompat.h"
#endif
typedef void *LPVOID;
#define SM_HANDLE void*
#define SME_HANDLE void*
#define SDL_HANDLE void*
/// \page Enumerations Global Types and Enumerations.
/// Listed here are the types, enumerations, and definitions used throughout the %SeaMAX library.
///
/// \section semax_enumerations SeaMAX Enumerations
///
/// \subsection sm_deviceconfig DeviceConfig
/// \code
typedef struct configuration
{
int model;
int commType;
int baudrate;
int parity;
int firmware;
} DeviceConfig;
/// \endcode
extern "C"
{
extern int __stdcall SM_Version(int* major, int* minor, int* revision, int* build);
extern int __stdcall SM_Open(SM_HANDLE* handle, char* connection);
extern int __stdcall SM_ConfigureSerialConnection(SM_HANDLE handle, int baudrate, int parity);
extern int __stdcall SM_ConfigureSerialTimeouts(SM_HANDLE handle, int multiple, int constant, int interval);
extern int __stdcall SM_SelectDevice(SM_HANDLE handle, int slaveID);
extern int __stdcall SM_GetDeviceConfig(SM_HANDLE handle, DeviceConfig* config);
extern int __stdcall SM_Close(SM_HANDLE handle);
extern int __stdcall SM_GetAnalogInputConfig(SM_HANDLE handle, unsigned char* reference, unsigned char* mode);
extern int __stdcall SM_GetAnalogInputRanges(SM_HANDLE handle, unsigned char* ranges);
extern int __stdcall SM_SetAnalogInputConfig(SM_HANDLE handle, unsigned char reference, unsigned char mode);
extern int __stdcall SM_SetAnalogInputRanges(SM_HANDLE handle, unsigned char* ranges);
extern int __stdcall SM_GetAnalogOutputRanges(SM_HANDLE handle, unsigned char* ranges);
extern int __stdcall SM_GetPIOPresets(SM_HANDLE handle, unsigned char* config);
extern int __stdcall SM_SetPIOPresets(SM_HANDLE handle, unsigned char* config);
extern int __stdcall SM_GetPIODirection(SM_HANDLE handle, unsigned char* config);
extern int __stdcall SM_SetPIODirection(SM_HANDLE handle, unsigned char* config);
extern int __stdcall SM_ReadPIO(SM_HANDLE handle, unsigned char* values);
extern int __stdcall SM_WritePIO(SM_HANDLE handle, unsigned char* values);
extern int __stdcall SM_SetCommunications(SM_HANDLE handle, int baudrate, int parity);
extern int __stdcall SM_SetSoftwareAddress(SM_HANDLE handle, int slaveID);
extern int __stdcall SM_ReadDigitalInputs(SM_HANDLE handle, int start, int number, unsigned char *values);
extern int __stdcall SM_ReadAnalogInputs(SM_HANDLE handle, int start, int number, double* analogValues, unsigned char* ranges, unsigned char *byteValues);
extern int __stdcall SM_WriteDigitalOutputs(SM_HANDLE handle, int start, int number, unsigned char *values);
extern int __stdcall SM_ReadDigitalOutputs(SM_HANDLE handle, int start, int number, unsigned char *values);
extern int __stdcall SM_WriteAnalogOutputs(SM_HANDLE handle, int start, int number, double* analogValues, unsigned char* ranges, unsigned char *byteValues);
extern int __stdcall SM_SetBridgeType(SM_HANDLE handle, int bridgeType);
// Customer specific methods (Oncology Inc.)
extern int __stdcall SM_GlobalCommsReset(SM_HANDLE handle);
#ifndef LINUX
extern int __stdcall SM_NotifyInputState(SM_HANDLE handle, int cancel);
extern int __stdcall SM_NotifyOnInputChange(SM_HANDLE handle, int start, int number, unsigned char* values, int delay, int blocking);
#endif
// Deprecated Functions
extern int __stdcall SM_GetConfig(SM_HANDLE handle, int* model, int* commType, int* baudrate, int* parity);
extern int __stdcall SM_ReadDiscreteInputs(SM_HANDLE handle, int start, int number, unsigned char *values);
extern int __stdcall SM_ReadHoldingRegisters(SM_HANDLE handle, int start, int number, unsigned char *values);
extern int __stdcall SM_ReadInputRegisters(SM_HANDLE handle, int start, int number, unsigned char *values);
extern int __stdcall SM_WriteCoils(SM_HANDLE handle, int start, int number, unsigned char *values);
extern int __stdcall SM_ReadCoils(SM_HANDLE handle, int start, int number, unsigned char *values);
extern int __stdcall SM_WriteHoldingRegisters(SM_HANDLE handle, int start, int number, unsigned char *values);
extern int __stdcall SM_GetADDAExtendedConfig(SM_HANDLE handle, int* multiplierEnabled, unsigned char* daConfig);
extern int __stdcall SM_SetADDAConfig(SM_HANDLE handle, unsigned char* deviceConfig, unsigned char* channelsConfig);
extern int __stdcall SM_GetADDAConfig(SM_HANDLE handle, unsigned char* deviceConfig, unsigned char* channelsConfig);
extern int __stdcall SM_AtoDConversion(SM_HANDLE handle, double *value, unsigned char *data, int channelRange);
extern int __stdcall SM_DtoAConversion(SM_HANDLE handle, double value, unsigned char *data, int channelRange);
extern int __stdcall SME_Initialize(SME_HANDLE* handle);
extern int __stdcall SME_Cleanup(SME_HANDLE handle);
extern int __stdcall SME_SearchForModules(SME_HANDLE handle);
extern int __stdcall SME_FirstModule(SME_HANDLE handle);
extern int __stdcall SME_NextModule(SME_HANDLE handle);
extern int __stdcall SME_Ping(SME_HANDLE handle);
extern int __stdcall SME_ModuleByName(SME_HANDLE handle, char* moduleName);
extern int __stdcall SME_ModuleByIP(SME_HANDLE handle, char* ipAddress);
extern int __stdcall SME_ModuleByMAC(SME_HANDLE handle, char* mac);
extern int __stdcall SME_ModuleCount(SME_HANDLE handle);
extern int __stdcall SME_GetName(SME_HANDLE handle, char* moduleName);
extern int __stdcall SME_GetNetworkConfig(SME_HANDLE handle, char* ipAddress, char* netmask, char* gateway);
extern int __stdcall SME_GetNetworkConfigBytes(SME_HANDLE handle, unsigned char* ipAddress, unsigned char* netmask, unsigned char* gateway);
extern int __stdcall SME_GetMACAddress(SME_HANDLE handle, char* address);
extern int __stdcall SME_GetDHCPConfig(SME_HANDLE handle, int* status);
extern int __stdcall SME_GetType(SME_HANDLE handle, char* type);
extern int __stdcall SME_GetFirmwareVersion(SME_HANDLE handle, int* major, int* minor);
extern int __stdcall SME_GetNetworkSerialParams(SME_HANDLE handle, int* baudrate, int* parity);
extern int __stdcall SME_SetName(SME_HANDLE handle, char *name);
extern int __stdcall SME_SetNetworkConfig(SME_HANDLE handle, char* ipAddress, char* netmask, char* gateway);
extern int __stdcall SME_SetNetworkConfigBytes(SME_HANDLE handle, unsigned char* ipAddress, unsigned char* netmask, unsigned char* gateway);
extern int __stdcall SME_SetDHCPConfig(SME_HANDLE handle, int status);
extern int __stdcall SME_RebootModule(SME_HANDLE handle);
extern int __stdcall SME_SetNetworkSerialParams(SME_HANDLE handle, int baudrate, int parity);
extern int __stdcall SME_GetNetworkSerialParams(SME_HANDLE handle, int* baudrate, int* parity);
extern int __stdcall SME_GetWirelessConfig(SME_HANDLE handle, int* network, char* SSID, int* channel, int* security, int* keyType);
extern int __stdcall SME_SetWirelessConfig(SME_HANDLE handle, int network, char* SSID, int channel, int security, int keyType, char* key);
extern int __stdcall SME_ARPAddress(SME_HANDLE handle, char* ipAddress);
extern int __stdcall SME_IsReachable(SME_HANDLE handle);
extern int __stdcall SDL_Initialize(SDL_HANDLE* handle);
extern int __stdcall SDL_Cleanup(SDL_HANDLE handle);
extern int __stdcall SDL_SearchForDevices(SDL_HANDLE handle);
extern int __stdcall SDL_FirstDevice(SDL_HANDLE handle);
extern int __stdcall SDL_NextDevice(SDL_HANDLE handle);
extern int __stdcall SDL_DeviceCount(SDL_HANDLE handle);
extern int __stdcall SDL_GetName(SDL_HANDLE handle, char* deviceName);
extern int __stdcall SDL_GetModel(SDL_HANDLE handle, int* model);
extern int __stdcall SDL_GetDeviceID(SDL_HANDLE handle, int* id);
extern int __stdcall SDL_GetSerial(SDL_HANDLE handle, char* serialNumber);
extern int __stdcall SDL_GetNameBySerial(SDL_HANDLE handle, char* serialNumber, char* deviceName);
}
#ifndef ENUMERATIONS
#define ENUMERATIONS
///
/// \page Enumerations
/// \subsection sm_baudrates Baudrates
///
/// \code
enum
{
SM_BAUD_INVALID = 0,
SM_BAUD_1200 = 1,
SM_BAUD_2400 = 2,
SM_BAUD_4800 = 3,
SM_BAUD_9600 = 4,
SM_BAUD_14400 = 5,
SM_BAUD_19200 = 6,
SM_BAUD_28800 = 7,
SM_BAUD_38400 = 8,
SM_BAUD_57600 = 9,
SM_BAUD_115200 = 10
};
/// \endcode
///
/// \page Enumerations
/// \subsection sm_databits Databits
/// \code
enum
{
SM_DATABITS_5 = 5,
SM_DATABITS_6 = 6,
SM_DATABITS_7 = 7,
SM_DATABITS_8 = 8
};
/// \endcode
///
/// \page Enumerations
/// \subsection sm_parity Parity
/// \code
enum
{
SM_PARITY_NONE = 0,
SM_PARITY_ODD = 1,
SM_PARITY_EVEN = 2,
SM_PARITY_MARK = 3,
SM_PARITY_SPACE = 4
};
/// \endcode
///
/// \page Enumerations
/// \subsection sm_stopbits Stopbits
/// \code
enum
{
SM_STOPBITS_1 = 0,
SM_STOPBITS_1_5 = 1,
SM_STOPBITS_2 = 2
};
/// \endcode
///
/// \page Enumerations
/// \subsection sm_comtype Communications Type
/// \code
enum
{
SM_COMTYPE_RS485 = 0,
SM_COMTYPE_ETHERNET = 1,
SM_COMTYPE_USB = 2,
SM_COMTYPE_RS232 = 3,
SM_COMTYPE_EXPANSION = 4,
SM_COMTYPE_RS422 = 5,
SM_COMTYPE_WIRELESS = 6,
SM_COMTYPE_INTELLIGENT = 7,
SM_COMTYPE_P_O_ETH = 8,
SM_COMTYPE_P_O_USB = 9
};
/// \endcode
///
/// \subsection ad_reference Analog to Digital Voltage Reference
/// \code
enum
{
ANALOG = 0,
GROUND = 1,
AD_REFERENCE = 2,
FLOATING = 3,
DA_CHANNEL_1 = 4,
DA_CHANNEL_2 = 8
};
/// \endcode
///
/// \subsection ad_channel_modes Analog to Digital Channel Modes
/// \code
enum
{
SINGLE_ENDED = 0,
DIFFERENTIAL = 1,
CURRENT_LOOP = 2
};
/// \endcode
///
/// \subsection channel_ranges Channel Range Values
/// \code
enum
{
ZERO_TO_FIVE = 0,
PLUS_MINUS_FIVE = 1,
ZERO_TO_TEN = 2,
PLUS_MINUS_TEN = 3,
ZERO_TO_FIFTEEN = 2,
PLUS_MINUS_FIFTEEN = 3
};
/// \endcode
///
/// \section sme_enumerations SeaMAX Ethernet Enumerations
///
/// \subsection network_types Network Types
/// \code
enum
{
NETWORK_INFRASTRUCTURE = 0,
NETWORK_ADHOC = 1
};
/// \endcode
///
/// \subsection security_enum Security Type
/// \code
enum
{
SECURITY_NONE = 0,
SECURITY_WEP_OPEN_64 = 1,
SECURITY_WEP_SHARED_64 = 2,
SECURITY_WEP_OPEN_128 = 3,
SECURITY_WEP_SHARED_128 = 4,
SECURITY_WPA_TKIP = 5,
SECURITY_WPA2_AES = 6,
SECURITY_UNKNOWN = 0xFF
};
/// \endcode
///
/// \subsection seckey_enum Key Type
/// \code
enum
{
HEX_KEY = 0,
PASSPHRASE_KEY = 1
};
/// \endcode
#endif
#endif