1
0
mirror of https://github.com/netdata-be/libnodave synced 2025-10-20 00:52:46 +08:00
libnodave/PERL/lib/Nodave.pm
2012-06-01 10:15:12 +02:00

433 lines
8.5 KiB
Perl
Executable File

#
# Part of Libnodave, a free communication libray for Siemens S7 200/300/400 via
# the MPI adapter 6ES7 972-0CA22-0XAC
# or MPI adapter 6ES7 972-0CA23-0XAC
# or TS adapter 6ES7 972-0CA33-0XAC
# or MPI adapter 6ES7 972-0CA11-0XAC,
# IBH/MHJ-NetLink or CPs 243, 343 and 443
#
# (C) Thomas Hergenhahn (thomas.hergenhahn@web.de) 2002..2005
#
# Libnodave is free software; you can redistribute it and/or modify
# it under the terms of the GNU Library General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# Libnodave is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with Libnodave; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#
package Nodave;
use 5.008004;
use strict;
use warnings;
use Carp;
require Exporter;
use AutoLoader;
our @ISA = qw(Exporter);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
# This allows declaration use Nodave ':all';
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
# will save memory.
our %EXPORT_TAGS = ( 'all' => [ qw(
DLE
ETX
NAK
STX
SYN
_davePtEmpty
_davePtMPIAck
_davePtReadResponse
_davePtUnknownMPIFunc
_davePtUnknownPDUFunc
_davePtWriteResponse
daveAddressOutOfRange
daveAnaIn
daveAnaOut
daveBlockType_DB
daveBlockType_FB
daveBlockType_FC
daveBlockType_OB
daveBlockType_SDB
daveBlockType_SFB
daveBlockType_SFC
daveCounter
daveCounter200
daveDB
daveDI
daveDebugAll
daveDebugByte
daveDebugCompare
daveDebugConnect
daveDebugErrorReporting
daveDebugExchange
daveDebugInitAdapter
daveDebugListReachables
daveDebugMPI
daveDebugPDU
daveDebugPacket
daveDebugPassive
daveDebugPrintErrors
daveDebugRawRead
daveDebugRawWrite
daveDebugSpecialChars
daveDebugUpload
daveEmptyResultError
daveEmptyResultSetError
daveFlags
daveFuncDownloadBlock
daveFuncDownloadEnded
daveFuncEndUpload
daveFuncInsertBlock
daveFuncOpenS7Connection
daveFuncRead
daveFuncRequestDownload
daveFuncStartUpload
daveFuncUpload
daveFuncWrite
daveInputs
daveLocal
daveMPIReachable
daveMPIunused
daveMaxRawLen
daveOrderCodeSize
daveOutputs
daveP
davePartnerListSize
daveProtoISOTCP
daveProtoISOTCP243
daveProtoMPI
daveProtoMPI2
daveProtoMPI3
daveProtoMPI_IBH
daveProtoPPI
daveProtoPPI_IBH
daveProtoUserTransport
daveResCPUNoData
daveResCannotEvaluatePDU
daveResItemNotAvailable
daveResItemNotAvailable200
daveResMultipleBitsNotSupported
daveResNoPeripheralAtAddress
daveResOK
daveResShortPacket
daveResTimeout
daveResUnexpectedFunc
daveResUnknownDataUnitSize
daveSpeed1500k
daveSpeed187k
daveSpeed19k
daveSpeed45k
daveSpeed500k
daveSpeed93k
daveSpeed9k
daveSysFlags
daveSysInfo
daveTimer
daveTimer200
daveUnknownError
daveV
daveWriteDataSizeMismatch
) ] );
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw(
DLE
ETX
NAK
STX
SYN
_davePtEmpty
_davePtMPIAck
_davePtReadResponse
_davePtUnknownMPIFunc
_davePtUnknownPDUFunc
_davePtWriteResponse
daveAddressOutOfRange
daveAnaIn
daveAnaOut
daveBlockType_DB
daveBlockType_FB
daveBlockType_FC
daveBlockType_OB
daveBlockType_SDB
daveBlockType_SFB
daveBlockType_SFC
daveCounter
daveCounter200
daveDB
daveDI
daveDebugAll
daveDebugByte
daveDebugCompare
daveDebugConnect
daveDebugErrorReporting
daveDebugExchange
daveDebugInitAdapter
daveDebugListReachables
daveDebugMPI
daveDebugPDU
daveDebugPacket
daveDebugPassive
daveDebugPrintErrors
daveDebugRawRead
daveDebugRawWrite
daveDebugSpecialChars
daveDebugUpload
daveEmptyResultError
daveEmptyResultSetError
daveFlags
daveFuncDownloadBlock
daveFuncDownloadEnded
daveFuncEndUpload
daveFuncInsertBlock
daveFuncOpenS7Connection
daveFuncRead
daveFuncRequestDownload
daveFuncStartUpload
daveFuncUpload
daveFuncWrite
daveInputs
daveLocal
daveMPIReachable
daveMPIunused
daveMaxRawLen
daveOrderCodeSize
daveOutputs
daveP
davePartnerListSize
daveProtoISOTCP
daveProtoISOTCP243
daveProtoMPI
daveProtoMPI2
daveProtoMPI3
daveProtoMPI_IBH
daveProtoPPI
daveProtoPPI_IBH
daveProtoUserTransport
daveResCPUNoData
daveResCannotEvaluatePDU
daveResItemNotAvailable
daveResItemNotAvailable200
daveResMultipleBitsNotSupported
daveResNoPeripheralAtAddress
daveResOK
daveResShortPacket
daveResTimeout
daveResUnexpectedFunc
daveResUnknownDataUnitSize
daveSpeed1500k
daveSpeed187k
daveSpeed19k
daveSpeed45k
daveSpeed500k
daveSpeed93k
daveSpeed9k
daveSysFlags
daveSysInfo
daveTimer
daveTimer200
daveUnknownError
daveV
daveWriteDataSizeMismatch
);
our $VERSION = '0.02';
sub AUTOLOAD {
# This AUTOLOAD is used to 'autoload' constants from the constant()
# XS function.
my $constname;
our $AUTOLOAD;
($constname = $AUTOLOAD) =~ s/.*:://;
croak "&Nodave::constant not defined" if $constname eq 'constant';
my ($error, $val) = constant($constname);
if ($error) { croak $error; }
{
no strict 'refs';
# Fixed between 5.005_53 and 5.005_61
#XXX if ($] >= 5.00561) {
#XXX *$AUTOLOAD = sub () { $val };
#XXX }
#XXX else {
*$AUTOLOAD = sub { $val };
#XXX }
}
goto &$AUTOLOAD;
}
require XSLoader;
XSLoader::load('Nodave', $VERSION);
# Preloaded methods go here.
# Autoload methods go after =cut, and are processed by the autosplit program.
1;
__END__
# Below is stub documentation for your module. You'd better edit it!
=head1 NAME
Nodave - Perl extension for Communication with Siemens PLCs.
=head1 SYNOPSIS
use Nodave;
blah blah blah
=head1 DESCRIPTION
Stub documentation for Nodave, created by h2xs. It looks like the
author of the extension was negligent enough to leave the stub
unedited.
Blah blah blah.
=head2 EXPORT
None by default.
=head2 Exportable constants
DLE
ETX
NAK
STX
SYN
_davePtEmpty
_davePtMPIAck
_davePtReadResponse
_davePtUnknownMPIFunc
_davePtUnknownPDUFunc
_davePtWriteResponse
daveAddressOutOfRange
daveAnaIn
daveAnaOut
daveBlockType_DB
daveBlockType_FB
daveBlockType_FC
daveBlockType_OB
daveBlockType_SDB
daveBlockType_SFB
daveBlockType_SFC
daveCounter
daveCounter200
daveDB
daveDI
daveDebugAll
daveDebugByte
daveDebugCompare
daveDebugConnect
daveDebugErrorReporting
daveDebugExchange
daveDebugInitAdapter
daveDebugListReachables
daveDebugMPI
daveDebugPDU
daveDebugPacket
daveDebugPassive
daveDebugPrintErrors
daveDebugRawRead
daveDebugRawWrite
daveDebugSpecialChars
daveDebugUpload
daveEmptyResultError
daveEmptyResultSetError
daveFlags
daveFuncDownloadBlock
daveFuncDownloadEnded
daveFuncEndUpload
daveFuncInsertBlock
daveFuncOpenS7Connection
daveFuncRead
daveFuncRequestDownload
daveFuncStartUpload
daveFuncUpload
daveFuncWrite
daveInputs
daveLocal
daveMPIReachable
daveMPIunused
daveMaxRawLen
daveOrderCodeSize
daveOutputs
daveP
davePartnerListSize
daveProtoISOTCP
daveProtoISOTCP243
daveProtoMPI
daveProtoMPI2
daveProtoMPI3
daveProtoMPI_IBH
daveProtoPPI
daveProtoPPI_IBH
daveProtoUserTransport
daveResCPUNoData
daveResCannotEvaluatePDU
daveResItemNotAvailable
daveResItemNotAvailable200
daveResMultipleBitsNotSupported
daveResNoPeripheralAtAddress
daveResOK
daveResShortPacket
daveResTimeout
daveResUnexpectedFunc
daveResUnknownDataUnitSize
daveSpeed1500k
daveSpeed187k
daveSpeed19k
daveSpeed45k
daveSpeed500k
daveSpeed93k
daveSpeed9k
daveSysFlags
daveSysInfo
daveTimer
daveTimer200
daveUnknownError
daveV
daveWriteDataSizeMismatch
=head1 SEE ALSO
Mention other useful documentation such as the documentation of
related modules or operating system documentation (such as man pages
in UNIX), or any relevant external documentation such as RFCs or
standards.
If you have a mailing list set up for your module, mention it here.
If you have a web site set up for your module, mention it here.
=head1 AUTHOR
Thomas Hergenhahn, E<lt>thomas@E<gt>
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2005 by Thomas Hergenhahn
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.4 or,
at your option, any later version of Perl 5 you may have available.
=cut