/cvi/instr/MPOD/MPOD.c |
---|
0,0 → 1,83 |
#include <windows.h> |
#include <cvirte.h> |
#include <utility.h> |
#include <stdio.h> |
#include <stdarg.h> |
#include "WIENER_SNMP.h" |
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, |
LPSTR lpszCmdLine, int nCmdShow) { |
double ret; |
// double voltage; |
double vSet=0; |
int ch=0; |
int iret; |
// int i, j; |
// oid oidStr[MAX_OID_LEN]; |
// size_t lengthOidStr; |
HSNMP crate1; |
if (InitCVIRTE (hInstance, 0, 0) == 0) |
return -1; /* out of memory */ |
if(!snmpInit()) return 1; // basic init |
crate1 = snmpOpen("arich-mpod1.kek.jp"); // open TCP/IP socket |
if(!crate1) return 1; |
printf("-----------------------------------------------------------------\n"); |
iret=getMainSwitch(crate1); |
printf("Main Switch = %i\n", iret); |
// strcpy(oidStr,"moduleNumber.0"); |
// strcpy(oidStr,"fanNominalSpeed.0"); |
// iret=snmpGetInt(crate1, oidStr, strlen(oidStr)); |
// printf("Module Number = %i\n", iret); |
vSet = getOutputVoltage(crate1, ch); |
printf("Output Voltage %i = %f.\n", ch, vSet); |
//Test Channel Status |
iret=getChannelSwitch(crate1, ch); |
printf("Channel Status %i = %i\n", ch, iret); |
//Test Reading the Sense Measurement |
ret = getOutputSenseMeasurement(crate1, ch); |
printf("Sense Voltage = %f\n", ret); |
//Test Reading the Current |
ret = getCurrentMeasurement(crate1, ch); |
printf("Current Measurement = %f\n", ret); |
printf("Turning channel %i ON\n", ch); |
setChannelSwitch(crate1, ch, 1); |
Delay(1); |
//Test Channel Status |
iret=getChannelSwitch(crate1, ch); |
printf("Channel Status %i = %i\n", ch, iret); |
//Test Reading the Sense Measurement |
ret = getOutputSenseMeasurement(crate1, ch); |
printf("Sense Voltage = %f\n", ret); |
//Test Reading the Current |
ret = getCurrentMeasurement(crate1, ch); |
printf("Current Measurement = %f\n", ret); |
getchar(); |
printf("Turning channel %i OFF\n", ch); |
setChannelSwitch(crate1, ch, 0); |
printf("-----------------------------------------------------------------\n"); |
snmpClose(crate1); |
snmpCleanup(); // finish |
return 0; |
} |
/cvi/instr/MPOD/MPOD.prj |
---|
0,0 → 1,467 |
[Project Header] |
Version = 1302 |
Pathname = "/c/SAMO/Programi/NI/cvi/instr/MPOD/MPOD.prj" |
CVI Dir = "/c/program files (x86)/national instruments/cvi2013" |
CVI Shared Dir = "/C/Program Files (x86)/National Instruments/Shared/CVI" |
CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2013" |
CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI" |
IVI Standard Root Dir = "/C/Program Files (x86)/IVI Foundation/IVI" |
VXIplug&play Framework Dir = "/C/Program Files (x86)/IVI Foundation/VISA/winnt" |
IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI" |
VXIplug&play Framework 64-bit Dir = "/C/Program Files/IVI Foundation/VISA/win64" |
Number of Files = 5 |
Target Type = "Executable" |
Flags = 2064 |
Copied From Locked InstrDrv Directory = False |
Copied from VXIPNP Directory = False |
Locked InstrDrv Name = "" |
Don't Display Deploy InstrDrv Dialog = False |
[Folders] |
User Interface Files Folder Not Added Yet = True |
Instrument Files Folder Not Added Yet = True |
Folder 0 = "Source Files" |
FolderEx 0 = "Source Files" |
Folder 1 = "Include Files" |
FolderEx 1 = "Include Files" |
Folder 2 = "Library Files" |
FolderEx 2 = "Library Files" |
[File 0001] |
File Type = "CSource" |
Res Id = 1 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "MPOD.c" |
Path = "/c/SAMO/Programi/NI/cvi/instr/MPOD/MPOD.c" |
Exclude = False |
Compile Into Object File = False |
Project Flags = 0 |
Folder = "Source Files" |
Folder Id = 0 |
[File 0002] |
File Type = "CSource" |
Res Id = 2 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "WIENER_SNMP.c" |
Path = "/c/SAMO/Programi/NI/cvi/instr/MPOD/WIENER_SNMP.c" |
Exclude = False |
Compile Into Object File = False |
Project Flags = 0 |
Folder = "Source Files" |
Folder Id = 0 |
[File 0003] |
File Type = "Include" |
Res Id = 3 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "net-snmp-config.h" |
Path = "/c/SAMO/Programi/NI/cvi/instr/MPOD/net-snmp-config.h" |
Exclude = False |
Project Flags = 0 |
Folder = "Include Files" |
Folder Id = 1 |
[File 0004] |
File Type = "Include" |
Res Id = 4 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "WIENER_SNMP.h" |
Path = "/c/SAMO/Programi/NI/cvi/instr/MPOD/WIENER_SNMP.h" |
Exclude = False |
Project Flags = 0 |
Folder = "Include Files" |
Folder Id = 1 |
[File 0005] |
File Type = "Library" |
Res Id = 5 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "../../../../../../usr/lib/netsnmp.lib" |
Path = "/c/usr/lib/netsnmp.lib" |
Exclude = False |
Project Flags = 0 |
Folder = "Library Files" |
Folder Id = 2 |
[Custom Build Configs] |
Num Custom Build Configs = 0 |
[Default Build Config Debug] |
Config Name = "Debug" |
Is 64-Bit = False |
Is Release = False |
Default Calling Convention = "cdecl" |
Optimization Level = "Optimize for speed (level 2)" |
Require Prototypes = True |
Show Warning IDs in Build Output = False |
Selected Warning Level = "Common" |
Warning List None = "" |
Warning List Common = "" |
Warning List Extended = "" |
Warning List All = "" |
Warning Mode = 0 |
Enable Unreferenced Identifiers Warning = True |
Enable Pointer Mismatch Warning = True |
Enable Unreachable Code Warning = True |
Enable Assignment In Conditional Warning = True |
Uninitialized Locals Compile Warning = "Aggressive" |
Require Return Values = True |
Enable C99 Extensions = True |
Enable OpenMP Extensions = False |
Stack Size = 250000 |
Stack Reserve = 1048576 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
Sign = False |
Sign Store = "" |
Sign Certificate = "" |
Sign Timestamp URL = "" |
Sign URL = "" |
Manifest Embed = False |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Runtime Support = "Full Runtime Support" |
Runtime Binding = "Shared" |
Embed Project .UIRs = False |
Generate Map File = False |
Embed Timestamp = True |
Create Console Application = False |
Using LoadExternalModule = False |
DLL Exports = "Include File Symbols" |
Register ActiveX Server = False |
Numeric File Version = "1,0,0,0" |
Numeric Prod Version = "1,0,0,0" |
Comments = "" |
Comments Ex = "" |
Company Name = "" |
Company Name Ex = "%company" |
File Description = "MPOD (Debug x86)" |
File Description Ex = "%application (%rel_dbg %arch)" |
File Version = "1.0" |
File Version Ex = "%f1.%f2" |
Internal Name = "MPOD" |
Internal Name Ex = "%basename" |
Legal Copyright = "Copyright © 2016" |
Legal Copyright Ex = "Copyright © %company %Y" |
Legal Trademarks = "" |
Legal Trademarks Ex = "" |
Original Filename = "MPOD.exe" |
Original Filename Ex = "%filename" |
Private Build = "" |
Private Build Ex = "" |
Product Name = " MPOD" |
Product Name Ex = "%company %application" |
Product Version = "1.0" |
Product Version Ex = "%p1.%p2" |
Special Build = "" |
Special Build Ex = "" |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
[Default Build Config Release] |
Config Name = "Release" |
Is 64-Bit = False |
Is Release = True |
Default Calling Convention = "cdecl" |
Optimization Level = "Optimize for speed (level 2)" |
Require Prototypes = True |
Show Warning IDs in Build Output = False |
Selected Warning Level = "Common" |
Warning List None = "" |
Warning List Common = "" |
Warning List Extended = "" |
Warning List All = "" |
Warning Mode = 0 |
Enable Unreferenced Identifiers Warning = True |
Enable Pointer Mismatch Warning = True |
Enable Unreachable Code Warning = True |
Enable Assignment In Conditional Warning = True |
Uninitialized Locals Compile Warning = "Aggressive" |
Require Return Values = True |
Enable C99 Extensions = True |
Enable OpenMP Extensions = False |
Stack Size = 250000 |
Stack Reserve = 1048576 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
Sign = False |
Sign Store = "" |
Sign Certificate = "" |
Sign Timestamp URL = "" |
Sign URL = "" |
Manifest Embed = False |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Runtime Support = "Full Runtime Support" |
Runtime Binding = "Shared" |
Embed Project .UIRs = False |
Generate Map File = False |
Embed Timestamp = True |
Create Console Application = False |
Using LoadExternalModule = False |
DLL Exports = "Include File Symbols" |
Register ActiveX Server = False |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
[Default Build Config Debug64] |
Config Name = "Debug64" |
Is 64-Bit = True |
Is Release = False |
Default Calling Convention = "cdecl" |
Optimization Level = "Optimize for speed (level 2)" |
Require Prototypes = True |
Show Warning IDs in Build Output = False |
Selected Warning Level = "Common" |
Warning List None = "" |
Warning List Common = "" |
Warning List Extended = "" |
Warning List All = "" |
Warning Mode = 0 |
Enable Unreferenced Identifiers Warning = True |
Enable Pointer Mismatch Warning = True |
Enable Unreachable Code Warning = True |
Enable Assignment In Conditional Warning = True |
Uninitialized Locals Compile Warning = "Aggressive" |
Require Return Values = True |
Enable C99 Extensions = True |
Enable OpenMP Extensions = False |
Stack Size = 250000 |
Stack Reserve = 1048576 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
Sign = False |
Sign Store = "" |
Sign Certificate = "" |
Sign Timestamp URL = "" |
Sign URL = "" |
Manifest Embed = False |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Runtime Support = "Full Runtime Support" |
Runtime Binding = "Shared" |
Embed Project .UIRs = False |
Generate Map File = False |
Embed Timestamp = True |
Create Console Application = False |
Using LoadExternalModule = False |
DLL Exports = "Include File Symbols" |
Register ActiveX Server = False |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
[Default Build Config Release64] |
Config Name = "Release64" |
Is 64-Bit = True |
Is Release = True |
Default Calling Convention = "cdecl" |
Optimization Level = "Optimize for speed (level 2)" |
Require Prototypes = True |
Show Warning IDs in Build Output = False |
Selected Warning Level = "Common" |
Warning List None = "" |
Warning List Common = "" |
Warning List Extended = "" |
Warning List All = "" |
Warning Mode = 0 |
Enable Unreferenced Identifiers Warning = True |
Enable Pointer Mismatch Warning = True |
Enable Unreachable Code Warning = True |
Enable Assignment In Conditional Warning = True |
Uninitialized Locals Compile Warning = "Aggressive" |
Require Return Values = True |
Enable C99 Extensions = True |
Enable OpenMP Extensions = False |
Stack Size = 250000 |
Stack Reserve = 1048576 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
Sign = False |
Sign Store = "" |
Sign Certificate = "" |
Sign Timestamp URL = "" |
Sign URL = "" |
Manifest Embed = False |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Runtime Support = "Full Runtime Support" |
Runtime Binding = "Shared" |
Embed Project .UIRs = False |
Generate Map File = False |
Embed Timestamp = True |
Create Console Application = False |
Using LoadExternalModule = False |
DLL Exports = "Include File Symbols" |
Register ActiveX Server = False |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
[Compiler Options] |
Default Calling Convention = "cdecl" |
Require Prototypes = True |
Require Return Values = True |
Enable Pointer Mismatch Warning = True |
Enable Unreachable Code Warning = True |
Enable Unreferenced Identifiers Warning = True |
Enable Assignment In Conditional Warning = True |
O Option Compatible With 5.0 = False |
Enable C99 Extensions = True |
Uninitialized Locals Compile Warning = "Aggressive" |
Precompile Prefix Header = False |
Prefix Header File = "" |
[Run Options] |
Stack Size = 250000 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
[Compiler Defines] |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
[Include Paths] |
Include Path 1 Is Rel = True |
Include Path 1 Rel To = "Project" |
Include Path 1 Rel Path = "include" |
Include Path 1 = "/c/SAMO/Programi/NI/cvi/instr/MPOD/include" |
Include Path 2 Is Rel = True |
Include Path 2 Rel To = "Project" |
Include Path 2 Rel Path = "../../../../../../usr/include" |
Include Path 2 = "/c/usr/include" |
[Create Executable] |
Executable File_Debug Is Rel = True |
Executable File_Debug Rel To = "Project" |
Executable File_Debug Rel Path = "MPOD.exe" |
Executable File_Debug = "/c/SAMO/Programi/NI/cvi/instr/MPOD/MPOD.exe" |
Executable File_Release Is Rel = True |
Executable File_Release Rel To = "Project" |
Executable File_Release Rel Path = "MPOD.exe" |
Executable File_Release = "/c/SAMO/Programi/NI/cvi/instr/MPOD/MPOD.exe" |
Executable File_Debug64 Is Rel = True |
Executable File_Debug64 Rel To = "Project" |
Executable File_Debug64 Rel Path = "MPOD.exe" |
Executable File_Debug64 = "/c/SAMO/Programi/NI/cvi/instr/MPOD/MPOD.exe" |
Executable File_Release64 Is Rel = True |
Executable File_Release64 Rel To = "Project" |
Executable File_Release64 Rel Path = "MPOD.exe" |
Executable File_Release64 = "/c/SAMO/Programi/NI/cvi/instr/MPOD/MPOD.exe" |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
DLL Exports = "Include File Symbols" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
Type Lib Guid = "" |
Runtime Support = "Full Runtime Support" |
Instrument Driver Support Only = False |
Embed Project .UIRs = False |
Generate Map File = False |
[External Compiler Support] |
UIR Callbacks File Option = 0 |
Using LoadExternalModule = False |
Create Project Symbols File = True |
UIR Callbacks Obj File Is Rel = False |
UIR Callbacks Obj File = "" |
Project Symbols H File Is Rel = False |
Project Symbols H File = "" |
Project Symbols Obj File Is Rel = False |
Project Symbols Obj File = "" |
[ActiveX Server Options] |
Specification File Is Rel = False |
Specification File = "" |
Source File Is Rel = False |
Source File = "" |
Include File Is Rel = False |
Include File = "" |
IDL File Is Rel = False |
IDL File = "" |
Register ActiveX Server = False |
[Signing Info] |
Sign = False |
Sign Debug Build = False |
Store = "" |
Certificate = "" |
Timestamp URL = "" |
URL = "" |
[Manifest Info] |
Embed = False |
[tpcSection] |
tpcEnabled = 0 |
tpcOverrideEnvironment = 0 |
tpcEnabled x64 = 0 |
tpcOverrideEnvironment x64 = 0 |
/cvi/instr/MPOD/README.txt |
---|
0,0 → 1,32 |
1. Install |
* ActivePerl (32 bit) |
* Visual Studio 2015 |
* Install net-snmp an jump to 5. |
or |
Download latest version of net-snmp library |
https://sourceforge.net/p/net-snmp/code/ci/master/tree/ |
2. Start nmake environment |
"\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" |
3. Build |
C:\Users\rok\Downloads\net-snmp-latest\win32>build.bat ---> choose dynamic build |
(1:dis,4:en,7:dis,8:dis,9:en,10:dis,11:en,12:en,13:dyn,14:en) |
4. Install (ce je potrebno?) |
C:\Users\rok\Downloads\net-snmp-latest\win32>nmake install_devel |
5. Copy WIENER-CRATE-MIB.txt |
C:\usr\share\snmp\mibs WIENER-CRATE-MIB.txt |
6. Copy C:\usr\include\net-snmp\net-snmp-config.h to instrument dir and |
comment out: |
/* |
enum { |
netsnmp_compile_time_uintptr_t_size_check |
= sizeof(struct netsnmp_compile_time_uintptr_t_size_check_s { int:-!(sizeof(uintptr_t) == sizeof(void*)); }) |
}; |
*/ |
/cvi/instr/MPOD/WIENER-CRATE-MIB.txt |
---|
0,0 → 1,2420 |
---------------------------------------------------------------------------------------------------- |
-- $HeadURL: http://svn.wiener-d.com/src/enet/trunk/mibs/WIENER-CRATE-MIB.txt $ |
-- $LastChangedDate: 2012-10-24 17:44:38 +0200 (Mi, 24. Okt 2012) $ |
-- $LastChangedRevision: 1988 $ |
-- $LastChangedBy: koester (roemer)$ |
-- Copyright © 2005-2007 W-IE-NE-R Plein & Baus GmbH, Burscheid, Germany |
---------------------------------------------------------------------------------------------------- |
WIENER-CRATE-MIB DEFINITIONS ::= BEGIN |
IMPORTS |
OBJECT-TYPE, MODULE-IDENTITY, OBJECT-IDENTITY, |
IpAddress, Integer32, Opaque, enterprises |
FROM SNMPv2-SMI |
TEXTUAL-CONVENTION, DisplayString |
FROM SNMPv2-TC |
-- Float |
-- FROM NET-SNMP-TC |
-- Float |
-- FROM UCD-SNMP-MIB |
; |
wiener MODULE-IDENTITY |
LAST-UPDATED "200810090000Z" -- October 9, 2008 |
ORGANIZATION "WIENER Plein & Baus GmbH" |
CONTACT-INFO " |
postal: WIENER Plein & Baus GmbH |
Mullersbaum 20 |
D-51399 Burscheid |
Germany |
email: info@wiener-d.com |
" |
DESCRIPTION |
"Introduction of the communication.can branch. |
" |
REVISION "200805060000Z" -- May 6, 2008 |
DESCRIPTION |
"Introduction of the signal branch. |
" |
REVISION "200804150000Z" -- April 15, 2008 |
DESCRIPTION |
"Enlargement of u0..u11 -> u0..u1999 |
" |
REVISION "200804100000Z" -- April 10, 2008 |
DESCRIPTION |
"This revision uses again Integer32 instead of Counter32. |
" |
REVISION "200804020000Z" -- April 02, 2008 |
DESCRIPTION |
"This revision modifies the syntax of this file to be complient with smilint. |
" |
REVISION "200709100000Z" |
DESCRIPTION |
"This revision introduces new OIDs for debug functionality: |
sysDebugMemory8, sysDebugMemory16 and sysDebugMemory32. |
" |
REVISION "200703160000Z" |
DESCRIPTION |
"This revision introduces new OIDs for slew control: |
outputVoltageRiseRate and outputVoltageFallRate. |
" |
REVISION "200502010000Z" |
DESCRIPTION |
"This revision introduces new OIDs for group managment: |
groupTable |
" |
REVISION "200406280000Z" |
DESCRIPTION |
"WIENER Crate MIB, actual Firmware: UEL6E 4.02. |
Initial Version. |
" |
::= { enterprises 19947 } |
------------------------------------------------------------------------------- |
-- Define the Float Textual Convention |
-- This definition was written by David Perkins. |
-- |
Float ::= TEXTUAL-CONVENTION |
STATUS current |
DESCRIPTION |
"A single precision floating-point number. The semantics |
and encoding are identical for type 'single' defined in |
IEEE Standard for Binary Floating-Point, |
ANSI/IEEE Std 754-1985. |
The value is restricted to the BER serialization of |
the following ASN.1 type: |
FLOATTYPE ::= [120] IMPLICIT FloatType |
(note: the value 120 is the sum of '30'h and '48'h) |
The BER serialization of the length for values of |
this type must use the definite length, short |
encoding form. |
For example, the BER serialization of value 123 |
of type FLOATTYPE is '9f780442f60000'h. (The tag |
is '9f78'h; the length is '04'h; and the value is |
'42f60000'h.) The BER serialization of value |
'9f780442f60000'h of data type Opaque is |
'44079f780442f60000'h. (The tag is '44'h; the length |
is '07'h; and the value is '9f780442f60000'h." |
SYNTAX Opaque (SIZE (7)) |
------------------------------------------------------------------------------- |
-- crate |
------------------------------------------------------------------------------- |
crate OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"SNMP control for electronic crates. A crate is a complete electronic system and |
consists of the mechanical rack, a power supply, a fan tray and a backplane. |
All this things are necessary to provide an adequate housing for electronic |
modules (e.g. VME CPU's)" |
::= { wiener 1 } |
--Crate ::= SEQUENCE { |
-- system System, |
-- input Input, |
-- output Output, |
-- sensor Sensor, |
-- communication Communication, |
-- powersupply Powersupply, |
-- fantray Fantray, |
-- rack Rack |
--} |
system OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"A collection of objects which affect the complete crate" |
::= { crate 1 } |
input OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"All objects which are associated with the power input of the crate" |
::= { crate 2 } |
output OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"All objects which are associated with the power output of the crate" |
::= { crate 3 } |
sensor OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"All objects which are associated with temperature sensors in the crate" |
::= { crate 4 } |
communication OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"All objects which affect the remote control of the crate" |
::= { crate 5 } |
powersupply OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"All objects which are specific for the power supply of the crate" |
::= { crate 6 } |
fantray OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"All objects which are specific for the fan tray of the crate" |
::= { crate 7 } |
rack OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"All objects which are specific for the crate (BIN) of the crate" |
::= { crate 8 } |
signal OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"All objects which are associated with analog/digtal input/output in the crate" |
::= { crate 9 } |
------------------------------------------------------------------------------- |
-- system |
------------------------------------------------------------------------------- |
System ::= SEQUENCE { |
sysMainSwitch INTEGER, |
sysHardwareReset INTEGER, |
sysStatus BITS, |
sysVmeSysReset INTEGER, |
sysConfigDoMeasurementCurrent BITS, |
sysOperatingTime Integer32, |
sysDebugMemory8 Integer32, |
sysDebugMemory16 Integer32, |
sysDebugMemory32 Integer32, |
sysDebug OCTET STRING, |
sysDebugDisplay OCTET STRING |
} |
sysMainSwitch OBJECT-TYPE |
SYNTAX INTEGER { off (0), on (1) } |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Read: An enumerated value which shows the current state of |
the crates main switch. |
Write: Try to switch the complete crate ON or OFF. |
Only the values ON or OFF are allowed." |
::= { system 1 } |
sysStatus OBJECT-TYPE |
SYNTAX BITS { |
mainOn (0) , |
mainInhibit (1) , |
localControlOnly (2) , |
inputFailure (3) , |
outputFailure (4) , |
fantrayFailure (5) , |
sensorFailure (6), |
vmeSysfail (7), |
plugAndPlayIncompatible (8), |
busReset (9), |
supplyDerating (10), |
supplyFailure (11), |
supplyDerating2 (12), |
supplyFailure2 (13) |
} |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"A bit string which shows the status (health) of the complete crate. |
If a bit is set (1), the explanation is satisfied |
mainOn (0), system is switched on, individual outputs may be controlled by their specific ON/INHIBIT |
mainInhibit(1), external (hardware-)inhibit of the complete system |
localControlOnly (2), local control only (CANBUS write access denied) |
inputFailure (3), any input failure (e.g. power fail) |
outputFailure (4), any output failure, details in outputTable |
fantrayFailure (5), fantray failure |
sensorFailure (6), temperature of the external sensors too high |
vmeSysfail(7), VME SYSFAIL signal is active |
plugAndPlayIncompatible (8) wrong power supply and rack connected |
busReset (9) The sytem bus (e.g. VME or CPCI) reset signal is active. |
supplyDerating (10) The (first) system power supply has the DEG signal active. |
supplyFailure (11) The (first) system power supply has the FAL signal active. |
supplyDerating2 (12) The second system power supply has the DEG signal active. |
supplyFailure2 (13) The second system power supply has the FAL signal active. |
" |
::= { system 2 } |
-- ERROR_BIN_CHECKSUM(?), |
sysVmeSysReset OBJECT-TYPE |
SYNTAX INTEGER { trigger (1) } |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Read: Always 0. |
Write: Trigger the generation of the VME SYSRESET or CPIC RESET signal. |
This signal will be active for a time of 200 ms" |
::= { system 3 } |
sysHardwareReset OBJECT-TYPE |
SYNTAX INTEGER --{ off (0), on (1) } |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Triggered a Reset via Watchdog or ResetLine." |
::= { system 4 } |
sysConfigDoMeasurementCurrent OBJECT-TYPE |
SYNTAX BITS { |
ch0 (0) , |
ch1 (1) , |
ch2 (2) , |
ch3 (3) , |
ch4 (4) , |
ch5 (5) , |
ch6 (6) , |
ch7 (7) |
} |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"CSet the analog inputs to measure voltage or current." |
::= { system 10 } |
sysOperatingTime OBJECT-TYPE |
SYNTAX Integer32 |
UNITS "s" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The time in seconds for how long the controller was in action." |
::= { system 11 } |
sysDebugMemory8 OBJECT-TYPE |
SYNTAX Integer32 (0..255) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Debug 16-bit memory access." |
::= { system 1024 } |
sysDebugMemory16 OBJECT-TYPE |
SYNTAX Integer32 (0..65535) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Debug 16-bit memory access." |
::= { system 1025 } |
sysDebugMemory32 OBJECT-TYPE |
SYNTAX Integer32 (-2147483648..2147483647) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Debug 32-bit memory access." |
::= { system 1026 } |
sysDebug OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (520)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Debug communication with the MPOD. |
This is a direct map to the ancient functions which are accessible |
via USB (without SLIP/SNMP). |
" |
::= { system 1027 } |
sysDebugDisplay OBJECT-TYPE |
SYNTAX OCTET STRING |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Debug communication with the MPOD display." |
::= { system 1028 } |
------------------------------------------------------------------------------- |
-- input |
------------------------------------------------------------------------------- |
-- reserved, possible entries: |
-- inputSetPfcVoltage |
-- inputMesPowerFail |
-- inputMesVoltage |
-- inputMesCurrent |
-- inputMesPower |
-- inputMesTemperature |
------------------------------------------------------------------------------- |
-- output |
------------------------------------------------------------------------------- |
--Output ::= SEQUENCE { |
-- outputNumber Integer32, |
-- outputTable OutputTable, |
-- groupsNumber Integer32, |
-- groupsTable GroupsTable, |
-- moduleNumber Integer32, |
-- moduleTable moduleTable |
-- ??TotalPower |
--} |
outputNumber OBJECT-TYPE |
SYNTAX Integer32 (0..1999) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The number of output channels of the crate." |
::= { output 1 } |
outputTable OBJECT-TYPE |
SYNTAX SEQUENCE OF OutputEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A list of output entries." |
::= { output 2 } |
groupsNumber OBJECT-TYPE |
SYNTAX Integer32 (1..1999) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The number of output groups of the crate." |
::= { output 3 } |
groupsTable OBJECT-TYPE |
SYNTAX SEQUENCE OF GroupsEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A list of output groups entries." |
::= { output 4 } |
------------------------------------------------------------------------------- |
-- outputModuleTable |
------------------------------------------------------------------------------- |
moduleNumber OBJECT-TYPE |
SYNTAX Integer32 (1..10) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The number of HV/LV modules of the crate." |
::= { output 5 } |
moduleTable OBJECT-TYPE |
SYNTAX SEQUENCE OF moduleEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A list of output module entries." |
::= { output 6 } |
------------------------------------------------------------------------------- |
-- outputTable |
------------------------------------------------------------------------------- |
outputEntry OBJECT-TYPE |
SYNTAX OutputEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A table row" |
INDEX { outputIndex } |
::= { outputTable 1 } |
OutputEntry ::= SEQUENCE { |
outputIndex INTEGER, |
outputName DisplayString, |
outputGroup INTEGER, |
outputStatus BITS, |
outputMeasurementSenseVoltage Float, |
outputMeasurementTerminalVoltage Float, |
outputMeasurementCurrent Float, |
outputMeasurementTemperature INTEGER, |
outputSwitch INTEGER, |
outputVoltage Float, |
outputAdjustVoltage Integer32, |
outputCurrent Float, |
outputVoltageRiseRate Float, |
outputVoltageFallRate Float, |
outputSupervisionBehavior Integer32, |
outputSupervisionMinSenseVoltage Float, |
outputSupervisionMaxSenseVoltage Float, |
outputSupervisionMaxTerminalVoltage Float, |
outputSupervisionMaxCurrent Float, |
outputSupervisionMaxTemperature Integer32, |
outputConfigMaxSenseVoltage Float, |
outputConfigMaxTerminalVoltage Float, |
outputConfigMaxCurrent Float, |
outputSupervisionMaxPower Float, |
outputConfigGainSenseVoltage Float, |
outputConfigOffsetSenseVoltage Float, |
outputConfigGainTerminalVoltage Float, |
outputConfigOffsetTerminalVoltage Float, |
outputConfigGainCurrent Float, |
outputConfigOffsetCurrent Float, |
outputCurrentRiseRate Float, |
outputCurrentFallRate Float, |
outputTripTimeMaxCurrent INTEGER, |
outputHardwareLimitVoltage Float, |
outputHardwareLimitCurrent Float, |
outputRegulationMode INTEGER, |
outputConfigMaxTemperature Integer32 |
} |
outputIndex OBJECT-TYPE |
SYNTAX INTEGER { |
u0(1),u1(2),u2(3),u3(4),u4(5),u5(6),u6(7),u7(8),u8(9),u9(10), |
u10(11),u11(12),u12(13),u13(14),u14(15),u15(16),u16(17),u17(18),u18(19),u19(20), |
u20(21),u21(22),u22(23),u23(24),u24(25),u25(26),u26(27),u27(28),u28(29),u29(30), |
u30(31),u31(32),u32(33),u33(34),u34(35),u35(36),u36(37),u37(38),u38(39),u39(40), |
u40(41),u41(42),u42(43),u43(44),u44(45),u45(46),u46(47),u47(48),u48(49),u49(50), |
u50(51),u51(52),u52(53),u53(54),u54(55),u55(56),u56(57),u57(58),u58(59),u59(60), |
u60(61),u61(62),u62(63),u63(64),u64(65),u65(66),u66(67),u67(68),u68(69),u69(70), |
u70(71),u71(72),u72(73),u73(74),u74(75),u75(76),u76(77),u77(78),u78(79),u79(80), |
u80(81),u81(82),u82(83),u83(84),u84(85),u85(86),u86(87),u87(88),u88(89),u89(90), |
u90(91),u91(92),u92(93),u93(94),u94(95),u95(96),u96(97),u97(98),u98(99),u99(100), |
u100(101),u101(102),u102(103),u103(104),u104(105),u105(106),u106(107),u107(108),u108(109),u109(110), |
u110(111),u111(112),u112(113),u113(114),u114(115),u115(116),u116(117),u117(118),u118(119),u119(120), |
u120(121),u121(122),u122(123),u123(124),u124(125),u125(126),u126(127),u127(128),u128(129),u129(130), |
u130(131),u131(132),u132(133),u133(134),u134(135),u135(136),u136(137),u137(138),u138(139),u139(140), |
u140(141),u141(142),u142(143),u143(144),u144(145),u145(146),u146(147),u147(148),u148(149),u149(150), |
u150(151),u151(152),u152(153),u153(154),u154(155),u155(156),u156(157),u157(158),u158(159),u159(160), |
u160(161),u161(162),u162(163),u163(164),u164(165),u165(166),u166(167),u167(168),u168(169),u169(170), |
u170(171),u171(172),u172(173),u173(174),u174(175),u175(176),u176(177),u177(178),u178(179),u179(180), |
u180(181),u181(182),u182(183),u183(184),u184(185),u185(186),u186(187),u187(188),u188(189),u189(190), |
u190(191),u191(192),u192(193),u193(194),u194(195),u195(196),u196(197),u197(198),u198(199),u199(200), |
u200(201),u201(202),u202(203),u203(204),u204(205),u205(206),u206(207),u207(208),u208(209),u209(210), |
u210(211),u211(212),u212(213),u213(214),u214(215),u215(216),u216(217),u217(218),u218(219),u219(220), |
u220(221),u221(222),u222(223),u223(224),u224(225),u225(226),u226(227),u227(228),u228(229),u229(230), |
u230(231),u231(232),u232(233),u233(234),u234(235),u235(236),u236(237),u237(238),u238(239),u239(240), |
u240(241),u241(242),u242(243),u243(244),u244(245),u245(246),u246(247),u247(248),u248(249),u249(250), |
u250(251),u251(252),u252(253),u253(254),u254(255),u255(256),u256(257),u257(258),u258(259),u259(260), |
u260(261),u261(262),u262(263),u263(264),u264(265),u265(266),u266(267),u267(268),u268(269),u269(270), |
u270(271),u271(272),u272(273),u273(274),u274(275),u275(276),u276(277),u277(278),u278(279),u279(280), |
u280(281),u281(282),u282(283),u283(284),u284(285),u285(286),u286(287),u287(288),u288(289),u289(290), |
u290(291),u291(292),u292(293),u293(294),u294(295),u295(296),u296(297),u297(298),u298(299),u299(300), |
u300(301),u301(302),u302(303),u303(304),u304(305),u305(306),u306(307),u307(308),u308(309),u309(310), |
u310(311),u311(312),u312(313),u313(314),u314(315),u315(316),u316(317),u317(318),u318(319),u319(320), |
u320(321),u321(322),u322(323),u323(324),u324(325),u325(326),u326(327),u327(328),u328(329),u329(330), |
u330(331),u331(332),u332(333),u333(334),u334(335),u335(336),u336(337),u337(338),u338(339),u339(340), |
u340(341),u341(342),u342(343),u343(344),u344(345),u345(346),u346(347),u347(348),u348(349),u349(350), |
u350(351),u351(352),u352(353),u353(354),u354(355),u355(356),u356(357),u357(358),u358(359),u359(360), |
u360(361),u361(362),u362(363),u363(364),u364(365),u365(366),u366(367),u367(368),u368(369),u369(370), |
u370(371),u371(372),u372(373),u373(374),u374(375),u375(376),u376(377),u377(378),u378(379),u379(380), |
u380(381),u381(382),u382(383),u383(384),u384(385),u385(386),u386(387),u387(388),u388(389),u389(390), |
u390(391),u391(392),u392(393),u393(394),u394(395),u395(396),u396(397),u397(398),u398(399),u399(400), |
u400(401),u401(402),u402(403),u403(404),u404(405),u405(406),u406(407),u407(408),u408(409),u409(410), |
u410(411),u411(412),u412(413),u413(414),u414(415),u415(416),u416(417),u417(418),u418(419),u419(420), |
u420(421),u421(422),u422(423),u423(424),u424(425),u425(426),u426(427),u427(428),u428(429),u429(430), |
u430(431),u431(432),u432(433),u433(434),u434(435),u435(436),u436(437),u437(438),u438(439),u439(440), |
u440(441),u441(442),u442(443),u443(444),u444(445),u445(446),u446(447),u447(448),u448(449),u449(450), |
u450(451),u451(452),u452(453),u453(454),u454(455),u455(456),u456(457),u457(458),u458(459),u459(460), |
u460(461),u461(462),u462(463),u463(464),u464(465),u465(466),u466(467),u467(468),u468(469),u469(470), |
u470(471),u471(472),u472(473),u473(474),u474(475),u475(476),u476(477),u477(478),u478(479),u479(480), |
u480(481),u481(482),u482(483),u483(484),u484(485),u485(486),u486(487),u487(488),u488(489),u489(490), |
u490(491),u491(492),u492(493),u493(494),u494(495),u495(496),u496(497),u497(498),u498(499),u499(500), |
u500(501),u501(502),u502(503),u503(504),u504(505),u505(506),u506(507),u507(508),u508(509),u509(510), |
u510(511),u511(512),u512(513),u513(514),u514(515),u515(516),u516(517),u517(518),u518(519),u519(520), |
u520(521),u521(522),u522(523),u523(524),u524(525),u525(526),u526(527),u527(528),u528(529),u529(530), |
u530(531),u531(532),u532(533),u533(534),u534(535),u535(536),u536(537),u537(538),u538(539),u539(540), |
u540(541),u541(542),u542(543),u543(544),u544(545),u545(546),u546(547),u547(548),u548(549),u549(550), |
u550(551),u551(552),u552(553),u553(554),u554(555),u555(556),u556(557),u557(558),u558(559),u559(560), |
u560(561),u561(562),u562(563),u563(564),u564(565),u565(566),u566(567),u567(568),u568(569),u569(570), |
u570(571),u571(572),u572(573),u573(574),u574(575),u575(576),u576(577),u577(578),u578(579),u579(580), |
u580(581),u581(582),u582(583),u583(584),u584(585),u585(586),u586(587),u587(588),u588(589),u589(590), |
u590(591),u591(592),u592(593),u593(594),u594(595),u595(596),u596(597),u597(598),u598(599),u599(600), |
u600(601),u601(602),u602(603),u603(604),u604(605),u605(606),u606(607),u607(608),u608(609),u609(610), |
u610(611),u611(612),u612(613),u613(614),u614(615),u615(616),u616(617),u617(618),u618(619),u619(620), |
u620(621),u621(622),u622(623),u623(624),u624(625),u625(626),u626(627),u627(628),u628(629),u629(630), |
u630(631),u631(632),u632(633),u633(634),u634(635),u635(636),u636(637),u637(638),u638(639),u639(640), |
u640(641),u641(642),u642(643),u643(644),u644(645),u645(646),u646(647),u647(648),u648(649),u649(650), |
u650(651),u651(652),u652(653),u653(654),u654(655),u655(656),u656(657),u657(658),u658(659),u659(660), |
u660(661),u661(662),u662(663),u663(664),u664(665),u665(666),u666(667),u667(668),u668(669),u669(670), |
u670(671),u671(672),u672(673),u673(674),u674(675),u675(676),u676(677),u677(678),u678(679),u679(680), |
u680(681),u681(682),u682(683),u683(684),u684(685),u685(686),u686(687),u687(688),u688(689),u689(690), |
u690(691),u691(692),u692(693),u693(694),u694(695),u695(696),u696(697),u697(698),u698(699),u699(700), |
u700(701),u701(702),u702(703),u703(704),u704(705),u705(706),u706(707),u707(708),u708(709),u709(710), |
u710(711),u711(712),u712(713),u713(714),u714(715),u715(716),u716(717),u717(718),u718(719),u719(720), |
u720(721),u721(722),u722(723),u723(724),u724(725),u725(726),u726(727),u727(728),u728(729),u729(730), |
u730(731),u731(732),u732(733),u733(734),u734(735),u735(736),u736(737),u737(738),u738(739),u739(740), |
u740(741),u741(742),u742(743),u743(744),u744(745),u745(746),u746(747),u747(748),u748(749),u749(750), |
u750(751),u751(752),u752(753),u753(754),u754(755),u755(756),u756(757),u757(758),u758(759),u759(760), |
u760(761),u761(762),u762(763),u763(764),u764(765),u765(766),u766(767),u767(768),u768(769),u769(770), |
u770(771),u771(772),u772(773),u773(774),u774(775),u775(776),u776(777),u777(778),u778(779),u779(780), |
u780(781),u781(782),u782(783),u783(784),u784(785),u785(786),u786(787),u787(788),u788(789),u789(790), |
u790(791),u791(792),u792(793),u793(794),u794(795),u795(796),u796(797),u797(798),u798(799),u799(800), |
u800(801),u801(802),u802(803),u803(804),u804(805),u805(806),u806(807),u807(808),u808(809),u809(810), |
u810(811),u811(812),u812(813),u813(814),u814(815),u815(816),u816(817),u817(818),u818(819),u819(820), |
u820(821),u821(822),u822(823),u823(824),u824(825),u825(826),u826(827),u827(828),u828(829),u829(830), |
u830(831),u831(832),u832(833),u833(834),u834(835),u835(836),u836(837),u837(838),u838(839),u839(840), |
u840(841),u841(842),u842(843),u843(844),u844(845),u845(846),u846(847),u847(848),u848(849),u849(850), |
u850(851),u851(852),u852(853),u853(854),u854(855),u855(856),u856(857),u857(858),u858(859),u859(860), |
u860(861),u861(862),u862(863),u863(864),u864(865),u865(866),u866(867),u867(868),u868(869),u869(870), |
u870(871),u871(872),u872(873),u873(874),u874(875),u875(876),u876(877),u877(878),u878(879),u879(880), |
u880(881),u881(882),u882(883),u883(884),u884(885),u885(886),u886(887),u887(888),u888(889),u889(890), |
u890(891),u891(892),u892(893),u893(894),u894(895),u895(896),u896(897),u897(898),u898(899),u899(900), |
u900(901),u901(902),u902(903),u903(904),u904(905),u905(906),u906(907),u907(908),u908(909),u909(910), |
u910(911),u911(912),u912(913),u913(914),u914(915),u915(916),u916(917),u917(918),u918(919),u919(920), |
u920(921),u921(922),u922(923),u923(924),u924(925),u925(926),u926(927),u927(928),u928(929),u929(930), |
u930(931),u931(932),u932(933),u933(934),u934(935),u935(936),u936(937),u937(938),u938(939),u939(940), |
u940(941),u941(942),u942(943),u943(944),u944(945),u945(946),u946(947),u947(948),u948(949),u949(950), |
u950(951),u951(952),u952(953),u953(954),u954(955),u955(956),u956(957),u957(958),u958(959),u959(960), |
u960(961),u961(962),u962(963),u963(964),u964(965),u965(966),u966(967),u967(968),u968(969),u969(970), |
u970(971),u971(972),u972(973),u973(974),u974(975),u975(976),u976(977),u977(978),u978(979),u979(980), |
u980(981),u981(982),u982(983),u983(984),u984(985),u985(986),u986(987),u987(988),u988(989),u989(990), |
u990(991),u991(992),u992(993),u993(994),u994(995),u995(996),u996(997),u997(998),u998(999),u999(1000), |
u1000(1001),u1001(1002),u1002(1003),u1003(1004),u1004(1005),u1005(1006),u1006(1007),u1007(1008),u1008(1009),u1009(1010), |
u1010(1011),u1011(1012),u1012(1013),u1013(1014),u1014(1015),u1015(1016),u1016(1017),u1017(1018),u1018(1019),u1019(1020), |
u1020(1021),u1021(1022),u1022(1023),u1023(1024),u1024(1025),u1025(1026),u1026(1027),u1027(1028),u1028(1029),u1029(1030), |
u1030(1031),u1031(1032),u1032(1033),u1033(1034),u1034(1035),u1035(1036),u1036(1037),u1037(1038),u1038(1039),u1039(1040), |
u1040(1041),u1041(1042),u1042(1043),u1043(1044),u1044(1045),u1045(1046),u1046(1047),u1047(1048),u1048(1049),u1049(1050), |
u1050(1051),u1051(1052),u1052(1053),u1053(1054),u1054(1055),u1055(1056),u1056(1057),u1057(1058),u1058(1059),u1059(1060), |
u1060(1061),u1061(1062),u1062(1063),u1063(1064),u1064(1065),u1065(1066),u1066(1067),u1067(1068),u1068(1069),u1069(1070), |
u1070(1071),u1071(1072),u1072(1073),u1073(1074),u1074(1075),u1075(1076),u1076(1077),u1077(1078),u1078(1079),u1079(1080), |
u1080(1081),u1081(1082),u1082(1083),u1083(1084),u1084(1085),u1085(1086),u1086(1087),u1087(1088),u1088(1089),u1089(1090), |
u1090(1091),u1091(1092),u1092(1093),u1093(1094),u1094(1095),u1095(1096),u1096(1097),u1097(1098),u1098(1099),u1099(1100), |
u1100(1101),u1101(1102),u1102(1103),u1103(1104),u1104(1105),u1105(1106),u1106(1107),u1107(1108),u1108(1109),u1109(1110), |
u1110(1111),u1111(1112),u1112(1113),u1113(1114),u1114(1115),u1115(1116),u1116(1117),u1117(1118),u1118(1119),u1119(1120), |
u1120(1121),u1121(1122),u1122(1123),u1123(1124),u1124(1125),u1125(1126),u1126(1127),u1127(1128),u1128(1129),u1129(1130), |
u1130(1131),u1131(1132),u1132(1133),u1133(1134),u1134(1135),u1135(1136),u1136(1137),u1137(1138),u1138(1139),u1139(1140), |
u1140(1141),u1141(1142),u1142(1143),u1143(1144),u1144(1145),u1145(1146),u1146(1147),u1147(1148),u1148(1149),u1149(1150), |
u1150(1151),u1151(1152),u1152(1153),u1153(1154),u1154(1155),u1155(1156),u1156(1157),u1157(1158),u1158(1159),u1159(1160), |
u1160(1161),u1161(1162),u1162(1163),u1163(1164),u1164(1165),u1165(1166),u1166(1167),u1167(1168),u1168(1169),u1169(1170), |
u1170(1171),u1171(1172),u1172(1173),u1173(1174),u1174(1175),u1175(1176),u1176(1177),u1177(1178),u1178(1179),u1179(1180), |
u1180(1181),u1181(1182),u1182(1183),u1183(1184),u1184(1185),u1185(1186),u1186(1187),u1187(1188),u1188(1189),u1189(1190), |
u1190(1191),u1191(1192),u1192(1193),u1193(1194),u1194(1195),u1195(1196),u1196(1197),u1197(1198),u1198(1199),u1199(1200), |
u1200(1201),u1201(1202),u1202(1203),u1203(1204),u1204(1205),u1205(1206),u1206(1207),u1207(1208),u1208(1209),u1209(1210), |
u1210(1211),u1211(1212),u1212(1213),u1213(1214),u1214(1215),u1215(1216),u1216(1217),u1217(1218),u1218(1219),u1219(1220), |
u1220(1221),u1221(1222),u1222(1223),u1223(1224),u1224(1225),u1225(1226),u1226(1227),u1227(1228),u1228(1229),u1229(1230), |
u1230(1231),u1231(1232),u1232(1233),u1233(1234),u1234(1235),u1235(1236),u1236(1237),u1237(1238),u1238(1239),u1239(1240), |
u1240(1241),u1241(1242),u1242(1243),u1243(1244),u1244(1245),u1245(1246),u1246(1247),u1247(1248),u1248(1249),u1249(1250), |
u1250(1251),u1251(1252),u1252(1253),u1253(1254),u1254(1255),u1255(1256),u1256(1257),u1257(1258),u1258(1259),u1259(1260), |
u1260(1261),u1261(1262),u1262(1263),u1263(1264),u1264(1265),u1265(1266),u1266(1267),u1267(1268),u1268(1269),u1269(1270), |
u1270(1271),u1271(1272),u1272(1273),u1273(1274),u1274(1275),u1275(1276),u1276(1277),u1277(1278),u1278(1279),u1279(1280), |
u1280(1281),u1281(1282),u1282(1283),u1283(1284),u1284(1285),u1285(1286),u1286(1287),u1287(1288),u1288(1289),u1289(1290), |
u1290(1291),u1291(1292),u1292(1293),u1293(1294),u1294(1295),u1295(1296),u1296(1297),u1297(1298),u1298(1299),u1299(1300), |
u1300(1301),u1301(1302),u1302(1303),u1303(1304),u1304(1305),u1305(1306),u1306(1307),u1307(1308),u1308(1309),u1309(1310), |
u1310(1311),u1311(1312),u1312(1313),u1313(1314),u1314(1315),u1315(1316),u1316(1317),u1317(1318),u1318(1319),u1319(1320), |
u1320(1321),u1321(1322),u1322(1323),u1323(1324),u1324(1325),u1325(1326),u1326(1327),u1327(1328),u1328(1329),u1329(1330), |
u1330(1331),u1331(1332),u1332(1333),u1333(1334),u1334(1335),u1335(1336),u1336(1337),u1337(1338),u1338(1339),u1339(1340), |
u1340(1341),u1341(1342),u1342(1343),u1343(1344),u1344(1345),u1345(1346),u1346(1347),u1347(1348),u1348(1349),u1349(1350), |
u1350(1351),u1351(1352),u1352(1353),u1353(1354),u1354(1355),u1355(1356),u1356(1357),u1357(1358),u1358(1359),u1359(1360), |
u1360(1361),u1361(1362),u1362(1363),u1363(1364),u1364(1365),u1365(1366),u1366(1367),u1367(1368),u1368(1369),u1369(1370), |
u1370(1371),u1371(1372),u1372(1373),u1373(1374),u1374(1375),u1375(1376),u1376(1377),u1377(1378),u1378(1379),u1379(1380), |
u1380(1381),u1381(1382),u1382(1383),u1383(1384),u1384(1385),u1385(1386),u1386(1387),u1387(1388),u1388(1389),u1389(1390), |
u1390(1391),u1391(1392),u1392(1393),u1393(1394),u1394(1395),u1395(1396),u1396(1397),u1397(1398),u1398(1399),u1399(1400), |
u1400(1401),u1401(1402),u1402(1403),u1403(1404),u1404(1405),u1405(1406),u1406(1407),u1407(1408),u1408(1409),u1409(1410), |
u1410(1411),u1411(1412),u1412(1413),u1413(1414),u1414(1415),u1415(1416),u1416(1417),u1417(1418),u1418(1419),u1419(1420), |
u1420(1421),u1421(1422),u1422(1423),u1423(1424),u1424(1425),u1425(1426),u1426(1427),u1427(1428),u1428(1429),u1429(1430), |
u1430(1431),u1431(1432),u1432(1433),u1433(1434),u1434(1435),u1435(1436),u1436(1437),u1437(1438),u1438(1439),u1439(1440), |
u1440(1441),u1441(1442),u1442(1443),u1443(1444),u1444(1445),u1445(1446),u1446(1447),u1447(1448),u1448(1449),u1449(1450), |
u1450(1451),u1451(1452),u1452(1453),u1453(1454),u1454(1455),u1455(1456),u1456(1457),u1457(1458),u1458(1459),u1459(1460), |
u1460(1461),u1461(1462),u1462(1463),u1463(1464),u1464(1465),u1465(1466),u1466(1467),u1467(1468),u1468(1469),u1469(1470), |
u1470(1471),u1471(1472),u1472(1473),u1473(1474),u1474(1475),u1475(1476),u1476(1477),u1477(1478),u1478(1479),u1479(1480), |
u1480(1481),u1481(1482),u1482(1483),u1483(1484),u1484(1485),u1485(1486),u1486(1487),u1487(1488),u1488(1489),u1489(1490), |
u1490(1491),u1491(1492),u1492(1493),u1493(1494),u1494(1495),u1495(1496),u1496(1497),u1497(1498),u1498(1499),u1499(1500), |
u1500(1501),u1501(1502),u1502(1503),u1503(1504),u1504(1505),u1505(1506),u1506(1507),u1507(1508),u1508(1509),u1509(1510), |
u1510(1511),u1511(1512),u1512(1513),u1513(1514),u1514(1515),u1515(1516),u1516(1517),u1517(1518),u1518(1519),u1519(1520), |
u1520(1521),u1521(1522),u1522(1523),u1523(1524),u1524(1525),u1525(1526),u1526(1527),u1527(1528),u1528(1529),u1529(1530), |
u1530(1531),u1531(1532),u1532(1533),u1533(1534),u1534(1535),u1535(1536),u1536(1537),u1537(1538),u1538(1539),u1539(1540), |
u1540(1541),u1541(1542),u1542(1543),u1543(1544),u1544(1545),u1545(1546),u1546(1547),u1547(1548),u1548(1549),u1549(1550), |
u1550(1551),u1551(1552),u1552(1553),u1553(1554),u1554(1555),u1555(1556),u1556(1557),u1557(1558),u1558(1559),u1559(1560), |
u1560(1561),u1561(1562),u1562(1563),u1563(1564),u1564(1565),u1565(1566),u1566(1567),u1567(1568),u1568(1569),u1569(1570), |
u1570(1571),u1571(1572),u1572(1573),u1573(1574),u1574(1575),u1575(1576),u1576(1577),u1577(1578),u1578(1579),u1579(1580), |
u1580(1581),u1581(1582),u1582(1583),u1583(1584),u1584(1585),u1585(1586),u1586(1587),u1587(1588),u1588(1589),u1589(1590), |
u1590(1591),u1591(1592),u1592(1593),u1593(1594),u1594(1595),u1595(1596),u1596(1597),u1597(1598),u1598(1599),u1599(1600), |
u1600(1601),u1601(1602),u1602(1603),u1603(1604),u1604(1605),u1605(1606),u1606(1607),u1607(1608),u1608(1609),u1609(1610), |
u1610(1611),u1611(1612),u1612(1613),u1613(1614),u1614(1615),u1615(1616),u1616(1617),u1617(1618),u1618(1619),u1619(1620), |
u1620(1621),u1621(1622),u1622(1623),u1623(1624),u1624(1625),u1625(1626),u1626(1627),u1627(1628),u1628(1629),u1629(1630), |
u1630(1631),u1631(1632),u1632(1633),u1633(1634),u1634(1635),u1635(1636),u1636(1637),u1637(1638),u1638(1639),u1639(1640), |
u1640(1641),u1641(1642),u1642(1643),u1643(1644),u1644(1645),u1645(1646),u1646(1647),u1647(1648),u1648(1649),u1649(1650), |
u1650(1651),u1651(1652),u1652(1653),u1653(1654),u1654(1655),u1655(1656),u1656(1657),u1657(1658),u1658(1659),u1659(1660), |
u1660(1661),u1661(1662),u1662(1663),u1663(1664),u1664(1665),u1665(1666),u1666(1667),u1667(1668),u1668(1669),u1669(1670), |
u1670(1671),u1671(1672),u1672(1673),u1673(1674),u1674(1675),u1675(1676),u1676(1677),u1677(1678),u1678(1679),u1679(1680), |
u1680(1681),u1681(1682),u1682(1683),u1683(1684),u1684(1685),u1685(1686),u1686(1687),u1687(1688),u1688(1689),u1689(1690), |
u1690(1691),u1691(1692),u1692(1693),u1693(1694),u1694(1695),u1695(1696),u1696(1697),u1697(1698),u1698(1699),u1699(1700), |
u1700(1701),u1701(1702),u1702(1703),u1703(1704),u1704(1705),u1705(1706),u1706(1707),u1707(1708),u1708(1709),u1709(1710), |
u1710(1711),u1711(1712),u1712(1713),u1713(1714),u1714(1715),u1715(1716),u1716(1717),u1717(1718),u1718(1719),u1719(1720), |
u1720(1721),u1721(1722),u1722(1723),u1723(1724),u1724(1725),u1725(1726),u1726(1727),u1727(1728),u1728(1729),u1729(1730), |
u1730(1731),u1731(1732),u1732(1733),u1733(1734),u1734(1735),u1735(1736),u1736(1737),u1737(1738),u1738(1739),u1739(1740), |
u1740(1741),u1741(1742),u1742(1743),u1743(1744),u1744(1745),u1745(1746),u1746(1747),u1747(1748),u1748(1749),u1749(1750), |
u1750(1751),u1751(1752),u1752(1753),u1753(1754),u1754(1755),u1755(1756),u1756(1757),u1757(1758),u1758(1759),u1759(1760), |
u1760(1761),u1761(1762),u1762(1763),u1763(1764),u1764(1765),u1765(1766),u1766(1767),u1767(1768),u1768(1769),u1769(1770), |
u1770(1771),u1771(1772),u1772(1773),u1773(1774),u1774(1775),u1775(1776),u1776(1777),u1777(1778),u1778(1779),u1779(1780), |
u1780(1781),u1781(1782),u1782(1783),u1783(1784),u1784(1785),u1785(1786),u1786(1787),u1787(1788),u1788(1789),u1789(1790), |
u1790(1791),u1791(1792),u1792(1793),u1793(1794),u1794(1795),u1795(1796),u1796(1797),u1797(1798),u1798(1799),u1799(1800), |
u1800(1801),u1801(1802),u1802(1803),u1803(1804),u1804(1805),u1805(1806),u1806(1807),u1807(1808),u1808(1809),u1809(1810), |
u1810(1811),u1811(1812),u1812(1813),u1813(1814),u1814(1815),u1815(1816),u1816(1817),u1817(1818),u1818(1819),u1819(1820), |
u1820(1821),u1821(1822),u1822(1823),u1823(1824),u1824(1825),u1825(1826),u1826(1827),u1827(1828),u1828(1829),u1829(1830), |
u1830(1831),u1831(1832),u1832(1833),u1833(1834),u1834(1835),u1835(1836),u1836(1837),u1837(1838),u1838(1839),u1839(1840), |
u1840(1841),u1841(1842),u1842(1843),u1843(1844),u1844(1845),u1845(1846),u1846(1847),u1847(1848),u1848(1849),u1849(1850), |
u1850(1851),u1851(1852),u1852(1853),u1853(1854),u1854(1855),u1855(1856),u1856(1857),u1857(1858),u1858(1859),u1859(1860), |
u1860(1861),u1861(1862),u1862(1863),u1863(1864),u1864(1865),u1865(1866),u1866(1867),u1867(1868),u1868(1869),u1869(1870), |
u1870(1871),u1871(1872),u1872(1873),u1873(1874),u1874(1875),u1875(1876),u1876(1877),u1877(1878),u1878(1879),u1879(1880), |
u1880(1881),u1881(1882),u1882(1883),u1883(1884),u1884(1885),u1885(1886),u1886(1887),u1887(1888),u1888(1889),u1889(1890), |
u1890(1891),u1891(1892),u1892(1893),u1893(1894),u1894(1895),u1895(1896),u1896(1897),u1897(1898),u1898(1899),u1899(1900), |
u1900(1901),u1901(1902),u1902(1903),u1903(1904),u1904(1905),u1905(1906),u1906(1907),u1907(1908),u1908(1909),u1909(1910), |
u1910(1911),u1911(1912),u1912(1913),u1913(1914),u1914(1915),u1915(1916),u1916(1917),u1917(1918),u1918(1919),u1919(1920), |
u1920(1921),u1921(1922),u1922(1923),u1923(1924),u1924(1925),u1925(1926),u1926(1927),u1927(1928),u1928(1929),u1929(1930), |
u1930(1931),u1931(1932),u1932(1933),u1933(1934),u1934(1935),u1935(1936),u1936(1937),u1937(1938),u1938(1939),u1939(1940), |
u1940(1941),u1941(1942),u1942(1943),u1943(1944),u1944(1945),u1945(1946),u1946(1947),u1947(1948),u1948(1949),u1949(1950), |
u1950(1951),u1951(1952),u1952(1953),u1953(1954),u1954(1955),u1955(1956),u1956(1957),u1957(1958),u1958(1959),u1959(1960), |
u1960(1961),u1961(1962),u1962(1963),u1963(1964),u1964(1965),u1965(1966),u1966(1967),u1967(1968),u1968(1969),u1969(1970), |
u1970(1971),u1971(1972),u1972(1973),u1973(1974),u1974(1975),u1975(1976),u1976(1977),u1977(1978),u1978(1979),u1979(1980), |
u1980(1981),u1981(1982),u1982(1983),u1983(1984),u1984(1985),u1985(1986),u1986(1987),u1987(1988),u1988(1989),u1989(1990), |
u1990(1991),u1991(1992),u1992(1993),u1993(1994),u1994(1995),u1995(1996),u1996(1997),u1997(1998),u1998(1999),u1999(2000)} |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A unique number for each power output channel. Its value |
ranges between 1 and total number of output channels. |
This value is equivalent to the output channel number at |
the type label of the crate or power supply, but because the SMI |
index starts at 1, index 1 corresponds to U0." |
::= { outputEntry 1 } |
outputName OBJECT-TYPE |
SYNTAX DisplayString (SIZE (1..4)) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"A textual string containing a short name of the |
output. If the crate is equipped with an alphanumeric |
display, this string is shown to identify a output channel." |
::= { outputEntry 2 } |
outputGroup OBJECT-TYPE |
SYNTAX Integer32 (1..63) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The group number (1...63) assigned to each channel. |
If commands shall be sent to all channels with a specific group number (e.g. |
with the groupsSwitch command defined below), additional bits can be added to |
the group number: |
HLgggggg |
g: Group number (1...63) |
L: Mask bit: 1: high voltage channels only, no low voltage channels |
H: Mask bit: 1: low voltage channels only, no high voltage channels |
Special groups: 0: all (LV+HV) channels |
0x40: all, but no LV channels |
0x80: all, but no HV channels |
" |
::= { outputEntry 3 } |
outputStatus OBJECT-TYPE |
SYNTAX BITS { |
outputOn (0) , |
outputInhibit (1) , |
outputFailureMinSenseVoltage (2), |
outputFailureMaxSenseVoltage (3), |
outputFailureMaxTerminalVoltage (4), |
outputFailureMaxCurrent (5), |
outputFailureMaxTemperature (6), |
outputFailureMaxPower (7), |
-- reserved |
outputFailureTimeout (9), |
outputCurrentLimited (10), |
outputRampUp (11), |
outputRampDown (12), |
outputEnableKill(13), |
outputEmergencyOff (14), |
outputAdjusting (15), |
outputConstantVoltage (16), |
outputLowCurrentRange (17), |
outputCurrentBoundsExceeded (18), |
outputFailureCurrentLimit (19) |
} |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"A bit string which shows the status (health and operating conditions) of one output channel. |
If a bit is set (1), the explanation is satisfied: |
outputOn (0), output channel is on |
outputInhibit(1), external (hardware-)inhibit of the output channel |
outputFailureMinSenseVoltage (2) Supervision limit hurt: Sense voltage is too low |
outputFailureMaxSenseVoltage (3), Supervision limit hurt: Sense voltage is too high |
outputFailureMaxTerminalVoltage (4), Supervision limit hurt: Terminal voltage is too high |
outputFailureMaxCurrent (5), Supervision limit hurt: Current is too high |
outputFailureMaxTemperature (6), Supervision limit hurt: Heat sink temperature is too high |
outputFailureMaxPower (7), Supervision limit hurt: Output power is too high |
outputFailureTimeout (9), Communication timeout between output channel and main control |
outputCurrentLimited (10), Current limiting is active (constant current mode) |
outputRampUp (11), Output voltage is increasing (e.g. after switch on) |
outputRampDown (12), Output voltage is decreasing (e.g. after switch off) |
outputEnableKill (13), EnableKill is active |
outputEmergencyOff (14), EmergencyOff event is active |
outputAdjusting (15), Fine adjustment is working |
outputConstantVoltage (16), Voltage control (constant voltage mode) |
outputVoltageBoundsExceeded (17), output Voltage out of bounds |
outputCurrentBoundsExceeded (18), output Current out of bounds |
outputFailureCurrentLimit (19) Hardware current limit (EHS) / trip (EDS, EBS) was exceeded |
" |
::= { outputEntry 4 } |
outputMeasurementSenseVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured voltage at the sense input lines." |
::= { outputEntry 5 } |
outputMeasurementTerminalVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured voltage at the output terminals." |
::= { outputEntry 6 } |
outputMeasurementCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "A" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured output current." |
::= { outputEntry 7 } |
outputMeasurementTemperature OBJECT-TYPE |
SYNTAX INTEGER { ok (-128), failure(127) } |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured temperature of the power module." |
::= { outputEntry 8 } |
outputSwitch OBJECT-TYPE |
SYNTAX INTEGER { off (0), on (1), resetEmergencyOff (2), setEmergencyOff (3), clearEvents (10), setVoltageRippleMeasurementOff(20), setVoltageMeasurementOn(21), setRippleMeasurementOn(22), setVoltageRippleMeasurementOn(23) } |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Read: An enumerated value which shows the current state of |
the output channel. |
Write: Change the state of the channel. |
If the channel is On, and the write value is Off, then the channel |
will switch Off. |
If the channel is Off, and the write value is On, and if no other |
signals (mainInhibit, outputInhibit, outputEmergencyOff or outputFailureMaxCurrent) |
are active, then the channel will switch on. |
If the write value is resetEmergencyOff, then the channel will |
leave the state EmergencyOff. A write of clearEvents is necessary |
before the voltage can ramp up again. |
If the write value is setEmergencyOff, then the channel will have |
the state EmergencyOff, which means that the High Voltage will |
switch off without a ramp and reset of the outputVoltage to null volt. |
If the write value is clearEvents, then all failure messages |
of the outputStatus will be reset (all channel events, all module events |
and the state emergencyOff)." |
::= { outputEntry 9 } |
outputVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The nominal output voltage of the channel." |
::= { outputEntry 10 } |
outputAdjustVoltage OBJECT-TYPE |
SYNTAX Integer32 (-128..127) |
MAX-ACCESS read-write |
STATUS obsolete |
DESCRIPTION |
"A posibillity to make small changes of the output voltage." |
::= { outputEntry 11 } |
outputCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "A" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The current limit of the channel." |
::= { outputEntry 12 } |
outputVoltageRiseRate OBJECT-TYPE |
SYNTAX Float |
UNITS "V/s" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Voltage Fall Slew Rate [V/s]. |
The slew rate of the output voltage if it increases (after switch on or if the Voltage has been |
changed). |
" |
::= { outputEntry 13 } |
outputVoltageFallRate OBJECT-TYPE |
SYNTAX Float |
UNITS "V/s" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Voltage Rise Slew Rate [V/s]. |
The slew rate of the output voltage if it decreases (after switch off or if the Voltage has been |
changed). |
" |
::= { outputEntry 14 } |
outputSupervisionBehavior OBJECT-TYPE |
SYNTAX Integer32 (0..65535) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"A bit field packed into an integer which define the behavior of the output channel / power supply |
after failures. |
For each supervision value, a two-bit field exists. |
The enumeration of this value (..L+..H*2) is: |
WIENER LV devices |
0 ignore the failure |
1 switch off this channel |
2 switch off all channels with the same group number |
3 switch off the complete crate. |
iseg HV devices |
0 ignore the failure |
1 switch off this channel by ramp down the voltage |
2 switch off this channel by a emergencyOff |
3 switch off the whole board of the HV module by emergencyOff. |
The position of the bit fields in the integer value are: |
Bit 0, 1: outputFailureMinSenseVoltage |
Bit 2, 3: outputFailureMaxSenseVoltage |
Bit 4, 5: outputFailureMaxTerminalVoltage |
Bit 6, 7: outputFailureMaxCurrent |
Bit 8, 9: outputFailureMaxTemperature |
Bit 10, 11: outputFailureMaxPower |
Bit 12, 13: outputFailureInhibit |
Bit 14, 15: outputFailureTimeout |
" |
::= { outputEntry 15 } |
outputSupervisionMinSenseVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"If the measured sense voltage is below this value, the power supply |
performs the function defined by SupervisionAction." |
::= { outputEntry 16 } |
outputSupervisionMaxSenseVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"If the measured sense voltage is above this value, the power supply |
performs the function defined by SupervisionAction." |
::= { outputEntry 17 } |
outputSupervisionMaxTerminalVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"If the measured voltage at the power supply output |
terminals is above this value, the power supply |
performs the function defined by SupervisionAction." |
::= { outputEntry 18 } |
outputSupervisionMaxCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "A" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"If the measured current is above this value, the power supply |
performs the function defined by SupervisionAction." |
::= { outputEntry 19 } |
outputSupervisionMaxTemperature OBJECT-TYPE |
-- SYNTAX Integer32 (-128..127) |
SYNTAX Integer32 |
UNITS "deg C" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"If the measured module temperature is above this value, the power supply |
performs the function defined by SupervisionAction." |
::= { outputEntry 20 } |
outputConfigMaxSenseVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The maximum possible value of the sense voltage" |
::= { outputEntry 21 } |
outputConfigMaxTerminalVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The maximum possible value of the terminal voltage" |
::= { outputEntry 22 } |
outputConfigMaxCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "A" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The maximum possible value of the output current" |
::= { outputEntry 23 } |
outputSupervisionMaxPower OBJECT-TYPE |
SYNTAX Float |
UNITS "W" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"If the measured power (measured current * measured terminal voltage) |
is above this value, the power supply performs the function defined |
by SupervisionAction." |
::= { outputEntry 24 } |
outputCurrentRiseRate OBJECT-TYPE |
SYNTAX Float |
UNITS "A/s" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Current Fall Slew Rate [A/s]. |
The slew rate of the output current if it increases (after |
switch on or if the Current has been changed). |
" |
::= { outputEntry 25 } |
outputCurrentFallRate OBJECT-TYPE |
SYNTAX Float |
UNITS "A/s" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Current Rise Slew Rate [A/s]. |
The slew rate of the output current if it decreases (after |
switch off or if the Current has been changed). |
" |
::= { outputEntry 26 } |
outputTripTimeMaxCurrent OBJECT-TYPE |
SYNTAX INTEGER (0..4000) |
UNITS "ms" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Current trip time out [ms]. |
The outputTripTimeMaxCurrent defines a span for the time out function. |
The activity is depending from the bit field outputFailureMaxCurrent |
of the outputSupervisionBehavior." |
::= { outputEntry 27 } |
outputHardwareLimitVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"Hardware Voltage Limit [V]. |
Potentiometer to adjust the global hardware voltage limit (for all |
channels of a module). |
" |
::= { outputEntry 28 } |
outputHardwareLimitCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "A" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"Hardware Current Limit [A]. |
Potentiometer to adjust the global hardware current limit (for all |
channels of a module). |
" |
::= { outputEntry 29 } |
outputConfigGainSenseVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The gain value of the sense voltage" |
::= { outputEntry 30 } |
outputConfigOffsetSenseVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The offset value of the sense voltage" |
::= { outputEntry 31 } |
outputConfigGainTerminalVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The gain value of the sense voltage" |
::= { outputEntry 32 } |
outputConfigOffsetTerminalVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The offset value of the sense voltage" |
::= { outputEntry 33 } |
outputConfigGainCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The gain value of the sense voltage" |
::= { outputEntry 34 } |
outputConfigOffsetCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The offset value of the sense voltage" |
::= { outputEntry 35 } |
outputUserConfig OBJECT-TYPE |
SYNTAX Integer32 (0..15) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Definition of user-changeable items. |
A bit field packed into an integer which define the behavior of the output channel. |
Usable for WIENER LV devices only. |
The position of the bit fields in the integer value are: |
Bit 0: Voltage ramping at switch off: |
0: Ramp down at switch off. |
1: No ramp at switch off (immediate off) |
Bit 1, 2: Set different regulation modes, dependent on the |
cable inductance: |
0: fast: short cables, up to 1 meter. |
1: moderate: cables from 1 to 30 meter. |
2: slow: cables longer than 30 meter. |
3: slow (identical to 2, should not be used) |
Bit 3: Internal sense line connection to the output (MPOD only): |
0: The sense input at the sense connector is used |
for regulation. |
1: The output voltage is used for regulation. |
Any signals at the sense connector are ignored. |
Bit 4: External Inhibit input. |
0: The external inhibit input is ignored. |
1: The external inhibit input must be connected to |
a voltage source to allow switch on. |
Community required for write access: guru. |
" |
::= { outputEntry 37 } |
outputRegulationMode OBJECT-TYPE |
SYNTAX INTEGER { fast (0), moderate (1), slow (2) } |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Definition of the regulation mode. |
It is possible to set different regulation modes, dependent on the |
cable inductance. |
fast: short cables, up to 1 meter. |
moderate: cables from 1 to 30 meter. |
slow: cables longer than 30 meter. |
outputUserConfig in the future. |
Community required for write access: guru. |
" |
::= { outputEntry 38 } |
outputConfigMaxTemperature OBJECT-TYPE |
SYNTAX Integer32 |
-- SYNTAX Integer32 (-128..127) |
UNITS "deg C" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The maximum possible value of outputSupervisionMaxTemperature." |
::= { outputEntry 39 } |
------------------------------------------------------------------------------- |
-- output->groups |
------------------------------------------------------------------------------- |
groupsEntry OBJECT-TYPE |
SYNTAX GroupsEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A table row" |
INDEX { groupsIndex } |
::= { groupsTable 1 } |
GroupsEntry ::= |
SEQUENCE { |
groupsIndex |
INTEGER, |
-- outputGroupsName |
-- DisplayString, |
-- outputGroupsGroup |
-- INTEGER, |
-- outputGroupsStatus |
-- BITS, |
-- outputGroupsMeasurementSenseVoltage |
-- Float, |
-- outputMeasurementTerminalVoltage |
-- Float, |
-- outputMeasurementCurrent |
-- Float, |
-- outputMeasurementTemperature |
-- INTEGER, |
groupsSwitch |
INTEGER |
-- outputVoltage |
-- Float, |
-- outputAdjustVoltage |
-- INTEGER, |
-- outputCurrent |
-- Float, |
-- outputRampUp |
-- Float, |
-- outputRampDown |
-- Float, |
-- outputSupervisionBehavior |
-- INTEGER, |
-- outputSupervisionMinSenseVoltage |
-- Float, |
-- outputSupervisionMaxSenseVoltage |
-- Float, |
-- outputSupervisionMaxTerminalVoltage |
-- Float, |
-- outputSupervisionMaxCurrent |
-- Float, |
-- outputSupervisionMaxTemperature |
-- INTEGER, |
-- outputConfigMaxSenseVoltage |
-- Float, |
-- outputConfigMaxTerminalVoltage |
-- Float, |
-- outputConfigMaxCurrent |
-- Float, |
-- outputSupervisionMaxPower |
-- Float, |
} |
groupsIndex OBJECT-TYPE |
SYNTAX Integer32 (0..1999) |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A unique number for each power output group. Its value |
ranges between 1 and 1999. |
The special group 0 is predefined and gives access to all channels. |
" |
::= { groupsEntry 1 } |
groupsSwitch OBJECT-TYPE |
SYNTAX INTEGER { undefined (-1), off (0), on (1), resetEmergencyOff (2), setEmergencyOff(3), disableKill (4), enableKill (5), disableAdjust(6), enableAdjust(7), clearEvents(10) } |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Read: This function is not defined with groups of output channels. |
Write: Switch the state of all channels of a group. |
If any channel is On, and the write value is Off, then all channels |
will switch off. |
If any channel is Off, and the write value is On, and if no other |
signals (mainInhibit, outputInhibit, outputEmergencyOff or outputFailureMaxCurrent) |
are active, then all channels will switch on. |
If the write value is resetEmergencyOff, then all channels will |
leave the state EmergencyOff. A write of clearEvents is necessary |
before the voltage can ramp up again. |
If the write value is setEmergencyOff, then all channels will have |
the state EmergencyOff, which means that the High Voltage will |
switch off without a ramp and reset of the outputVoltage to null volt. |
If the write value is disableKILL, then all channels will switch |
to disableKill (outputStatus outputDisableKill). |
If the write value is enableKILL, then all channels will switch |
to enableKill (outputStatus outputEnableKill). |
If the write value is clearEvents, then all failure messages |
of the outputStatus will be cleared (all channel events, |
all module events and the state outputEmergencyOff will be reset). |
For a detailed description of the different group numbers available |
look at the outputGroup OID above. |
" |
::= { groupsEntry 9 } |
--groupsName OBJECT-TYPE |
-- SYNTAX DisplayString (SIZE (1..4)) |
-- MAX-ACCESS read-only |
-- STATUS current |
-- DESCRIPTION |
-- "A textual string containing a short name of the |
-- output. If the crate is equipped with an alphanumeric |
-- display, this string is shown to identify a output channel." |
-- ::= { groupsEntry 2 } |
------------------------------------------------------------------------------- |
-- output->module |
------------------------------------------------------------------------------- |
-- device related parsing of the HV data items |
-- |
-- advantage: |
-- Parsing this branch the user directly recognises the structure |
-- of HV/LV devices and the hierarchie of data items, |
-- module and channel functions and their interaction. |
-- This branch gives an image of the module seen from outsite. |
-- The inner structure will be transformed into a simple and reduced namspace |
-- which has implemented the common module items and the items for the single |
-- channels. |
-- Module characteristics will image the propeties to a moduleTable which |
-- gives an access to the collected properties of the module items whitout |
-- a splitting for board 1 and board 2. |
-- The channels sequence will collect all the channels also these |
-- from a second board if it is integrated. |
------------------------------------------------------------------------------- |
moduleEntry OBJECT-TYPE |
SYNTAX HvdevEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A row in the table of HV/LV modules" |
INDEX { moduleIndex } |
::= { moduleTable 1 } |
moduleEntry ::= SEQUENCE { |
moduleIndex INTEGER, |
moduleDescription OCTET STRING, |
moduleChannelNumber INTEGER32, |
-- moduleAuxiliaryNumber INTEGER32, |
moduleAuxiliaryTableSupplyVoltages ModuleAuxiliaryTableSupplyVoltages, |
moduleHardwareLimitVoltage Float, |
moduleHardwareLimitCurrent Float, |
moduleRampSpeedVoltage Float, |
moduleRampSpeedCurrent Float, |
moduleStatus BITS, |
moduleEventStatus BITS, |
moduleEventChannelStatus INTEGER, |
moduleDoClear INTEGER, |
-- moduleAuxiliaryTemperatureSensorNumber INTEGER32, |
moduleAuxiliaryTableTemperature moduleAuxiliaryTableTemperature |
} |
moduleIndex OBJECT-TYPE |
SYNTAX INTEGER { |
ma0(1),ma1(2),ma2(3),ma3(4),ma4(5),ma5(6),ma6(7),ma7(8),ma8(9),ma9(10)} |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A unique number for each HV/LV module. Its value |
ranges between 1 and the total number of HV/LV modules. |
Note, index 1 corresponds to ma0." |
::= { moduleEntry 1 } |
moduleDescription OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE(0..39)) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"Vendor, FirmwareName, ChannelNumber, SerialNumber, FirmwareRelease |
Vendor WIENER or iseg |
FirmwareName: |
'E16D0' EDS 16 channels per PCB, distributor module, range of Vmax from VO max to (VO max - 1kV) |
'E16D1' EDS 16 channels per PCB, distributor module |
'E08C0' EHS 8 channels per PCB, common GND module |
'E08F0' EHS 8 channels per PCB, floating GND module |
'E08F2' EHS 8 channels per PCB, floating GND module, 2 current measurement ranges |
'E08C2' EHS 8 channels per PCB, common floating GND module, 2 current measurement ranges |
'E08B0' EBS 8 bipolars channel per PCB, distributor module |
'H101C0' HPS 1 channel HV high power supply |
ChannelNumber 1 to 64 |
SerialNumber 71xxxx |
FirmwareRelease x.xx" |
::= { moduleEntry 2 } |
------------------------------------------------------------------------------- |
moduleAuxiliaryMeasurementVoltage OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"The measured module auxiliary voltages." |
::= { moduleEntry 3 } |
moduleAuxiliaryMeasurementVoltage0 OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured module auxiliary voltage." |
::= { moduleAuxiliaryMeasurementVoltage 1 } |
moduleAuxiliaryMeasurementVoltage1 OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured module auxiliary voltage." |
::= { moduleAuxiliaryMeasurementVoltage 2 } |
------------------------------------------------------------------------------- |
moduleHardwareLimitVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "%" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The module hardware voltage limit." |
::= { moduleEntry 4 } |
moduleHardwareLimitCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "%" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The module hardware current limit." |
::= { moduleEntry 5 } |
moduleRampSpeedVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "%" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The module voltage ramp speed |
(iseg HV modules have the same ramp speed value for all channels). |
" |
::= { moduleEntry 6 } |
moduleRampSpeedCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "%" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The module current ramp speed |
(iseg HV modules have the same ramp speed value for all channels). |
" |
::= { moduleEntry 7 } |
moduleStatus OBJECT-TYPE |
SYNTAX BITS { |
moduleIsFineAdjustment (0), |
-- reserved |
moduleIsLiveInsertion (2), |
-- reserved |
moduleNeedService (4), |
moduleHardwareLimitVoltageIsGood (5), |
moduleIsInputError (6), |
-- reserved |
moduleIsNoSumError (8), |
moduleIsNoRamp (9), |
moduleSafetyLoopIsGood (10), |
moduleIsEventActive (11), |
moduleIsGood (12), |
moduleSupplyIsGood (13), |
moduleTemperatureIsGood (14), |
moduleIsKillEnable (15), |
} |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"A bit string which shows the current module status. |
If a bit is set (1), the explanation is satisfied: |
moduleIsFineAdjustment (0), Module has reached state fine adjustment. |
moduleIsLiveInsertion (2), Module is in state live insertion. |
moduleNeedService (4), Hardware failure detected (consult iseg Spezialelektronik GmbH). |
moduleIsHardwareLimitVoltageGood (5), Hardware limit voltage in proper range, using for HV distributor modules with |
current mirror only. |
moduleIsInputError (6), Input error in connection with a module access. |
moduleIsNoSumError (8), All channels without any failure. |
moduleIsNoRamp (9), All channels stable, no is ramp active. |
moduleIsSafetyLoopGood (10), Safety loop is closed. |
moduleIsEventActive (11), Any event is active and mask is set. |
moduleIsGood (12), Module state is good. |
moduleIsSupplyGood (13), Power supply is good. |
moduleIsTemperatureGood (14), Module temperature is good. |
moduleIsKillEnable (15), Module state of kill enable. |
" |
::= { moduleEntry 8 } |
moduleEventStatus OBJECT-TYPE |
SYNTAX BITS { |
moduleEventPowerFail (0), |
-- reserved |
moduleEventLiveInsertion (2), |
-- reserved |
moduleEventService (4), |
moduleHardwareLimitVoltageNotGood (5), |
moduleEventInputError (6), |
-- reserved |
-- reserved, |
-- reserved,, |
moduleEventSafetyLoopNotGood (10), |
-- reserved, |
-- reserved, |
moduleEventSupplyNotGood (13), |
moduleEventTemperatureNotGood (14), |
-- reserved, |
} |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"A bit string which shows the current module status. |
If a bit is set (1), the explanation is satisfied: |
moduleEventPowerFail (0), Event power fail generated by the MPOD controller in order to ramp down all HV's (ramp speed=1000V/s) |
moduleEventLiveInsertion (2), Event live insertion to prepare a hot plug of a module |
moduleEventService (4), Module event: Hardware failure detected (consult iseg Spezialelektronik GmbH). |
moduleHardwareLimitVoltageNotGood (5), Module Event: Hardware voltage limit is not in proper range, using for HV distributor |
modules with current mirror only. |
moduleEventInputError (6), Module event: There was an input error in connection with a module access |
moduleEventSafetyLoopNotGood (10), Module event: Safety loop is open. |
moduleEventSupplyNotGood (13), Module event: At least one of the supplies is not good. |
moduleEventTemperatureNotGood (14), Module event: Temperature was above the permitted threshold |
(for EDS/EHS temperature above 55°C) |
" |
::= { moduleEntry 9 } |
moduleEventChannelStatus OBJECT-TYPE |
SYNTAX BITS |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"Bit field that reserves one bit for every channel. |
bit 0 HV channel 0 |
bit 1 HV channel 1 |
bit x HV channel x |
" |
::= { moduleEntry 10 } |
moduleDoClear OBJECT-TYPE |
SYNTAX INTEGER { nothing (0), doClear (1) } |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"All events of the module will be cleared." |
::= { moduleEntry 11 } |
------------------------------------------------------------------------------- |
moduleAuxiliaryMeasurementTemperature OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"The number of auxiliary temperature sensors in the module." |
::= { moduleEntry 12 } |
moduleAuxiliaryMeasurementTemperature0 OBJECT-TYPE |
SYNTAX Float |
UNITS "C" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured module temperature of sensor 1." |
::= { moduleAuxiliaryMeasurementTemperature 1 } |
moduleAuxiliaryMeasurementTemperature1 OBJECT-TYPE |
SYNTAX Float |
UNITS "C" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured module temperature of sensor 2." |
::= { moduleAuxiliaryMeasurementTemperature 2 } |
moduleAuxiliaryMeasurementTemperature2 OBJECT-TYPE |
SYNTAX Float |
UNITS "C" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured module temperature of sensor 3." |
::= { moduleAuxiliaryMeasurementTemperature 3 } |
moduleAuxiliaryMeasurementTemperature3 OBJECT-TYPE |
SYNTAX Float |
UNITS "C" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured module temperature of sensor 4." |
::= { moduleAuxiliaryMeasurementTemperature 4 } |
------------------------------------------------------------------------------- |
-- sensor |
------------------------------------------------------------------------------- |
--Sensor ::= SEQUENCE { |
-- sensorNumber Integer32, |
-- sensorTable SensorTable |
--} |
sensorNumber OBJECT-TYPE |
SYNTAX Integer32 (0..8) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The number of temperature sensors of the crate." |
::= { sensor 1 } |
sensorTable OBJECT-TYPE |
SYNTAX SEQUENCE OF SensorEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A (conceptual table) of temperature sensor data." |
::= { sensor 2 } |
sensorEntry OBJECT-TYPE |
SYNTAX SensorEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"An entry (conceptual row) of the sensorTable." |
INDEX { sensorIndex } |
::= { sensorTable 1 } |
SensorEntry ::= SEQUENCE { |
sensorIndex INTEGER, |
sensorTemperature INTEGER, |
-- sensorOkThreshold INTEGER, nicht implementiert (for futur) |
sensorWarningThreshold INTEGER, |
sensorAlarmThreshold INTEGER, |
sensorFailureThreshold INTEGER, |
sensorName DisplayString, |
sensorID OCTET STRING, |
sensorStatus INTEGER |
} |
sensorIndex OBJECT-TYPE |
SYNTAX INTEGER { temp1 (1), temp2(2), temp3(3), temp4(4), temp5(5), |
temp6(6), temp7(7), temp8(8) } |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A unique number for each temperature sensor in the crate" |
::= { sensorEntry 1 } |
sensorTemperature OBJECT-TYPE |
-- CHECK SYNTAX INTEGER { UNUSED(-128), (-127..127) } |
SYNTAX Integer32 (-128..127) |
UNITS "deg C" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured temperature of the sensor. |
Unused temperature probes have the special value -128" |
::= { sensorEntry 2 } |
sensorWarningThreshold OBJECT-TYPE |
-- CHECK SYNTAX INTEGER { (0..126), DISABLED(127) } |
SYNTAX Integer32 (0..127) |
UNITS "deg C" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"If the measured temperature of the sensor is higher than this |
value, the fan speed of the connected fan tray is increased. |
The value 127 has the special meaning: channel disabled." |
::= { sensorEntry 3} |
sensorFailureThreshold OBJECT-TYPE |
-- CHECK SYNTAX INTEGER { (0..126), DISABLED(127) } |
SYNTAX Integer32 (0..127) |
UNITS "deg C" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"If the measured temperature of the sensor is higher than this |
value, the power supply switches off. |
The value 127 has the special meaning: channel disabled." |
::= { sensorEntry 4} |
--sensorOkThreshold OBJECT-TYPE |
-- CHECK SYNTAX INTEGER { (0..126), DISABLED(127) } |
-- SYNTAX Integer32 (0..127) |
-- UNITS "deg C" |
-- MAX-ACCESS read-write |
-- STATUS current |
-- DESCRIPTION |
-- "If the measured temperature of the sensor is ok, |
-- so it is possible to switch of the fans. |
-- The value 127 has the special meaning: channel disabled." |
-- ::= { sensorEntry 5} |
sensorAlarmThreshold OBJECT-TYPE |
-- CHECK SYNTAX INTEGER { (0..126), DISABLED(127) } |
SYNTAX Integer32 (0..127) |
UNITS "deg C" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"If the measured temperature of the sensor is much higher than this |
value, the fans rotate in full speed. |
The value 127 has the special meaning: channel disabled." |
::= { sensorEntry 6} |
sensorName OBJECT-TYPE |
SYNTAX DisplayString (SIZE (1..7)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"A textual string containing a short name of the |
sensor. If the crate is equipped with an alphanumeric |
display, this string is shown to identify a sensor channel." |
::= { sensorEntry 7 } |
sensorID OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (8)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Shows the 1-Wire Id of the corresponding Sensor." |
::= { sensorEntry 8} |
sensorStatus OBJECT-TYPE |
SYNTAX Integer32 |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"A bit field packed into an integer which define the Status of the Sensors |
after failures. For each Status value, a two-bit field exists. |
Bits-Value |
00 Temperature is ok |
01 Temperature is over WarningThreshold |
10 Temperature is over AlarmThreshold |
11 Temperature is over FailureThreshold |
The position of the bit fields in the integer value are: |
Bit 0, 1: Sensor1 |
Bit 2, 3: Sensor2 |
Bit 4, 5: Sensor3 |
Bit 6, 7: Sensor4 |
Bit 8, 9: Sensor5 |
Bit 10, 11: Sensor6 |
Bit 12, 13: Sensor7 |
Bit 14, 15: Sensor8" |
::= { sensorEntry 9} |
--################ |
------------------------------------------------------------------------------- |
-- communication |
------------------------------------------------------------------------------- |
--Communication ::= SEQUENCE { |
-- snmp Snmp, |
-- tcpip Tcpip, |
-- http Http, |
-- telnet Telnet, |
-- canbus Canbus, |
-- rs232 RS232 |
--} |
------------------------------------------------------------------------------- |
-- communication.snmp |
------------------------------------------------------------------------------- |
snmp OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"SNMP configuration." |
::= { communication 1 } |
SnmpCommunityEntry ::= SEQUENCE { |
snmpAccessRight INTEGER, |
snmpCommunityName OCTET STRING, |
snmpCommunityTable SnmpCommunityEntry, |
snmpPort INTEGER, |
ipDynamicAddress IpAddress, |
--OCTET STRING, |
ipStaticAddress IpAddress, |
--OCTET STRING, |
macAddress OCTET STRING |
} |
snmpCommunityTable OBJECT-TYPE |
SYNTAX SEQUENCE OF SnmpCommunityEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"The SNMP community string table for different views." |
::= { snmp 1 } |
snmpCommunityEntry OBJECT-TYPE |
SYNTAX SnmpCommunityEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"One table row." |
INDEX { snmpAccessRight } |
::= { snmpCommunityTable 1 } |
snmpAccessRight OBJECT-TYPE |
SYNTAX INTEGER { public (1), private (2), admin (3), guru (4) } |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A unique number for each access right" |
::= { snmpCommunityEntry 1 } |
snmpCommunityName OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (0..14)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The SNMP community names for different views. The rights of the different communities are: |
public no write access |
private can switch power on/off, generate system reset |
admin can change supervision levels |
guru can change output voltage & current (this may destroy hardware if done wrong!) |
Setting a community name to a zero-length string completly |
disables the access to this view. If there is no higher- |
privileged community, the community name can only changed |
by direct access to the crate (not via network)! |
" |
::= { snmpCommunityEntry 2} |
snmpPort OBJECT-TYPE |
SYNTAX Integer32 |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The UDP port number of the SNMP protocol" |
::= { snmp 2} |
firmwareUpdate OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (0..30)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Send a update String" |
::= { snmp 10} |
ipDynamicAddress OBJECT-TYPE |
SYNTAX IpAddress |
--OCTET STRING (SIZE (4)) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"Shows the Ip which is currently used" |
::= { snmp 11} |
ipStaticAddress OBJECT-TYPE |
SYNTAX IpAddress |
--OCTET STRING (SIZE (4)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Shows the Ip which is setted by user" |
::= { snmp 12} |
macAddress OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (6)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Shows the MAC of the corresponding device" |
::= { snmp 13} |
------------------------------------------------------------------------------- |
-- communication.canTunnel |
------------------------------------------------------------------------------- |
can OBJECT-IDENTITY |
STATUS current |
DESCRIPTION |
"CAN-Bus tunnel via SNMP." |
::= { communication 2 } |
canBitRate OBJECT-TYPE |
SYNTAX Integer32 |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Control of the CAN-Bus. |
The value defines the bit rate of the CAN-bus interface. |
A write disconnects the CAN interface from the ISEG modules and connects |
it to the SNMP communication. Both the receive and transmit fifos are |
cleared and the CAN interface is initialized with the selected bit rate. |
The special bit rate 0 disables the tunnel and switches back to normal operation. |
" |
::= { can 1 } |
canReceive OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (14)) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"Control of the CAN-Bus Receive FIFO. |
A read access returns the total number of CAN messages stored in the receive |
fifo and the oldest message. |
This message is removed from the fifo. |
The OCTET STRING data is formatted according to the CANviaSNMP structure. |
" |
::= { can 2 } |
canTransmit OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (14)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Control of the CAN-Bus Transmit FIFO. |
A read access returns the total number of CAN messages stored in the transmit |
fifo and a NULL message. |
A write inserts the CAN message into the transmit fifo. This message will be |
transmitted via the CAN interface later. The total number of CAN messages |
stored in the transmit fifo and the recent message are returned. |
The OCTET STRING data is formatted according to the CANviaSNMP structure. |
" |
::= { can 3 } |
canReceiveHv OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (14)) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"Control of the internal HV CAN-Bus on the backplane Receive FIFO. |
A read access returns the total number of CAN messages stored in the receive |
fifo and the oldest message. |
This message is removed from the fifo. |
The OCTET STRING data is formatted according to the CANviaSNMP structure. |
" |
::= { can 4 } |
canTransmitHv OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (14)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Control of the internal HV CAN-Bus on the backplane. |
A write access with: |
CANID=0x600 DLC=4 DATAID=0x1001 CONTROL |
will switch the HV modules into a special state. |
CONTROL=0x0001 - enable SNMP CAN access, stop the refresh cycle for the data points of the name space |
CONTROL=0x0002 - disable SNMP CAN access, activate the refresh cycle for the data points of the name space |
A write access unequal to CANID=0x600 will be transmitted to the HV CAN on the backplane. |
Such a message will be transmitted immediately via the CAN interface. |
The OCTET STRING data is formatted according to the CANviaSNMP structure. |
" |
::= { can 5 } |
canBitRateHv OBJECT-TYPE |
SYNTAX Integer32 |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Control of the bit rate of the CAN-Bus. |
The value defines the bit rate of the CAN-bus interface |
" |
::= { can 6 } |
------------------------------------------------------------------------------- |
-- communication.... |
------------------------------------------------------------------------------- |
-- other future entries: |
-- +-tcpip |
-- | | |
-- | +- tcpipIpAddress |
-- | +- tcpipGateway |
-- | +- tcpipSubnetMask |
-- | +- tcpipNegotiation |
-- | +- tcpipMAC |
-- | |
-- +-http |
-- | | |
-- | +- httpPort |
-- | +- httpWriteEnable |
-- | |
-- +-telnet |
-- | | |
-- | +- telnetPort |
-- | |
-- +-canbus |
-- | | |
-- | +- address |
-- | +- address2 |
-- | +- speed |
-- | |
-- +-rs232 |
-- | | |
-- | +- ? |
------------------------------------------------------------------------------- |
-- powersupply |
------------------------------------------------------------------------------- |
Powersupply ::= SEQUENCE { |
--psFirmwareVersion DisplayString, |
psSerialNumber DisplayString, |
psOperatingTime Integer32, |
psDirectAccess OCTET STRING |
} |
--integrated in system.sysDesc |
--psFirmwareVersion OBJECT-TYPE |
-- SYNTAX DisplayString |
-- MAX-ACCESS read-only |
-- STATUS current |
-- DESCRIPTION |
-- "The firmware version of the power supply main CPU." |
-- ::= { powersupply 1 } |
psSerialNumber OBJECT-TYPE |
SYNTAX DisplayString |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The serial number of the power supply." |
::= { powersupply 2 } |
psOperatingTime OBJECT-TYPE |
SYNTAX Integer32 |
UNITS "s" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The time in seconds for how long the power supply was switched on." |
::= { powersupply 3 } |
psAuxiliaryNumber OBJECT-TYPE |
SYNTAX Integer32 (0..8) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The number of auxiliary channels of the power supply." |
::= { powersupply 4 } |
psAuxiliaryTable OBJECT-TYPE |
SYNTAX SEQUENCE OF PsAuxiliarytEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A list of psAuxiliary entries." |
::= { powersupply 5 } |
psDirectAccess OBJECT-TYPE |
SYNTAX OCTET STRING (SIZE (1..14)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Direct data transfer to the UEP6000 power supply. |
A read access returns nothing, a write access returns the |
response of the power supply. |
" |
::= { powersupply 1024 } |
------------------------------------------------------------------------------ |
psAuxiliaryEntry OBJECT-TYPE |
SYNTAX PsAuxiliaryEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A table row" |
INDEX { psAuxiliaryIndex } |
::= { psAuxiliaryTable 1 } |
OutputEntry ::= SEQUENCE { |
psAuxiliaryIndex INTEGER, |
psAuxiliaryMeasurementVoltage Float, |
psAuxiliaryMeasurementCurrent Float |
} |
psAuxiliaryIndex OBJECT-TYPE |
SYNTAX INTEGER { |
u0(1),u1(2),u2(3),u3(4),u4(5),u5(6),u6(7),u7(8)} |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A unique number for each power supply auxiliary channel. Its value |
ranges between 1 and total number of output channels. |
SMI index starts at 1, so index 1 corresponds to U0." |
::= { psAuxiliaryEntry 1 } |
psAuxiliaryMeasurementVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured power supply auxiliary output voltage." |
::= { psAuxiliaryEntry 3 } |
psAuxiliaryMeasurementCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "A" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured power supply auxiliary output current." |
::= { psAuxiliaryEntry 4 } |
------------------------------------------------------------------------------- |
-- fantray |
------------------------------------------------------------------------------- |
Fantray ::= SEQUENCE { |
-- fanFirmwareVersion DisplayString, |
fanSerialNumber DisplayString, |
fanOperatingTime Integer32, |
fanAirTemperature INTEGER, |
fanSwitchOffDelay INTEGER, |
fanNominalSpeed INTEGER, |
fanMaxSpeed INTEGER, |
fanMinSpeed INTEGER, |
fanNumberOfFans INTEGER, |
fanConfigMaxSpeed Integer32, |
fanConfigMinSpeed Integer32, |
fanSpeedTable FanSpeedEntry |
} |
--integrated in system.sysDesc |
--fanFirmwareVersion OBJECT-TYPE |
-- SYNTAX DisplayString |
-- MAX-ACCESS read-only |
-- STATUS current |
-- DESCRIPTION |
-- "The firmware version of the fan tray CPU." |
-- ::= { fantray 1 } |
fanSerialNumber OBJECT-TYPE |
SYNTAX DisplayString (SIZE (0..14)) |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The serial number of the fan tray." |
::= { fantray 2 } |
fanOperatingTime OBJECT-TYPE |
SYNTAX Integer32 |
UNITS "s" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The time in seconds for how long the fan tray was switched on." |
::= { fantray 3 } |
fanAirTemperature OBJECT-TYPE |
SYNTAX Integer32 |
UNITS "deg C" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The temperature of the fan tray inlet air." |
::= { fantray 4 } |
fanSwitchOffDelay OBJECT-TYPE |
SYNTAX Integer32 (0 .. 900) |
UNITS "s" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The maximum time in seconds for which the fans will continue running |
after the power supply has been switched off. This feature is used |
to cool down the electronics after switching off. |
" |
::= { fantray 5 } |
fanNominalSpeed OBJECT-TYPE |
-- CHECK SYNTAX INTEGER { (0) , (1200..3600) } |
-- SYNTAX Integer32 (0..3600) |
SYNTAX Integer32 |
UNITS "RPM" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The nominal fan rotation speed (RPM, Revolutions Per Minute) |
Value 0 does switch off the fans (only allowed if at least |
one rack temperature sensor is present). |
Values 1..1199 are not allowed" |
::= { fantray 6 } |
fanNumberOfFans OBJECT-TYPE |
SYNTAX Integer32 ( 0..12 ) |
UNITS "Fans" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The number of installed fans" |
::= { fantray 7 } |
fanSpeedTable OBJECT-TYPE |
SYNTAX SEQUENCE OF FanSpeedEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A list of fanSpeedEntries." |
::= { fantray 8 } |
fanSpeedEntry OBJECT-TYPE |
SYNTAX FanSpeedEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A table row" |
INDEX { fanNumber } |
::= { fanSpeedTable 1 } |
FanSpeedEntry ::= SEQUENCE { |
fanNumber |
INTEGER, |
fanSpeed |
INTEGER |
} |
fanNumber OBJECT-TYPE |
SYNTAX Integer32 ( 1..12 ) |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A unique number for each fan." |
::= { fanSpeedEntry 1 } |
fanSpeed OBJECT-TYPE |
SYNTAX Integer32 |
UNITS "RPM" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured fan rotation speed (RPM, Revolutions Per Minute)" |
::= { fanSpeedEntry 2 } |
fanMaxSpeed OBJECT-TYPE |
-- CHECK SYNTAX INTEGER { (0) , (1200..5000) } |
-- SYNTAX Integer32 (2900..4000) |
SYNTAX INTEGER |
UNITS "RPM" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The highest allowed rotationspeed of fan." |
::= { fantray 9 } |
fanMinSpeed OBJECT-TYPE |
-- CHECK SYNTAX INTEGER { (0) , (1000..3600) } |
-- SYNTAX Integer32 (1000..1400) |
SYNTAX INTEGER |
UNITS "RPM" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"The lowest allowed Rotationspeed of fan." |
::= { fantray 10 } |
fanConfigMaxSpeed OBJECT-TYPE |
SYNTAX Integer32 |
UNITS "RPM" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Hardwarelimits. Can only set by WIENER." |
::= { fantray 11 } |
fanConfigMinSpeed OBJECT-TYPE |
SYNTAX Integer32 |
UNITS "RPM" |
MAX-ACCESS read-write |
STATUS current |
DESCRIPTION |
"Hardwarelimits Can only set by WIENER." |
::= { fantray 12 } |
------------------------------------------------------------------------------- |
-- rack |
------------------------------------------------------------------------------- |
-- this is reserved for futer items (BIN serial number, plug&play, ...) |
-- ################### |
------------------------------------------------------------------------------- |
-- signal |
------------------------------------------------------------------------------- |
Signal ::= SEQUENCE { |
numberOfAnalogInputs Integer32, |
analogInputTable AnalogInputEntry, |
-- numberOfAnalogOutputs Integer32, |
digitalInput BITS, |
digitalOutput BITS |
} |
numberOfAnalogInputs OBJECT-TYPE |
SYNTAX Integer32 (0..8) |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The number of additional analog inputs of the crate." |
::= { signal 1 } |
analogInputTable OBJECT-TYPE |
SYNTAX SEQUENCE OF AnalogInputEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A (conceptual table) of analog input data." |
::= { signal 2 } |
analogInputEntry OBJECT-TYPE |
SYNTAX AnalogInputEntry |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"An entry (conceptual row) of the analogInputTable." |
INDEX { analogInputIndex } |
::= { analogInputTable 1 } |
AnalogInputEntry ::= SEQUENCE { |
analogInputIndex INTEGER, |
analogMeasurementVoltage Float |
} |
analogInputIndex OBJECT-TYPE |
SYNTAX Integer32 (1..8) |
MAX-ACCESS not-accessible |
STATUS current |
DESCRIPTION |
"A unique number for each analog input of the crate" |
::= { analogInputEntry 1 } |
analogMeasurementVoltage OBJECT-TYPE |
SYNTAX Float |
UNITS "V" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured voltage of the analog input." |
::= { analogInputEntry 2 } |
analogMeasurementCurrent OBJECT-TYPE |
SYNTAX Float |
UNITS "A" |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The measured current of the analog input." |
::= { analogInputEntry 3 } |
digitalInput OBJECT-TYPE |
SYNTAX BITS { |
d0 (0) , |
d1 (1) , |
d2 (2) , |
d3 (3) , |
d4 (4) , |
d5 (5) , |
d6 (6) , |
d7 (7) |
} |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The value of the digital inputs." |
::= { signal 5 } |
digitalOutput OBJECT-TYPE |
SYNTAX BITS { |
d0 (0) , |
d1 (1) , |
d2 (2) , |
d3 (3) , |
d4 (4) , |
d5 (5) , |
d6 (6) , |
d7 (7) |
} |
MAX-ACCESS read-only |
STATUS current |
DESCRIPTION |
"The value of the digital outputs." |
::= { signal 6 } |
-- ################### |
------------------------------------------------------------------------------- |
END |
/cvi/instr/MPOD/WIENER_SNMP.c |
---|
0,0 → 1,2316 |
// WIENER SNMP basic SNMP library to Demonstrate C-Access to WIENER-Crates via SNMP |
// modified for LabView import 04/23/06, Andreas Ruben |
// |
// The path to the Net-SNMP include files (default /usr/include) must be added to the |
// include file search path! |
// The following libraries must be included: |
// netsnmp.lib ws2_32.lib |
// The path to the Net-SNMP library must be added to the linker files. |
// /usr/lib |
// path for the WIENER MIB file (mibdirs) c:/usr/share/snmp/mibs |
#include <windows.h> |
#include "toolbox.h" |
#include <ansi_c.h> |
#include "WIENER_SNMP.h" |
#define VER_FILEVERSION 1,1,1,0 |
#define VER_FILEVERSION_STR "1.1.1.0\0" |
#ifdef _MSC_VER |
#define strdup _strdup |
#define vsnprintf vsprintf_s |
#define strPrintf sprintf_s |
#else |
#define strdup StrDup |
#define strPrintf snprintf |
#endif |
#ifndef UNREFERENCED_PARAMETER |
#define UNREFERENCED_PARAMETER(P) (void)(P) |
#endif |
#define false 0; |
#define true 1; |
static const char WienerMibFileName[] = "WIENER-CRATE-MIB"; |
static const char DefaultReadCommunity[] = "public"; ///< default community name for read operations |
static const char DefaultWriteCommunity[] = "guru"; ///< default community name for write operation |
static char *m_readCommunity = (char *)DefaultReadCommunity; |
static char *m_writeCommunity = (char *)DefaultWriteCommunity; |
/** |
* @brief The SnmpObject class is used internally to resolve OIDs and for the SNMP calls. |
*/ |
//class SnmpObject { |
//public: |
typedef struct { |
oid id[MAX_OID_LEN]; ///< The resolved SNMP OID |
size_t len; ///< The resolved OIDs length in byte |
char desc[100]; ///< The OIDs textual representation, e.g. "sysDescr.0" |
} SnmpObject; |
//typedef struct snmp_object SnmpObject; |
static SnmpObject moduleIndex[MaxSlotsPerCrate]; |
static SnmpObject moduleDescription[MaxSlotsPerCrate]; |
static SnmpObject moduleSupply[MaxModuleAuxSupplies][MaxSlotsPerCrate]; |
static SnmpObject moduleHardwareLimitVoltage[MaxSlotsPerCrate]; |
static SnmpObject moduleHardwareLimitCurrent[MaxSlotsPerCrate]; |
static SnmpObject moduleRampSpeedVoltage[MaxSlotsPerCrate]; |
static SnmpObject moduleRampSpeedCurrent[MaxSlotsPerCrate]; |
static SnmpObject moduleStatus[MaxSlotsPerCrate]; |
static SnmpObject moduleEventStatus[MaxSlotsPerCrate]; |
static SnmpObject moduleDoClear[MaxSlotsPerCrate]; |
static SnmpObject moduleAuxiliaryMeasurementTemperature[MaxModuleAuxTemperatures][MaxSlotsPerCrate]; |
static SnmpObject sysDescr; |
static SnmpObject sysMainSwitch; |
static SnmpObject sysStatus; |
static SnmpObject sysVmeSysReset; |
static SnmpObject outputNumber; |
static SnmpObject groupsNumber; |
static SnmpObject highVoltageGroupsSwitch; |
static SnmpObject lowVoltageGroupsSwitch; |
static SnmpObject ipStaticAddress; |
static SnmpObject outputName[MaxChannelsPerCrate]; |
static SnmpObject outputIndex[MaxChannelsPerCrate]; |
static SnmpObject outputGroup[MaxChannelsPerCrate]; |
static SnmpObject outputStatus[MaxChannelsPerCrate]; |
static SnmpObject outputMeasurementSenseVoltage[MaxChannelsPerCrate]; |
static SnmpObject outputMeasurementTerminalVoltage[MaxChannelsPerCrate]; |
static SnmpObject outputMeasurementCurrent[MaxChannelsPerCrate]; |
static SnmpObject outputMeasurementTemperature[MaxChannelsPerCrate]; |
static SnmpObject outputSwitch[MaxChannelsPerCrate]; |
static SnmpObject outputVoltage[MaxChannelsPerCrate]; |
static SnmpObject outputCurrent[MaxChannelsPerCrate]; |
static SnmpObject outputVoltageRiseRate[MaxChannelsPerCrate]; |
static SnmpObject outputVoltageFallRate[MaxChannelsPerCrate]; |
static SnmpObject outputCurrentRiseRate[MaxChannelsPerCrate]; |
static SnmpObject outputCurrentFallRate[MaxChannelsPerCrate]; |
static SnmpObject outputSupervisionBehavior[MaxChannelsPerCrate]; |
static SnmpObject outputSupervisionMinSenseVoltage[MaxChannelsPerCrate]; |
static SnmpObject outputSupervisionMaxSenseVoltage[MaxChannelsPerCrate]; |
static SnmpObject outputSupervisionMaxTerminalVoltage[MaxChannelsPerCrate]; |
static SnmpObject outputSupervisionMaxCurrent[MaxChannelsPerCrate]; |
static SnmpObject outputSupervisionMaxTemperature[MaxChannelsPerCrate]; |
static SnmpObject outputConfigMaxSenseVoltage[MaxChannelsPerCrate]; |
static SnmpObject outputConfigMaxTerminalVoltage[MaxChannelsPerCrate]; |
static SnmpObject outputConfigMaxCurrent[MaxChannelsPerCrate]; |
static SnmpObject outputSupervisionMaxPower[MaxChannelsPerCrate]; |
static SnmpObject outputTripTimeMaxCurrent[MaxChannelsPerCrate]; |
static SnmpObject sensorNumber; |
static SnmpObject sensorTemperature[MaxSensors]; |
static SnmpObject sensorWarningThreshold[MaxSensors]; |
static SnmpObject sensorFailureThreshold[MaxSensors]; |
//static SnmpObject psFirmwareVersion; |
static SnmpObject psSerialNumber; |
static SnmpObject psOperatingTime; |
static SnmpObject psDirectAccess; |
static SnmpObject fanNumberOfFans; |
static SnmpObject fanOperatingTime; |
//static SnmpObject fanFirmwareVersion; |
static SnmpObject fanSerialNumber; |
static SnmpObject fanAirTemperature; |
static SnmpObject fanSwitchOffDelay; |
static SnmpObject fanNominalSpeed; |
static SnmpObject fanSpeed[MaxFans]; |
static SnmpObject psAuxVoltage[MaxPsAuxSupplies]; |
static SnmpObject psAuxCurrent[MaxPsAuxSupplies]; |
static SnmpObject snmpCommunityName[MaxCommunities]; |
//static double snmpSetDouble(HSNMP session, const SnmpObject &object, double value); |
static double snmpSetDouble(HSNMP session, const SnmpObject *object, double value); |
static double snmpGetDouble(HSNMP session, const SnmpObject *object); |
static int snmpSetInt(HSNMP session, const SnmpObject *object, int value); |
static int snmpGetInt(HSNMP session, const SnmpObject *object); |
static char *snmpGetString(HSNMP session, const SnmpObject *object); |
char snmpStringBuffer[1024]; |
char snmpLastErrorBuffer[1024]; |
SnmpDoubleBuffer snmpDoubleBuffer; |
SnmpIntegerBuffer snmpIntegerBuffer; |
#ifdef _MSC_VER |
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) |
{ |
UNREFERENCED_PARAMETER(hModule); |
UNREFERENCED_PARAMETER(ul_reason_for_call); |
UNREFERENCED_PARAMETER(lpReserved); |
return TRUE; |
} |
#endif |
/** |
* @brief Simple logging function with printf-like usage. |
* @internal |
* @param priority |
* @param format |
*/ |
static void sysLog(int priority, const char *format, ...) |
{ |
UNREFERENCED_PARAMETER(priority); |
va_list vaPrintf; |
va_start(vaPrintf, format); |
vprintf(format, vaPrintf); |
putchar('\n'); |
// store errors in snmpLastErrorBuffer, which can be read by snmpGetLastError() |
if (priority == LOG_ERR) |
vsnprintf(snmpLastErrorBuffer, sizeof(snmpLastErrorBuffer), format, vaPrintf); |
va_end(vaPrintf); |
} |
// Helper functions |
/** |
* @brief Resolves the OID from the textual SNMP description |
* and stores the OID in *object. |
* @internal |
* @param node e.g. "sysMainSwitch" |
* @param object the resolved OID |
* @return true on success, false otherwise |
*/ |
static int getNode(const char * const node, SnmpObject *object) |
{ |
object->len = MAX_OID_LEN; |
if (!get_node(node, object->id, &object->len)) { |
snmp_log(LOG_ERR, "OID %s not found!\n", node); |
return false; |
} |
#ifdef _MSC_VER |
strcpy_s(object->desc, sizeof(object->desc), node); |
#else |
strncpy(object->desc, node, sizeof(object->desc)); |
#endif |
return true; |
} |
/** |
* @brief Resolves the OID from the textual SNMP description |
* with appended index and stores the OID in *object. |
* @internal |
* @param nodeBase e.g. "outputSwitch" |
* @param index e.g. 100 |
* @param object the resolved OID |
* @return true on success, false otherwise |
*/ |
static int getIndexNode(const char * const nodeBase, int index, SnmpObject *object) |
{ |
char node[100]; |
strPrintf(node, sizeof(node), "%s.%i", nodeBase, index); |
return getNode(node, object); |
} |
/** |
* @brief Activates logging on stderr console. |
* @since 1.1 |
* @note This is the default setting. |
*/ |
void snmpSetStdErrLog(void) |
{ |
snmp_enable_stderrlog(); |
} |
/** |
* @brief Activates logging to the file filename. |
* @since 1.1 |
* @param fileName The full path to the file where all log |
* information should go to. |
* @note If the specified file already exists, |
* new log information is appended. |
*/ |
void snmpSetFileLog(const char * const fileName) |
{ |
snmp_enable_filelog(fileName, 1); |
} |
/** |
* @brief Returns the library four digit version number as unsigned int value. |
* |
* This allows to check for a specific version number. |
* @since 1.1 |
* @return The version number as unsigned long value, e.g. 0x01010000 |
*/ |
unsigned int snmpGetVersion(void) |
{ |
const uint32_t version[] = { VER_FILEVERSION }; |
return (version[0] << 24) + (version[1] << 16) + (version[2] << 8) + version[3]; |
} |
/** |
* @brief Returns the library four digit version number as null-terminated string. |
* |
* The digits are separated by dots. |
* @since 1.1 |
* @return The version number, e.g. "1.1.0.3" |
*/ |
char *snmpGetVersionString(void) |
{ |
return VER_FILEVERSION_STR; |
} |
/** |
* @brief Setup the default conditions for logging and SNMP passwords. |
* @internal |
*/ |
static void setDefaultSettings(void) |
{ |
snmpSetStdErrLog(); |
m_readCommunity = (char *)DefaultReadCommunity; |
m_writeCommunity = (char *)DefaultWriteCommunity; |
memset(snmpLastErrorBuffer, 0, sizeof(snmpLastErrorBuffer)); |
} |
/** |
* @brief SNMP Initialization. |
* |
* Resolves all needed OIDs from the MIB file and prepares the SNMP communication. |
* The actual connection to a MPOD crate is done with snmpOpen(). |
* @return true on success, false otherwise (e.g. an OID could not be resolved) |
*/ |
int snmpInit(void) |
{ |
setDefaultSettings(); |
snmp_log(LOG_DEBUG, "*** Initialise SNMP ***\n"); |
init_snmp("WIENER_SNMP_DLL"); |
init_mib(); // init MIB processing |
if (!read_module(WienerMibFileName)) { // read specific mibs |
snmp_log(LOG_ERR, "Unable to load SNMP MIB file \"%s\"\n", WienerMibFileName); |
return false; |
} |
snmp_log(LOG_DEBUG, "*** Translate OIDs ***\n"); |
// Translate System OIDS |
getNode("sysDescr.0", &sysDescr); // FIXME: doesn't work atm in Linux |
if ( |
(!getNode("sysMainSwitch.0", &sysMainSwitch)) || |
(!getNode("sysStatus.0", &sysStatus)) || |
(!getNode("sysVmeSysReset.0", &sysVmeSysReset)) || |
(!getNode("outputNumber.0", &outputNumber)) || |
(!getNode("groupsNumber.0", &groupsNumber)) || |
(!getNode("groupsSwitch.64", &highVoltageGroupsSwitch)) || |
(!getNode("groupsSwitch.128", &lowVoltageGroupsSwitch)) || |
(!getNode("ipStaticAddress.0", &ipStaticAddress)) || |
// (!getNode("psFirmwareVersion.0", &psFirmwareVersion)) || |
(!getNode("psSerialNumber.0", &psSerialNumber)) || |
(!getNode("psOperatingTime.0", &psOperatingTime)) || |
(!getNode("psDirectAccess.0", &psDirectAccess)) || |
(!getNode("sensorNumber.0", &sensorNumber)) || |
// (!getNode("fanFirmwareVersion.0", &fanFirmwareVersion)) || |
(!getNode("fanSerialNumber.0", &fanSerialNumber)) || |
(!getNode("fanOperatingTime.0", &fanOperatingTime)) || |
(!getNode("fanAirTemperature.0", &fanAirTemperature))|| |
(!getNode("fanSwitchOffDelay.0", &fanSwitchOffDelay)) || |
(!getNode("fanNominalSpeed.0", &fanNominalSpeed)) || |
(!getNode("fanNumberOfFans.0", &fanNumberOfFans)) |
) { |
return false; |
} |
// Translate module and channel information OIDs |
for (int slot = 0; slot < MaxSlotsPerCrate; ++slot) { |
if ( |
(!getIndexNode("moduleIndex", slot + 1, &moduleIndex[slot])) || |
(!getIndexNode("moduleDescription", slot + 1, &moduleDescription[slot])) || |
(!getIndexNode("moduleAuxiliaryMeasurementVoltage0", slot + 1, &moduleSupply[0][slot])) || |
(!getIndexNode("moduleAuxiliaryMeasurementVoltage1", slot + 1, &moduleSupply[1][slot])) || |
(!getIndexNode("moduleAuxiliaryMeasurementTemperature0", slot + 1, &moduleAuxiliaryMeasurementTemperature[0][slot])) || |
(!getIndexNode("moduleAuxiliaryMeasurementTemperature1", slot + 1, &moduleAuxiliaryMeasurementTemperature[1][slot])) || |
(!getIndexNode("moduleAuxiliaryMeasurementTemperature2", slot + 1, &moduleAuxiliaryMeasurementTemperature[2][slot])) || |
(!getIndexNode("moduleAuxiliaryMeasurementTemperature3", slot + 1, &moduleAuxiliaryMeasurementTemperature[3][slot])) || |
(!getIndexNode("moduleHardwareLimitVoltage", slot + 1, &moduleHardwareLimitVoltage[slot])) || |
(!getIndexNode("moduleHardwareLimitCurrent", slot + 1, &moduleHardwareLimitCurrent[slot])) || |
(!getIndexNode("moduleRampSpeedVoltage", slot + 1, &moduleRampSpeedVoltage[slot])) || |
(!getIndexNode("moduleRampSpeedCurrent", slot + 1, &moduleRampSpeedCurrent[slot])) || |
(!getIndexNode("moduleStatus", slot + 1, &moduleStatus[slot])) || |
(!getIndexNode("moduleEventStatus", slot + 1, &moduleEventStatus[slot])) || |
(!getIndexNode("moduleDoClear", slot + 1, &moduleDoClear[slot])) |
) { |
return false; |
} |
int base = MaxChannelsPerSlot * slot; // array index |
for (int channel = base; channel < base + MaxChannelsPerSlot; ++channel) { |
if ( |
(!getIndexNode("outputName", channel + 1, &outputName[channel])) || |
(!getIndexNode("outputIndex", channel + 1, &outputIndex[channel])) || |
(!getIndexNode("outputGroup", channel + 1, &outputGroup[channel])) || |
(!getIndexNode("outputStatus", channel + 1, &outputStatus[channel])) || |
(!getIndexNode("outputMeasurementSenseVoltage", channel + 1, &outputMeasurementSenseVoltage[channel])) || |
(!getIndexNode("outputMeasurementTerminalVoltage", channel + 1, &outputMeasurementTerminalVoltage[channel])) || |
(!getIndexNode("outputMeasurementCurrent", channel + 1, &outputMeasurementCurrent[channel])) || |
(!getIndexNode("outputMeasurementTemperature", channel + 1, &outputMeasurementTemperature[channel])) || |
(!getIndexNode("outputSwitch", channel + 1, &outputSwitch[channel])) || |
(!getIndexNode("outputVoltage", channel + 1, &outputVoltage[channel])) || |
(!getIndexNode("outputCurrent", channel + 1, &outputCurrent[channel])) || |
(!getIndexNode("outputVoltageRiseRate", channel + 1, &outputVoltageRiseRate[channel])) || |
(!getIndexNode("outputVoltageFallRate", channel + 1, &outputVoltageFallRate[channel])) || |
(!getIndexNode("outputCurrentRiseRate", channel + 1, &outputCurrentRiseRate[channel])) || |
(!getIndexNode("outputCurrentFallRate", channel + 1, &outputCurrentFallRate[channel])) || |
(!getIndexNode("outputSupervisionBehavior", channel + 1, &outputSupervisionBehavior[channel])) || |
(!getIndexNode("outputSupervisionMinSenseVoltage", channel + 1, &outputSupervisionMinSenseVoltage[channel])) || |
(!getIndexNode("outputSupervisionMaxSenseVoltage", channel + 1, &outputSupervisionMaxSenseVoltage[channel])) || |
(!getIndexNode("outputSupervisionMaxTerminalVoltage", channel + 1, &outputSupervisionMaxTerminalVoltage[channel])) || |
(!getIndexNode("outputSupervisionMaxCurrent", channel + 1, &outputSupervisionMaxCurrent[channel])) || |
// (!getIndexNode("outputSupervisionMaxTemperature", channel + 1, &outputSupervisionMaxTemperature[channel])) || |
(!getIndexNode("outputConfigMaxSenseVoltage", channel + 1, &outputConfigMaxSenseVoltage[channel])) || |
(!getIndexNode("outputConfigMaxTerminalVoltage", channel + 1, &outputConfigMaxTerminalVoltage[channel])) || |
(!getIndexNode("outputSupervisionMaxPower", channel + 1, &outputSupervisionMaxPower[channel])) || |
(!getIndexNode("outputConfigMaxCurrent", channel + 1, &outputConfigMaxCurrent[channel])) || |
(!getIndexNode("outputTripTimeMaxCurrent", channel + 1, &outputTripTimeMaxCurrent[channel])) |
) { |
return false; |
} |
} |
} |
for (int sensor = 0; sensor < MaxSensors; ++sensor) |
if ( |
(!getIndexNode("sensorTemperature", sensor + 1, &sensorTemperature[sensor])) || |
(!getIndexNode("sensorWarningThreshold", sensor + 1, &sensorWarningThreshold[sensor])) || |
(!getIndexNode("sensorFailureThreshold", sensor + 1, &sensorFailureThreshold[sensor])) |
) { |
return false; |
} |
for (int name = 0; name < MaxCommunities; ++name) |
if (!getIndexNode("snmpCommunityName", name + 1, &snmpCommunityName[name])) |
return false; |
for (int fan = 0; fan < MaxFans; ++fan) |
if (!getIndexNode("fanSpeed", fan + 1, &fanSpeed[fan])) |
return false; |
for (int aux = 0; aux < MaxPsAuxSupplies; ++aux) { |
if ( |
(!getIndexNode("psAuxiliaryMeasurementVoltage", aux + 1, &psAuxVoltage[aux])) || |
(!getIndexNode("psAuxiliaryMeasurementCurrent", aux + 1, &psAuxCurrent[aux])) |
) { |
return false; |
} |
} |
snmp_log(LOG_DEBUG, "*** Initialise SNMP done ***\n"); |
SOCK_STARTUP; // only in main thread |
return true; |
} |
/** |
* @brief Additional cleanup. Should be called after snmpClose. |
*/ |
void snmpCleanup(void) |
{ |
SOCK_CLEANUP; |
} |
/** |
* @brief Set a new read community name for SNMP access. |
* |
* The read community name has to match the configured read community name in the MPOD. |
* The default read community name is "public". |
* @since 1.1 |
* @note This function must be called before snmpOpen(). |
* @param readCommunityName the new read community name |
*/ |
void snmpSetReadCommunityName(const char * const readCommunityName) |
{ |
m_readCommunity = strdup(readCommunityName); |
} |
/** |
* @brief Set a new write community name for SNMP access. |
* |
* The write community name has to match the configured write community name in the MPOD. |
* The default write community name is "guru". |
* @since 1.1 |
* @note This function must be called before any write access function. |
* @param writeCommunityName the new write community name |
*/ |
void snmpSetWriteCommunityName(const char * const writeCommunityName) |
{ |
m_writeCommunity = strdup(writeCommunityName); |
} |
/** |
* @brief Opens a SNMP session to the specified ipAddress. |
* |
* This function also sets the number of retries and the timeout value. |
* @param ipAddress a zero-terminated ASCII string representation |
* of an IPv4 address, e.g. "192.168.17.101" |
* @return a handle to the opened SNMP session, which is a required |
* parameter for any further call. |
*/ |
HSNMP snmpOpen(const char * const ipAddress) |
{ |
HSNMP session; |
struct snmp_session snmpSession; |
snmp_sess_init(&snmpSession); // structure defaults |
snmpSession.version = SNMP_VERSION_2c; |
snmpSession.peername = strdup(ipAddress); |
snmpSession.community = (u_char *)strdup(m_readCommunity); |
snmpSession.community_len = strlen(m_readCommunity); |
snmpSession.timeout = 300000; // timeout (us) |
snmpSession.retries = 2; // retries |
if (!(session = snmp_sess_open(&snmpSession))) { |
int liberr, syserr; |
char *errstr; |
snmp_error(&snmpSession, &liberr, &syserr, &errstr); |
snmp_log(LOG_ERR, "Open SNMP session for host \"%s\": %s\n", ipAddress, errstr); |
free(errstr); |
return 0; |
} |
snmp_log(LOG_INFO, "SNMP session for host \"%s\" opened\n", ipAddress); |
return session; |
} |
/** |
* @brief Closes the previously opened session specified by session. |
* @param session The handle returned by snmpOpen() |
*/ |
void snmpClose(HSNMP session) |
{ |
if (!session) |
return; |
if (!snmp_sess_close(session)) |
snmp_log(LOG_ERR, "Close SNMP session: ERROR\n"); |
else |
snmp_log(LOG_INFO, "SNMP session closed\n"); |
} |
/** |
* @brief Returns a pointer to a descriptive string for the last failed SNMP operation. |
* @return a pointer to a zero-terminated error string for the last failed |
* SNMP operation. Note: this pointer is valid until the next string operation. |
*/ |
char *snmpGetLastError(void) |
{ |
return snmpLastErrorBuffer; |
} |
// System Information Functions |
/** |
* @brief Returns a pointer to the MPOD controller description string. |
* |
* The pointer is valid until the next call of any string function. |
* @param session The handle returned by snmpOpen() |
* @return the MPOD controller description string, containing the |
* controller serial number and firmware releases, e.g.: |
* "WIENER MPOD (4388090, MPOD 2.1.2098.1, MPODslave 1.09, MPOD-BL 1.50 )" |
*/ |
char *getSysDescr(HSNMP session) |
{ |
return snmpGetString(session, &sysDescr); |
} |
/** |
* @brief Returns the crate power on/off status. |
* |
* The result is the logical "and" between the hardware main switch |
* and the setMainSwitch function. |
* @param session The handle returned by snmpOpen() |
* @return The current on/off status of the crate: |
* 0: crate is powered off |
* 1: crate is powered on |
*/ |
int getMainSwitch(HSNMP session) |
{ |
return snmpGetInt(session, &sysMainSwitch); |
} |
/** |
* @brief Sets the crate main switch to 1 = on or 0 = off. |
* |
* If the hardware main switch is set to "0" position, this function always returns 0. |
* @param session The handle returned by snmpOpen() |
* @param value 0 = set off, 1 = set on |
* @return The new on/off status of the crate. |
*/ |
int setMainSwitch(HSNMP session, int value) |
{ |
return snmpSetInt(session, &sysMainSwitch, value); |
} |
/** |
* @brief Returns a bit field with the status of the complete crate. |
* @param session The handle returned by snmpOpen() |
* @return The complete crate status. |
*/ |
int getMainStatus(HSNMP session) |
{ |
return snmpGetInt(session, &sysStatus); |
} |
/** |
* @brief Returns the VME system reset status. |
* @param session The handle returned by snmpOpen() |
* @return |
*/ |
int getVmeReset(HSNMP session) |
{ |
return snmpGetInt(session, &sysVmeSysReset); |
} |
/** |
* @brief Initiate a VME system reset. |
* @param session The handle returned by snmpOpen() |
* @return |
*/ |
int setVmeReset(HSNMP session) |
{ |
return snmpSetInt(session, &sysVmeSysReset, 1); |
} |
/** |
* @brief Returns the static IP address as 32 bit integer. |
* @param session The handle returned by snmpOpen() |
* @return The static IP address. |
*/ |
int getIpStaticAddress(HSNMP session) |
{ |
return snmpGetInt(session, &ipStaticAddress); |
} |
/** |
* @brief Sets a new static IP address. |
* @param session The handle returned by snmpOpen() |
* @param value The IP address as 32 bit integer |
* @return |
*/ |
int setIpStaticAddress(HSNMP session, int value) |
{ |
return snmpSetInt(session, &ipStaticAddress, value); |
} |
/** |
* @brief Returns a pointer to a string containing the MPOD controllers serial number. |
* |
* The pointer is valid until the next call of any string function. |
* @param session The handle returned by snmpOpen() |
* @return The crates serial number, e.g. "4388090". |
*/ |
char *getPsSerialNumber(HSNMP session) |
{ |
return snmpGetString(session, &psSerialNumber); |
} |
// System Count Functions |
/** |
* @brief Returns the total number of output channels in the crate. |
* @param session The handle returned by snmpOpen() |
* @return The total number of output channels |
*/ |
int getOutputNumber(HSNMP session) |
{ |
return snmpGetInt(session, &outputNumber); |
} |
/** |
* @brief getOutputGroups |
* @param session The handle returned by snmpOpen() |
* @return |
*/ |
int getOutputGroups(HSNMP session) |
{ |
return snmpGetInt(session, &groupsNumber); |
} |
// Output Channel Information |
/** |
* @brief getOutputGroup |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
int getOutputGroup(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetInt(session, &outputGroup[channel]); |
} |
/** |
* @brief Returns the channel outputStatus register. |
* @note This function is deprecated. Use getOutputStatus() instead. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The channels outputStatus register |
*/ |
int getChannelStatus(HSNMP session, int channel) |
{ |
return getOutputStatus(session, channel); |
} |
/** |
* @brief Returns the channel outputStatus register. |
* @since 1.1 |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The channels outputStatus register |
*/ |
int getOutputStatus(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetInt(session, &outputStatus[channel]); |
} |
/** |
* @brief Returns the measured output sense voltage for channel in Volt. |
* @note This is only valid for WIENER LV modules. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputSenseMeasurement(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputMeasurementSenseVoltage[channel]); |
} |
/** |
* @brief Returns the measured output terminal voltage for channel in Volt. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The measured output terminal voltage in Volt. |
*/ |
double getOutputTerminalMeasurement(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputMeasurementTerminalVoltage[channel]); |
} |
/** |
* @brief Returns the measured output current for channel in Ampere. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The measured output measurement current in Ampere. |
*/ |
double getCurrentMeasurement(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputMeasurementCurrent[channel]); |
} |
/** |
* @brief Returns the measured temperature for channel in Degree Celsius. |
* @note Only WIENER Low Voltage modules have a channel-wise temperature measurement. |
* For iseg HV modules, use getModuleAuxTemperature(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The measured output temperature in Degree Celsius. |
*/ |
int getTemperatureMeasurement(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetInt(session, &outputMeasurementTemperature[channel]); |
} |
/** |
* @brief Change the state of the channel. |
* @note This function is deprecated. Use setOutputSwitch() instead. |
* @param session The handle returned by snmpOpen() |
* @param channel The channel in the range of 0...999 |
* @param value One of the following: off (0), on (1), |
* resetEmergencyOff (2), setEmergencyOff (3), clearEvents (10). |
* @return |
*/ |
int setChannelSwitch(HSNMP session, int channel, int value) |
{ |
return setOutputSwitch(session, channel, value); |
} |
/** |
* @brief Change the state of the channel. |
* @since 1.1 |
* @param session The handle returned by snmpOpen() |
* @param channel The channel in the range of 0...999 |
* @param value One of the following: off (0), on (1), |
* resetEmergencyOff (2), setEmergencyOff (3), clearEvents (10). |
* @return |
*/ |
int setOutputSwitch(HSNMP session, int channel, int value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetInt(session, &outputSwitch[channel], value); |
} |
/** |
* @brief Returns the state of the channel. |
* @note This function is deprecated. Use getOutputSwitch() instead. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return One of the following: off (0), on (1), |
* resetEmergencyOff (2), setEmergencyOff (3), clearEvents (10). |
*/ |
int getChannelSwitch(HSNMP session, int channel) |
{ |
return getOutputSwitch(session, channel); |
} |
/** |
* @brief Returns the state of the channel. |
* @since 1.1 |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return One of the following: off (0), on (1), |
* resetEmergencyOff (2), setEmergencyOff (3), clearEvents (10). |
*/ |
int getOutputSwitch(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetInt(session, &outputSwitch[channel]); |
} |
/** |
* @brief setHighVoltageGroupsSwitch |
* @param session The handle returned by snmpOpen() |
* @param value |
* @return |
*/ |
int setHighVoltageGroupsSwitch(HSNMP session, int value) |
{ |
return snmpSetInt(session, &highVoltageGroupsSwitch, value); |
} |
/** |
* @brief getHighVoltageGroupsSwitch |
* @param session The handle returned by snmpOpen() |
* @return |
*/ |
int getHighVoltageGroupsSwitch(HSNMP session) |
{ |
return snmpGetInt(session, &highVoltageGroupsSwitch); |
} |
/** |
* @brief setLowVoltageGroupsSwitch |
* @param session The handle returned by snmpOpen() |
* @param value |
* @return |
*/ |
int setLowVoltageGroupsSwitch(HSNMP session, int value) |
{ |
return snmpSetInt(session, &lowVoltageGroupsSwitch, value); |
} |
/** |
* @brief getLowVoltageGroupsSwitch |
* @param session The handle returned by snmpOpen() |
* @return |
*/ |
int getLowVoltageGroupsSwitch(HSNMP session) |
{ |
return snmpGetInt(session, &lowVoltageGroupsSwitch); |
} |
/** |
* @brief Returns the demanded output voltage for channel. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The demanded output voltage in Volt. |
*/ |
double getOutputVoltage(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputVoltage[channel]); |
} |
/** |
* @brief Sets the demanded output voltage for channel. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @param value the demanded output voltage in Volt. |
* @return The demanded output voltage in Volt. |
*/ |
double setOutputVoltage(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputVoltage[channel], value); |
} |
/** |
* @brief Returns the demanded maximum output current for channel. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The demanded output current in Ampere. |
*/ |
double getOutputCurrent(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputCurrent[channel]); |
} |
/** |
* @brief Sets the demanded maximum output current for channel. |
* @param session The handle returned by snmpOpen() |
* @param channel The channel in the range of 0...999 |
* @param value The demanded ouput current in Ampere |
* @return The demanded maximum output current in Ampere. |
*/ |
double setOutputCurrent(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputCurrent[channel], value); |
} |
/** |
* @brief Returns the channel voltage rise rate in Volt/second. |
* |
* @note This function is for WIENER LV only. |
* For iseg HV modules, use getModuleRampSpeedVoltage(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputRiseRate(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputVoltageRiseRate[channel]); |
} |
/** |
* @brief Sets the channel voltage rise rate in Volt/second. |
* |
* @note This function is for WIENER LV only. |
* For iseg HV modules, use setModuleRampSpeedVoltage(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @param value |
* @return |
*/ |
double setOutputRiseRate(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputVoltageRiseRate[channel], value); |
} |
/** |
* @brief Returns the channel voltage fall rate in Volt/second. |
* |
* @note This function is for WIENER LV only. |
* For iseg HV modules, use getModuleRampSpeedVoltage(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputFallRate(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputVoltageFallRate[channel]); |
} |
/** |
* @brief Sets the channel voltage fall rate in Volt/second. |
* |
* @note This function is for WIENER LV only. |
* For iseg HV modules, use setModuleRampSpeedVoltage(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @param value |
* @return |
*/ |
double setOutputFallRate(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputVoltageFallRate[channel], value); |
} |
/** |
* @brief Returns the channel current rise rate in Ampere/second. |
* |
* @note This function is for WIENER LV only. |
* For iseg HV modules, use getModuleRampSpeedCurrent(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputCurrentRiseRate(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputCurrentRiseRate[channel]); |
} |
/** |
* @brief Sets the channel current rise rate in Ampere/second. |
* |
* @note This function is for WIENER LV only. |
* For iseg HV modules, use setModuleRampSpeedCurrent(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @param value |
* @return |
*/ |
double setOutputCurrentRiseRate(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputCurrentRiseRate[channel], value); |
} |
/** |
* @brief Returns the channel current fall rate in Ampere/second. |
* |
* @note This function is for WIENER LV only. |
* For iseg HV modules, use getModuleRampSpeedCurrent(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputCurrentFallRate(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputCurrentFallRate[channel]); |
} |
/** |
* @brief Sets the channel current fall rate in Ampere/second. |
* |
* @note This function is for WIENER LV only. |
* For iseg HV modules, use setModuleRampSpeedCurrent(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @param value |
* @return |
*/ |
double setOutputCurrentFallRate(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputCurrentFallRate[channel], value); |
} |
/** |
* @brief Returns a bit field packed into an integer |
* which define the behavior of the output channel or power supply after failures. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
int getOutputSupervisionBehavior(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetInt(session, &outputSupervisionBehavior[channel]); |
} |
/** |
* @brief Set the behavior of the output channel or power supply after failures. |
* |
* For each supervision value, a two-bit field exists. |
* The enumeration of this value (..L+..H*2) is: |
* WIENER LV devices |
* 0 ignore the failure |
* 1 switch off this channel |
* 2 switch off all channels with the same group number |
* 3 switch off the complete crate. |
* iseg HV devices |
* 0 ignore the failure |
* 1 switch off this channel by ramp down the voltage |
* 2 switch off this channel by a emergencyOff |
* 3 switch off the whole board of the HV module by emergencyOff. |
* The position of the bit fields in the integer value are: |
* Bit 0, 1: outputFailureMinSenseVoltage |
* Bit 2, 3: outputFailureMaxSenseVoltage |
* Bit 4, 5: outputFailureMaxTerminalVoltage |
* Bit 6, 7: outputFailureMaxCurrent |
* Bit 8, 9: outputFailureMaxTemperature |
* Bit 10, 11: outputFailureMaxPower |
* Bit 12, 13: outputFailureInhibit |
* Bit 14, 15: outputFailureTimeout |
* @param session The handle returned by snmpOpen() |
* @param channel The channel (0...999) for which the behaviour should be set |
* @param value The 16 bit integer with bits set according the preceding table. |
* @return |
*/ |
int setOutputSupervisionBehavior(HSNMP session, int channel, int value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetInt(session, &outputSupervisionBehavior[channel], value ); |
} |
/** |
* @brief getOutputSupervisionMinSenseVoltage |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputSupervisionMinSenseVoltage(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputSupervisionMinSenseVoltage[channel]); |
} |
/** |
* @brief setOutputSupervisionMinSenseVoltage |
* @param session The handle returned by snmpOpen() |
* @param channel |
* @param value |
* @return |
*/ |
double setOutputSupervisionMinSenseVoltage(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputSupervisionMinSenseVoltage[channel], value); |
} |
/** |
* @brief getOutputSupervisionMaxSenseVoltage |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputSupervisionMaxSenseVoltage(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputSupervisionMaxSenseVoltage[channel]); |
} |
/** |
* @brief setOutputSupervisionMaxSenseVoltage |
* @param session The handle returned by snmpOpen() |
* @param channel |
* @param value |
* @return |
*/ |
double setOutputSupervisionMaxSenseVoltage(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputSupervisionMaxSenseVoltage[channel], value); |
} |
/** |
* @brief If the measured voltage at the power supply output terminals is above this value, |
* the power supply performs the function defined by setOutputSupervisionBehavior(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The maximum terminal voltage in Volt |
*/ |
double getOutputSupervisionMaxTerminalVoltage(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputSupervisionMaxTerminalVoltage[channel]); |
} |
/** |
* @brief If the measured voltage at the power supply output terminals is above this value, |
* the power supply performs the function defined by setOutputSupervisionBehavior(). |
* @param session The handle returned by snmpOpen() |
* @param channel the channel (0...999) to set the max. terminal voltage |
* @param value The maximum terminal voltage in Volt |
* @return |
*/ |
double setOutputSupervisionMaxTerminalVoltage(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputSupervisionMaxTerminalVoltage[channel], value); |
} |
/** |
* @brief If the measured current is above this value, the power supply |
* performs the function defined by setOutputSupervisionBehavior(). |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The maximum output current in Ampere |
*/ |
double getOutputSupervisionMaxCurrent(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputSupervisionMaxCurrent[channel]); |
} |
/** |
* @brief If the measured current is above this value, the power supply |
* performs the function defined by setOutputSupervisionBehavior(). |
* @param session The handle returned by snmpOpen() |
* @param channel The channel (0...999) to set the max. current |
* @param value The maximum current in Ampere |
* @return |
*/ |
double setOutputSupervisionMaxCurrent(HSNMP session, int channel, double value) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetDouble(session, &outputSupervisionMaxCurrent[channel], value ); |
} |
/** |
* @brief getOutputSupervisionMaxTemperature |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return The maximum temperature in degree Celsius |
*/ |
int getOutputSupervisionMaxTemperature(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetInt(session, &outputSupervisionMaxTemperature[channel]); |
} |
/** |
* @brief getOutputConfigMaxSenseVoltage |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputConfigMaxSenseVoltage(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputConfigMaxSenseVoltage[channel]); |
} |
/** |
* @brief getOutputConfigMaxTerminalVoltage |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputConfigMaxTerminalVoltage(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputConfigMaxTerminalVoltage[channel]); |
} |
/** |
* @brief getOutputConfigMaxCurrent |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputConfigMaxCurrent(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputConfigMaxCurrent[channel]); |
} |
/** |
* @brief getOutputSupervisionMaxPower |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return |
*/ |
double getOutputSupervisionMaxPower(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetDouble(session, &outputSupervisionMaxPower[channel]); |
} |
/** |
* @brief Returns the time span for the delayed trip function. |
* @param session The handle returned by snmpOpen() |
* @param channel The requested channel in the range of 0...999 |
* @return the trip delay time (0...4000 ms) |
*/ |
int getOutputTripTimeMaxCurrent(HSNMP session, int channel) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpGetInt(session, &outputTripTimeMaxCurrent[channel]); |
} |
/** |
* @brief Defines a span for the delayed trip function. |
* @param session The handle returned by snmpOpen() |
* @param channel The channel (0...999) for which to set the delayed trip |
* @param delay The trip delay time (0...4000 ms) |
* @return |
*/ |
int setOutputTripTimeMaxCurrent(HSNMP session, int channel, int delay) |
{ |
if (channel < 0 || channel >= MaxChannelsPerCrate) |
return 0; |
return snmpSetInt(session, &outputTripTimeMaxCurrent[channel], delay); |
} |
// Sensor Information functions |
int getSensorNumber(HSNMP session) |
{ |
return snmpGetInt(session, &sensorNumber); |
} |
int getSensorTemp(HSNMP session, int sensor) |
{ |
if (sensor < 0 || sensor > MaxSensors) |
return 0; |
return snmpGetInt(session, &sensorTemperature[sensor]); |
} |
int getSensorWarningTemperature(HSNMP session, int sensor) |
{ |
if (sensor < 0 || sensor > MaxSensors) |
return 0; |
return snmpGetInt(session, &sensorWarningThreshold[sensor]); |
} |
int setSensorWarningTemperature(HSNMP session, int sensor, int value) |
{ |
if (sensor < 0 || sensor > MaxSensors) |
return 0; |
return snmpSetInt(session, &sensorWarningThreshold[sensor], value); |
} |
int getSensorFailureTemperature(HSNMP session, int sensor) |
{ |
if (sensor < 0 || sensor > MaxSensors) |
return 0; |
return snmpGetInt(session, &sensorFailureThreshold[sensor]); |
} |
int setSensorFailureTemperature(HSNMP session, int sensor, int value) |
{ |
if (sensor < 0 || sensor > MaxSensors) |
return 0; |
return snmpSetInt(session, &sensorFailureThreshold[sensor], value); |
} |
// Power Supply specific Functions. |
/** |
* @brief Returns the crates operating time in seconds. |
* @param session The handle returned by snmpOpen() |
* @return |
*/ |
int getPsOperatingTime(HSNMP session) |
{ |
return snmpGetInt(session, &psOperatingTime); |
} |
double getPsAuxVoltage(HSNMP session, int auxIndex) |
{ |
if ( (auxIndex < 0) || (auxIndex >= MaxPsAuxSupplies) ) |
return 0.0; |
return snmpGetDouble(session, &psAuxVoltage[auxIndex]); |
} |
double getPsAuxCurrent(HSNMP session, int auxIndex) |
{ |
if ( (auxIndex < 0) || (auxIndex >= MaxPsAuxSupplies) ) |
return 0.0; |
return snmpGetDouble(session, &psAuxCurrent[auxIndex]); |
} |
// Fan Tray Functions |
int getFanOperatingTime(HSNMP session) |
{ |
return snmpGetInt(session, &fanOperatingTime); |
} |
int getFanAirTemperature(HSNMP session) |
{ |
return snmpGetInt(session, &fanAirTemperature); |
} |
int getFanSwitchOffDelay(HSNMP session) |
{ |
return snmpGetInt(session, &fanSwitchOffDelay); |
} |
int setFanSwitchOffDelay(HSNMP session, int value) |
{ |
return snmpSetInt(session, &fanSwitchOffDelay, value); |
} |
/** |
* @brief Returns the MPODs fan rotation speed in revolutions per minute. |
* @param session The handle returned by snmpOpen() |
* @return |
*/ |
int getFanNominalSpeed(HSNMP session) |
{ |
return snmpGetInt(session, &fanNominalSpeed); |
} |
/** |
* @brief Sets the MPODs fan rotation speed in revolutions per minute. |
* @param session The handle returned by snmpOpen() |
* @param value 1200..3600. 0 turns off the crates fans. |
* @return |
*/ |
int setFanNominalSpeed(HSNMP session, int value) |
{ |
return snmpSetInt(session, &fanNominalSpeed, value ); |
} |
int getFanNumberOfFans(HSNMP session) |
{ |
return snmpGetInt(session, &fanNumberOfFans); |
} |
int getFanSpeed(HSNMP session, int fan) |
{ |
if (fan < 0 || fan > MaxFans) |
return 0; |
return snmpGetInt(session, &fanSpeed[fan]); |
} |
/** |
* @brief Returns a pointer to the module description string. |
* |
* The pointer is valid until the next call of any string function. |
* @param session The handle returned by snmpOpen() |
* @param slot The modules slot position in the crate (0...9) |
* @return A string with the following contents, separated by comma and space: |
* - The module vendor ("iseg" or "WIENER") |
* - The module type name |
* - The channel number |
* - The module serial number (optional) |
* - The module firmware release (optional) |
* |
* Example: "iseg, E24D1, 24, 715070, 5.14" |
*/ |
char *getModuleDescription(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0; |
return snmpGetString(session, &moduleDescription[slot]); |
} |
/** |
* @brief Returns the measured value of the modules +24 Volt line. |
* @note This function is for iseg HV modules only. |
* @param session The handle returned by snmpOpen() |
* @param slot the modules slot position in the crate (0...9) |
* @return the measured +24 Volt line voltage in Volt. |
*/ |
double getModuleSupply24(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0.0; |
return snmpGetDouble(session, &moduleSupply[0][slot]); |
} |
/** |
* @brief Returns the measured value of the modules +5 Volt line. |
* @note This function is for iseg HV modules only. |
* @param session The handle returned by snmpOpen() |
* @param slot the modules slot position in the crate (0...9) |
* @return the measured +5 Volt line voltage in Volt. |
*/ |
double getModuleSupply5(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0.0; |
return snmpGetDouble(session, &moduleSupply[1][slot]); |
} |
/** |
* @brief Returns the measured value of one of the modules temperature sensors. |
* |
* @note This function is for iseg HV modules only. |
* @param session The handle returned by snmpOpen() |
* @param slot The modules slot position in the crate (0...9) |
* @param index The temperature sensor index (0...3) |
* @note Most modules only have one temperature sensor at index 0. |
* @return |
*/ |
double getModuleAuxTemperature(HSNMP session, int slot, int index) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0.0; |
if (index < 0 || index >= MaxModuleAuxTemperatures) |
return 0.0; |
return snmpGetDouble(session, &moduleAuxiliaryMeasurementTemperature[index][slot]); |
} |
/** |
* @brief Returns the modules hardware voltage limit in percent. |
* |
* @note This function is for iseg HV modules only. |
* @param session The handle returned by snmpOpen() |
* @param slot The modules slot position in the crate (0...9) |
* @return The modules hardware voltage limit in percent (2...102) |
*/ |
double getModuleHardwareLimitVoltage(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0.0; |
return snmpGetDouble(session, &moduleHardwareLimitVoltage[slot]); |
} |
/** |
* @brief Returns the modules hardware current limit in percent. |
* |
* @note This function is for iseg HV modules only. |
* @param session The handle returned by snmpOpen() |
* @param slot The modules slot position in the crate (0...9) |
* @return The modules hardware current limit in percent (2...102) |
*/ |
double getModuleHardwareLimitCurrent(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0.0; |
return snmpGetDouble(session, &moduleHardwareLimitCurrent[slot]); |
} |
/** |
* @brief Returns the modules voltage ramp speed in percent. |
* |
* @note This function is for iseg HV modules only. |
* iseg modules have one common ramp speed for all channels. |
* @param session The handle returned by snmpOpen() |
* @param slot The modules slot position in the crate (0...9) |
* @return The modules voltage ramp speed in percent |
*/ |
double getModuleRampSpeedVoltage(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0.0; |
return snmpGetDouble(session, &moduleRampSpeedVoltage[slot]); |
} |
/** |
* @brief Sets the modules voltage ramp speed in percent. |
* |
* @note This function is for iseg HV modules only. |
* |
* iseg modules have one common ramp speed for all channels. |
* @param session The handle returned by snmpOpen() |
* @param slot the modules slot position in the crate (0...9) |
* @param value The new voltage ramp speed in percent |
* @note For most modules, the range is 0.001...20 percent. |
* @return The new voltage ramp speed in percent |
*/ |
double setModuleRampSpeedVoltage(HSNMP session, int slot, double value) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0.0; |
return snmpSetDouble(session, &moduleRampSpeedVoltage[slot], value); |
} |
/** |
* @brief Returns the modules current ramp speed in percent. |
* |
* @note This function is for iseg HV modules only. |
* |
* iseg modules have one common ramp speed for all channels. |
* This item is only valid for modules with constant current regulation. |
* @param session The handle returned by snmpOpen() |
* @param slot The modules slot position in the crate (0...9) |
* @return The modules current ramp speed in percent |
*/ |
double getModuleRampSpeedCurrent(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0.0; |
return snmpGetDouble(session, &moduleRampSpeedCurrent[slot]); |
} |
/** |
* @brief Sets the modules current ramp speed in percent. |
* |
* @note This function is for iseg HV modules only. |
* |
* iseg modules have one common ramp speed for all channels. |
* This item is only valid for modules with constant current regulation. |
* @param session The handle returned by snmpOpen() |
* @param slot The modules slot position in the crate (0...9) |
* @param value The new current ramp speed in percent |
* @return The new current ramp speed in percent |
*/ |
double setModuleRampSpeedCurrent(HSNMP session, int slot, double value) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0.0; |
return snmpSetDouble(session, &moduleRampSpeedCurrent[slot], value); |
} |
/** |
* @brief Returns the value of the module status register. |
* |
* @note This function is for iseg HV modules only. |
* @param session The handle returned by snmpOpen() |
* @param slot The modules slot position in the crate (0...9) |
* @return The module status register |
*/ |
int getModuleStatus(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0; |
return snmpGetInt(session, &moduleStatus[slot]); |
} |
/** |
* @brief Returns the value of the module event status register. |
* |
* @note This function is for iseg HV modules only. |
* @param session The handle returned by snmpOpen() |
* @param slot the modules slot position in the crate (0...9) |
* @return The module event status register |
*/ |
int getModuleEventStatus(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0; |
return snmpGetInt(session, &moduleEventStatus[slot]); |
} |
/** |
* @brief Clears all modules events in a specific slot. |
* |
* To clear all events in all iseg HV modules, use setHighVoltageGroupsSwitch() |
* with the parameter clearEvents(10). |
* @param session The handle returned by snmpOpen() |
* @param slot The modules slot position in the crate (0...9) |
* @return |
*/ |
int setModuleDoClear(HSNMP session, int slot) |
{ |
if (slot < 0 || slot >= MaxSlotsPerCrate) |
return 0; |
return snmpSetInt(session, &moduleDoClear[slot], 1); |
} |
// The rest of the functions are utility functions that actually do the SNMP calls |
static void logErrors(HSNMP session, struct snmp_pdu *response, |
const SnmpObject *object, int status, const char *functionName) |
{ |
// FAILURE: print what went wrong! |
if (status == STAT_SUCCESS) |
snmp_log(LOG_ERR, "%s(%s): Error in packet. Reason: %s\n", |
functionName, object->desc, snmp_errstring(response->errstat)); |
else |
snmp_sess_perror("snmpget", snmp_sess_session(session)); |
} |
static int getIntegerVariable(struct variable_list *vars) |
{ |
if (vars->type == ASN_BIT_STR || vars->type == ASN_OCTET_STR) { |
int value = 0; |
for (size_t i = 0; i < vars->val_len && i < sizeof(int); ++i) |
value |= (vars->val.bitstring[i] << (i * 8)); |
return value; |
} if (vars->type == ASN_OPAQUE_FLOAT) |
return (int)*vars->val.floatVal; |
else if (vars->type == ASN_OPAQUE_DOUBLE) |
return (int)*vars->val.doubleVal; |
else if (vars->type == ASN_INTEGER) |
return *vars->val.integer; |
else if (vars->type == ASN_OCTET_STR) |
return *vars->val.integer; |
else if (vars->type == ASN_IPADDRESS) |
return *vars->val.integer; |
return 0; |
} |
static double getDoubleVariable(struct variable_list *vars) |
{ |
if (vars->type == ASN_OPAQUE_FLOAT) |
return *vars->val.floatVal; |
else if (vars->type == ASN_OPAQUE_DOUBLE) |
return *vars->val.doubleVal; |
else if (vars->type == ASN_INTEGER) |
return (double)*vars->val.integer; |
return 0.0; |
} |
static struct snmp_pdu *prepareSetRequestPdu(void) |
{ |
struct snmp_pdu *pdu = snmp_pdu_create(SNMP_MSG_SET); |
pdu->community = (u_char *)strdup(m_writeCommunity); |
pdu->community_len = strlen(m_writeCommunity); |
return pdu; |
} |
static struct snmp_pdu *prepareGetRequestPdu() |
{ |
struct snmp_pdu *pdu = snmp_pdu_create(SNMP_MSG_GET); |
return pdu; |
} |
static int snmpGetInt(HSNMP session, const SnmpObject *object) |
{ |
int value = 0; |
struct snmp_pdu *pdu = prepareGetRequestPdu(); |
snmp_add_null_var(pdu, object->id, object->len); // generate request data |
struct snmp_pdu *response; |
int status = snmp_sess_synch_response(session, pdu, &response); |
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) { |
value = getIntegerVariable(response->variables); |
} else { |
logErrors(session, response, object, status, "snmpGetInt"); |
return 0; |
} |
snmp_free_pdu(response); |
return value; |
} |
static int snmpSetInt(HSNMP session, const SnmpObject *object, int value) |
{ |
struct snmp_pdu *pdu = prepareSetRequestPdu(); |
if (snmp_oid_compare(object->id, object->len, ipStaticAddress.id, ipStaticAddress.len) == 0) |
snmp_pdu_add_variable(pdu, object->id, object->len, ASN_IPADDRESS, (u_char *)&value, sizeof(value)); |
else |
snmp_pdu_add_variable(pdu, object->id, object->len, ASN_INTEGER, (u_char *)&value, sizeof(value)); |
int result = value; |
struct snmp_pdu *response; |
int status = snmp_sess_synch_response(session, pdu, &response); |
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) { |
result = getIntegerVariable(response->variables); |
} else { |
logErrors(session, response, object, status, "snmpSetInt"); |
return 0; |
} |
snmp_free_pdu(response); |
return result; |
} |
static double snmpGetDouble(HSNMP session, const SnmpObject *object) |
{ |
double value = 0.0; |
struct snmp_pdu *pdu = prepareGetRequestPdu(); |
snmp_add_null_var(pdu, object->id, object->len); // generate request data |
struct snmp_pdu *response; |
int status = snmp_sess_synch_response(session, pdu, &response); |
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) { |
value = getDoubleVariable(response->variables); |
} else { |
logErrors(session, response, object, status, "snmpGetDouble"); |
return 0; |
} |
snmp_free_pdu(response); |
return value; |
} |
static double snmpSetDouble(HSNMP session, const SnmpObject *object, double value) |
{ |
struct snmp_pdu *pdu = prepareSetRequestPdu(); |
float v = (float)value; |
snmp_pdu_add_variable(pdu, object->id, object->len, ASN_OPAQUE_FLOAT, (u_char *)&v, sizeof(v)); |
double result = v; |
struct snmp_pdu *response; |
int status = snmp_sess_synch_response(session, pdu, &response); |
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) { |
result = getDoubleVariable(response->variables); |
} else { |
logErrors(session, response, object, status, "snmpSetDouble"); |
return 0; |
} |
snmp_free_pdu(response); |
return result; |
} |
static char *snmpGetString(HSNMP session, const SnmpObject *object) |
{ |
struct snmp_pdu *pdu = prepareGetRequestPdu(); |
snmp_add_null_var(pdu, object->id, object->len); // generate request data |
struct snmp_pdu *response; |
int status = snmp_sess_synch_response(session, pdu, &response); |
memset(snmpStringBuffer, 0, sizeof(snmpStringBuffer)); |
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) { |
struct variable_list *vars = response->variables; |
if (vars->type == ASN_OCTET_STR) { |
size_t len = sizeof(snmpStringBuffer) - 1; |
if (len > vars->val_len) |
len = vars->val_len; |
memcpy(snmpStringBuffer, vars->val.string, len); |
snmpStringBuffer[len] = 0; |
} |
} else { |
logErrors(session, response, object, status, "snmpGetString"); |
return 0; |
} |
snmp_free_pdu(response); |
return snmpStringBuffer; |
} |
static SnmpIntegerBuffer *snmpGetMultipleInteger(HSNMP session, const SnmpObject *objects, int size) |
{ |
struct snmp_pdu *pdu = prepareGetRequestPdu(); |
if (size > MaxChannelsPerSlot) |
size = MaxChannelsPerSlot; |
memset(&snmpIntegerBuffer, 0, sizeof(snmpIntegerBuffer)); |
for (int i = 0; i < size; ++i) |
snmp_add_null_var(pdu, objects[i].id, objects[i].len); // generate request data |
struct snmp_pdu *response; |
int status = snmp_sess_synch_response(session, pdu, &response); |
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) { |
struct variable_list *vars; |
for (vars = response->variables; vars; vars = vars->next_variable) |
snmpIntegerBuffer.value[snmpIntegerBuffer.size++] = getIntegerVariable(vars); |
} else { |
logErrors(session, response, &objects[0], status, "snmpGetMultipleInteger"); |
return &snmpIntegerBuffer; |
} |
snmp_free_pdu(response); |
return &snmpIntegerBuffer; |
} |
static SnmpIntegerBuffer *snmpSetMultipleInteger(HSNMP session, const SnmpObject *objects, SnmpIntegerBuffer *values) |
{ |
struct snmp_pdu *pdu = prepareSetRequestPdu(); |
int size = values->size; |
if (size > MaxChannelsPerSlot) |
size = MaxChannelsPerSlot; |
for (int i = 0; i < size; ++i) { |
int v = values->value[i]; |
snmp_pdu_add_variable(pdu, objects[i].id, objects[i].len, ASN_INTEGER, (u_char *)&v, sizeof(v)); |
} |
memset(&snmpIntegerBuffer, 0, sizeof(snmpIntegerBuffer)); |
struct snmp_pdu *response; |
int status = snmp_sess_synch_response(session, pdu, &response); |
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) { |
struct variable_list *vars; |
for (vars = response->variables; vars; vars = vars->next_variable) |
snmpIntegerBuffer.value[snmpIntegerBuffer.size++] = getIntegerVariable(vars); |
} else { |
logErrors(session, response, &objects[0], status, "snmpSetMultipleInteger"); |
return &snmpIntegerBuffer; |
} |
snmp_free_pdu(response); |
return &snmpIntegerBuffer; |
} |
static SnmpDoubleBuffer *snmpGetMultipleDouble(HSNMP session, const SnmpObject *objects, int size) |
{ |
struct snmp_pdu *pdu = prepareGetRequestPdu(); |
if (size > MaxChannelsPerSlot) |
size = MaxChannelsPerSlot; |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
for (int i = 0; i < size; ++i) |
snmp_add_null_var(pdu, objects[i].id, objects[i].len); // generate request data |
struct snmp_pdu *response; |
int status = snmp_sess_synch_response(session, pdu, &response); |
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) { |
struct variable_list *vars; |
for (vars = response->variables; vars; vars = vars->next_variable) |
snmpDoubleBuffer.value[snmpDoubleBuffer.size++] = getDoubleVariable(vars); |
} else { |
logErrors(session, response, &objects[0], status, "snmpGetMultipleDouble"); |
return &snmpDoubleBuffer; |
} |
snmp_free_pdu(response); |
return &snmpDoubleBuffer; |
} |
static SnmpDoubleBuffer *snmpSetMultipleDouble(HSNMP session, const SnmpObject *objects, SnmpDoubleBuffer *values) |
{ |
struct snmp_pdu *pdu = prepareSetRequestPdu(); |
int size = values->size; |
if (size > MaxChannelsPerSlot) |
size = MaxChannelsPerSlot; |
for (int i = 0; i < size; ++i) { |
float v = (float)values->value[i]; |
snmp_pdu_add_variable(pdu, objects[i].id, objects[i].len, ASN_OPAQUE_FLOAT, (u_char *)&v, sizeof(v)); |
} |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
struct snmp_pdu *response; |
int status = snmp_sess_synch_response(session, pdu, &response); |
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) { |
struct variable_list *vars; |
for (vars = response->variables; vars; vars = vars->next_variable) |
snmpDoubleBuffer.value[snmpDoubleBuffer.size++] = getDoubleVariable(vars); |
} else { |
logErrors(session, response, &objects[0], status, "snmpSetMultipleDouble"); |
return &snmpDoubleBuffer; |
} |
snmp_free_pdu(response); |
return &snmpDoubleBuffer; |
} |
/** |
* @brief Returns an array with the outputStatus for a consecutive range of channels. |
* |
* @note This function is deprecated. Use getMultipleOutputStatuses() instead. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return A pointer to SnmpIntegerBuffer with the requested information. |
* @note This pointer is only valid until the next call of getMultiple... |
* or setMultiple... function. |
*/ |
SnmpIntegerBuffer *getMultipleChannelStatuses(HSNMP session, int start, int size) |
{ |
return getMultipleOutputStatuses(session, start, size); |
} |
/** |
* @brief Returns an array with the outputStatus for a consecutive range of channels. |
* @since 1.1 |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return A pointer to SnmpIntegerBuffer with the requested information. |
* @note This pointer is only valid until the next call of getMultiple... |
* or setMultiple... function. |
*/ |
SnmpIntegerBuffer *getMultipleOutputStatuses(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpIntegerBuffer, 0, sizeof(snmpIntegerBuffer)); |
return &snmpIntegerBuffer; |
} |
return snmpGetMultipleInteger(session, &outputStatus[start], size); |
} |
/** |
* @brief Returns an array with the outputSwitches for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return A pointer to SnmpIntegerBuffer with the requested information. |
* @note This pointer is only valid until the next call of getMultiple... |
* or setMultiple... function. |
*/ |
SnmpIntegerBuffer *getMultipleOutputSwitches(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpIntegerBuffer, 0, sizeof(snmpIntegerBuffer)); |
return &snmpIntegerBuffer; |
} |
return snmpGetMultipleInteger(session, &outputSwitch[start], size); |
} |
/** |
* @brief Sets the outputSwitch for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param values A pointer to SnmpIntegerBuffer with the list of outputSwitches. |
* @return |
*/ |
SnmpIntegerBuffer *setMultipleOutputSwitches(HSNMP session, int start, SnmpIntegerBuffer *values) |
{ |
if (start < 0 || values->size < 0 || start + values->size > MaxChannelsPerCrate) { |
memset(&snmpIntegerBuffer, 0, sizeof(snmpIntegerBuffer)); |
return &snmpIntegerBuffer; |
} |
return snmpSetMultipleInteger(session, &outputSwitch[start], values); |
} |
/** |
* @brief Returns the actual outputVoltage for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return A pointer to SnmpDoubleBuffer with the requested information. |
* @note This pointer is only valid until the next call of getMultiple... |
* or setMultiple... function. |
*/ |
SnmpDoubleBuffer *getMultipleOutputVoltages(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
return &snmpDoubleBuffer; |
} |
return snmpGetMultipleDouble(session, &outputVoltage[start], size); |
} |
/** |
* @brief Sets the demanded outputVoltage for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param values A pointer to SnmpDoubleBuffer with the list of new outputVoltages |
* @return |
*/ |
SnmpDoubleBuffer *setMultipleOutputVoltages(HSNMP session, int start, SnmpDoubleBuffer *values) |
{ |
if (start < 0 || values->size < 0 || start + values->size > MaxChannelsPerCrate) { |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
return &snmpDoubleBuffer; |
} |
return snmpSetMultipleDouble(session, &outputVoltage[start], values); |
} |
/** |
* @brief Returns the measured terminal voltages for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return A pointer to SnmpDoubleBuffer with the requested information. |
* @note This pointer is only valid until the next call of getMultiple... |
* or setMultiple... function. |
*/ |
SnmpDoubleBuffer *getMultipleMeasurementTerminalVoltages(HSNMP session, int start, int size) |
{ |
return getMultipleOutputMeasurementTerminalVoltages(session, start, size); |
} |
/** |
* @brief Returns an array with the measured terminal voltages for a consecutive range of channels. |
* @since 1.1 |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return A pointer to SnmpDoubleBuffer with the requested information. |
* @note This pointer is only valid until the next call of getMultiple... |
* or setMultiple... function. |
*/ |
SnmpDoubleBuffer *getMultipleOutputMeasurementTerminalVoltages(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
return &snmpDoubleBuffer; |
} |
return snmpGetMultipleDouble(session, &outputMeasurementTerminalVoltage[start], size); |
} |
/** |
* @brief getMultipleOutputConfigMaxTerminalVoltages |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return |
*/ |
SnmpDoubleBuffer *getMultipleOutputConfigMaxTerminalVoltages(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
return &snmpDoubleBuffer; |
} |
return snmpGetMultipleDouble(session, &outputConfigMaxTerminalVoltage[start], size); |
} |
/** |
* @brief Returns an array the demanded output currents for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return |
*/ |
SnmpDoubleBuffer *getMultipleOutputCurrents(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
return &snmpDoubleBuffer; |
} |
return snmpGetMultipleDouble(session, &outputCurrent[start], size); |
} |
/** |
* @brief Sets the demanded output current for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param values A pointer to SnmpDoubleBuffer with a list of new output currents |
* @return |
*/ |
SnmpDoubleBuffer *setMultipleOutputCurrents(HSNMP session, int start, SnmpDoubleBuffer *values) |
{ |
if (start < 0 || values->size < 0 || start + values->size > MaxChannelsPerCrate) { |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
return &snmpDoubleBuffer; |
} |
return snmpSetMultipleDouble(session, &outputCurrent[start], values); |
} |
/** |
* @brief Returns an array with the measured currents for a consecutive range of channels. |
* |
* @note This function is deprecated. Use getMultipleOutputMeasurementCurrents() instead. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return A pointer to SnmpDoubleBuffer with the requested information. |
* @note This pointer is only valid until the next call of getMultiple... |
* or setMultiple... function. |
*/ |
SnmpDoubleBuffer *getMultipleMeasurementCurrents(HSNMP session, int start, int size) |
{ |
return getMultipleOutputMeasurementCurrents(session, start, size); |
} |
/** |
* @brief Returns an array with the measured currents for a consecutive range of channels. |
* @since 1.1 |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return A pointer to SnmpDoubleBuffer with the requested information. |
* @note This pointer is only valid until the next call of getMultiple... |
* or setMultiple... function. |
*/ |
SnmpDoubleBuffer *getMultipleOutputMeasurementCurrents(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
return &snmpDoubleBuffer; |
} |
return snmpGetMultipleDouble(session, &outputMeasurementCurrent[start], size); |
} |
/** |
* @brief Returns an array with the outputConfigMaxCurrent for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return |
*/ |
SnmpDoubleBuffer *getMultipleOutputConfigMaxCurrents(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpDoubleBuffer, 0, sizeof(snmpDoubleBuffer)); |
return &snmpDoubleBuffer; |
} |
return snmpGetMultipleDouble(session, &outputConfigMaxCurrent[start], size); |
} |
/** |
* @brief Returns an array with the outputTripTimeMaxCurrent for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return |
*/ |
SnmpIntegerBuffer *getMultipleOutputTripTimeMaxCurrents(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpIntegerBuffer, 0, sizeof(snmpIntegerBuffer)); |
return &snmpIntegerBuffer; |
} |
return snmpGetMultipleInteger(session, &outputTripTimeMaxCurrent[start], size); |
} |
/** |
* @brief Sets the outputTripTimeMaxCurrent for a consecutive ranges of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param values |
* @return |
*/ |
SnmpIntegerBuffer *setMultipleOutputTripTimeMaxCurrents(HSNMP session, int start, SnmpIntegerBuffer *values) |
{ |
if (start < 0 || values->size < 0 || start + values->size > MaxChannelsPerCrate) { |
memset(&snmpIntegerBuffer, 0, sizeof(snmpIntegerBuffer)); |
return &snmpIntegerBuffer; |
} |
return snmpSetMultipleInteger(session, &outputTripTimeMaxCurrent[start], values); |
} |
/** |
* @brief Returns an array with the outputSupervisionBehavior for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param size The number of requested channels. |
* @return |
*/ |
SnmpIntegerBuffer *getMultipleOutputSupervisionBehaviors(HSNMP session, int start, int size) |
{ |
if (start < 0 || size < 0 || start + size > MaxChannelsPerCrate) { |
memset(&snmpIntegerBuffer, 0, sizeof(snmpIntegerBuffer)); |
return &snmpIntegerBuffer; |
} |
return snmpGetMultipleInteger(session, &outputSupervisionBehavior[start], size); |
} |
/** |
* @brief Sets the outputSupervisionBehavior for a consecutive range of channels. |
* @param session The handle returned by snmpOpen() |
* @param start The first channel (in the range of 0 to MaxArraySize). |
* 0 = slot 0, channel 0; 100 = slot 1, channel 0. |
* @param values The new outputSupervisionBehavior for the all channels starting with start. |
* @return |
*/ |
SnmpIntegerBuffer *setMultipleOutputSupervisionBehaviors(HSNMP session, int start, SnmpIntegerBuffer *values) |
{ |
if (start < 0 || values->size < 0 || start + values->size > MaxChannelsPerCrate) { |
memset(&snmpIntegerBuffer, 0, sizeof(snmpIntegerBuffer)); |
return &snmpIntegerBuffer; |
} |
return snmpSetMultipleInteger(session, &outputSupervisionBehavior[start], values); |
} |
/cvi/instr/MPOD/WIENER_SNMP.h |
---|
0,0 → 1,205 |
/** @file */ |
#ifndef WIENER_SNMP_H |
#define WIENER_SNMP_H |
//#include "netsnmplib.h" |
/* |
#ifdef _MSC_VER |
#define EXPORT extern "C" _declspec(dllexport) |
#else |
#define EXPORT extern "C" |
#endif |
*/ |
#define EXPORT |
#define WIN32_LEAN_AND_MEAN |
//#include <net-snmp/net-snmp-config.h> |
#include "net-snmp-config.h" |
//#define NET_SNMP_SNMPV3_H // we don't need SNMPV3 (one include file is missing) |
#include <net-snmp/net-snmp-includes.h> |
typedef void *HSNMP; // SNMP handle (like FILE) |
// DLL functions |
EXPORT void snmpSetStdErrLog(void); |
EXPORT void snmpSetFileLog(const char * const fileName); |
EXPORT unsigned int snmpGetVersion(void); |
EXPORT char *snmpGetVersionString(void); |
EXPORT int snmpInit(void); |
EXPORT void snmpCleanup(void); |
EXPORT void snmpSetReadCommunityName(const char * const readCommunityName); |
EXPORT void snmpSetWriteCommunityName(const char * const writeCommunityName); |
EXPORT HSNMP snmpOpen(const char * const ipAddress); |
EXPORT void snmpClose(HSNMP session); |
EXPORT char *snmpGetLastError(void); |
// System Functions |
EXPORT char *getSysDescr(HSNMP session); |
EXPORT int getMainSwitch(HSNMP session); |
EXPORT int setMainSwitch(HSNMP session, int value); |
EXPORT int getMainStatus(HSNMP session); |
EXPORT int getVmeReset(HSNMP session); |
EXPORT int setVmeReset(HSNMP session); |
EXPORT int getIpStaticAddress(HSNMP session); |
EXPORT int setIpStaticAddress(HSNMP session, int value); |
EXPORT char *getPsSerialNumber(HSNMP session); |
// Output Counts |
EXPORT int getOutputNumber(HSNMP session); |
EXPORT int getOutputGroups(HSNMP session); |
//Output Channel Information |
//std::string getOutputName(HSNMP session, int channel); |
EXPORT int getOutputGroup(HSNMP session, int channel); |
EXPORT int getOutputStatus(HSNMP session, int channel); |
EXPORT int getChannelStatus(HSNMP m_sessmp, int channel); |
EXPORT double getOutputSenseMeasurement(HSNMP session, int channel); |
EXPORT double getOutputTerminalMeasurement(HSNMP session, int channel); |
EXPORT double getCurrentMeasurement(HSNMP session, int channel); |
EXPORT int getTemperatureMeasurement(HSNMP session, int channel); |
EXPORT int setChannelSwitch(HSNMP session, int channel, int value); |
EXPORT int setOutputSwitch(HSNMP session, int channel, int value); |
EXPORT int getChannelSwitch(HSNMP session, int channel); |
EXPORT int getOutputSwitch(HSNMP session, int channel); |
EXPORT int setHighVoltageGroupsSwitch(HSNMP session, int value); |
EXPORT int getHighVoltageGroupsSwitch(HSNMP session); |
EXPORT int setLowVoltageGroupsSwitch(HSNMP session, int value); |
EXPORT int getLowVoltageGroupsSwitch(HSNMP session); |
EXPORT double getOutputVoltage(HSNMP session, int channel); |
EXPORT double setOutputVoltage(HSNMP session, int channel, double value); |
EXPORT double getOutputCurrent(HSNMP session, int channel); |
EXPORT double setOutputCurrent(HSNMP session, int channel, double value); |
EXPORT double getOutputRiseRate(HSNMP session, int channel); |
EXPORT double setOutputRiseRate(HSNMP session, int channel, double value); |
EXPORT double getOutputFallRate(HSNMP session, int channel); |
EXPORT double setOutputFallRate(HSNMP session, int channel, double value); |
EXPORT double getOutputCurrentRiseRate(HSNMP session, int channel); |
EXPORT double setOutputCurrentRiseRate(HSNMP session, int channel, double value); |
EXPORT double getOutputCurrentFallRate(HSNMP session, int channel); |
EXPORT double setOutputCurrentFallRate(HSNMP session, int channel, double value); |
EXPORT int getOutputSupervisionBehavior(HSNMP session, int channel); |
EXPORT int setOutputSupervisionBehavior(HSNMP session, int channel, int value); |
EXPORT double getOutputSupervisionMinSenseVoltage(HSNMP session, int channel); |
EXPORT double setOutputSupervisionMinSenseVoltage(HSNMP session, int channel, double value); |
EXPORT double getOutputSupervisionMaxSenseVoltage(HSNMP session, int channel); |
EXPORT double setOutputSupervisionMaxSenseVoltage(HSNMP session, int channel, double value); |
EXPORT double getOutputSupervisionMaxTerminalVoltage(HSNMP session, int channel); |
EXPORT double setOutputSupervisionMaxTerminalVoltage(HSNMP session, int channel, double value); |
EXPORT double getOutputSupervisionMaxCurrent(HSNMP session, int channel); |
EXPORT double setOutputSupervisionMaxCurrent(HSNMP session, int channel, double value); |
EXPORT int setOutputSupervisionMaxTemperature(HSNMP session, int channel, int value); |
EXPORT double getOutputConfigMaxSenseVoltage(HSNMP session, int channel); |
EXPORT double getOutputConfigMaxTerminalVoltage(HSNMP session, int channel); |
EXPORT double getOutputConfigMaxCurrent(HSNMP session, int channel); |
EXPORT double getOutputSupervisionMaxPower(HSNMP session, int channel); |
EXPORT int getOutputTripTimeMaxCurrent(HSNMP session, int channel); |
EXPORT int setOutputTripTimeMaxCurrent(HSNMP session, int channel, int delay); |
//Sensor Information functions |
EXPORT int getSensorNumber(HSNMP session); |
EXPORT int getSensorTemp(HSNMP session, int sensor); |
EXPORT int getSensorWarningTemperature(HSNMP session, int sensor); |
EXPORT int setSensorWarningTemperature(HSNMP session, int sensor, int value); |
EXPORT int getSensorFailureTemperature(HSNMP session, int sensor); |
EXPORT int setSensorFailureTemperature(HSNMP session, int sensor, int value); |
//SNMP Community Name Functions |
//std::string getSnmpCommunityName(HSNMP session, int index); |
//std::string setSnmpCommunityName(HSNMP session, int index , int value); |
//Power Supply Detail Functions |
//std::string getPsFirmwareVersion(HSNMP session); |
//std::string getPsSerialNumber(HSNMP session); |
EXPORT int getPsOperatingTime(HSNMP session); |
EXPORT double getPsAuxVoltage(HSNMP session, int auxIndex); |
EXPORT double getPsAuxCurrent(HSNMP session, int auxIndex); |
//std::string getPsDirectAccess(HSNMP session); |
//std::string setPsDirectAccess(HSNMP session); |
//Fan Tray Functions |
//std::string getFanFirmwareVersion(HSNMP session); |
//std::string getFanSerialNumber(HSNMP session); |
EXPORT int getFanOperatingTime(HSNMP session); |
EXPORT int getFanAirTemperature(HSNMP session); |
EXPORT int getFanSwitchOffDelay(HSNMP session); |
EXPORT int setFanSwitchOffDelay(HSNMP session, int value); |
EXPORT int getFanNominalSpeed(HSNMP session); |
EXPORT int setFanNominalSpeed(HSNMP session, int value); |
EXPORT int getFanNumberOfFans(HSNMP session); |
EXPORT int getFanSpeed(HSNMP session, int fan); |
// Module functions |
EXPORT char *getModuleDescription(HSNMP session, int slot); |
EXPORT double getModuleSupply24(HSNMP session, int slot); |
EXPORT double getModuleSupply5(HSNMP session, int slot); |
EXPORT double getModuleAuxTemperature(HSNMP session, int slot, int index); |
EXPORT double getModuleHardwareLimitVoltage(HSNMP session, int slot); |
EXPORT double getModuleHardwareLimitCurrent(HSNMP session, int slot); |
EXPORT double getModuleRampSpeedVoltage(HSNMP session, int slot); |
EXPORT double setModuleRampSpeedVoltage(HSNMP session, int slot, double value); |
EXPORT double getModuleRampSpeedCurrent(HSNMP session, int slot); |
EXPORT double setModuleRampSpeedCurrent(HSNMP session, int slot, double value); |
EXPORT int getModuleStatus(HSNMP session, int slot); |
EXPORT int getModuleEventStatus(HSNMP session, int slot); |
EXPORT int setModuleDoClear(HSNMP session, int slot); |
/** |
* @enum MaximumCrateValues |
*/ |
typedef enum MaximumCrateValues { |
MaxModuleAuxSupplies = 2, ///< The maximum number of module auxiliary supply measurements |
MaxModuleAuxTemperatures = 4, ///< The maximum number of module temperature sensors (iseg HV only) |
MaxCommunities = 4, ///< The maximum number of SNMP community names |
MaxFans = 6, |
MaxPsAuxSupplies = 8, |
MaxSlotsPerCrate = 10, ///< The number of slots per crate |
MaxSensors = 12, ///< The maximum |
MaxChannelsPerSlot = 100, ///< The maximum number of channels per slot |
MaxChannelsPerCrate = 1000 ///< The maximum number of channels per crate |
} MaximumCrateValues; |
/** |
* @struct SnmpDoubleBuffer |
* This struct is used to pass double parameters to setMultiple... functions |
* and for the result value of getMultiple.../setMultiple... functions. |
*/ |
typedef struct SnmpDoubleBuffer { |
int size; ///< The number of values used in value[] |
double value[MaxChannelsPerSlot]; ///< An array of max. 100 double values |
} SnmpDoubleBuffer; |
/** |
* @struct SnmpIntegerBuffer |
* This struct is used to pass integer parameters to setMultiple... functions |
* and for the result value of getMultiple.../setMultiple... functions. |
*/ |
typedef struct SnmpIntegerBuffer { |
int size; ///< The number of values used in value[] |
int value[MaxChannelsPerSlot]; ///< An array of max. 100 int values |
} SnmpIntegerBuffer; |
// Functions for multiple data transfer in one SNMP packet |
EXPORT SnmpIntegerBuffer *getMultipleChannelStatuses(HSNMP session, int start, int size); |
EXPORT SnmpIntegerBuffer *getMultipleOutputStatuses(HSNMP session, int start, int size); |
EXPORT SnmpIntegerBuffer *getMultipleOutputSwitches(HSNMP session, int start, int size); |
EXPORT SnmpIntegerBuffer *setMultipleOutputSwitches(HSNMP session, int start, SnmpIntegerBuffer *values); |
EXPORT SnmpDoubleBuffer *getMultipleOutputVoltages(HSNMP session, int start, int size); |
EXPORT SnmpDoubleBuffer *setMultipleOutputVoltages(HSNMP session, int start, SnmpDoubleBuffer *values); |
EXPORT SnmpDoubleBuffer *getMultipleMeasurementTerminalVoltages(HSNMP session, int start, int size); |
EXPORT SnmpDoubleBuffer *getMultipleOutputMeasurementTerminalVoltages(HSNMP session, int start, int size); |
EXPORT SnmpDoubleBuffer *getMultipleOutputConfigMaxTerminalVoltages(HSNMP session, int start, int size); |
EXPORT SnmpDoubleBuffer *getMultipleOutputCurrents(HSNMP session, int start, int size); |
EXPORT SnmpDoubleBuffer *setMultipleOutputCurrents(HSNMP session, int start, SnmpDoubleBuffer *values); |
EXPORT SnmpDoubleBuffer *getMultipleMeasurementCurrents(HSNMP session, int start, int size); |
EXPORT SnmpDoubleBuffer *getMultipleOutputMeasurementCurrents(HSNMP session, int start, int size); |
EXPORT SnmpDoubleBuffer *getMultipleOutputConfigMaxCurrents(HSNMP session, int start, int size); |
EXPORT SnmpIntegerBuffer *getMultipleOutputTripTimeMaxCurrents(HSNMP session, int start, int size); |
EXPORT SnmpIntegerBuffer *setMultipleOutputTripTimeMaxCurrents(HSNMP session, int start, SnmpIntegerBuffer *values); |
EXPORT SnmpIntegerBuffer *getMultipleOutputSupervisionBehaviors(HSNMP session, int start, int size); |
EXPORT SnmpIntegerBuffer *setMultipleOutputSupervisionBehaviors(HSNMP session, int start, SnmpIntegerBuffer *values); |
#endif |
/cvi/instr/MPOD/include/sys/types.h |
---|
0,0 → 1,97 |
/*** |
*sys/types.h - types returned by system level calls for file and time info |
* |
* Copyright (c) Microsoft Corporation. All rights reserved. |
* |
*Purpose: |
* This file defines types used in defining values returned by system |
* level calls for file status and time information. |
* [System V] |
* |
* [Public] |
* |
****/ |
#pragma once |
#ifndef _INC_TYPES |
#define _INC_TYPES |
#if !defined(_WIN32) |
#error ERROR: Only Win32 target supported! |
#endif |
#if !defined(_W64) |
#if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) |
#define _W64 __w64 |
#else |
#define _W64 |
#endif |
#endif |
#ifdef _USE_32BIT_TIME_T |
#ifdef _WIN64 |
#include <crtwrn.h> |
#endif |
#endif |
#ifndef _TIME32_T_DEFINED |
typedef _W64 long __time32_t; /* 32-bit time value */ |
#define _TIME32_T_DEFINED |
#endif |
#ifndef _TIME64_T_DEFINED |
typedef __int64 __time64_t; /* 64-bit time value */ |
#define _TIME64_T_DEFINED |
#endif |
#ifndef _TIME_T_DEFINED |
#ifdef _USE_32BIT_TIME_T |
typedef __time32_t time_t; /* time value */ |
#else |
typedef __time64_t time_t; /* time value */ |
#endif |
#define _TIME_T_DEFINED /* avoid multiple def's of time_t */ |
#endif |
#ifndef _INO_T_DEFINED |
typedef unsigned short _ino_t; /* i-node number (not used on DOS) */ |
#if !__STDC__ |
/* Non-ANSI name for compatibility */ |
typedef unsigned short ino_t; |
#endif |
#define _INO_T_DEFINED |
#endif |
#ifndef _DEV_T_DEFINED |
typedef unsigned int _dev_t; /* device code */ |
#if !__STDC__ |
/* Non-ANSI name for compatibility */ |
typedef unsigned int dev_t; |
#endif |
#define _DEV_T_DEFINED |
#endif |
#ifndef _OFF_T_DEFINED |
typedef long _off_t; /* file offset value */ |
#if !__STDC__ |
/* Non-ANSI name for compatibility */ |
typedef long off_t; |
#endif |
#define _OFF_T_DEFINED |
#endif |
#endif /* _INC_TYPES */ |
/cvi/instr/MPOD/net-snmp-config.h |
---|
0,0 → 1,1829 |
/* include/net-snmp/net-snmp-config.h.in. Generated from configure.in by autoheader. */ |
/* modified by hand with care. */ |
#ifndef NET_SNMP_CONFIG_H |
#define NET_SNMP_CONFIG_H |
/* _MSC_VER values |
1800 = MSVC++ 12.0 (Visual Studio 2013) |
1700 = MSVC++ 11.0 (Visual Studio 2012) |
1600 = MSVC++ 10.0 (Visual Studio 2010) |
1500 = MSVC++ 9.0 (Visual Studio 2008) |
1400 = MSVC++ 8.0 (Visual Studio 2005) |
1310 = MSVC++ 7.1 (Visual Studio 2003) |
1300 = MSVC++ 7.0 (Visual Studio 2002) |
1200 = MSVC++ 6.0 |
*/ |
#ifdef _MSC_VER |
/* Disable warning 4018: signed/unsigned mismatch. */ |
#pragma warning (disable: 4018) |
#endif |
/* Automatically set by Windows perl Configure script. |
* When compiling with the MSVC workspace, this must be set manually. |
* See the PACKAGE_VERSION variable in Unix /configure script |
*/ |
#ifndef PACKAGE_VERSION |
#define PACKAGE_VERSION "5.7.3" |
#endif |
/* Define HAVE_WIN32_PLATFORM_SDK if you have: |
* Microsoft Visual Studio MSVC 6.0 and the Platform SDK (PSDK) |
* Microsoft Visual Studio.Net 2002 |
* Microsoft Visual Studio.Net 2003 |
*/ |
#define HAVE_WIN32_PLATFORM_SDK 1 |
/* Define NETSNMP_ENABLE_IPV6 to enable IPv6. IPv6 is only available on |
* Windows XP and higher. */ |
/* #undef NETSNMP_ENABLE_IPV6 */ |
/* Only use Windows API functions available on Windows 2000 SP4 or later. |
* We need at least SP1 for some IPv6 defines in ws2ipdef.h |
*/ |
#ifndef _WIN32_WINNT |
#define _WIN32_WINNT 0x600 /*_WIN32_WINNT_WIN6*/ |
#else |
#if _WIN32_WINNT < 0x501 |
#error _WIN32_WINNT is too low - it should be set to at least 0x501. |
#endif |
#endif |
#define INSTALL_BASE "c:/usr" |
/* config.h: a general config file */ |
/* Default (SNMP) version number for the tools to use */ |
#define NETSNMP_DEFAULT_SNMP_VERSION 3 |
/* don't change these values! */ |
#define NETSNMP_SNMPV1 0xAAAA /* readable by anyone */ |
#define NETSNMP_SNMPV2ANY 0xA000 /* V2 Any type (includes NoAuth) */ |
#define NETSNMP_SNMPV2AUTH 0x8000 /* V2 Authenticated requests only */ |
/* default list of mibs to load */ |
#define NETSNMP_DEFAULT_MIBS "IP-MIB;IF-MIB;TCP-MIB;UDP-MIB;HOST-RESOURCES-MIB;SNMPv2-MIB;RFC1213-MIB;NOTIFICATION-LOG-MIB;UCD-SNMP-MIB;UCD-DEMO-MIB;SNMP-TARGET-MIB;NET-SNMP-AGENT-MIB;DISMAN-EVENT-MIB;SNMP-VIEW-BASED-ACM-MIB;SNMP-COMMUNITY-MIB;SNMP-FRAMEWORK-MIB;SNMP-MPD-MIB;SNMP-USER-BASED-SM-MIB;SNMP-NOTIFICATION-MIB;SNMPv2-TM" |
/* default location to look for mibs to load using the above tokens |
and/or those in the MIBS envrionment variable*/ |
#define NETSNMP_DEFAULT_MIBDIRS INSTALL_BASE ## "/share/snmp/mibs" |
/* default mib files to load, specified by path. */ |
/* #undef NETSNMP_DEFAULT_MIBFILES */ |
/* should we compile to use special opaque types: float, double, |
counter64, i64, ui64, union? */ |
#define NETSNMP_WITH_OPAQUE_SPECIAL_TYPES 1 |
/* comment the next line if you are compiling with libsnmp.h |
and are not using the UC-Davis SNMP library. */ |
#define UCD_SNMP_LIBRARY 1 |
/* define if you want to compile support for both authentication and |
privacy support. */ |
#define NETSNMP_ENABLE_SCAPI_AUTHPRIV 1 |
/* define if you are using the MD5 code ...*/ |
#define NETSNMP_USE_INTERNAL_MD5 1 |
/* define if you are using the codeS11 library ...*/ |
/* #undef NETSNMP_USE_PKCS11 */ |
/* add in recent CMU library extensions (not complete) */ |
/* #undef CMU_COMPATIBLE */ |
/* add in recent resource lock functions (not complete) */ |
/* #undef NETSNMP_REENTRANT */ |
/* debugging stuff */ |
/* if defined, we optimize the code to exclude all debugging calls. */ |
/* #undef NETSNMP_NO_DEBUGGING */ |
/* ignore the -D flag and always print debugging information */ |
#define NETSNMP_ALWAYS_DEBUG 0 |
/* reverse encoding BER packets is both faster and more efficient in space. */ |
#define NETSNMP_USE_REVERSE_ASNENCODING 1 |
#define NETSNMP_DEFAULT_ASNENCODING_DIRECTION 1 /* 1 = reverse, 0 = forwards */ |
/* NETSNMP_PERSISTENT_DIRECTORY: If defined, the library is capabile of saving |
persisant information to this directory in the form of configuration |
lines: NETSNMP_PERSISTENT_DIRECTORY/NAME.persistent.conf */ |
#define NETSNMP_PERSISTENT_DIRECTORY INSTALL_BASE ## "/snmp/persist" |
/* NETSNMP_PERSISTENT_MASK: the umask permissions to set up persistent files with */ |
/* #undef NETSNMP_PERSISTENT_MASK -- no win32 umask */ |
/* NETSNMP_AGENT_DIRECTORY_MODE: the mode the agents should use to create |
directories with. Since the data stored here is probably sensitive, it |
probably should be read-only by root/administrator. */ |
#define NETSNMP_AGENT_DIRECTORY_MODE 0700 |
/* NETSNMP_MAX_PERSISTENT_BACKUPS: |
* The maximum number of persistent backups the library will try to |
* read from the persistent cache directory. If an application fails to |
* close down successfully more than this number of times, data will be lost. |
*/ |
#define NETSNMP_MAX_PERSISTENT_BACKUPS 10 |
/* define if you are embedding perl in the main agent */ |
/* #undef NETSNMP_EMBEDDED_PERL */ |
#if notused |
/* define the system type include file here */ |
#define NETSNMP_SYSTEM_INCLUDE_FILE <net-snmp/system/generic.h> |
/* define the machine (cpu) type include file here */ |
#define NETSNMP_MACHINE_INCLUDE_FILE <net-snmp/machine/generic.h> |
#endif |
/* SNMPLIBDIR contains important files */ |
#define SNMPLIBPATH INSTALL_BASE ## "/lib" |
#define SNMPSHAREPATH INSTALL_BASE ## "/share/snmp" |
#define SNMPCONFPATH INSTALL_BASE ## "/etc/snmp" |
#define SNMPDLMODPATH INSTALL_BASE ## "/lib/dlmod" |
/* NETSNMP_LOGFILE: If defined it closes stdout/err/in and opens this in out/err's |
place. (stdin is closed so that sh scripts won't wait for it) */ |
/* #undef NETSNMP_LOGFILE */ |
/* default system contact */ |
#define NETSNMP_SYS_CONTACT "unknown" |
/* system location */ |
#define NETSNMP_SYS_LOC "unknown" |
/* Use libwrap to handle allow/deny hosts? */ |
/* #undef NETSNMP_USE_LIBWRAP */ |
/* Use dmalloc to do malloc debugging? */ |
/* #undef HAVE_DMALLOC_H */ |
/* location of UNIX kernel */ |
#define KERNEL_LOC "unknown" |
/* location of mount table list */ |
#define ETC_MNTTAB "unknown" |
/* location of swap device (ok if not found) */ |
/* #undef DMEM_LOC */ |
/* Command to generate ps output, the final column must be the process |
name withOUT arguments */ |
#define PSCMD "/bin/ps" |
/* Where is the uname command */ |
#define UNAMEPROG "/bin/uname" |
/* pattern for temporary file names */ |
#define NETSNMP_TEMP_FILE_PATTERN INSTALL_BASE ## "/temp/snmpdXXXXXX" |
/* testing code sections. */ |
/* #undef NETSNMP_ENABLE_TESTING_CODE */ |
/* If you don't have root access don't exit upon kmem errors */ |
/* #undef NETSNMP_NO_ROOT_ACCESS */ |
/* If we don't want to use kmem. */ |
/* #undef NETSNMP_NO_KMEM_USAGE */ |
/* If you don't want the agent to report on variables it doesn't have data for */ |
#define NETSNMP_NO_DUMMY_VALUES 1 |
/* Define if statfs takes 2 args and the second argument has |
type struct fs_data. [Ultrix] */ |
/* #undef STAT_STATFS_FS_DATA */ |
/* Define if the TCP timer constants in <netinet/tcp_timer.h> |
depend on the integer variable `hz'. [FreeBSD 4.x] */ |
/* #undef TCPTV_NEEDS_HZ */ |
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP |
systems. This function is required for `alloca.c' support on those systems. |
*/ |
/* #undef CRAY_STACKSEG_END */ |
/* Define to 1 if using `alloca.c'. */ |
/* #undef C_ALLOCA */ |
/* Define if DES encryption should not be supported */ |
/* #undef NETSNMP_DISABLE_DES */ |
/* Define if MD5 authentication should not be supported */ |
/* #undef NETSNMP_DISABLE_MD5 */ |
/* Define if mib loading and parsing code should not be included */ |
/* #undef NETSNMP_DISABLE_MIB_LOADING */ |
/* Define if SNMPv1 code should not be included */ |
/* #undef NETSNMP_DISABLE_SNMPV1 */ |
/* Define if SNMPv2c code should not be included */ |
/* #undef NETSNMP_DISABLE_SNMPV2C */ |
/* Define to 1 if you have the `AES_cfb128_encrypt' function. */ |
/* #undef HAVE_AES_CFB128_ENCRYPT */ |
/* Define to 1 if you have `alloca', as a function or macro. */ |
/* #undef HAVE_ALLOCA */ |
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). |
*/ |
/* #undef HAVE_ALLOCA_H */ |
/* Define to 1 if you have the <arpa/inet.h> header file. */ |
/* #undef HAVE_ARPA_INET_H */ |
/* Define to 1 if you have the <asm/page.h> header file. */ |
/* #undef HAVE_ASM_PAGE_H */ |
/* Define to 1 if you have the `cgetnext' function. */ |
/* #undef HAVE_CGETNEXT */ |
/* Define to 1 if you have the <crtdbg.h> header file. */ |
#define HAVE_CRTDBG_H 1 |
/* Define to 1 if you have the <direct.h> header file. */ |
#define HAVE_DIRECT_H 1 |
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. |
*/ |
/* #undef HAVE_DIRENT_H */ |
/* Define to 1 if you have the <dlfcn.h> header file. */ |
/* #undef HAVE_DLFCN_H */ |
/* Define to 1 if you have the `dlopen' function. */ |
/* #undef HAVE_DLOPEN */ |
/* Define to 1 if you have the <err.h> header file. */ |
/* #undef HAVE_ERR_H */ |
/* Define to 1 if you have the `eval_pv' function. */ |
/* #undef HAVE_EVAL_PV */ |
/* Define to 1 if you have the `execv' function. */ |
/* #undef HAVE_EXECV */ |
/* Define to 1 if you have the <fcntl.h> header file. */ |
#define HAVE_FCNTL_H 1 |
/* Define to 1 if you have the `fork' function. */ |
/* #undef HAVE_FORK */ |
/* Define to 1 if you have the <fstab.h> header file. */ |
/* #undef HAVE_FSTAB_H */ |
/* Define to 1 if you have the `getaddrinfo' function. */ |
/* #undef HAVE_GETADDRINFO */ |
/* Define to 1 if you have the `getdtablesize' function. */ |
/* #undef HAVE_GETDTABLESIZE */ |
/* Define to 1 if you have the `getfsstat' function. */ |
/* #undef HAVE_GETFSSTAT */ |
/* Define to 1 if you have the `getgrnam' function. */ |
/* #undef HAVE_GETGRNAM */ |
/* Define to 1 if you have the `gethostname' function. */ |
#define HAVE_GETHOSTNAME 1 |
/* Define to 1 if you have the `getipnodebyname' function. */ |
/* #undef HAVE_GETIPNODEBYNAME */ |
/* Define to 1 if you have the `getloadavg' function. */ |
/* #undef HAVE_GETLOADAVG */ |
/* Define to 1 if you have the `getmntent' function. */ |
/* #undef HAVE_GETMNTENT */ |
/* Define to 1 if you have the <getopt.h> header file. */ |
/* #undef HAVE_GETOPT_H */ |
/* Define to 1 if you have the `getpagesize' function. */ |
/* #undef HAVE_GETPAGESIZE */ |
/* Define to 1 if you have the `getpid' function. */ |
#define HAVE_GETPID 1 |
/* Define to 1 if you have the `getpwnam' function. */ |
/* #undef HAVE_GETPWNAM */ |
/* Define to 1 if you have the `gettimeofday' function. */ |
/* #undef HAVE_GETTIMEOFDAY */ |
/* Define to 1 if you have the <grp.h> header file. */ |
/* #undef HAVE_GRP_H */ |
/* Define to 1 if you have the `if_freenameindex' function. */ |
/* #undef HAVE_IF_FREENAMEINDEX */ |
/* Define to 1 if you have the `if_nameindex' function. */ |
/* #undef HAVE_IF_NAMEINDEX */ |
/* Define to 1 if you have the <inet/mib2.h> header file. */ |
/* #undef HAVE_INET_MIB2_H */ |
#ifdef HAVE_WIN32_PLATFORM_SDK |
/* Define to 1 if you have the <iphlpapi.h> header file. */ |
#define HAVE_IPHLPAPI_H |
#endif |
/* Define to 1 if the system has the type `int32_t'. */ |
#define HAVE_INT32_T 1 |
/* define if you have type uint32_t */ |
#define HAVE_UINT32_T 1 |
/* define if you have type u_int32_t */ |
#undef HAVE_U_INT32_T |
/* define if you have type int64_t */ |
#define HAVE_INT64_T 1 |
/* define if you have type uint64_t */ |
#define HAVE_UINT64_T 1 |
/* define if you have type u_int64_t */ |
#undef HAVE_U_INT64_T |
/* Define to 1 if you have the <inttypes.h> header file. */ |
/* #undef HAVE_INTTYPES_H */ |
/* Define to 1 if you have the <ioctls.h> header file. */ |
/* #undef HAVE_IOCTLS_H */ |
/* Define to 1 if you have the <io.h> header file. */ |
#define HAVE_IO_H 1 |
/* Define to 1 if you have the `knlist' function. */ |
/* #undef HAVE_KNLIST */ |
/* Define to 1 if you have the <kstat.h> header file. */ |
/* #undef HAVE_KSTAT_H */ |
/* Define to 1 if you have the `kvm_getprocs' function. */ |
/* #undef HAVE_KVM_GETPROCS */ |
/* Define to 1 if you have the <kvm.h> header file. */ |
/* #undef HAVE_KVM_H */ |
/* Define to 1 if you have the `kvm_openfiles' function. */ |
/* #undef HAVE_KVM_OPENFILES */ |
/* Define to 1 if you have the `crypto' library (-lcrypto). */ |
/* #undef HAVE_LIBCRYPTO */ |
/* Define to 1 if you have the `efence' library (-lefence). */ |
/* #undef HAVE_LIBEFENCE */ |
/* Define to 1 if you have the `elf' library (-lelf). */ |
/* #undef HAVE_LIBELF */ |
/* Define to 1 if you have the `kstat' library (-lkstat). */ |
/* #undef HAVE_LIBKSTAT */ |
/* Define to 1 if you have the `m' library (-lm). */ |
/* #undef HAVE_LIBM */ |
/* Define to 1 if you have the `mld' library (-lmld). */ |
/* #undef HAVE_LIBMLD */ |
/* Define to 1 if you have the `nsl' library (-lnsl). */ |
/* #undef HAVE_LIBNSL */ |
/* Define to 1 if you have the <libperfstat.h> header file. */ |
/* #undef HAVE_LIBPERFSTAT_H */ |
/* Define to 1 if you have the `pkcs11' library (-lpkcs11). */ |
/* #undef HAVE_LIBPKCS11 */ |
/* Define to 1 if you have the `RSAglue' library (-lRSAglue). */ |
/* #undef HAVE_LIBRSAGLUE */ |
/* Define to 1 if you have the `rsaref' library (-lrsaref). */ |
/* #undef HAVE_LIBRSAREF */ |
/* Define to 1 if you have the `sensors' library (-lsensors). */ |
/* #undef HAVE_LIBSENSORS */ |
/* Define to 1 if you have the <limits.h> header file. */ |
#define HAVE_LIMITS_H 1 |
/* Define to 1 if you have the <linux/hdreg.h> header file. */ |
/* #undef HAVE_LINUX_HDREG_H */ |
/* Define to 1 if you have the <linux/tasks.h> header file. */ |
/* #undef HAVE_LINUX_TASKS_H */ |
/* Define to 1 if you have the <locale.h> header file. */ |
#define HAVE_LOCALE_H 1 |
/* Define to 1 if you have the `lrand48' function. */ |
/* #undef HAVE_LRAND48 */ |
/* Define to 1 if you have the <machine/param.h> header file. */ |
/* #undef HAVE_MACHINE_PARAM_H */ |
/* Define to 1 if you have the <machine/pte.h> header file. */ |
/* #undef HAVE_MACHINE_PTE_H */ |
/* Define to 1 if you have the <machine/types.h> header file. */ |
/* #undef HAVE_MACHINE_TYPES_H */ |
/* Define to 1 if you have the <malloc.h> header file. */ |
#define HAVE_MALLOC_H 1 |
/* Define to 1 if you have the <memory.h> header file. */ |
#define HAVE_MEMORY_H 1 |
/* Define to 1 if you have the `mkstemp' function. */ |
/* #undef HAVE_MKSTEMP */ |
/* Define to 1 if you have the `mktime' function. */ |
/* #undef HAVE_MKTIME */ |
/* Define to 1 if you have the <mntent.h> header file. */ |
/* #undef HAVE_MNTENT_H */ |
/* Define to 1 if you have the <mtab.h> header file. */ |
/* #undef HAVE_MTAB_H */ |
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ |
/* #undef HAVE_NDIR_H */ |
/* Define to 1 if you have the <netdb.h> header file. */ |
/* #undef HAVE_NETDB_H */ |
/* Define to 1 if you have the <netinet6/in6_pcb.h> header file. */ |
/* #undef HAVE_NETNETSNMP_ENABLE_IPV6_IN6_PCB_H */ |
/* Define to 1 if you have the <netinet6/in6_var.h> header file. */ |
/* #undef HAVE_NETNETSNMP_ENABLE_IPV6_IN6_VAR_H */ |
/* Define to 1 if you have the <netinet6/ip6_var.h> header file. */ |
/* #undef HAVE_NETNETSNMP_ENABLE_IPV6_IP6_VAR_H */ |
/* Define to 1 if you have the <netinet6/nd6.h> header file. */ |
/* #undef HAVE_NETNETSNMP_ENABLE_IPV6_ND6_H */ |
/* Define to 1 if you have the <netinet6/tcp6_fsm.h> header file. */ |
/* #undef HAVE_NETNETSNMP_ENABLE_IPV6_TCP6_FSM_H */ |
/* Define to 1 if you have the <netinet6/tcp6.h> header file. */ |
/* #undef HAVE_NETNETSNMP_ENABLE_IPV6_TCP6_H */ |
/* Define to 1 if you have the <netinet6/tcp6_timer.h> header file. */ |
/* #undef HAVE_NETNETSNMP_ENABLE_IPV6_TCP6_TIMER_H */ |
/* Define to 1 if you have the <netinet6/tcp6_var.h> header file. */ |
/* #undef HAVE_NETNETSNMP_ENABLE_IPV6_TCP6_VAR_H */ |
/* Define to 1 if you have the <netinet/icmp_var.h> header file. */ |
/* #undef HAVE_NETINET_ICMP_VAR_H */ |
/* Define to 1 if you have the <netinet/if_ether.h> header file. */ |
/* #undef HAVE_NETINET_IF_ETHER_H */ |
/* Define to 1 if you have the <netinet/in.h> header file. */ |
/* #undef HAVE_NETINET_IN_H */ |
/* Define to 1 if you have the <netinet/in_systm.h> header file. */ |
/* #undef HAVE_NETINET_IN_SYSTM_H */ |
/* Define to 1 if you have the <netinet/in_var.h> header file. */ |
/* #undef HAVE_NETINET_IN_VAR_H */ |
/* Define to 1 if you have the <netinet/ip6.h> header file. */ |
/* #undef HAVE_NETINET_IP6_H */ |
/* Define to 1 if you have the <netinet/ip.h> header file. */ |
/* #undef HAVE_NETINET_IP_H */ |
/* Define to 1 if you have the <netinet/ip_icmp.h> header file. */ |
/* #undef HAVE_NETINET_IP_ICMP_H */ |
/* Define to 1 if you have the <netinet/icmp6.h> header file. */ |
/* #undef HAVE_NETINET_ICMP6_H */ |
/* Define to 1 if you have the <netinet/ip_var.h> header file. */ |
/* #undef HAVE_NETINET_IP_VAR_H */ |
/* Define to 1 if you have the <netinet/tcpip.h> header file. */ |
/* #undef HAVE_NETINET_TCPIP_H */ |
/* Define to 1 if you have the <netinet/tcp_fsm.h> header file. */ |
/* #undef HAVE_NETINET_TCP_FSM_H */ |
/* Define to 1 if you have the <netinet/tcp.h> header file. */ |
/* #undef HAVE_NETINET_TCP_H */ |
/* Define to 1 if you have the <netinet/tcp_timer.h> header file. */ |
/* #undef HAVE_NETINET_TCP_TIMER_H */ |
/* Define to 1 if you have the <netinet/tcp_var.h> header file. */ |
/* #undef HAVE_NETINET_TCP_VAR_H */ |
/* Define to 1 if you have the <netinet/udp.h> header file. */ |
/* #undef HAVE_NETINET_UDP_H */ |
/* Define to 1 if you have the <netinet/udp_var.h> header file. */ |
/* #undef HAVE_NETINET_UDP_VAR_H */ |
/* Define to 1 if you have the <netipx/ipx.h> header file. */ |
/* #undef HAVE_NETIPX_IPX_H */ |
/* Define to 1 if you have the <net/if_dl.h> header file. */ |
/* #undef HAVE_NET_IF_DL_H */ |
/* Define to 1 if you have the <net/if.h> header file. */ |
/* #undef HAVE_NET_IF_H */ |
/* Define to 1 if you have the <net/if_mib.h> header file. */ |
/* #undef HAVE_NET_IF_MIB_H */ |
/* Define to 1 if you have the <net/if_types.h> header file. */ |
/* #undef HAVE_NET_IF_TYPES_H */ |
/* Define to 1 if you have the <net/if_var.h> header file. */ |
/* #undef HAVE_NET_IF_VAR_H */ |
/* Define to 1 if you have the <net/route.h> header file. */ |
/* #undef HAVE_NET_ROUTE_H */ |
/* Define to 1 if you have the `nlist' function. */ |
/* #undef HAVE_NLIST */ |
/* Define to 1 if you have the <nlist.h> header file. */ |
/* #undef HAVE_NLIST_H */ |
/* Define to 1 if you have the <openssl/aes.h> header file. */ |
/* #undef HAVE_OPENSSL_AES_H */ |
/* Define to 1 if you have the <openssl/des.h> header file. */ |
/* #undef HAVE_OPENSSL_DES_H */ |
/* Define to 1 if you have the <openssl/dh.h> header file. */ |
/* #undef HAVE_OPENSSL_DH_H */ |
/* Define to 1 if you have the <openssl/evp.h> header file. */ |
/* #undef HAVE_OPENSSL_EVP_H */ |
/* Define to 1 if you have the <openssl/hmac.h> header file. */ |
/* #undef HAVE_OPENSSL_HMAC_H */ |
/* Define to 1 if you have the <osreldate.h> header file. */ |
/* #undef HAVE_OSRELDATE_H */ |
/* Define to 1 if you have the <pkginfo.h> header file. */ |
/* #undef HAVE_PKGINFO_H */ |
/* Define to 1 if you have the <pkglocs.h> header file. */ |
/* #undef HAVE_PKGLOCS_H */ |
/* Define if you have <process.h> header file. (Win32-getpid) */ |
#define HAVE_PROCESS_H 1 |
/* Define to 1 if you have the <pthread.h> header file. */ |
/* #undef HAVE_PTHREAD_H */ |
/* Define to 1 if you have the <pwd.h> header file. */ |
/* #undef HAVE_PWD_H */ |
/* Define to 1 if you have the `rand' function. */ |
#define HAVE_RAND 1 |
/* Define to 1 if you have the `random' function. */ |
#define HAVE_RAND 1 |
/* Define to 1 if you have the `regcomp' function. */ |
/* #undef HAVE_REGCOMP */ |
/* Define to 1 if you have the <regex.h> header file. */ |
/* #undef HAVE_REGEX_H */ |
/* Define to 1 if you have the `rpmGetPath' function. */ |
/* #undef HAVE_RPMGETPATH */ |
/* Define to 1 if you have the <rpmio.h> header file. */ |
/* #undef HAVE_RPMIO_H */ |
/* Define to 1 if you have the <rpm/rpmio.h> header file. */ |
/* #undef HAVE_RPM_RPMIO_H */ |
/* Define to 1 if you have the <search.h> header file. */ |
#define HAVE_SEARCH_H 1 |
/* Define to 1 if you have the <security/cryptoki.h> header file. */ |
/* #undef HAVE_SECURITY_CRYPTOKI_H */ |
/* Define to 1 if you have the `select' function. */ |
/* #undef HAVE_SELECT */ |
/* Define to 1 if you have the `setenv' function. */ |
/* #undef HAVE_SETENV */ |
/* Define to 1 if you have the `setgid' function. */ |
/* #undef HAVE_SETGID */ |
/* Define to 1 if you have the `setgroups' function. */ |
/* #undef HAVE_SETGROUPS */ |
/* Define to 1 if you have the `setitimer' function. */ |
/* #undef HAVE_SETITIMER */ |
/* Define to 1 if you have the `setlocale' function. */ |
#define HAVE_SETLOCALE 1 |
/* Define to 1 if you have the `setmntent' function. */ |
/* #undef HAVE_SETMNTENT */ |
/* Define to 1 if you have the `setsid' function. */ |
/* #undef HAVE_SETSID */ |
/* Define to 1 if you have the `setuid' function. */ |
/* #undef HAVE_SETUID */ |
/* Define to 1 if you have the <sgtty.h> header file. */ |
/* #undef HAVE_SGTTY_H */ |
/* Define to 1 if you have the `sigaction' function. */ |
/* #undef HAVE_SIGACTION */ |
/* Define to 1 if you have the `sigalrm' function. */ |
/* #undef HAVE_SIGALRM */ |
/* Define to 1 if you have the `sigblock' function. */ |
/* #undef HAVE_SIGBLOCK */ |
/* Define to 1 if you have the `sighold' function. */ |
/* #undef HAVE_SIGHOLD */ |
/* Define to 1 if you have the `signal' function. */ |
/* #undef HAVE_SIGNAL */ |
/* Define to 1 if you have the `sigset' function. */ |
/* #undef HAVE_SIGSET */ |
/* Define to 1 if you have the `snprintf' function. */ |
#define HAVE_SNPRINTF 1 |
/* Define to 1 if you have the `socket' function. */ |
#define HAVE_SOCKET 1 |
/* Define to 1 if you have the `statfs' function. */ |
/* #undef HAVE_STATFS */ |
/* Define to 1 if you have the `statvfs' function. */ |
/* #undef HAVE_STATVFS */ |
/* Define to 1 if you have the <stdint.h> header file. */ |
#ifdef __MINGW32__ |
#define HAVE_STDINT_H 1 |
#endif |
/* Define to 1 if you have the <stdlib.h> header file. */ |
#define HAVE_STDLIB_H 1 |
/* Define to 1 if you have the `stime' function. */ |
/* #undef HAVE_STIME */ |
/* Define to 1 if you have the `strcasestr' function. */ |
/* #undef HAVE_STRCASESTR */ |
/* Define to 1 if you have the `strdup' function. */ |
#define HAVE_STRDUP 1 |
/* Define to 1 if you have the `strerror' function. */ |
#define HAVE_STRERROR 1 |
/* Define to 1 if you have the <strings.h> header file. */ |
/* #undef HAVE_STRINGS_H */ |
/* Define to 1 if you have the <string.h> header file. */ |
#define HAVE_STRING_H 1 |
/* Define to 1 if you have the `strlcpy' function. */ |
/* #undef HAVE_STRLCPY */ |
/* Define to 1 if you have the `strncasecmp' function. */ |
/* #undef HAVE_STRNCASECMP */ |
/* Define to 1 if you have the `strtol' function. */ |
#define HAVE_STRTOL 1 |
/* Define to 1 if you have the `strtoul' function. */ |
#define HAVE_STRTOUL 1 |
/* Define to 1 if you have the <syslog.h> header file. */ |
/* #undef HAVE_SYSLOG_H */ |
/* Define to 1 if you have the `system' function. */ |
#define HAVE_SYSTEM 1 |
/* Define to 1 if you have the <sys/cdefs.h> header file. */ |
/* #undef HAVE_SYS_CDEFS_H */ |
/* Define to 1 if you have the <sys/conf.h> header file. */ |
/* #undef HAVE_SYS_CONF_H */ |
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. |
*/ |
/* #undef HAVE_SYS_DIR_H */ |
/* Define to 1 if you have the <sys/diskio.h> header file. */ |
/* #undef HAVE_SYS_DISKIO_H */ |
/* Define to 1 if you have the <sys/dkio.h> header file. */ |
/* #undef HAVE_SYS_DKIO_H */ |
/* Define to 1 if you have the <sys/dmap.h> header file. */ |
/* #undef HAVE_SYS_DMAP_H */ |
/* Define to 1 if you have the <sys/file.h> header file. */ |
/* #undef HAVE_SYS_FILE_H */ |
/* Define to 1 if you have the <sys/filio.h> header file. */ |
/* #undef HAVE_SYS_FILIO_H */ |
/* Define to 1 if you have the <sys/fixpoint.h> header file. */ |
/* #undef HAVE_SYS_FIXPOINT_H */ |
/* Define to 1 if you have the <sys/fs.h> header file. */ |
/* #undef HAVE_SYS_FS_H */ |
/* Define to 1 if you have the <sys/hashing.h> header file. */ |
/* #undef HAVE_SYS_HASHING_H */ |
/* Define to 1 if you have the <sys/ioctl.h> header file. */ |
/* #undef HAVE_SYS_IOCTL_H */ |
/* Define to 1 if you have the <sys/loadavg.h> header file. */ |
/* #undef HAVE_SYS_LOADAVG_H */ |
/* Define to 1 if you have the <sys/mbuf.h> header file. */ |
/* #undef HAVE_SYS_MBUF_H */ |
/* Define to 1 if you have the <sys/mntent.h> header file. */ |
/* #undef HAVE_SYS_MNTENT_H */ |
/* Define to 1 if you have the <sys/mnttab.h> header file. */ |
/* #undef HAVE_SYS_MNTTAB_H */ |
/* Define to 1 if you have the <sys/mount.h> header file. */ |
/* #undef HAVE_SYS_MOUNT_H */ |
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. |
*/ |
/* #undef HAVE_SYS_NDIR_H */ |
/* Define to 1 if you have the <sys/param.h> header file. */ |
/* #undef HAVE_SYS_PARAM_H */ |
/* Define to 1 if you have the <sys/pool.h> header file. */ |
/* #undef HAVE_SYS_POOL_H */ |
/* Define to 1 if you have the <sys/proc.h> header file. */ |
/* #undef HAVE_SYS_PROC_H */ |
/* Define to 1 if you have the <sys/protosw.h> header file. */ |
/* #undef HAVE_SYS_PROTOSW_H */ |
/* Define to 1 if you have the <sys/pstat.h> header file. */ |
/* #undef HAVE_SYS_PSTAT_H */ |
/* Define to 1 if you have the <sys/queue.h> header file. */ |
/* #undef HAVE_SYS_QUEUE_H */ |
/* Define to 1 if you have the <sys/select.h> header file. */ |
/* #undef HAVE_SYS_SELECT_H */ |
/* Define to 1 if you have the <sys/socketvar.h> header file. */ |
/* #undef HAVE_SYS_SOCKETVAR_H */ |
/* Define to 1 if you have the <sys/socket.h> header file. */ |
/* #undef HAVE_SYS_SOCKET_H */ |
/* Define to 1 if you have the <sys/sockio.h> header file. */ |
/* #undef HAVE_SYS_SOCKIO_H */ |
/* Define to 1 if you have the <sys/statfs.h> header file. */ |
/* #undef HAVE_SYS_STATFS_H */ |
/* Define to 1 if you have the <sys/statvfs.h> header file. */ |
/* #undef HAVE_SYS_STATVFS_H */ |
/* Define to 1 if you have the <sys/stat.h> header file. */ |
#define HAVE_SYS_STAT_H 1 |
/* Define to 1 if you have the <sys/stream.h> header file. */ |
/* #undef HAVE_SYS_STREAM_H */ |
/* Define to 1 if you have the <sys/swap.h> header file. */ |
/* #undef HAVE_SYS_SWAP_H */ |
/* Define to 1 if you have the <sys/sysctl.h> header file. */ |
/* #undef HAVE_SYS_SYSCTL_H */ |
/* Define to 1 if you have the <sys/sysmp.h> header file. */ |
/* #undef HAVE_SYS_SYSMP_H */ |
/* Define to 1 if you have the <sys/tcpipstats.h> header file. */ |
/* #undef HAVE_SYS_TCPIPSTATS_H */ |
/* Define to 1 if you have the <sys/time.h> header file. */ |
/* #undef HAVE_SYS_TIME_H */ |
/* Define to 1 if you have the <sys/timeb.h> header file. */ |
#define HAVE_SYS_TIMEB_H 1 |
/* Define to 1 if you have the <sys/types.h> header file. */ |
#define HAVE_SYS_TYPES_H 1 |
/* Define to 1 if you have the <sys/un.h> header file. */ |
/* #undef HAVE_SYS_UN_H */ |
/* Define to 1 if you have the <sys/user.h> header file. */ |
/* #undef HAVE_SYS_USER_H */ |
/* Define to 1 if you have the <sys/utsname.h> header file. */ |
/* #undef HAVE_SYS_UTSNAME_H */ |
/* Define to 1 if you have the <sys/vfs.h> header file. */ |
/* #undef HAVE_SYS_VFS_H */ |
/* Define to 1 if you have the <sys/vmmac.h> header file. */ |
/* #undef HAVE_SYS_VMMAC_H */ |
/* Define to 1 if you have the <sys/vmmeter.h> header file. */ |
/* #undef HAVE_SYS_VMMETER_H */ |
/* Define to 1 if you have the <sys/vmparam.h> header file. */ |
/* #undef HAVE_SYS_VMPARAM_H */ |
/* Define to 1 if you have the <sys/vmsystm.h> header file. */ |
/* #undef HAVE_SYS_VMSYSTM_H */ |
/* Define to 1 if you have the <sys/vm.h> header file. */ |
/* #undef HAVE_SYS_VM_H */ |
/* Define to 1 if you have the <sys/vnode.h> header file. */ |
/* #undef HAVE_SYS_VNODE_H */ |
/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */ |
/* #undef HAVE_SYS_WAIT_H */ |
/* Define to 1 if you have the `tcgetattr' function. */ |
/* #undef HAVE_TCGETATTR */ |
/* Define to 1 if you have the <ufs/ffs/fs.h> header file. */ |
/* #undef HAVE_UFS_FFS_FS_H */ |
/* Define to 1 if you have the <ufs/fs.h> header file. */ |
/* #undef HAVE_UFS_FS_H */ |
/* Define to 1 if you have the <ufs/ufs/dinode.h> header file. */ |
/* #undef HAVE_UFS_UFS_DINODE_H */ |
/* Define to 1 if you have the <ufs/ufs/inode.h> header file. */ |
/* #undef HAVE_UFS_UFS_INODE_H */ |
/* Define to 1 if you have the <ufs/ufs/quota.h> header file. */ |
/* #undef HAVE_UFS_UFS_QUOTA_H */ |
/* Define to 1 if you have the `uname' function. */ |
/* #undef HAVE_UNAME */ |
/* Define to 1 if you have the <unistd.h> header file. */ |
/* #undef HAVE_UNISTD_H */ |
/* Define to 1 if you have the `usleep' function. */ |
/* #undef HAVE_USLEEP */ |
/* Define to 1 if you have the <utmpx.h> header file. */ |
/* #undef HAVE_UTMPX_H */ |
/* Define to 1 if you have the <utsname.h> header file. */ |
/* #undef HAVE_UTSNAME_H */ |
/* Define to 1 if you have the <uvm/uvm_extern.h> header file. */ |
/* #undef HAVE_UVM_UVM_EXTERN_H */ |
/* Define to 1 if you have the <uvm/uvm_param.h> header file. */ |
/* #undef HAVE_UVM_UVM_PARAM_H */ |
/* Define to 1 if you have the <vm/swap_pager.h> header file. */ |
/* #undef HAVE_VM_SWAP_PAGER_H */ |
/* Define to 1 if you have the <vm/vm_extern.h> header file. */ |
/* #undef HAVE_VM_VM_EXTERN_H */ |
/* Define to 1 if you have the <vm/vm.h> header file. */ |
/* #undef HAVE_VM_VM_H */ |
/* Define to 1 if you have the <vm/vm_param.h> header file. */ |
/* #undef HAVE_VM_VM_PARAM_H */ |
/* Define to 1 if you have the `vsnprintf' function. */ |
#define HAVE_VSNPRINTF 1 |
/* Define to 1 if you have the <winsock.h> header file. */ |
#define HAVE_WINSOCK_H 1 |
/* Define to 1 if you have the <winsock2.h> header file. */ |
#define HAVE_WINSOCK2_H 1 |
/* Define to 1 if you have the <ws2tcpip.h> header file. */ |
#define HAVE_WS2TCPIP_H 1 |
/* Set if IP_PKTINFO is usable */ |
#define HAVE_IP_PKTINFO 1 |
/* Define to 1 if you have the <xti.h> header file. */ |
/* #undef HAVE_XTI_H */ |
/* Define to the address where bug reports for this package should be sent. */ |
/* #undef PACKAGE_BUGREPORT */ |
/* Define to the full name of this package. */ |
#ifndef PACKAGE_NAME |
#define PACKAGE_NAME "Net-SNMP" |
#endif |
/* Define to the full name and version of this package. */ |
/* #undef PACKAGE_STRING */ |
/* Define to the one symbol short name of this package. */ |
#ifndef PACKAGE_TARNAME |
#define PACKAGE_TARNAME "net-snmp" |
#endif |
/* Define to the version of this package. */ |
/* #undef PACKAGE_VERSION */ |
/* Define as the return type of signal handlers (`int' or `void'). */ |
#define RETSIGTYPE void |
/* The size of a `int', as computed by sizeof. */ |
#define SIZEOF_INT 4 |
/* The size of a `long', as computed by sizeof. */ |
#define SIZEOF_LONG 4 |
/* The size of a `intmax_t', as computed by sizeof. */ |
#define SIZEOF_INTMAX_T 8 |
/* The size of a `short', as computed by sizeof. */ |
#define SIZEOF_SHORT 2 |
/* If using the C implementation of alloca, define if you know the |
direction of stack growth for your system; otherwise it will be |
automatically deduced at run-time. |
STACK_DIRECTION > 0 => grows toward higher addresses |
STACK_DIRECTION < 0 => grows toward lower addresses |
STACK_DIRECTION = 0 => direction of growth unknown */ |
/* #undef STACK_DIRECTION */ |
/* Define to 1 if you have the ANSI C header files. */ |
#define STDC_HEADERS 1 |
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ |
/* #undef TIME_WITH_SYS_TIME */ |
/* Define to 1 if your processor stores words with the most significant byte |
first (like Motorola and SPARC, unlike Intel and VAX). */ |
/* #undef WORDS_BIGENDIAN */ |
/* Define to 1 if on AIX 3. |
System headers sometimes define this. |
We just want to avoid a redefinition error message. */ |
#ifndef _ALL_SOURCE |
/* # undef _ALL_SOURCE */ |
#endif |
/* Define to empty if `const' does not conform to ANSI C. */ |
/* #undef const */ |
/* Define as `__inline' if that's what the C compiler calls it, or to nothing |
if it is not supported. */ |
#define inline __inline |
/* Define to `long' if <sys/types.h> does not define. */ |
/* #undef off_t */ |
/* Define to `int' if <sys/types.h> does not define. */ |
/* #undef pid_t */ |
/* define if you have getdevs() */ |
/* #undef HAVE_GETDEVS */ |
/* define if you have devstat_getdevs() */ |
/* #undef HAVE_DEVSTAT_GETDEVS */ |
/* define if you have <netinet/in_pcb.h> */ |
/* #undef HAVE_NETINET_IN_PCB_H */ |
/* define if you have <sys/disklabel.h> */ |
/* #undef HAVE_SYS_DISKLABEL_H */ |
/* define if you are using linux and /proc/net/dev has the compressed |
field, which exists in linux kernels 2.2 and greater. */ |
/* #undef PROC_NET_DEV_HAS_COMPRESSED */ |
/* define rtentry to ortentry on SYSV machines (alphas) */ |
#define RTENTRY rtentry; |
/* Use BSD 4.4 routing table entries? */ |
/* #undef RTENTRY_4_4 */ |
/* Does struct sigaction have a sa_sigaction field? */ |
/* #undef HAVE_STRUCT_SIGACTION_SA_SIGACTION */ |
/* Does struct sockaddr have a sa_len field? */ |
/* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */ |
/* Does struct sockaddr have a sa_family2 field? */ |
/* #undef HAVE_STRUCT_SOCKADDR_SA_UNION_SA_GENERIC_SA_FAMILY2 */ |
/* Does struct in6_addr have a s6_un.sa6_ladd field? */ |
/* #undef HAVE_STRUCT_IN6_ADDR_S6_UN_SA6_LADDR */ |
/* msghdr.msg_control */ |
/* #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL */ |
/* msghdr.msg_flags */ |
/* #undef HAVE_STRUCT_MSGHDR_MSG_FLAGS */ |
/* rtentry structure tests */ |
/* #undef RTENTRY_RT_NEXT */ |
/* #undef HAVE_STRUCT_RTENTRY_RT_DST */ |
/* #undef HAVE_STRUCT_RTENTRY_RT_UNIT */ |
/* #undef HAVE_STRUCT_RTENTRY_RT_USE */ |
/* #undef HAVE_STRUCT_RTENTRY_RT_REFCNT */ |
/* #undef HAVE_STRUCT_RTENTRY_RT_HASH */ |
/* ifnet structure tests */ |
/* #undef HAVE_STRUCT_IFNET_IF_BAUDRATE */ |
/* #undef HAVE_STRUCT_IFNET_IF_BAUDRATE_IFS_VALUE */ |
/* #undef HAVE_STRUCT_IFNET_IF_SPEED */ |
/* #undef HAVE_STRUCT_IFNET_IF_TYPE */ |
/* #undef HAVE_STRUCT_IFNET_IF_IMCASTS */ |
/* #undef HAVE_STRUCT_IFNET_IF_IQDROPS */ |
/* #undef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC */ |
/* #undef HAVE_STRUCT_IFNET_IF_NOPROTO */ |
/* #undef HAVE_STRUCT_IFNET_IF_OMCASTS */ |
/* #undef HAVE_STRUCT_IFNET_IF_XNAME */ |
/* #undef HAVE_STRUCT_IFNET_IF_OBYTES */ |
/* #undef HAVE_STRUCT_IFNET_IF_IBYTES */ |
/* #undef HAVE_STRUCT_IFNET_IF_ADDRLIST */ |
/* tcpstat.tcps_rcvmemdrop */ |
/* #undef HAVE_STRUCT_TCPSTAT_TCPS_RCVMEMDROP */ |
/* udpstat.udps_discard */ |
/* #undef HAVE_STRUCT_UDPSTAT_UDPS_DISCARD */ |
/* udpstat.udps_discard */ |
/* #undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORT */ |
/* udpstat.udps_discard */ |
/* #undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORTBCAST */ |
/* udpstat.udps_discard */ |
/* #undef HAVE_STRUCT_UDPSTAT_UDPS_FULLSOCK */ |
/* arphd.at_next */ |
/* #undef HAVE_STRUCT_ARPHD_AT_NEXT */ |
/* ifaddr.ifa_next */ |
/* #undef HAVE_STRUCT_IFADDR_IFA_NEXT */ |
/* ifnet.if_mtu */ |
/* #undef HAVE_STRUCT_IFNET_IF_MTU */ |
/* swdevt.sw_nblksenabled */ |
/* #undef HAVE_STRUCT_SWDEVT_SW_NBLKSENABLED */ |
/* nlist.n_value */ |
/* #undef HAVE_STRUCT_NLIST_N_VALUE */ |
/* ipstat structure tests */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_CANTFORWARD */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_CANTFRAG */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_DELIVERED */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_FRAGDROPPED */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_FRAGTIMEOUT */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_LOCALOUT */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_NOPROTO */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_NOROUTE */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_ODROPPED */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_OFRAGMENTS */ |
/* #undef HAVE_STRUCT_IPSTAT_IPS_REASSEMBLED */ |
/* vfsstat.f_frsize */ |
/* #undef HAVE_STRUCT_STATVFS_F_FRSIZE */ |
/* vfsstat.f_files */ |
/* #undef HAVE_STRUCT_STATVFS_F_FILES */ |
/* statfs inode structure tests*/ |
/* #undef HAVE_STRUCT_STATFS_F_FILES */ |
/* #undef HAVE_STRUCT_STATFS_F_FFREE */ |
/* #undef HAVE_STRUCT_STATFS_F_FAVAIL */ |
/* des_ks_struct.weak_key */ |
/* #undef HAVE_STRUCT_DES_KS_STRUCT_WEAK_KEY */ |
/* ifnet needs to have _KERNEL defined */ |
/* #undef IFNET_NEEDS_KERNEL */ |
/* sysctl works to get boottime, etc... */ |
/* #undef NETSNMP_CAN_USE_SYSCTL */ |
/* type check for in_addr_t */ |
/* #undef in_addr_t */ |
/* define if SIOCGIFADDR exists in sys/ioctl.h */ |
/* #undef SYS_IOCTL_H_HAS_SIOCGIFADDR */ |
/* Mib-2 tree Info */ |
/* These are the system information variables. */ |
#define NETSNMP_VERS_DESC "unknown" /* overridden at run time */ |
#define NETSNMP_SYS_NAME "unknown" /* overridden at run time */ |
/* comment out the second define to turn off functionality for any of |
these: (See README for details) */ |
/* proc PROCESSNAME [MAX] [MIN] */ |
#define NETSNMP_PROCMIBNUM 2 |
/* exec/shell NAME COMMAND */ |
#define NETSNMP_SHELLMIBNUM 8 |
/* swap MIN */ |
#define NETSNMP_MEMMIBNUM 4 |
/* disk DISK MINSIZE */ |
#define NETSNMP_DISKMIBNUM 9 |
/* load 1 5 15 */ |
#define NETSNMP_LOADAVEMIBNUM 10 |
/* which version are you using? This mibloc will tell you */ |
#define NETSNMP_VERSIONMIBNUM 100 |
/* Reports errors the agent runs into */ |
/* (typically its "can't fork, no mem" problems) */ |
#define NETSNMP_ERRORMIBNUM 101 |
/* The sub id of EXTENSIBLEMIB returned to queries of |
.iso.org.dod.internet.mgmt.mib-2.system.sysObjectID.0 */ |
#define NETSNMP_AGENTID 250 |
/* This ID is returned after the NETSNMP_AGENTID above. IE, the resulting |
value returned by a query to sysObjectID is |
EXTENSIBLEMIB.NETSNMP_AGENTID.???, where ??? is defined below by OSTYPE */ |
#define NETSNMP_HPUX9ID 1 |
#define NETSNMP_SUNOS4ID 2 |
#define NETSNMP_SOLARISID 3 |
#define NETSNMP_OSFID 4 |
#define NETSNMP_ULTRIXID 5 |
#define NETSNMP_HPUX10ID 6 |
#define NETSNMP_NETBSD1ID 7 |
#define NETSNMP_FREEBSDID 8 |
#define NETSNMP_IRIXID 9 |
#define NETSNMP_LINUXID 10 |
#define NETSNMP_BSDIID 11 |
#define NETSNMP_OPENBSDID 12 |
#define NETSNMP_WIN32ID 13 |
#define NETSNMP_HPUX11ID 14 |
#define NETSNMP_UNKNOWNID 255 |
#ifdef hpux9 |
#define OSTYPE NETSNMP_HPUX9ID |
#endif |
#ifdef hpux10 |
#define OSTYPE NETSNMP_HPUX10ID |
#endif |
#ifdef hpux11 |
#define OSTYPE NETSNMP_HPUX11ID |
#endif |
#ifdef sunos4 |
#define OSTYPE NETSNMP_SUNOS4ID |
#endif |
#ifdef solaris2 |
#define OSTYPE NETSNMP_SOLARISID |
#endif |
#if defined(osf3) || defined(osf4) || defined(osf5) |
#define OSTYPE NETSNMP_OSFID |
#endif |
#ifdef ultrix4 |
#define OSTYPE NETSNMP_ULTRIXID |
#endif |
#ifdef netbsd1 |
#define OSTYPE NETSNMP_NETBSD1ID |
#endif |
#if defined(__FreeBSD__) |
#define OSTYPE NETSNMP_FREEBSDID |
#endif |
#if defined(irix6) || defined(irix5) |
#define OSTYPE NETSNMP_IRIXID |
#endif |
#ifdef linux |
#define OSTYPE NETSNMP_LINUXID |
#endif |
#if defined(bsdi2) || defined(bsdi3) || defined(bsdi4) |
#define OSTYPE NETSNMP_BSDIID |
#endif |
#ifdef openbsd2 |
#define OSTYPE NETSNMP_OPENBSDID |
#endif |
#ifdef WIN32 |
#define OSTYPE NETSNMP_WIN32ID |
#endif |
/* unknown */ |
#ifndef OSTYPE |
#define OSTYPE NETSNMP_UNKNOWNID |
#endif |
/* The enterprise number has been assigned by the IANA group. */ |
/* Optionally, this may point to the location in the tree your */ |
/* company/organization has been allocated. */ |
/* The assigned enterprise number for the NET_SNMP MIB modules. */ |
#define NETSNMP_ENTERPRISE_OID 8072 |
#define NETSNMP_ENTERPRISE_MIB 1,3,6,1,4,1,8072 |
#define NETSNMP_ENTERPRISE_DOT_MIB 1.3.6.1.4.1.8072 |
#define NETSNMP_ENTERPRISE_DOT_MIB_LENGTH 7 |
/* The assigned enterprise number for sysObjectID. */ |
#define NETSNMP_SYSTEM_MIB 1,3,6,1,4,1,8072,3,2,OSTYPE |
#define NETSNMP_SYSTEM_DOT_MIB 1.3.6.1.4.1.8072.3.2.OSTYPE |
#define NETSNMP_SYSTEM_DOT_MIB_LENGTH 10 |
/* The assigned enterprise number for notifications. */ |
#define NETSNMP_NOTIFICATION_MIB 1,3,6,1,4,1,8072,4 |
#define NETSNMP_NOTIFICATION_DOT_MIB 1.3.6.1.4.1.8072.4 |
#define NETSNMP_NOTIFICATION_DOT_MIB_LENGTH 8 |
/* this is the location of the ucdavis mib tree. It shouldn't be |
changed, as the places it is used are expected to be constant |
values or are directly tied to the UCD-SNMP-MIB. */ |
#define NETSNMP_UCDAVIS_OID 2021 |
#define NETSNMP_UCDAVIS_MIB 1,3,6,1,4,1,2021 |
#define NETSNMP_UCDAVIS_DOT_MIB 1.3.6.1.4.1.2021 |
#define NETSNMP_UCDAVIS_DOT_MIB_LENGTH 7 |
/* this is the location of the net-snmp mib tree. It shouldn't be |
changed, as the places it is used are expected to be constant |
values or are directly tied to the UCD-SNMP-MIB. */ |
#define NETSNMP_OID 8072 |
#define NETSNMP_MIB 1,3,6,1,4,1,8072 |
#define NETSNMP_DOT_MIB 1.3.6.1.4.1.8072 |
#define NETSNMP_DOT_MIB_LENGTH 7 |
/* how long to wait (seconds) for error querys before reseting the error trap.*/ |
#define NETSNMP_ERRORTIMELENGTH 600 |
/* Exec command to fix PROC problems */ |
/* %s will be replaced by the process name in error */ |
/* #define NETSNMP_PROCFIXCMD "/usr/bin/perl /local/scripts/fixproc %s" */ |
/* Exec command to fix EXEC problems */ |
/* %s will be replaced by the exec/script name in error */ |
/* #define NETSNMP_EXECFIXCMD "/usr/bin/perl /local/scripts/fixproc %s" */ |
/* Should exec output Cashing be used (speeds up things greatly), and |
if so, After how many seconds should the cache re-newed? Note: |
Don't define CASHETIME to disable cashing completely */ |
#define NETSNMP_EXCACHETIME 30 |
#define NETSNMP_CACHEFILE ".snmp-exec-cache" |
#define NETSNMP_MAXCACHESIZE (200*80) /* roughly 200 lines max */ |
#define MAXDISKS 50 /* can't scan more than this number */ |
/* misc defaults */ |
/* default of 100 meg minimum if the minimum size is not specified in |
the config file */ |
#define NETSNMP_DEFDISKMINIMUMSPACE 100000 |
#define NETSNMP_DEFMAXLOADAVE 12.0 /* default maximum load average before error */ |
/* Because of sleep(1)s, this will also be time to wait (in seconds) for exec |
to finish */ |
#define NETSNMP_MAXREADCOUNT 100 /* max times to loop reading output from execs. */ |
/* The original CMU code had this hardcoded as = 1 */ |
#define NETSNMP_SNMPBLOCK 1 /* Set if snmpgets should block and never timeout */ |
/* How long to wait before restarting the agent after a snmpset to |
EXTENSIBLEMIB.NETSNMP_VERSIONMIBNUM.VERRESTARTAGENT. This is |
necessary to finish the snmpset reply before restarting. */ |
#define NETSNMP_RESTARTSLEEP 5 |
/* Number of community strings to store */ |
#define NETSNMP_NUM_COMMUNITIES 5 |
/* UNdefine to allow specifying zero-length community string */ |
/* #define NETSNMP_NO_ZEROLENGTH_COMMUNITY 1 */ |
#define NETSNMP_LASTFIELD -1 /* internal define */ |
/* configure options specified */ |
#define NETSNMP_CONFIGURE_OPTIONS "" |
/* got socklen_t? */ |
#ifdef HAVE_WIN32_PLATFORM_SDK |
#define HAVE_SOCKLEN_T 1 |
#endif |
/* got in_addr_t? */ |
/* #undef HAVE_IN_ADDR_T */ |
#ifdef __MINGW32__ |
/* got ssize_t? */ |
#define HAVE_SSIZE_T |
#endif |
/* If you have openssl 0.9.7 or above, you likely have AES support. */ |
/* #undef NETSNMP_USE_OPENSSL */ |
#ifdef NETSNMP_USE_OPENSSL |
/* Define to 1 if you have the <openssl/dh.h> header file. */ |
#define HAVE_OPENSSL_DH_H 1 |
/* Define to 1 if you have the <openssl/aes.h> header file. */ |
#define HAVE_OPENSSL_AES_H 1 |
/* Define to 1 if you have the `EVP_MD_CTX_create' function. */ |
#define HAVE_EVP_MD_CTX_CREATE 1 |
/* Define to 1 if you have the `EVP_MD_CTX_destroy' function. */ |
#define HAVE_EVP_MD_CTX_DESTROY 1 |
/* Define to 1 if you have the `AES_cfb128_encrypt' function. */ |
#define HAVE_AES_CFB128_ENCRYPT 1 |
#if defined(HAVE_OPENSSL_AES_H) && defined(HAVE_AES_CFB128_ENCRYPT) |
#define HAVE_AES 1 |
#endif |
#else /* ! NETSNMP_USE_OPENSSL */ |
/* define if you are using the MD5 code ...*/ |
#define NETSNMP_USE_INTERNAL_MD5 1 |
#endif /* ! NETSNMP_USE_OPENSSL */ |
/* define random functions */ |
#ifndef HAVE_RANDOM |
#ifdef HAVE_LRAND48 |
#define random lrand48 |
#define srandom(s) srand48(s) |
#else |
#ifdef HAVE_RAND |
#define random rand |
#define srandom(s) srand(s) |
#endif |
#endif |
#endif |
/* define signal if DNE */ |
#ifndef HAVE_SIGNAL |
#ifdef HAVE_SIGSET |
#define signal(a,b) sigset(a,b) |
#endif |
#endif |
/* define if you have librpm and libdb */ |
/* #undef HAVE_LIBDB */ |
/* #undef HAVE_LIBRPM */ |
/* define if you have pkginfo */ |
/* #undef HAVE_PKGINFO */ |
/* define if you have gethostbyname */ |
#define HAVE_GETHOSTBYNAME 1 |
/* define if you have gethostbyaddr */ |
#define HAVE_GETHOSTBYADDR 1 |
/* printing system */ |
/* #undef HAVE_LPSTAT */ |
/* #undef LPSTAT_PATH */ |
/* #undef HAVE_PRINTCAP */ |
/* Pluggable transports. */ |
/* This is defined if support for the UDP/IP transport domain is |
available. */ |
#define NETSNMP_TRANSPORT_UDP_DOMAIN 1 |
/* This is defined if support for the "callback" transport domain is |
available. */ |
#define NETSNMP_TRANSPORT_CALLBACK_DOMAIN 1 |
/* This is defined if support for the TCP/IP transport domain is |
available. */ |
#define NETSNMP_TRANSPORT_TCP_DOMAIN 1 |
/* This is defined if support for the Unix transport domain |
(a.k.a. "local IPC") is available. */ |
/* #undef NETSNMP_TRANSPORT_UNIX_DOMAIN */ |
/* This is defined if support for the AAL5 PVC transport domain is |
available. */ |
/* #undef NETSNMP_TRANSPORT_AAL5PVC_DOMAIN */ |
/* This is defined if support for the IPX transport domain is |
available. */ |
/* #undef NETSNMP_TRANSPORT_IPX_DOMAIN */ |
/* XXX do not modify. change the NETSNMP_ENABLE_IPV6 define instead */ |
/* This is defined if support for the UDP/IPv6 transport domain is |
available. */ |
/* #undef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN */ |
/* XXX do not modify. change the NETSNMP_ENABLE_IPV6 define instead */ |
/* This is defined if support for the TCP/IPv6 transport domain is |
available. */ |
/* #undef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN */ |
/* This is defined if support for the TLS transport domain is |
available. */ |
/* #undef NETSNMP_TRANSPORT_TLSBASE_DOMAIN */ |
/* This is defined if support for the Alias transport domain is |
available. */ |
/* #undef NETSNMP_TRANSPORT_ALIAS_DOMAIN */ |
/* This is defined if support for the SSH transport domain is |
available. */ |
/* #undef NETSNMP_TRANSPORT_SSH_DOMAIN */ |
/* This is defined if support for the DTLS/UDP transport domain is |
available. */ |
/* #undef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN */ |
/* This is defined if support for the TLS/TCP transport domain is |
available. */ |
/* #undef NETSNMP_TRANSPORT_TLSTCP_DOMAIN */ |
/* This is defined if support for stdin/out transport domain is available. */ |
/* #undef NETSNMP_TRANSPORT_STD_DOMAIN */ |
/* This is defined if support for the IPv4Base transport domain is available. */ |
#define NETSNMP_TRANSPORT_IPV4BASE_DOMAIN 1 |
/* define this if the USM security module is available */ |
#define NETSNMP_SECMOD_USM 1 |
/* define this if the KSM (kerberos based snmp) security module is available */ |
/* #undef NETSNMP_SECMOD_KSM */ |
/* define this if we're using the new MIT crypto API */ |
/* #undef NETSNMP_USE_KERBEROS_MIT */ |
/* define if you want to build with reentrant/threaded code (incomplete)*/ |
/* #undef NETSNMP_REENTRANT */ |
/* on aix, if you have perfstat */ |
/* #undef HAVE_PERFSTAT */ |
/* Not-to-be-compiled macros for use by configure only */ |
#define config_require(x) |
#define config_version_require(x) |
#define config_warning(x) |
#define config_error(x) |
#define config_exclude(x) |
#define config_arch_require(x,y) |
#define config_parse_dot_conf(w,x,y,z) |
#define config_add_mib(x) |
#define config_belongs_in(x) |
#if defined (WIN32) |
#define ENV_SEPARATOR ";" |
#define ENV_SEPARATOR_CHAR ';' |
#else |
#define ENV_SEPARATOR ":" |
#define ENV_SEPARATOR_CHAR ':' |
#endif |
/* |
* this must be before the system/machine includes, to allow them to |
* override and turn off inlining. To do so, they should do the |
* following: |
* |
* #undef NETSNMP_ENABLE_INLINE |
* #define NETSNMP_ENABLE_INLINE 0 |
* |
* A user having problems with their compiler can also turn off |
* the use of inline by defining NETSNMP_NO_INLINE via their cflags: |
* |
* -DNETSNMP_NO_INLINE |
* |
* Header and source files should only test against NETSNMP_USE_INLINE: |
* |
* #ifdef NETSNMP_USE_INLINE |
* NETSNMP_INLINE function(int parm) { return parm -1; } |
* #endif |
* |
* Functions which should be static, regardless of whether or not inline |
* is available or enabled should use the NETSNMP_STATIC_INLINE macro, |
* like so: |
* |
* NETSNMP_STATIC_INLINE function(int parm) { return parm -1; } |
* |
* NOT like this: |
* |
* static NETSNMP_INLINE function(int parm) { return parm -1; } |
* |
*/ |
/* |
* Win32 needs extern for inline function declarations in headers. |
* See MS tech note Q123768: |
* http://support.microsoft.com/default.aspx?scid=kb;EN-US;123768 |
*/ |
#define NETSNMP_INLINE extern inline |
#define NETSNMP_STATIC_INLINE static inline |
#define NETSNMP_ENABLE_INLINE 1 |
#if notused |
#include NETSNMP_SYSTEM_INCLUDE_FILE |
#include NETSNMP_MACHINE_INCLUDE_FILE |
#endif |
#if NETSNMP_ENABLE_INLINE && !defined(NETSNMP_NO_INLINE) |
# define NETSNMP_USE_INLINE 1 |
#else |
# undef NETSNMP_INLINE |
# define NETSNMP_INLINE |
# undef NETSNMP_STATIC_INLINE |
# define NETSNMP_STATIC_INLINE static |
#endif |
#ifdef WIN32 |
#ifndef __MINGW32__ |
typedef unsigned short mode_t; |
#endif |
#ifndef HAVE_STDINT_H |
typedef unsigned char uint8_t; |
typedef signed char int8_t; |
typedef unsigned __int16 uint16_t; |
typedef __int16 int16_t; |
typedef unsigned __int32 uint32_t; |
typedef __int32 int32_t; |
typedef unsigned __int64 uint64_t; |
typedef __int64 int64_t; |
typedef unsigned __int64 uintmax_t; |
typedef __int64 intmax_t; |
#else /* HAVE_STDINT_H */ |
#include <stdint.h> |
#endif /* HAVE_STDINT_H */ |
/* (u)intptr_t should only be needed for MSVC 6 32-bit. */ |
/* SDK has it for 64-bit and newer MSVC should also have it in stddef.h. */ |
#ifndef _INTPTR_T_DEFINED |
#ifdef _M_X64 |
typedef __int64 intptr_t; |
#else |
typedef int intptr_t; |
#endif |
#define _INTPTR_T_DEFINED |
#endif |
#ifndef _UINTPTR_T_DEFINED |
#ifdef _M_X64 |
typedef unsigned __int64 uintptr_t; |
#else |
typedef unsigned int uintptr_t; |
#endif |
#define _UINTPTR_T_DEFINED |
#endif |
#ifndef __cplusplus |
#ifdef _MSC_VER |
#pragma warning(push) |
#pragma warning(disable: 4804) // '-' : unsafe use of type 'bool' in operation |
#endif |
/* SAMO |
enum { |
netsnmp_compile_time_uintptr_t_size_check |
= sizeof(struct netsnmp_compile_time_uintptr_t_size_check_s { int:-!(sizeof(uintptr_t) == sizeof(void*)); }) |
}; |
*/ |
#ifdef _MSC_VER |
#pragma warning(pop) |
#endif |
#endif |
/* Define if you have the closesocket function. */ |
#define HAVE_CLOSESOCKET 1 |
/* Define if you have raise() instead of alarm() */ |
#define HAVE_RAISE 1 |
/* define to 1 if you do not want to set global snmp_errno */ |
#define DONT_SHARE_ERROR_WITH_OTHER_THREADS 1 |
/* Defining vsnprintf is not necessary for MSVC 2008 or later */ |
#if defined(_MSC_VER) && _MSC_VER < 1500 |
#define vsnprintf _vsnprintf |
#endif |
#ifdef _MSC_VER |
#define snprintf _snprintf |
#endif |
#if defined(_MSC_VER) && _MSC_VER < 1600 |
#define EADDRINUSE WSAEADDRINUSE |
#endif |
/* Define NETSNMP_USE_DLL when building or using netsnmp.DLL */ |
#define NETSNMP_USE_DLL 1 |
#if defined(NETSNMP_DLL) && !defined(NETSNMP_USE_DLL) |
#error NETSNMP_USE_DLL must be defined when building libsnmp as a DLL. |
#endif |
/* |
* DLL decoration, if used at all, must be consistent. |
* This is why NETSNMP_IMPORT is really an export decoration |
* when it is encountered in a header file that is included |
* during the compilation of a library source file. |
* NETSNMP_DLL is set by the MSVC libsnmp_dll project |
* in order to signal that the library sources are being compiled. |
* Not defining NETSNMP_USE_DLL ignores the preceding, and renders |
* the NETSNMP_IMPORT definitions harmless. |
*/ |
#ifdef NETSNMP_USE_DLL |
#ifdef NETSNMP_DLL |
#if defined(_MSC_VER) |
#define NETSNMP_IMPORT __declspec(dllexport) |
#endif |
#else |
#if defined(_MSC_VER) |
#define NETSNMP_IMPORT __declspec(dllimport) |
#endif |
#endif /* NETSNMP_DLL */ |
#endif /* NETSNMP_USE_DLL */ |
/* MSVC OpenSSL linker settings. */ |
#if defined(_MSC_VER) |
# if defined(NETSNMP_USE_OPENSSL) |
# ifdef _DLL |
# ifdef _DEBUG |
# pragma comment(lib, "libeay32MDd.lib") |
# else |
# pragma comment(lib, "libeay32MD.lib") |
# endif |
# else |
# ifdef _DEBUG |
# pragma comment(lib, "libeay32MTd.lib") |
# else |
# pragma comment(lib, "libeay32MT.lib") |
# endif |
# endif |
# pragma comment(lib, "gdi32.lib") |
# pragma comment(lib, "user32.lib") |
# endif |
#endif |
#endif /* WIN32 */ |
#ifndef NETSNMP_IMPORT |
# define NETSNMP_IMPORT extern |
#endif |
#if defined(HAVE_NLIST) && defined(HAVE_STRUCT_NLIST_N_VALUE) && !defined(DONT_USE_NLIST) && !defined(NETSNMP_NO_KMEM_USAGE) |
#define NETSNMP_CAN_USE_NLIST |
#endif |
#if HAVE_DMALLOC_H |
#define DMALLOC_FUNC_CHECK |
#endif |
/* #undef NETSNMP_ENABLE_LOCAL_SMUX */ |
/* define if agentx transport is to use domain sockets only */ |
/* #undef NETSNMP_AGENTX_DOM_SOCK_ONLY */ |
#ifndef LOG_DAEMON |
#define LOG_DAEMON (3<<3) /* system daemons */ |
#endif |
#if UCD_COMPATIBLE |
/* old and in the way */ |
#define EXTENSIBLEMIB NETSNMP_UCDAVIS_MIB |
#endif |
#ifdef _MSC_VER |
/* Windows Vista and higher have inet_ntop but older Windows does not. |
* We'll use the Net-SNMP version instead. */ |
#undef HAVE_INET_NTOP |
#undef HAVE_INET_PTON |
/* IPv6 transports */ |
#ifdef NETSNMP_ENABLE_IPV6 |
#define NETSNMP_TRANSPORT_TCPIPV6_DOMAIN 1 |
#define NETSNMP_TRANSPORT_UDPIPV6_DOMAIN 1 |
#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1 |
#else |
#undef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN |
#undef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN |
#endif |
#endif |
/* |
* Although if_nametoindex() is available on Windows Vista, Windows Server |
* 2008 and later in iphlpapi.dll, do not link with if_nametoindex() such |
* that the Net-SNMP executable can be started on earlier Windows versions. |
*/ |
#undef HAVE_IF_NAMETOINDEX |
#ifndef NI_MAXHOST |
#define NI_MAXHOST 1025 |
#endif |
/* Define to 1 if you have the `strtoull' function. */ |
#if _MSC_VER >= 1800 |
#define HAVE_STRTOULL |
#else |
/* #undef HAVE_STRTOULL */ |
#endif |
/* |
* Module configuration and control starts here. |
* |
* Some of the defines herein are used to control |
* groups of modules. The ones that have "CFG" |
* are used especially to control the include files |
* seen in {agent,mib}_module_includes.h, and the init entries |
* which are invoked in {agent,mib}_module_inits.h. |
* |
* To disable a group, uncomment the associated define. |
*/ |
/* CFG Define if compiling with the ucd_snmp module files. */ |
#define USING_UCD_SNMP_MODULE 1 |
/* CFG Define if compiling with the agentx module files. */ |
#define USING_AGENTX_MODULE 1 |
/* CFG Define if compiling with the host module files. */ |
/* #undef USING_HOST_MODULE */ |
/* CFG Define if compiling with the Rmon module files. */ |
/* #undef USING_RMON_MODULE */ |
/* CFG Define if compiling with the disman/event-mib module files. */ |
#define USING_DISMAN_EVENT_MIB_MODULE 1 |
/* CFG Define if compiling with the smux module files. */ |
/* #undef USING_SMUX_MODULE */ |
/* Define if compiling with the winExtDLL module. */ |
#define USING_WINEXTDLL_MODULE 1 |
/* |
* Module configuration and control ends here. |
*/ |
#define UDP_ADDRESSES_IN_HOST_ORDER 1 |
/* Timeout in milliseconds for Win32 function WaitForSingleObject. |
Used by agent pass. */ |
#define NETSNMP_TIMEOUT_WAITFORSINGLEOBJECT 5000 |
#ifdef HAVE_WIN32_PLATFORM_SDK |
#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1 |
#endif |
/* Size prefix to use to printf a uint32_t */ |
#define NETSNMP_PRI32 "" |
#ifdef _MSC_VER |
#ifdef _WIN64 |
#define NETSNMP_PRIz "I64" |
#else |
#define NETSNMP_PRIz "" |
#endif |
#endif |
#endif /* NET_SNMP_CONFIG_H */ |