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.
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// 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.
+ ///
+ ///
+ ///
+ ///
+ 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.
+ ///
+ ///
+ /// 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.
+ ///
+ ///
+ 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)
+ /// /**
+ /// * 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();
+ ///
+ ///
+ /// /**
+ /// * 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);
+ ///
+ /// + /// +-----+----------------+----------------+ + /// | Bit | 0-7 | 8-15 | + /// +-----+----------------+----------------+ + /// | 0 | Version | Channels | + /// +-----+----------------+----------------+ + /// | 16 | Channel A Data | + /// +-----+---------------------------------+ + /// | 32 | Channel B Data | + /// +-----+---------------------------------+ + /// : : : + /// +-----+---------------------------------+ + /// | 112 | Channel H Data | + /// +-----+---------------------------------+ + ///+ /// + ///
+ /// +-----+-------------------------------+ + /// | Bit | 8-15 | + /// +-----+---+---+---+---+---+---+---+---+ + /// | 8 | H | G | F | E | D | C | B | A | + /// +-----+---+---+---+---+---+---+---+---+ + ///+ /// Each channel is labeled with an alphabetic letter (A to H). + ///
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