OpenCores
URL https://opencores.org/ocsvn/etherlab/etherlab/trunk

Subversion Repositories etherlab

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 1 to Rev 2
    Reverse comparison

Rev 1 → Rev 2

/etherlab/trunk/net/EtherSocket/EtherSocket.csproj
0,0 → 1,131
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EtherLab</RootNamespace>
<AssemblyName>EtherSocket</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ApplicationManifest>Properties\ethesocket.manifest</ApplicationManifest>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>
</DocumentationFile>
<RegisterForComInterop>true</RegisterForComInterop>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>
</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>
</DocumentationFile>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<RegisterForComInterop>true</RegisterForComInterop>
</PropertyGroup>
<ItemGroup>
<Reference Include="PcapDotNet.Base">
<HintPath>..\Pcap.Net.DevelopersPack.0.6.0.44468\Pcap.Net.DevelopersPack.0.6.0.44468.x86\3rdParty\PcapDotNet\PcapDotNet.Base.dll</HintPath>
</Reference>
<Reference Include="PcapDotNet.Core, Version=0.8.0.40542, Culture=neutral, PublicKeyToken=4b6f3e583145a652, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Pcap.Net.DevelopersPack.0.6.0.44468\Pcap.Net.DevelopersPack.0.6.0.44468.x86\3rdParty\PcapDotNet\PcapDotNet.Core.dll</HintPath>
</Reference>
<Reference Include="PcapDotNet.Packets, Version=0.8.0.40527, Culture=neutral, PublicKeyToken=4b6f3e583145a652, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Pcap.Net.DevelopersPack.0.6.0.44468\Pcap.Net.DevelopersPack.0.6.0.44468.x86\3rdParty\PcapDotNet\PcapDotNet.Packets.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="src\etherlab\EChannel.cs" />
<Compile Include="src\etherlab\EtherLabDatagram.cs" />
<Compile Include="src\etherlab\EtherLabLayer.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="src\EtherSocket.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Properties\ethesocket.manifest" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 %28x86 und x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
/etherlab/trunk/net/EtherSocket/doc/Doxyfile
0,0 → 1,1826
# Doxyfile 1.8.1.2
 
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
#
# All text after a hash (#) is considered a comment and will be ignored
# The format is:
# TAG = value [value, ...]
# For lists items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (" ")
 
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
 
# This tag specifies the encoding used for all characters in the config file
# that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
# http://www.gnu.org/software/libiconv for the list of possible encodings.
 
DOXYFILE_ENCODING = UTF-8
 
# The PROJECT_NAME tag is a single word (or sequence of words) that should
# identify the project. Note that if you do not use Doxywizard you need
# to put quotes around the project name if it contains spaces.
 
PROJECT_NAME = EtherSocket
 
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
# if some version control system is used.
 
PROJECT_NUMBER = 1.0.0.0
 
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer
# a quick idea about the purpose of the project. Keep the description short.
 
PROJECT_BRIEF = "Spartan-3E StarterKit To C# Bridge"
 
# With the PROJECT_LOGO tag one can specify an logo or icon that is
# included in the documentation. The maximum height of the logo should not
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
# Doxygen will copy the logo to the output directory.
 
PROJECT_LOGO =
 
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
 
OUTPUT_DIRECTORY = C:/Mathias/smole/etherlab/net/EtherSocket/doc
 
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
# format and will distribute the generated files over these directories.
# Enabling this option can be useful when feeding doxygen a huge amount of
# source files, where putting all generated files in the same directory would
# otherwise cause performance problems for the file system.
 
CREATE_SUBDIRS = NO
 
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
 
OUTPUT_LANGUAGE = English
 
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
# include brief member descriptions after the members that are listed in
# the file and class documentation (similar to JavaDoc).
# Set to NO to disable this.
 
BRIEF_MEMBER_DESC = YES
 
# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
# the brief description of a member or function before the detailed description.
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
 
REPEAT_BRIEF = YES
 
# This tag implements a quasi-intelligent brief description abbreviator
# that is used to form the text in various listings. Each string
# in this list, if found as the leading text of the brief description, will be
# stripped from the text and the result after processing the whole list, is
# used as the annotated text. Otherwise, the brief description is used as-is.
# If left blank, the following values are used ("$name" is automatically
# replaced with the name of the entity): "The $name class" "The $name widget"
# "The $name file" "is" "provides" "specifies" "contains"
# "represents" "a" "an" "the"
 
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
 
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# Doxygen will generate a detailed section even if there is only a brief
# description.
 
ALWAYS_DETAILED_SEC = NO
 
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
 
INLINE_INHERITED_MEMB = NO
 
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
 
FULL_PATH_NAMES = YES
 
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
# only done if one of the specified strings matches the left-hand part of
# the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the
# path to strip.
 
STRIP_FROM_PATH =
 
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
# the reader which header file to include in order to use a class.
# If left blank only the name of the header file containing the class
# definition is used. Otherwise one should specify the include paths that
# are normally passed to the compiler using the -I flag.
 
STRIP_FROM_INC_PATH =
 
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful if your file system
# doesn't support long names like on DOS, Mac, or CD-ROM.
 
SHORT_NAMES = NO
 
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
# will interpret the first line (until the first dot) of a JavaDoc-style
# comment as the brief description. If set to NO, the JavaDoc
# comments will behave just like regular Qt-style comments
# (thus requiring an explicit @brief command for a brief description.)
 
JAVADOC_AUTOBRIEF = NO
 
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
# interpret the first line (until the first dot) of a Qt-style
# comment as the brief description. If set to NO, the comments
# will behave just like regular Qt-style comments (thus requiring
# an explicit \brief command for a brief description.)
 
QT_AUTOBRIEF = NO
 
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
# treat a multi-line C++ special comment block (i.e. a block of //! or ///
# comments) as a brief description. This used to be the default behaviour.
# The new default is to treat a multi-line C++ comment block as a detailed
# description. Set this tag to YES if you prefer the old behaviour instead.
 
MULTILINE_CPP_IS_BRIEF = NO
 
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# re-implements.
 
INHERIT_DOCS = YES
 
# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
# a new page for each member. If set to NO, the documentation of a member will
# be part of the file/class/namespace that contains it.
 
SEPARATE_MEMBER_PAGES = NO
 
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
# Doxygen uses this value to replace tabs by spaces in code fragments.
 
TAB_SIZE = 8
 
# This tag can be used to specify a number of aliases that acts
# as commands in the documentation. An alias has the form "name=value".
# For example adding "sideeffect=\par Side Effects:\n" will allow you to
# put the command \sideeffect (or @sideeffect) in the documentation, which
# will result in a user-defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
 
ALIASES =
 
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding
# "class=itcl::class" will allow you to use the command class in the
# itcl::class meaning.
 
TCL_SUBST =
 
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C.
# For instance, some of the names that are used will be different. The list
# of all members will be omitted, etc.
 
OPTIMIZE_OUTPUT_FOR_C = NO
 
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
# sources only. Doxygen will then generate output that is more tailored for
# Java. For instance, namespaces will be presented as packages, qualified
# scopes will look different, etc.
 
OPTIMIZE_OUTPUT_JAVA = YES
 
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources only. Doxygen will then generate output that is more tailored for
# Fortran.
 
OPTIMIZE_FOR_FORTRAN = NO
 
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for
# VHDL.
 
OPTIMIZE_OUTPUT_VHDL = NO
 
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this
# tag. The format is ext=language, where ext is a file extension, and language
# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
 
EXTENSION_MAPPING =
 
# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
# comments according to the Markdown format, which allows for more readable
# documentation. See http://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you
# can mix doxygen, HTML, and XML commands with Markdown formatting.
# Disable only in case of backward compatibilities issues.
 
MARKDOWN_SUPPORT = YES
 
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
# func(std::string) {}). This also makes the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
 
BUILTIN_STL_SUPPORT = NO
 
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
 
CPP_CLI_SUPPORT = NO
 
# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
# Doxygen will parse them like normal C++ but will assume all classes use public
# instead of private inheritance when no explicit protection keyword is present.
 
SIP_SUPPORT = NO
 
# For Microsoft's IDL there are propget and propput attributes to indicate getter
# and setter methods for a property. Setting this option to YES (the default)
# will make doxygen replace the get and set methods by a property in the
# documentation. This will only work if the methods are indeed getting or
# setting a simple type. If this is not the case, or you want to show the
# methods anyway, you should set this option to NO.
 
IDL_PROPERTY_SUPPORT = YES
 
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES, then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
 
DISTRIBUTE_GROUP_DOC = NO
 
# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
# the same type (for instance a group of public functions) to be put as a
# subgroup of that type (e.g. under the Public Functions section). Set it to
# NO to prevent subgrouping. Alternatively, this can be done per class using
# the \nosubgrouping command.
 
SUBGROUPING = YES
 
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
# unions are shown inside the group in which they are included (e.g. using
# @ingroup) instead of on a separate page (for HTML and Man pages) or
# section (for LaTeX and RTF).
 
INLINE_GROUPED_CLASSES = NO
 
# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
# unions with only public data fields will be shown inline in the documentation
# of the scope in which they are defined (i.e. file, namespace, or group
# documentation), provided this scope is documented. If set to NO (the default),
# structs, classes, and unions are shown on a separate page (for HTML and Man
# pages) or section (for LaTeX and RTF).
 
INLINE_SIMPLE_STRUCTS = NO
 
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
# is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
# with name TypeT. When disabled the typedef will appear as a member of a file,
# namespace, or class. And the struct will be named TypeS. This can typically
# be useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
 
TYPEDEF_HIDES_STRUCT = NO
 
# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
# determine which symbols to keep in memory and which to flush to disk.
# When the cache is full, less often used symbols will be written to disk.
# For small to medium size projects (<1000 input files) the default value is
# probably good enough. For larger projects a too small cache size can cause
# doxygen to be busy swapping symbols to and from disk most of the time
# causing a significant performance penalty.
# If the system has enough physical memory increasing the cache will improve the
# performance by keeping more symbols in memory. Note that the value works on
# a logarithmic scale so increasing the size by one will roughly double the
# memory usage. The cache size is given by this formula:
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.
 
SYMBOL_CACHE_SIZE = 0
 
# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
# their name and scope. Since this can be an expensive process and often the
# same symbol appear multiple times in the code, doxygen keeps a cache of
# pre-resolved symbols. If the cache is too small doxygen will become slower.
# If the cache is too large, memory is wasted. The cache size is given by this
# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.
 
LOOKUP_CACHE_SIZE = 0
 
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
 
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
 
EXTRACT_ALL = YES
 
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
 
EXTRACT_PRIVATE = NO
 
# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
# scope will be included in the documentation.
 
EXTRACT_PACKAGE = NO
 
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
 
EXTRACT_STATIC = NO
 
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
# If set to NO only classes defined in header files are included.
 
EXTRACT_LOCAL_CLASSES = YES
 
# This flag is only useful for Objective-C code. When set to YES local
# methods, which are defined in the implementation section but not in
# the interface are included in the documentation.
# If set to NO (the default) only methods in the interface are included.
 
EXTRACT_LOCAL_METHODS = NO
 
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base
# name of the file that contains the anonymous namespace. By default
# anonymous namespaces are hidden.
 
EXTRACT_ANON_NSPACES = NO
 
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
# various overviews, but no documentation section is generated.
# This option has no effect if EXTRACT_ALL is enabled.
 
HIDE_UNDOC_MEMBERS = NO
 
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy.
# If set to NO (the default) these classes will be included in the various
# overviews. This option has no effect if EXTRACT_ALL is enabled.
 
HIDE_UNDOC_CLASSES = NO
 
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
# friend (class|struct|union) declarations.
# If set to NO (the default) these declarations will be included in the
# documentation.
 
HIDE_FRIEND_COMPOUNDS = NO
 
# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
# documentation blocks found inside the body of a function.
# If set to NO (the default) these blocks will be appended to the
# function's detailed documentation block.
 
HIDE_IN_BODY_DOCS = NO
 
# The INTERNAL_DOCS tag determines if documentation
# that is typed after a \internal command is included. If the tag is set
# to NO (the default) then the documentation will be excluded.
# Set it to YES to include the internal documentation.
 
INTERNAL_DOCS = NO
 
# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
# file names in lower-case letters. If set to YES upper-case letters are also
# allowed. This is useful if you have classes or files whose names only differ
# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
 
CASE_SENSE_NAMES = NO
 
# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
# will show members with their full class and namespace scopes in the
# documentation. If set to YES the scope will be hidden.
 
HIDE_SCOPE_NAMES = NO
 
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
# will put a list of the files that are included by a file in the documentation
# of that file.
 
SHOW_INCLUDE_FILES = YES
 
# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
# will list include files with double quotes in the documentation
# rather than with sharp brackets.
 
FORCE_LOCAL_INCLUDES = NO
 
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
# is inserted in the documentation for inline members.
 
INLINE_INFO = YES
 
# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
# will sort the (detailed) documentation of file and class members
# alphabetically by member name. If set to NO the members will appear in
# declaration order.
 
SORT_MEMBER_DOCS = YES
 
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
# brief documentation of file, namespace and class members alphabetically
# by member name. If set to NO (the default) the members will appear in
# declaration order.
 
SORT_BRIEF_DOCS = NO
 
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
# will sort the (brief and detailed) documentation of class members so that
# constructors and destructors are listed first. If set to NO (the default)
# the constructors will appear in the respective orders defined by
# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
 
SORT_MEMBERS_CTORS_1ST = NO
 
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
# hierarchy of group names into alphabetical order. If set to NO (the default)
# the group names will appear in their defined order.
 
SORT_GROUP_NAMES = NO
 
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
# sorted by fully-qualified names, including namespaces. If set to
# NO (the default), the class list will be sorted only by class name,
# not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the
# alphabetical list.
 
SORT_BY_SCOPE_NAME = NO
 
# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
# do proper type resolution of all parameters of a function it will reject a
# match between the prototype and the implementation of a member function even
# if there is only one candidate or it is obvious which candidate to choose
# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
# will still accept a match between prototype and implementation in such cases.
 
STRICT_PROTO_MATCHING = NO
 
# The GENERATE_TODOLIST tag can be used to enable (YES) or
# disable (NO) the todo list. This list is created by putting \todo
# commands in the documentation.
 
GENERATE_TODOLIST = YES
 
# The GENERATE_TESTLIST tag can be used to enable (YES) or
# disable (NO) the test list. This list is created by putting \test
# commands in the documentation.
 
GENERATE_TESTLIST = YES
 
# The GENERATE_BUGLIST tag can be used to enable (YES) or
# disable (NO) the bug list. This list is created by putting \bug
# commands in the documentation.
 
GENERATE_BUGLIST = YES
 
# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
# disable (NO) the deprecated list. This list is created by putting
# \deprecated commands in the documentation.
 
GENERATE_DEPRECATEDLIST= YES
 
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
 
ENABLED_SECTIONS =
 
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or macro consists of for it to appear in
# the documentation. If the initializer consists of more lines than specified
# here it will be hidden. Use a value of 0 to hide initializers completely.
# The appearance of the initializer of individual variables and macros in the
# documentation can be controlled using \showinitializer or \hideinitializer
# command in the documentation regardless of this setting.
 
MAX_INITIALIZER_LINES = 30
 
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
# at the bottom of the documentation of classes and structs. If set to YES the
# list will mention the files that were used to generate the documentation.
 
SHOW_USED_FILES = YES
 
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES.
 
SHOW_FILES = YES
 
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
# Namespaces page. This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES.
 
SHOW_NAMESPACES = YES
 
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
# popen()) the command <command> <input-file>, where <command> is the value of
# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
# provided by doxygen. Whatever the program writes to standard output
# is used as the file version. See the manual for examples.
 
FILE_VERSION_FILTER =
 
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option.
# You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file.
 
LAYOUT_FILE =
 
# The CITE_BIB_FILES tag can be used to specify one or more bib files
# containing the references data. This must be a list of .bib files. The
# .bib extension is automatically appended if omitted. Using this command
# requires the bibtex tool to be installed. See also
# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
# feature you need bibtex and perl available in the search path.
 
CITE_BIB_FILES =
 
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
 
# The QUIET tag can be used to turn on/off the messages that are generated
# by doxygen. Possible values are YES and NO. If left blank NO is used.
 
QUIET = NO
 
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated by doxygen. Possible values are YES and NO. If left blank
# NO is used.
 
WARNINGS = YES
 
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
# automatically be disabled.
 
WARN_IF_UNDOCUMENTED = YES
 
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some
# parameters in a documented function, or documenting parameters that
# don't exist or using markup commands wrongly.
 
WARN_IF_DOC_ERROR = YES
 
# The WARN_NO_PARAMDOC option can be enabled to get warnings for
# functions that are documented, but have no documentation for their parameters
# or return value. If set to NO (the default) doxygen will only warn about
# wrong or incomplete parameter documentation, but not about the absence of
# documentation.
 
WARN_NO_PARAMDOC = NO
 
# The WARN_FORMAT tag determines the format of the warning messages that
# doxygen can produce. The string should contain the $file, $line, and $text
# tags, which will be replaced by the file and line number from which the
# warning originated and the warning text. Optionally the format may contain
# $version, which will be replaced by the version of the file (if it could
# be obtained via FILE_VERSION_FILTER)
 
WARN_FORMAT = "$file:$line: $text"
 
# The WARN_LOGFILE tag can be used to specify a file to which warning
# and error messages should be written. If left blank the output is written
# to stderr.
 
WARN_LOGFILE =
 
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
 
# The INPUT tag can be used to specify the files and/or directories that contain
# documented source files. You may enter file names like "myfile.cpp" or
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
 
INPUT = C:/Mathias/smole/etherlab/net/EtherSocket/src
 
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
# also the default input encoding. Doxygen uses libiconv (or the iconv built
# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
# the list of possible encodings.
 
INPUT_ENCODING = UTF-8
 
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank the following patterns are tested:
# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
# *.f90 *.f *.for *.vhd *.vhdl
 
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.d \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.idl \
*.odl \
*.cs \
*.php \
*.php3 \
*.inc \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.py \
*.f90 \
*.f \
*.for \
*.vhd \
*.vhdl
 
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
# If left blank NO is used.
 
RECURSIVE = YES
 
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
# Note that relative paths are relative to the directory from which doxygen is
# run.
 
EXCLUDE =
 
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
 
EXCLUDE_SYMLINKS = NO
 
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories. Note that the wildcards are matched
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*
 
EXCLUDE_PATTERNS =
 
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
 
EXCLUDE_SYMBOLS =
 
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
# the \include command).
 
EXAMPLE_PATH =
 
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank all files are included.
 
EXAMPLE_PATTERNS = *
 
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude
# commands irrespective of the value of the RECURSIVE tag.
# Possible values are YES and NO. If left blank NO is used.
 
EXAMPLE_RECURSIVE = NO
 
# The IMAGE_PATH tag can be used to specify one or more files or
# directories that contain image that are included in the documentation (see
# the \image command).
 
IMAGE_PATH =
 
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
# by executing (via popen()) the command <filter> <input-file>, where <filter>
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
# input file. Doxygen will then use the output that the filter program writes
# to standard output. If FILTER_PATTERNS is specified, this tag will be
# ignored.
 
INPUT_FILTER =
 
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form:
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
# info on how filters are used. If FILTER_PATTERNS is empty or if
# non of the patterns match the file name, INPUT_FILTER is applied.
 
FILTER_PATTERNS =
 
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
# files to browse (i.e. when SOURCE_BROWSER is set to YES).
 
FILTER_SOURCE_FILES = NO
 
# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
# and it is also possible to disable source filtering for a specific pattern
# using *.ext= (so without naming a filter). This option only has effect when
# FILTER_SOURCE_FILES is enabled.
 
FILTER_SOURCE_PATTERNS =
 
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
 
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
# be generated. Documented entities will be cross-referenced with these sources.
# Note: To get rid of all source code in the generated output, make sure also
# VERBATIM_HEADERS is set to NO.
 
SOURCE_BROWSER = YES
 
# Setting the INLINE_SOURCES tag to YES will include the body
# of functions and classes directly in the documentation.
 
INLINE_SOURCES = NO
 
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code
# fragments. Normal C, C++ and Fortran comments will always remain visible.
 
STRIP_CODE_COMMENTS = YES
 
# If the REFERENCED_BY_RELATION tag is set to YES
# then for each documented function all documented
# functions referencing it will be listed.
 
REFERENCED_BY_RELATION = NO
 
# If the REFERENCES_RELATION tag is set to YES
# then for each documented function all documented entities
# called/used by that function will be listed.
 
REFERENCES_RELATION = NO
 
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
# link to the source code. Otherwise they will link to the documentation.
 
REFERENCES_LINK_SOURCE = YES
 
# If the USE_HTAGS tag is set to YES then the references to source code
# will point to the HTML generated by the htags(1) tool instead of doxygen
# built-in source browser. The htags tool is part of GNU's global source
# tagging system (see http://www.gnu.org/software/global/global.html). You
# will need version 4.8.6 or higher.
 
USE_HTAGS = NO
 
# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
# will generate a verbatim copy of the header file for each class for
# which an include is specified. Set to NO to disable this.
 
VERBATIM_HEADERS = YES
 
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
 
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
# of all compounds will be generated. Enable this if the project
# contains a lot of classes, structs, unions or interfaces.
 
ALPHABETICAL_INDEX = YES
 
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
# in which this list will be split (can be a number in the range [1..20])
 
COLS_IN_ALPHA_INDEX = 5
 
# In case all classes in a project start with a common prefix, all
# classes will be put under the same header in the alphabetical index.
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
# should be ignored while generating the index headers.
 
IGNORE_PREFIX =
 
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
 
# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
# generate HTML output.
 
GENERATE_HTML = YES
 
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `html' will be used as the default path.
 
HTML_OUTPUT = html
 
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
# doxygen will generate files with .html extension.
 
HTML_FILE_EXTENSION = .html
 
# The HTML_HEADER tag can be used to specify a personal HTML header for
# each generated HTML page. If it is left blank doxygen will generate a
# standard header. Note that when using a custom header you are responsible
# for the proper inclusion of any scripts and style sheets that doxygen
# needs, which is dependent on the configuration options used.
# It is advised to generate a default header using "doxygen -w html
# header.html footer.html stylesheet.css YourConfigFile" and then modify
# that header. Note that the header is subject to change so you typically
# have to redo this when upgrading to a newer version of doxygen or when
# changing the value of configuration settings such as GENERATE_TREEVIEW!
 
HTML_HEADER =
 
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.
 
HTML_FOOTER =
 
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
# fine-tune the look of the HTML output. If the tag is left blank doxygen
# will generate a default style sheet. Note that doxygen will try to copy
# the style sheet file to the HTML output directory, so don't put your own
# style sheet in the HTML output directory as well, or it will be erased!
 
HTML_STYLESHEET =
 
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
# the files will be copied as-is; there are no commands or markers available.
 
HTML_EXTRA_FILES =
 
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the style sheet and background images
# according to this color. Hue is specified as an angle on a colorwheel,
# see http://en.wikipedia.org/wiki/Hue for more information.
# For instance the value 0 represents red, 60 is yellow, 120 is green,
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
# The allowed range is 0 to 359.
 
HTML_COLORSTYLE_HUE = 184
 
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
# the colors in the HTML output. For a value of 0 the output will use
# grayscales only. A value of 255 will produce the most vivid colors.
 
HTML_COLORSTYLE_SAT = 100
 
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
# the luminance component of the colors in the HTML output. Values below
# 100 gradually make the output lighter, whereas values above 100 make
# the output darker. The value divided by 100 is the actual gamma applied,
# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
# and 100 does not change the gamma.
 
HTML_COLORSTYLE_GAMMA = 80
 
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting
# this to NO can help when comparing the output of multiple runs.
 
HTML_TIMESTAMP = YES
 
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded.
 
HTML_DYNAMIC_SECTIONS = NO
 
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
# entries shown in the various tree structured indices initially; the user
# can expand and collapse entries dynamically later on. Doxygen will expand
# the tree to such a level that at most the specified number of entries are
# visible (unless a fully collapsed tree already exceeds this amount).
# So setting the number of entries 1 will produce a full collapsed tree by
# default. 0 is a special value representing an infinite number of entries
# and will result in a full expanded tree by default.
 
HTML_INDEX_NUM_ENTRIES = 100
 
# If the GENERATE_DOCSET tag is set to YES, additional index files
# will be generated that can be used as input for Apple's Xcode 3
# integrated development environment, introduced with OSX 10.5 (Leopard).
# To create a documentation set, doxygen will generate a Makefile in the
# HTML output directory. Running make will produce the docset in that
# directory and running "make install" will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
# it at startup.
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
# for more information.
 
GENERATE_DOCSET = NO
 
# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
# feed. A documentation feed provides an umbrella under which multiple
# documentation sets from a single provider (such as a company or product suite)
# can be grouped.
 
DOCSET_FEEDNAME = "Doxygen generated docs"
 
# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
# should uniquely identify the documentation set bundle. This should be a
# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
# will append .docset to the name.
 
DOCSET_BUNDLE_ID = org.doxygen.Project
 
# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.
 
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
 
# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
 
DOCSET_PUBLISHER_NAME = Publisher
 
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
# of the generated HTML documentation.
 
GENERATE_HTMLHELP = YES
 
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
# be used to specify the file name of the resulting .chm file. You
# can add a path in front of the file if the result should not be
# written to the html output directory.
 
CHM_FILE = C:\Mathias\smole\etherlab\net\EtherSocket\doc\EtherSocket.chm
 
# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
# be used to specify the location (absolute path including file name) of
# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
# the HTML help compiler on the generated index.hhp.
 
HHC_LOCATION = "C:/Program Files/HTML Help Workshop/hhc.exe"
 
# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
# controls if a separate .chi index file is generated (YES) or that
# it should be included in the master .chm file (NO).
 
GENERATE_CHI = NO
 
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
# is used to encode HtmlHelp index (hhk), content (hhc) and project file
# content.
 
CHM_INDEX_ENCODING =
 
# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
# controls whether a binary table of contents is generated (YES) or a
# normal table of contents (NO) in the .chm file.
 
BINARY_TOC = YES
 
# The TOC_EXPAND flag can be set to YES to add extra items for group members
# to the contents of the HTML help documentation and to the tree view.
 
TOC_EXPAND = YES
 
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
# that can be used as input for Qt's qhelpgenerator to generate a
# Qt Compressed Help (.qch) of the generated HTML documentation.
 
GENERATE_QHP = NO
 
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
# be used to specify the file name of the resulting .qch file.
# The path specified is relative to the HTML output folder.
 
QCH_FILE =
 
# The QHP_NAMESPACE tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
# http://doc.trolltech.com/qthelpproject.html#namespace
 
QHP_NAMESPACE = org.doxygen.Project
 
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
# http://doc.trolltech.com/qthelpproject.html#virtual-folders
 
QHP_VIRTUAL_FOLDER = doc
 
# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
# add. For more information please see
# http://doc.trolltech.com/qthelpproject.html#custom-filters
 
QHP_CUST_FILTER_NAME =
 
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
# Qt Help Project / Custom Filters</a>.
 
QHP_CUST_FILTER_ATTRS =
 
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's
# filter section matches.
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
# Qt Help Project / Filter Attributes</a>.
 
QHP_SECT_FILTER_ATTRS =
 
# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
# be used to specify the location of Qt's qhelpgenerator.
# If non-empty doxygen will try to run qhelpgenerator on the generated
# .qhp file.
 
QHG_LOCATION =
 
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
# will be generated, which together with the HTML files, form an Eclipse help
# plugin. To install this plugin and make it available under the help contents
# menu in Eclipse, the contents of the directory containing the HTML and XML
# files needs to be copied into the plugins directory of eclipse. The name of
# the directory within the plugins directory should be the same as
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
# the help appears.
 
GENERATE_ECLIPSEHELP = NO
 
# A unique identifier for the eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have
# this name.
 
ECLIPSE_DOC_ID = org.doxygen.Project
 
# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
# at top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it. Since the tabs have the same information as the
# navigation tree you can set this option to NO if you already set
# GENERATE_TREEVIEW to YES.
 
DISABLE_INDEX = NO
 
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information.
# If the tag value is set to YES, a side panel will be generated
# containing a tree-like index structure (just like the one that
# is generated for HTML Help). For this to work a browser that supports
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
# Windows users are probably better off using the HTML help feature.
# Since the tree basically has the same information as the tab index you
# could consider to set DISABLE_INDEX to NO when enabling this option.
 
GENERATE_TREEVIEW = NO
 
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
# (range [0,1..20]) that doxygen will group on one line in the generated HTML
# documentation. Note that a value of 0 will completely suppress the enum
# values from appearing in the overview section.
 
ENUM_VALUES_PER_LINE = 4
 
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
# is shown.
 
TREEVIEW_WIDTH = 250
 
# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
# links to external symbols imported via tag files in a separate window.
 
EXT_LINKS_IN_WINDOW = NO
 
# Use this tag to change the font size of Latex formulas included
# as images in the HTML documentation. The default is 10. Note that
# when you change the font size after a successful doxygen run you need
# to manually remove any form_*.png images from the HTML output directory
# to force them to be regenerated.
 
FORMULA_FONTSIZE = 10
 
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are
# not supported properly for IE 6.0, but are supported on all modern browsers.
# Note that when changing this option you need to delete any form_*.png files
# in the HTML output before the changes have effect.
 
FORMULA_TRANSPARENT = YES
 
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
# (see http://www.mathjax.org) which uses client side Javascript for the
# rendering instead of using prerendered bitmaps. Use this if you do not
# have LaTeX installed or if you want to formulas look prettier in the HTML
# output. When enabled you may also need to install MathJax separately and
# configure the path to it using the MATHJAX_RELPATH option.
 
USE_MATHJAX = NO
 
# When MathJax is enabled you need to specify the location relative to the
# HTML output directory using the MATHJAX_RELPATH option. The destination
# directory should contain the MathJax.js script. For instance, if the mathjax
# directory is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to
# the MathJax Content Delivery Network so you can quickly see the result without
# installing MathJax. However, it is strongly recommended to install a local
# copy of MathJax from http://www.mathjax.org before deployment.
 
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
 
# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
# names that should be enabled during MathJax rendering.
 
MATHJAX_EXTENSIONS =
 
# When the SEARCHENGINE tag is enabled doxygen will generate a search box
# for the HTML output. The underlying search engine uses javascript
# and DHTML and should work on any modern browser. Note that when using
# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
# (GENERATE_DOCSET) there is already a search function so this one should
# typically be disabled. For large projects the javascript based search engine
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
 
SEARCHENGINE = YES
 
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a PHP enabled web server instead of at the web client
# using Javascript. Doxygen will generate the search PHP script and index
# file to put on the web server. The advantage of the server
# based approach is that it scales better to large projects and allows
# full text search. The disadvantages are that it is more difficult to setup
# and does not have live searching capabilities.
 
SERVER_BASED_SEARCH = NO
 
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
 
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
# generate Latex output.
 
GENERATE_LATEX = NO
 
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `latex' will be used as the default path.
 
LATEX_OUTPUT = latex
 
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked. If left blank `latex' will be used as the default command name.
# Note that when enabling USE_PDFLATEX this option is only used for
# generating bitmaps for formulas in the HTML output, but not in the
# Makefile that is written to the output directory.
 
LATEX_CMD_NAME = latex
 
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
# generate index for LaTeX. If left blank `makeindex' will be used as the
# default command name.
 
MAKEINDEX_CMD_NAME = makeindex
 
# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
# LaTeX documents. This may be useful for small projects and may help to
# save some trees in general.
 
COMPACT_LATEX = NO
 
# The PAPER_TYPE tag can be used to set the paper type that is used
# by the printer. Possible values are: a4, letter, legal and
# executive. If left blank a4wide will be used.
 
PAPER_TYPE = a4
 
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
# packages that should be included in the LaTeX output.
 
EXTRA_PACKAGES =
 
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
# the generated latex document. The header should contain everything until
# the first chapter. If it is left blank doxygen will generate a
# standard header. Notice: only use this tag if you know what you are doing!
 
LATEX_HEADER =
 
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
# the generated latex document. The footer should contain everything after
# the last chapter. If it is left blank doxygen will generate a
# standard footer. Notice: only use this tag if you know what you are doing!
 
LATEX_FOOTER =
 
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
# contain links (just like the HTML output) instead of page references
# This makes the output suitable for online browsing using a pdf viewer.
 
PDF_HYPERLINKS = YES
 
# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
# plain latex in the generated Makefile. Set this option to YES to get a
# higher quality PDF documentation.
 
USE_PDFLATEX = YES
 
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
# command to the generated LaTeX files. This will instruct LaTeX to keep
# running if errors occur, instead of asking the user for help.
# This option is also used when generating formulas in HTML.
 
LATEX_BATCHMODE = NO
 
# If LATEX_HIDE_INDICES is set to YES then doxygen will not
# include the index chapters (such as File Index, Compound Index, etc.)
# in the output.
 
LATEX_HIDE_INDICES = NO
 
# If LATEX_SOURCE_CODE is set to YES then doxygen will include
# source code with syntax highlighting in the LaTeX output.
# Note that which sources are shown also depends on other settings
# such as SOURCE_BROWSER.
 
LATEX_SOURCE_CODE = NO
 
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
# http://en.wikipedia.org/wiki/BibTeX for more info.
 
LATEX_BIB_STYLE = plain
 
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
 
# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
# The RTF output is optimized for Word 97 and may not look very pretty with
# other RTF readers or editors.
 
GENERATE_RTF = NO
 
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `rtf' will be used as the default path.
 
RTF_OUTPUT = rtf
 
# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
# RTF documents. This may be useful for small projects and may help to
# save some trees in general.
 
COMPACT_RTF = NO
 
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
# will contain hyperlink fields. The RTF file will
# contain links (just like the HTML output) instead of page references.
# This makes the output suitable for online browsing using WORD or other
# programs which support those fields.
# Note: wordpad (write) and others do not support links.
 
RTF_HYPERLINKS = NO
 
# Load style sheet definitions from file. Syntax is similar to doxygen's
# config file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
 
RTF_STYLESHEET_FILE =
 
# Set optional variables used in the generation of an rtf document.
# Syntax is similar to doxygen's config file.
 
RTF_EXTENSIONS_FILE =
 
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
 
# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
# generate man pages
 
GENERATE_MAN = NO
 
# The MAN_OUTPUT tag is used to specify where the man pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `man' will be used as the default path.
 
MAN_OUTPUT = man
 
# The MAN_EXTENSION tag determines the extension that is added to
# the generated man pages (default is the subroutine's section .3)
 
MAN_EXTENSION = .3
 
# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
# then it will generate one additional man file for each entity
# documented in the real man page(s). These additional files
# only source the real man page, but without them the man command
# would be unable to find the correct page. The default is NO.
 
MAN_LINKS = NO
 
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
 
# If the GENERATE_XML tag is set to YES Doxygen will
# generate an XML file that captures the structure of
# the code including all documentation.
 
GENERATE_XML = NO
 
# The XML_OUTPUT tag is used to specify where the XML pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `xml' will be used as the default path.
 
XML_OUTPUT = xml
 
# The XML_SCHEMA tag can be used to specify an XML schema,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
 
XML_SCHEMA =
 
# The XML_DTD tag can be used to specify an XML DTD,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
 
XML_DTD =
 
# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
# dump the program listings (including syntax highlighting
# and cross-referencing information) to the XML output. Note that
# enabling this will significantly increase the size of the XML output.
 
XML_PROGRAMLISTING = YES
 
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
 
# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
# generate an AutoGen Definitions (see autogen.sf.net) file
# that captures the structure of the code including all
# documentation. Note that this feature is still experimental
# and incomplete at the moment.
 
GENERATE_AUTOGEN_DEF = NO
 
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
 
# If the GENERATE_PERLMOD tag is set to YES Doxygen will
# generate a Perl module file that captures the structure of
# the code including all documentation. Note that this
# feature is still experimental and incomplete at the
# moment.
 
GENERATE_PERLMOD = NO
 
# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
# the necessary Makefile rules, Perl scripts and LaTeX code to be able
# to generate PDF and DVI output from the Perl module output.
 
PERLMOD_LATEX = NO
 
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
# nicely formatted so it can be parsed by a human reader. This is useful
# if you want to understand what is going on. On the other hand, if this
# tag is set to NO the size of the Perl module output will be much smaller
# and Perl will parse it just the same.
 
PERLMOD_PRETTY = YES
 
# The names of the make variables in the generated doxyrules.make file
# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
# This is useful so different doxyrules.make files included by the same
# Makefile don't overwrite each other's variables.
 
PERLMOD_MAKEVAR_PREFIX =
 
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
 
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
# evaluate all C-preprocessor directives found in the sources and include
# files.
 
ENABLE_PREPROCESSING = YES
 
# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
# names in the source code. If set to NO (the default) only conditional
# compilation will be performed. Macro expansion can be done in a controlled
# way by setting EXPAND_ONLY_PREDEF to YES.
 
MACRO_EXPANSION = NO
 
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
# then the macro expansion is limited to the macros specified with the
# PREDEFINED and EXPAND_AS_DEFINED tags.
 
EXPAND_ONLY_PREDEF = NO
 
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
# pointed to by INCLUDE_PATH will be searched when a #include is found.
 
SEARCH_INCLUDES = YES
 
# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by
# the preprocessor.
 
INCLUDE_PATH =
 
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will
# be used.
 
INCLUDE_FILE_PATTERNS =
 
# The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
# gcc). The argument of the tag is a list of macros of the form: name
# or name=definition (no spaces). If the definition and the = are
# omitted =1 is assumed. To prevent a macro definition from being
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
 
PREDEFINED =
 
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
# The macro definition that is found in the sources will be used.
# Use the PREDEFINED tag if you want to use a different macro definition that
# overrules the definition found in the source code.
 
EXPAND_AS_DEFINED =
 
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all references to function-like macros
# that are alone on a line, have an all uppercase name, and do not end with a
# semicolon, because these will confuse the parser if not removed.
 
SKIP_FUNCTION_MACROS = YES
 
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
 
# The TAGFILES option can be used to specify one or more tagfiles. For each
# tag file the location of the external documentation should be added. The
# format of a tag file without this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where "loc1" and "loc2" can be relative or absolute paths
# or URLs. Note that each tag file must have a unique name (where the name does
# NOT include the path). If a tag file is not located in the directory in which
# doxygen is run, you must also specify the path to the tagfile here.
 
TAGFILES =
 
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
# a tag file that is based on the input files it reads.
 
GENERATE_TAGFILE =
 
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
# in the class index. If set to NO only the inherited external classes
# will be listed.
 
ALLEXTERNALS = NO
 
# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
# in the modules index. If set to NO, only the current project's groups will
# be listed.
 
EXTERNAL_GROUPS = YES
 
# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of `which perl').
 
PERL_PATH = /usr/bin/perl
 
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
 
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
# or super classes. Setting the tag to NO turns the diagrams off. Note that
# this option also works with HAVE_DOT disabled, but it is recommended to
# install and use dot, since it yields more powerful graphs.
 
CLASS_DIAGRAMS = YES
 
# You can define message sequence charts within doxygen comments using the \msc
# command. Doxygen will then run the mscgen tool (see
# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
# documentation. The MSCGEN_PATH tag allows you to specify the directory where
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.
 
MSCGEN_PATH =
 
# If set to YES, the inheritance and collaboration graphs will hide
# inheritance and usage relations if the target is undocumented
# or is not a class.
 
HIDE_UNDOC_RELATIONS = YES
 
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz, a graph visualization
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
# have no effect if this option is set to NO (the default)
 
HAVE_DOT = NO
 
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
# allowed to run in parallel. When set to 0 (the default) doxygen will
# base this on the number of processors available in the system. You can set it
# explicitly to a value larger than 0 to get control over the balance
# between CPU load and processing speed.
 
DOT_NUM_THREADS = 0
 
# By default doxygen will use the Helvetica font for all dot files that
# doxygen generates. When you want a differently looking font you can specify
# the font name using DOT_FONTNAME. You need to make sure dot is able to find
# the font, which can be done by putting it in a standard location or by setting
# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
# directory containing the font.
 
DOT_FONTNAME = Helvetica
 
# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
# The default size is 10pt.
 
DOT_FONTSIZE = 10
 
# By default doxygen will tell dot to use the Helvetica font.
# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
# set the path where dot can find it.
 
DOT_FONTPATH =
 
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect inheritance relations. Setting this tag to YES will force the
# CLASS_DIAGRAMS tag to NO.
 
CLASS_GRAPH = YES
 
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect implementation dependencies (inheritance, containment, and
# class references variables) of the class with other documented classes.
 
COLLABORATION_GRAPH = YES
 
# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for groups, showing the direct groups dependencies
 
GROUP_GRAPHS = YES
 
# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
 
UML_LOOK = NO
 
# If the UML_LOOK tag is enabled, the fields and methods are shown inside
# the class node. If there are many fields or methods and many nodes the
# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
# threshold limits the number of items for each type to make the size more
# managable. Set this to 0 for no limit. Note that the threshold may be
# exceeded by 50% before the limit is enforced.
 
UML_LIMIT_NUM_FIELDS = 10
 
# If set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances.
 
TEMPLATE_RELATIONS = NO
 
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
# tags are set to YES then doxygen will generate a graph for each documented
# file showing the direct and indirect include dependencies of the file with
# other documented files.
 
INCLUDE_GRAPH = YES
 
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
# documented header file showing the documented files that directly or
# indirectly include this file.
 
INCLUDED_BY_GRAPH = YES
 
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
# doxygen will generate a call dependency graph for every global function
# or class method. Note that enabling this option will significantly increase
# the time of a run. So in most cases it will be better to enable call graphs
# for selected functions only using the \callgraph command.
 
CALL_GRAPH = NO
 
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
# doxygen will generate a caller dependency graph for every global function
# or class method. Note that enabling this option will significantly increase
# the time of a run. So in most cases it will be better to enable caller
# graphs for selected functions only using the \callergraph command.
 
CALLER_GRAPH = NO
 
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will generate a graphical hierarchy of all classes instead of a textual one.
 
GRAPHICAL_HIERARCHY = YES
 
# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories
# in a graphical way. The dependency relations are determined by the #include
# relations between the files in the directories.
 
DIRECTORY_GRAPH = YES
 
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. Possible values are svg, png, jpg, or gif.
# If left blank png will be used. If you choose svg you need to set
# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible in IE 9+ (other browsers do not have this requirement).
 
DOT_IMAGE_FORMAT = png
 
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
# Note that this requires a modern browser other than Internet Explorer.
# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible. Older versions of IE do not have SVG support.
 
INTERACTIVE_SVG = NO
 
# The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
 
DOT_PATH =
 
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the
# \dotfile command).
 
DOTFILE_DIRS =
 
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the
# \mscfile command).
 
MSCFILE_DIRS =
 
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
# nodes that will be shown in the graph. If the number of nodes in a graph
# becomes larger than this value, doxygen will truncate the graph, which is
# visualized by representing a node as a red box. Note that doxygen if the
# number of direct children of the root node in a graph is already larger than
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
 
DOT_GRAPH_MAX_NODES = 50
 
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
# graphs generated by dot. A depth value of 3 means that only nodes reachable
# from the root by following a path via at most 3 edges will be shown. Nodes
# that lay further from the root node will be omitted. Note that setting this
# option to 1 or 2 may greatly reduce the computation time needed for large
# code bases. Also note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
 
MAX_DOT_GRAPH_DEPTH = 0
 
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not
# seem to support this out of the box. Warning: Depending on the platform used,
# enabling this option may lead to badly anti-aliased labels on the edges of
# a graph (i.e. they become hard to read).
 
DOT_TRANSPARENT = NO
 
# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10)
# support this, this feature is disabled by default.
 
DOT_MULTI_TARGETS = NO
 
# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
# generate a legend page explaining the meaning of the various boxes and
# arrows in the dot generated graphs.
 
GENERATE_LEGEND = YES
 
# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
# remove the intermediate dot files that are used to generate
# the various graphs.
 
DOT_CLEANUP = YES
/etherlab/trunk/net/EtherSocket/doc/EtherSocket.chm Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
etherlab/trunk/net/EtherSocket/doc/EtherSocket.chm Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/net/EtherSocket/EtherSocket.suo =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/net/EtherSocket/EtherSocket.suo =================================================================== --- etherlab/trunk/net/EtherSocket/EtherSocket.suo (nonexistent) +++ etherlab/trunk/net/EtherSocket/EtherSocket.suo (revision 2)
etherlab/trunk/net/EtherSocket/EtherSocket.suo Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/net/EtherSocket/src/EtherSocket.cs =================================================================== --- etherlab/trunk/net/EtherSocket/src/EtherSocket.cs (nonexistent) +++ etherlab/trunk/net/EtherSocket/src/EtherSocket.cs (revision 2) @@ -0,0 +1,208 @@ +/****************************************************************************** + * ETHERLAB - FPGA To C# To LABVIEW Bridge * + ****************************************************************************** + * * + * Copyright (C)2012 Mathias Hörtnagl * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program 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 General Public License * + * along with this program. If not, see . * + ******************************************************************************/ +using System; +using System.Collections.Generic; +using System.Threading; + +using PcapDotNet.Core; +using PcapDotNet.Packets; +using PcapDotNet.Packets.Ethernet; + +namespace EtherLab +{ + /// + /// A socket for EtherLab communication. + /// + /// + /// Sending + /// + /// To send data, first update any channel's data with . + /// Subsequently call to send the updated EtherLab + /// packet. If isn't invoked at least once, + /// will NOT send the packet, as there is no updated + /// data available. + /// + /// + /// /** + /// * Create a new instance of EtherSocket with default + /// * destination MAC. The first parameter identifies the + /// * network device to select. + /// */ + /// EtherSocket es = new EtherSocket(0, "00:1f:16:01:95:a5"); + /// + /// // Update data for channel H and B. + /// es.update(EChannel.CHANNEL_H, 0x1234); + /// es.update(EChannel.CHANNEL_B, 0x4321); + /// + /// // Send the updated packet. + /// es.send(); + /// + /// + /// + /// + /// + /// Receiving + /// + /// EtherSocket starts a new Thread automatically for the reception process. + /// Data is read constatntly from the networ device. + /// To read a channel's current data chunk, invoke . + /// + /// NOTE: There is no locking mechanism, to circumvent reading data while + /// new data is read from the network device. + /// + /// + /// /** + /// * Create a new instance of EtherSocket with default + /// * destination MAC. The first parameter identifies the + /// * network device to select. + /// */ + /// EtherSocket es = new EtherSocket(0, "00:1f:16:01:95:a5"); + /// + /// ushort data; + /// + /// // Read data of channel H; + /// data = es.read(EChannel.CHANNEL_H); + /// + /// + /// + /// + public sealed class EtherSocket + { + /// + /// Packet receiver filter. Capture packages with EtherType = 0x0000 + /// and with a Version 2 field only. + /// + private const String RCV_FILTER + = "(ether[12:2] = 0x0000) and (ether[14] = 0x02)"; + + private LivePacketDevice device; + private PacketCommunicator com; + private PacketBuilder builder; + private EtherLabLayer sendLayer; + private EtherLabLayer receiveLayer; + private Thread receiverThread; + + /// + /// Creates a new EtherSocket with "00:0a:35:00:00:00" as a default + /// destination MAC. + /// + /// The integer ID of the network device. + /// The source MAC address. + public EtherSocket(int deviceId, String srcMAC) + : this(deviceId, srcMAC, "00:0a:35:00:00:00") + { + } + + /// + /// Creates a new EtherSocket. + /// + /// The integer ID of the network device. + /// The source MAC address. + /// The destination MAC address. + public EtherSocket(int deviceId, String srcMAC, String dstMAC) + { + IList allDevices = LivePacketDevice.AllLocalMachine; + + if ( (allDevices.Count == 0) || (allDevices.Count < deviceId) ) + { + return; + } + + device = allDevices[deviceId]; + com = device.Open(56, PacketDeviceOpenAttributes.Promiscuous, 1000); + + // Filter packages. + using (BerkeleyPacketFilter filter = com.CreateFilter(RCV_FILTER)) + { + com.SetFilter(filter); + } + + EthernetLayer ethernetLayer = new EthernetLayer + { + Source = new MacAddress(srcMAC), + Destination = new MacAddress(dstMAC) + }; + + sendLayer = new EtherLabLayer(); + + builder = new PacketBuilder(ethernetLayer, sendLayer); + + // Start receiver thread. + receiverThread = new Thread(this.receive); + receiverThread.Start(); + } + + /// + /// Update channel data and set channel flag. Call send() to send + /// the updated data in a new packet. + /// + /// The channel to be updated. + /// The new data for that channel. + public void update(EChannel channel, ushort channelData) + { + sendLayer.update(channel, channelData); + } + + /// + /// Sends the current EtherLab packet and resets the channel + /// flags to 0. A packet is sent only if at least one channel + /// flag is set. + /// + public void send() + { + if (sendLayer.pendingSendData()) + { + com.SendPacket(builder.Build(DateTime.Now)); + sendLayer.reset(); + } + } + + /// + /// Receive a single packet. Packet data can be read with . + /// + private void receive() + { + com.ReceivePackets(0, PacketHandler); + } + + /// + /// Packet reception callback. + /// + /// The received packet. + private void PacketHandler(Packet packet) + { + EtherLabDatagram etherLabPacket + = new EtherLabDatagram(packet.Buffer, EthernetDatagram.HeaderLength, 18); + + receiveLayer = (EtherLabLayer) etherLabPacket.ExtractLayer(); + } + + /// + /// Read data for a channel from current received packet. If no packet + /// is available yet, this function returns 0. + /// + /// The channel to be read from. + /// The current channel data. + public ushort read(EChannel channel) + { + return (receiveLayer != null) ? receiveLayer.read(channel) : ushort.MinValue; + } + } +} \ No newline at end of file Index: etherlab/trunk/net/EtherSocket/src/etherlab/EChannel.cs =================================================================== --- etherlab/trunk/net/EtherSocket/src/etherlab/EChannel.cs (nonexistent) +++ etherlab/trunk/net/EtherSocket/src/etherlab/EChannel.cs (revision 2) @@ -0,0 +1,42 @@ +/****************************************************************************** + * ETHERLAB - FPGA To C# To LABVIEW Bridge * + ****************************************************************************** + * * + * Copyright (C)2012 Mathias Hörtnagl * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program 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 General Public License * + * along with this program. If not, see . * + ******************************************************************************/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace EtherLab +{ + /// + /// Available channels A to H. + /// + [Flags] + public enum EChannel : int + { + CHANNEL_A = 0, + CHANNEL_B = 1, + CHANNEL_C = 2, + CHANNEL_D = 3, + CHANNEL_E = 4, + CHANNEL_F = 5, + CHANNEL_G = 6, + CHANNEL_H = 7 + } +} Index: etherlab/trunk/net/EtherSocket/src/etherlab/EtherLabLayer.cs =================================================================== --- etherlab/trunk/net/EtherSocket/src/etherlab/EtherLabLayer.cs (nonexistent) +++ etherlab/trunk/net/EtherSocket/src/etherlab/EtherLabLayer.cs (revision 2) @@ -0,0 +1,150 @@ +/****************************************************************************** + * ETHERLAB - FPGA To C# To LABVIEW Bridge * + ****************************************************************************** + * * + * Copyright (C)2012 Mathias Hörtnagl * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program 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 General Public License * + * along with this program. If not, see . * + ******************************************************************************/ +using PcapDotNet.Packets; +using PcapDotNet.Packets.Ethernet; + +namespace EtherLab +{ + /// + /// Represents the EtherLab layer for Pcap.NET. + /// + public sealed class EtherLabLayer : SimpleLayer, IEthernetNextLayer + { + /// + /// The version number of the EtherLab protocol. + /// + public byte Version { set; get; } + + /// + /// The channel number octet. Specifies the virtual channel this + /// package belongs to. + /// + public byte Channel { set; get; } + + /// + /// The channel data. 8 channels, 16 bit wide each. Data segment is 40 + /// byte wide as we need at least 42 byte of payload for an Ethernet + /// package (remaining 2 bytes are EtherLab header). + /// + public byte[] Data { get; set; } + + /// + /// The default MAC Address value when this layer is the Ethernet payload. + /// null means there is no default value. + /// + public MacAddress? PreviousLayerDefaultDestination + { + get { return EthernetDatagram.BroadcastAddress; } + } + + /// + /// The Ethernet Type the Ethernet layer should write when this layer is the Ethernet payload. + /// + public EthernetType PreviousLayerEtherType + { + get { return EthernetType.None; } + } + + /// + /// The number of bytes this layer will take. + /// + public override int Length + { + get { return EtherLabDatagram.HeaderLength + 16; } + } + + /// + /// Two EtherLabLayers are always equal. I could not find reasonable + /// comparison parameters. + /// + /// An EtherLabLayer instance. + /// True if the other instance is not null and an instance of EtherLabLayer. + public override bool Equals(Layer other) + { + return other != null && other.GetType() == GetType(); + } + + /// + /// Constructor for a default EtherLab package. + /// Version 1. + /// + public EtherLabLayer() + { + Version = 1; + Channel = 0; + Data = new byte[16]; + } + + /// + /// Writes the layer to the buffer. + /// This method ignores the payload length, and the previous and next layers. + /// + /// The buffer to write the layer to. + /// The offset in the buffer to start writing the layer at. + protected sealed override void Write(byte[] buffer, int offset) + { + EtherLabDatagram.Write(buffer, offset, Version, Channel, Data); + } + + /// + /// Checks, whether there is new data, that has not yet been sent. + /// + /// True, if at least one channel holds new data. + public bool pendingSendData() + { + return Channel != 0; + } + + /// + /// Update channel data and set channel flag. Upon next send, updated + /// data will be transmitted. + /// + /// The channel to be updated. + /// The new data. + public void update(EChannel channel, ushort channelData) + { + int pos = (int)channel; + Channel |= (byte)(1 << pos); + Data.Write(2 * pos, channelData, Endianity.Big); + } + + /// + /// Read data for a channel from current received packet. If no packet + /// is available yet, this function returns 0. + /// + /// The channel to be read from. + /// The current channel data. + public ushort read(EChannel channel) + { + int pos = (int)channel; + return Data.ReadUShort(2 * pos, Endianity.Big); + } + + /// + /// Reset channel flags to zero. Clear the flags after a package has + /// been sent. Only set channel flags trigger an update on hardware + /// level. + /// + public void reset() + { + Channel = 0; + } + } +} \ No newline at end of file Index: etherlab/trunk/net/EtherSocket/src/etherlab/EtherLabDatagram.cs =================================================================== --- etherlab/trunk/net/EtherSocket/src/etherlab/EtherLabDatagram.cs (nonexistent) +++ etherlab/trunk/net/EtherSocket/src/etherlab/EtherLabDatagram.cs (revision 2) @@ -0,0 +1,148 @@ +/****************************************************************************** + * ETHERLAB - FPGA To C# To LABVIEW Bridge * + ****************************************************************************** + * * + * Copyright (C)2012 Mathias Hörtnagl * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program 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 General Public License * + * along with this program. If not, see . * + ******************************************************************************/ +using PcapDotNet.Packets; + +namespace EtherLab +{ + /// + /// Represents an EtherLab datagram. + /// + /// An EtherLab Datagram sends data for all active channels in one + /// packet whenever send() is called. + /// A packet, whether sent or received, contains at most 8 independent + /// data chunks of 16 bit size each. + /// + ///








    +    /// +-----+----------------+----------------+








    +    /// | Bit | 0-7            | 8-15           |








    +    /// +-----+----------------+----------------+








    +    /// | 0   | Version        | Channels       |








    +    /// +-----+----------------+----------------+








    +    /// | 16  | Channel A Data                  |








    +    /// +-----+---------------------------------+








    +    /// | 32  | Channel B Data                  |








    +    /// +-----+---------------------------------+








    +    /// :     :                                 :








    +    /// +-----+---------------------------------+








    +    /// | 112 | Channel H Data                  |








    +    /// +-----+---------------------------------+








    +    /// 
+ /// + /// + /// Channel Field + /// + /// The Channels field is 1 byte wide and can thus hold 8 seperate + /// channels. An active channel is repesented by its flag set to 1. + ///








    +    /// +-----+-------------------------------+








    +    /// | Bit | 8-15                          |








    +    /// +-----+---+---+---+---+---+---+---+---+








    +    /// | 8   | H | G | F | E | D | C | B | A |








    +    /// +-----+---+---+---+---+---+---+---+---+








    +    /// 
+ /// Each channel is labeled with an alphabetic letter (A to H). + ///
+ ///
+ public sealed class EtherLabDatagram : Datagram + { + private static class Offset + { + public const int Version = 0; + public const int Channel = 1; + public const int Data = 2; + } + + /// + /// The number of bytes the EtherLab header takes. + /// + public const int HeaderLength = 2; + + /// + /// The version number of the EtherLab protocol. + /// + public byte Version + { + get { return this[Offset.Version]; } + } + + /// + /// The channel number octet. Specifies the virtual channel this + /// package belongs to. + /// + public byte Channel + { + get { return this[Offset.Channel]; } + } + + /// + /// The channel data. 8 channels, 16 bit wide each. Data segment is 40 + /// byte wide as we need at least 42 byte of payload for an Ethernet + /// package (remaining 2 bytes are EtherLab header). + /// + public byte[] Data + { + get + { + return ReadBytes(Offset.Data, Length - HeaderLength); + } + } + + /// + /// Constructor for a new EtherLab Datagram. + /// + /// The buffer to write the layer to. + /// The offset in the buffer to start writing the layer at. + /// The datagram length. + internal EtherLabDatagram(byte[] buffer, int offset, int length) + : base(buffer, offset, length) + { + } + + /// + /// Creates a Layer that represents the datagram to be used with PacketBuilder. + /// + public override ILayer ExtractLayer() + { + return new EtherLabLayer + { + Version = Version, + Channel = Channel, + Data = Data + }; + } + + /// + /// Writes the Datagram to the buffer. + /// + /// The buffer to write the layer to. + /// The offset in the buffer to start writing the layer at. + /// The EtherLab protocol version. + /// The active channels. + /// The channels' data. + internal static void Write(byte[] buffer, int offset, byte version, byte channel, byte[] data) + { + buffer.Write(offset + Offset.Version, version); + buffer.Write(offset + Offset.Channel, channel); + + for (int i = 0; i < 16; i++) + buffer.Write(offset + Offset.Data + i, data[i]); + } + } +} \ No newline at end of file Index: etherlab/trunk/net/EtherSocket/EtherSocket.sln =================================================================== --- etherlab/trunk/net/EtherSocket/EtherSocket.sln (nonexistent) +++ etherlab/trunk/net/EtherSocket/EtherSocket.sln (revision 2) @@ -0,0 +1,42 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C# Express 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EtherSocket", "EtherSocket.csproj", "{6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EtherExamples", "..\EtherExamples\EtherExamples.csproj", "{6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Debug|x86.ActiveCfg = Debug|Any CPU + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Release|Any CPU.Build.0 = Release|Any CPU + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3}.Release|x86.ActiveCfg = Release|Any CPU + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Debug|Any CPU.ActiveCfg = Debug|x86 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Debug|x86.ActiveCfg = Debug|x86 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Debug|x86.Build.0 = Debug|x86 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Release|Any CPU.ActiveCfg = Release|x86 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Release|Mixed Platforms.Build.0 = Release|x86 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Release|x86.ActiveCfg = Release|x86 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Index: etherlab/trunk/net/EtherSocket/Properties/AssemblyInfo.cs =================================================================== --- etherlab/trunk/net/EtherSocket/Properties/AssemblyInfo.cs (nonexistent) +++ etherlab/trunk/net/EtherSocket/Properties/AssemblyInfo.cs (revision 2) @@ -0,0 +1,38 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Resources; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die mit einer Assembly verknüpft sind. +[assembly: AssemblyTitle("EtherSocket")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EtheSocket")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[assembly: AssemblyTrademark("GNU GPL v3")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar +// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von +// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. +[assembly: ComVisible(true)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("22fc37be-a1bd-4432-89ee-01094a1fdf27")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern +// übernehmen, indem Sie "*" eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: NeutralResourcesLanguageAttribute("en-US")] Index: etherlab/trunk/net/EtherSocket/Properties/ethesocket.manifest =================================================================== --- etherlab/trunk/net/EtherSocket/Properties/ethesocket.manifest (nonexistent) +++ etherlab/trunk/net/EtherSocket/Properties/ethesocket.manifest (revision 2) @@ -0,0 +1,22 @@ + + + + + + + + + + + + Index: etherlab/trunk/net/EtherSocket/EtherSocket.csproj.user =================================================================== --- etherlab/trunk/net/EtherSocket/EtherSocket.csproj.user (nonexistent) +++ etherlab/trunk/net/EtherSocket/EtherSocket.csproj.user (revision 2) @@ -0,0 +1,13 @@ + + + + + + + + + + de-DE + false + + \ No newline at end of file Index: etherlab/trunk/net/EtherExamples/app.config =================================================================== --- etherlab/trunk/net/EtherExamples/app.config (nonexistent) +++ etherlab/trunk/net/EtherExamples/app.config (revision 2) @@ -0,0 +1,3 @@ + + + Index: etherlab/trunk/net/EtherExamples/EtherExamples.csproj =================================================================== --- etherlab/trunk/net/EtherExamples/EtherExamples.csproj (nonexistent) +++ etherlab/trunk/net/EtherExamples/EtherExamples.csproj (revision 2) @@ -0,0 +1,66 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {6852F6B5-2F8B-4FBA-8438-ACF49FFF2A6A} + Exe + Properties + EtherExamples + EtherExamples + v3.5 + Client + 512 + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + {6E829278-25B3-41E9-BC3E-BF14E7C7E3D3} + EtherSocket + + + + + + + + \ No newline at end of file Index: etherlab/trunk/net/EtherExamples/Properties/AssemblyInfo.cs =================================================================== --- etherlab/trunk/net/EtherExamples/Properties/AssemblyInfo.cs (nonexistent) +++ etherlab/trunk/net/EtherExamples/Properties/AssemblyInfo.cs (revision 2) @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die mit einer Assembly verknüpft sind. +[assembly: AssemblyTitle("EtherExamples")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EtherExamples")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar +// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von +// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("c5aea2f1-9a9d-4d53-aa5e-59c7ebd35bc9")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern +// übernehmen, indem Sie "*" eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] Index: etherlab/trunk/net/EtherExamples/examples/SequenceLight.cs =================================================================== --- etherlab/trunk/net/EtherExamples/examples/SequenceLight.cs (nonexistent) +++ etherlab/trunk/net/EtherExamples/examples/SequenceLight.cs (revision 2) @@ -0,0 +1,95 @@ +/****************************************************************************** + * ETHERLAB - FPGA To C# To LABVIEW Bridge * + ****************************************************************************** + * * + * Copyright (C)2012 Mathias Hörtnagl * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program 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 General Public License * + * along with this program. If not, see . * + ******************************************************************************/ +using System; +using System.Threading; + +namespace EtherLab.Examples +{ + /// + /// Demonstartes sample usage of EtherLab. Controlls a sequence + /// light with an EtherLab connection. + /// + class SequenceLight + { + static void Main(string[] args) + { + /** + * Create a new instance of EtherSocket with default + * destination MAC. The first parameter identifies the + * network device to select. + */ + EtherSocket es = new EtherSocket(0, "00:1f:16:01:95:a5"); + + // Indicates, wich LED is on. + byte run = 0x01; + // The current states of the 4 switches. + ushort switches; + + while (true) + { + // Update channel H (LED). + es.update(EChannel.CHANNEL_H, run); + // Send the updated LED data. + es.send(); + + // Read the switch states. + switches = es.read(EChannel.CHANNEL_H); + // If rightmost switch is on, rotate right, else left. + run = set(switches, 0) ? ror(run, 1) : rol(run, 1); + + // Wait, to see the sequence light show happen. + Thread.Sleep(500); + } + } + + /// + /// Checks, if bit is set. + /// + /// The bit field. + /// The bit to check. + /// True, if bit is set. + public static Boolean set(ushort val, int bit) + { + return (val & (1 << bit)) != 0; + } + + /// + /// Bitwise rotate left. + /// + /// The bit field. + /// The number of bits to rotate. + /// Left rotated bit field. + public static byte rol(byte val, int sh) + { + return (byte)(val<> (8 - sh)); + } + + /// + /// Bitwise rotate right. + /// + /// The bit field. + /// The number of bits to rotate. + /// Right rotated bit field. + public static byte ror(byte val, int sh) + { + return (byte)(val >> sh | val << (8 - sh)); + } + } +} \ No newline at end of file Index: etherlab/trunk/xilinx/etherlab.prj =================================================================== --- etherlab/trunk/xilinx/etherlab.prj (nonexistent) +++ etherlab/trunk/xilinx/etherlab.prj (revision 2) @@ -0,0 +1,8 @@ +vhdl work "../vhdl/PCK_CRC32_D4.vhd" +vhdl work "../vhdl/common.vhd" +vhdl work "../vhdl/mac_snd.vhd" +vhdl work "../vhdl/mac_rcv.vhd" +vhdl work "../vhdl/io.vhd" +vhdl work "clock.vhd" +vhdl work "../vhdl/etherlab.vhd" + Index: etherlab/trunk/xilinx/etherlab.ucf =================================================================== --- etherlab/trunk/xilinx/etherlab.ucf (nonexistent) +++ etherlab/trunk/xilinx/etherlab.ucf (revision 2) @@ -0,0 +1,87 @@ +# ==== Primary Clock ==== +NET "clk" LOC = C9 | IOSTANDARD = "LVCMOS33" | TNM_NET = CLK_I; +TIMESPEC TS_CLK_I = PERIOD "clk" 20 ns HIGH 50%; + +NET "clk" CLOCK_DEDICATED_ROUTE = FALSE; +PIN "inst_clock/DCM_SP_INST.CLKIN" CLOCK_DEDICATED_ROUTE = FALSE; + +# ==== Ethernet PHY ==== +NET "E_COL" LOC = "U6" | IOSTANDARD = LVCMOS33; +NET "E_CRS" LOC = "U13" | IOSTANDARD = LVCMOS33; +NET "E_MDC" LOC = "P9" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "E_MDIO" LOC = "U5" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "E_RX_CLK" LOC = "V3" | IOSTANDARD = LVCMOS33 | TNM_NET = "RXCLK_GRP"; +NET "E_RX_DV" LOC = "V2" | IOSTANDARD = LVCMOS33; +NET "E_RXD<0>" LOC = "V8" | IOSTANDARD = LVCMOS33; +NET "E_RXD<1>" LOC = "T11" | IOSTANDARD = LVCMOS33; +NET "E_RXD<2>" LOC = "U11" | IOSTANDARD = LVCMOS33; +NET "E_RXD<3>" LOC = "V14" | IOSTANDARD = LVCMOS33; +NET "E_RX_ER" LOC = "U14" | IOSTANDARD = LVCMOS33; +NET "E_TX_CLK" LOC = "T7" | IOSTANDARD = LVCMOS33 | TNM_NET = "TXCLK_GRP"; +NET "E_TX_EN" LOC = "P15" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "E_TXD<0>" LOC = "R11" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "E_TXD<1>" LOC = "T15" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "E_TXD<2>" LOC = "R5" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "E_TXD<3>" LOC = "T5" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "E_TX_ER" LOC = "R6" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; + +TIMESPEC "TSTXOUT" = FROM "TXCLK_GRP" TO "PADS" 11 ns; +TIMESPEC "TSRXIN" = FROM "PADS" TO "RXCLK_GRP" 10 ns; + +NET "E_TX_CLK" MAXSKEW= 2.0 ns; +NET "E_TX_CLK" PERIOD = 40 ns HIGH 14 ns; +NET "E_TX_CLK" CLOCK_DEDICATED_ROUTE = FALSE; + +NET "E_RX_CLK" MAXSKEW= 2.0 ns; +NET "E_RX_CLK" PERIOD = 40 ns HIGH 14 ns; +NET "E_RX_CLK" CLOCK_DEDICATED_ROUTE = FALSE; + +# ==== DAC/ADC === +NET "SPI_MISO" LOC = "N10" | IOSTANDARD = LVCMOS33 ; +NET "SPI_MOSI" LOC = "T4" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "SPI_SCK" LOC = "U16" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "DAC_CS" LOC = "N8" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; +NET "DAC_CLR" LOC = "P8" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8; + +# == Disable lines === +NET "SF_OE" LOC = "C18" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 2; +NET "SF_CE" LOC = "D16" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 2; +NET "SF_WE" LOC = "D17" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 2; +NET "FPGA_INIT_B" LOC = "T3" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 4; +NET "SPI_SS_B" LOC = "U3" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 6; +NET "AD_CONV" LOC = "P11" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 6; +NET "AMP_CS" LOC = "N7" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 6; + +# ==== 6-pin header J1 - Digital Input ==== +#NET "DI<3>" LOC = "B4" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8; +#NET "DI<2>" LOC = "A4" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8; +#NET "DI<1>" LOC = "D5" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8; +#NET "DI<0>" LOC = "C5" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8; + +# ==== 6-pin header J2 - Digital Output ==== +NET "DO<3>" LOC = "A6" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8; +NET "DO<2>" LOC = "B6" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8; +NET "DO<1>" LOC = "E7" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8; +NET "DO<0>" LOC = "F7" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8; + +# === LEDs === +NET "LED<7>" LOC = "F9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; +NET "LED<6>" LOC = "E9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; +NET "LED<5>" LOC = "D11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; +NET "LED<4>" LOC = "C11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; +NET "LED<3>" LOC = "F11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; +NET "LED<2>" LOC = "E11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; +NET "LED<1>" LOC = "E12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; +NET "LED<0>" LOC = "F12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; + +# === SWITCHES === +NET "SW<0>" LOC = "L13" | IOSTANDARD = LVTTL | PULLUP; +NET "SW<1>" LOC = "L14" | IOSTANDARD = LVTTL | PULLUP; +NET "SW<2>" LOC = "H18" | IOSTANDARD = LVTTL | PULLUP; +NET "SW<3>" LOC = "N17" | IOSTANDARD = LVTTL | PULLUP; + +# === Buttons === +NET "BTN<3>" LOC = "V4" | IOSTANDARD = LVTTL | PULLDOWN; +NET "BTN<2>" LOC = "H13" | IOSTANDARD = LVTTL | PULLDOWN; +NET "BTN<1>" LOC = "K17" | IOSTANDARD = LVTTL | PULLDOWN; +NET "BTN<0>" LOC = "D18" | IOSTANDARD = LVTTL | PULLDOWN; \ No newline at end of file Index: etherlab/trunk/xilinx/etherlab.xst =================================================================== --- etherlab/trunk/xilinx/etherlab.xst (nonexistent) +++ etherlab/trunk/xilinx/etherlab.xst (revision 2) @@ -0,0 +1,56 @@ +set -tmpdir "xst/projnav.tmp" +set -xsthdpdir "xst" +run +-ifn etherlab.prj +-ifmt mixed +-ofn etherlab +-ofmt NGC +-p xc3s500e-4-fg320 +-top etherlab +-opt_mode Speed +-opt_level 1 +-iuc NO +-keep_hierarchy No +-netlist_hierarchy As_Optimized +-rtlview Yes +-glob_opt AllClockNets +-read_cores YES +-write_timing_constraints NO +-cross_clock_analysis NO +-hierarchy_separator / +-bus_delimiter <> +-case Maintain +-slice_utilization_ratio 100 +-bram_utilization_ratio 100 +-verilog2001 YES +-fsm_extract YES -fsm_encoding Auto +-safe_implementation No +-fsm_style LUT +-ram_extract Yes +-ram_style Auto +-rom_extract Yes +-mux_style Auto +-decoder_extract YES +-priority_extract Yes +-shreg_extract YES +-shift_extract YES +-xor_collapse YES +-rom_style Auto +-auto_bram_packing NO +-mux_extract Yes +-resource_sharing YES +-async_to_sync NO +-mult_style Auto +-iobuf YES +-max_fanout 500 +-bufg 24 +-register_duplication YES +-register_balancing No +-slice_packing YES +-optimize_primitives NO +-use_clock_enable Yes +-use_sync_set Yes +-use_sync_reset Yes +-iob Auto +-equivalent_register_removal YES +-slice_utilization_ratio_maxmargin 5 Index: etherlab/trunk/xilinx/upload.cmds =================================================================== --- etherlab/trunk/xilinx/upload.cmds (nonexistent) +++ etherlab/trunk/xilinx/upload.cmds (revision 2) @@ -0,0 +1,6 @@ +setMode -bs +setCable -p auto +identify +assignFile -p 1 -file etherlab.bit +program -p 1 +quit \ No newline at end of file Index: etherlab/trunk/xilinx/clock.vhd =================================================================== --- etherlab/trunk/xilinx/clock.vhd (nonexistent) +++ etherlab/trunk/xilinx/clock.vhd (revision 2) @@ -0,0 +1,95 @@ +-------------------------------------------------------------------------------- +-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. +-------------------------------------------------------------------------------- +-- ____ ____ +-- / /\/ / +-- /___/ \ / Vendor: Xilinx +-- \ \ \/ Version : 13.1 +-- \ \ Application : xaw2vhdl +-- / / Filename : clock.vhd +-- /___/ /\ Timestamp : 02/27/2012 13:36:57 +-- \ \ / \ +-- \___\/\___\ +-- +--Command: xaw2vhdl-st C:\Mathias\smole\etherlab\xilinx\ipcore_dir\.\clock.xaw C:\Mathias\smole\etherlab\xilinx\ipcore_dir\.\clock +--Design Name: clock +--Device: xc3s500e-4fg320 +-- +-- Module clock +-- Generated by Xilinx Architecture Wizard +-- Written for synthesis tool: XST + +library ieee; +use ieee.std_logic_1164.ALL; +use ieee.numeric_std.ALL; +library UNISIM; +use UNISIM.Vcomponents.ALL; + +entity clock is + port ( CLKIN_IN : in std_logic; + RST_IN : in std_logic; + CLKIN_IBUFG_OUT : out std_logic; + CLK0_OUT : out std_logic; + CLK90_OUT : out std_logic); +end clock; + +architecture BEHAVIORAL of clock is + signal CLKFB_IN : std_logic; + signal CLKIN_IBUFG : std_logic; + signal CLK0_BUF : std_logic; + signal CLK90_BUF : std_logic; + signal GND_BIT : std_logic; +begin + GND_BIT <= '0'; + CLKIN_IBUFG_OUT <= CLKIN_IBUFG; + CLK0_OUT <= CLKFB_IN; + CLKIN_IBUFG_INST : IBUFG + port map (I=>CLKIN_IN, + O=>CLKIN_IBUFG); + + CLK0_BUFG_INST : BUFG + port map (I=>CLK0_BUF, + O=>CLKFB_IN); + + CLK90_BUFG_INST : BUFG + port map (I=>CLK90_BUF, + O=>CLK90_OUT); + + DCM_SP_INST : DCM_SP + generic map( CLK_FEEDBACK => "1X", + CLKDV_DIVIDE => 2.0, + CLKFX_DIVIDE => 1, + CLKFX_MULTIPLY => 4, + CLKIN_DIVIDE_BY_2 => FALSE, + CLKIN_PERIOD => 20.000, + CLKOUT_PHASE_SHIFT => "NONE", + DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", + DFS_FREQUENCY_MODE => "LOW", + DLL_FREQUENCY_MODE => "LOW", + DUTY_CYCLE_CORRECTION => TRUE, + FACTORY_JF => x"C080", + PHASE_SHIFT => 0, + STARTUP_WAIT => FALSE) + port map (CLKFB=>CLKFB_IN, + CLKIN=>CLKIN_IBUFG, + DSSEN=>GND_BIT, + PSCLK=>GND_BIT, + PSEN=>GND_BIT, + PSINCDEC=>GND_BIT, + RST=>RST_IN, + CLKDV=>open, + CLKFX=>open, + CLKFX180=>open, + CLK0=>CLK0_BUF, + CLK2X=>open, + CLK2X180=>open, + CLK90=>CLK90_BUF, + CLK180=>open, + CLK270=>open, + LOCKED=>open, + PSDONE=>open, + STATUS=>open); + +end BEHAVIORAL; + + Index: etherlab/trunk/xilinx/etherlab.ut =================================================================== --- etherlab/trunk/xilinx/etherlab.ut (nonexistent) +++ etherlab/trunk/xilinx/etherlab.ut (revision 2) @@ -0,0 +1,22 @@ +-w +-g DebugBitstream:No +-g Binary:no +-g CRC:Enable +-g ConfigRate:1 +-g ProgPin:PullUp +-g DonePin:PullUp +-g TckPin:PullUp +-g TdiPin:PullUp +-g TdoPin:PullUp +-g TmsPin:PullUp +-g UnusedPin:PullDown +-g UserID:0xFFFFFFFF +-g DCMShutdown:Disable +-g StartUpClk:CClk +-g DONE_cycle:4 +-g GTS_cycle:5 +-g GWE_cycle:6 +-g LCK_cycle:NoWait +-g Security:None +-g DonePipe:No +-g DriveDone:No Index: etherlab/trunk/xilinx/Makefile =================================================================== --- etherlab/trunk/xilinx/Makefile (nonexistent) +++ etherlab/trunk/xilinx/Makefile (revision 2) @@ -0,0 +1,47 @@ +#------------------------------------------------------------------------------# +# Xilinx Makefile # +#------------------------------------------------------------------------------# +# Copyright (C) 2012 Mathias Hoertnagl, mathias.hoertnagl@gmail.com # +# # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; either version 3 of the License, or (at your option) # +# any later version. # +# This program 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 General Public License along with # +# this program; if not, see . # +#------------------------------------------------------------------------------# +TOOL_DIR = /cygdrive/c/Xilinx/13.1/ISE_DS/ISE/bin/nt/ + +XST = $(TOOL_DIR)xst.exe +NGDBUILD = $(TOOL_DIR)ngdbuild.exe +MAP = $(TOOL_DIR)map.exe +PAR = $(TOOL_DIR)par.exe +TRCE = $(TOOL_DIR)trce.exe +BITGEN = $(TOOL_DIR)bitgen.exe +IMPACT = $(TOOL_DIR)impact.exe + +upload : etherlab.bit + $(IMPACT) -batch upload.cmds + +build : + -@mkdir xst + -@mkdir xst/projnav.tmp + $(XST) -ifn etherlab.xst -ofn etherlab.syr -intstyle ise + $(NGDBUILD) -intstyle ise -dd ngdbuild -nt timestamp -uc etherlab.ucf \ + -p xc3s500e-fg320-4 etherlab.ngc etherlab.ngd + $(MAP) -intstyle ise -p xc3s500e-fg320-4 -cm area -ir off -pr off -c 100 \ + -o etherlab_map.ncd etherlab.ngd etherlab.pcf + $(PAR) -w -intstyle ise -ol high -t 1 etherlab_map.ncd etherlab.ncd etherlab.pcf + $(TRCE) -intstyle ise -v 3 -s 4 -n 3 -fastpaths -xml etherlab.twx etherlab.ncd \ + -o etherlab.twr etherlab.pcf -ucf etherlab.ucf + $(BITGEN) -intstyle ise -f etherlab.ut etherlab.ncd + +.PHONY: clean +clean : + -@$(RM) *.bgn *.bld *.drc *.cmd_log *.lso *.ncd *.ngc *.ngd *.ngr *.pad \ + *.par *.pcf *.ptwx *.stx *.syr *.twr *.twx *.unroutes *.xpi *.xwbt \ + *.map *.mrp *.xrpt *.csv *.txt *.xml *.html *.log *.ngm *.prm *.cfi *.sig \ No newline at end of file Index: etherlab/trunk/vhdl/PCK_CRC32_D4.vhd =================================================================== --- etherlab/trunk/vhdl/PCK_CRC32_D4.vhd (nonexistent) +++ etherlab/trunk/vhdl/PCK_CRC32_D4.vhd (revision 2) @@ -0,0 +1,86 @@ +-------------------------------------------------------------------------------- +-- Copyright (C) 1999-2008 Easics NV. +-- This source file may be used and distributed without restriction +-- provided that this copyright statement is not removed from the file +-- and that any derivative work contains the original copyright notice +-- and the associated disclaimer. +-- +-- THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS +-- OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +-- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +-- +-- Purpose : synthesizable CRC function +-- * polynomial: (0 1 2 4 5 7 8 10 11 12 16 22 23 26 32) +-- * data width: 4 +-- +-- Info : tools@easics.be +-- http://www.easics.com +-------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; + +package PCK_CRC32_D4 is + -- polynomial: (0 1 2 4 5 7 8 10 11 12 16 22 23 26 32) + -- data width: 4 + -- convention: the first serial bit is D[3] + function nextCRC32_D4 + (Data: std_logic_vector(3 downto 0); + crc: std_logic_vector(31 downto 0)) + return std_logic_vector; +end PCK_CRC32_D4; + + +package body PCK_CRC32_D4 is + + -- polynomial: (0 1 2 4 5 7 8 10 11 12 16 22 23 26 32) + -- data width: 4 + -- convention: the first serial bit is D[3] + function nextCRC32_D4 + (Data: std_logic_vector(3 downto 0); + crc: std_logic_vector(31 downto 0)) + return std_logic_vector is + + variable d: std_logic_vector(3 downto 0); + variable c: std_logic_vector(31 downto 0); + variable newcrc: std_logic_vector(31 downto 0); + + begin + d := Data; + c := crc; + + newcrc(0) := d(0) xor c(28); + newcrc(1) := d(1) xor d(0) xor c(28) xor c(29); + newcrc(2) := d(2) xor d(1) xor d(0) xor c(28) xor c(29) xor c(30); + newcrc(3) := d(3) xor d(2) xor d(1) xor c(29) xor c(30) xor c(31); + newcrc(4) := d(3) xor d(2) xor d(0) xor c(0) xor c(28) xor c(30) xor c(31); + newcrc(5) := d(3) xor d(1) xor d(0) xor c(1) xor c(28) xor c(29) xor c(31); + newcrc(6) := d(2) xor d(1) xor c(2) xor c(29) xor c(30); + newcrc(7) := d(3) xor d(2) xor d(0) xor c(3) xor c(28) xor c(30) xor c(31); + newcrc(8) := d(3) xor d(1) xor d(0) xor c(4) xor c(28) xor c(29) xor c(31); + newcrc(9) := d(2) xor d(1) xor c(5) xor c(29) xor c(30); + newcrc(10) := d(3) xor d(2) xor d(0) xor c(6) xor c(28) xor c(30) xor c(31); + newcrc(11) := d(3) xor d(1) xor d(0) xor c(7) xor c(28) xor c(29) xor c(31); + newcrc(12) := d(2) xor d(1) xor d(0) xor c(8) xor c(28) xor c(29) xor c(30); + newcrc(13) := d(3) xor d(2) xor d(1) xor c(9) xor c(29) xor c(30) xor c(31); + newcrc(14) := d(3) xor d(2) xor c(10) xor c(30) xor c(31); + newcrc(15) := d(3) xor c(11) xor c(31); + newcrc(16) := d(0) xor c(12) xor c(28); + newcrc(17) := d(1) xor c(13) xor c(29); + newcrc(18) := d(2) xor c(14) xor c(30); + newcrc(19) := d(3) xor c(15) xor c(31); + newcrc(20) := c(16); + newcrc(21) := c(17); + newcrc(22) := d(0) xor c(18) xor c(28); + newcrc(23) := d(1) xor d(0) xor c(19) xor c(28) xor c(29); + newcrc(24) := d(2) xor d(1) xor c(20) xor c(29) xor c(30); + newcrc(25) := d(3) xor d(2) xor c(21) xor c(30) xor c(31); + newcrc(26) := d(3) xor d(0) xor c(22) xor c(28) xor c(31); + newcrc(27) := d(1) xor c(23) xor c(29); + newcrc(28) := d(2) xor c(24) xor c(30); + newcrc(29) := d(3) xor c(25) xor c(31); + newcrc(30) := c(26); + newcrc(31) := c(27); + return newcrc; + end nextCRC32_D4; + +end PCK_CRC32_D4; Index: etherlab/trunk/vhdl/mac_snd.vhd =================================================================== --- etherlab/trunk/vhdl/mac_snd.vhd (nonexistent) +++ etherlab/trunk/vhdl/mac_snd.vhd (revision 2) @@ -0,0 +1,239 @@ +-------------------------------------------------------------------------------- +-- ETHERLAB - FPGA To C# To LABVIEW Bridge -- +-------------------------------------------------------------------------------- +-- REFERENCES -- +-- [1] http://tools.ietf.org/html/rfc2460 -- +-- [2] https://en.wikipedia.org/wiki/Ethernet_frame -- +-- [5] http://outputlogic.com/my-stuff/circuit-cellar-january-2010-crc.pdf -- +-- [6] OPB Ethernet Lite Media Access Controller (v1.01b) -- +-- [7] LAN83C185 - 10/100 Ethernet PHY -- +-- [8] Xilinx UG230 -- +-------------------------------------------------------------------------------- +-- Copyright (C)2012 Mathias Hörtnagl -- +-- -- +-- This program is free software: you can redistribute it and/or modify -- +-- it under the terms of the GNU General Public License as published by -- +-- the Free Software Foundation, either version 3 of the License, or -- +-- (at your option) any later version. -- +-- -- +-- This program 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 General Public License -- +-- along with this program. If not, see . -- +-------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.PCK_CRC32_D4.all; +use work.common.all; + +entity mac_snd is + port( + E_TX_CLK : in std_logic; -- Sender Clock. + E_TX_EN : out std_logic; -- Sender Enable. + E_TXD : out std_logic_vector(3 downto 0); -- Sent Data. + E_TX_ER : out std_logic; -- Sent Data Error. + el_chnl : in std_logic_vector(7 downto 0); -- EtherLab channels. + el_data : in data_t; -- EtherLab data. + en : in std_logic -- User Start Send. + ); +end mac_snd; + +architecture rtl of mac_snd is + + type mem_t is array(0 to 14) of std_logic_vector(7 downto 0); + + signal mem : mem_t := ( + -------------------------------------------------------------------------- + -- Host PC MAC Address -- + -------------------------------------------------------------------------- + -- 0x0 - 0x5 + x"00", x"1f", x"16", x"01", x"95", x"5a", + + -------------------------------------------------------------------------- + -- FPGA MAC Address (Xilinx OUI) -- + -------------------------------------------------------------------------- + -- 0x6 - 0xb + x"00", x"0a", x"35", x"00", x"00", x"00", + + -------------------------------------------------------------------------- + -- EtherType Field: 0x0000 (EtherLab) -- + -------------------------------------------------------------------------- + -- 0xc - 0xd + x"00", x"00", + + -------------------------------------------------------------------------- + -- EtherLab Header -- + -------------------------------------------------------------------------- + -- EtherLab Version. + -- Hardware returns Version 2 packets to distinguish them from Version 1 + -- packets sent by the host who captures in promiscuous mode only. This + -- would cause the host to read it's own Version 1 packets as well. + -- 0xe + x"02" + ); + + attribute RAM_STYLE : string; + attribute RAM_STYLE of mem: signal is "BLOCK"; + + type state_t is ( + Idle, -- Wait for signal en. + Preamble, -- 55 55 55 55 55 55 55 5 + StartOfFrame, -- d + Upper, -- Send upper Nibble. + Lower, -- Send lower Nibble. + Channel, -- Send EtherLab channel. + DataU, DataL, -- Send EtherLab data. + FrameCheck, -- No Frame Check for now. + InterframeGap -- Gap between two cosecutive frames (93 Bit). + ); + + type snd_t is record + s : state_t; + crc : std_logic_vector(31 downto 0); -- CRC32 latch. + c : natural range 0 to 63; + a : natural range 0 to 7; + end record; + + signal s, sin : snd_t := snd_t'(Idle, x"ffffffff", 0, 0); +begin + + snd_nsl : process(s, mem, en, el_chnl, el_data) + begin + + sin <= s; + E_TX_EN <= '0'; + E_TXD <= x"0"; + E_TX_ER <= '0'; + + case s.s is + when Idle => + if en = '1' then + sin.c <= 0; + sin.s <= Preamble; + end if; + + ----------------------------------------------------------------------- + -- Ethernet II - Preamble and Start Of Frame. -- + ----------------------------------------------------------------------- + when Preamble => + E_TXD <= x"5"; + E_TX_EN <= '1'; + if s.c = 14 then + sin.c <= 0; + sin.s <= StartOfFrame; + else + sin.c <= s.c + 1; + end if; + + when StartOfFrame => + E_TXD <= x"d"; + E_TX_EN <= '1'; + sin.crc <= x"ffffffff"; + sin.s <= Upper; + + ----------------------------------------------------------------------- + -- Custom Protocol Transmit. -- + ----------------------------------------------------------------------- + when Upper => + E_TXD <= mem(s.c)(3 downto 0); + E_TX_EN <= '1'; + sin.crc <= nextCRC32_D4(mem(s.c)(3 downto 0), s.crc); + sin.s <= Lower; + + when Lower => + E_TXD <= mem(s.c)(7 downto 4); + E_TX_EN <= '1'; + sin.crc <= nextCRC32_D4(mem(s.c)(7 downto 4), s.crc); + if s.c = 14 then + sin.c <= 0; + sin.s <= Channel; + else + sin.c <= s.c + 1; + sin.s <= Upper; + end if; + + ----------------------------------------------------------------------- + -- EtherLab - Channel Flags. -- + ----------------------------------------------------------------------- + when Channel => + E_TXD <= el_chnl(4*s.c+3 downto 4*s.c); + E_TX_EN <= '1'; + sin.crc <= nextCRC32_D4(el_chnl(4*s.c+3 downto 4*s.c), s.crc); + if s.c = 1 then + sin.c <= 0; + sin.a <= 0; + sin.s <= DataU; + else + sin.c <= s.c + 1; + end if; + + ----------------------------------------------------------------------- + -- EtherLab - Data. 8 channels á 16 bit. -- + ----------------------------------------------------------------------- + when DataU => + E_TXD <= el_data(s.a)(4*s.c+11 downto 4*s.c+8); + E_TX_EN <= '1'; + sin.crc <= nextCRC32_D4(el_data(s.a)(4*s.c+11 downto 4*s.c+8), s.crc); + if s.c = 1 then + sin.c <= 0; + sin.s <= DataL; + else + sin.c <= s.c + 1; + end if; + + when DataL => + E_TXD <= el_data(s.a)(4*s.c+3 downto 4*s.c); + E_TX_EN <= '1'; + sin.crc <= nextCRC32_D4(el_data(s.a)(4*s.c+3 downto 4*s.c), s.crc); + if s.c = 1 then + sin.c <= 0; + if s.a = 7 then + sin.a <= 0; + sin.s <= FrameCheck; + else + sin.a <= s.a + 1; + sin.s <= DataU; + end if; + else + sin.c <= s.c + 1; + end if; + + ----------------------------------------------------------------------- + -- Ethernet II - Frame Check. -- + ----------------------------------------------------------------------- + when FrameCheck => + E_TXD <= not s.crc(4*s.c+3 downto 4*s.c); + E_TX_EN <= '1'; + if s.c = 7 then + sin.c <= 0; + sin.s <= InterframeGap; + else + sin.c <= s.c + 1; + end if; + + ----------------------------------------------------------------------- + -- Ethernet II - Interframe Gap. -- + ----------------------------------------------------------------------- + when InterframeGap => + if s.c = 23 then + sin.c <= 0; + sin.s <= Idle; + else + sin.c <= s.c + 1; + end if; + end case; + end process; + + snd_reg : process(E_TX_CLK) + begin + if rising_edge(E_TX_CLK) then + s <= sin; + end if; + end process; +end rtl; \ No newline at end of file Index: etherlab/trunk/vhdl/etherlab.vhd =================================================================== --- etherlab/trunk/vhdl/etherlab.vhd (nonexistent) +++ etherlab/trunk/vhdl/etherlab.vhd (revision 2) @@ -0,0 +1,213 @@ +-------------------------------------------------------------------------------- +-- ETHERLAB - FPGA To C# To LABVIEW Bridge -- +-------------------------------------------------------------------------------- +-- Copyright (C)2012 Mathias Hörtnagl -- +-- -- +-- This program is free software: you can redistribute it and/or modify -- +-- it under the terms of the GNU General Public License as published by -- +-- the Free Software Foundation, either version 3 of the License, or -- +-- (at your option) any later version. -- +-- -- +-- This program 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 General Public License -- +-- along with this program. If not, see . -- +-------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.common.all; + +entity etherlab is + port( + clk : in std_logic; + + E_COL : in std_logic; -- Collision Detect. + E_CRS : in std_logic; -- Carrier Sense. + E_MDC : out std_logic; + E_MDIO : in std_logic; + E_RX_CLK : in std_logic; -- Receiver Clock. + E_RX_DV : in std_logic; -- Received Data Valid. + E_RXD : in std_logic_vector(3 downto 0); -- Received Nibble. + E_RX_ER : in std_logic; -- Received Data Error. + E_TX_CLK : in std_logic; -- Sender Clock. + E_TX_EN : out std_logic; -- Sender Enable. + E_TXD : out std_logic_vector(3 downto 0); -- Sent Data. + E_TX_ER : out std_logic; -- sent Data Error. + + SPI_MISO : in std_logic; -- Serial data in. + SPI_MOSI : out std_logic; -- Serial data out. + SPI_SCK : out std_logic; -- Serial Interface clock. + DAC_CS : out std_logic; -- D/A Converter chip sel. + DAC_CLR : out std_logic; -- D/A Converter reset. + + SF_OE : out std_logic; -- StrataFlash. + SF_CE : out std_logic; + SF_WE : out std_logic; + FPGA_INIT_B : out std_logic; + AD_CONV : out std_logic; -- A/D Converter chip sel. + SPI_SS_B : out std_logic; + AMP_CS : out std_logic; -- Pre-Amplifier chip sel. + + DI : in std_logic_vector(3 downto 0); -- 6-pin header J1. + DO : out std_logic_vector(3 downto 0); -- 6-pin header J2. + SW : in std_logic_vector(3 downto 0); -- SWITCHES. + BTN : in std_logic_vector(3 downto 0); -- BUTTONS. + LED : out std_logic_vector(7 downto 0) -- LEDs. + ); +end etherlab; + +architecture rtl of etherlab is + + component clock + port( + clkin_in : in std_logic; + rst_in : in std_logic; + clkin_ibufg_out : out std_logic; + clk0_out : out std_logic; + clk90_out : out std_logic + ); + end component; + + component mac_rcv is + port( + E_RX_CLK : in std_logic; -- Receiver Clock. + E_RX_DV : in std_logic; -- Received Data Valid. + E_RXD : in std_logic_vector(3 downto 0); -- Received Nibble. + el_chnl : out std_logic_vector(7 downto 0); -- EtherLab channels. + el_data : out data_t; -- EtherLab channel data. + el_dv : out std_logic; -- EtherLab data valid. + el_ack : in std_logic -- Packet reception ACK. + ); + end component; + + component mac_snd is + port( + E_TX_CLK : in std_logic; -- Sender Clock. + E_TX_EN : out std_logic; -- Sender Enable. + E_TXD : out std_logic_vector(3 downto 0); -- Sent Data. + E_TX_ER : out std_logic; -- Sent Data Error. + el_chnl : in std_logic_vector(7 downto 0); -- EtherLab channels. + el_data : in data_t; -- EtherLab data. + en : in std_logic -- User Start Send. + ); + end component; + + component io is + port( + clk : in std_logic; + clk90 : in std_logic; + -- EtherLab data received. + el_chnl : in std_logic_vector(7 downto 0); + el_data : in data_t; + el_dv : in std_logic; + el_ack : out std_logic; + -- EtherLab data to send. + el_snd_chnl : out std_logic_vector(7 downto 0); + el_snd_data : out data_t; + el_snd_en : out std_logic; + -- DAC/ADC Connections. + SPI_MISO : in std_logic; + SPI_MOSI : out std_logic; + SPI_SCK : out std_logic; + DAC_CS : out std_logic; + DAC_CLR : out std_logic; + AD_CONV : out std_logic; + AMP_CS : out std_logic; + -- Digital lines. + DI : in std_logic_vector(3 downto 0); + DO : out std_logic_vector(3 downto 0); + -- SWITCHES. + SW : in std_logic_vector(3 downto 0); + -- BUTTONS. + BTN : in std_logic_vector(3 downto 0); + -- LEDs. + LED : out std_logic_vector(7 downto 0) + ); + end component; + + signal el_chnl : std_logic_vector(7 downto 0); -- EtherLab channels. + signal el_data : data_t; -- EtherLab data. + signal el_dv : std_logic; -- Received data valid. + signal el_ack : std_logic; -- Packet reception ACK. + + signal el_snd_chnl : std_logic_vector(7 downto 0); -- EtherLab Send channels. + signal el_snd_data : data_t; -- EhterLab Send data. + signal el_snd_en : std_logic; -- Enable sending. + + signal clk90 : std_logic; -- Clock shiftet 90 degree. + signal clk0 : std_logic; +begin + + SF_OE <= '1'; -- Turn off Strata Flash. + SF_WE <= '1'; + SF_CE <= '1'; + FPGA_INIT_B <= '1'; -- Turn off Platform Flash. + SPI_SS_B <= '1'; -- Turn off Serial Flash. + + E_MDC <= '0'; + + inst_clock: clock port map( + clkin_in => clk, + rst_in => '0', + clkin_ibufg_out => open, + clk0_out => clk0, + clk90_out => clk90 + ); + + mac_receive : mac_rcv port map( + E_RX_CLK => E_RX_CLK, + E_RX_DV => E_RX_DV, + E_RXD => E_RXD, + el_chnl => el_chnl, + el_data => el_data, + el_dv => el_dv, + el_ack => el_ack + ); + + mac_send : mac_snd port map( + E_TX_CLK => E_TX_CLK, + E_TX_EN => E_TX_EN, + E_TXD => E_TXD, + E_TX_ER => E_TX_ER, + en => el_snd_en, + el_chnl => el_snd_chnl, + el_data => el_snd_data + ); + + ioio : io port map( + clk => clk0, + clk90 => clk90, + -- EtherLab data received. + el_chnl => el_chnl, + el_data => el_data, + el_dv => el_dv, + el_ack => el_ack, + -- EtherLab data to send. + el_snd_chnl => el_snd_chnl, + el_snd_data => el_snd_data, + el_snd_en => el_snd_en, + -- DAC/ADC Connections. + SPI_MISO => SPI_MISO, + SPI_MOSI => SPI_MOSI, + SPI_SCK => SPI_SCK, + DAC_CS => DAC_CS, + DAC_CLR => DAC_CLR, + AD_CONV => AD_CONV, + AMP_CS => AMP_CS, + -- Digital lines. + DI => DI, + DO => DO, + -- SWITCHES. + SW => SW, + -- BUTTONS. + BTN => BTN, + -- LEDs. + LED => LED + ); +end rtl; \ No newline at end of file Index: etherlab/trunk/vhdl/io.vhd =================================================================== --- etherlab/trunk/vhdl/io.vhd (nonexistent) +++ etherlab/trunk/vhdl/io.vhd (revision 2) @@ -0,0 +1,300 @@ +-------------------------------------------------------------------------------- +-- ETHERLAB - FPGA To C# To LABVIEW Bridge -- +-------------------------------------------------------------------------------- +-- REFERNCES -- +-- [1] LTC2604/LTC2614/LTC2624 Quad 16-Bit Rail-to-Rail DACs -- +-- [2] Xilinx UG230 -- +-- [3] LTC6912 Dual Programmable Gain Amplifiers -- +-- [4] LTC1407/LTC1407A Serial 12-Bit/14-Bit, 3Msps ADCs -- +-------------------------------------------------------------------------------- +-- Copyright (C)2012 Mathias Hörtnagl -- +-- -- +-- This program is free software: you can redistribute it and/or modify -- +-- it under the terms of the GNU General Public License as published by -- +-- the Free Software Foundation, either version 3 of the License, or -- +-- (at your option) any later version. -- +-- -- +-- This program 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 General Public License -- +-- along with this program. If not, see . -- +-------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.common.all; + +entity io is + port( + clk : in std_logic; + clk90 : in std_logic; + -- EtherLab data received. + el_chnl : in std_logic_vector(7 downto 0); + el_data : in data_t; + el_dv : in std_logic; + el_ack : out std_logic; + -- EtherLab data to send. + el_snd_chnl : out std_logic_vector(7 downto 0); + el_snd_data : out data_t; + el_snd_en : out std_logic; + -- DAC/ADC Connections. + SPI_MISO : in std_logic; + SPI_MOSI : out std_logic; + SPI_SCK : out std_logic; + DAC_CS : out std_logic; + DAC_CLR : out std_logic; + AD_CONV : out std_logic; + AMP_CS : out std_logic; + -- Digital lines. + DI : in std_logic_vector(3 downto 0); + DO : out std_logic_vector(3 downto 0); + -- SWITCHES. + SW : in std_logic_vector(3 downto 0); + -- BUTTONS. + BTN : in std_logic_vector(3 downto 0); + -- LEDs. + LED : out std_logic_vector(7 downto 0) + ); +end io; + +architecture rtl of io is + + ----------------------------------------------------------------------------- + -- SETTING: -- + -- + FREQ: Clock frequency. Usually 50 MHz. -- + -- + PULSE_WIDTH: Time between two EtherLab transmissions. -- + ----------------------------------------------------------------------------- + constant FREQ : natural := 50; -- [MHz] Frequency. + constant PULSE_WIDTH : natural := 100; -- [msec] Time between two sends. + + constant CYCLES_PER_MSEC : natural := 1000000/FREQ; + + type state_t is (Idle, Ready, AnalogOut, Send); + + type reg_t is record + s : state_t; + chnl : std_logic_vector(7 downto 0); -- Channel latch. + ao : std_logic_vector(23 downto 4); -- Analog out register. + do : std_logic_vector(3 downto 0); -- Digital out register. + led : std_logic_vector(7 downto 0); -- LED register. + c : natural range 0 to 23; + end record; + + type snd_state_t is (Idle, Pulse, Transmit); + + type snd_t is record + s : snd_state_t; + d : data_t; -- EtherLab data struct. + q : natural range 0 to CYCLES_PER_MSEC-1; -- Milliseconds counter. + p : natural range 0 to PULSE_WIDTH-1; -- Pulse counter. + end record; + + signal r, rin : reg_t := reg_t'(Idle, x"00", x"00000", x"0", x"00", 0); + signal s, sin : snd_t := snd_t'(Idle, (others => (others => '0')), 0,0); +begin + + snd : process(s, SW, BTN) + begin + + sin <= s; + + el_snd_en <= '0'; -- Turn off Ethernet packet sending. + + case s.s is + + when Idle => + if s.q = (CYCLES_PER_MSEC-1) then + sin.q <= 0; + if s.p = (PULSE_WIDTH-1) then + sin.p <= 0; + sin.s <= Pulse; + else + sin.p <= s.p + 1; + end if; + else + sin.q <= s.q + 1; + end if; + + when Pulse => + sin.d(CHANNEL_E) <= x"000" & DI; -- Sample digital input. + sin.d(CHANNEL_G) <= x"000" & BTN; -- Sample buttons. + sin.d(CHANNEL_H) <= x"000" & SW; -- Sample switches. + sin.s <= Transmit; + + when Transmit => + el_snd_en <= '1'; -- Send Ethernet packet. + sin.s <= Idle; + + end case; + end process; + + el_snd_chnl <= "11010000"; + el_snd_data <= s.d; + + + nsl : process(r, el_chnl, el_data, el_dv, clk90, SPI_MISO) + + -- DAC Commands and Addresses. + constant CMD_UP : std_logic_vector(3 downto 0) := "0011"; + constant ADR_OA : std_logic_vector(3 downto 0) := "0000"; + constant ADR_OB : std_logic_vector(3 downto 0) := "0001"; + constant ADR_OC : std_logic_vector(3 downto 0) := "0010"; + constant ADR_OD : std_logic_vector(3 downto 0) := "0011"; + begin + + rin <= r; + + SPI_MOSI <= r.ao(23); -- Send always the MSBit of the data register. + SPI_SCK <= '0'; -- Pull down SPI clock. + DAC_CLR <= '1'; -- Disable D/A Converter. + DAC_CS <= '1'; + AD_CONV <= '0'; -- Disable A/D Converter. + AMP_CS <= '1'; -- Disable Pre Amplifier. + + el_ack <= '0'; -- Ethernet receiver data ready ACK. + + case r.s is + when Idle => + if el_dv = '1' then + rin.chnl <= el_chnl; + rin.s <= Ready; + end if; + + -- IMPROVE: Merge Ready and AnalogOut states. + when Ready => + -------------------------------------------------------------------- + -- LED Control -- + -------------------------------------------------------------------- + if isSet(r.chnl, CHANNEL_H) then + rin.led <= el_data(CHANNEL_H)(7 downto 0); + rin.chnl(CHANNEL_H) <= '0'; + end if; + -------------------------------------------------------------------- + -- Digital Out Control -- + -------------------------------------------------------------------- + if isSet(r.chnl, CHANNEL_G) then + rin.do <= el_data(CHANNEL_G)(3 downto 0); + rin.chnl(CHANNEL_G) <= '0'; + end if; + -------------------------------------------------------------------- + -- Analog Out Control -- + -------------------------------------------------------------------- + if r.chnl(3 downto 0) /= x"0" then + rin.s <= AnalogOut; + else + rin.s <= Idle; + end if; + + ----------------------------------------------------------------------- + -- Analog Out Control -- + ----------------------------------------------------------------------- + -- Send data to DAC. Since all DACs are controlled via a singe serial + -- interface, the setting of new data follows the following precedence: + -- A > B > C > D. Thus if data is ready for analog output A, it will be + -- sent first. Next is analog output B, then C and finally D. + when AnalogOut => + if isSet(r.chnl, CHANNEL_A) then + rin.ao <= CMD_UP & ADR_OA & el_data(CHANNEL_A)(11 downto 0); + rin.chnl(CHANNEL_A) <= '0'; -- Clear channel flag. + rin.s <= Send; + elsif isSet(r.chnl, CHANNEL_B) then + rin.ao <= CMD_UP & ADR_OB & el_data(CHANNEL_B)(11 downto 0); + rin.chnl(CHANNEL_B) <= '0'; + rin.s <= Send; + elsif isSet(r.chnl, CHANNEL_C) then + rin.ao <= CMD_UP & ADR_OC & el_data(CHANNEL_C)(11 downto 0); + rin.chnl(CHANNEL_C) <= '0'; + rin.s <= Send; + elsif isSet(r.chnl, CHANNEL_D) then + rin.ao <= CMD_UP & ADR_OD & el_data(CHANNEL_D)(11 downto 0); + rin.chnl(CHANNEL_D) <= '0'; + rin.s <= Send; + else + rin.s <= Idle; -- All flags are cleared and DACs are updated. + end if; + + -- To send data at maximum speed, we send clk90, wich is the clock + -- signal phase shifted by 90 degree. This is necessary to meet the + -- timing constraints t1 and t2 defined in [1]. + when Send => + DAC_CS <= '0'; + SPI_SCK <= clk90; + rin.ao <= r.ao(22 downto 4) & '0'; + if r.c = 23 then + rin.c <= 0; + rin.s <= AnalogOut; + else + rin.c <= r.c + 1; + rin.s <= Send; + end if; + + ----------------------------------------------------------------------- + -- TODO: Analog In Control -- + ----------------------------------------------------------------------- + -- Pulse the ADC and capture the data from the last pulse. + -- when Pulse => + -- AD_CONV <= '1'; + -- SPI_SCK <= clk90; + -- rin.c <= 0; + -- rin.d(CHANNEL_E) <= x"000" & DI; -- Sample digital input. + -- rin.d(CHANNEL_G) <= x"000" & BTN; -- Sample buttons. + -- rin.d(CHANNEL_H) <= x"000" & SW; -- Sample switches. + -- rin.s <= Transmit; --Wait0; + + -- when Wait0 => + -- SPI_SCK <= clk90; + -- if r.c = 1 then + -- rin.c <= 0; + -- rin.s <= Receive0; + -- else + -- rin.c <= r.c + 1; + -- end if; + + -- when Receive0 => + -- SPI_SCK <= clk90; + -- rin.d(CHANNEL_A) <= r.d(CHANNEL_A)(15 downto 1) & SPI_MISO; + -- if r.c = 13 then + -- rin.c <= 0; + -- rin.s <= Wait1; + -- else + -- rin.c <= r.c + 1; + -- end if; + + -- when Wait1 => + -- SPI_SCK <= clk90; + -- if r.c = 1 then + -- rin.c <= 0; + -- rin.s <= Receive1; + -- else + -- rin.c <= r.c + 1; + -- end if; + + -- when Receive1 => + -- SPI_SCK <= clk90; + -- rin.d(CHANNEL_B) <= r.d(CHANNEL_B)(15 downto 1) & SPI_MISO; + -- if r.c = 13 then + -- rin.c <= 0; + -- rin.s <= Transmit; + -- else + -- rin.c <= r.c + 1; + -- end if; + + end case; + end process; + + DO <= r.do; + LED <= r.led; + + reg : process(clk) + begin + if rising_edge(clk) then + r <= rin; + s <= sin; + end if; + end process; +end rtl; \ No newline at end of file Index: etherlab/trunk/vhdl/common.vhd =================================================================== --- etherlab/trunk/vhdl/common.vhd (nonexistent) +++ etherlab/trunk/vhdl/common.vhd (revision 2) @@ -0,0 +1,50 @@ +-------------------------------------------------------------------------------- +-- EtherLab Common Package -- +-------------------------------------------------------------------------------- +-- Copyright (C)2012 Mathias Hörtnagl -- +-- -- +-- This program is free software: you can redistribute it and/or modify -- +-- it under the terms of the GNU General Public License as published by -- +-- the Free Software Foundation, either version 3 of the License, or -- +-- (at your option) any later version. -- +-- -- +-- This program 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 General Public License -- +-- along with this program. If not, see . -- +-------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package common is + + -- Array for channel data. + type data_t is array(7 downto 0) of std_logic_vector(15 downto 0); + + -- Channel constants. + constant CHANNEL_A : natural range 0 to 7 := 0; + constant CHANNEL_B : natural range 0 to 7 := 1; + constant CHANNEL_C : natural range 0 to 7 := 2; + constant CHANNEL_D : natural range 0 to 7 := 3; + constant CHANNEL_E : natural range 0 to 7 := 4; + constant CHANNEL_F : natural range 0 to 7 := 5; + constant CHANNEL_G : natural range 0 to 7 := 6; + constant CHANNEL_H : natural range 0 to 7 := 7; + + -- Check, if channel flag is set. + function isSet(el_chnl : std_logic_vector; channel : natural) return boolean; +end common; + +package body common is + + -- Check, if channel flag is set. + function isSet(el_chnl : std_logic_vector; channel : natural) + return boolean is + begin + return (el_chnl(channel) = '1'); + end; +end common; \ No newline at end of file Index: etherlab/trunk/vhdl/mac_rcv.vhd =================================================================== --- etherlab/trunk/vhdl/mac_rcv.vhd (nonexistent) +++ etherlab/trunk/vhdl/mac_rcv.vhd (revision 2) @@ -0,0 +1,199 @@ +-------------------------------------------------------------------------------- +-- ETHERLAB - FPGA To C# To LABVIEW Bridge -- +-------------------------------------------------------------------------------- +-- REFERENCES -- +-- [1] http://tools.ietf.org/html/rfc2460 -- +-- [2] https://en.wikipedia.org/wiki/Ethernet_frame -- +-- [5] http://outputlogic.com/my-stuff/circuit-cellar-january-2010-crc.pdf -- +-- [6] OPB Ethernet Lite Media Access Controller (v1.01b) -- +-- [7] LAN83C185 - 10/100 Ethernet PHY -- +-- [8] Xilinx UG230 -- +-------------------------------------------------------------------------------- +-- Copyright (C)2012 Mathias Hörtnagl -- +-- -- +-- This program is free software: you can redistribute it and/or modify -- +-- it under the terms of the GNU General Public License as published by -- +-- the Free Software Foundation, either version 3 of the License, or -- +-- (at your option) any later version. -- +-- -- +-- This program 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 General Public License -- +-- along with this program. If not, see . -- +-------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.common.all; + +entity mac_rcv is + port( + E_RX_CLK : in std_logic; -- Receiver Clock. + E_RX_DV : in std_logic; -- Received Data Valid. + E_RXD : in std_logic_vector(3 downto 0); -- Received Nibble. + el_chnl : out std_logic_vector(7 downto 0); -- EtherLab channels. + el_data : out data_t; -- EtherLab channel data. + el_dv : out std_logic; -- EtherLab data valid. + el_ack : in std_logic -- Packet reception ACK. + ); +end mac_rcv; + +architecture rtl of mac_rcv is + + type state_t is ( + Preamble, StartOfFrame, -- 7 Bytes 0x55, 1 Byte 0x5d. + MACS, -- 12 Byte MAC addresses. + EtherTypeCheck, -- Next Protocol EtherLab? + Version, -- EtherLab - Version. + Channel, -- EtherLab - Channel. + DataU, DataL, -- EtherLab - Channel data. + Notify -- Inform other hardware components. + ); + + type rcv_t is record + s : state_t; + chnl : std_logic_vector(7 downto 0); -- EtherLab channel field. + d : data_t; -- Channel data. + c : natural range 0 to 23; + a : natural range 0 to 7; + end record; + + signal r, rin : rcv_t + := rcv_t'(Preamble, x"00", (others => (others => '0')), 0, 0); +begin + + rcv_nsl : process(r, E_RX_DV, E_RXD, el_ack) + begin + + rin <= r; + el_dv <= '0'; + + if E_RX_DV = '1' then + case r.s is + + -------------------------------------------------------------------- + -- Ethernet II - Preamble and Start Of Frame. -- + -------------------------------------------------------------------- + when Preamble => + if E_RXD = x"5" then + if r.c = 14 then + rin.c <= 0; + rin.s <= StartOfFrame; + else + rin.c <= r.c + 1; + end if; + else + rin.c <= 0; + end if; + + when StartOfFrame => + if E_RXD = x"d" then + rin.s <= MACS; + else + rin.s <= Preamble; + end if; + + -------------------------------------------------------------------- + -- Ethernet II - 12 Byte MAC addresses. -- + -------------------------------------------------------------------- + when MACS => + if r.c = 23 then + rin.c <= 0; + rin.s <= EtherTypeCheck; + else + rin.c <= r.c + 1; + end if; + + -------------------------------------------------------------------- + -- Ethernet II - Next Layer EtherLab? -- + -------------------------------------------------------------------- + when EtherTypeCheck => + if E_RXD = x"0" then + if r.c = 3 then + rin.c <= 0; + rin.s <= Version; + else + rin.c <= r.c + 1; + end if; + else + rin.c <= 0; + rin.s <= Preamble; + end if; + + -------------------------------------------------------------------- + -- EtherLab - Version -- + -------------------------------------------------------------------- + when Version => + if r.c = 1 then + rin.c <= 0; + rin.s <= Channel; + else + rin.c <= r.c + 1; + end if; + + -------------------------------------------------------------------- + -- EtherLab - Channel Flags. -- + -------------------------------------------------------------------- + when Channel => + rin.chnl(7 downto 0) <= E_RXD & r.chnl(7 downto 4); + if r.c = 1 then + rin.c <= 0; + rin.a <= 0; + rin.s <= DataU; + else + rin.c <= r.c + 1; + end if; + + -------------------------------------------------------------------- + -- EtherLab - Data. 8 channels á 16 bit. -- + -------------------------------------------------------------------- + when DataU => + rin.d(r.a)(15 downto 8) <= E_RXD & r.d(r.a)(15 downto 12); + if r.c = 1 then + rin.c <= 0; + rin.s <= DataL; + else + rin.c <= r.c + 1; + end if; + + when DataL => + rin.d(r.a)(7 downto 0) <= E_RXD & r.d(r.a)(7 downto 4); + if r.c = 1 then + rin.c <= 0; + if r.a = 7 then + rin.a <= 0; + rin.s <= Notify; + else + rin.a <= r.a + 1; + rin.s <= DataU; + end if; + else + rin.c <= r.c + 1; + end if; + + -------------------------------------------------------------------- + -- Notification -- + -------------------------------------------------------------------- + when Notify => + el_dv <= '1'; + rin.s <= Preamble; + + end case; + end if; + end process; + + snd_reg : process(E_RX_CLK) + begin + if rising_edge(E_RX_CLK) then + r <= rin; + end if; + end process; + + el_chnl <= r.chnl; + el_data <= r.d; +end rtl; \ No newline at end of file Index: etherlab/trunk/lab/src/EtherLab.lvproj =================================================================== --- etherlab/trunk/lab/src/EtherLab.lvproj (nonexistent) +++ etherlab/trunk/lab/src/EtherLab.lvproj (revision 2) @@ -0,0 +1,19 @@ + + + + true + true + false + 0 + Mein Computer/VI-Server + Mein Computer/VI-Server + true + true + false + + + + + + + Index: etherlab/trunk/lab/src/Receive/Read_Bool.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Receive/Read_Bool.vi =================================================================== --- etherlab/trunk/lab/src/Receive/Read_Bool.vi (nonexistent) +++ etherlab/trunk/lab/src/Receive/Read_Bool.vi (revision 2)
etherlab/trunk/lab/src/Receive/Read_Bool.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/Receive/Read_Short.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Receive/Read_Short.vi =================================================================== --- etherlab/trunk/lab/src/Receive/Read_Short.vi (nonexistent) +++ etherlab/trunk/lab/src/Receive/Read_Short.vi (revision 2)
etherlab/trunk/lab/src/Receive/Read_Short.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/Receive/Read.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Receive/Read.vi =================================================================== --- etherlab/trunk/lab/src/Receive/Read.vi (nonexistent) +++ etherlab/trunk/lab/src/Receive/Read.vi (revision 2)
etherlab/trunk/lab/src/Receive/Read.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/Controls/DigitalIn.ctl =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Controls/DigitalIn.ctl =================================================================== --- etherlab/trunk/lab/src/Controls/DigitalIn.ctl (nonexistent) +++ etherlab/trunk/lab/src/Controls/DigitalIn.ctl (revision 2)
etherlab/trunk/lab/src/Controls/DigitalIn.ctl Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/Controls/DigitalOut.ctl =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Controls/DigitalOut.ctl =================================================================== --- etherlab/trunk/lab/src/Controls/DigitalOut.ctl (nonexistent) +++ etherlab/trunk/lab/src/Controls/DigitalOut.ctl (revision 2)
etherlab/trunk/lab/src/Controls/DigitalOut.ctl Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/Controls/AnalogOut.ctl =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Controls/AnalogOut.ctl =================================================================== --- etherlab/trunk/lab/src/Controls/AnalogOut.ctl (nonexistent) +++ etherlab/trunk/lab/src/Controls/AnalogOut.ctl (revision 2)
etherlab/trunk/lab/src/Controls/AnalogOut.ctl Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/EtherLab.mnu =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/EtherLab.mnu =================================================================== --- etherlab/trunk/lab/src/EtherLab.mnu (nonexistent) +++ etherlab/trunk/lab/src/EtherLab.mnu (revision 2)
etherlab/trunk/lab/src/EtherLab.mnu Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/EtherLab.lvlps =================================================================== --- etherlab/trunk/lab/src/EtherLab.lvlps (nonexistent) +++ etherlab/trunk/lab/src/EtherLab.lvlps (revision 2) @@ -0,0 +1,3 @@ +[Projektfenster_Daten] +ProjectExplorer.ClassicPosition[String] = "249,228,649,749" + Index: etherlab/trunk/lab/src/EtherLab.aliases =================================================================== --- etherlab/trunk/lab/src/EtherLab.aliases (nonexistent) +++ etherlab/trunk/lab/src/EtherLab.aliases (revision 2) @@ -0,0 +1,3 @@ +[Mein Computer] +Mein Computer = "192.168.178.30" + Index: etherlab/trunk/lab/src/Send/Update.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Send/Update.vi =================================================================== --- etherlab/trunk/lab/src/Send/Update.vi (nonexistent) +++ etherlab/trunk/lab/src/Send/Update.vi (revision 2)
etherlab/trunk/lab/src/Send/Update.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/Send/Send.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Send/Send.vi =================================================================== --- etherlab/trunk/lab/src/Send/Send.vi (nonexistent) +++ etherlab/trunk/lab/src/Send/Send.vi (revision 2)
etherlab/trunk/lab/src/Send/Send.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/Send/Update_Double.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Send/Update_Double.vi =================================================================== --- etherlab/trunk/lab/src/Send/Update_Double.vi (nonexistent) +++ etherlab/trunk/lab/src/Send/Update_Double.vi (revision 2)
etherlab/trunk/lab/src/Send/Update_Double.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/Send/Update_Bool.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Send/Update_Bool.vi =================================================================== --- etherlab/trunk/lab/src/Send/Update_Bool.vi (nonexistent) +++ etherlab/trunk/lab/src/Send/Update_Bool.vi (revision 2)
etherlab/trunk/lab/src/Send/Update_Bool.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/Send/Update_Short.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/Send/Update_Short.vi =================================================================== --- etherlab/trunk/lab/src/Send/Update_Short.vi (nonexistent) +++ etherlab/trunk/lab/src/Send/Update_Short.vi (revision 2)
etherlab/trunk/lab/src/Send/Update_Short.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/src/EtherLab.lvlib =================================================================== --- etherlab/trunk/lab/src/EtherLab.lvlib (nonexistent) +++ etherlab/trunk/lab/src/EtherLab.lvlib (revision 2) @@ -0,0 +1,30 @@ + + + EtherLab.mnu + + #1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!(]!!!*Q(C=\>8"<2MR%!813:!!O;K$1#V-#WJ",5Q,OPKI&K9&N;!7JA7VI";=JQVBZ"4F%#-ZG/O26X_ZZ$/87%>M\6P%FXB^VL\_NHV=@X<^39O0^N(_<8NZOEH@@=^_CM?,3)VK63LD->8LS%=_]J'0@/1N<XH,7^\SFJ?]Z#5P?=F,HP+5JTTF+5`Z>MB$(P+1)YX*RU2DU$(![)Q3YW.YBG>YBM@8'*\B':\B'2Z>9HC':XC':XD=&M-T0--T0-.DK%USWS(H'2\$2`-U4`-U4`/9-JKH!>JE<?!W#%;UC_WE?:KH?:R']T20]T20]\A=T>-]T>-]T?/7<66[UTQ//9^BIHC+JXC+JXA-(=640-640-6DOCC?YCG)-G%:(#(+4;6$_6)]R?.8&%`R&%`R&)^,WR/K<75?GM=BZUG?Z%G?Z%E?1U4S*%`S*%`S'$;3*XG3*XG3RV320-G40!G3*D6^J-(3D;F4#J,(T\:<=HN+P5FS/S,7ZIWV+7.NNFC<+.<GC0819TX-7!]JVO,(7N29CR6L%7,^=<(1M4#R*IFV][.DX(X?V&6>V&G>V&%>V&\N(L@_Z9\X_TVONVN=L^?Y8#ZR0J`D>$L&]8C-Q_%1_`U_>LP>WWPAO_0NB@$TP@4C`%`KH@[8`A@PRPA=PYZLD8Y![_ML^!!!!!! + EtherLab + 1.0.0.0 + + 1 + + + + + + + + 1 + + + + + + 1 + + + + + + + Index: etherlab/trunk/lab/src/EtherSocket.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/src/EtherSocket.vi =================================================================== --- etherlab/trunk/lab/src/EtherSocket.vi (nonexistent) +++ etherlab/trunk/lab/src/EtherSocket.vi (revision 2)
etherlab/trunk/lab/src/EtherSocket.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: etherlab/trunk/lab/examples/UDP Sender.vi =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: etherlab/trunk/lab/examples/UDP Sender.vi =================================================================== --- etherlab/trunk/lab/examples/UDP Sender.vi (nonexistent) +++ etherlab/trunk/lab/examples/UDP Sender.vi (revision 2)
etherlab/trunk/lab/examples/UDP Sender.vi Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.