diff --git a/README.md b/README.md index 2a7a7a8..c92c230 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,22 @@ -# dbclib -C++ library that parses CAN DBC files. Under development. +# DBC Library version 1.0 + +## Summary + +The DBC library repository include a **C++ Library** that parses CAN database files (DBC) and a simple **DBC +Viewer**. The release 1.0 of the project support reading of DBC file. The DBC viewer can also read in MDF +CAN logger files and view its data. + +## Building + +The project uses CMAKE for building. The following third-party libraries are used and +needs to be downloaded and pre-built. + +- Boost Library. Required for the GUI applications. +- Flex and Bison. Required for the C++ library. +- WxWidgets Library. Required if the GUI applications should be built. +- Doxygen's application. Is required if the documentation should be built. +- Google Test Library. Is required for running and build the unit tests. + +## License + +The project uses the MIT license. See external LICENSE file in project root. diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..f40fbd8 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,5 @@ +_site +.sass-cache +.jekyll-cache +.jekyll-metadata +vendor diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000..086a5c9 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,25 @@ +--- +permalink: /404.html +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/docs/Gemfile b/docs/Gemfile new file mode 100644 index 0000000..d0ebacd --- /dev/null +++ b/docs/Gemfile @@ -0,0 +1,39 @@ +source "https://rubygems.org" +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +# gem "jekyll", "~> 4.2.2" +# This is the default theme for new Jekyll sites. You may change this to anything you like. +# remote_theme: pages-themes/minimal@v0.2.0 +# plugins: +# - jekyll-remote-theme # add this line to the plugins list if you already have one + +gem "jekyll-theme-minimal", "~> 0.2" +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +gem "github-pages", group: :jekyll_plugins +# If you have any plugins, put them here! +# group :jekyll_plugins do +# gem "jekyll-feed", "~> 0.12" +#end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem 'wdm', '~> 0.1.0', :platforms => [:mingw, :x64_mingw, :mswin] + +# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem +# do not have a Java counterpart. +gem 'http_parser.rb', '~> 0.6.0', :platforms => [:jruby] + +gem 'webrick', '~> 1.7' diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock new file mode 100644 index 0000000..9003dad --- /dev/null +++ b/docs/Gemfile.lock @@ -0,0 +1,268 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (6.0.5) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + zeitwerk (~> 2.2, >= 2.2.2) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.23.5) + concurrent-ruby (1.1.10) + dnsruby (1.61.9) + simpleidn (~> 0.1) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + ethon (0.15.0) + ffi (>= 1.15.0) + eventmachine (1.2.7) + execjs (2.8.1) + faraday (2.3.0) + faraday-net_http (~> 2.0) + ruby2_keywords (>= 0.0.4) + faraday-net_http (2.0.3) + ffi (1.15.5-x64-mingw-ucrt) + forwardable-extended (2.6.0) + gemoji (3.0.1) + github-pages (226) + github-pages-health-check (= 1.17.9) + jekyll (= 3.9.2) + jekyll-avatar (= 0.7.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.2.0) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.15.1) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.13.0) + jekyll-include-cache (= 0.2.1) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.3) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.8.0) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.2.0) + jekyll-theme-cayman (= 0.2.0) + jekyll-theme-dinky (= 0.2.0) + jekyll-theme-hacker (= 0.2.0) + jekyll-theme-leap-day (= 0.2.0) + jekyll-theme-merlot (= 0.2.0) + jekyll-theme-midnight (= 0.2.0) + jekyll-theme-minimal (= 0.2.0) + jekyll-theme-modernist (= 0.2.0) + jekyll-theme-primer (= 0.6.0) + jekyll-theme-slate (= 0.2.0) + jekyll-theme-tactile (= 0.2.0) + jekyll-theme-time-machine (= 0.2.0) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.12.0) + kramdown (= 2.3.2) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.3) + mercenary (~> 0.3) + minima (= 2.5.1) + nokogiri (>= 1.13.4, < 2.0) + rouge (= 3.26.0) + terminal-table (~> 1.4) + github-pages-health-check (1.17.9) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (>= 3.0, < 5.0) + typhoeus (~> 1.3) + html-pipeline (2.14.1) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.8.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.9.2) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-commonmark-ghpages (0.2.0) + commonmarker (~> 0.23.4) + jekyll (~> 3.9.0) + jekyll-commonmark (~> 1.4.0) + rouge (>= 2.0, < 4.0) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.15.1) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.13.0) + jekyll (>= 3.4, < 5.0) + octokit (~> 4.0, != 4.4.0) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-mentions (1.6.0) + html-pipeline (~> 2.3) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.6.0) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.12.0) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + kramdown (2.3.2) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.7.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.3.6) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.15.0) + nokogiri (1.13.6-x64-mingw-ucrt) + racc (~> 1.4) + octokit (4.24.0) + faraday (>= 1, < 3) + sawyer (~> 0.9) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (4.0.7) + racc (1.6.0) + rb-fsevent (0.11.1) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.5) + rouge (3.26.0) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + simpleidn (0.2.1) + unf (~> 0.1.4) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (1.2.9) + thread_safe (~> 0.1) + unf (0.1.4) + unf_ext + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) + webrick (1.7.0) + zeitwerk (2.5.4) + +PLATFORMS + x64-mingw-ucrt + +DEPENDENCIES + github-pages + http_parser.rb (~> 0.6.0) + jekyll-theme-minimal (~> 0.2) + tzinfo (~> 1.2) + tzinfo-data + wdm (~> 0.1.0) + webrick (~> 1.7) + +BUNDLED WITH + 2.3.13 diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..2c51aa7 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,7 @@ +title: DBC Library +author: Ingemar Hedvall +logo: /assets/img/logo.png + +description: General DBC library. + +theme: jekyll-theme-minimal diff --git a/docs/_includes/head-custom.html b/docs/_includes/head-custom.html index 9499fce..80171cc 100644 --- a/docs/_includes/head-custom.html +++ b/docs/_includes/head-custom.html @@ -4,12 +4,9 @@
diff --git a/docs/assets/img/dbcviewer.png b/docs/assets/img/dbcviewer.png new file mode 100644 index 0000000..7f2c94a Binary files /dev/null and b/docs/assets/img/dbcviewer.png differ diff --git a/docs/assets/img/logo.png b/docs/assets/img/logo.png index 3b1610e..1e35cad 100644 Binary files a/docs/assets/img/logo.png and b/docs/assets/img/logo.png differ diff --git a/docs/assets/img/mdfviewer.png b/docs/assets/img/mdfviewer.png deleted file mode 100644 index 3521011..0000000 Binary files a/docs/assets/img/mdfviewer.png and /dev/null differ diff --git a/docs/dbclib.md b/docs/dbclib.md new file mode 100644 index 0000000..892d5a9 --- /dev/null +++ b/docs/dbclib.md @@ -0,0 +1,19 @@ +--- +layout: default +title: DBC C++ Library +--- + +# Overview of the DBC C++ Library + +The library is used to read in and parse a DBC file. The DBC file describes devices, messages and signals for a CAN +network. The following interface exist. + +- **DbcFile**. Main object that reads in and parse a DBC file. The DBC file may contain one or more networks. +- **Network**. Information about the CAN network. Basic is the CAN Protocol (ProtocolType) in use (example J1939). +- **Node**. Defines a device (ECU) on the network. +- **Message**. One message defines the data bytes transmitted on the CAN bus. +- **Signal**. One message consist of one or more signals. +- **SignalGroup**. Defines a signal group. Seldom in use. +- **Attribute**. All DBC objects may have none or more attributes. +- **EnvVar**. A Network may define none or more environment variables. Seldom in use. +- **SignalObserver**. Saves sample values. Used when streaming CAN messages. diff --git a/docs/dbcviewer.md b/docs/dbcviewer.md new file mode 100644 index 0000000..f21aadc --- /dev/null +++ b/docs/dbcviewer.md @@ -0,0 +1,14 @@ +--- +layout: default +title: DBC Viewer +--- + +# DBC Viewer + +The DBC Viewer is a simple GUI application that show the content of a DBC file. + +![Sample DBC viewer](/assets/img/dbcviewer.png) + +It can display signal and message information. If the user have an CAN MDF logger file, it can be imported and +measured data can be shown in a list or in a graph. The Gnuplot application is +used as plotting tool, so it needs to be installed. \ No newline at end of file diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000..3b1610e Binary files /dev/null and b/docs/favicon.ico differ diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..900cdd3 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,18 @@ +--- +layout: default +title: Summary +--- +# Summary + +The DBC C++ library implements an interface against a CAN DBC File. It supports reading and +parsing of CAN messages. The application DBC Viewer can also read in a CAN bus MDF measurement file and present its +values in either tabular form or plotting. + +The project include the following application and library. +- **[DBC C++ Library](dbclib.html)**. C++ Library that parses DBC files and CAN messages. +- **[DBC Viewer](dbcviewer.html)**. GUI application that show contents of DBC files. + +Detailed library documentation can be found here: [API Documentation](/manual/html/index.html). + +Source code and installation kit can be found here: [GitHub Repository](https://github.com/ihedvall/dbclib) + diff --git a/docs/manual/html/annotated.html b/docs/manual/html/annotated.html new file mode 100644 index 0000000..3cae063 --- /dev/null +++ b/docs/manual/html/annotated.html @@ -0,0 +1,101 @@ + + + + + + + +DbcLib: Class List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + +
 NdbcMain namespace for the DBC library
 CAttributeSupport class for handling attributes of network objects
 CDbcFileMain user object that is an interface against a DBC file
 CDbcMessageWrapper class around a CAN message
 CEnvVarWrapper around an environment DBC variable
 CExtendedMuxSupport function for the extended multiplexor functionality
 CISampleObserverInterface that handles samples. Internal usage
 CMessageDBC message configuration object
 CNetworkInterface against a DBC network configuration
 CNodeInterface against a DBC node which normally is an ECU
 CSignalInterface against a DBC signal configuration
 CSignalGroupInterface against a signal group
 CSignalObserverThe sample observer hold a number of samples
 CSignalValueSupport function that holds the channel value for a signal
+
+
+ + + + diff --git a/docs/manual/html/attribute_8h.html b/docs/manual/html/attribute_8h.html new file mode 100644 index 0000000..841cec5 --- /dev/null +++ b/docs/manual/html/attribute_8h.html @@ -0,0 +1,164 @@ + + + + + + + +DbcLib: include/dbc/attribute.h File Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Classes | +Namespaces | +Enumerations
+
attribute.h File Reference
+
+
+ +

All DBC network objects may have attributes attached to them. +More...

+
#include <string>
+#include <vector>
+#include <sstream>
+
+Include dependency graph for attribute.h:
+
+
+ + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dbc::Attribute
 Support class for handling attributes of network objects. More...
 
+ + + + +

+Namespaces

namespace  dbc
 Main namespace for the DBC library.
 
+ + + + + + + +

+Enumerations

enum class  dbc::AttributeType : int {
+  dbc::DbcNetwork +, dbc::DbcNode +, dbc::DbcMessage +, dbc::DbcSignal +,
+  dbc::EnvironmentVariable +, dbc::NodeSignalRelation +, dbc::NodeMessageRelation +
+ }
 Define what type of network object the attribute is valid for. More...
 
enum class  dbc::AttributeValueType : int {
+  dbc::IntegerValue +, dbc::FloatValue +, dbc::StringValue +, dbc::EnumValue +,
+  dbc::HexValue +
+ }
 Data type of the attribute. More...
 
+
+ + + + diff --git a/docs/manual/html/attribute_8h__dep__incl.map b/docs/manual/html/attribute_8h__dep__incl.map new file mode 100644 index 0000000..c92fb55 --- /dev/null +++ b/docs/manual/html/attribute_8h__dep__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/manual/html/attribute_8h__dep__incl.md5 b/docs/manual/html/attribute_8h__dep__incl.md5 new file mode 100644 index 0000000..7b4e9ea --- /dev/null +++ b/docs/manual/html/attribute_8h__dep__incl.md5 @@ -0,0 +1 @@ +c67836ff0cfc8e447fede1d731375009 \ No newline at end of file diff --git a/docs/manual/html/attribute_8h__dep__incl.png b/docs/manual/html/attribute_8h__dep__incl.png new file mode 100644 index 0000000..5fd37da Binary files /dev/null and b/docs/manual/html/attribute_8h__dep__incl.png differ diff --git a/docs/manual/html/attribute_8h__incl.map b/docs/manual/html/attribute_8h__incl.map new file mode 100644 index 0000000..907aa6a --- /dev/null +++ b/docs/manual/html/attribute_8h__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/manual/html/attribute_8h__incl.md5 b/docs/manual/html/attribute_8h__incl.md5 new file mode 100644 index 0000000..eed19a5 --- /dev/null +++ b/docs/manual/html/attribute_8h__incl.md5 @@ -0,0 +1 @@ +b5bbf36aec9ecea2decca0f95d92a8c8 \ No newline at end of file diff --git a/docs/manual/html/attribute_8h__incl.png b/docs/manual/html/attribute_8h__incl.png new file mode 100644 index 0000000..635401f Binary files /dev/null and b/docs/manual/html/attribute_8h__incl.png differ diff --git a/docs/manual/html/attribute_8h_source.html b/docs/manual/html/attribute_8h_source.html new file mode 100644 index 0000000..ca0791c --- /dev/null +++ b/docs/manual/html/attribute_8h_source.html @@ -0,0 +1,248 @@ + + + + + + + +DbcLib: include/dbc/attribute.h Source File + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
attribute.h
+
+
+Go to the documentation of this file.
1/*
+
2 * Copyright 2022 Ingemar Hedvall
+
3 * SPDX-License-Identifier: MIT
+
4 */
+
8#pragma once
+
9
+
10#include <string>
+
11#include <vector>
+
12#include <sstream>
+
13namespace dbc {
+
17enum class AttributeType : int {
+ +
19 DbcNode,
+ +
21 DbcSignal,
+ + + +
25};
+
26
+
30enum class AttributeValueType : int {
+ + + +
34 EnumValue,
+ +
36};
+
37
+
49class Attribute {
+
50 public:
+
52 Attribute( AttributeType type, const std::string& name );
+
53
+
55 void Name(const std::string& name) { name_ = name; }
+
57 [[nodiscard]] const std::string& Name() const { return name_; }
+
58
+
60 void Type(AttributeType type ) { type_ = type; }
+
62 [[nodiscard]] AttributeType Type() const { return type_; }
+
63
+
65 void ValueType(AttributeValueType type ) { value_type_ = type; }
+
67 [[nodiscard]] AttributeValueType ValueType() const { return value_type_; }
+
69 [[nodiscard]] std::string ValueTypeAsString() const;
+
70
+
71 void Min(double min ) { min_ = min; }
+
72 [[nodiscard]] double Min() const { return min_; }
+
73
+
74 void Max(double max ) { max_ = max; }
+
75 [[nodiscard]] double Max() const { return max_; }
+
76
+
78 void EnumList(const std::vector<std::string>& list);
+
80 [[nodiscard]] const std::vector<std::string>& EnumList() const;
+
81
+
83 template <typename T>
+
84 void Value(const T& value);
+
85
+
87 template <typename T>
+
88 [[nodiscard]] T Value() const;
+
89 private:
+ +
91 std::string name_;
+
92 AttributeValueType value_type_ =
+ +
94 double value_float_ = 0.0;
+
95 std::string value_string_;
+
96 std::vector<std::string> enum_list_;
+
97 double min_ = 0.0;
+
98 double max_ = 0.0;
+
99};
+
100
+
101
+
102template <typename T>
+
103void Attribute::Value(const T& value) {
+
104 try {
+
105 value_float_ = static_cast<double>(value);
+
106 switch (value_type_) {
+ +
108 value_string_ = std::to_string(static_cast<int64_t>(value));
+
109 break;
+
110
+ +
112 value_string_ = std::to_string(static_cast<double>(value));
+
113 break;
+
114
+ +
116 const auto index = static_cast<size_t>(value_float_);
+
117 if ( index < enum_list_.size()) {
+
118 value_string_ = enum_list_[index];
+
119 }
+
120 break;
+
121 }
+
122
+
123 default:
+
124 value_string_ = std::to_string(value);
+
125 break;
+
126 }
+
127
+
128 } catch (const std::exception&) {
+
129 value_float_ = 0.0;
+
130 value_string_ = "Conversion error";
+
131 }
+
132}
+
133
+
135template<>
+
136void Attribute::Value(const std::string& value);
+
137
+
138
+
139template <typename T>
+ +
141 T value = {};
+
142 switch (ValueType()) {
+ +
144 std::istringstream temp(value_string_);
+
145 try {
+
146 temp >> value;
+
147 } catch (const std::exception& ) {
+
148 }
+
149 break;
+
150 }
+
151
+
152 default:
+
153 value = static_cast<T>(value_float_);
+
154 break;
+
155 }
+
156 return value;
+
157}
+
158
+
160template <>
+
161[[nodiscard]] std::string Attribute::Value() const;
+
162
+
163
+
164} // namespace dbc
+
Support class for handling attributes of network objects.
Definition: attribute.h:49
+
T Value() const
Returns the attribute value.
Definition: attribute.h:140
+
std::string ValueTypeAsString() const
Returns the attribute data type as string.
+
void ValueType(AttributeValueType type)
Sets the attribute data type.
Definition: attribute.h:65
+
void Min(double min)
Sets the min range.
Definition: attribute.h:71
+
double Max() const
Max range.
Definition: attribute.h:75
+
void Type(AttributeType type)
Sets the type of attribute.
Definition: attribute.h:60
+
const std::vector< std::string > & EnumList() const
Returns an enumerated string list.
+
void EnumList(const std::vector< std::string > &list)
Sets an enumerate string list.
+
AttributeType Type() const
Return type of attribute.
Definition: attribute.h:62
+
void Name(const std::string &name)
Sets the name of the attribute.
Definition: attribute.h:55
+
double Min() const
Min range.
Definition: attribute.h:72
+
Attribute(AttributeType type, const std::string &name)
Constructor for an attribute or definition.
+
AttributeValueType ValueType() const
Returns the attribute data type.
Definition: attribute.h:67
+
const std::string & Name() const
Retuns the attribute name.
Definition: attribute.h:57
+
void Max(double max)
Sets the max range.
Definition: attribute.h:74
+
Wrapper class around a CAN message.
Definition: dbcmessage.h:21
+
Main namespace for the DBC library.
Definition: attribute.h:13
+
AttributeType
Define what type of network object the attribute is valid for.
Definition: attribute.h:17
+
@ DbcNode
Node/Device attribute.
+
@ NodeSignalRelation
Node signal relation attribute.
+
@ NodeMessageRelation
Node message relation attribute.
+
@ DbcNetwork
Network attribute.
+
@ DbcSignal
Signal attribute.
+
@ EnvironmentVariable
Environment attribute.
+
AttributeValueType
Data type of the attribute.
Definition: attribute.h:30
+
@ HexValue
Hexa-decimal value.
+
@ EnumValue
Enumerate value.
+
@ IntegerValue
Integer value.
+
@ FloatValue
Floating point value.
+
@ StringValue
Text value.
+
+ + + + diff --git a/docs/manual/html/bc_s.png b/docs/manual/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/docs/manual/html/bc_s.png differ diff --git a/docs/manual/html/bc_sd.png b/docs/manual/html/bc_sd.png new file mode 100644 index 0000000..31ca888 Binary files /dev/null and b/docs/manual/html/bc_sd.png differ diff --git a/docs/manual/html/bdwn.png b/docs/manual/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/docs/manual/html/bdwn.png differ diff --git a/docs/manual/html/classdbc_1_1_attribute-members.html b/docs/manual/html/classdbc_1_1_attribute-members.html new file mode 100644 index 0000000..2dfb902 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_attribute-members.html @@ -0,0 +1,108 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::Attribute Member List
+
+
+ +

This is the complete list of members for dbc::Attribute, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
Attribute(AttributeType type, const std::string &name)dbc::Attribute
EnumList(const std::vector< std::string > &list)dbc::Attribute
EnumList() constdbc::Attribute
Max(double max)dbc::Attributeinline
Max() constdbc::Attributeinline
Min(double min)dbc::Attributeinline
Min() constdbc::Attributeinline
Name(const std::string &name)dbc::Attributeinline
Name() constdbc::Attributeinline
Type(AttributeType type)dbc::Attributeinline
Type() constdbc::Attributeinline
Value(const T &value)dbc::Attribute
Value() constdbc::Attribute
Value(const std::string &value)dbc::Attribute
Value() constdbc::Attribute
ValueType(AttributeValueType type)dbc::Attributeinline
ValueType() constdbc::Attributeinline
ValueTypeAsString() constdbc::Attribute
+ + + + diff --git a/docs/manual/html/classdbc_1_1_attribute.html b/docs/manual/html/classdbc_1_1_attribute.html new file mode 100644 index 0000000..eb5c1e8 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_attribute.html @@ -0,0 +1,182 @@ + + + + + + + +DbcLib: dbc::Attribute Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::Attribute Class Reference
+
+
+ +

Support class for handling attributes of network objects. + More...

+ +

#include <attribute.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Attribute (AttributeType type, const std::string &name)
 Constructor for an attribute or definition.
 
+void Name (const std::string &name)
 Sets the name of the attribute.
 
+const std::string & Name () const
 Retuns the attribute name.
 
+void Type (AttributeType type)
 Sets the type of attribute.
 
+AttributeType Type () const
 Return type of attribute.
 
+void ValueType (AttributeValueType type)
 Sets the attribute data type.
 
+AttributeValueType ValueType () const
 Returns the attribute data type.
 
+std::string ValueTypeAsString () const
 Returns the attribute data type as string.
 
+void Min (double min)
 Sets the min range.
 
+double Min () const
 Min range.
 
+void Max (double max)
 Sets the max range.
 
+double Max () const
 Max range.
 
+void EnumList (const std::vector< std::string > &list)
 Sets an enumerate string list.
 
+const std::vector< std::string > & EnumList () const
 Returns an enumerated string list.
 
+template<typename T >
void Value (const T &value)
 Sets the attribute value.
 
+template<typename T >
Value () const
 Returns the attribute value.
 
+template<>
void Value (const std::string &value)
 Sets an attribute string value.
 
+template<>
std::string Value () const
 Returns an attribute string value.
 
+

Detailed Description

+

The Attribute class is a support class for handling attributes attached to DBC objects.

+

The DBC file first specify a definition of an attribute. This definition defines range and data type i.e. a sort of template.

+

Then the DBC file define the attribute that references a definition and has a value (constant).

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_dbc_file-members.html b/docs/manual/html/classdbc_1_1_dbc_file-members.html new file mode 100644 index 0000000..8dbf796 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_dbc_file-members.html @@ -0,0 +1,104 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::DbcFile Member List
+
+
+ +

This is the complete list of members for dbc::DbcFile, including all inherited members.

+ + + + + + + + + + + + + + + +
AddMessage(size_t index, const DbcMessage &message)dbc::DbcFile
BaseTime(uint64_t ns1970)dbc::DbcFileinline
BaseTime() constdbc::DbcFileinline
Filename(const std::string &filename)dbc::DbcFileinline
Filename() constdbc::DbcFileinline
GetNetwork()dbc::DbcFileinline
GetNetwork() constdbc::DbcFileinline
LastError() constdbc::DbcFileinline
Name() constdbc::DbcFile
ParseFile()dbc::DbcFile
ParseMessage(const DbcMessage &message)dbc::DbcFile
ReparseMessageList()dbc::DbcFile
ResetSampleCounter() constdbc::DbcFile
SetMessageSize(size_t nof_messages)dbc::DbcFile
+ + + + diff --git a/docs/manual/html/classdbc_1_1_dbc_file.html b/docs/manual/html/classdbc_1_1_dbc_file.html new file mode 100644 index 0000000..0ae9843 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_dbc_file.html @@ -0,0 +1,209 @@ + + + + + + + +DbcLib: dbc::DbcFile Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::DbcFile Class Reference
+
+
+ +

Main user object that is an interface against a DBC file. + More...

+ +

#include <dbcfile.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void Filename (const std::string &filename)
 Sets the file name. Full path required.
 
+const std::string & Filename () const
 Returns the file name with full path.
 
+std::string Name () const
 Returns the File name without path and extension.
 
+const std::string & LastError () const
 Returns the last (parser) error text.
 
+NetworkGetNetwork ()
 Returns the network object.
 
+const NetworkGetNetwork () const
 Returns the network object.
 
+bool ParseFile ()
 Parses the DBC file. Returns true on success.
 
void BaseTime (uint64_t ns1970)
 Start time of messages.
 
+uint64_t BaseTime () const
 Returns the base (start) time of first message.
 
+void SetMessageSize (size_t nof_messages)
 Sets the maximum message queue size.
 
+void AddMessage (size_t index, const DbcMessage &message)
 Adds q message to the message queue.
 
+bool ParseMessage (const DbcMessage &message)
 Parses the message into signal values.
 
+void ResetSampleCounter () const
 Resets the sample counter for all signals.
 
void ReparseMessageList ()
 Reparse the message queue.
 
+

Detailed Description

+

The DBC file is the only object the user shall create. It handle the parsing of the file. A DBC file defines nodes, messages and signals for one CAN network.

+

Member Function Documentation

+ +

◆ BaseTime()

+ +
+
+ + + + + +
+ + + + + + + + +
void dbc::DbcFile::BaseTime (uint64_t ns1970)
+
+inline
+
+

The base time is the time of the first message. If not set, the AddMessage will set it to the first DBCMessage.

Parameters
+ + +
ns1970Nano-seconds since 1970.
+
+
+ +
+
+ +

◆ ReparseMessageList()

+ +
+
+ + + + + + + +
void dbc::DbcFile::ReparseMessageList ()
+
+

This function is used to reparse the message queue. This function is used when the first parse message round just count number of samples while the next round, the user selects signals (SignalObserver) and reparse the message queue.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_dbc_message-members.html b/docs/manual/html/classdbc_1_1_dbc_message-members.html new file mode 100644 index 0000000..9dfff56 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_dbc_message-members.html @@ -0,0 +1,106 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::DbcMessage Member List
+
+
+ +

This is the complete list of members for dbc::DbcMessage, including all inherited members.

+ + + + + + + + + + + + + + + + + +
CanId(uint32_t can_id)dbc::DbcMessageinline
CanId() constdbc::DbcMessageinline
Data(const std::vector< uint8_t > &data)dbc::DbcMessageinline
Data() constdbc::DbcMessageinline
DataPage() constdbc::DbcMessage
DbcMessage()=defaultdbc::DbcMessage
DbcMessage(uint64_t time, uint32_t can_id, std::vector< uint8_t > data)dbc::DbcMessage
DbcMessage(const DbcMessage &message)=defaultdbc::DbcMessage
ExtendedDataPage() constdbc::DbcMessage
PduFormat() constdbc::DbcMessage
PduSpecific() constdbc::DbcMessage
Pgn() constdbc::DbcMessage
Priority() constdbc::DbcMessage
Source() constdbc::DbcMessage
Time(uint64_t ns1970)dbc::DbcMessageinline
Time() constdbc::DbcMessageinline
+ + + + diff --git a/docs/manual/html/classdbc_1_1_dbc_message.html b/docs/manual/html/classdbc_1_1_dbc_message.html new file mode 100644 index 0000000..da22c89 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_dbc_message.html @@ -0,0 +1,210 @@ + + + + + + + +DbcLib: dbc::DbcMessage Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::DbcMessage Class Reference
+
+
+ +

Wrapper class around a CAN message. + More...

+ +

#include <dbcmessage.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DbcMessage ()=default
 Default constructor.
 
 DbcMessage (uint64_t time, uint32_t can_id, std::vector< uint8_t > data)
 Constructor that wraps a CAN message.
 
DbcMessage (const DbcMessage &message)=default
 Default destructor.
 
+void Time (uint64_t ns1970)
 Sets the time.
 
+uint64_t Time () const
 Message time.
 
+void CanId (uint32_t can_id)
 Sets the CAN ID.
 
+uint32_t CanId () const
 CAN ID.
 
+void Data (const std::vector< uint8_t > &data)
 Sets the CAN data bytes.
 
+const std::vector< uint8_t > & Data () const
 Returns the CAN data bytes.
 
+uint32_t Pgn () const
 PGN Program number.
 
+uint8_t Priority () const
 Priority (0-8)
 
+bool ExtendedDataPage () const
 True if extended data page.
 
+bool DataPage () const
 True if data page.
 
+uint8_t PduFormat () const
 PDU format.
 
+uint8_t PduSpecific () const
 PDU specific.
 
+uint8_t Source () const
 Source number.
 
+

Detailed Description

+

Simple support class that holds a CAN message. CAN message has a time, ID and none or more data bytes. This sound simple but there are several protocols on top of CAN that treat the CAN ID and its data bytes differently.

+

Constructor & Destructor Documentation

+ +

◆ DbcMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
dbc::DbcMessage::DbcMessage (uint64_t time,
uint32_t can_id,
std::vector< uint8_t > data 
)
+
+

Constructor that wraps a CAN message.

Parameters
+ + + + +
timeNano-seconds since 1970.
can_id11/29-bit CAN ID.
dataCAN data bytes.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_env_var-members.html b/docs/manual/html/classdbc_1_1_env_var-members.html new file mode 100644 index 0000000..ab8977c --- /dev/null +++ b/docs/manual/html/classdbc_1_1_env_var-members.html @@ -0,0 +1,113 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::EnvVar Member List
+
+
+ +

This is the complete list of members for dbc::EnvVar, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
Access(AccessType type)dbc::EnvVarinline
Access() constdbc::EnvVarinline
Comment(const std::string &comment)dbc::EnvVarinline
Comment() constdbc::EnvVarinline
EnumList(const std::map< int64_t, std::string > &enum_list)dbc::EnvVar
EnumList() constdbc::EnvVar
Ident(uint64_t ident)dbc::EnvVarinline
Ident() constdbc::EnvVarinline
InitValue(double value)dbc::EnvVarinline
InitValue() constdbc::EnvVarinline
Max(double max)dbc::EnvVarinline
Max() constdbc::EnvVarinline
Min(double min)dbc::EnvVarinline
Min() constdbc::EnvVarinline
Name(const std::string &name)dbc::EnvVarinline
Name() constdbc::EnvVarinline
NodeList(const std::vector< std::string > &node_list)dbc::EnvVarinline
NodeList() constdbc::EnvVarinline
Type(EnvType type)dbc::EnvVarinline
Type() constdbc::EnvVarinline
TypeAsString() constdbc::EnvVar
Unit(const std::string &unit)dbc::EnvVarinline
Unit() constdbc::EnvVarinline
+ + + + diff --git a/docs/manual/html/classdbc_1_1_env_var.html b/docs/manual/html/classdbc_1_1_env_var.html new file mode 100644 index 0000000..bbfefce --- /dev/null +++ b/docs/manual/html/classdbc_1_1_env_var.html @@ -0,0 +1,194 @@ + + + + + + + +DbcLib: dbc::EnvVar Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::EnvVar Class Reference
+
+
+ +

Wrapper around an environment DBC variable. +

+ +

#include <envvar.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void Name (const std::string &name)
 Sets the name.
 
+const std::string & Name () const
 Retuns the name.
 
+void Comment (const std::string &comment)
 Sets the descriptive text.
 
+const std::string & Comment () const
 Return the descriptive text.
 
+void Type (EnvType type)
 Sets the data type.
 
+EnvType Type () const
 Returns the data type.
 
+std::string TypeAsString () const
 Returns the data type as string.
 
+void Min (double min)
 Sets the min range.
 
+double Min () const
 Min range.
 
+void Max (double max)
 Sets the max range.
 
+double Max () const
 Max range.
 
+void Unit (const std::string &unit)
 Sets the unit.
 
+const std::string & Unit () const
 Unit.
 
+void InitValue (double value)
 Sets the initial value.
 
+double InitValue () const
 Returns the initial value.
 
+void Ident (uint64_t ident)
 Sets the identity.
 
+uint64_t Ident () const
 Identity.
 
+void Access (AccessType type)
 Sets the access.
 
+AccessType Access () const
 Access.
 
+void NodeList (const std::vector< std::string > &node_list)
 Sets the node list.
 
+const std::vector< std::string > & NodeList () const
 Returns the node list.
 
+void EnumList (const std::map< int64_t, std::string > &enum_list)
 Sets the enumerate list.
 
+const std::map< int64_t, std::string > & EnumList () const
 Returns the node list.
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_i_sample_observer-members.html b/docs/manual/html/classdbc_1_1_i_sample_observer-members.html new file mode 100644 index 0000000..e360dbe --- /dev/null +++ b/docs/manual/html/classdbc_1_1_i_sample_observer-members.html @@ -0,0 +1,94 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::ISampleObserver Member List
+
+
+ +

This is the complete list of members for dbc::ISampleObserver, including all inherited members.

+ + + + + +
DetachObserver()=0dbc::ISampleObserverpure virtual
ISampleObserver()=defaultdbc::ISampleObserver
OnSample()=0dbc::ISampleObserverpure virtual
~ISampleObserver()=defaultdbc::ISampleObservervirtual
+ + + + diff --git a/docs/manual/html/classdbc_1_1_i_sample_observer.html b/docs/manual/html/classdbc_1_1_i_sample_observer.html new file mode 100644 index 0000000..8164a2d --- /dev/null +++ b/docs/manual/html/classdbc_1_1_i_sample_observer.html @@ -0,0 +1,180 @@ + + + + + + + +DbcLib: dbc::ISampleObserver Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::ISampleObserver Class Referenceabstract
+
+
+ +

Interface that handles samples. Internal usage. +

+ +

#include <isampleobserver.h>

+
+Inheritance diagram for dbc::ISampleObserver:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

ISampleObserver ()=default
 Default constructor.
 
+virtual ~ISampleObserver ()=default
 Default destructor.
 
virtual void OnSample ()=0
 Handle a sample.
 
virtual void DetachObserver ()=0
 Detach the observer object.
 
+

Member Function Documentation

+ +

◆ DetachObserver()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dbc::ISampleObserver::DetachObserver ()
+
+pure virtual
+
+ +

Implemented in dbc::SignalObserver.

+ +
+
+ +

◆ OnSample()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dbc::ISampleObserver::OnSample ()
+
+pure virtual
+
+ +

Implemented in dbc::SignalObserver.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_i_sample_observer__inherit__graph.map b/docs/manual/html/classdbc_1_1_i_sample_observer__inherit__graph.map new file mode 100644 index 0000000..c65eaa0 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_i_sample_observer__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/html/classdbc_1_1_i_sample_observer__inherit__graph.md5 b/docs/manual/html/classdbc_1_1_i_sample_observer__inherit__graph.md5 new file mode 100644 index 0000000..717d9f5 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_i_sample_observer__inherit__graph.md5 @@ -0,0 +1 @@ +358739f02f3885d82c5ae4e3862d2bc4 \ No newline at end of file diff --git a/docs/manual/html/classdbc_1_1_i_sample_observer__inherit__graph.png b/docs/manual/html/classdbc_1_1_i_sample_observer__inherit__graph.png new file mode 100644 index 0000000..a196325 Binary files /dev/null and b/docs/manual/html/classdbc_1_1_i_sample_observer__inherit__graph.png differ diff --git a/docs/manual/html/classdbc_1_1_message-members.html b/docs/manual/html/classdbc_1_1_message-members.html new file mode 100644 index 0000000..80f62cd --- /dev/null +++ b/docs/manual/html/classdbc_1_1_message-members.html @@ -0,0 +1,130 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::Message Member List
+
+
+ +

This is the complete list of members for dbc::Message, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Attributes() constdbc::Messageinline
CanId() constdbc::Message
Comment(const std::string &comment)dbc::Messageinline
Comment() constdbc::Messageinline
CreateAttribute(const Attribute &definition)dbc::Message
CreateSignal(const std::string &name)dbc::Message
Data() constdbc::Messageinline
DataPage() constdbc::Message
ExtendedDataPage() constdbc::Message
GetAttribute(const std::string &name) constdbc::Message
GetMultiplexor()dbc::Message
GetSignal(const std::string &name)dbc::Message
GetSignal(const std::string &name) constdbc::Message
Ident(uint64_t ident)dbc::Messageinline
Ident() constdbc::Messageinline
IsExtended() constdbc::Message
IsJ1939() constdbc::Message
IsNodeSender(const std::string &node_name) constdbc::Message
IsPdu1() constdbc::Message
IsPdu2() constdbc::Message
Name(const std::string &name)dbc::Messageinline
Name() constdbc::Messageinline
NextSequenceNumber() constdbc::Messageinline
Node(const std::string &node)dbc::Messageinline
NodeName() constdbc::Messageinline
NofBytes(size_t bytes)dbc::Message
NofBytes() constdbc::Message
ParseMessage(uint64_t ns1970, uint32_t can_id)dbc::Message
PduFormat() constdbc::Message
PduSpecific() constdbc::Message
Pgn() constdbc::Message
Priority() constdbc::Message
ResetSampleCounter() constdbc::Message
ResetSequenceNumber()dbc::Messageinline
SampleCounter() constdbc::Messageinline
Senders() constdbc::Messageinline
Signals() constdbc::Messageinline
Source() constdbc::Message
StepSampleCounter() constdbc::Messageinline
UpdateData(const std::vector< uint8_t > &message, size_t offset=0, size_t data_index=0)dbc::Message
+ + + + diff --git a/docs/manual/html/classdbc_1_1_message.html b/docs/manual/html/classdbc_1_1_message.html new file mode 100644 index 0000000..a2c9e51 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_message.html @@ -0,0 +1,355 @@ + + + + + + + +DbcLib: dbc::Message Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::Message Class Reference
+
+
+ +

DBC message configuration object. +

+ +

#include <message.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Ident (uint64_t ident)
 
uint64_t Ident () const
 
+bool IsExtended () const
 True if 29-bit ID.
 
+bool IsJ1939 () const
 True if it is a J1939 message.
 
+uint32_t CanId () const
 Returns CAN ID.
 
+uint8_t Priority () const
 J1939 Priority.
 
+uint32_t Pgn () const
 J1939 PGN.
 
+uint8_t Source () const
 J1939 Source.
 
+bool ExtendedDataPage () const
 J1938 Data Page Flag.
 
+bool DataPage () const
 J1938 Data Page Flag.
 
+uint8_t PduFormat () const
 J1939 PF.
 
+uint8_t PduSpecific () const
 J1939 PS.
 
+bool IsPdu1 () const
 True if PDU1.
 
+bool IsPdu2 () const
 True if PDU2.
 
+void Name (const std::string &name)
 Sets the message name.
 
+const std::string & Name () const
 Returns the message name.
 
+void Comment (const std::string &comment)
 Sets the descriptive text.
 
+const std::string & Comment () const
 Returns the descriptive text.
 
+void NofBytes (size_t bytes)
 Sets the number of bytes.
 
+size_t NofBytes () const
 Returns the number of bytes.
 
+void Node (const std::string &node)
 Sets a node name.
 
+std::string NodeName () const
 Returns the node name.
 
+SignalGetSignal (const std::string &name)
 Returns a signal by its name.
 
+const SignalGetSignal (const std::string &name) const
 Returns a signal by its name.
 
+SignalGetMultiplexor ()
 Returns the multiplexer signal object.
 
+const AttributeGetAttribute (const std::string &name) const
 Returns an attribute by its name.
 
+const SignalListSignals () const
 Returns the signal list.
 
+const std::vector< std::string > & Senders () const
 Returns a list of sender names.
 
+const std::vector< Attribute > & Attributes () const
 Returns a list of attributes.
 
+bool IsNodeSender (const std::string &node_name) const
 Returns true if the node is a sender.
 
+const std::vector< uint8_t > & Data () const
 Returns the last message data buffer.
 
bool UpdateData (const std::vector< uint8_t > &message, size_t offset=0, size_t data_index=0)
 Update the internal data buffer.
 
+void ParseMessage (uint64_t ns1970, uint32_t can_id)
 Parses the message. Internal usage.
 
+void ResetSequenceNumber ()
 Reset the internal sequence counter.
 
+uint8_t NextSequenceNumber () const
 Returns the next sequence number.
 
+void ResetSampleCounter () const
 Reset the sample counters.
 
+void StepSampleCounter () const
 Increments the internal sample counters.
 
+size_t SampleCounter () const
 Returns number of samples.
 
+AttributeCreateAttribute (const Attribute &definition)
 Creates an attributes by using its definition.
 
+SignalCreateSignal (const std::string &name)
 Create a new signal by its name.
 
+

Member Function Documentation

+ +

◆ Ident() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
uint64_t dbc::Message::Ident () const
+
+inline
+
+

< Returns the message ID.

+ +
+
+ +

◆ Ident() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void dbc::Message::Ident (uint64_t ident)
+
+inline
+
+

< Sets the message ID (29-bit)

+ +
+
+ +

◆ UpdateData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool dbc::Message::UpdateData (const std::vector< uint8_t > & message,
size_t offset = 0,
size_t data_index = 0 
)
+
+

Sets the internal last message data buffer. Note that the input offset and destination offset is used if the message requires more than one CAN data message before it is complete.

+
Parameters
+ + + + +
messageMessage data.
offsetOffset in the message data buffer (input index).
data_indexOffset in the last message data buffer (dest index).
+
+
+
Returns
Returns true if this was the last byte (complete message).
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_network-members.html b/docs/manual/html/classdbc_1_1_network-members.html new file mode 100644 index 0000000..6722bad --- /dev/null +++ b/docs/manual/html/classdbc_1_1_network-members.html @@ -0,0 +1,137 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::Network Member List
+
+
+ +

This is the complete list of members for dbc::Network, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddSignalGroup(const SignalGroup &group)dbc::Network
AddValueTable(const std::string &name, const EnumMap &list)dbc::Network
Attributes() constdbc::Networkinline
Bus(BusType type)dbc::Network
Bus() constdbc::Network
BusAsString() constdbc::Network
Comment(const std::string &comment)dbc::Networkinline
Comment() constdbc::Networkinline
CreateAttribute(const Attribute &definition)dbc::Network
CreateDefinition(const std::string &name)dbc::Network
CreateMessage(uint64_t message_id)dbc::Network
CreateNode(const std::string &name)dbc::Network
Enums() constdbc::Networkinline
EnvVars() constdbc::Networkinline
Filename(const std::string &filename)dbc::Networkinline
Filename() constdbc::Networkinline
GetAttribute(const std::string &name)dbc::Network
GetAttribute(const std::string &name) constdbc::Network
GetEnvVar(const std::string &name)dbc::Network
GetMessage(uint64_t message_id)dbc::Network
GetMessage(uint64_t message_id) constdbc::Network
GetMessageByCanId(uint64_t can_id)dbc::Network
GetMessageByCanId(uint64_t can_id) constdbc::Network
GetMessageByName(const std::string &name) constdbc::Network
GetMessageByPgn(uint32_t pgn)dbc::Network
GetMessageByPgnAndSource(uint32_t pgn, uint8_t source)dbc::Network
GetNode(const std::string &name)dbc::Network
GetNode(const std::string &name) constdbc::Network
GetNodeBySource(uint8_t source) constdbc::Network
GetSignal(uint64_t message_id, const std::string &signal_name)dbc::Network
GetSignal(uint64_t message_id, const std::string &signal_name) constdbc::Network
GetSignalByCanId(uint64_t can_id, const std::string &signal_name) constdbc::Network
GetSignalByName(const std::string &signal_name) constdbc::Network
GetSignalGroup(uint64_t message_id, const std::string &name) constdbc::Network
GetSignalGroupByName(const std::string &name) constdbc::Network
J1939(bool j1939)dbc::Networkinline
J1939() constdbc::Networkinline
LastMessage()dbc::Network
Messages() constdbc::Networkinline
Name() constdbc::Network
Nodes() constdbc::Networkinline
Protocol(ProtocolType type)dbc::Network
Protocol() constdbc::Network
ProtocolAsString() constdbc::Network
SignalGroups() constdbc::Networkinline
Version(const std::string &version)dbc::Networkinline
Version() constdbc::Networkinline
+ + + + diff --git a/docs/manual/html/classdbc_1_1_network.html b/docs/manual/html/classdbc_1_1_network.html new file mode 100644 index 0000000..91e6cae --- /dev/null +++ b/docs/manual/html/classdbc_1_1_network.html @@ -0,0 +1,314 @@ + + + + + + + +DbcLib: dbc::Network Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::Network Class Reference
+
+
+ +

Interface against a DBC network configuration. +

+ +

#include <network.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+std::string Name () const
 Network name.
 
+void Filename (const std::string &filename)
 Sets the file name.
 
+std::string Filename () const
 Returns the file name.
 
void Protocol (ProtocolType type)
 Sets the protocol type. Should be included in the file but sometimes is missing.
 
+ProtocolType Protocol () const
 Returns what type of protocol the bus is using.
 
+std::string ProtocolAsString () const
 Returns the network protocol as text.
 
+void Bus (BusType type)
 Sets the type of bus.
 
+BusType Bus () const
 Returns the type of bus.
 
+std::string BusAsString () const
 Returns the type of bus as text.
 
+void Version (const std::string &version)
 Sets the DBC (file) version.
 
+const std::string & Version () const
 Returns the DBC file version.
 
+void Comment (const std::string &comment)
 Sets the descriptive text for the DBC file.
 
+const std::string & Comment () const
 Returns the desciptive text.
 
+NodeGetNode (const std::string &name)
 Returns the node by its name.
 
+const NodeGetNode (const std::string &name) const
 Returns the node by its name.
 
+const NodeGetNodeBySource (uint8_t source) const
 Returns the node by its source number.
 
+void J1939 (bool j1939)
 Set to true if this is a J1939 bus.
 
+bool J1939 () const
 Returns true if this is a J1939 bus.
 
+MessageGetMessage (uint64_t message_id)
 Returns a message object by its message ID.
 
+const MessageGetMessage (uint64_t message_id) const
 Returns a message object by its message ID.
 
+MessageGetMessageByCanId (uint64_t can_id)
 Returns a message object by its CAN ID.
 
+const MessageGetMessageByCanId (uint64_t can_id) const
 Returns a message object by its CAN ID.
 
+const MessageGetMessageByName (const std::string &name) const
 Returns a message object by its name.
 
+MessageGetMessageByPgn (uint32_t pgn)
 Returns a message object by its PGN.
 
+MessageGetMessageByPgnAndSource (uint32_t pgn, uint8_t source)
 Returns a message object by its PGN and source number.
 
+SignalGetSignal (uint64_t message_id, const std::string &signal_name)
 Returns a signal by its message ID and signal name.
 
+const SignalGetSignal (uint64_t message_id, const std::string &signal_name) const
 Returns a signal by its message ID and signal name.
 
+const SignalGetSignalByCanId (uint64_t can_id, const std::string &signal_name) const
 Returns a signal by its CAN ID and signal name.
 
+const SignalGetSignalByName (const std::string &signal_name) const
 Returns a signal by its name.
 
+const SignalGroupGetSignalGroup (uint64_t message_id, const std::string &name) const
 Returns a signal group by its message ID and group name.
 
+const SignalGroupGetSignalGroupByName (const std::string &name) const
 Returns a signal group by its group name.
 
+const std::map< std::string, EnvVar > & EnvVars () const
 Returns the list of environment variables.
 
+const MessageListMessages () const
 Returns the list of messages.
 
+const std::map< std::string, Node > & Nodes () const
 Returns the list of Nodes.
 
+const std::vector< SignalGroup > & SignalGroups () const
 Returns the list of signal groups.
 
+const std::map< std::string, EnumMap > & Enums () const
 Returns the list of enumerates.
 
+const std::vector< Attribute > & Attributes () const
 Returns the list of attributes.
 
+AttributeGetAttribute (const std::string &name)
 Returns an attribute by its name.
 
+const AttributeGetAttribute (const std::string &name) const
 Returns an attribute by its name.
 
+void AddValueTable (const std::string &name, const EnumMap &list)
 Adds a enumerate.
 
+void AddSignalGroup (const SignalGroup &group)
 Adds a signal group.
 
+EnvVarGetEnvVar (const std::string &name)
 Parser function that gets/creates an environment variable.
 
+NodeCreateNode (const std::string &name)
 Parser function that creates a node.
 
+AttributeCreateDefinition (const std::string &name)
 Parser function that creates a definition.
 
+AttributeCreateAttribute (const Attribute &definition)
 Parser function that creates an attribute.
 
+MessageCreateMessage (uint64_t message_id)
 Parser function that creates a message.
 
+MessageLastMessage ()
 Returns the last message.
 
+

Member Function Documentation

+ +

◆ Protocol()

+ +
+
+ + + + + + + + +
void dbc::Network::Protocol (ProtocolType type)
+
+
Parameters
+ + +
typeType of protocol.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_node-members.html b/docs/manual/html/classdbc_1_1_node-members.html new file mode 100644 index 0000000..1a6b76d --- /dev/null +++ b/docs/manual/html/classdbc_1_1_node-members.html @@ -0,0 +1,99 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::Node Member List
+
+
+ +

This is the complete list of members for dbc::Node, including all inherited members.

+ + + + + + + + + + +
Attributes() constdbc::Nodeinline
Comment(const std::string &comment)dbc::Nodeinline
Comment() constdbc::Nodeinline
CreateAttribute(const Attribute &definition)dbc::Node
GetAttribute(const std::string &name) constdbc::Node
Name(const std::string &name)dbc::Nodeinline
Name() constdbc::Nodeinline
Source(uint8_t source)dbc::Nodeinline
Source() constdbc::Node
+ + + + diff --git a/docs/manual/html/classdbc_1_1_node.html b/docs/manual/html/classdbc_1_1_node.html new file mode 100644 index 0000000..823072f --- /dev/null +++ b/docs/manual/html/classdbc_1_1_node.html @@ -0,0 +1,139 @@ + + + + + + + +DbcLib: dbc::Node Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::Node Class Reference
+
+
+ +

Interface against a DBC node which normally is an ECU. + More...

+ +

#include <node.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void Name (const std::string &name)
 Sets the name.
 
+const std::string & Name () const
 Returns the name.
 
+void Source (uint8_t source)
 Source number is used in J1939 and is included in the CAN ID.
 
+uint8_t Source () const
 Source number (J1939).
 
+void Comment (const std::string &comment)
 Sets the descriptive text.
 
+const std::string & Comment () const
 Returns the descriptive text.
 
+const std::vector< Attribute > & Attributes () const
 Returns the attribute list.
 
+AttributeCreateAttribute (const Attribute &definition)
 Creates an attribute. Parser function.
 
+const AttributeGetAttribute (const std::string &name) const
 Returns an attribute by its name.
 
+

Detailed Description

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_signal-members.html b/docs/manual/html/classdbc_1_1_signal-members.html new file mode 100644 index 0000000..f1c8976 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal-members.html @@ -0,0 +1,147 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::Signal Member List
+
+
+ +

This is the complete list of members for dbc::Signal, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttachObserver(ISampleObserver *observer) constdbc::Signal
Attributes() constdbc::Signalinline
BitLength(size_t length)dbc::Signalinline
BitLength() constdbc::Signalinline
BitStart(size_t start)dbc::Signalinline
BitStart() constdbc::Signalinline
ChannelValue(T &value) constdbc::Signal
ChannelValue(std::string &value) constdbc::Signal
ChannelValue(SignalValue &value) constdbc::Signal
Comment(const std::string &comment)dbc::Signalinline
Comment() constdbc::Signalinline
CreateAttribute(const Attribute &definition)dbc::Signal
DataType(SignalDataType type)dbc::Signalinline
DataType() constdbc::Signalinline
DataTypeAsString() constdbc::Signal
DetachObserver(const ISampleObserver *observer) constdbc::Signal
EngValue(T &value) constdbc::Signal
EngValue(std::string &value) constdbc::Signal
EnumList(const std::map< int64_t, std::string > &enum_list)dbc::Signal
EnumList() constdbc::Signal
GetEnumString(int64_t index) constdbc::Signal
GetExtendedMux()dbc::Signal
IsMultiplexed() constdbc::Signal
LittleEndian(bool endian)dbc::Signalinline
LittleEndian() constdbc::Signalinline
Max(double max)dbc::Signalinline
Max() constdbc::Signalinline
MessageId(uint64_t message_id)dbc::Signalinline
MessageId() constdbc::Signalinline
Min(double min)dbc::Signalinline
Min() constdbc::Signalinline
Mux(MuxType type)dbc::Signalinline
Mux() constdbc::Signalinline
MuxAsString() constdbc::Signal
MuxValue(int value)dbc::Signalinline
MuxValue() constdbc::Signalinline
Name(const std::string &name)dbc::Signalinline
Name() constdbc::Signalinline
Offset(double offset)dbc::Signalinline
Offset() constdbc::Signalinline
ParseMessage(const std::vector< uint8_t > &message, uint64_t ns1970, uint32_t can_id)dbc::Signal
Receivers(const std::vector< std::string > &receiver_list)dbc::Signal
Receivers() constdbc::Signal
ResetSampleCounter() constdbc::Signalinline
SampleCanId(uint32_t can_id)dbc::Signalinline
SampleCanId() constdbc::Signalinline
SampleCounter() constdbc::Signalinline
SampleTime(uint64_t ns1970)dbc::Signalinline
SampleTime() constdbc::Signalinline
Scale(double scale)dbc::Signalinline
Scale() constdbc::Signalinline
StepSampleCounter() constdbc::Signalinline
Unit(const std::string &unit)dbc::Signalinline
Unit() constdbc::Signalinline
Valid(bool valid)dbc::Signalinline
Valid() constdbc::Signalinline
~Signal()dbc::Signalvirtual
+ + + + diff --git a/docs/manual/html/classdbc_1_1_signal.html b/docs/manual/html/classdbc_1_1_signal.html new file mode 100644 index 0000000..92ae81d --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal.html @@ -0,0 +1,336 @@ + + + + + + + +DbcLib: dbc::Signal Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::Signal Class Reference
+
+
+ +

Interface against a DBC signal configuration. + More...

+ +

#include <signal.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual ~Signal ()
 Destructor.
 
+void Name (const std::string &name)
 Sets the signal name.
 
+const std::string & Name () const
 Returns the signal name.
 
+void Unit (const std::string &unit)
 Sets the unit of measure.
 
+const std::string & Unit () const
 Returns the unit of measure.
 
+void Comment (const std::string &comment)
 Sets the descriptive text.
 
+const std::string & Comment () const
 Returns the descriptive text.
 
+void DataType (SignalDataType type)
 Sets the data type.
 
+SignalDataType DataType () const
 Returns the data type.
 
+std::string DataTypeAsString () const
 Returns the data type as text.
 
+void Mux (MuxType type)
 Sets the multiplexer type.
 
+MuxType Mux () const
 Returns the multiplexer type.
 
+std::string MuxAsString () const
 Returns the multiplexer type as text.
 
+void MuxValue (int value)
 Sets the multiplexor value.
 
+int MuxValue () const
 Returns the multiplexor value.
 
+void BitStart (size_t start)
 Sets the start bit.
 
+size_t BitStart () const
 Returns the start bit.
 
+void BitLength (size_t length)
 Sets the bit length.
 
+size_t BitLength () const
 Returns the bit length.
 
+void LittleEndian (bool endian)
 Set true if little endian byte order.
 
+bool LittleEndian () const
 Return true if little endian byte order.
 
+void Scale (double scale)
 Sets the scaling constant.
 
+double Scale () const
 Scaling constant.
 
+void Offset (double offset)
 Sets the offset.
 
+double Offset () const
 Return offset.
 
+void Min (double min)
 Sets min range.
 
+double Min () const
 Min range.
 
+void Max (double max)
 Sets the max range.
 
+double Max () const
 Max range.
 
+void EnumList (const std::map< int64_t, std::string > &enum_list)
 Sets the enumeration.
 
+const std::map< int64_t, std::string > & EnumList () const
 Returns the enumeration.
 
+void Receivers (const std::vector< std::string > &receiver_list)
 Sets the receiver list.
 
+const std::vector< std::string > & Receivers () const
 Return the receiver list.
 
+const std::vector< Attribute > & Attributes () const
 Returns the attribute list.
 
+void MessageId (uint64_t message_id)
 Sets the signals message ID.
 
+uint64_t MessageId () const
 Returns the message ID that the signal belongs to.
 
+bool IsMultiplexed () const
 True if multiplexed signal.
 
+AttributeCreateAttribute (const Attribute &definition)
 Creates an attribute.
 
+ExtendedMuxGetExtendedMux ()
 Creates an extended multiplexor struct.
 
+std::string GetEnumString (int64_t index) const
 Returns the enumerate text for an index.
 
+void ParseMessage (const std::vector< uint8_t > &message, uint64_t ns1970, uint32_t can_id)
 Parse out the signal value from a message data buffer.
 
+void ResetSampleCounter () const
 Resets the sample counter.
 
+void StepSampleCounter () const
 Steps the sample counter.
 
+size_t SampleCounter () const
 Returns the sample counter.
 
+void SampleTime (uint64_t ns1970)
 Sets the sample time.
 
+uint64_t SampleTime () const
 Returns the sample time.
 
+void SampleCanId (uint32_t can_id)
 Sets the CAN ID for the sample.
 
+uint64_t SampleCanId () const
 Returns the CAN ID for latest sample.
 
+void Valid (bool valid)
 Set to true if valid value.
 
+bool Valid () const
 Trie if value is valid.
 
+template<typename T >
bool ChannelValue (T &value) const
 Returns the channel value.
 
+template<typename T >
bool EngValue (T &value) const
 Returns the scaled engineering value.
 
+void AttachObserver (ISampleObserver *observer) const
 Attach a sample observer.
 
+void DetachObserver (const ISampleObserver *observer) const
 Detach a sample observer.
 
+template<>
bool ChannelValue (std::string &value) const
 Returns the signal value as a string.
 
+template<>
bool ChannelValue (SignalValue &value) const
 Returns the signal value as a signal value.
 
+template<>
bool EngValue (std::string &value) const
 Returns the engineering value as a string value.
 
+

Detailed Description

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_signal_group-members.html b/docs/manual/html/classdbc_1_1_signal_group-members.html new file mode 100644 index 0000000..b04c726 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal_group-members.html @@ -0,0 +1,98 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::SignalGroup Member List
+
+
+ +

This is the complete list of members for dbc::SignalGroup, including all inherited members.

+ + + + + + + + + +
MessageId(uint64_t message_id)dbc::SignalGroupinline
MessageId() constdbc::SignalGroupinline
Name(const std::string &name)dbc::SignalGroupinline
Name() constdbc::SignalGroupinline
Repetition(size_t rep)dbc::SignalGroupinline
Repetition() constdbc::SignalGroupinline
Signals(const std::vector< std::string > &signals)dbc::SignalGroup
Signals() constdbc::SignalGroup
+ + + + diff --git a/docs/manual/html/classdbc_1_1_signal_group.html b/docs/manual/html/classdbc_1_1_signal_group.html new file mode 100644 index 0000000..5d28be1 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal_group.html @@ -0,0 +1,134 @@ + + + + + + + +DbcLib: dbc::SignalGroup Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
dbc::SignalGroup Class Reference
+
+
+ +

Interface against a signal group. +

+ +

#include <signalgroup.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void MessageId (uint64_t message_id)
 Sets the message ID.
 
+uint64_t MessageId () const
 Returns the message ID.
 
+void Name (const std::string &name)
 Sets the name.
 
+const std::string & Name () const
 Name.
 
+void Repetition (size_t rep)
 Sets the repetition.
 
+size_t Repetition () const
 Repetition.
 
+void Signals (const std::vector< std::string > &signals)
 Returns a list of signal names.
 
+const std::vector< std::string > & Signals () const
 Returns a list of signal names.
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_signal_observer-members.html b/docs/manual/html/classdbc_1_1_signal_observer-members.html new file mode 100644 index 0000000..1782ae3 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal_observer-members.html @@ -0,0 +1,113 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc::SignalObserver Member List
+
+
+ +

This is the complete list of members for dbc::SignalObserver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
CanId(size_t index) constdbc::SignalObserver
ChannelValue(size_t index, uint64_t &ns1970, V &value) constdbc::SignalObserver
ChannelValue(size_t index, uint64_t &ns1970, std::string &value) constdbc::SignalObserver
DetachObserver() overridedbc::SignalObservervirtual
EngValue(size_t index, uint64_t &ns1970, V &value) constdbc::SignalObserver
EngValue(size_t index, uint64_t &ns1970, std::string &value) constdbc::SignalObserver
FirstIndex() constdbc::SignalObserver
GetSignal() constdbc::SignalObserverinline
ISampleObserver()=defaultdbc::ISampleObserver
LastIndex() constdbc::SignalObserver
MaxSamples(size_t max_nof_samples)dbc::SignalObserver
MaxSamples() constdbc::SignalObserverinline
NofSamples() constdbc::SignalObserverinline
NofValidSamples() constdbc::SignalObserver
OnSample() overridedbc::SignalObservervirtual
ResetSampleIndex()dbc::SignalObserver
SampleToIndex(size_t sample) constdbc::SignalObserver
SignalObserver(const Signal &signal)dbc::SignalObserverexplicit
SignalObserver()=deletedbc::SignalObserver
Time(size_t index) constdbc::SignalObserver
TimeToIndex(uint64_t time) constdbc::SignalObserver
~ISampleObserver()=defaultdbc::ISampleObservervirtual
~SignalObserver() overridedbc::SignalObserver
+ + + + diff --git a/docs/manual/html/classdbc_1_1_signal_observer.html b/docs/manual/html/classdbc_1_1_signal_observer.html new file mode 100644 index 0000000..4d9e3cf --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal_observer.html @@ -0,0 +1,379 @@ + + + + + + + +DbcLib: dbc::SignalObserver Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Classes | +Public Member Functions | +List of all members
+
dbc::SignalObserver Class Reference
+
+
+ +

The sample observer hold a number of samples. + More...

+ +

#include <signalobserver.h>

+
+Inheritance diagram for dbc::SignalObserver:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dbc::SignalObserver:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SignalObserver (const Signal &signal)
 Constructor.
 
SignalObserver ()=delete
 Default constructor.
 
~SignalObserver () override
 Default destructor.
 
+void MaxSamples (size_t max_nof_samples)
 Sets the maximum number of samples.
 
+size_t MaxSamples () const
 Returns the max number of samples.
 
+const SignalGetSignal () const
 Returns the signal object.
 
+uint64_t Time (size_t index) const
 Returns the absolute time for a sample.
 
+uint32_t CanId (size_t index) const
 Returns the CAN ID for a sample.
 
template<typename V >
bool ChannelValue (size_t index, uint64_t &ns1970, V &value) const
 Returns the unscaled signal value.
 
template<typename V >
bool EngValue (size_t index, uint64_t &ns1970, V &value) const
 Returns the scaled signal value.
 
+void ResetSampleIndex ()
 Reset the sample index.
 
+size_t FirstIndex () const
 First sample.
 
+size_t LastIndex () const
 Last sample.
 
+size_t NofSamples () const
 Returns number of samples.
 
+size_t NofValidSamples () const
 Returns number of valid samples.
 
+size_t SampleToIndex (size_t sample) const
 Sample number (0..) to internal index.
 
+std::pair< size_t, bool > TimeToIndex (uint64_t time) const
 Sample time to internal index.
 
void DetachObserver () override
 Detach an observer.
 
void OnSample () override
 On sample callback handler.
 
+template<>
bool ChannelValue (size_t index, uint64_t &ns1970, std::string &value) const
 Returns the unscaled signal value as a string.
 
+template<>
bool EngValue (size_t index, uint64_t &ns1970, std::string &value) const
 Returns the scaled signal value as a string'.
 
- Public Member Functions inherited from dbc::ISampleObserver
ISampleObserver ()=default
 Default constructor.
 
+virtual ~ISampleObserver ()=default
 Default destructor.
 
virtual void OnSample ()=0
 Handle a sample.
 
virtual void DetachObserver ()=0
 Detach the observer object.
 
+

Detailed Description

+

The observer holds signal values in a circular buffer of a maximum number of samples size. The user shall access the samples in normal sample order i.e the first sample is 0 while the internal circular index might be something else.

+

Member Function Documentation

+ +

◆ ChannelValue()

+ +
+
+
+template<typename V >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool dbc::SignalObserver::ChannelValue (size_t index,
uint64_t & ns1970,
V & value 
) const
+
+

Returns the unscaled signal value for a specific sample.

Template Parameters
+ + +
VValue type.
+
+
+
Parameters
+ + + + +
indexSample index (0..).
ns1970Sample time nano-seconds since 1970.
valueSample value.
+
+
+
Returns
True if value is valid.
+ +
+
+ +

◆ DetachObserver()

+ +
+
+ + + + + +
+ + + + + + + +
void dbc::SignalObserver::DetachObserver ()
+
+overridevirtual
+
+ +

Implements dbc::ISampleObserver.

+ +
+
+ +

◆ EngValue()

+ +
+
+
+template<typename V >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool dbc::SignalObserver::EngValue (size_t index,
uint64_t & ns1970,
V & value 
) const
+
+

Returns the scaled signal value for a specific sample.

Template Parameters
+ + +
VValue type.
+
+
+
Parameters
+ + + + +
indexSample index (0..).
ns1970Sample time nano-seconds since 1970.
valueSample value.
+
+
+
Returns
True if value is valid.
+ +
+
+ +

◆ OnSample()

+ +
+
+ + + + + +
+ + + + + + + +
void dbc::SignalObserver::OnSample ()
+
+overridevirtual
+
+ +

Implements dbc::ISampleObserver.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/manual/html/classdbc_1_1_signal_observer__coll__graph.map b/docs/manual/html/classdbc_1_1_signal_observer__coll__graph.map new file mode 100644 index 0000000..c34a163 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal_observer__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/html/classdbc_1_1_signal_observer__coll__graph.md5 b/docs/manual/html/classdbc_1_1_signal_observer__coll__graph.md5 new file mode 100644 index 0000000..507aaac --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal_observer__coll__graph.md5 @@ -0,0 +1 @@ +b6515fa95c5227ef276186c016c6a8a1 \ No newline at end of file diff --git a/docs/manual/html/classdbc_1_1_signal_observer__coll__graph.png b/docs/manual/html/classdbc_1_1_signal_observer__coll__graph.png new file mode 100644 index 0000000..660b3fe Binary files /dev/null and b/docs/manual/html/classdbc_1_1_signal_observer__coll__graph.png differ diff --git a/docs/manual/html/classdbc_1_1_signal_observer__inherit__graph.map b/docs/manual/html/classdbc_1_1_signal_observer__inherit__graph.map new file mode 100644 index 0000000..c34a163 --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal_observer__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/html/classdbc_1_1_signal_observer__inherit__graph.md5 b/docs/manual/html/classdbc_1_1_signal_observer__inherit__graph.md5 new file mode 100644 index 0000000..507aaac --- /dev/null +++ b/docs/manual/html/classdbc_1_1_signal_observer__inherit__graph.md5 @@ -0,0 +1 @@ +b6515fa95c5227ef276186c016c6a8a1 \ No newline at end of file diff --git a/docs/manual/html/classdbc_1_1_signal_observer__inherit__graph.png b/docs/manual/html/classdbc_1_1_signal_observer__inherit__graph.png new file mode 100644 index 0000000..660b3fe Binary files /dev/null and b/docs/manual/html/classdbc_1_1_signal_observer__inherit__graph.png differ diff --git a/docs/manual/html/classes.html b/docs/manual/html/classes.html new file mode 100644 index 0000000..f46fd86 --- /dev/null +++ b/docs/manual/html/classes.html @@ -0,0 +1,107 @@ + + + + + + + +DbcLib: Class Index + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | D | E | I | M | N | S
+
+
+
A
+
Attribute (dbc)
+
+
D
+
DbcFile (dbc)
DbcMessage (dbc)
+
+
E
+
EnvVar (dbc)
ExtendedMux (dbc)
+
+
I
+
ISampleObserver (dbc)
+
+
M
+
Message (dbc)
+
+
N
+
Network (dbc)
Node (dbc)
+
+
S
+
Signal (dbc)
SignalGroup (dbc)
SignalObserver (dbc)
SignalValue (dbc)
+
+
+ + + + diff --git a/docs/manual/html/closed.png b/docs/manual/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/docs/manual/html/closed.png differ diff --git a/docs/manual/html/dbcfile_8h.html b/docs/manual/html/dbcfile_8h.html new file mode 100644 index 0000000..561f3ff --- /dev/null +++ b/docs/manual/html/dbcfile_8h.html @@ -0,0 +1,135 @@ + + + + + + + +DbcLib: include/dbc/dbcfile.h File Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Classes | +Namespaces
+
dbcfile.h File Reference
+
+
+ +

The DBC file object is the main user object. +More...

+
#include <string>
+#include <memory>
+#include "dbc/network.h"
+#include "dbc/dbcmessage.h"
+
+Include dependency graph for dbcfile.h:
+
+
+ + + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dbc::DbcFile
 Main user object that is an interface against a DBC file. More...
 
+ + + + +

+Namespaces

namespace  dbc
 Main namespace for the DBC library.
 
+
+ + + + diff --git a/docs/manual/html/dbcfile_8h__incl.map b/docs/manual/html/dbcfile_8h__incl.map new file mode 100644 index 0000000..7aabf9e --- /dev/null +++ b/docs/manual/html/dbcfile_8h__incl.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/manual/html/dbcfile_8h__incl.md5 b/docs/manual/html/dbcfile_8h__incl.md5 new file mode 100644 index 0000000..439c624 --- /dev/null +++ b/docs/manual/html/dbcfile_8h__incl.md5 @@ -0,0 +1 @@ +d4d73d9519c449a38bd965dfb382a3e6 \ No newline at end of file diff --git a/docs/manual/html/dbcfile_8h__incl.png b/docs/manual/html/dbcfile_8h__incl.png new file mode 100644 index 0000000..08dc407 Binary files /dev/null and b/docs/manual/html/dbcfile_8h__incl.png differ diff --git a/docs/manual/html/dbcfile_8h_source.html b/docs/manual/html/dbcfile_8h_source.html new file mode 100644 index 0000000..55c2964 --- /dev/null +++ b/docs/manual/html/dbcfile_8h_source.html @@ -0,0 +1,154 @@ + + + + + + + +DbcLib: include/dbc/dbcfile.h Source File + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbcfile.h
+
+
+Go to the documentation of this file.
1/*
+
2* Copyright 2022 Ingemar Hedvall
+
3* SPDX-License-Identifier: MIT
+
4 */
+
8#pragma once
+
9#include <string>
+
10#include <memory>
+
11#include "dbc/network.h"
+
12#include "dbc/dbcmessage.h"
+
13
+
14namespace dbc {
+
15
+
22class DbcFile {
+
23 public:
+
25 void Filename(const std::string& filename) {filename_ = filename; }
+
27 [[nodiscard]] const std::string& Filename() const {return filename_; }
+
28
+
30 [[nodiscard]] std::string Name() const;
+
31
+
33 [[nodiscard]] const std::string& LastError() const { return last_error_; }
+
34
+
36 [[nodiscard]] Network* GetNetwork() { return network_.get(); }
+
38 [[nodiscard]] const Network* GetNetwork() const { return network_.get(); }
+
39
+
41 [[nodiscard]] bool ParseFile();
+
42
+
49 void BaseTime(uint64_t ns1970) {base_time_ = ns1970;}
+
51 [[nodiscard]] uint64_t BaseTime() const {return base_time_;}
+
52
+
54 void SetMessageSize(size_t nof_messages);
+
56 void AddMessage(size_t index, const DbcMessage& message);
+
58 bool ParseMessage(const DbcMessage& message);
+
60 void ResetSampleCounter() const;
+ +
70
+
71 private:
+
73 bool ParseStandardCAN(const DbcMessage& message);
+
75 bool ParseJ1939(const DbcMessage& message);
+
77 bool ParseNMEA2000(const DbcMessage& message);
+
78 std::string filename_;
+
79 mutable std::string last_error_;
+
80 std::unique_ptr<Network> network_;
+
81 std::vector<DbcMessage> message_list_;
+
82 uint64_t base_time_ = 0;
+
83};
+
84
+
85} // namespace dbc
+
Main user object that is an interface against a DBC file.
Definition: dbcfile.h:22
+
uint64_t BaseTime() const
Returns the base (start) time of first message.
Definition: dbcfile.h:51
+
void ReparseMessageList()
Reparse the message queue.
+
bool ParseMessage(const DbcMessage &message)
Parses the message into signal values.
+
void SetMessageSize(size_t nof_messages)
Sets the maximum message queue size.
+
void ResetSampleCounter() const
Resets the sample counter for all signals.
+
const std::string & Filename() const
Returns the file name with full path.
Definition: dbcfile.h:27
+
std::string Name() const
Returns the File name without path and extension.
+
void Filename(const std::string &filename)
Sets the file name. Full path required.
Definition: dbcfile.h:25
+
const std::string & LastError() const
Returns the last (parser) error text.
Definition: dbcfile.h:33
+
Network * GetNetwork()
Returns the network object.
Definition: dbcfile.h:36
+
const Network * GetNetwork() const
Returns the network object.
Definition: dbcfile.h:38
+
bool ParseFile()
Parses the DBC file. Returns true on success.
+
void BaseTime(uint64_t ns1970)
Start time of messages.
Definition: dbcfile.h:49
+
void AddMessage(size_t index, const DbcMessage &message)
Adds q message to the message queue.
+
Wrapper class around a CAN message.
Definition: dbcmessage.h:21
+
Interface against a DBC network configuration.
Definition: network.h:39
+
Wrapper around a CAN message.
+
Main namespace for the DBC library.
Definition: attribute.h:13
+
Defines a DBC network configuration object.
+
+ + + + diff --git a/doxygen/utillib.css b/docs/manual/html/dbclib.css similarity index 100% rename from doxygen/utillib.css rename to docs/manual/html/dbclib.css diff --git a/docs/manual/html/dbcmessage_8h.html b/docs/manual/html/dbcmessage_8h.html new file mode 100644 index 0000000..362df1b --- /dev/null +++ b/docs/manual/html/dbcmessage_8h.html @@ -0,0 +1,129 @@ + + + + + + + +DbcLib: include/dbc/dbcmessage.h File Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Classes | +Namespaces
+
dbcmessage.h File Reference
+
+
+ +

Wrapper around a CAN message. +More...

+
#include <cstdint>
+#include <vector>
+
+Include dependency graph for dbcmessage.h:
+
+
+ + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dbc::DbcMessage
 Wrapper class around a CAN message. More...
 
+ + + + +

+Namespaces

namespace  dbc
 Main namespace for the DBC library.
 
+
+ + + + diff --git a/docs/manual/html/dbcmessage_8h__dep__incl.map b/docs/manual/html/dbcmessage_8h__dep__incl.map new file mode 100644 index 0000000..b41eb9e --- /dev/null +++ b/docs/manual/html/dbcmessage_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/html/dbcmessage_8h__dep__incl.md5 b/docs/manual/html/dbcmessage_8h__dep__incl.md5 new file mode 100644 index 0000000..c586f3f --- /dev/null +++ b/docs/manual/html/dbcmessage_8h__dep__incl.md5 @@ -0,0 +1 @@ +657dc13139969afb15a190bf4bb662f1 \ No newline at end of file diff --git a/docs/manual/html/dbcmessage_8h__dep__incl.png b/docs/manual/html/dbcmessage_8h__dep__incl.png new file mode 100644 index 0000000..edf8cf2 Binary files /dev/null and b/docs/manual/html/dbcmessage_8h__dep__incl.png differ diff --git a/docs/manual/html/dbcmessage_8h__incl.map b/docs/manual/html/dbcmessage_8h__incl.map new file mode 100644 index 0000000..046d46a --- /dev/null +++ b/docs/manual/html/dbcmessage_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/manual/html/dbcmessage_8h__incl.md5 b/docs/manual/html/dbcmessage_8h__incl.md5 new file mode 100644 index 0000000..41b3c9e --- /dev/null +++ b/docs/manual/html/dbcmessage_8h__incl.md5 @@ -0,0 +1 @@ +6748effdec789ea0113e6d30eff21933 \ No newline at end of file diff --git a/docs/manual/html/dbcmessage_8h__incl.png b/docs/manual/html/dbcmessage_8h__incl.png new file mode 100644 index 0000000..ebe476f Binary files /dev/null and b/docs/manual/html/dbcmessage_8h__incl.png differ diff --git a/docs/manual/html/dbcmessage_8h_source.html b/docs/manual/html/dbcmessage_8h_source.html new file mode 100644 index 0000000..a9eb840 --- /dev/null +++ b/docs/manual/html/dbcmessage_8h_source.html @@ -0,0 +1,145 @@ + + + + + + + +DbcLib: include/dbc/dbcmessage.h Source File + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbcmessage.h
+
+
+Go to the documentation of this file.
1/*
+
2* Copyright 2022 Ingemar Hedvall
+
3* SPDX-License-Identifier: MIT
+
4 */
+
8#pragma once
+
9#include <cstdint>
+
10#include <vector>
+
11
+
12namespace dbc {
+
13
+ +
22 public:
+
23 DbcMessage() = default;
+
31 DbcMessage(uint64_t time, uint32_t can_id, std::vector<uint8_t> data);
+
32 DbcMessage(const DbcMessage& message) = default;
+
33
+
34
+
35 void Time(uint64_t ns1970) {time_ = ns1970;}
+
36 [[nodiscard]] uint64_t Time() const {return time_;}
+
37
+
38 void CanId(uint32_t can_id) {can_id_ = can_id;}
+
39 [[nodiscard]] uint32_t CanId() const {return can_id_;}
+
40
+
42 void Data(const std::vector<uint8_t>& data) {data_ = data;}
+
44 [[nodiscard]] const std::vector<uint8_t>& Data() const {return data_;}
+
45
+
46 [[nodiscard]] uint32_t Pgn() const;
+
47 [[nodiscard]] uint8_t Priority() const;
+
48 [[nodiscard]] bool ExtendedDataPage() const;
+
49 [[nodiscard]] bool DataPage() const;
+
50 [[nodiscard]] uint8_t PduFormat() const;
+
51 [[nodiscard]] uint8_t PduSpecific() const;
+
52 [[nodiscard]] uint8_t Source() const;
+
53 private:
+
54 uint64_t time_ = 0;
+
55 uint32_t can_id_ = 0;
+
56 std::vector<uint8_t> data_;
+
57};
+
58
+
59} // namespace dbc
+
Wrapper class around a CAN message.
Definition: dbcmessage.h:21
+
const std::vector< uint8_t > & Data() const
Returns the CAN data bytes.
Definition: dbcmessage.h:44
+
DbcMessage()=default
Default constructor.
+
uint8_t PduSpecific() const
PDU specific.
+
bool DataPage() const
True if data page.
+
uint8_t PduFormat() const
PDU format.
+
uint8_t Source() const
Source number.
+
uint64_t Time() const
Message time.
Definition: dbcmessage.h:36
+
DbcMessage(uint64_t time, uint32_t can_id, std::vector< uint8_t > data)
Constructor that wraps a CAN message.
+
void Time(uint64_t ns1970)
Sets the time.
Definition: dbcmessage.h:35
+
DbcMessage(const DbcMessage &message)=default
Default destructor.
+
uint8_t Priority() const
Priority (0-8)
+
void Data(const std::vector< uint8_t > &data)
Sets the CAN data bytes.
Definition: dbcmessage.h:42
+
uint32_t Pgn() const
PGN Program number.
+
bool ExtendedDataPage() const
True if extended data page.
+
uint32_t CanId() const
CAN ID.
Definition: dbcmessage.h:39
+
void CanId(uint32_t can_id)
Sets the CAN ID.
Definition: dbcmessage.h:38
+
Main namespace for the DBC library.
Definition: attribute.h:13
+
+ + + + diff --git a/docs/manual/html/dir_4e8d938e9ddb5a617c200d5739d1f41a.html b/docs/manual/html/dir_4e8d938e9ddb5a617c200d5739d1f41a.html new file mode 100644 index 0000000..6788286 --- /dev/null +++ b/docs/manual/html/dir_4e8d938e9ddb5a617c200d5739d1f41a.html @@ -0,0 +1,87 @@ + + + + + + + +DbcLib: doxygen Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
doxygen Directory Reference
+
+
+
+ + + + diff --git a/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e.html b/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e.html new file mode 100644 index 0000000..81d29d8 --- /dev/null +++ b/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e.html @@ -0,0 +1,133 @@ + + + + + + + +DbcLib: include/dbc Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dbc Directory Reference
+
+
+
+Directory dependency graph for dbc:
+
+
include/dbc
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  attribute.h [code]
 All DBC network objects may have attributes attached to them.
 
file  dbcfile.h [code]
 The DBC file object is the main user object.
 
file  dbcmessage.h [code]
 Wrapper around a CAN message.
 
file  envvar.h [code]
 Wrapper wrong environment variables.
 
file  isampleobserver.h [code]
 Internal object that define an observer interface that handle samples.
 
file  message.h [code]
 DBC message configuration object.
 
file  network.h [code]
 Defines a DBC network configuration object.
 
file  node.h [code]
 Interface against a DBC node (Device(ECU).
 
file  signal.h [code]
 Interface against a DBC signal configuration.
 
file  signalgroup.h [code]
 Defines a signal group.
 
file  signalobserver.h [code]
 The sample observer holds sample values for a signal.
 
+
+ + + + diff --git a/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e_dep.map b/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e_dep.map new file mode 100644 index 0000000..e6e6944 --- /dev/null +++ b/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e_dep.md5 b/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e_dep.md5 new file mode 100644 index 0000000..741f1ef --- /dev/null +++ b/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e_dep.md5 @@ -0,0 +1 @@ +092bd50415c60cd8a01166558e54b497 \ No newline at end of file diff --git a/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e_dep.png b/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e_dep.png new file mode 100644 index 0000000..43d09f1 Binary files /dev/null and b/docs/manual/html/dir_67453f04da784cdd04890da01913ef0e_dep.png differ diff --git a/docs/manual/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/manual/html/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..2ebc9be --- /dev/null +++ b/docs/manual/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,93 @@ + + + + + + + +DbcLib: include Directory Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  dbc
 
+
+ + + + diff --git a/docs/manual/html/doc.png b/docs/manual/html/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/docs/manual/html/doc.png differ diff --git a/docs/manual/html/docd.png b/docs/manual/html/docd.png new file mode 100644 index 0000000..d7c94fd Binary files /dev/null and b/docs/manual/html/docd.png differ diff --git a/docs/manual/html/doxygen.css b/docs/manual/html/doxygen.css new file mode 100644 index 0000000..8fee618 --- /dev/null +++ b/docs/manual/html/doxygen.css @@ -0,0 +1,1989 @@ +/* The standard CSS for doxygen 1.9.6*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.png'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.png'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + diff --git a/docs/manual/html/doxygen.svg b/docs/manual/html/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/docs/manual/html/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/manual/html/dynsections.js b/docs/manual/html/dynsections.js new file mode 100644 index 0000000..f579fbf --- /dev/null +++ b/docs/manual/html/dynsections.js @@ -0,0 +1,123 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +DbcLib: include/dbc/envvar.h File Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
envvar.h File Reference
+
+
+ +

Wrapper wrong environment variables. +More...

+
#include <cstdint>
+#include <string>
+#include <vector>
+#include <map>
+
+Include dependency graph for envvar.h:
+
+
+ + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dbc::EnvVar
 Wrapper around an environment DBC variable. More...
 
+ + + + +

+Namespaces

namespace  dbc
 Main namespace for the DBC library.
 
+ + + + + + + +

+Enumerations

enum class  dbc::EnvType : int { dbc::IntegerType = 0 +, dbc::FloatType = 1 +, dbc::StringType = 2 +, dbc::DataType = 3 + }
 The variable data type. More...
 
enum class  dbc::AccessType : int { dbc::Unrestricted = 0 +, dbc::ReadOnly = 1 +, dbc::WriteOnly = 2 +, dbc::ReadWrite = 3 + }
 Type of access. More...
 
+
+ + + + diff --git a/docs/manual/html/envvar_8h__dep__incl.map b/docs/manual/html/envvar_8h__dep__incl.map new file mode 100644 index 0000000..7a26936 --- /dev/null +++ b/docs/manual/html/envvar_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/manual/html/envvar_8h__dep__incl.md5 b/docs/manual/html/envvar_8h__dep__incl.md5 new file mode 100644 index 0000000..fbe8e31 --- /dev/null +++ b/docs/manual/html/envvar_8h__dep__incl.md5 @@ -0,0 +1 @@ +c93fd3426949cabd5a2c6369ead8c412 \ No newline at end of file diff --git a/docs/manual/html/envvar_8h__dep__incl.png b/docs/manual/html/envvar_8h__dep__incl.png new file mode 100644 index 0000000..46f1168 Binary files /dev/null and b/docs/manual/html/envvar_8h__dep__incl.png differ diff --git a/docs/manual/html/envvar_8h__incl.map b/docs/manual/html/envvar_8h__incl.map new file mode 100644 index 0000000..412d22d --- /dev/null +++ b/docs/manual/html/envvar_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/manual/html/envvar_8h__incl.md5 b/docs/manual/html/envvar_8h__incl.md5 new file mode 100644 index 0000000..46c2e3f --- /dev/null +++ b/docs/manual/html/envvar_8h__incl.md5 @@ -0,0 +1 @@ +b49be6abc962456a25e88093880a7f20 \ No newline at end of file diff --git a/docs/manual/html/envvar_8h__incl.png b/docs/manual/html/envvar_8h__incl.png new file mode 100644 index 0000000..3895950 Binary files /dev/null and b/docs/manual/html/envvar_8h__incl.png differ diff --git a/docs/manual/html/envvar_8h_source.html b/docs/manual/html/envvar_8h_source.html new file mode 100644 index 0000000..8106e7a --- /dev/null +++ b/docs/manual/html/envvar_8h_source.html @@ -0,0 +1,204 @@ + + + + + + + +DbcLib: include/dbc/envvar.h Source File + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
envvar.h
+
+
+Go to the documentation of this file.
1/*
+
2 * Copyright 2022 Ingemar Hedvall
+
3 * SPDX-License-Identifier: MIT
+
4 */
+
5
+
9#pragma once
+
10
+
11#include <cstdint>
+
12#include <string>
+
13#include <vector>
+
14#include <map>
+
15
+
16namespace dbc {
+
18enum class EnvType : int {
+
19 IntegerType = 0,
+
20 FloatType = 1,
+
21 StringType = 2,
+
22 DataType = 3
+
23};
+
24
+
26enum class AccessType : int {
+
27 Unrestricted = 0,
+
28 ReadOnly = 1,
+
29 WriteOnly = 2,
+
30 ReadWrite = 3
+
31};
+
32
+
34class EnvVar {
+
35 public:
+
37 void Name(const std::string& name) { name_ = name; }
+
39 [[nodiscard]] const std::string& Name() const { return name_; }
+
40
+
42 void Comment(const std::string& comment) { comment_ = comment;}
+
44 [[nodiscard]] const std::string& Comment() const { return comment_; }
+
45
+
47 void Type(EnvType type) { type_ = type; }
+
49 [[nodiscard]] EnvType Type() const { return type_; }
+
51 [[nodiscard]] std::string TypeAsString() const;
+
52
+
53 void Min(double min) { min_ = min; }
+
54 [[nodiscard]] double Min() const { return min_;}
+
55
+
56 void Max(double max) {max_ = max;}
+
57 [[nodiscard]] double Max() const { return max_;}
+
58
+
59 void Unit(const std::string& unit) { unit_ = unit; }
+
60 [[nodiscard]] const std::string& Unit() const { return unit_; }
+
61
+
63 void InitValue(double value) {init_value_ = value;}
+
65 [[nodiscard]] double InitValue() const { return init_value_; }
+
66
+
67 void Ident(uint64_t ident) {ident_ = ident;}
+
68 [[nodiscard]] uint64_t Ident() const { return ident_;}
+
69
+
70 void Access(AccessType type) { access_type_ = type; }
+
71 [[nodiscard]] AccessType Access() const { return access_type_; }
+
72
+
74 void NodeList(const std::vector<std::string>& node_list) {
+
75 node_list_ = node_list;
+
76 }
+
78 [[nodiscard]] const std::vector<std::string>& NodeList() const {
+
79 return node_list_;
+
80 }
+
81
+
83 void EnumList(const std::map<int64_t, std::string>& enum_list);
+
85 [[nodiscard]] const std::map<int64_t, std::string>& EnumList() const;
+
86
+
87 private:
+
88 std::string name_;
+
89 std::string comment_;
+ +
91 double min_ = 0.0;
+
92 double max_ = 0.0;
+
93 std::string unit_;
+
94 double init_value_ = 0.0;
+
95 uint64_t ident_ = 0;
+ +
97 std::vector<std::string> node_list_;
+
98 std::map<int64_t, std::string> enum_list_;
+
99};
+
100
+
101} // namespace dbc
+
Wrapper around an environment DBC variable.
Definition: envvar.h:34
+
EnvType Type() const
Returns the data type.
Definition: envvar.h:49
+
void EnumList(const std::map< int64_t, std::string > &enum_list)
Sets the enumerate list.
+
const std::string & Comment() const
Return the descriptive text.
Definition: envvar.h:44
+
void Max(double max)
Sets the max range.
Definition: envvar.h:56
+
const std::vector< std::string > & NodeList() const
Returns the node list.
Definition: envvar.h:78
+
void Name(const std::string &name)
Sets the name.
Definition: envvar.h:37
+
void NodeList(const std::vector< std::string > &node_list)
Sets the node list.
Definition: envvar.h:74
+
void Access(AccessType type)
Sets the access.
Definition: envvar.h:70
+
void Comment(const std::string &comment)
Sets the descriptive text.
Definition: envvar.h:42
+
const std::string & Name() const
Retuns the name.
Definition: envvar.h:39
+
void Unit(const std::string &unit)
Sets the unit.
Definition: envvar.h:59
+
uint64_t Ident() const
Identity.
Definition: envvar.h:68
+
double Max() const
Max range.
Definition: envvar.h:57
+
const std::map< int64_t, std::string > & EnumList() const
Returns the node list.
+
std::string TypeAsString() const
Returns the data type as string.
+
void InitValue(double value)
Sets the initial value.
Definition: envvar.h:63
+
void Min(double min)
Sets the min range.
Definition: envvar.h:53
+
void Ident(uint64_t ident)
Sets the identity.
Definition: envvar.h:67
+
AccessType Access() const
Access.
Definition: envvar.h:71
+
double InitValue() const
Returns the initial value.
Definition: envvar.h:65
+
const std::string & Unit() const
Unit.
Definition: envvar.h:60
+
double Min() const
Min range.
Definition: envvar.h:54
+
void Type(EnvType type)
Sets the data type.
Definition: envvar.h:47
+
Main namespace for the DBC library.
Definition: attribute.h:13
+
EnvType
The variable data type.
Definition: envvar.h:18
+
@ FloatType
Floating point variable.
+
@ IntegerType
Integer variable.
+
@ DataType
Data type variable.
+
@ StringType
Text variable.
+
AccessType
Type of access.
Definition: envvar.h:26
+
@ ReadOnly
Read-only access.
+
@ WriteOnly
Write-only access.
+
@ ReadWrite
Read and write access.
+
@ Unrestricted
Unrestricted access.
+
+ + + + diff --git a/docs/manual/html/files.html b/docs/manual/html/files.html new file mode 100644 index 0000000..c564ea1 --- /dev/null +++ b/docs/manual/html/files.html @@ -0,0 +1,100 @@ + + + + + + + +DbcLib: File List + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + +
  include
  dbc
 attribute.hAll DBC network objects may have attributes attached to them
 dbcfile.hThe DBC file object is the main user object
 dbcmessage.hWrapper around a CAN message
 envvar.hWrapper wrong environment variables
 isampleobserver.hInternal object that define an observer interface that handle samples
 message.hDBC message configuration object
 network.hDefines a DBC network configuration object
 node.hInterface against a DBC node (Device(ECU)
 signal.hInterface against a DBC signal configuration
 signalgroup.hDefines a signal group
 signalobserver.hThe sample observer holds sample values for a signal
+
+
+ + + + diff --git a/docs/manual/html/folderclosed.png b/docs/manual/html/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/docs/manual/html/folderclosed.png differ diff --git a/docs/manual/html/folderopen.png b/docs/manual/html/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/docs/manual/html/folderopen.png differ diff --git a/docs/manual/html/functions.html b/docs/manual/html/functions.html new file mode 100644 index 0000000..b73e5ae --- /dev/null +++ b/docs/manual/html/functions.html @@ -0,0 +1,92 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+ + + + diff --git a/docs/manual/html/functions_b.html b/docs/manual/html/functions_b.html new file mode 100644 index 0000000..7edd388 --- /dev/null +++ b/docs/manual/html/functions_b.html @@ -0,0 +1,89 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+ + + + diff --git a/docs/manual/html/functions_c.html b/docs/manual/html/functions_c.html new file mode 100644 index 0000000..32c76ba --- /dev/null +++ b/docs/manual/html/functions_c.html @@ -0,0 +1,93 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+ + + + diff --git a/docs/manual/html/functions_d.html b/docs/manual/html/functions_d.html new file mode 100644 index 0000000..f9dcb2a --- /dev/null +++ b/docs/manual/html/functions_d.html @@ -0,0 +1,90 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+ + + + diff --git a/docs/manual/html/functions_e.html b/docs/manual/html/functions_e.html new file mode 100644 index 0000000..319aa5d --- /dev/null +++ b/docs/manual/html/functions_e.html @@ -0,0 +1,89 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+ + + + diff --git a/docs/manual/html/functions_f.html b/docs/manual/html/functions_f.html new file mode 100644 index 0000000..03b8b56 --- /dev/null +++ b/docs/manual/html/functions_f.html @@ -0,0 +1,87 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- f -

+
+ + + + diff --git a/docs/manual/html/functions_func.html b/docs/manual/html/functions_func.html new file mode 100644 index 0000000..c514622 --- /dev/null +++ b/docs/manual/html/functions_func.html @@ -0,0 +1,91 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- a -

+
+ + + + diff --git a/docs/manual/html/functions_func_b.html b/docs/manual/html/functions_func_b.html new file mode 100644 index 0000000..183c260 --- /dev/null +++ b/docs/manual/html/functions_func_b.html @@ -0,0 +1,89 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- b -

+
+ + + + diff --git a/docs/manual/html/functions_func_c.html b/docs/manual/html/functions_func_c.html new file mode 100644 index 0000000..240ae6f --- /dev/null +++ b/docs/manual/html/functions_func_c.html @@ -0,0 +1,93 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- c -

+
+ + + + diff --git a/docs/manual/html/functions_func_d.html b/docs/manual/html/functions_func_d.html new file mode 100644 index 0000000..971595d --- /dev/null +++ b/docs/manual/html/functions_func_d.html @@ -0,0 +1,90 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- d -

+
+ + + + diff --git a/docs/manual/html/functions_func_e.html b/docs/manual/html/functions_func_e.html new file mode 100644 index 0000000..532d010 --- /dev/null +++ b/docs/manual/html/functions_func_e.html @@ -0,0 +1,89 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- e -

+
+ + + + diff --git a/docs/manual/html/functions_func_f.html b/docs/manual/html/functions_func_f.html new file mode 100644 index 0000000..e74f291 --- /dev/null +++ b/docs/manual/html/functions_func_f.html @@ -0,0 +1,86 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- f -

+
+ + + + diff --git a/docs/manual/html/functions_func_g.html b/docs/manual/html/functions_func_g.html new file mode 100644 index 0000000..2ab15d3 --- /dev/null +++ b/docs/manual/html/functions_func_g.html @@ -0,0 +1,102 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- g -

+
+ + + + diff --git a/docs/manual/html/functions_func_i.html b/docs/manual/html/functions_func_i.html new file mode 100644 index 0000000..efd0f88 --- /dev/null +++ b/docs/manual/html/functions_func_i.html @@ -0,0 +1,94 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- i -

+
+ + + + diff --git a/docs/manual/html/functions_func_j.html b/docs/manual/html/functions_func_j.html new file mode 100644 index 0000000..3a89afd --- /dev/null +++ b/docs/manual/html/functions_func_j.html @@ -0,0 +1,85 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- j -

+
+ + + + diff --git a/docs/manual/html/functions_func_l.html b/docs/manual/html/functions_func_l.html new file mode 100644 index 0000000..a09c480 --- /dev/null +++ b/docs/manual/html/functions_func_l.html @@ -0,0 +1,88 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- l -

+
+ + + + diff --git a/docs/manual/html/functions_func_m.html b/docs/manual/html/functions_func_m.html new file mode 100644 index 0000000..b96f21a --- /dev/null +++ b/docs/manual/html/functions_func_m.html @@ -0,0 +1,92 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- m -

+
+ + + + diff --git a/docs/manual/html/functions_func_n.html b/docs/manual/html/functions_func_n.html new file mode 100644 index 0000000..88c5251 --- /dev/null +++ b/docs/manual/html/functions_func_n.html @@ -0,0 +1,93 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- n -

+
+ + + + diff --git a/docs/manual/html/functions_func_o.html b/docs/manual/html/functions_func_o.html new file mode 100644 index 0000000..b7f9bd9 --- /dev/null +++ b/docs/manual/html/functions_func_o.html @@ -0,0 +1,86 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- o -

+
+ + + + diff --git a/docs/manual/html/functions_func_p.html b/docs/manual/html/functions_func_p.html new file mode 100644 index 0000000..0d6c7ce --- /dev/null +++ b/docs/manual/html/functions_func_p.html @@ -0,0 +1,92 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- p -

+
+ + + + diff --git a/docs/manual/html/functions_func_r.html b/docs/manual/html/functions_func_r.html new file mode 100644 index 0000000..dd7fa3b --- /dev/null +++ b/docs/manual/html/functions_func_r.html @@ -0,0 +1,90 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- r -

+
+ + + + diff --git a/docs/manual/html/functions_func_s.html b/docs/manual/html/functions_func_s.html new file mode 100644 index 0000000..9c0f06c --- /dev/null +++ b/docs/manual/html/functions_func_s.html @@ -0,0 +1,96 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- s -

+
+ + + + diff --git a/docs/manual/html/functions_func_t.html b/docs/manual/html/functions_func_t.html new file mode 100644 index 0000000..593a8cf --- /dev/null +++ b/docs/manual/html/functions_func_t.html @@ -0,0 +1,88 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- t -

+
+ + + + diff --git a/docs/manual/html/functions_func_u.html b/docs/manual/html/functions_func_u.html new file mode 100644 index 0000000..2ad4ae9 --- /dev/null +++ b/docs/manual/html/functions_func_u.html @@ -0,0 +1,86 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- u -

+
+ + + + diff --git a/docs/manual/html/functions_func_v.html b/docs/manual/html/functions_func_v.html new file mode 100644 index 0000000..a32b191 --- /dev/null +++ b/docs/manual/html/functions_func_v.html @@ -0,0 +1,89 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- v -

+
+ + + + diff --git a/docs/manual/html/functions_func_~.html b/docs/manual/html/functions_func_~.html new file mode 100644 index 0000000..03be365 --- /dev/null +++ b/docs/manual/html/functions_func_~.html @@ -0,0 +1,87 @@ + + + + + + + +DbcLib: Class Members - Functions + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- ~ -

+
+ + + + diff --git a/docs/manual/html/functions_g.html b/docs/manual/html/functions_g.html new file mode 100644 index 0000000..0cfc27a --- /dev/null +++ b/docs/manual/html/functions_g.html @@ -0,0 +1,102 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- g -

+
+ + + + diff --git a/docs/manual/html/functions_i.html b/docs/manual/html/functions_i.html new file mode 100644 index 0000000..ae19277 --- /dev/null +++ b/docs/manual/html/functions_i.html @@ -0,0 +1,94 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+ + + + diff --git a/docs/manual/html/functions_j.html b/docs/manual/html/functions_j.html new file mode 100644 index 0000000..d32b79c --- /dev/null +++ b/docs/manual/html/functions_j.html @@ -0,0 +1,85 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- j -

+
+ + + + diff --git a/docs/manual/html/functions_l.html b/docs/manual/html/functions_l.html new file mode 100644 index 0000000..e9364b6 --- /dev/null +++ b/docs/manual/html/functions_l.html @@ -0,0 +1,88 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+ + + + diff --git a/docs/manual/html/functions_m.html b/docs/manual/html/functions_m.html new file mode 100644 index 0000000..ba3f7ab --- /dev/null +++ b/docs/manual/html/functions_m.html @@ -0,0 +1,93 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+ + + + diff --git a/docs/manual/html/functions_n.html b/docs/manual/html/functions_n.html new file mode 100644 index 0000000..a69be1c --- /dev/null +++ b/docs/manual/html/functions_n.html @@ -0,0 +1,93 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+ + + + diff --git a/docs/manual/html/functions_o.html b/docs/manual/html/functions_o.html new file mode 100644 index 0000000..1a4555c --- /dev/null +++ b/docs/manual/html/functions_o.html @@ -0,0 +1,86 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+ + + + diff --git a/docs/manual/html/functions_p.html b/docs/manual/html/functions_p.html new file mode 100644 index 0000000..adc43cc --- /dev/null +++ b/docs/manual/html/functions_p.html @@ -0,0 +1,92 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+ + + + diff --git a/docs/manual/html/functions_r.html b/docs/manual/html/functions_r.html new file mode 100644 index 0000000..b855c21 --- /dev/null +++ b/docs/manual/html/functions_r.html @@ -0,0 +1,91 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+ + + + diff --git a/docs/manual/html/functions_s.html b/docs/manual/html/functions_s.html new file mode 100644 index 0000000..0996f3a --- /dev/null +++ b/docs/manual/html/functions_s.html @@ -0,0 +1,97 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+ + + + diff --git a/docs/manual/html/functions_t.html b/docs/manual/html/functions_t.html new file mode 100644 index 0000000..d0bef51 --- /dev/null +++ b/docs/manual/html/functions_t.html @@ -0,0 +1,88 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+ + + + diff --git a/docs/manual/html/functions_u.html b/docs/manual/html/functions_u.html new file mode 100644 index 0000000..5b19b1d --- /dev/null +++ b/docs/manual/html/functions_u.html @@ -0,0 +1,87 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+ + + + diff --git a/docs/manual/html/functions_v.html b/docs/manual/html/functions_v.html new file mode 100644 index 0000000..ad174eb --- /dev/null +++ b/docs/manual/html/functions_v.html @@ -0,0 +1,90 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+ + + + diff --git a/docs/manual/html/functions_vars.html b/docs/manual/html/functions_vars.html new file mode 100644 index 0000000..f366149 --- /dev/null +++ b/docs/manual/html/functions_vars.html @@ -0,0 +1,89 @@ + + + + + + + +DbcLib: Class Members - Variables + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+ + + + diff --git a/docs/manual/html/functions_~.html b/docs/manual/html/functions_~.html new file mode 100644 index 0000000..12f1f4e --- /dev/null +++ b/docs/manual/html/functions_~.html @@ -0,0 +1,87 @@ + + + + + + + +DbcLib: Class Members + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- ~ -

+
+ + + + diff --git a/docs/manual/html/graph_legend.html b/docs/manual/html/graph_legend.html new file mode 100644 index 0000000..e4f2255 --- /dev/null +++ b/docs/manual/html/graph_legend.html @@ -0,0 +1,143 @@ + + + + + + + +DbcLib: Graph Legend + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+ +

The arrows have the following meaning:

+ +
+ + + + diff --git a/docs/manual/html/graph_legend.md5 b/docs/manual/html/graph_legend.md5 new file mode 100644 index 0000000..76a6899 --- /dev/null +++ b/docs/manual/html/graph_legend.md5 @@ -0,0 +1 @@ +68a0ee42d4e53d2fb70be66ebb5b1abe \ No newline at end of file diff --git a/docs/manual/html/graph_legend.png b/docs/manual/html/graph_legend.png new file mode 100644 index 0000000..8df6fb4 Binary files /dev/null and b/docs/manual/html/graph_legend.png differ diff --git a/docs/manual/html/hierarchy.html b/docs/manual/html/hierarchy.html new file mode 100644 index 0000000..45c4503 --- /dev/null +++ b/docs/manual/html/hierarchy.html @@ -0,0 +1,102 @@ + + + + + + + +DbcLib: Class Hierarchy + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + + + + + + + + +
 Cdbc::AttributeSupport class for handling attributes of network objects
 Cdbc::DbcFileMain user object that is an interface against a DBC file
 Cdbc::DbcMessageWrapper class around a CAN message
 Cdbc::EnvVarWrapper around an environment DBC variable
 Cdbc::ExtendedMuxSupport function for the extended multiplexor functionality
 Cdbc::ISampleObserverInterface that handles samples. Internal usage
 Cdbc::SignalObserverThe sample observer hold a number of samples
 Cdbc::MessageDBC message configuration object
 Cdbc::NetworkInterface against a DBC network configuration
 Cdbc::NodeInterface against a DBC node which normally is an ECU
 Cdbc::SignalInterface against a DBC signal configuration
 Cdbc::SignalGroupInterface against a signal group
 Cdbc::SignalValueSupport function that holds the channel value for a signal
+
+
+ + + + diff --git a/docs/manual/html/index.html b/docs/manual/html/index.html new file mode 100644 index 0000000..4eedb2d --- /dev/null +++ b/docs/manual/html/index.html @@ -0,0 +1,94 @@ + + + + + + + +DbcLib: DBC C++ Library + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DBC C++ Library
+
+
+

+Summary

+

The DBC C++ library is a C++ interface against CAN DBC files.

+

The project consist of the following main components.

+
    +
  • C++ Library with all main functionality.
  • +
  • DBC Viewer GUI application that simply display the content of DBC files.
  • +
+

The DBC file defines a CAN network. The network consist of devices (nodes), messages and signals.

+

The C++ library can also parse a CAN message into signal values. Additional the library support adding multiple CAN messages into signal sample values.

+
+
+ + + + diff --git a/docs/manual/html/inherit_graph_0.map b/docs/manual/html/inherit_graph_0.map new file mode 100644 index 0000000..7509d8a --- /dev/null +++ b/docs/manual/html/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_0.md5 b/docs/manual/html/inherit_graph_0.md5 new file mode 100644 index 0000000..4edf65e --- /dev/null +++ b/docs/manual/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +d758882acb28e2c6611008d1b3d040f6 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_0.png b/docs/manual/html/inherit_graph_0.png new file mode 100644 index 0000000..a3396c5 Binary files /dev/null and b/docs/manual/html/inherit_graph_0.png differ diff --git a/docs/manual/html/inherit_graph_1.map b/docs/manual/html/inherit_graph_1.map new file mode 100644 index 0000000..8d97fcc --- /dev/null +++ b/docs/manual/html/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_1.md5 b/docs/manual/html/inherit_graph_1.md5 new file mode 100644 index 0000000..bced7bc --- /dev/null +++ b/docs/manual/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +04f578d95f527b3d83789494a2a5d249 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_1.png b/docs/manual/html/inherit_graph_1.png new file mode 100644 index 0000000..d7094f7 Binary files /dev/null and b/docs/manual/html/inherit_graph_1.png differ diff --git a/docs/manual/html/inherit_graph_10.map b/docs/manual/html/inherit_graph_10.map new file mode 100644 index 0000000..c46d139 --- /dev/null +++ b/docs/manual/html/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_10.md5 b/docs/manual/html/inherit_graph_10.md5 new file mode 100644 index 0000000..7bc7e24 --- /dev/null +++ b/docs/manual/html/inherit_graph_10.md5 @@ -0,0 +1 @@ +33a46a5da73b0302dd4f5d29b4631577 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_10.png b/docs/manual/html/inherit_graph_10.png new file mode 100644 index 0000000..9f65189 Binary files /dev/null and b/docs/manual/html/inherit_graph_10.png differ diff --git a/docs/manual/html/inherit_graph_11.map b/docs/manual/html/inherit_graph_11.map new file mode 100644 index 0000000..b23478a --- /dev/null +++ b/docs/manual/html/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_11.md5 b/docs/manual/html/inherit_graph_11.md5 new file mode 100644 index 0000000..20c08d7 --- /dev/null +++ b/docs/manual/html/inherit_graph_11.md5 @@ -0,0 +1 @@ +2f7c1f36071729ec05de63d94ea70ab9 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_11.png b/docs/manual/html/inherit_graph_11.png new file mode 100644 index 0000000..2db0f68 Binary files /dev/null and b/docs/manual/html/inherit_graph_11.png differ diff --git a/docs/manual/html/inherit_graph_2.map b/docs/manual/html/inherit_graph_2.map new file mode 100644 index 0000000..fd6f931 --- /dev/null +++ b/docs/manual/html/inherit_graph_2.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_2.md5 b/docs/manual/html/inherit_graph_2.md5 new file mode 100644 index 0000000..1d350c9 --- /dev/null +++ b/docs/manual/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +d9051da921d12228906c1f3b6022636f \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_2.png b/docs/manual/html/inherit_graph_2.png new file mode 100644 index 0000000..1d84c37 Binary files /dev/null and b/docs/manual/html/inherit_graph_2.png differ diff --git a/docs/manual/html/inherit_graph_3.map b/docs/manual/html/inherit_graph_3.map new file mode 100644 index 0000000..56f145b --- /dev/null +++ b/docs/manual/html/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_3.md5 b/docs/manual/html/inherit_graph_3.md5 new file mode 100644 index 0000000..14d263b --- /dev/null +++ b/docs/manual/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +83724d9e8872ecaf3e0f5e4c160187d1 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_3.png b/docs/manual/html/inherit_graph_3.png new file mode 100644 index 0000000..3ea27ac Binary files /dev/null and b/docs/manual/html/inherit_graph_3.png differ diff --git a/docs/manual/html/inherit_graph_4.map b/docs/manual/html/inherit_graph_4.map new file mode 100644 index 0000000..3fc8ba2 --- /dev/null +++ b/docs/manual/html/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_4.md5 b/docs/manual/html/inherit_graph_4.md5 new file mode 100644 index 0000000..1bb1429 --- /dev/null +++ b/docs/manual/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +40f412f9a657f78a3d9427ae82058b14 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_4.png b/docs/manual/html/inherit_graph_4.png new file mode 100644 index 0000000..fed33c2 Binary files /dev/null and b/docs/manual/html/inherit_graph_4.png differ diff --git a/docs/manual/html/inherit_graph_5.map b/docs/manual/html/inherit_graph_5.map new file mode 100644 index 0000000..43eadfa --- /dev/null +++ b/docs/manual/html/inherit_graph_5.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/html/inherit_graph_5.md5 b/docs/manual/html/inherit_graph_5.md5 new file mode 100644 index 0000000..62d77c2 --- /dev/null +++ b/docs/manual/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +98fa71b18955db5fc00c123fb2602c89 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_5.png b/docs/manual/html/inherit_graph_5.png new file mode 100644 index 0000000..561ca56 Binary files /dev/null and b/docs/manual/html/inherit_graph_5.png differ diff --git a/docs/manual/html/inherit_graph_6.map b/docs/manual/html/inherit_graph_6.map new file mode 100644 index 0000000..e09d8fb --- /dev/null +++ b/docs/manual/html/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_6.md5 b/docs/manual/html/inherit_graph_6.md5 new file mode 100644 index 0000000..037a9d5 --- /dev/null +++ b/docs/manual/html/inherit_graph_6.md5 @@ -0,0 +1 @@ +5bd7417723070056b3448fc8b8daa899 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_6.png b/docs/manual/html/inherit_graph_6.png new file mode 100644 index 0000000..b4aac30 Binary files /dev/null and b/docs/manual/html/inherit_graph_6.png differ diff --git a/docs/manual/html/inherit_graph_7.map b/docs/manual/html/inherit_graph_7.map new file mode 100644 index 0000000..1694a35 --- /dev/null +++ b/docs/manual/html/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_7.md5 b/docs/manual/html/inherit_graph_7.md5 new file mode 100644 index 0000000..626c474 --- /dev/null +++ b/docs/manual/html/inherit_graph_7.md5 @@ -0,0 +1 @@ +f511c37eba2c3d03c3d467a01eac4972 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_7.png b/docs/manual/html/inherit_graph_7.png new file mode 100644 index 0000000..e3f731d Binary files /dev/null and b/docs/manual/html/inherit_graph_7.png differ diff --git a/docs/manual/html/inherit_graph_8.map b/docs/manual/html/inherit_graph_8.map new file mode 100644 index 0000000..e3f1fe7 --- /dev/null +++ b/docs/manual/html/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_8.md5 b/docs/manual/html/inherit_graph_8.md5 new file mode 100644 index 0000000..df0e848 --- /dev/null +++ b/docs/manual/html/inherit_graph_8.md5 @@ -0,0 +1 @@ +b0c83bf69f12cd7198fdf3ac4d959671 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_8.png b/docs/manual/html/inherit_graph_8.png new file mode 100644 index 0000000..e22f130 Binary files /dev/null and b/docs/manual/html/inherit_graph_8.png differ diff --git a/docs/manual/html/inherit_graph_9.map b/docs/manual/html/inherit_graph_9.map new file mode 100644 index 0000000..0093c76 --- /dev/null +++ b/docs/manual/html/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/html/inherit_graph_9.md5 b/docs/manual/html/inherit_graph_9.md5 new file mode 100644 index 0000000..d25b385 --- /dev/null +++ b/docs/manual/html/inherit_graph_9.md5 @@ -0,0 +1 @@ +5b1d28260fb05de65c20fc6ed2eacb57 \ No newline at end of file diff --git a/docs/manual/html/inherit_graph_9.png b/docs/manual/html/inherit_graph_9.png new file mode 100644 index 0000000..ade266f Binary files /dev/null and b/docs/manual/html/inherit_graph_9.png differ diff --git a/docs/manual/html/inherits.html b/docs/manual/html/inherits.html new file mode 100644 index 0000000..acbda1c --- /dev/null +++ b/docs/manual/html/inherits.html @@ -0,0 +1,148 @@ + + + + + + + +DbcLib: Class Hierarchy + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+ + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+
+ + + + diff --git a/docs/manual/html/isampleobserver_8h.html b/docs/manual/html/isampleobserver_8h.html new file mode 100644 index 0000000..ae98685 --- /dev/null +++ b/docs/manual/html/isampleobserver_8h.html @@ -0,0 +1,131 @@ + + + + + + + +DbcLib: include/dbc/isampleobserver.h File Reference + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
isampleobserver.h File Reference
+
+
+ +

Internal object that define an observer interface that handle samples. +More...

+
#include <cstdint>
+
+Include dependency graph for isampleobserver.h:
+
+
+ + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dbc::ISampleObserver
 Interface that handles samples. Internal usage. More...
 
+ + + + +

+Namespaces

namespace  dbc
 Main namespace for the DBC library.
 
+
+ + + + diff --git a/docs/manual/html/isampleobserver_8h__dep__incl.map b/docs/manual/html/isampleobserver_8h__dep__incl.map new file mode 100644 index 0000000..c058f2e --- /dev/null +++ b/docs/manual/html/isampleobserver_8h__dep__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/manual/html/isampleobserver_8h__dep__incl.md5 b/docs/manual/html/isampleobserver_8h__dep__incl.md5 new file mode 100644 index 0000000..ad8dd76 --- /dev/null +++ b/docs/manual/html/isampleobserver_8h__dep__incl.md5 @@ -0,0 +1 @@ +c3b2a2760972d3ab0ee632c2a0c83093 \ No newline at end of file diff --git a/docs/manual/html/isampleobserver_8h__dep__incl.png b/docs/manual/html/isampleobserver_8h__dep__incl.png new file mode 100644 index 0000000..6e381b1 Binary files /dev/null and b/docs/manual/html/isampleobserver_8h__dep__incl.png differ diff --git a/docs/manual/html/isampleobserver_8h__incl.map b/docs/manual/html/isampleobserver_8h__incl.map new file mode 100644 index 0000000..fd2d904 --- /dev/null +++ b/docs/manual/html/isampleobserver_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/html/isampleobserver_8h__incl.md5 b/docs/manual/html/isampleobserver_8h__incl.md5 new file mode 100644 index 0000000..0f10e4a --- /dev/null +++ b/docs/manual/html/isampleobserver_8h__incl.md5 @@ -0,0 +1 @@ +4f0360609a92a827e911f5c60a4b443f \ No newline at end of file diff --git a/docs/manual/html/isampleobserver_8h__incl.png b/docs/manual/html/isampleobserver_8h__incl.png new file mode 100644 index 0000000..332085d Binary files /dev/null and b/docs/manual/html/isampleobserver_8h__incl.png differ diff --git a/docs/manual/html/isampleobserver_8h_source.html b/docs/manual/html/isampleobserver_8h_source.html new file mode 100644 index 0000000..edc9852 --- /dev/null +++ b/docs/manual/html/isampleobserver_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +DbcLib: include/dbc/isampleobserver.h Source File + + + + + + + + + + +
+
+ + + + + + +
+
DbcLib 1.0 +
+
CAN DBC C++ library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
isampleobserver.h
+
+
+Go to the documentation of this file.
1/*
+
2* Copyright 2022 Ingemar Hedvall
+
3* SPDX-License-Identifier: MIT
+
4 */
+
8#pragma once
+
9#include <cstdint>
+
10namespace dbc {
+ +
14 public:
+
15 ISampleObserver() = default;
+
16 virtual ~ISampleObserver() = default;
+
17 virtual void OnSample() = 0;
+
18 virtual void DetachObserver() = 0;
+
19};
+
20
+
21} // namespace dbc
+
Interface that handles samples. Internal usage.
Definition: isampleobserver.h:13
+
virtual void DetachObserver()=0
Detach the observer object.
+
ISampleObserver()=default
Default constructor.
+
virtual void OnSample()=0
Handle a sample.
+
virtual ~ISampleObserver()=default
Default destructor.
+
Main namespace for the DBC library.
Definition: attribute.h:13
+
+ + + + diff --git a/docs/manual/html/jquery.js b/docs/manual/html/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/docs/manual/html/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/manual/html/menu.js b/docs/manual/html/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/docs/manual/html/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/manual/html/menudata.js b/docs/manual/html/menudata.js new file mode 100644 index 0000000..377a75b --- /dev/null +++ b/docs/manual/html/menudata.js @@ -0,0 +1,82 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Typedefs",url:"namespacemembers_type.html"}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"j",url:"functions_j.html#index_j"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"j",url:"functions_func_j.html#index_j"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/docs/manual/html/message_8h.html b/docs/manual/html/message_8h.html new file mode 100644 index 0000000..788beb7 --- /dev/null +++ b/docs/manual/html/message_8h.html @@ -0,0 +1,148 @@ + + + + + + + +DbcLib: include/dbc/message.h File Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    message.h File Reference
    +
    +
    + +

    DBC message configuration object. +More...

    +
    #include <cstdint>
    +#include <vector>
    +#include <map>
    +#include <string>
    +#include "dbc/attribute.h"
    +#include "dbc/signal.h"
    +
    +Include dependency graph for message.h:
    +
    +
    + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dbc::Message
     DBC message configuration object. More...
     
    + + + + +

    +Namespaces

    namespace  dbc
     Main namespace for the DBC library.
     
    + + + + +

    +Typedefs

    +using dbc::SignalList = std::map< std::string, Signal >
     Sorted list of signal objects.
     
    +
    + + + + diff --git a/docs/manual/html/message_8h__dep__incl.map b/docs/manual/html/message_8h__dep__incl.map new file mode 100644 index 0000000..b093765 --- /dev/null +++ b/docs/manual/html/message_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/manual/html/message_8h__dep__incl.md5 b/docs/manual/html/message_8h__dep__incl.md5 new file mode 100644 index 0000000..476a2dc --- /dev/null +++ b/docs/manual/html/message_8h__dep__incl.md5 @@ -0,0 +1 @@ +7dffc1d56cd33b20cf54f2bb507c92b9 \ No newline at end of file diff --git a/docs/manual/html/message_8h__dep__incl.png b/docs/manual/html/message_8h__dep__incl.png new file mode 100644 index 0000000..7d6e127 Binary files /dev/null and b/docs/manual/html/message_8h__dep__incl.png differ diff --git a/docs/manual/html/message_8h__incl.map b/docs/manual/html/message_8h__incl.map new file mode 100644 index 0000000..697ddd9 --- /dev/null +++ b/docs/manual/html/message_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/manual/html/message_8h__incl.md5 b/docs/manual/html/message_8h__incl.md5 new file mode 100644 index 0000000..60eb8c6 --- /dev/null +++ b/docs/manual/html/message_8h__incl.md5 @@ -0,0 +1 @@ +ec5861429bae9b1c69fbb681e168a440 \ No newline at end of file diff --git a/docs/manual/html/message_8h__incl.png b/docs/manual/html/message_8h__incl.png new file mode 100644 index 0000000..72cd9df Binary files /dev/null and b/docs/manual/html/message_8h__incl.png differ diff --git a/docs/manual/html/message_8h_source.html b/docs/manual/html/message_8h_source.html new file mode 100644 index 0000000..cf4af82 --- /dev/null +++ b/docs/manual/html/message_8h_source.html @@ -0,0 +1,244 @@ + + + + + + + +DbcLib: include/dbc/message.h Source File + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    message.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2* Copyright 2022 Ingemar Hedvall
    +
    3* SPDX-License-Identifier: MIT
    +
    4 */
    +
    8#pragma once
    +
    9#include <cstdint>
    +
    10#include <vector>
    +
    11#include <map>
    +
    12#include <string>
    +
    13
    +
    14#include "dbc/attribute.h"
    +
    15#include "dbc/signal.h"
    +
    16
    +
    17namespace dbc {
    +
    19using SignalList = std::map<std::string, Signal>;
    +
    20
    +
    22class Message {
    +
    23 public:
    +
    24 void Ident(uint64_t ident) {
    +
    25 ident_ = ident;
    +
    26 }
    +
    27 [[nodiscard]] uint64_t Ident() const {
    +
    28 return ident_;
    +
    29 }
    +
    30
    +
    31 [[nodiscard]] bool IsExtended() const;
    +
    32 [[nodiscard]] bool IsJ1939() const;
    +
    33 [[nodiscard]] uint32_t CanId() const;
    +
    34 [[nodiscard]] uint8_t Priority() const;
    +
    35 [[nodiscard]] uint32_t Pgn() const;
    +
    36 [[nodiscard]] uint8_t Source() const;
    +
    37 [[nodiscard]] bool ExtendedDataPage() const;
    +
    38 [[nodiscard]] bool DataPage() const;
    +
    39 [[nodiscard]] uint8_t PduFormat() const;
    +
    40 [[nodiscard]] uint8_t PduSpecific() const;
    +
    41 [[nodiscard]] bool IsPdu1() const;
    +
    42 [[nodiscard]] bool IsPdu2() const;
    +
    43
    +
    45 void Name(const std::string& name) { name_ = name; }
    +
    47 [[nodiscard]] const std::string& Name() const { return name_; }
    +
    48
    +
    50 void Comment(const std::string& comment) { comment_ = comment; }
    +
    52 [[nodiscard]] const std::string& Comment() const { return comment_; }
    +
    53
    +
    54 void NofBytes(size_t bytes);
    +
    55 [[nodiscard]] size_t NofBytes() const;
    +
    56
    +
    58 void Node(const std::string& node) {
    +
    59 if (node_.empty()) {
    +
    60 node_ = node;
    +
    61 }
    +
    62 sender_list_.push_back(node);
    +
    63 }
    +
    65 [[nodiscard]] std::string NodeName() const {
    +
    66 return node_;
    +
    67 }
    +
    68
    +
    70 [[nodiscard]] Signal* GetSignal(const std::string& name);
    +
    72 [[nodiscard]] const Signal* GetSignal(const std::string& name) const;
    +
    74 [[nodiscard]] Signal* GetMultiplexor();
    +
    75
    +
    77 [[nodiscard]] const Attribute* GetAttribute(const std::string& name) const;
    +
    78
    +
    80 [[nodiscard]] const SignalList& Signals() const {
    +
    81 return signal_list_;
    +
    82 }
    +
    83
    +
    85 [[nodiscard]] const std::vector<std::string>& Senders() const {
    +
    86 return sender_list_;
    +
    87 }
    +
    88
    +
    90 [[nodiscard]] const std::vector<Attribute>& Attributes() const {
    +
    91 return attribute_list_;
    +
    92 }
    +
    93
    +
    95 [[nodiscard]] bool IsNodeSender(const std::string& node_name) const;
    +
    96
    +
    98 [[nodiscard]] const std::vector<uint8_t>& Data() const {return data_;}
    +
    99
    +
    111 bool UpdateData(const std::vector<uint8_t>& message,
    +
    112 size_t offset = 0, size_t data_index = 0);
    +
    114 void ParseMessage(uint64_t ns1970, uint32_t can_id);
    +
    116 void ResetSequenceNumber() {sequence_number_ = 0;}
    +
    118 uint8_t NextSequenceNumber() const {return sequence_number_;}
    +
    119
    +
    120 void ResetSampleCounter() const;
    +
    122 void StepSampleCounter() const {++sample_counter_;}
    +
    124 size_t SampleCounter() const {return sample_counter_;}
    +
    125
    + +
    128
    +
    130 Signal& CreateSignal(const std::string& name);
    +
    131
    +
    132 private:
    +
    133 uint64_t ident_;
    +
    134 std::string name_;
    +
    135 std::string comment_;
    +
    136 std::string node_;
    +
    137 std::vector<std::string> sender_list_;
    +
    138
    +
    139 std::vector<Attribute> attribute_list_;
    +
    140
    +
    141 SignalList signal_list_;
    +
    142
    +
    143 mutable size_t sample_counter_ = 0;
    +
    144 std::vector<uint8_t> data_;
    +
    145 uint8_t sequence_number_ = 0;
    +
    146};
    +
    147
    +
    148} // namespace dbc
    +
    All DBC network objects may have attributes attached to them.
    +
    Support class for handling attributes of network objects.
    Definition: attribute.h:49
    +
    DBC message configuration object.
    Definition: message.h:22
    +
    uint32_t Pgn() const
    J1939 PGN.
    +
    const std::string & Comment() const
    Returns the descriptive text.
    Definition: message.h:52
    +
    bool IsExtended() const
    True if 29-bit ID.
    +
    const std::vector< Attribute > & Attributes() const
    Returns a list of attributes.
    Definition: message.h:90
    +
    void ResetSampleCounter() const
    Reset the sample counters.
    +
    void Name(const std::string &name)
    Sets the message name.
    Definition: message.h:45
    +
    void StepSampleCounter() const
    Increments the internal sample counters.
    Definition: message.h:122
    +
    void Node(const std::string &node)
    Sets a node name.
    Definition: message.h:58
    +
    Attribute & CreateAttribute(const Attribute &definition)
    Creates an attributes by using its definition.
    +
    uint8_t NextSequenceNumber() const
    Returns the next sequence number.
    Definition: message.h:118
    +
    uint32_t CanId() const
    Returns CAN ID.
    +
    bool UpdateData(const std::vector< uint8_t > &message, size_t offset=0, size_t data_index=0)
    Update the internal data buffer.
    +
    bool IsNodeSender(const std::string &node_name) const
    Returns true if the node is a sender.
    +
    void ParseMessage(uint64_t ns1970, uint32_t can_id)
    Parses the message. Internal usage.
    +
    void NofBytes(size_t bytes)
    Sets the number of bytes.
    +
    uint64_t Ident() const
    Definition: message.h:27
    +
    void Ident(uint64_t ident)
    Definition: message.h:24
    +
    bool IsPdu1() const
    True if PDU1.
    +
    uint8_t Source() const
    J1939 Source.
    +
    std::string NodeName() const
    Returns the node name.
    Definition: message.h:65
    +
    const SignalList & Signals() const
    Returns the signal list.
    Definition: message.h:80
    +
    bool ExtendedDataPage() const
    J1938 Data Page Flag.
    +
    uint8_t Priority() const
    J1939 Priority.
    +
    size_t SampleCounter() const
    Returns number of samples.
    Definition: message.h:124
    +
    const Signal * GetSignal(const std::string &name) const
    Returns a signal by its name.
    +
    uint8_t PduSpecific() const
    J1939 PS.
    +
    Signal * GetMultiplexor()
    Returns the multiplexer signal object.
    +
    Signal * GetSignal(const std::string &name)
    Returns a signal by its name.
    +
    bool IsJ1939() const
    True if it is a J1939 message.
    +
    void Comment(const std::string &comment)
    Sets the descriptive text.
    Definition: message.h:50
    +
    const std::vector< std::string > & Senders() const
    Returns a list of sender names.
    Definition: message.h:85
    +
    const std::string & Name() const
    Returns the message name.
    Definition: message.h:47
    +
    bool IsPdu2() const
    True if PDU2.
    +
    bool DataPage() const
    J1938 Data Page Flag.
    +
    size_t NofBytes() const
    Returns the number of bytes.
    +
    const Attribute * GetAttribute(const std::string &name) const
    Returns an attribute by its name.
    +
    uint8_t PduFormat() const
    J1939 PF.
    +
    const std::vector< uint8_t > & Data() const
    Returns the last message data buffer.
    Definition: message.h:98
    +
    void ResetSequenceNumber()
    Reset the internal sequence counter.
    Definition: message.h:116
    +
    Signal & CreateSignal(const std::string &name)
    Create a new signal by its name.
    +
    Interface against a DBC signal configuration.
    Definition: signal.h:68
    +
    Main namespace for the DBC library.
    Definition: attribute.h:13
    +
    std::map< std::string, Signal > SignalList
    Sorted list of signal objects.
    Definition: message.h:19
    +
    Interface against a DBC signal configuration.
    +
    + + + + diff --git a/docs/manual/html/namespacedbc.html b/docs/manual/html/namespacedbc.html new file mode 100644 index 0000000..ab42a3b --- /dev/null +++ b/docs/manual/html/namespacedbc.html @@ -0,0 +1,484 @@ + + + + + + + +DbcLib: dbc Namespace Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    dbc Namespace Reference
    +
    +
    + +

    Main namespace for the DBC library. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  Attribute
     Support class for handling attributes of network objects. More...
     
    class  DbcFile
     Main user object that is an interface against a DBC file. More...
     
    class  DbcMessage
     Wrapper class around a CAN message. More...
     
    class  EnvVar
     Wrapper around an environment DBC variable. More...
     
    struct  ExtendedMux
     Support function for the extended multiplexor functionality. More...
     
    class  ISampleObserver
     Interface that handles samples. Internal usage. More...
     
    class  Message
     DBC message configuration object. More...
     
    class  Network
     Interface against a DBC network configuration. More...
     
    class  Node
     Interface against a DBC node which normally is an ECU. More...
     
    class  Signal
     Interface against a DBC signal configuration. More...
     
    class  SignalGroup
     Interface against a signal group. More...
     
    class  SignalObserver
     The sample observer hold a number of samples. More...
     
    struct  SignalValue
     Support function that holds the channel value for a signal. More...
     
    + + + + + + + + + + + + + + + + +

    +Typedefs

    +using SignalList = std::map< std::string, Signal >
     Sorted list of signal objects.
     
    +using EnumMap = std::map< int64_t, std::string >
     Enumerate list.
     
    +using MessageList = std::map< uint64_t, Message >
     Sorted message of messages. Message ID is the key.
     
    +using RangePair = std::pair< size_t, size_t >
     Min and Max range definition.
     
    +using SignalObserverList = std::vector< std::unique_ptr< SignalObserver > >
     List of observer.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Enumerations

    enum class  AttributeType : int {
    +  DbcNetwork +, DbcNode +, DbcMessage +, DbcSignal +,
    +  EnvironmentVariable +, NodeSignalRelation +, NodeMessageRelation +
    + }
     Define what type of network object the attribute is valid for. More...
     
    enum class  AttributeValueType : int {
    +  IntegerValue +, FloatValue +, StringValue +, EnumValue +,
    +  HexValue +
    + }
     Data type of the attribute. More...
     
    enum class  EnvType : int { IntegerType = 0 +, FloatType = 1 +, StringType = 2 +, DataType = 3 + }
     The variable data type. More...
     
    enum class  AccessType : int { Unrestricted = 0 +, ReadOnly = 1 +, WriteOnly = 2 +, ReadWrite = 3 + }
     Type of access. More...
     
    enum class  ProtocolType : int { StandardCAN = 0 +, J1939 = 1 +, NMEA2000 = 2 +, OBD2 = 3 + }
     Type of CAN protocol. More...
     
    enum class  BusType : int { CAN = 0 + }
     Type of bus. More...
     
    enum class  SignalDataType : int { SignedData +, UnsignedData +, FloatData +, DoubleData + }
     Signal data type. More...
     
    enum class  MuxType : int { NotMultiplexed +, Multiplexor +, Multiplexed +, ExtendedMultiplexor + }
     Multiplexer type. More...
     
    +

    Detailed Description

    +

    Main namespace for the DBC C++ library classes and functions.

    +

    Enumeration Type Documentation

    + +

    ◆ AccessType

    + +
    +
    + + + + + +
    + + + + +
    enum class dbc::AccessType : int
    +
    +strong
    +
    + + + + + +
    Enumerator
    Unrestricted 

    Unrestricted access.

    +
    ReadOnly 

    Read-only access.

    +
    WriteOnly 

    Write-only access.

    +
    ReadWrite 

    Read and write access.

    +
    + +
    +
    + +

    ◆ AttributeType

    + +
    +
    + + + + + +
    + + + + +
    enum class dbc::AttributeType : int
    +
    +strong
    +
    + + + + + + + + +
    Enumerator
    DbcNetwork 

    Network attribute.

    +
    DbcNode 

    Node/Device attribute.

    +
    DbcMessage 

    Message attribute.

    +
    DbcSignal 

    Signal attribute.

    +
    EnvironmentVariable 

    Environment attribute.

    +
    NodeSignalRelation 

    Node signal relation attribute.

    +
    NodeMessageRelation 

    Node message relation attribute.

    +
    + +
    +
    + +

    ◆ AttributeValueType

    + +
    +
    + + + + + +
    + + + + +
    enum class dbc::AttributeValueType : int
    +
    +strong
    +
    + + + + + + +
    Enumerator
    IntegerValue 

    Integer value.

    +
    FloatValue 

    Floating point value.

    +
    StringValue 

    Text value.

    +
    EnumValue 

    Enumerate value.

    +
    HexValue 

    Hexa-decimal value.

    +
    + +
    +
    + +

    ◆ BusType

    + +
    +
    + + + + + +
    + + + + +
    enum class dbc::BusType : int
    +
    +strong
    +
    + + +
    Enumerator
    CAN 

    CAN bus.

    +
    + +
    +
    + +

    ◆ EnvType

    + +
    +
    + + + + + +
    + + + + +
    enum class dbc::EnvType : int
    +
    +strong
    +
    + + + + + +
    Enumerator
    IntegerType 

    Integer variable.

    +
    FloatType 

    Floating point variable.

    +
    StringType 

    Text variable.

    +
    DataType 

    Data type variable.

    +
    + +
    +
    + +

    ◆ MuxType

    + +
    +
    + + + + + +
    + + + + +
    enum class dbc::MuxType : int
    +
    +strong
    +
    +

    A signal may be multiplexed i.e. have different value depending on another multiplexor signal.Then someone invented the extended multiplexed value which makes every thing confusing.

    + + + + + +
    Enumerator
    NotMultiplexed 

    Normal signal.

    +
    Multiplexor 

    Multiplexor signal.

    +
    Multiplexed 

    Multiplexed signal.

    +
    ExtendedMultiplexor 

    Extended multiplexor signal.

    +
    + +
    +
    + +

    ◆ ProtocolType

    + +
    +
    + + + + + +
    + + + + +
    enum class dbc::ProtocolType : int
    +
    +strong
    +
    + + + + + +
    Enumerator
    StandardCAN 

    Standard CAN.

    +
    J1939 

    J1939 protocol.

    +
    NMEA2000 

    NMEA protocol.

    +
    OBD2 

    OBD2 protocol.

    +
    + +
    +
    + +

    ◆ SignalDataType

    + +
    +
    + + + + + +
    + + + + +
    enum class dbc::SignalDataType : int
    +
    +strong
    +
    + + + + + +
    Enumerator
    SignedData 

    Signed integer.

    +
    UnsignedData 

    Unsigned integer.

    +
    FloatData 

    Float value.

    +
    DoubleData 

    Double value.

    +
    + +
    +
    +
    + + + + diff --git a/docs/manual/html/namespacemembers.html b/docs/manual/html/namespacemembers.html new file mode 100644 index 0000000..c2e3dd5 --- /dev/null +++ b/docs/manual/html/namespacemembers.html @@ -0,0 +1,95 @@ + + + + + + + +DbcLib: Namespace Members + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
      +
    • AccessType : dbc
    • +
    • AttributeType : dbc
    • +
    • AttributeValueType : dbc
    • +
    • BusType : dbc
    • +
    • EnumMap : dbc
    • +
    • EnvType : dbc
    • +
    • MessageList : dbc
    • +
    • MuxType : dbc
    • +
    • ProtocolType : dbc
    • +
    • RangePair : dbc
    • +
    • SignalDataType : dbc
    • +
    • SignalList : dbc
    • +
    • SignalObserverList : dbc
    • +
    +
    + + + + diff --git a/docs/manual/html/namespacemembers_enum.html b/docs/manual/html/namespacemembers_enum.html new file mode 100644 index 0000000..ad92add --- /dev/null +++ b/docs/manual/html/namespacemembers_enum.html @@ -0,0 +1,90 @@ + + + + + + + +DbcLib: Namespace Members + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
      +
    • AccessType : dbc
    • +
    • AttributeType : dbc
    • +
    • AttributeValueType : dbc
    • +
    • BusType : dbc
    • +
    • EnvType : dbc
    • +
    • MuxType : dbc
    • +
    • ProtocolType : dbc
    • +
    • SignalDataType : dbc
    • +
    +
    + + + + diff --git a/docs/manual/html/namespacemembers_type.html b/docs/manual/html/namespacemembers_type.html new file mode 100644 index 0000000..465fcc2 --- /dev/null +++ b/docs/manual/html/namespacemembers_type.html @@ -0,0 +1,87 @@ + + + + + + + +DbcLib: Namespace Members + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
      +
    • EnumMap : dbc
    • +
    • MessageList : dbc
    • +
    • RangePair : dbc
    • +
    • SignalList : dbc
    • +
    • SignalObserverList : dbc
    • +
    +
    + + + + diff --git a/docs/manual/html/namespaces.html b/docs/manual/html/namespaces.html new file mode 100644 index 0000000..35fd49d --- /dev/null +++ b/docs/manual/html/namespaces.html @@ -0,0 +1,101 @@ + + + + + + + +DbcLib: Namespace List + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    +
    [detail level 12]
    + + + + + + + + + + + + + + +
     NdbcMain namespace for the DBC library
     CAttributeSupport class for handling attributes of network objects
     CDbcFileMain user object that is an interface against a DBC file
     CDbcMessageWrapper class around a CAN message
     CEnvVarWrapper around an environment DBC variable
     CExtendedMuxSupport function for the extended multiplexor functionality
     CISampleObserverInterface that handles samples. Internal usage
     CMessageDBC message configuration object
     CNetworkInterface against a DBC network configuration
     CNodeInterface against a DBC node which normally is an ECU
     CSignalInterface against a DBC signal configuration
     CSignalGroupInterface against a signal group
     CSignalObserverThe sample observer hold a number of samples
     CSignalValueSupport function that holds the channel value for a signal
    +
    +
    + + + + diff --git a/docs/manual/html/nav_f.png b/docs/manual/html/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/docs/manual/html/nav_f.png differ diff --git a/docs/manual/html/nav_fd.png b/docs/manual/html/nav_fd.png new file mode 100644 index 0000000..032fbdd Binary files /dev/null and b/docs/manual/html/nav_fd.png differ diff --git a/docs/manual/html/nav_g.png b/docs/manual/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/docs/manual/html/nav_g.png differ diff --git a/docs/manual/html/nav_h.png b/docs/manual/html/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/docs/manual/html/nav_h.png differ diff --git a/docs/manual/html/nav_hd.png b/docs/manual/html/nav_hd.png new file mode 100644 index 0000000..de80f18 Binary files /dev/null and b/docs/manual/html/nav_hd.png differ diff --git a/docs/manual/html/network_8h.html b/docs/manual/html/network_8h.html new file mode 100644 index 0000000..f8063d6 --- /dev/null +++ b/docs/manual/html/network_8h.html @@ -0,0 +1,172 @@ + + + + + + + +DbcLib: include/dbc/network.h File Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    network.h File Reference
    +
    +
    + +

    Defines a DBC network configuration object. +More...

    +
    #include <vector>
    +#include <map>
    +#include "dbc/envvar.h"
    +#include "dbc/attribute.h"
    +#include "dbc/node.h"
    +#include "dbc/message.h"
    +#include "dbc/signal.h"
    +#include "dbc/signalgroup.h"
    +
    +Include dependency graph for network.h:
    +
    +
    + + + + + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dbc::Network
     Interface against a DBC network configuration. More...
     
    + + + + +

    +Namespaces

    namespace  dbc
     Main namespace for the DBC library.
     
    + + + + + + + +

    +Typedefs

    +using dbc::EnumMap = std::map< int64_t, std::string >
     Enumerate list.
     
    +using dbc::MessageList = std::map< uint64_t, Message >
     Sorted message of messages. Message ID is the key.
     
    + + + + + + + +

    +Enumerations

    enum class  dbc::ProtocolType : int { dbc::StandardCAN = 0 +, dbc::J1939 = 1 +, dbc::NMEA2000 = 2 +, dbc::OBD2 = 3 + }
     Type of CAN protocol. More...
     
    enum class  dbc::BusType : int { dbc::CAN = 0 + }
     Type of bus. More...
     
    +
    + + + + diff --git a/docs/manual/html/network_8h__dep__incl.map b/docs/manual/html/network_8h__dep__incl.map new file mode 100644 index 0000000..5b78002 --- /dev/null +++ b/docs/manual/html/network_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/html/network_8h__dep__incl.md5 b/docs/manual/html/network_8h__dep__incl.md5 new file mode 100644 index 0000000..7fd0967 --- /dev/null +++ b/docs/manual/html/network_8h__dep__incl.md5 @@ -0,0 +1 @@ +a1cc5b38a3f1371a7e49f848cfd3d3c3 \ No newline at end of file diff --git a/docs/manual/html/network_8h__dep__incl.png b/docs/manual/html/network_8h__dep__incl.png new file mode 100644 index 0000000..d44df3b Binary files /dev/null and b/docs/manual/html/network_8h__dep__incl.png differ diff --git a/docs/manual/html/network_8h__incl.map b/docs/manual/html/network_8h__incl.map new file mode 100644 index 0000000..28a5782 --- /dev/null +++ b/docs/manual/html/network_8h__incl.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/manual/html/network_8h__incl.md5 b/docs/manual/html/network_8h__incl.md5 new file mode 100644 index 0000000..7c58e73 --- /dev/null +++ b/docs/manual/html/network_8h__incl.md5 @@ -0,0 +1 @@ +a80f6bc677120cd58856ad1ed19f3a81 \ No newline at end of file diff --git a/docs/manual/html/network_8h__incl.png b/docs/manual/html/network_8h__incl.png new file mode 100644 index 0000000..47f5a61 Binary files /dev/null and b/docs/manual/html/network_8h__incl.png differ diff --git a/docs/manual/html/network_8h_source.html b/docs/manual/html/network_8h_source.html new file mode 100644 index 0000000..7e60e47 --- /dev/null +++ b/docs/manual/html/network_8h_source.html @@ -0,0 +1,298 @@ + + + + + + + +DbcLib: include/dbc/network.h Source File + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    network.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2* Copyright 2022 Ingemar Hedvall
    +
    3* SPDX-License-Identifier: MIT
    +
    4*/
    +
    8#pragma once
    +
    9#include <vector>
    +
    10#include <map>
    +
    11#include "dbc/envvar.h"
    +
    12#include "dbc/attribute.h"
    +
    13#include "dbc/node.h"
    +
    14#include "dbc/message.h"
    +
    15#include "dbc/signal.h"
    +
    16#include "dbc/signalgroup.h"
    +
    17
    +
    18namespace dbc {
    +
    20using EnumMap = std::map<int64_t, std::string>;
    +
    21
    +
    23enum class ProtocolType : int {
    +
    24 StandardCAN = 0,
    +
    25 J1939 = 1,
    +
    26 NMEA2000 = 2,
    +
    27 OBD2 = 3
    +
    28};
    +
    29
    +
    31enum class BusType : int {
    +
    32 CAN = 0
    +
    33};
    +
    34
    +
    36using MessageList = std::map<uint64_t, Message>;
    +
    37
    +
    39class Network {
    +
    40 public:
    +
    41 [[nodiscard]] std::string Name() const;
    +
    42
    +
    44 void Filename(const std::string& filename) { filename_ = filename;}
    +
    46 [[nodiscard]] std::string Filename() const {return filename_;};
    +
    47
    + +
    54 [[nodiscard]] ProtocolType Protocol() const;
    +
    56 [[nodiscard]] std::string ProtocolAsString() const;
    +
    57
    +
    59 void Bus(BusType type);
    +
    61 [[nodiscard]] BusType Bus() const;
    +
    63 [[nodiscard]] std::string BusAsString() const;
    +
    64
    +
    66 void Version(const std::string& version) { version_ = version; }
    +
    68 [[nodiscard]] const std::string& Version() const {
    +
    69 return version_;
    +
    70 }
    +
    72 void Comment(const std::string& comment) {
    +
    73 comment_ = comment;
    +
    74 }
    +
    76 [[nodiscard]] const std::string& Comment() const { return comment_; }
    +
    77
    +
    79 [[nodiscard]] Node* GetNode(const std::string& name);
    +
    81 [[nodiscard]] const Node* GetNode(const std::string& name) const;
    +
    83 [[nodiscard]] const Node* GetNodeBySource(uint8_t source) const;
    +
    84
    +
    86 void J1939(bool j1939) {j1939_ = j1939;}
    +
    88 [[nodiscard]] bool J1939() const {return j1939_;}
    +
    89
    +
    91 [[nodiscard]] Message* GetMessage(uint64_t message_id);
    +
    93 [[nodiscard]] const Message* GetMessage(uint64_t message_id) const;
    +
    95 [[nodiscard]] Message* GetMessageByCanId(uint64_t can_id);
    +
    97 [[nodiscard]] const Message* GetMessageByCanId(uint64_t can_id) const;
    +
    99 [[nodiscard]] const Message* GetMessageByName(const std::string &name) const;
    +
    101 [[nodiscard]] Message* GetMessageByPgn(uint32_t pgn);
    +
    103 [[nodiscard]] Message* GetMessageByPgnAndSource(uint32_t pgn, uint8_t source);
    +
    104
    +
    106 [[nodiscard]] Signal* GetSignal(uint64_t message_id,
    +
    107 const std::string& signal_name);
    +
    109 [[nodiscard]] const Signal* GetSignal(uint64_t message_id,
    +
    110 const std::string& signal_name) const;
    +
    112 [[nodiscard]] const Signal* GetSignalByCanId(uint64_t can_id,
    +
    113 const std::string& signal_name) const;
    +
    115 [[nodiscard]] const Signal* GetSignalByName(
    +
    116 const std::string& signal_name) const;
    +
    117
    +
    119 [[nodiscard]] const SignalGroup* GetSignalGroup(uint64_t message_id,
    +
    120 const std::string& name) const;
    +
    122 [[nodiscard]] const SignalGroup* GetSignalGroupByName(
    +
    123 const std::string& name) const;
    +
    124
    +
    126 [[nodiscard]] const std::map<std::string, EnvVar>& EnvVars() const {
    +
    127 return env_var_list_;
    +
    128 }
    +
    129
    +
    131 [[nodiscard]] const MessageList& Messages() const {
    +
    132 return message_list_;
    +
    133 }
    +
    134
    +
    136 [[nodiscard]] const std::map<std::string, Node>& Nodes() const {
    +
    137 return node_list_;
    +
    138 }
    +
    139
    +
    141 [[nodiscard]] const std::vector<SignalGroup>& SignalGroups() const {
    +
    142 return signal_group_list_;
    +
    143 }
    +
    144
    +
    146 [[nodiscard]] const std::map<std::string, EnumMap>& Enums() const {
    +
    147 return value_table_list_;
    +
    148 }
    +
    149
    +
    151 [[nodiscard]] const std::vector<Attribute>& Attributes() const {
    +
    152 return attribute_list_;
    +
    153 }
    +
    155 [[nodiscard]] Attribute* GetAttribute(const std::string& name);
    +
    157 [[nodiscard]] const Attribute* GetAttribute(const std::string& name) const;
    +
    158
    +
    160 void AddValueTable(const std::string& name, const EnumMap& list);
    +
    161
    +
    163 void AddSignalGroup(const SignalGroup& group);
    +
    164
    +
    165 // Parser only functions
    +
    167 [[nodiscard]] EnvVar& GetEnvVar(const std::string& name);
    +
    169 [[nodiscard]] Node& CreateNode(const std::string& name);
    +
    171 [[nodiscard]] Attribute& CreateDefinition(const std::string& name);
    +
    173 [[nodiscard]] Attribute& CreateAttribute(const Attribute& definition);
    +
    175 [[nodiscard]] Message& CreateMessage(uint64_t message_id);
    +
    177 [[nodiscard]] Message* LastMessage();
    +
    178 private:
    +
    179 std::string filename_;
    +
    180 std::string version_;
    +
    181 std::string comment_;
    +
    182 std::map<std::string, EnvVar> env_var_list_;
    +
    183 uint64_t last_message_id_ = 0;
    +
    184 bool j1939_ = false;
    +
    185
    +
    186 // Only define the name and type of value
    +
    187 std::map<std::string, Attribute> definition_list_;
    +
    188 std::vector<Attribute> attribute_list_;
    +
    189
    +
    190 using NodeList = std::map<std::string, Node>;
    +
    191 NodeList node_list_;
    +
    192 MessageList message_list_;
    +
    193
    +
    194 std::map<std::string, EnumMap> value_table_list_;
    +
    195 std::vector<SignalGroup> signal_group_list_;
    +
    196};
    +
    197
    +
    198} // namespace dbc
    +
    All DBC network objects may have attributes attached to them.
    +
    Support class for handling attributes of network objects.
    Definition: attribute.h:49
    +
    Wrapper around an environment DBC variable.
    Definition: envvar.h:34
    +
    DBC message configuration object.
    Definition: message.h:22
    +
    Interface against a DBC network configuration.
    Definition: network.h:39
    +
    std::string ProtocolAsString() const
    Returns the network protocol as text.
    +
    const Attribute * GetAttribute(const std::string &name) const
    Returns an attribute by its name.
    +
    const Node * GetNode(const std::string &name) const
    Returns the node by its name.
    +
    Attribute & CreateDefinition(const std::string &name)
    Parser function that creates a definition.
    +
    const SignalGroup * GetSignalGroupByName(const std::string &name) const
    Returns a signal group by its group name.
    +
    ProtocolType Protocol() const
    Returns what type of protocol the bus is using.
    +
    const Signal * GetSignalByName(const std::string &signal_name) const
    Returns a signal by its name.
    +
    void Protocol(ProtocolType type)
    Sets the protocol type. Should be included in the file but sometimes is missing.
    +
    const std::map< std::string, EnvVar > & EnvVars() const
    Returns the list of environment variables.
    Definition: network.h:126
    +
    const MessageList & Messages() const
    Returns the list of messages.
    Definition: network.h:131
    +
    const Message * GetMessageByName(const std::string &name) const
    Returns a message object by its name.
    +
    bool J1939() const
    Returns true if this is a J1939 bus.
    Definition: network.h:88
    +
    Attribute & CreateAttribute(const Attribute &definition)
    Parser function that creates an attribute.
    +
    Message * GetMessageByCanId(uint64_t can_id)
    Returns a message object by its CAN ID.
    +
    Node * GetNode(const std::string &name)
    Returns the node by its name.
    +
    void Bus(BusType type)
    Sets the type of bus.
    +
    Message * GetMessageByPgn(uint32_t pgn)
    Returns a message object by its PGN.
    +
    EnvVar & GetEnvVar(const std::string &name)
    Parser function that gets/creates an environment variable.
    +
    Message & CreateMessage(uint64_t message_id)
    Parser function that creates a message.
    +
    void Filename(const std::string &filename)
    Sets the file name.
    Definition: network.h:44
    +
    const Signal * GetSignalByCanId(uint64_t can_id, const std::string &signal_name) const
    Returns a signal by its CAN ID and signal name.
    +
    Message * GetMessage(uint64_t message_id)
    Returns a message object by its message ID.
    +
    Signal * GetSignal(uint64_t message_id, const std::string &signal_name)
    Returns a signal by its message ID and signal name.
    +
    const std::string & Version() const
    Returns the DBC file version.
    Definition: network.h:68
    +
    const std::vector< SignalGroup > & SignalGroups() const
    Returns the list of signal groups.
    Definition: network.h:141
    +
    void Comment(const std::string &comment)
    Sets the descriptive text for the DBC file.
    Definition: network.h:72
    +
    const std::string & Comment() const
    Returns the desciptive text.
    Definition: network.h:76
    +
    void AddSignalGroup(const SignalGroup &group)
    Adds a signal group.
    +
    BusType Bus() const
    Returns the type of bus.
    +
    const Signal * GetSignal(uint64_t message_id, const std::string &signal_name) const
    Returns a signal by its message ID and signal name.
    +
    const Message * GetMessage(uint64_t message_id) const
    Returns a message object by its message ID.
    +
    std::string BusAsString() const
    Returns the type of bus as text.
    +
    const std::map< std::string, Node > & Nodes() const
    Returns the list of Nodes.
    Definition: network.h:136
    +
    Message * LastMessage()
    Returns the last message.
    +
    void AddValueTable(const std::string &name, const EnumMap &list)
    Adds a enumerate.
    +
    const Node * GetNodeBySource(uint8_t source) const
    Returns the node by its source number.
    +
    std::string Name() const
    Network name.
    +
    std::string Filename() const
    Returns the file name.
    Definition: network.h:46
    +
    const SignalGroup * GetSignalGroup(uint64_t message_id, const std::string &name) const
    Returns a signal group by its message ID and group name.
    +
    const std::vector< Attribute > & Attributes() const
    Returns the list of attributes.
    Definition: network.h:151
    +
    void Version(const std::string &version)
    Sets the DBC (file) version.
    Definition: network.h:66
    +
    void J1939(bool j1939)
    Set to true if this is a J1939 bus.
    Definition: network.h:86
    +
    const Message * GetMessageByCanId(uint64_t can_id) const
    Returns a message object by its CAN ID.
    +
    Attribute * GetAttribute(const std::string &name)
    Returns an attribute by its name.
    +
    Node & CreateNode(const std::string &name)
    Parser function that creates a node.
    +
    const std::map< std::string, EnumMap > & Enums() const
    Returns the list of enumerates.
    Definition: network.h:146
    +
    Message * GetMessageByPgnAndSource(uint32_t pgn, uint8_t source)
    Returns a message object by its PGN and source number.
    +
    Interface against a DBC node which normally is an ECU.
    Definition: node.h:16
    +
    Interface against a signal group.
    Definition: signalgroup.h:15
    +
    Interface against a DBC signal configuration.
    Definition: signal.h:68
    +
    Wrapper wrong environment variables.
    +
    DBC message configuration object.
    +
    Main namespace for the DBC library.
    Definition: attribute.h:13
    +
    BusType
    Type of bus.
    Definition: network.h:31
    +
    @ CAN
    CAN bus.
    +
    std::map< int64_t, std::string > EnumMap
    Enumerate list.
    Definition: network.h:20
    +
    std::map< uint64_t, Message > MessageList
    Sorted message of messages. Message ID is the key.
    Definition: network.h:36
    +
    ProtocolType
    Type of CAN protocol.
    Definition: network.h:23
    +
    @ StandardCAN
    Standard CAN.
    +
    @ OBD2
    OBD2 protocol.
    +
    @ NMEA2000
    NMEA protocol.
    +
    @ J1939
    J1939 protocol.
    +
    Interface against a DBC node (Device(ECU).
    +
    Interface against a DBC signal configuration.
    +
    Defines a signal group.
    +
    + + + + diff --git a/docs/manual/html/node_8h.html b/docs/manual/html/node_8h.html new file mode 100644 index 0000000..69ad83e --- /dev/null +++ b/docs/manual/html/node_8h.html @@ -0,0 +1,133 @@ + + + + + + + +DbcLib: include/dbc/node.h File Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    node.h File Reference
    +
    +
    + +

    Interface against a DBC node (Device(ECU). +More...

    +
    #include <string>
    +#include <vector>
    +#include "dbc/attribute.h"
    +
    +Include dependency graph for node.h:
    +
    +
    + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dbc::Node
     Interface against a DBC node which normally is an ECU. More...
     
    + + + + +

    +Namespaces

    namespace  dbc
     Main namespace for the DBC library.
     
    +
    + + + + diff --git a/docs/manual/html/node_8h__dep__incl.map b/docs/manual/html/node_8h__dep__incl.map new file mode 100644 index 0000000..f7cbbdd --- /dev/null +++ b/docs/manual/html/node_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/manual/html/node_8h__dep__incl.md5 b/docs/manual/html/node_8h__dep__incl.md5 new file mode 100644 index 0000000..0ab0fa0 --- /dev/null +++ b/docs/manual/html/node_8h__dep__incl.md5 @@ -0,0 +1 @@ +36ece122d9141185a47ce87772fc5cdd \ No newline at end of file diff --git a/docs/manual/html/node_8h__dep__incl.png b/docs/manual/html/node_8h__dep__incl.png new file mode 100644 index 0000000..80eed7d Binary files /dev/null and b/docs/manual/html/node_8h__dep__incl.png differ diff --git a/docs/manual/html/node_8h__incl.map b/docs/manual/html/node_8h__incl.map new file mode 100644 index 0000000..dc32530 --- /dev/null +++ b/docs/manual/html/node_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/manual/html/node_8h__incl.md5 b/docs/manual/html/node_8h__incl.md5 new file mode 100644 index 0000000..7a82789 --- /dev/null +++ b/docs/manual/html/node_8h__incl.md5 @@ -0,0 +1 @@ +ce2e32c9787f1adec61504983ee57f15 \ No newline at end of file diff --git a/docs/manual/html/node_8h__incl.png b/docs/manual/html/node_8h__incl.png new file mode 100644 index 0000000..8f5c71d Binary files /dev/null and b/docs/manual/html/node_8h__incl.png differ diff --git a/docs/manual/html/node_8h_source.html b/docs/manual/html/node_8h_source.html new file mode 100644 index 0000000..095e7af --- /dev/null +++ b/docs/manual/html/node_8h_source.html @@ -0,0 +1,136 @@ + + + + + + + +DbcLib: include/dbc/node.h Source File + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    node.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2* Copyright 2022 Ingemar Hedvall
    +
    3* SPDX-License-Identifier: MIT
    +
    4 */
    +
    8#pragma once
    +
    9#include <string>
    +
    10#include <vector>
    +
    11#include "dbc/attribute.h"
    +
    12namespace dbc {
    +
    16class Node {
    +
    17 public:
    +
    19 void Name(const std::string& name) { name_ = name; }
    +
    21 [[nodiscard]] const std::string& Name() const {
    +
    22 return name_;
    +
    23 }
    +
    24
    +
    26 void Source(uint8_t source) {source_ = source;};
    +
    28 [[nodiscard]] uint8_t Source() const;
    +
    29
    +
    31 void Comment(const std::string& comment) { comment_ = comment; }
    +
    33 [[nodiscard]] const std::string& Comment() const { return comment_; }
    +
    34
    +
    36 [[nodiscard]] const std::vector<Attribute>& Attributes() const {
    +
    37 return attribute_list_;
    +
    38 }
    +
    40 Attribute& CreateAttribute(const Attribute& definition);
    +
    42 const Attribute* GetAttribute(const std::string& name) const;
    +
    43
    +
    44 private:
    +
    45 std::string name_;
    +
    46 std::string comment_;
    +
    47 std::vector<Attribute> attribute_list_;
    +
    48 uint8_t source_ = 254;
    +
    49};
    +
    50
    +
    51} // namespace dbc
    +
    All DBC network objects may have attributes attached to them.
    +
    Support class for handling attributes of network objects.
    Definition: attribute.h:49
    +
    Interface against a DBC node which normally is an ECU.
    Definition: node.h:16
    +
    const std::vector< Attribute > & Attributes() const
    Returns the attribute list.
    Definition: node.h:36
    +
    const std::string & Comment() const
    Returns the descriptive text.
    Definition: node.h:33
    +
    Attribute & CreateAttribute(const Attribute &definition)
    Creates an attribute. Parser function.
    +
    void Comment(const std::string &comment)
    Sets the descriptive text.
    Definition: node.h:31
    +
    const std::string & Name() const
    Returns the name.
    Definition: node.h:21
    +
    const Attribute * GetAttribute(const std::string &name) const
    Returns an attribute by its name.
    +
    void Source(uint8_t source)
    Source number is used in J1939 and is included in the CAN ID.
    Definition: node.h:26
    +
    uint8_t Source() const
    Source number (J1939).
    +
    void Name(const std::string &name)
    Sets the name.
    Definition: node.h:19
    +
    Main namespace for the DBC library.
    Definition: attribute.h:13
    +
    + + + + diff --git a/docs/manual/html/open.png b/docs/manual/html/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/docs/manual/html/open.png differ diff --git a/docs/manual/html/search/all_0.js b/docs/manual/html/search/all_0.js new file mode 100644 index 0000000..46159f8 --- /dev/null +++ b/docs/manual/html/search/all_0.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['access_0',['Access',['../classdbc_1_1_env_var.html#a79239ae79ec1056997ee165b765059fc',1,'dbc::EnvVar::Access(AccessType type)'],['../classdbc_1_1_env_var.html#ad62d4fe3f7728d08c29826d8ab10de97',1,'dbc::EnvVar::Access() const']]], + ['accesstype_1',['AccessType',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3a',1,'dbc']]], + ['addmessage_2',['AddMessage',['../classdbc_1_1_dbc_file.html#afacfeebff269681bebcd614d26feab3a',1,'dbc::DbcFile']]], + ['addsignalgroup_3',['AddSignalGroup',['../classdbc_1_1_network.html#a92bbcbe05d0da6d335ef9638abf7f1d9',1,'dbc::Network']]], + ['addvaluetable_4',['AddValueTable',['../classdbc_1_1_network.html#aaf42e33bed4a6f3056ecef60505cfb8a',1,'dbc::Network']]], + ['array_5fvalue_5',['array_value',['../structdbc_1_1_signal_value.html#acd9aec5602749450d1b1f596b7483847',1,'dbc::SignalValue']]], + ['attachobserver_6',['AttachObserver',['../classdbc_1_1_signal.html#a4b18b0db771df46c7a8110803ff74225',1,'dbc::Signal']]], + ['attribute_7',['Attribute',['../classdbc_1_1_attribute.html#abf822a12453ee7c8764d1c517f27171b',1,'dbc::Attribute::Attribute()'],['../classdbc_1_1_attribute.html',1,'dbc::Attribute']]], + ['attribute_2eh_8',['attribute.h',['../attribute_8h.html',1,'']]], + ['attributes_9',['Attributes',['../classdbc_1_1_message.html#a12cce0c46d1e4876f5451af1c95e02bb',1,'dbc::Message::Attributes()'],['../classdbc_1_1_network.html#ac62186664c919852cea4158614a63087',1,'dbc::Network::Attributes()'],['../classdbc_1_1_node.html#a119f08897cdf9681c0000ffcd622bf25',1,'dbc::Node::Attributes()'],['../classdbc_1_1_signal.html#a3528ccd87e018332245d26406fda8e89',1,'dbc::Signal::Attributes()']]], + ['attributetype_10',['AttributeType',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afab',1,'dbc']]], + ['attributevaluetype_11',['AttributeValueType',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_1.js b/docs/manual/html/search/all_1.js new file mode 100644 index 0000000..3891f7e --- /dev/null +++ b/docs/manual/html/search/all_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['basetime_0',['BaseTime',['../classdbc_1_1_dbc_file.html#aeee8b7bdafaf4fa5a26ca6c0108bebee',1,'dbc::DbcFile::BaseTime(uint64_t ns1970)'],['../classdbc_1_1_dbc_file.html#a34cd3ce1172b96e20381b435a4483ddb',1,'dbc::DbcFile::BaseTime() const']]], + ['bitlength_1',['BitLength',['../classdbc_1_1_signal.html#a05aa8ffb910b01f8ae781472ddb117f3',1,'dbc::Signal::BitLength(size_t length)'],['../classdbc_1_1_signal.html#a0ba00d06ebfed01c36f19f13b3169e45',1,'dbc::Signal::BitLength() const']]], + ['bitstart_2',['BitStart',['../classdbc_1_1_signal.html#a89abd98147909cae90d4a4c0af194c0e',1,'dbc::Signal::BitStart(size_t start)'],['../classdbc_1_1_signal.html#a725685123dfa2fc49187fd5aa633e22e',1,'dbc::Signal::BitStart() const']]], + ['bus_3',['Bus',['../classdbc_1_1_network.html#a54e9cab19df54e2b643f0dc7d6e02ef1',1,'dbc::Network::Bus(BusType type)'],['../classdbc_1_1_network.html#a9861e8ad88c2012762290db1c764de4d',1,'dbc::Network::Bus() const']]], + ['busasstring_4',['BusAsString',['../classdbc_1_1_network.html#aa20e1fed790c7a00ee76f110c42a5469',1,'dbc::Network']]], + ['bustype_5',['BusType',['../namespacedbc.html#a18071d022cdcebdc6ef437aa8a6a8ed5',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_10.js b/docs/manual/html/search/all_10.js new file mode 100644 index 0000000..d8e9035 --- /dev/null +++ b/docs/manual/html/search/all_10.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['samplecanid_0',['SampleCanId',['../classdbc_1_1_signal.html#a1bf4531f27949895ff242ef10f204ef5',1,'dbc::Signal::SampleCanId(uint32_t can_id)'],['../classdbc_1_1_signal.html#a2b8b2d2289d9d3df959e2178b3088b19',1,'dbc::Signal::SampleCanId() const']]], + ['samplecounter_1',['SampleCounter',['../classdbc_1_1_message.html#aa79b4def32c809c79653eae26f57a8f6',1,'dbc::Message::SampleCounter()'],['../classdbc_1_1_signal.html#a390aa7058f873c46bc89e4bb5353cde4',1,'dbc::Signal::SampleCounter() const']]], + ['sampletime_2',['SampleTime',['../classdbc_1_1_signal.html#a2627086d63747403263dcb3996b91d5f',1,'dbc::Signal::SampleTime(uint64_t ns1970)'],['../classdbc_1_1_signal.html#a739aac045c5f29a6d3ac74c6185e7bd5',1,'dbc::Signal::SampleTime() const']]], + ['sampletoindex_3',['SampleToIndex',['../classdbc_1_1_signal_observer.html#aede221d4974746371c75ece420bd99b3',1,'dbc::SignalObserver']]], + ['scale_4',['Scale',['../classdbc_1_1_signal.html#a684f972a119ab5e0ffae27e61957ee72',1,'dbc::Signal::Scale(double scale)'],['../classdbc_1_1_signal.html#a8d975f981a7a0c860701fc2dc5210891',1,'dbc::Signal::Scale() const']]], + ['senders_5',['Senders',['../classdbc_1_1_message.html#ab347aebc6f9adeaaad3cbc83883818fe',1,'dbc::Message']]], + ['setmessagesize_6',['SetMessageSize',['../classdbc_1_1_dbc_file.html#a79829227309764bde202dd7f4d4e3551',1,'dbc::DbcFile']]], + ['signal_7',['Signal',['../classdbc_1_1_signal.html',1,'dbc']]], + ['signal_2eh_8',['signal.h',['../signal_8h.html',1,'']]], + ['signaldatatype_9',['SignalDataType',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11a',1,'dbc']]], + ['signalgroup_10',['SignalGroup',['../classdbc_1_1_signal_group.html',1,'dbc']]], + ['signalgroup_2eh_11',['signalgroup.h',['../signalgroup_8h.html',1,'']]], + ['signalgroups_12',['SignalGroups',['../classdbc_1_1_network.html#a8837f5355ff4fb70b48255677cb6689c',1,'dbc::Network']]], + ['signallist_13',['SignalList',['../namespacedbc.html#ab72f6d40a6341e45b7f441c4f2abfb17',1,'dbc']]], + ['signalobserver_14',['SignalObserver',['../classdbc_1_1_signal_observer.html',1,'dbc::SignalObserver'],['../classdbc_1_1_signal_observer.html#af4adc266e432ea5d7aaba16ae6aa49ad',1,'dbc::SignalObserver::SignalObserver(const Signal &signal)'],['../classdbc_1_1_signal_observer.html#a76a3ccf7438b90f648f11e5a7a721a6a',1,'dbc::SignalObserver::SignalObserver()=delete']]], + ['signalobserver_2eh_15',['signalobserver.h',['../signalobserver_8h.html',1,'']]], + ['signalobserverlist_16',['SignalObserverList',['../namespacedbc.html#aa04bb77221d651e286631376b9a85b2e',1,'dbc']]], + ['signals_17',['Signals',['../classdbc_1_1_message.html#a92a54b54be5674cd3f53f82f61826d52',1,'dbc::Message::Signals()'],['../classdbc_1_1_signal_group.html#a3acfcfe0e0a9be47dee7826efd9853ef',1,'dbc::SignalGroup::Signals(const std::vector< std::string > &signals)'],['../classdbc_1_1_signal_group.html#a595d2694d37a961eeef0a3d457cb418b',1,'dbc::SignalGroup::Signals() const']]], + ['signalvalue_18',['SignalValue',['../structdbc_1_1_signal_value.html',1,'dbc']]], + ['signed_5fvalue_19',['signed_value',['../structdbc_1_1_signal_value.html#adc1316bcbc18b6070f2d69d7604e7b13',1,'dbc::SignalValue']]], + ['signeddata_20',['SignedData',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11aa574943f4b82f6c06170bb92eeac2a567',1,'dbc']]], + ['source_21',['Source',['../classdbc_1_1_dbc_message.html#a646c5d5e0433b1fd936cbca43dee95a7',1,'dbc::DbcMessage::Source()'],['../classdbc_1_1_message.html#a71940aef5644a0f2762489c2475fc05d',1,'dbc::Message::Source()'],['../classdbc_1_1_node.html#acce31e612f3cfa7f61b86b6f2d83a39a',1,'dbc::Node::Source(uint8_t source)'],['../classdbc_1_1_node.html#ade44d0764f366cc5042dcd8195f5db36',1,'dbc::Node::Source() const']]], + ['standardcan_22',['StandardCAN',['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527a01c6de10167101aa3a5d2820b0fb33b9',1,'dbc']]], + ['stepsamplecounter_23',['StepSampleCounter',['../classdbc_1_1_message.html#a1e9f36dc823b7372faa7fedcf762a1e2',1,'dbc::Message::StepSampleCounter()'],['../classdbc_1_1_signal.html#abbaf69c053d6062bcdb6062247ec74ac',1,'dbc::Signal::StepSampleCounter()']]], + ['stringtype_24',['StringType',['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bcab900a78030fdadc18121e26865e75791',1,'dbc']]], + ['stringvalue_25',['StringValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581af6d2b0e17b94cf73adf2a5be1f0ca160',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_11.js b/docs/manual/html/search/all_11.js new file mode 100644 index 0000000..65467f6 --- /dev/null +++ b/docs/manual/html/search/all_11.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['time_0',['Time',['../classdbc_1_1_dbc_message.html#a75ba550efd6ffebb0b3b79abe4a13081',1,'dbc::DbcMessage::Time(uint64_t ns1970)'],['../classdbc_1_1_dbc_message.html#a6ea21e7c72c470de7090268503a17830',1,'dbc::DbcMessage::Time() const'],['../classdbc_1_1_signal_observer.html#a3f89efc13d2d6f2131ee8af17374fbfb',1,'dbc::SignalObserver::Time(size_t index) const']]], + ['timetoindex_1',['TimeToIndex',['../classdbc_1_1_signal_observer.html#acc5c5f6479fae15099523a197fce9b50',1,'dbc::SignalObserver']]], + ['type_2',['Type',['../classdbc_1_1_attribute.html#a3bffedfaa30cf911beb593b2aa68b494',1,'dbc::Attribute::Type(AttributeType type)'],['../classdbc_1_1_attribute.html#a87de3889f093829ac622f0377357a0cc',1,'dbc::Attribute::Type() const'],['../classdbc_1_1_env_var.html#afe0ed219594f382657411fde16a269b4',1,'dbc::EnvVar::Type(EnvType type)'],['../classdbc_1_1_env_var.html#a0cca9d1c8ffaad2de548b8a54f99c12b',1,'dbc::EnvVar::Type() const']]], + ['typeasstring_3',['TypeAsString',['../classdbc_1_1_env_var.html#abc98292c2fcf0b597a688ef21e06f7bb',1,'dbc::EnvVar']]] +]; diff --git a/docs/manual/html/search/all_12.js b/docs/manual/html/search/all_12.js new file mode 100644 index 0000000..683b6b6 --- /dev/null +++ b/docs/manual/html/search/all_12.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['unit_0',['Unit',['../classdbc_1_1_env_var.html#aa0c5f967bb464f6dd77a75fcdadf59f3',1,'dbc::EnvVar::Unit(const std::string &unit)'],['../classdbc_1_1_env_var.html#adf5bbe345a6422290a64431b9e841c73',1,'dbc::EnvVar::Unit() const'],['../classdbc_1_1_signal.html#a486f838fc7ad7252716741b2eb3ba140',1,'dbc::Signal::Unit(const std::string &unit)'],['../classdbc_1_1_signal.html#a79fc6c90168b724b29afb647f9aa5be7',1,'dbc::Signal::Unit() const']]], + ['unrestricted_1',['Unrestricted',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3aa89c6caacc7047b0a535412d7f939f870',1,'dbc']]], + ['unsigned_5fvalue_2',['unsigned_value',['../structdbc_1_1_signal_value.html#ae80df5592cde8cea778948b70a1428ba',1,'dbc::SignalValue']]], + ['unsigneddata_3',['UnsignedData',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11aaf590fd4e359bcba6ed603e0c9c7355bb',1,'dbc']]], + ['updatedata_4',['UpdateData',['../classdbc_1_1_message.html#a41ea6c26bbc05ba0d2c12e7b3472efbd',1,'dbc::Message']]] +]; diff --git a/docs/manual/html/search/all_13.js b/docs/manual/html/search/all_13.js new file mode 100644 index 0000000..82a98d5 --- /dev/null +++ b/docs/manual/html/search/all_13.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['valid_0',['valid',['../structdbc_1_1_signal_value.html#a308a4c7a52beda3a3475e42d145e2bb5',1,'dbc::SignalValue']]], + ['valid_1',['Valid',['../classdbc_1_1_signal.html#a96d69980646c30b63678ee58d0f0ecc1',1,'dbc::Signal::Valid(bool valid)'],['../classdbc_1_1_signal.html#a3b1c5a81a43d009ee0f81f747fc9bff3',1,'dbc::Signal::Valid() const']]], + ['value_2',['Value',['../classdbc_1_1_attribute.html#a9ad873753f9c6f2d01b75c70cf1256ea',1,'dbc::Attribute::Value(const T &value)'],['../classdbc_1_1_attribute.html#a010a2cab86b51ee7c09a6a0fd3c5f6c5',1,'dbc::Attribute::Value() const'],['../classdbc_1_1_attribute.html#a04dbc71d22ea6d8c2f18bc23644a38c0',1,'dbc::Attribute::Value(const std::string &value)'],['../classdbc_1_1_attribute.html#a9cfe2335d94037f7625eedcf614331c0',1,'dbc::Attribute::Value() const']]], + ['valuetype_3',['ValueType',['../classdbc_1_1_attribute.html#a0859f19ef869c6cb5d1aed215f7dc811',1,'dbc::Attribute::ValueType(AttributeValueType type)'],['../classdbc_1_1_attribute.html#ac23c9671f0353e58baa447d1328d07f0',1,'dbc::Attribute::ValueType() const']]], + ['valuetypeasstring_4',['ValueTypeAsString',['../classdbc_1_1_attribute.html#a069729816334653b2c4407d941fc21b1',1,'dbc::Attribute']]], + ['version_5',['Version',['../classdbc_1_1_network.html#ac75c0cdf521f666bfbab15b7400386fa',1,'dbc::Network::Version(const std::string &version)'],['../classdbc_1_1_network.html#a7bbb6e8f3e0be88bcd2c6dfe40ffb1ab',1,'dbc::Network::Version() const']]] +]; diff --git a/docs/manual/html/search/all_14.js b/docs/manual/html/search/all_14.js new file mode 100644 index 0000000..372d30d --- /dev/null +++ b/docs/manual/html/search/all_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['writeonly_0',['WriteOnly',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3aa53dfe5089ae9e65887cb0215cb0098f5',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_15.js b/docs/manual/html/search/all_15.js new file mode 100644 index 0000000..2328b6a --- /dev/null +++ b/docs/manual/html/search/all_15.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_7eisampleobserver_0',['~ISampleObserver',['../classdbc_1_1_i_sample_observer.html#ae5f44c7e2a92905a838980399b1e8b79',1,'dbc::ISampleObserver']]], + ['_7esignal_1',['~Signal',['../classdbc_1_1_signal.html#a649b014c0da7a35358d8991cccc74f93',1,'dbc::Signal']]], + ['_7esignalobserver_2',['~SignalObserver',['../classdbc_1_1_signal_observer.html#a9487724b544e14cc1287e753823314c7',1,'dbc::SignalObserver']]] +]; diff --git a/docs/manual/html/search/all_2.js b/docs/manual/html/search/all_2.js new file mode 100644 index 0000000..7394ff0 --- /dev/null +++ b/docs/manual/html/search/all_2.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['can_0',['CAN',['../namespacedbc.html#a18071d022cdcebdc6ef437aa8a6a8ed5a6d5050f7a97e7e2e881a4e09dfbd6087',1,'dbc']]], + ['canid_1',['CanId',['../classdbc_1_1_dbc_message.html#af5777d84563cf62346fa9a9c00ad776b',1,'dbc::DbcMessage::CanId(uint32_t can_id)'],['../classdbc_1_1_dbc_message.html#ae4543dcd8b90b3aeaf0c4c0d2aded383',1,'dbc::DbcMessage::CanId() const'],['../classdbc_1_1_message.html#a3fae8e0b72aa1d213358910e9325dd82',1,'dbc::Message::CanId()'],['../classdbc_1_1_signal_observer.html#ae5a0b4b32dcfe397f10aea47f2bb2486',1,'dbc::SignalObserver::CanId()']]], + ['channelvalue_2',['ChannelValue',['../classdbc_1_1_signal.html#a5ed59d80e1f1750c847d285c45d24341',1,'dbc::Signal::ChannelValue()'],['../classdbc_1_1_signal_observer.html#a4ac0be1f04b6c48204cab1d12f43fd68',1,'dbc::SignalObserver::ChannelValue()'],['../classdbc_1_1_signal.html#a5bbbe1b0c97ffece106c9df433c37ccf',1,'dbc::Signal::ChannelValue(std::string &value) const'],['../classdbc_1_1_signal.html#a487f1025da4057bb8327551b291d749a',1,'dbc::Signal::ChannelValue(SignalValue &value) const'],['../classdbc_1_1_signal_observer.html#a36c14c021ec8f8dc88b56893243cbb2c',1,'dbc::SignalObserver::ChannelValue()']]], + ['clear_3',['Clear',['../structdbc_1_1_signal_value.html#a41478b12e57a27f5f77f0de92feb9aa9',1,'dbc::SignalValue']]], + ['comment_4',['Comment',['../classdbc_1_1_env_var.html#a9293b7ef7ef5cef4ac0cf70824195fbf',1,'dbc::EnvVar::Comment(const std::string &comment)'],['../classdbc_1_1_env_var.html#a1880d86ccaa8d8594164e29154bc84da',1,'dbc::EnvVar::Comment() const'],['../classdbc_1_1_message.html#ab2e2c9ca8d445f3d3628c301c0b72025',1,'dbc::Message::Comment(const std::string &comment)'],['../classdbc_1_1_message.html#a0622959ee0cec270be17a0e3ab1048dc',1,'dbc::Message::Comment() const'],['../classdbc_1_1_network.html#a909329e459b83d590f1a61f53d8820af',1,'dbc::Network::Comment(const std::string &comment)'],['../classdbc_1_1_network.html#a924dddbeb027b1e59ee51a53e69615c6',1,'dbc::Network::Comment() const'],['../classdbc_1_1_node.html#a7a4632ce225397c9e5f00a393ea464c8',1,'dbc::Node::Comment(const std::string &comment)'],['../classdbc_1_1_node.html#a37eaf3c423935028241943a8a9a2e0a2',1,'dbc::Node::Comment() const'],['../classdbc_1_1_signal.html#adb9eeaea40057d12857fbefdd4e8ca5d',1,'dbc::Signal::Comment(const std::string &comment)'],['../classdbc_1_1_signal.html#a9aa375c1bc2634cfe28df4d1a1c661ce',1,'dbc::Signal::Comment() const']]], + ['createattribute_5',['CreateAttribute',['../classdbc_1_1_message.html#a345bee598253a84a879cfdd2af13902d',1,'dbc::Message::CreateAttribute()'],['../classdbc_1_1_network.html#a34748784742ebc4e58846cbdca1aa8c5',1,'dbc::Network::CreateAttribute()'],['../classdbc_1_1_node.html#a429e13e1834213142a486aa2a6adb2fd',1,'dbc::Node::CreateAttribute()'],['../classdbc_1_1_signal.html#a270538416420900f91a8a15eb7a73f78',1,'dbc::Signal::CreateAttribute()']]], + ['createdefinition_6',['CreateDefinition',['../classdbc_1_1_network.html#a0ad6cbe91a471223eab349ae017205b9',1,'dbc::Network']]], + ['createmessage_7',['CreateMessage',['../classdbc_1_1_network.html#a68f6259cbdaa02f4997b6acb7fc5810e',1,'dbc::Network']]], + ['createnode_8',['CreateNode',['../classdbc_1_1_network.html#ad9e9f9494a1fc0ef432fd97e72be55fc',1,'dbc::Network']]], + ['createsignal_9',['CreateSignal',['../classdbc_1_1_message.html#af487d9e44abe134898219d13f3e0bd43',1,'dbc::Message']]] +]; diff --git a/docs/manual/html/search/all_3.js b/docs/manual/html/search/all_3.js new file mode 100644 index 0000000..3e36db2 --- /dev/null +++ b/docs/manual/html/search/all_3.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['data_0',['Data',['../classdbc_1_1_dbc_message.html#abcc52930f4952f0b00cb41faf06caf88',1,'dbc::DbcMessage::Data(const std::vector< uint8_t > &data)'],['../classdbc_1_1_dbc_message.html#a197434bef562e327fbbbf37473b16d9f',1,'dbc::DbcMessage::Data() const'],['../classdbc_1_1_message.html#aded1dd8c8ef1134e5361690041082a5e',1,'dbc::Message::Data()']]], + ['datapage_1',['DataPage',['../classdbc_1_1_dbc_message.html#a3be69693e55cec930519bb6a1d474bbe',1,'dbc::DbcMessage::DataPage()'],['../classdbc_1_1_message.html#ac8d74c2597021f21792ae9988baf8f68',1,'dbc::Message::DataPage()']]], + ['datatype_2',['DataType',['../classdbc_1_1_signal.html#aac84b06cae30203a1ac24709008e6012',1,'dbc::Signal::DataType(SignalDataType type)'],['../classdbc_1_1_signal.html#a910ba3ee2a4718528e73dd39e761b502',1,'dbc::Signal::DataType() const'],['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bcaaa2aaa59ac1a7c24e5e86c068bda3d20',1,'dbc::DataType()']]], + ['datatypeasstring_3',['DataTypeAsString',['../classdbc_1_1_signal.html#a0eb29adc82621fb99bcdd1357604ca1b',1,'dbc::Signal']]], + ['dbc_4',['dbc',['../namespacedbc.html',1,'']]], + ['dbc_20c_2b_2b_20library_5',['DBC C++ Library',['../index.html',1,'']]], + ['dbcfile_6',['DbcFile',['../classdbc_1_1_dbc_file.html',1,'dbc']]], + ['dbcfile_2eh_7',['dbcfile.h',['../dbcfile_8h.html',1,'']]], + ['dbcmessage_8',['DbcMessage',['../classdbc_1_1_dbc_message.html',1,'dbc::DbcMessage'],['../classdbc_1_1_dbc_message.html#a1f831c506d21ce48764615eef9677271',1,'dbc::DbcMessage::DbcMessage()=default'],['../classdbc_1_1_dbc_message.html#a743faa818417f8c5a95d2b35322cf83c',1,'dbc::DbcMessage::DbcMessage(uint64_t time, uint32_t can_id, std::vector< uint8_t > data)'],['../classdbc_1_1_dbc_message.html#a79e1b0e7d31be7292fb102b55eb61f8c',1,'dbc::DbcMessage::DbcMessage(const DbcMessage &message)=default'],['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afabab9479e671e56c92f3b818eaeb2f78cf7',1,'dbc::DbcMessage()']]], + ['dbcmessage_2eh_9',['dbcmessage.h',['../dbcmessage_8h.html',1,'']]], + ['dbcnetwork_10',['DbcNetwork',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afabac8deca8ce87749f14ede9c06848b54d5',1,'dbc']]], + ['dbcnode_11',['DbcNode',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afaba29e407d59ca1c2fec4b916cf20e9bf7d',1,'dbc']]], + ['dbcsignal_12',['DbcSignal',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afabadba628aba406574c3bbacf7c56bea06e',1,'dbc']]], + ['detachobserver_13',['DetachObserver',['../classdbc_1_1_i_sample_observer.html#a053ec00bd84eb554e760c2c2cdfd25d5',1,'dbc::ISampleObserver::DetachObserver()'],['../classdbc_1_1_signal.html#a8048ec5ef09804028cf8235f54539c1f',1,'dbc::Signal::DetachObserver()'],['../classdbc_1_1_signal_observer.html#aac7f01c6e4deba313a8cc0ce9d92db1a',1,'dbc::SignalObserver::DetachObserver()']]], + ['doubledata_14',['DoubleData',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11aa89a7a61af77c580fccc274c7a3962c17',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_4.js b/docs/manual/html/search/all_4.js new file mode 100644 index 0000000..5ae0006 --- /dev/null +++ b/docs/manual/html/search/all_4.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['engvalue_0',['EngValue',['../classdbc_1_1_signal.html#a0c1313c8eab5a019bb21ae52468e44d5',1,'dbc::Signal::EngValue()'],['../classdbc_1_1_signal_observer.html#ae889044234fe7696b0ac1217be9fd7e4',1,'dbc::SignalObserver::EngValue()'],['../classdbc_1_1_signal.html#a7ef11e3f396f54d1854d373473023e0a',1,'dbc::Signal::EngValue()'],['../classdbc_1_1_signal_observer.html#a7994073aa3e0d64c3be6e89c024dc922',1,'dbc::SignalObserver::EngValue()']]], + ['enumlist_1',['EnumList',['../classdbc_1_1_attribute.html#a4a1bc65da61d6a93dad0a7c2d959a52a',1,'dbc::Attribute::EnumList(const std::vector< std::string > &list)'],['../classdbc_1_1_attribute.html#a4035455892b1db39b14c800752f3eb32',1,'dbc::Attribute::EnumList() const'],['../classdbc_1_1_env_var.html#a178f51c4928ca2cf6773e5ca181e5204',1,'dbc::EnvVar::EnumList(const std::map< int64_t, std::string > &enum_list)'],['../classdbc_1_1_env_var.html#abbd6188697511e6d6fcd3834e35e14f8',1,'dbc::EnvVar::EnumList() const'],['../classdbc_1_1_signal.html#a8d45969cf78494a91aad69045d1970a2',1,'dbc::Signal::EnumList(const std::map< int64_t, std::string > &enum_list)'],['../classdbc_1_1_signal.html#aa3dde456d7de1854ac9111cc6ef8da11',1,'dbc::Signal::EnumList() const']]], + ['enummap_2',['EnumMap',['../namespacedbc.html#a4f1aafadc0d644912048d8ef7a2838d4',1,'dbc']]], + ['enums_3',['Enums',['../classdbc_1_1_network.html#adad3cb33f36d4c14601b067531a3c6f1',1,'dbc::Network']]], + ['enumvalue_4',['EnumValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581a29785ae7827639b31b629cc7f9c150e0',1,'dbc']]], + ['environmentvariable_5',['EnvironmentVariable',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afabafbbda721c455f5e43e3a3cde92db5fb3',1,'dbc']]], + ['envtype_6',['EnvType',['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bc',1,'dbc']]], + ['envvar_7',['EnvVar',['../classdbc_1_1_env_var.html',1,'dbc']]], + ['envvar_2eh_8',['envvar.h',['../envvar_8h.html',1,'']]], + ['envvars_9',['EnvVars',['../classdbc_1_1_network.html#a20be0169601361defa49e39571192125',1,'dbc::Network']]], + ['extendeddatapage_10',['ExtendedDataPage',['../classdbc_1_1_dbc_message.html#ad582604c307e5c4a233393796e1a3bdf',1,'dbc::DbcMessage::ExtendedDataPage()'],['../classdbc_1_1_message.html#aa4f803feac2e49d0bd0c0124d7e43087',1,'dbc::Message::ExtendedDataPage()']]], + ['extendedmultiplexor_11',['ExtendedMultiplexor',['../namespacedbc.html#ad3b31547481daad52074143cebeba268af49808ad35223d1e28a900df724cd2b1',1,'dbc']]], + ['extendedmux_12',['ExtendedMux',['../structdbc_1_1_extended_mux.html',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_5.js b/docs/manual/html/search/all_5.js new file mode 100644 index 0000000..331b625 --- /dev/null +++ b/docs/manual/html/search/all_5.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['filename_0',['Filename',['../classdbc_1_1_dbc_file.html#ab90e89005e79033325912b1fa754937d',1,'dbc::DbcFile::Filename(const std::string &filename)'],['../classdbc_1_1_dbc_file.html#a80f96154e90c9e401e8f492ba645dc9b',1,'dbc::DbcFile::Filename() const'],['../classdbc_1_1_network.html#a694c5f045e9c54d98d7a3abcec354c8f',1,'dbc::Network::Filename(const std::string &filename)'],['../classdbc_1_1_network.html#abcbc402004e3a88de9379fe4836710e4',1,'dbc::Network::Filename() const']]], + ['firstindex_1',['FirstIndex',['../classdbc_1_1_signal_observer.html#a5af74b4b57829909a3cb7aa55272c4b7',1,'dbc::SignalObserver']]], + ['float_5fvalue_2',['float_value',['../structdbc_1_1_signal_value.html#ae990538155156918cdd5482c9074305a',1,'dbc::SignalValue']]], + ['floatdata_3',['FloatData',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11aaff35af20aaa94b8181d05696abcef71b',1,'dbc']]], + ['floattype_4',['FloatType',['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bca909eb2f2282643673abdd584be0bff4d',1,'dbc']]], + ['floatvalue_5',['FloatValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581ab8a545944c6b2e9d568d1045b5f5e598',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_6.js b/docs/manual/html/search/all_6.js new file mode 100644 index 0000000..4799526 --- /dev/null +++ b/docs/manual/html/search/all_6.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['getattribute_0',['GetAttribute',['../classdbc_1_1_message.html#add99b1aad19d7fba01af8037fc4fbeb9',1,'dbc::Message::GetAttribute()'],['../classdbc_1_1_network.html#ad126aa858052fa6fe7fddbcff601819f',1,'dbc::Network::GetAttribute(const std::string &name)'],['../classdbc_1_1_network.html#a04524384810ade55d6b3f5ad56bda962',1,'dbc::Network::GetAttribute(const std::string &name) const'],['../classdbc_1_1_node.html#ac59a1a2889e765e3ffcdaeaee7ed8de5',1,'dbc::Node::GetAttribute()']]], + ['getenumstring_1',['GetEnumString',['../classdbc_1_1_signal.html#a3a1c613477b42e060f140654e84294ef',1,'dbc::Signal']]], + ['getenvvar_2',['GetEnvVar',['../classdbc_1_1_network.html#a577490ed666c8c71d3b620b5efa65d46',1,'dbc::Network']]], + ['getextendedmux_3',['GetExtendedMux',['../classdbc_1_1_signal.html#a667dfb14a8a97088ad0e265f717817ec',1,'dbc::Signal']]], + ['getmessage_4',['GetMessage',['../classdbc_1_1_network.html#a7144c11f46345f8666f63927aed221c8',1,'dbc::Network::GetMessage(uint64_t message_id)'],['../classdbc_1_1_network.html#a9eeb1de6ec7f29af95afed10ffe35541',1,'dbc::Network::GetMessage(uint64_t message_id) const']]], + ['getmessagebycanid_5',['GetMessageByCanId',['../classdbc_1_1_network.html#a41a403dec86f79706f1746c37b31e08b',1,'dbc::Network::GetMessageByCanId(uint64_t can_id)'],['../classdbc_1_1_network.html#acfdfed4f93e4ec55a91a197c42c01d80',1,'dbc::Network::GetMessageByCanId(uint64_t can_id) const']]], + ['getmessagebyname_6',['GetMessageByName',['../classdbc_1_1_network.html#a2676d5fd2919aa12f10c81babdc80397',1,'dbc::Network']]], + ['getmessagebypgn_7',['GetMessageByPgn',['../classdbc_1_1_network.html#a55a243417b99d89858e03b3b086cda9f',1,'dbc::Network']]], + ['getmessagebypgnandsource_8',['GetMessageByPgnAndSource',['../classdbc_1_1_network.html#aeabc7aaeb4acc25e6e23a4ed47291c4d',1,'dbc::Network']]], + ['getmultiplexor_9',['GetMultiplexor',['../classdbc_1_1_message.html#aaee2e8851577deb2a1e747766db59331',1,'dbc::Message']]], + ['getnetwork_10',['GetNetwork',['../classdbc_1_1_dbc_file.html#ad1b93b85d8fd38c68801beb5cfa3033f',1,'dbc::DbcFile::GetNetwork()'],['../classdbc_1_1_dbc_file.html#ad327f66e5420f555cf266d4169c057f6',1,'dbc::DbcFile::GetNetwork() const']]], + ['getnode_11',['GetNode',['../classdbc_1_1_network.html#a4ca71a9c205d112604c8fb8ab128271b',1,'dbc::Network::GetNode(const std::string &name)'],['../classdbc_1_1_network.html#a059b9eed96971794ef1850efdf83f18c',1,'dbc::Network::GetNode(const std::string &name) const']]], + ['getnodebysource_12',['GetNodeBySource',['../classdbc_1_1_network.html#ab74544eb60585f441bfd29cf2cfbf469',1,'dbc::Network']]], + ['getsignal_13',['GetSignal',['../classdbc_1_1_message.html#aaf1f7ee3caf6b953ba759f2aa3a3b058',1,'dbc::Message::GetSignal(const std::string &name)'],['../classdbc_1_1_message.html#aa7e1dc587ff2843b53f3823db7e0b8e7',1,'dbc::Message::GetSignal(const std::string &name) const'],['../classdbc_1_1_network.html#a7ae64bba8c481112a8d8b111ebe5b190',1,'dbc::Network::GetSignal(uint64_t message_id, const std::string &signal_name)'],['../classdbc_1_1_network.html#a9a3b72b468db9b3e60a0e51cd3ea93ef',1,'dbc::Network::GetSignal(uint64_t message_id, const std::string &signal_name) const'],['../classdbc_1_1_signal_observer.html#abd76954ced3f7d37d539b2605a875435',1,'dbc::SignalObserver::GetSignal()']]], + ['getsignalbycanid_14',['GetSignalByCanId',['../classdbc_1_1_network.html#a6ad87b4a82372c3c6b57bf867d344b56',1,'dbc::Network']]], + ['getsignalbyname_15',['GetSignalByName',['../classdbc_1_1_network.html#a1d17c1127c3e7a60613e37e412e7b48e',1,'dbc::Network']]], + ['getsignalgroup_16',['GetSignalGroup',['../classdbc_1_1_network.html#abf979ce023012f2484902b2485186759',1,'dbc::Network']]], + ['getsignalgroupbyname_17',['GetSignalGroupByName',['../classdbc_1_1_network.html#a0d050366ffebb6aa761be31083293397',1,'dbc::Network']]] +]; diff --git a/docs/manual/html/search/all_7.js b/docs/manual/html/search/all_7.js new file mode 100644 index 0000000..78463a1 --- /dev/null +++ b/docs/manual/html/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hexvalue_0',['HexValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581a04ed81262ab890fbfabef50912978cc0',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_8.js b/docs/manual/html/search/all_8.js new file mode 100644 index 0000000..9d93bde --- /dev/null +++ b/docs/manual/html/search/all_8.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['ident_0',['Ident',['../classdbc_1_1_env_var.html#acf24b01738dddd29ef84eae40735d9a2',1,'dbc::EnvVar::Ident(uint64_t ident)'],['../classdbc_1_1_env_var.html#aa1ea3dc52c6abad1e3519e2607747813',1,'dbc::EnvVar::Ident() const'],['../classdbc_1_1_message.html#a601971c6efc02e67e5fc44aaf28638e0',1,'dbc::Message::Ident(uint64_t ident)'],['../classdbc_1_1_message.html#a5592774264da46753877bed5947d062b',1,'dbc::Message::Ident() const']]], + ['initvalue_1',['InitValue',['../classdbc_1_1_env_var.html#abd05b5ba9228fd03d279a2d38c317331',1,'dbc::EnvVar::InitValue(double value)'],['../classdbc_1_1_env_var.html#ad909847cf49bd4a7ac20d261984dfe55',1,'dbc::EnvVar::InitValue() const']]], + ['inrange_2',['InRange',['../structdbc_1_1_extended_mux.html#a00b2ca5b9a59b94ce2ed5b5f2bd50f1a',1,'dbc::ExtendedMux']]], + ['integertype_3',['IntegerType',['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bca97a28f98bc67732c13cc3d7469f3f0df',1,'dbc']]], + ['integervalue_4',['IntegerValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581a4316e849fb60a763447555f31bd5a97f',1,'dbc']]], + ['isampleobserver_5',['ISampleObserver',['../classdbc_1_1_i_sample_observer.html',1,'dbc::ISampleObserver'],['../classdbc_1_1_i_sample_observer.html#a5eeb28313e73358151fd6d1b3375bd95',1,'dbc::ISampleObserver::ISampleObserver()']]], + ['isampleobserver_2eh_6',['isampleobserver.h',['../isampleobserver_8h.html',1,'']]], + ['isextended_7',['IsExtended',['../classdbc_1_1_message.html#a0e6f7b00cd196b0d4eb722bbdbe2fe8b',1,'dbc::Message']]], + ['isj1939_8',['IsJ1939',['../classdbc_1_1_message.html#ab20f97b18313af74491211891091d8a5',1,'dbc::Message']]], + ['ismultiplexed_9',['IsMultiplexed',['../classdbc_1_1_signal.html#a2c65a42d76bcd2e74978bd32faa70ff8',1,'dbc::Signal']]], + ['isnodesender_10',['IsNodeSender',['../classdbc_1_1_message.html#a43a854be6a2cf46aebf49168b4c0c4ae',1,'dbc::Message']]], + ['ispdu1_11',['IsPdu1',['../classdbc_1_1_message.html#a69c8f4aad3e0f9660e89db0f07e87e78',1,'dbc::Message']]], + ['ispdu2_12',['IsPdu2',['../classdbc_1_1_message.html#ac5ff5de61dd0eddf0016c46ec9655d91',1,'dbc::Message']]] +]; diff --git a/docs/manual/html/search/all_9.js b/docs/manual/html/search/all_9.js new file mode 100644 index 0000000..b3c9489 --- /dev/null +++ b/docs/manual/html/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['j1939_0',['J1939',['../classdbc_1_1_network.html#aca3e5ba15743f4700d8f33b45abf00ba',1,'dbc::Network::J1939(bool j1939)'],['../classdbc_1_1_network.html#a276739da3736954c9c7d7363c02671b4',1,'dbc::Network::J1939() const'],['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527afb03489612df8be2047792bd8588bb20',1,'dbc::J1939()']]] +]; diff --git a/docs/manual/html/search/all_a.js b/docs/manual/html/search/all_a.js new file mode 100644 index 0000000..30f6116 --- /dev/null +++ b/docs/manual/html/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['lasterror_0',['LastError',['../classdbc_1_1_dbc_file.html#abb38a985e71a48f3a46cc93b017a90d7',1,'dbc::DbcFile']]], + ['lastindex_1',['LastIndex',['../classdbc_1_1_signal_observer.html#afce368371f4e8ec3816c6e2676383356',1,'dbc::SignalObserver']]], + ['lastmessage_2',['LastMessage',['../classdbc_1_1_network.html#aa766424be60f60b5c3b4cfaaa95630c8',1,'dbc::Network']]], + ['littleendian_3',['LittleEndian',['../classdbc_1_1_signal.html#afde5650bd65e5cb8fd2f91d512910bd1',1,'dbc::Signal::LittleEndian(bool endian)'],['../classdbc_1_1_signal.html#ab330029718ce776d028d0f1009350179',1,'dbc::Signal::LittleEndian() const']]] +]; diff --git a/docs/manual/html/search/all_b.js b/docs/manual/html/search/all_b.js new file mode 100644 index 0000000..1e05287 --- /dev/null +++ b/docs/manual/html/search/all_b.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['max_0',['Max',['../classdbc_1_1_attribute.html#ac60bca3bfc1b6b66f695d63d469488be',1,'dbc::Attribute::Max(double max)'],['../classdbc_1_1_attribute.html#a29153cd6ee99b926301e8acf46d4bc57',1,'dbc::Attribute::Max() const'],['../classdbc_1_1_env_var.html#a2d489efdbd8f60f39c4c2253550ea98f',1,'dbc::EnvVar::Max(double max)'],['../classdbc_1_1_env_var.html#ab46a250b8f6fa6bb62175b2a7e71e56b',1,'dbc::EnvVar::Max() const'],['../classdbc_1_1_signal.html#a19ac6bf5e9907cd958da73d9faf0b69f',1,'dbc::Signal::Max(double max)'],['../classdbc_1_1_signal.html#ac8b370b896d24997d344fd7f4a6462ee',1,'dbc::Signal::Max() const']]], + ['maxsamples_1',['MaxSamples',['../classdbc_1_1_signal_observer.html#a8dd32af99693b219a3306305ef3058bf',1,'dbc::SignalObserver::MaxSamples(size_t max_nof_samples)'],['../classdbc_1_1_signal_observer.html#add60e52b747139a31fe3f7ceab9c75b2',1,'dbc::SignalObserver::MaxSamples() const']]], + ['message_2',['Message',['../classdbc_1_1_message.html',1,'dbc']]], + ['message_2eh_3',['message.h',['../message_8h.html',1,'']]], + ['messageid_4',['MessageId',['../classdbc_1_1_signal.html#ae0703449ddf019a1662d694949b5e3bd',1,'dbc::Signal::MessageId(uint64_t message_id)'],['../classdbc_1_1_signal.html#a3447e8f86922b46809613d57f657f3b6',1,'dbc::Signal::MessageId() const'],['../classdbc_1_1_signal_group.html#ada6544f8beef8d46ae4fb68afe3b8a7c',1,'dbc::SignalGroup::MessageId(uint64_t message_id)'],['../classdbc_1_1_signal_group.html#a282bd834b426404969bf38f5712f955e',1,'dbc::SignalGroup::MessageId() const']]], + ['messagelist_5',['MessageList',['../namespacedbc.html#a6bd060cc33e6d93ac327144f6bd985ab',1,'dbc']]], + ['messages_6',['Messages',['../classdbc_1_1_network.html#a2293bc84fbff2dac32ffecd731a75f2b',1,'dbc::Network']]], + ['min_7',['Min',['../classdbc_1_1_attribute.html#a267553e1e3ff710de464f341efa656a1',1,'dbc::Attribute::Min(double min)'],['../classdbc_1_1_attribute.html#a9d536c4353fe55a3df63fef87f452776',1,'dbc::Attribute::Min() const'],['../classdbc_1_1_env_var.html#ac7044e057f3631dd05796c2841ac7d12',1,'dbc::EnvVar::Min(double min)'],['../classdbc_1_1_env_var.html#ae3e109e6403dfd95fa5373a0e20659e9',1,'dbc::EnvVar::Min() const'],['../classdbc_1_1_signal.html#a9494844695ad20e71cbc8e3a6301a3bb',1,'dbc::Signal::Min(double min)'],['../classdbc_1_1_signal.html#ad707d80faa92a5e0ecbafd38a78a842e',1,'dbc::Signal::Min() const']]], + ['multiplexed_8',['Multiplexed',['../namespacedbc.html#ad3b31547481daad52074143cebeba268a4a76083a736ef8df89bb44c6c2c18e34',1,'dbc']]], + ['multiplexor_9',['multiplexor',['../structdbc_1_1_extended_mux.html#ae08a40eb1cb188f69e5a5985bada7a37',1,'dbc::ExtendedMux']]], + ['multiplexor_10',['Multiplexor',['../namespacedbc.html#ad3b31547481daad52074143cebeba268a3cdc513e16e770f0c8b3e36b91223129',1,'dbc']]], + ['mux_11',['Mux',['../classdbc_1_1_signal.html#a166b7ebdeef130c50c0f45ebfbf38e85',1,'dbc::Signal::Mux(MuxType type)'],['../classdbc_1_1_signal.html#a818ebca69114d0269067ca858f6b480b',1,'dbc::Signal::Mux() const']]], + ['muxasstring_12',['MuxAsString',['../classdbc_1_1_signal.html#ab121f68010a0682fda964fb18a8a433c',1,'dbc::Signal']]], + ['muxtype_13',['MuxType',['../namespacedbc.html#ad3b31547481daad52074143cebeba268',1,'dbc']]], + ['muxvalue_14',['MuxValue',['../classdbc_1_1_signal.html#a41390f96b26c6db6adeb23ddff472bef',1,'dbc::Signal::MuxValue(int value)'],['../classdbc_1_1_signal.html#a0669927ef77e4a4f451628ba540d4483',1,'dbc::Signal::MuxValue() const']]] +]; diff --git a/docs/manual/html/search/all_c.js b/docs/manual/html/search/all_c.js new file mode 100644 index 0000000..6c3867f --- /dev/null +++ b/docs/manual/html/search/all_c.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['name_0',['Name',['../classdbc_1_1_attribute.html#a92611f349733d73f692884bc91949758',1,'dbc::Attribute::Name(const std::string &name)'],['../classdbc_1_1_attribute.html#ac29bdc26715f4074d757833d41b2e6a7',1,'dbc::Attribute::Name() const'],['../classdbc_1_1_dbc_file.html#ab5d3031c0cb673e00483b38db255c68f',1,'dbc::DbcFile::Name()'],['../classdbc_1_1_env_var.html#a47c89f86f34559755b447c13d1425025',1,'dbc::EnvVar::Name(const std::string &name)'],['../classdbc_1_1_env_var.html#a9860520454f5130051e812cdc0a98743',1,'dbc::EnvVar::Name() const'],['../classdbc_1_1_message.html#a18fa6fc9658d21871ac620d31cbbb01d',1,'dbc::Message::Name(const std::string &name)'],['../classdbc_1_1_message.html#abf394eae5ae141f6e9a2eed611412f73',1,'dbc::Message::Name() const'],['../classdbc_1_1_network.html#abb0833b474ba8dcfea7c31c9d4bc0e82',1,'dbc::Network::Name()'],['../classdbc_1_1_node.html#afe3fc600c2689ce1e815db719de3de19',1,'dbc::Node::Name(const std::string &name)'],['../classdbc_1_1_node.html#a7ff5323d8951d5ed5658f98b658752f6',1,'dbc::Node::Name() const'],['../classdbc_1_1_signal.html#a82d1cac9cbf031dac2e0d52d8fbd1399',1,'dbc::Signal::Name(const std::string &name)'],['../classdbc_1_1_signal.html#ac16d9dd0c25b91a32df72608f94b8328',1,'dbc::Signal::Name() const'],['../classdbc_1_1_signal_group.html#ab7962addf3a3a867053967a2e68a0b4f',1,'dbc::SignalGroup::Name(const std::string &name)'],['../classdbc_1_1_signal_group.html#a7f7c878f0daf3aa0b99cbc24f9145f5f',1,'dbc::SignalGroup::Name() const']]], + ['network_1',['Network',['../classdbc_1_1_network.html',1,'dbc']]], + ['network_2eh_2',['network.h',['../network_8h.html',1,'']]], + ['nextsequencenumber_3',['NextSequenceNumber',['../classdbc_1_1_message.html#a3cc215ee151d0e333e66379cabb9aece',1,'dbc::Message']]], + ['nmea2000_4',['NMEA2000',['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527a6b59788e3ec98979e0ce5c58aa018ab6',1,'dbc']]], + ['node_5',['Node',['../classdbc_1_1_node.html',1,'dbc::Node'],['../classdbc_1_1_message.html#a3355dd76d9740ecf7b13a57e89c6e4ab',1,'dbc::Message::Node()']]], + ['node_2eh_6',['node.h',['../node_8h.html',1,'']]], + ['nodelist_7',['NodeList',['../classdbc_1_1_env_var.html#a4e1157eaee4b1b80828f24543baf1b2e',1,'dbc::EnvVar::NodeList(const std::vector< std::string > &node_list)'],['../classdbc_1_1_env_var.html#a35d67583dadcb305811cbf42d6262d45',1,'dbc::EnvVar::NodeList() const']]], + ['nodemessagerelation_8',['NodeMessageRelation',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afaba93f1795ac5fe5bde0694593b007bf80d',1,'dbc']]], + ['nodename_9',['NodeName',['../classdbc_1_1_message.html#a88dcc39e025f00fdd8ae990d828d9a29',1,'dbc::Message']]], + ['nodes_10',['Nodes',['../classdbc_1_1_network.html#aa69bb65d09b5a9d2cba9848d08d98c42',1,'dbc::Network']]], + ['nodesignalrelation_11',['NodeSignalRelation',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afaba7320d32ec1ebee49c8c02de03bf9a6e1',1,'dbc']]], + ['nofbytes_12',['NofBytes',['../classdbc_1_1_message.html#a548d12b10a5dc39f5aa5f3b7333ad9a4',1,'dbc::Message::NofBytes(size_t bytes)'],['../classdbc_1_1_message.html#add73384ebbba3d8a164c88972c56cfa6',1,'dbc::Message::NofBytes() const']]], + ['nofsamples_13',['NofSamples',['../classdbc_1_1_signal_observer.html#ae4620426add2d7bf3dea96868027db46',1,'dbc::SignalObserver']]], + ['nofvalidsamples_14',['NofValidSamples',['../classdbc_1_1_signal_observer.html#a3cce45d3f0fe62059551a5550b29f0d9',1,'dbc::SignalObserver']]], + ['notmultiplexed_15',['NotMultiplexed',['../namespacedbc.html#ad3b31547481daad52074143cebeba268a7b082f71405476c4406a23f2018ba6d8',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_d.js b/docs/manual/html/search/all_d.js new file mode 100644 index 0000000..aa60359 --- /dev/null +++ b/docs/manual/html/search/all_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['obd2_0',['OBD2',['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527a5c5336b52a35f0d8cbc0667b8ae6e799',1,'dbc']]], + ['offset_1',['Offset',['../classdbc_1_1_signal.html#a107d48664579e53a86ccec6995787fc9',1,'dbc::Signal::Offset(double offset)'],['../classdbc_1_1_signal.html#a1025aadb18fd8bef81a5f154c4df16f3',1,'dbc::Signal::Offset() const']]], + ['onsample_2',['OnSample',['../classdbc_1_1_i_sample_observer.html#a6295f36c65a0e1f811886c10992f4199',1,'dbc::ISampleObserver::OnSample()'],['../classdbc_1_1_signal_observer.html#a35cc79762b1dc934f1cd77c5f26d8239',1,'dbc::SignalObserver::OnSample()']]] +]; diff --git a/docs/manual/html/search/all_e.js b/docs/manual/html/search/all_e.js new file mode 100644 index 0000000..8bb5f05 --- /dev/null +++ b/docs/manual/html/search/all_e.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['parsefile_0',['ParseFile',['../classdbc_1_1_dbc_file.html#adfe3085eb6216c981419305a338902ba',1,'dbc::DbcFile']]], + ['parsemessage_1',['ParseMessage',['../classdbc_1_1_dbc_file.html#a5fd82d19df1d70578a6a16ac0215926e',1,'dbc::DbcFile::ParseMessage()'],['../classdbc_1_1_message.html#a49d01da6a489142ab1c14044c92c8c64',1,'dbc::Message::ParseMessage()'],['../classdbc_1_1_signal.html#afda726e8acb411216c9cad57e02949ea',1,'dbc::Signal::ParseMessage()']]], + ['pduformat_2',['PduFormat',['../classdbc_1_1_dbc_message.html#a44046d858ef2c3fa5bbe8682653149f8',1,'dbc::DbcMessage::PduFormat()'],['../classdbc_1_1_message.html#adecf3c05e813c5c883f0b990c66f79f7',1,'dbc::Message::PduFormat()']]], + ['pduspecific_3',['PduSpecific',['../classdbc_1_1_dbc_message.html#a36b7dab6848608597ee230f8903b2419',1,'dbc::DbcMessage::PduSpecific()'],['../classdbc_1_1_message.html#aaa293b4c75e1d5207eb761fbc3a29234',1,'dbc::Message::PduSpecific()']]], + ['pgn_4',['Pgn',['../classdbc_1_1_dbc_message.html#abd1c9af0e020bf17c66feae7861449b0',1,'dbc::DbcMessage::Pgn()'],['../classdbc_1_1_message.html#a034cabb0a78d17794e5802a627a54105',1,'dbc::Message::Pgn()']]], + ['priority_5',['Priority',['../classdbc_1_1_dbc_message.html#a9f56d675550dea296129fcfeb3342389',1,'dbc::DbcMessage::Priority()'],['../classdbc_1_1_message.html#aa516d095d2e76eab079e12bdf7b5fd0c',1,'dbc::Message::Priority()']]], + ['protocol_6',['Protocol',['../classdbc_1_1_network.html#a1e819d7eebd1474cdaf38a6b4a8be81b',1,'dbc::Network::Protocol(ProtocolType type)'],['../classdbc_1_1_network.html#a1b935f056c692649bc19eb7f5070abb6',1,'dbc::Network::Protocol() const']]], + ['protocolasstring_7',['ProtocolAsString',['../classdbc_1_1_network.html#a018021f90cf6c1f443ad05f285e24aca',1,'dbc::Network']]], + ['protocoltype_8',['ProtocolType',['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527',1,'dbc']]] +]; diff --git a/docs/manual/html/search/all_f.js b/docs/manual/html/search/all_f.js new file mode 100644 index 0000000..838e3d8 --- /dev/null +++ b/docs/manual/html/search/all_f.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['range_5flist_0',['range_list',['../structdbc_1_1_extended_mux.html#aa82cc86e0b81c613b6453d3aa8574c01',1,'dbc::ExtendedMux']]], + ['rangepair_1',['RangePair',['../namespacedbc.html#ad54b4259d17d1350398cf3424012649f',1,'dbc']]], + ['readonly_2',['ReadOnly',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3aa131fb182a881796e7606ed6da27f1197',1,'dbc']]], + ['readwrite_3',['ReadWrite',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3aa70a2a84088d405a2e3f1e3accaa16723',1,'dbc']]], + ['receivers_4',['Receivers',['../classdbc_1_1_signal.html#a91f3a18b3a3cd17310a6042a71f192f0',1,'dbc::Signal::Receivers(const std::vector< std::string > &receiver_list)'],['../classdbc_1_1_signal.html#a4c7d611cb85c43b9f4c007717eec8cad',1,'dbc::Signal::Receivers() const']]], + ['reparsemessagelist_5',['ReparseMessageList',['../classdbc_1_1_dbc_file.html#a42d1a7b6a82af6e844ecd113c34a7fef',1,'dbc::DbcFile']]], + ['repetition_6',['Repetition',['../classdbc_1_1_signal_group.html#abe0ecddf376e3f02dafb1aa70e79cd04',1,'dbc::SignalGroup::Repetition(size_t rep)'],['../classdbc_1_1_signal_group.html#aeee51c68921ff02179a94283727f6eb0',1,'dbc::SignalGroup::Repetition() const']]], + ['resetsamplecounter_7',['ResetSampleCounter',['../classdbc_1_1_dbc_file.html#a7ed3d50dfb96e257dbf56d99ca9535e5',1,'dbc::DbcFile::ResetSampleCounter()'],['../classdbc_1_1_message.html#a1725d6e1a04c7929d45a6cf88e8ad335',1,'dbc::Message::ResetSampleCounter()'],['../classdbc_1_1_signal.html#a6b569a70fafd7460327c80c953f344a7',1,'dbc::Signal::ResetSampleCounter()']]], + ['resetsampleindex_8',['ResetSampleIndex',['../classdbc_1_1_signal_observer.html#a438cebb9332a7fa5100ea56662bf8181',1,'dbc::SignalObserver']]], + ['resetsequencenumber_9',['ResetSequenceNumber',['../classdbc_1_1_message.html#ae94cbffb939dfbb20b853e6001e430f6',1,'dbc::Message']]] +]; diff --git a/docs/manual/html/search/classes_0.js b/docs/manual/html/search/classes_0.js new file mode 100644 index 0000000..9ed75c4 --- /dev/null +++ b/docs/manual/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['attribute_0',['Attribute',['../classdbc_1_1_attribute.html',1,'dbc']]] +]; diff --git a/docs/manual/html/search/classes_1.js b/docs/manual/html/search/classes_1.js new file mode 100644 index 0000000..7dae323 --- /dev/null +++ b/docs/manual/html/search/classes_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dbcfile_0',['DbcFile',['../classdbc_1_1_dbc_file.html',1,'dbc']]], + ['dbcmessage_1',['DbcMessage',['../classdbc_1_1_dbc_message.html',1,'dbc']]] +]; diff --git a/docs/manual/html/search/classes_2.js b/docs/manual/html/search/classes_2.js new file mode 100644 index 0000000..c07c8eb --- /dev/null +++ b/docs/manual/html/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['envvar_0',['EnvVar',['../classdbc_1_1_env_var.html',1,'dbc']]], + ['extendedmux_1',['ExtendedMux',['../structdbc_1_1_extended_mux.html',1,'dbc']]] +]; diff --git a/docs/manual/html/search/classes_3.js b/docs/manual/html/search/classes_3.js new file mode 100644 index 0000000..2a3634b --- /dev/null +++ b/docs/manual/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isampleobserver_0',['ISampleObserver',['../classdbc_1_1_i_sample_observer.html',1,'dbc']]] +]; diff --git a/docs/manual/html/search/classes_4.js b/docs/manual/html/search/classes_4.js new file mode 100644 index 0000000..d10977c --- /dev/null +++ b/docs/manual/html/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['message_0',['Message',['../classdbc_1_1_message.html',1,'dbc']]] +]; diff --git a/docs/manual/html/search/classes_5.js b/docs/manual/html/search/classes_5.js new file mode 100644 index 0000000..9a73e6e --- /dev/null +++ b/docs/manual/html/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['network_0',['Network',['../classdbc_1_1_network.html',1,'dbc']]], + ['node_1',['Node',['../classdbc_1_1_node.html',1,'dbc']]] +]; diff --git a/docs/manual/html/search/classes_6.js b/docs/manual/html/search/classes_6.js new file mode 100644 index 0000000..f090649 --- /dev/null +++ b/docs/manual/html/search/classes_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['signal_0',['Signal',['../classdbc_1_1_signal.html',1,'dbc']]], + ['signalgroup_1',['SignalGroup',['../classdbc_1_1_signal_group.html',1,'dbc']]], + ['signalobserver_2',['SignalObserver',['../classdbc_1_1_signal_observer.html',1,'dbc']]], + ['signalvalue_3',['SignalValue',['../structdbc_1_1_signal_value.html',1,'dbc']]] +]; diff --git a/docs/manual/html/search/close.svg b/docs/manual/html/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/docs/manual/html/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/docs/manual/html/search/enums_0.js b/docs/manual/html/search/enums_0.js new file mode 100644 index 0000000..3165c8b --- /dev/null +++ b/docs/manual/html/search/enums_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['accesstype_0',['AccessType',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3a',1,'dbc']]], + ['attributetype_1',['AttributeType',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afab',1,'dbc']]], + ['attributevaluetype_2',['AttributeValueType',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enums_1.js b/docs/manual/html/search/enums_1.js new file mode 100644 index 0000000..b6541b4 --- /dev/null +++ b/docs/manual/html/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bustype_0',['BusType',['../namespacedbc.html#a18071d022cdcebdc6ef437aa8a6a8ed5',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enums_2.js b/docs/manual/html/search/enums_2.js new file mode 100644 index 0000000..4b4d96d --- /dev/null +++ b/docs/manual/html/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['envtype_0',['EnvType',['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bc',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enums_3.js b/docs/manual/html/search/enums_3.js new file mode 100644 index 0000000..9804057 --- /dev/null +++ b/docs/manual/html/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['muxtype_0',['MuxType',['../namespacedbc.html#ad3b31547481daad52074143cebeba268',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enums_4.js b/docs/manual/html/search/enums_4.js new file mode 100644 index 0000000..095c4d7 --- /dev/null +++ b/docs/manual/html/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['protocoltype_0',['ProtocolType',['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enums_5.js b/docs/manual/html/search/enums_5.js new file mode 100644 index 0000000..e1fafd0 --- /dev/null +++ b/docs/manual/html/search/enums_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['signaldatatype_0',['SignalDataType',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11a',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_0.js b/docs/manual/html/search/enumvalues_0.js new file mode 100644 index 0000000..233dfc2 --- /dev/null +++ b/docs/manual/html/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['can_0',['CAN',['../namespacedbc.html#a18071d022cdcebdc6ef437aa8a6a8ed5a6d5050f7a97e7e2e881a4e09dfbd6087',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_1.js b/docs/manual/html/search/enumvalues_1.js new file mode 100644 index 0000000..3ccf545 --- /dev/null +++ b/docs/manual/html/search/enumvalues_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['datatype_0',['DataType',['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bcaaa2aaa59ac1a7c24e5e86c068bda3d20',1,'dbc']]], + ['dbcmessage_1',['DbcMessage',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afabab9479e671e56c92f3b818eaeb2f78cf7',1,'dbc']]], + ['dbcnetwork_2',['DbcNetwork',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afabac8deca8ce87749f14ede9c06848b54d5',1,'dbc']]], + ['dbcnode_3',['DbcNode',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afaba29e407d59ca1c2fec4b916cf20e9bf7d',1,'dbc']]], + ['dbcsignal_4',['DbcSignal',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afabadba628aba406574c3bbacf7c56bea06e',1,'dbc']]], + ['doubledata_5',['DoubleData',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11aa89a7a61af77c580fccc274c7a3962c17',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_2.js b/docs/manual/html/search/enumvalues_2.js new file mode 100644 index 0000000..c78397f --- /dev/null +++ b/docs/manual/html/search/enumvalues_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['enumvalue_0',['EnumValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581a29785ae7827639b31b629cc7f9c150e0',1,'dbc']]], + ['environmentvariable_1',['EnvironmentVariable',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afabafbbda721c455f5e43e3a3cde92db5fb3',1,'dbc']]], + ['extendedmultiplexor_2',['ExtendedMultiplexor',['../namespacedbc.html#ad3b31547481daad52074143cebeba268af49808ad35223d1e28a900df724cd2b1',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_3.js b/docs/manual/html/search/enumvalues_3.js new file mode 100644 index 0000000..a480b3e --- /dev/null +++ b/docs/manual/html/search/enumvalues_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['floatdata_0',['FloatData',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11aaff35af20aaa94b8181d05696abcef71b',1,'dbc']]], + ['floattype_1',['FloatType',['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bca909eb2f2282643673abdd584be0bff4d',1,'dbc']]], + ['floatvalue_2',['FloatValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581ab8a545944c6b2e9d568d1045b5f5e598',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_4.js b/docs/manual/html/search/enumvalues_4.js new file mode 100644 index 0000000..78463a1 --- /dev/null +++ b/docs/manual/html/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hexvalue_0',['HexValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581a04ed81262ab890fbfabef50912978cc0',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_5.js b/docs/manual/html/search/enumvalues_5.js new file mode 100644 index 0000000..5063e02 --- /dev/null +++ b/docs/manual/html/search/enumvalues_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['integertype_0',['IntegerType',['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bca97a28f98bc67732c13cc3d7469f3f0df',1,'dbc']]], + ['integervalue_1',['IntegerValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581a4316e849fb60a763447555f31bd5a97f',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_6.js b/docs/manual/html/search/enumvalues_6.js new file mode 100644 index 0000000..9f8b5a3 --- /dev/null +++ b/docs/manual/html/search/enumvalues_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['j1939_0',['J1939',['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527afb03489612df8be2047792bd8588bb20',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_7.js b/docs/manual/html/search/enumvalues_7.js new file mode 100644 index 0000000..5df036b --- /dev/null +++ b/docs/manual/html/search/enumvalues_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multiplexed_0',['Multiplexed',['../namespacedbc.html#ad3b31547481daad52074143cebeba268a4a76083a736ef8df89bb44c6c2c18e34',1,'dbc']]], + ['multiplexor_1',['Multiplexor',['../namespacedbc.html#ad3b31547481daad52074143cebeba268a3cdc513e16e770f0c8b3e36b91223129',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_8.js b/docs/manual/html/search/enumvalues_8.js new file mode 100644 index 0000000..eae8466 --- /dev/null +++ b/docs/manual/html/search/enumvalues_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['nmea2000_0',['NMEA2000',['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527a6b59788e3ec98979e0ce5c58aa018ab6',1,'dbc']]], + ['nodemessagerelation_1',['NodeMessageRelation',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afaba93f1795ac5fe5bde0694593b007bf80d',1,'dbc']]], + ['nodesignalrelation_2',['NodeSignalRelation',['../namespacedbc.html#a20f7a54a056b67f80f3297d04e55afaba7320d32ec1ebee49c8c02de03bf9a6e1',1,'dbc']]], + ['notmultiplexed_3',['NotMultiplexed',['../namespacedbc.html#ad3b31547481daad52074143cebeba268a7b082f71405476c4406a23f2018ba6d8',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_9.js b/docs/manual/html/search/enumvalues_9.js new file mode 100644 index 0000000..3c13f64 --- /dev/null +++ b/docs/manual/html/search/enumvalues_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['obd2_0',['OBD2',['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527a5c5336b52a35f0d8cbc0667b8ae6e799',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_a.js b/docs/manual/html/search/enumvalues_a.js new file mode 100644 index 0000000..8925b3f --- /dev/null +++ b/docs/manual/html/search/enumvalues_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['readonly_0',['ReadOnly',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3aa131fb182a881796e7606ed6da27f1197',1,'dbc']]], + ['readwrite_1',['ReadWrite',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3aa70a2a84088d405a2e3f1e3accaa16723',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_b.js b/docs/manual/html/search/enumvalues_b.js new file mode 100644 index 0000000..de0f5b9 --- /dev/null +++ b/docs/manual/html/search/enumvalues_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['signeddata_0',['SignedData',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11aa574943f4b82f6c06170bb92eeac2a567',1,'dbc']]], + ['standardcan_1',['StandardCAN',['../namespacedbc.html#af39fa6901e3e2620b2e2f437cd87a527a01c6de10167101aa3a5d2820b0fb33b9',1,'dbc']]], + ['stringtype_2',['StringType',['../namespacedbc.html#a09f7cbcb108be9c76a53eb37b984a6bcab900a78030fdadc18121e26865e75791',1,'dbc']]], + ['stringvalue_3',['StringValue',['../namespacedbc.html#a9093a2c86a10837735a8adc071970581af6d2b0e17b94cf73adf2a5be1f0ca160',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_c.js b/docs/manual/html/search/enumvalues_c.js new file mode 100644 index 0000000..4749c7f --- /dev/null +++ b/docs/manual/html/search/enumvalues_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unrestricted_0',['Unrestricted',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3aa89c6caacc7047b0a535412d7f939f870',1,'dbc']]], + ['unsigneddata_1',['UnsignedData',['../namespacedbc.html#a66501163b0993a0a1bc31cfbe73bf11aaf590fd4e359bcba6ed603e0c9c7355bb',1,'dbc']]] +]; diff --git a/docs/manual/html/search/enumvalues_d.js b/docs/manual/html/search/enumvalues_d.js new file mode 100644 index 0000000..372d30d --- /dev/null +++ b/docs/manual/html/search/enumvalues_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['writeonly_0',['WriteOnly',['../namespacedbc.html#a3630e17ac2912c7a312d723666a91b3aa53dfe5089ae9e65887cb0215cb0098f5',1,'dbc']]] +]; diff --git a/docs/manual/html/search/files_0.js b/docs/manual/html/search/files_0.js new file mode 100644 index 0000000..57e3881 --- /dev/null +++ b/docs/manual/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['attribute_2eh_0',['attribute.h',['../attribute_8h.html',1,'']]] +]; diff --git a/docs/manual/html/search/files_1.js b/docs/manual/html/search/files_1.js new file mode 100644 index 0000000..972535e --- /dev/null +++ b/docs/manual/html/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dbcfile_2eh_0',['dbcfile.h',['../dbcfile_8h.html',1,'']]], + ['dbcmessage_2eh_1',['dbcmessage.h',['../dbcmessage_8h.html',1,'']]] +]; diff --git a/docs/manual/html/search/files_2.js b/docs/manual/html/search/files_2.js new file mode 100644 index 0000000..2dc7b05 --- /dev/null +++ b/docs/manual/html/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['envvar_2eh_0',['envvar.h',['../envvar_8h.html',1,'']]] +]; diff --git a/docs/manual/html/search/files_3.js b/docs/manual/html/search/files_3.js new file mode 100644 index 0000000..6cb3da9 --- /dev/null +++ b/docs/manual/html/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isampleobserver_2eh_0',['isampleobserver.h',['../isampleobserver_8h.html',1,'']]] +]; diff --git a/docs/manual/html/search/files_4.js b/docs/manual/html/search/files_4.js new file mode 100644 index 0000000..1fc8f61 --- /dev/null +++ b/docs/manual/html/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['message_2eh_0',['message.h',['../message_8h.html',1,'']]] +]; diff --git a/docs/manual/html/search/files_5.js b/docs/manual/html/search/files_5.js new file mode 100644 index 0000000..7c5e3d3 --- /dev/null +++ b/docs/manual/html/search/files_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['network_2eh_0',['network.h',['../network_8h.html',1,'']]], + ['node_2eh_1',['node.h',['../node_8h.html',1,'']]] +]; diff --git a/docs/manual/html/search/files_6.js b/docs/manual/html/search/files_6.js new file mode 100644 index 0000000..4d61a6d --- /dev/null +++ b/docs/manual/html/search/files_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['signal_2eh_0',['signal.h',['../signal_8h.html',1,'']]], + ['signalgroup_2eh_1',['signalgroup.h',['../signalgroup_8h.html',1,'']]], + ['signalobserver_2eh_2',['signalobserver.h',['../signalobserver_8h.html',1,'']]] +]; diff --git a/docs/manual/html/search/functions_0.js b/docs/manual/html/search/functions_0.js new file mode 100644 index 0000000..aedbc2e --- /dev/null +++ b/docs/manual/html/search/functions_0.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['access_0',['Access',['../classdbc_1_1_env_var.html#a79239ae79ec1056997ee165b765059fc',1,'dbc::EnvVar::Access(AccessType type)'],['../classdbc_1_1_env_var.html#ad62d4fe3f7728d08c29826d8ab10de97',1,'dbc::EnvVar::Access() const']]], + ['addmessage_1',['AddMessage',['../classdbc_1_1_dbc_file.html#afacfeebff269681bebcd614d26feab3a',1,'dbc::DbcFile']]], + ['addsignalgroup_2',['AddSignalGroup',['../classdbc_1_1_network.html#a92bbcbe05d0da6d335ef9638abf7f1d9',1,'dbc::Network']]], + ['addvaluetable_3',['AddValueTable',['../classdbc_1_1_network.html#aaf42e33bed4a6f3056ecef60505cfb8a',1,'dbc::Network']]], + ['attachobserver_4',['AttachObserver',['../classdbc_1_1_signal.html#a4b18b0db771df46c7a8110803ff74225',1,'dbc::Signal']]], + ['attribute_5',['Attribute',['../classdbc_1_1_attribute.html#abf822a12453ee7c8764d1c517f27171b',1,'dbc::Attribute']]], + ['attributes_6',['Attributes',['../classdbc_1_1_message.html#a12cce0c46d1e4876f5451af1c95e02bb',1,'dbc::Message::Attributes()'],['../classdbc_1_1_network.html#ac62186664c919852cea4158614a63087',1,'dbc::Network::Attributes()'],['../classdbc_1_1_node.html#a119f08897cdf9681c0000ffcd622bf25',1,'dbc::Node::Attributes()'],['../classdbc_1_1_signal.html#a3528ccd87e018332245d26406fda8e89',1,'dbc::Signal::Attributes()']]] +]; diff --git a/docs/manual/html/search/functions_1.js b/docs/manual/html/search/functions_1.js new file mode 100644 index 0000000..9ec939d --- /dev/null +++ b/docs/manual/html/search/functions_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['basetime_0',['BaseTime',['../classdbc_1_1_dbc_file.html#aeee8b7bdafaf4fa5a26ca6c0108bebee',1,'dbc::DbcFile::BaseTime(uint64_t ns1970)'],['../classdbc_1_1_dbc_file.html#a34cd3ce1172b96e20381b435a4483ddb',1,'dbc::DbcFile::BaseTime() const']]], + ['bitlength_1',['BitLength',['../classdbc_1_1_signal.html#a05aa8ffb910b01f8ae781472ddb117f3',1,'dbc::Signal::BitLength(size_t length)'],['../classdbc_1_1_signal.html#a0ba00d06ebfed01c36f19f13b3169e45',1,'dbc::Signal::BitLength() const']]], + ['bitstart_2',['BitStart',['../classdbc_1_1_signal.html#a89abd98147909cae90d4a4c0af194c0e',1,'dbc::Signal::BitStart(size_t start)'],['../classdbc_1_1_signal.html#a725685123dfa2fc49187fd5aa633e22e',1,'dbc::Signal::BitStart() const']]], + ['bus_3',['Bus',['../classdbc_1_1_network.html#a54e9cab19df54e2b643f0dc7d6e02ef1',1,'dbc::Network::Bus(BusType type)'],['../classdbc_1_1_network.html#a9861e8ad88c2012762290db1c764de4d',1,'dbc::Network::Bus() const']]], + ['busasstring_4',['BusAsString',['../classdbc_1_1_network.html#aa20e1fed790c7a00ee76f110c42a5469',1,'dbc::Network']]] +]; diff --git a/docs/manual/html/search/functions_10.js b/docs/manual/html/search/functions_10.js new file mode 100644 index 0000000..65467f6 --- /dev/null +++ b/docs/manual/html/search/functions_10.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['time_0',['Time',['../classdbc_1_1_dbc_message.html#a75ba550efd6ffebb0b3b79abe4a13081',1,'dbc::DbcMessage::Time(uint64_t ns1970)'],['../classdbc_1_1_dbc_message.html#a6ea21e7c72c470de7090268503a17830',1,'dbc::DbcMessage::Time() const'],['../classdbc_1_1_signal_observer.html#a3f89efc13d2d6f2131ee8af17374fbfb',1,'dbc::SignalObserver::Time(size_t index) const']]], + ['timetoindex_1',['TimeToIndex',['../classdbc_1_1_signal_observer.html#acc5c5f6479fae15099523a197fce9b50',1,'dbc::SignalObserver']]], + ['type_2',['Type',['../classdbc_1_1_attribute.html#a3bffedfaa30cf911beb593b2aa68b494',1,'dbc::Attribute::Type(AttributeType type)'],['../classdbc_1_1_attribute.html#a87de3889f093829ac622f0377357a0cc',1,'dbc::Attribute::Type() const'],['../classdbc_1_1_env_var.html#afe0ed219594f382657411fde16a269b4',1,'dbc::EnvVar::Type(EnvType type)'],['../classdbc_1_1_env_var.html#a0cca9d1c8ffaad2de548b8a54f99c12b',1,'dbc::EnvVar::Type() const']]], + ['typeasstring_3',['TypeAsString',['../classdbc_1_1_env_var.html#abc98292c2fcf0b597a688ef21e06f7bb',1,'dbc::EnvVar']]] +]; diff --git a/docs/manual/html/search/functions_11.js b/docs/manual/html/search/functions_11.js new file mode 100644 index 0000000..7a3cbb2 --- /dev/null +++ b/docs/manual/html/search/functions_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unit_0',['Unit',['../classdbc_1_1_env_var.html#aa0c5f967bb464f6dd77a75fcdadf59f3',1,'dbc::EnvVar::Unit(const std::string &unit)'],['../classdbc_1_1_env_var.html#adf5bbe345a6422290a64431b9e841c73',1,'dbc::EnvVar::Unit() const'],['../classdbc_1_1_signal.html#a486f838fc7ad7252716741b2eb3ba140',1,'dbc::Signal::Unit(const std::string &unit)'],['../classdbc_1_1_signal.html#a79fc6c90168b724b29afb647f9aa5be7',1,'dbc::Signal::Unit() const']]], + ['updatedata_1',['UpdateData',['../classdbc_1_1_message.html#a41ea6c26bbc05ba0d2c12e7b3472efbd',1,'dbc::Message']]] +]; diff --git a/docs/manual/html/search/functions_12.js b/docs/manual/html/search/functions_12.js new file mode 100644 index 0000000..235b8e6 --- /dev/null +++ b/docs/manual/html/search/functions_12.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['valid_0',['Valid',['../classdbc_1_1_signal.html#a96d69980646c30b63678ee58d0f0ecc1',1,'dbc::Signal::Valid(bool valid)'],['../classdbc_1_1_signal.html#a3b1c5a81a43d009ee0f81f747fc9bff3',1,'dbc::Signal::Valid() const']]], + ['value_1',['Value',['../classdbc_1_1_attribute.html#a9ad873753f9c6f2d01b75c70cf1256ea',1,'dbc::Attribute::Value(const T &value)'],['../classdbc_1_1_attribute.html#a010a2cab86b51ee7c09a6a0fd3c5f6c5',1,'dbc::Attribute::Value() const'],['../classdbc_1_1_attribute.html#a04dbc71d22ea6d8c2f18bc23644a38c0',1,'dbc::Attribute::Value(const std::string &value)'],['../classdbc_1_1_attribute.html#a9cfe2335d94037f7625eedcf614331c0',1,'dbc::Attribute::Value() const']]], + ['valuetype_2',['ValueType',['../classdbc_1_1_attribute.html#a0859f19ef869c6cb5d1aed215f7dc811',1,'dbc::Attribute::ValueType(AttributeValueType type)'],['../classdbc_1_1_attribute.html#ac23c9671f0353e58baa447d1328d07f0',1,'dbc::Attribute::ValueType() const']]], + ['valuetypeasstring_3',['ValueTypeAsString',['../classdbc_1_1_attribute.html#a069729816334653b2c4407d941fc21b1',1,'dbc::Attribute']]], + ['version_4',['Version',['../classdbc_1_1_network.html#ac75c0cdf521f666bfbab15b7400386fa',1,'dbc::Network::Version(const std::string &version)'],['../classdbc_1_1_network.html#a7bbb6e8f3e0be88bcd2c6dfe40ffb1ab',1,'dbc::Network::Version() const']]] +]; diff --git a/docs/manual/html/search/functions_13.js b/docs/manual/html/search/functions_13.js new file mode 100644 index 0000000..2328b6a --- /dev/null +++ b/docs/manual/html/search/functions_13.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_7eisampleobserver_0',['~ISampleObserver',['../classdbc_1_1_i_sample_observer.html#ae5f44c7e2a92905a838980399b1e8b79',1,'dbc::ISampleObserver']]], + ['_7esignal_1',['~Signal',['../classdbc_1_1_signal.html#a649b014c0da7a35358d8991cccc74f93',1,'dbc::Signal']]], + ['_7esignalobserver_2',['~SignalObserver',['../classdbc_1_1_signal_observer.html#a9487724b544e14cc1287e753823314c7',1,'dbc::SignalObserver']]] +]; diff --git a/docs/manual/html/search/functions_2.js b/docs/manual/html/search/functions_2.js new file mode 100644 index 0000000..0b2f506 --- /dev/null +++ b/docs/manual/html/search/functions_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['canid_0',['CanId',['../classdbc_1_1_dbc_message.html#af5777d84563cf62346fa9a9c00ad776b',1,'dbc::DbcMessage::CanId(uint32_t can_id)'],['../classdbc_1_1_dbc_message.html#ae4543dcd8b90b3aeaf0c4c0d2aded383',1,'dbc::DbcMessage::CanId() const'],['../classdbc_1_1_message.html#a3fae8e0b72aa1d213358910e9325dd82',1,'dbc::Message::CanId()'],['../classdbc_1_1_signal_observer.html#ae5a0b4b32dcfe397f10aea47f2bb2486',1,'dbc::SignalObserver::CanId()']]], + ['channelvalue_1',['ChannelValue',['../classdbc_1_1_signal.html#a5ed59d80e1f1750c847d285c45d24341',1,'dbc::Signal::ChannelValue()'],['../classdbc_1_1_signal_observer.html#a4ac0be1f04b6c48204cab1d12f43fd68',1,'dbc::SignalObserver::ChannelValue()'],['../classdbc_1_1_signal.html#a5bbbe1b0c97ffece106c9df433c37ccf',1,'dbc::Signal::ChannelValue(std::string &value) const'],['../classdbc_1_1_signal.html#a487f1025da4057bb8327551b291d749a',1,'dbc::Signal::ChannelValue(SignalValue &value) const'],['../classdbc_1_1_signal_observer.html#a36c14c021ec8f8dc88b56893243cbb2c',1,'dbc::SignalObserver::ChannelValue()']]], + ['clear_2',['Clear',['../structdbc_1_1_signal_value.html#a41478b12e57a27f5f77f0de92feb9aa9',1,'dbc::SignalValue']]], + ['comment_3',['Comment',['../classdbc_1_1_env_var.html#a9293b7ef7ef5cef4ac0cf70824195fbf',1,'dbc::EnvVar::Comment(const std::string &comment)'],['../classdbc_1_1_env_var.html#a1880d86ccaa8d8594164e29154bc84da',1,'dbc::EnvVar::Comment() const'],['../classdbc_1_1_message.html#ab2e2c9ca8d445f3d3628c301c0b72025',1,'dbc::Message::Comment(const std::string &comment)'],['../classdbc_1_1_message.html#a0622959ee0cec270be17a0e3ab1048dc',1,'dbc::Message::Comment() const'],['../classdbc_1_1_network.html#a909329e459b83d590f1a61f53d8820af',1,'dbc::Network::Comment(const std::string &comment)'],['../classdbc_1_1_network.html#a924dddbeb027b1e59ee51a53e69615c6',1,'dbc::Network::Comment() const'],['../classdbc_1_1_node.html#a7a4632ce225397c9e5f00a393ea464c8',1,'dbc::Node::Comment(const std::string &comment)'],['../classdbc_1_1_node.html#a37eaf3c423935028241943a8a9a2e0a2',1,'dbc::Node::Comment() const'],['../classdbc_1_1_signal.html#adb9eeaea40057d12857fbefdd4e8ca5d',1,'dbc::Signal::Comment(const std::string &comment)'],['../classdbc_1_1_signal.html#a9aa375c1bc2634cfe28df4d1a1c661ce',1,'dbc::Signal::Comment() const']]], + ['createattribute_4',['CreateAttribute',['../classdbc_1_1_message.html#a345bee598253a84a879cfdd2af13902d',1,'dbc::Message::CreateAttribute()'],['../classdbc_1_1_network.html#a34748784742ebc4e58846cbdca1aa8c5',1,'dbc::Network::CreateAttribute()'],['../classdbc_1_1_node.html#a429e13e1834213142a486aa2a6adb2fd',1,'dbc::Node::CreateAttribute()'],['../classdbc_1_1_signal.html#a270538416420900f91a8a15eb7a73f78',1,'dbc::Signal::CreateAttribute()']]], + ['createdefinition_5',['CreateDefinition',['../classdbc_1_1_network.html#a0ad6cbe91a471223eab349ae017205b9',1,'dbc::Network']]], + ['createmessage_6',['CreateMessage',['../classdbc_1_1_network.html#a68f6259cbdaa02f4997b6acb7fc5810e',1,'dbc::Network']]], + ['createnode_7',['CreateNode',['../classdbc_1_1_network.html#ad9e9f9494a1fc0ef432fd97e72be55fc',1,'dbc::Network']]], + ['createsignal_8',['CreateSignal',['../classdbc_1_1_message.html#af487d9e44abe134898219d13f3e0bd43',1,'dbc::Message']]] +]; diff --git a/docs/manual/html/search/functions_3.js b/docs/manual/html/search/functions_3.js new file mode 100644 index 0000000..b4a4c49 --- /dev/null +++ b/docs/manual/html/search/functions_3.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['data_0',['Data',['../classdbc_1_1_dbc_message.html#abcc52930f4952f0b00cb41faf06caf88',1,'dbc::DbcMessage::Data(const std::vector< uint8_t > &data)'],['../classdbc_1_1_dbc_message.html#a197434bef562e327fbbbf37473b16d9f',1,'dbc::DbcMessage::Data() const'],['../classdbc_1_1_message.html#aded1dd8c8ef1134e5361690041082a5e',1,'dbc::Message::Data()']]], + ['datapage_1',['DataPage',['../classdbc_1_1_dbc_message.html#a3be69693e55cec930519bb6a1d474bbe',1,'dbc::DbcMessage::DataPage()'],['../classdbc_1_1_message.html#ac8d74c2597021f21792ae9988baf8f68',1,'dbc::Message::DataPage()']]], + ['datatype_2',['DataType',['../classdbc_1_1_signal.html#aac84b06cae30203a1ac24709008e6012',1,'dbc::Signal::DataType(SignalDataType type)'],['../classdbc_1_1_signal.html#a910ba3ee2a4718528e73dd39e761b502',1,'dbc::Signal::DataType() const']]], + ['datatypeasstring_3',['DataTypeAsString',['../classdbc_1_1_signal.html#a0eb29adc82621fb99bcdd1357604ca1b',1,'dbc::Signal']]], + ['dbcmessage_4',['DbcMessage',['../classdbc_1_1_dbc_message.html#a1f831c506d21ce48764615eef9677271',1,'dbc::DbcMessage::DbcMessage()=default'],['../classdbc_1_1_dbc_message.html#a743faa818417f8c5a95d2b35322cf83c',1,'dbc::DbcMessage::DbcMessage(uint64_t time, uint32_t can_id, std::vector< uint8_t > data)'],['../classdbc_1_1_dbc_message.html#a79e1b0e7d31be7292fb102b55eb61f8c',1,'dbc::DbcMessage::DbcMessage(const DbcMessage &message)=default']]], + ['detachobserver_5',['DetachObserver',['../classdbc_1_1_i_sample_observer.html#a053ec00bd84eb554e760c2c2cdfd25d5',1,'dbc::ISampleObserver::DetachObserver()'],['../classdbc_1_1_signal.html#a8048ec5ef09804028cf8235f54539c1f',1,'dbc::Signal::DetachObserver()'],['../classdbc_1_1_signal_observer.html#aac7f01c6e4deba313a8cc0ce9d92db1a',1,'dbc::SignalObserver::DetachObserver()']]] +]; diff --git a/docs/manual/html/search/functions_4.js b/docs/manual/html/search/functions_4.js new file mode 100644 index 0000000..88f2b6a --- /dev/null +++ b/docs/manual/html/search/functions_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['engvalue_0',['EngValue',['../classdbc_1_1_signal.html#a0c1313c8eab5a019bb21ae52468e44d5',1,'dbc::Signal::EngValue()'],['../classdbc_1_1_signal_observer.html#ae889044234fe7696b0ac1217be9fd7e4',1,'dbc::SignalObserver::EngValue()'],['../classdbc_1_1_signal.html#a7ef11e3f396f54d1854d373473023e0a',1,'dbc::Signal::EngValue()'],['../classdbc_1_1_signal_observer.html#a7994073aa3e0d64c3be6e89c024dc922',1,'dbc::SignalObserver::EngValue()']]], + ['enumlist_1',['EnumList',['../classdbc_1_1_attribute.html#a4a1bc65da61d6a93dad0a7c2d959a52a',1,'dbc::Attribute::EnumList(const std::vector< std::string > &list)'],['../classdbc_1_1_attribute.html#a4035455892b1db39b14c800752f3eb32',1,'dbc::Attribute::EnumList() const'],['../classdbc_1_1_env_var.html#a178f51c4928ca2cf6773e5ca181e5204',1,'dbc::EnvVar::EnumList(const std::map< int64_t, std::string > &enum_list)'],['../classdbc_1_1_env_var.html#abbd6188697511e6d6fcd3834e35e14f8',1,'dbc::EnvVar::EnumList() const'],['../classdbc_1_1_signal.html#a8d45969cf78494a91aad69045d1970a2',1,'dbc::Signal::EnumList(const std::map< int64_t, std::string > &enum_list)'],['../classdbc_1_1_signal.html#aa3dde456d7de1854ac9111cc6ef8da11',1,'dbc::Signal::EnumList() const']]], + ['enums_2',['Enums',['../classdbc_1_1_network.html#adad3cb33f36d4c14601b067531a3c6f1',1,'dbc::Network']]], + ['envvars_3',['EnvVars',['../classdbc_1_1_network.html#a20be0169601361defa49e39571192125',1,'dbc::Network']]], + ['extendeddatapage_4',['ExtendedDataPage',['../classdbc_1_1_dbc_message.html#ad582604c307e5c4a233393796e1a3bdf',1,'dbc::DbcMessage::ExtendedDataPage()'],['../classdbc_1_1_message.html#aa4f803feac2e49d0bd0c0124d7e43087',1,'dbc::Message::ExtendedDataPage()']]] +]; diff --git a/docs/manual/html/search/functions_5.js b/docs/manual/html/search/functions_5.js new file mode 100644 index 0000000..b74daac --- /dev/null +++ b/docs/manual/html/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['filename_0',['Filename',['../classdbc_1_1_dbc_file.html#ab90e89005e79033325912b1fa754937d',1,'dbc::DbcFile::Filename(const std::string &filename)'],['../classdbc_1_1_dbc_file.html#a80f96154e90c9e401e8f492ba645dc9b',1,'dbc::DbcFile::Filename() const'],['../classdbc_1_1_network.html#a694c5f045e9c54d98d7a3abcec354c8f',1,'dbc::Network::Filename(const std::string &filename)'],['../classdbc_1_1_network.html#abcbc402004e3a88de9379fe4836710e4',1,'dbc::Network::Filename() const']]], + ['firstindex_1',['FirstIndex',['../classdbc_1_1_signal_observer.html#a5af74b4b57829909a3cb7aa55272c4b7',1,'dbc::SignalObserver']]] +]; diff --git a/docs/manual/html/search/functions_6.js b/docs/manual/html/search/functions_6.js new file mode 100644 index 0000000..4799526 --- /dev/null +++ b/docs/manual/html/search/functions_6.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['getattribute_0',['GetAttribute',['../classdbc_1_1_message.html#add99b1aad19d7fba01af8037fc4fbeb9',1,'dbc::Message::GetAttribute()'],['../classdbc_1_1_network.html#ad126aa858052fa6fe7fddbcff601819f',1,'dbc::Network::GetAttribute(const std::string &name)'],['../classdbc_1_1_network.html#a04524384810ade55d6b3f5ad56bda962',1,'dbc::Network::GetAttribute(const std::string &name) const'],['../classdbc_1_1_node.html#ac59a1a2889e765e3ffcdaeaee7ed8de5',1,'dbc::Node::GetAttribute()']]], + ['getenumstring_1',['GetEnumString',['../classdbc_1_1_signal.html#a3a1c613477b42e060f140654e84294ef',1,'dbc::Signal']]], + ['getenvvar_2',['GetEnvVar',['../classdbc_1_1_network.html#a577490ed666c8c71d3b620b5efa65d46',1,'dbc::Network']]], + ['getextendedmux_3',['GetExtendedMux',['../classdbc_1_1_signal.html#a667dfb14a8a97088ad0e265f717817ec',1,'dbc::Signal']]], + ['getmessage_4',['GetMessage',['../classdbc_1_1_network.html#a7144c11f46345f8666f63927aed221c8',1,'dbc::Network::GetMessage(uint64_t message_id)'],['../classdbc_1_1_network.html#a9eeb1de6ec7f29af95afed10ffe35541',1,'dbc::Network::GetMessage(uint64_t message_id) const']]], + ['getmessagebycanid_5',['GetMessageByCanId',['../classdbc_1_1_network.html#a41a403dec86f79706f1746c37b31e08b',1,'dbc::Network::GetMessageByCanId(uint64_t can_id)'],['../classdbc_1_1_network.html#acfdfed4f93e4ec55a91a197c42c01d80',1,'dbc::Network::GetMessageByCanId(uint64_t can_id) const']]], + ['getmessagebyname_6',['GetMessageByName',['../classdbc_1_1_network.html#a2676d5fd2919aa12f10c81babdc80397',1,'dbc::Network']]], + ['getmessagebypgn_7',['GetMessageByPgn',['../classdbc_1_1_network.html#a55a243417b99d89858e03b3b086cda9f',1,'dbc::Network']]], + ['getmessagebypgnandsource_8',['GetMessageByPgnAndSource',['../classdbc_1_1_network.html#aeabc7aaeb4acc25e6e23a4ed47291c4d',1,'dbc::Network']]], + ['getmultiplexor_9',['GetMultiplexor',['../classdbc_1_1_message.html#aaee2e8851577deb2a1e747766db59331',1,'dbc::Message']]], + ['getnetwork_10',['GetNetwork',['../classdbc_1_1_dbc_file.html#ad1b93b85d8fd38c68801beb5cfa3033f',1,'dbc::DbcFile::GetNetwork()'],['../classdbc_1_1_dbc_file.html#ad327f66e5420f555cf266d4169c057f6',1,'dbc::DbcFile::GetNetwork() const']]], + ['getnode_11',['GetNode',['../classdbc_1_1_network.html#a4ca71a9c205d112604c8fb8ab128271b',1,'dbc::Network::GetNode(const std::string &name)'],['../classdbc_1_1_network.html#a059b9eed96971794ef1850efdf83f18c',1,'dbc::Network::GetNode(const std::string &name) const']]], + ['getnodebysource_12',['GetNodeBySource',['../classdbc_1_1_network.html#ab74544eb60585f441bfd29cf2cfbf469',1,'dbc::Network']]], + ['getsignal_13',['GetSignal',['../classdbc_1_1_message.html#aaf1f7ee3caf6b953ba759f2aa3a3b058',1,'dbc::Message::GetSignal(const std::string &name)'],['../classdbc_1_1_message.html#aa7e1dc587ff2843b53f3823db7e0b8e7',1,'dbc::Message::GetSignal(const std::string &name) const'],['../classdbc_1_1_network.html#a7ae64bba8c481112a8d8b111ebe5b190',1,'dbc::Network::GetSignal(uint64_t message_id, const std::string &signal_name)'],['../classdbc_1_1_network.html#a9a3b72b468db9b3e60a0e51cd3ea93ef',1,'dbc::Network::GetSignal(uint64_t message_id, const std::string &signal_name) const'],['../classdbc_1_1_signal_observer.html#abd76954ced3f7d37d539b2605a875435',1,'dbc::SignalObserver::GetSignal()']]], + ['getsignalbycanid_14',['GetSignalByCanId',['../classdbc_1_1_network.html#a6ad87b4a82372c3c6b57bf867d344b56',1,'dbc::Network']]], + ['getsignalbyname_15',['GetSignalByName',['../classdbc_1_1_network.html#a1d17c1127c3e7a60613e37e412e7b48e',1,'dbc::Network']]], + ['getsignalgroup_16',['GetSignalGroup',['../classdbc_1_1_network.html#abf979ce023012f2484902b2485186759',1,'dbc::Network']]], + ['getsignalgroupbyname_17',['GetSignalGroupByName',['../classdbc_1_1_network.html#a0d050366ffebb6aa761be31083293397',1,'dbc::Network']]] +]; diff --git a/docs/manual/html/search/functions_7.js b/docs/manual/html/search/functions_7.js new file mode 100644 index 0000000..61286d5 --- /dev/null +++ b/docs/manual/html/search/functions_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['ident_0',['Ident',['../classdbc_1_1_env_var.html#acf24b01738dddd29ef84eae40735d9a2',1,'dbc::EnvVar::Ident(uint64_t ident)'],['../classdbc_1_1_env_var.html#aa1ea3dc52c6abad1e3519e2607747813',1,'dbc::EnvVar::Ident() const'],['../classdbc_1_1_message.html#a601971c6efc02e67e5fc44aaf28638e0',1,'dbc::Message::Ident(uint64_t ident)'],['../classdbc_1_1_message.html#a5592774264da46753877bed5947d062b',1,'dbc::Message::Ident() const']]], + ['initvalue_1',['InitValue',['../classdbc_1_1_env_var.html#abd05b5ba9228fd03d279a2d38c317331',1,'dbc::EnvVar::InitValue(double value)'],['../classdbc_1_1_env_var.html#ad909847cf49bd4a7ac20d261984dfe55',1,'dbc::EnvVar::InitValue() const']]], + ['inrange_2',['InRange',['../structdbc_1_1_extended_mux.html#a00b2ca5b9a59b94ce2ed5b5f2bd50f1a',1,'dbc::ExtendedMux']]], + ['isampleobserver_3',['ISampleObserver',['../classdbc_1_1_i_sample_observer.html#a5eeb28313e73358151fd6d1b3375bd95',1,'dbc::ISampleObserver']]], + ['isextended_4',['IsExtended',['../classdbc_1_1_message.html#a0e6f7b00cd196b0d4eb722bbdbe2fe8b',1,'dbc::Message']]], + ['isj1939_5',['IsJ1939',['../classdbc_1_1_message.html#ab20f97b18313af74491211891091d8a5',1,'dbc::Message']]], + ['ismultiplexed_6',['IsMultiplexed',['../classdbc_1_1_signal.html#a2c65a42d76bcd2e74978bd32faa70ff8',1,'dbc::Signal']]], + ['isnodesender_7',['IsNodeSender',['../classdbc_1_1_message.html#a43a854be6a2cf46aebf49168b4c0c4ae',1,'dbc::Message']]], + ['ispdu1_8',['IsPdu1',['../classdbc_1_1_message.html#a69c8f4aad3e0f9660e89db0f07e87e78',1,'dbc::Message']]], + ['ispdu2_9',['IsPdu2',['../classdbc_1_1_message.html#ac5ff5de61dd0eddf0016c46ec9655d91',1,'dbc::Message']]] +]; diff --git a/docs/manual/html/search/functions_8.js b/docs/manual/html/search/functions_8.js new file mode 100644 index 0000000..47c40b3 --- /dev/null +++ b/docs/manual/html/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['j1939_0',['J1939',['../classdbc_1_1_network.html#aca3e5ba15743f4700d8f33b45abf00ba',1,'dbc::Network::J1939(bool j1939)'],['../classdbc_1_1_network.html#a276739da3736954c9c7d7363c02671b4',1,'dbc::Network::J1939() const']]] +]; diff --git a/docs/manual/html/search/functions_9.js b/docs/manual/html/search/functions_9.js new file mode 100644 index 0000000..30f6116 --- /dev/null +++ b/docs/manual/html/search/functions_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['lasterror_0',['LastError',['../classdbc_1_1_dbc_file.html#abb38a985e71a48f3a46cc93b017a90d7',1,'dbc::DbcFile']]], + ['lastindex_1',['LastIndex',['../classdbc_1_1_signal_observer.html#afce368371f4e8ec3816c6e2676383356',1,'dbc::SignalObserver']]], + ['lastmessage_2',['LastMessage',['../classdbc_1_1_network.html#aa766424be60f60b5c3b4cfaaa95630c8',1,'dbc::Network']]], + ['littleendian_3',['LittleEndian',['../classdbc_1_1_signal.html#afde5650bd65e5cb8fd2f91d512910bd1',1,'dbc::Signal::LittleEndian(bool endian)'],['../classdbc_1_1_signal.html#ab330029718ce776d028d0f1009350179',1,'dbc::Signal::LittleEndian() const']]] +]; diff --git a/docs/manual/html/search/functions_a.js b/docs/manual/html/search/functions_a.js new file mode 100644 index 0000000..572c5d2 --- /dev/null +++ b/docs/manual/html/search/functions_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['max_0',['Max',['../classdbc_1_1_attribute.html#ac60bca3bfc1b6b66f695d63d469488be',1,'dbc::Attribute::Max(double max)'],['../classdbc_1_1_attribute.html#a29153cd6ee99b926301e8acf46d4bc57',1,'dbc::Attribute::Max() const'],['../classdbc_1_1_env_var.html#a2d489efdbd8f60f39c4c2253550ea98f',1,'dbc::EnvVar::Max(double max)'],['../classdbc_1_1_env_var.html#ab46a250b8f6fa6bb62175b2a7e71e56b',1,'dbc::EnvVar::Max() const'],['../classdbc_1_1_signal.html#a19ac6bf5e9907cd958da73d9faf0b69f',1,'dbc::Signal::Max(double max)'],['../classdbc_1_1_signal.html#ac8b370b896d24997d344fd7f4a6462ee',1,'dbc::Signal::Max() const']]], + ['maxsamples_1',['MaxSamples',['../classdbc_1_1_signal_observer.html#a8dd32af99693b219a3306305ef3058bf',1,'dbc::SignalObserver::MaxSamples(size_t max_nof_samples)'],['../classdbc_1_1_signal_observer.html#add60e52b747139a31fe3f7ceab9c75b2',1,'dbc::SignalObserver::MaxSamples() const']]], + ['messageid_2',['MessageId',['../classdbc_1_1_signal.html#ae0703449ddf019a1662d694949b5e3bd',1,'dbc::Signal::MessageId(uint64_t message_id)'],['../classdbc_1_1_signal.html#a3447e8f86922b46809613d57f657f3b6',1,'dbc::Signal::MessageId() const'],['../classdbc_1_1_signal_group.html#ada6544f8beef8d46ae4fb68afe3b8a7c',1,'dbc::SignalGroup::MessageId(uint64_t message_id)'],['../classdbc_1_1_signal_group.html#a282bd834b426404969bf38f5712f955e',1,'dbc::SignalGroup::MessageId() const']]], + ['messages_3',['Messages',['../classdbc_1_1_network.html#a2293bc84fbff2dac32ffecd731a75f2b',1,'dbc::Network']]], + ['min_4',['Min',['../classdbc_1_1_attribute.html#a267553e1e3ff710de464f341efa656a1',1,'dbc::Attribute::Min(double min)'],['../classdbc_1_1_attribute.html#a9d536c4353fe55a3df63fef87f452776',1,'dbc::Attribute::Min() const'],['../classdbc_1_1_env_var.html#ac7044e057f3631dd05796c2841ac7d12',1,'dbc::EnvVar::Min(double min)'],['../classdbc_1_1_env_var.html#ae3e109e6403dfd95fa5373a0e20659e9',1,'dbc::EnvVar::Min() const'],['../classdbc_1_1_signal.html#a9494844695ad20e71cbc8e3a6301a3bb',1,'dbc::Signal::Min(double min)'],['../classdbc_1_1_signal.html#ad707d80faa92a5e0ecbafd38a78a842e',1,'dbc::Signal::Min() const']]], + ['mux_5',['Mux',['../classdbc_1_1_signal.html#a166b7ebdeef130c50c0f45ebfbf38e85',1,'dbc::Signal::Mux(MuxType type)'],['../classdbc_1_1_signal.html#a818ebca69114d0269067ca858f6b480b',1,'dbc::Signal::Mux() const']]], + ['muxasstring_6',['MuxAsString',['../classdbc_1_1_signal.html#ab121f68010a0682fda964fb18a8a433c',1,'dbc::Signal']]], + ['muxvalue_7',['MuxValue',['../classdbc_1_1_signal.html#a41390f96b26c6db6adeb23ddff472bef',1,'dbc::Signal::MuxValue(int value)'],['../classdbc_1_1_signal.html#a0669927ef77e4a4f451628ba540d4483',1,'dbc::Signal::MuxValue() const']]] +]; diff --git a/docs/manual/html/search/functions_b.js b/docs/manual/html/search/functions_b.js new file mode 100644 index 0000000..0305b0a --- /dev/null +++ b/docs/manual/html/search/functions_b.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['name_0',['Name',['../classdbc_1_1_attribute.html#a92611f349733d73f692884bc91949758',1,'dbc::Attribute::Name(const std::string &name)'],['../classdbc_1_1_attribute.html#ac29bdc26715f4074d757833d41b2e6a7',1,'dbc::Attribute::Name() const'],['../classdbc_1_1_dbc_file.html#ab5d3031c0cb673e00483b38db255c68f',1,'dbc::DbcFile::Name()'],['../classdbc_1_1_env_var.html#a47c89f86f34559755b447c13d1425025',1,'dbc::EnvVar::Name(const std::string &name)'],['../classdbc_1_1_env_var.html#a9860520454f5130051e812cdc0a98743',1,'dbc::EnvVar::Name() const'],['../classdbc_1_1_message.html#a18fa6fc9658d21871ac620d31cbbb01d',1,'dbc::Message::Name(const std::string &name)'],['../classdbc_1_1_message.html#abf394eae5ae141f6e9a2eed611412f73',1,'dbc::Message::Name() const'],['../classdbc_1_1_network.html#abb0833b474ba8dcfea7c31c9d4bc0e82',1,'dbc::Network::Name()'],['../classdbc_1_1_node.html#afe3fc600c2689ce1e815db719de3de19',1,'dbc::Node::Name(const std::string &name)'],['../classdbc_1_1_node.html#a7ff5323d8951d5ed5658f98b658752f6',1,'dbc::Node::Name() const'],['../classdbc_1_1_signal.html#a82d1cac9cbf031dac2e0d52d8fbd1399',1,'dbc::Signal::Name(const std::string &name)'],['../classdbc_1_1_signal.html#ac16d9dd0c25b91a32df72608f94b8328',1,'dbc::Signal::Name() const'],['../classdbc_1_1_signal_group.html#ab7962addf3a3a867053967a2e68a0b4f',1,'dbc::SignalGroup::Name(const std::string &name)'],['../classdbc_1_1_signal_group.html#a7f7c878f0daf3aa0b99cbc24f9145f5f',1,'dbc::SignalGroup::Name() const']]], + ['nextsequencenumber_1',['NextSequenceNumber',['../classdbc_1_1_message.html#a3cc215ee151d0e333e66379cabb9aece',1,'dbc::Message']]], + ['node_2',['Node',['../classdbc_1_1_message.html#a3355dd76d9740ecf7b13a57e89c6e4ab',1,'dbc::Message']]], + ['nodelist_3',['NodeList',['../classdbc_1_1_env_var.html#a4e1157eaee4b1b80828f24543baf1b2e',1,'dbc::EnvVar::NodeList(const std::vector< std::string > &node_list)'],['../classdbc_1_1_env_var.html#a35d67583dadcb305811cbf42d6262d45',1,'dbc::EnvVar::NodeList() const']]], + ['nodename_4',['NodeName',['../classdbc_1_1_message.html#a88dcc39e025f00fdd8ae990d828d9a29',1,'dbc::Message']]], + ['nodes_5',['Nodes',['../classdbc_1_1_network.html#aa69bb65d09b5a9d2cba9848d08d98c42',1,'dbc::Network']]], + ['nofbytes_6',['NofBytes',['../classdbc_1_1_message.html#a548d12b10a5dc39f5aa5f3b7333ad9a4',1,'dbc::Message::NofBytes(size_t bytes)'],['../classdbc_1_1_message.html#add73384ebbba3d8a164c88972c56cfa6',1,'dbc::Message::NofBytes() const']]], + ['nofsamples_7',['NofSamples',['../classdbc_1_1_signal_observer.html#ae4620426add2d7bf3dea96868027db46',1,'dbc::SignalObserver']]], + ['nofvalidsamples_8',['NofValidSamples',['../classdbc_1_1_signal_observer.html#a3cce45d3f0fe62059551a5550b29f0d9',1,'dbc::SignalObserver']]] +]; diff --git a/docs/manual/html/search/functions_c.js b/docs/manual/html/search/functions_c.js new file mode 100644 index 0000000..ccac362 --- /dev/null +++ b/docs/manual/html/search/functions_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['offset_0',['Offset',['../classdbc_1_1_signal.html#a107d48664579e53a86ccec6995787fc9',1,'dbc::Signal::Offset(double offset)'],['../classdbc_1_1_signal.html#a1025aadb18fd8bef81a5f154c4df16f3',1,'dbc::Signal::Offset() const']]], + ['onsample_1',['OnSample',['../classdbc_1_1_i_sample_observer.html#a6295f36c65a0e1f811886c10992f4199',1,'dbc::ISampleObserver::OnSample()'],['../classdbc_1_1_signal_observer.html#a35cc79762b1dc934f1cd77c5f26d8239',1,'dbc::SignalObserver::OnSample()']]] +]; diff --git a/docs/manual/html/search/functions_d.js b/docs/manual/html/search/functions_d.js new file mode 100644 index 0000000..d8f2609 --- /dev/null +++ b/docs/manual/html/search/functions_d.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['parsefile_0',['ParseFile',['../classdbc_1_1_dbc_file.html#adfe3085eb6216c981419305a338902ba',1,'dbc::DbcFile']]], + ['parsemessage_1',['ParseMessage',['../classdbc_1_1_dbc_file.html#a5fd82d19df1d70578a6a16ac0215926e',1,'dbc::DbcFile::ParseMessage()'],['../classdbc_1_1_message.html#a49d01da6a489142ab1c14044c92c8c64',1,'dbc::Message::ParseMessage()'],['../classdbc_1_1_signal.html#afda726e8acb411216c9cad57e02949ea',1,'dbc::Signal::ParseMessage()']]], + ['pduformat_2',['PduFormat',['../classdbc_1_1_dbc_message.html#a44046d858ef2c3fa5bbe8682653149f8',1,'dbc::DbcMessage::PduFormat()'],['../classdbc_1_1_message.html#adecf3c05e813c5c883f0b990c66f79f7',1,'dbc::Message::PduFormat()']]], + ['pduspecific_3',['PduSpecific',['../classdbc_1_1_dbc_message.html#a36b7dab6848608597ee230f8903b2419',1,'dbc::DbcMessage::PduSpecific()'],['../classdbc_1_1_message.html#aaa293b4c75e1d5207eb761fbc3a29234',1,'dbc::Message::PduSpecific()']]], + ['pgn_4',['Pgn',['../classdbc_1_1_dbc_message.html#abd1c9af0e020bf17c66feae7861449b0',1,'dbc::DbcMessage::Pgn()'],['../classdbc_1_1_message.html#a034cabb0a78d17794e5802a627a54105',1,'dbc::Message::Pgn()']]], + ['priority_5',['Priority',['../classdbc_1_1_dbc_message.html#a9f56d675550dea296129fcfeb3342389',1,'dbc::DbcMessage::Priority()'],['../classdbc_1_1_message.html#aa516d095d2e76eab079e12bdf7b5fd0c',1,'dbc::Message::Priority()']]], + ['protocol_6',['Protocol',['../classdbc_1_1_network.html#a1e819d7eebd1474cdaf38a6b4a8be81b',1,'dbc::Network::Protocol(ProtocolType type)'],['../classdbc_1_1_network.html#a1b935f056c692649bc19eb7f5070abb6',1,'dbc::Network::Protocol() const']]], + ['protocolasstring_7',['ProtocolAsString',['../classdbc_1_1_network.html#a018021f90cf6c1f443ad05f285e24aca',1,'dbc::Network']]] +]; diff --git a/docs/manual/html/search/functions_e.js b/docs/manual/html/search/functions_e.js new file mode 100644 index 0000000..8996ce4 --- /dev/null +++ b/docs/manual/html/search/functions_e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['receivers_0',['Receivers',['../classdbc_1_1_signal.html#a91f3a18b3a3cd17310a6042a71f192f0',1,'dbc::Signal::Receivers(const std::vector< std::string > &receiver_list)'],['../classdbc_1_1_signal.html#a4c7d611cb85c43b9f4c007717eec8cad',1,'dbc::Signal::Receivers() const']]], + ['reparsemessagelist_1',['ReparseMessageList',['../classdbc_1_1_dbc_file.html#a42d1a7b6a82af6e844ecd113c34a7fef',1,'dbc::DbcFile']]], + ['repetition_2',['Repetition',['../classdbc_1_1_signal_group.html#abe0ecddf376e3f02dafb1aa70e79cd04',1,'dbc::SignalGroup::Repetition(size_t rep)'],['../classdbc_1_1_signal_group.html#aeee51c68921ff02179a94283727f6eb0',1,'dbc::SignalGroup::Repetition() const']]], + ['resetsamplecounter_3',['ResetSampleCounter',['../classdbc_1_1_dbc_file.html#a7ed3d50dfb96e257dbf56d99ca9535e5',1,'dbc::DbcFile::ResetSampleCounter()'],['../classdbc_1_1_message.html#a1725d6e1a04c7929d45a6cf88e8ad335',1,'dbc::Message::ResetSampleCounter()'],['../classdbc_1_1_signal.html#a6b569a70fafd7460327c80c953f344a7',1,'dbc::Signal::ResetSampleCounter()']]], + ['resetsampleindex_4',['ResetSampleIndex',['../classdbc_1_1_signal_observer.html#a438cebb9332a7fa5100ea56662bf8181',1,'dbc::SignalObserver']]], + ['resetsequencenumber_5',['ResetSequenceNumber',['../classdbc_1_1_message.html#ae94cbffb939dfbb20b853e6001e430f6',1,'dbc::Message']]] +]; diff --git a/docs/manual/html/search/functions_f.js b/docs/manual/html/search/functions_f.js new file mode 100644 index 0000000..9215e45 --- /dev/null +++ b/docs/manual/html/search/functions_f.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['samplecanid_0',['SampleCanId',['../classdbc_1_1_signal.html#a1bf4531f27949895ff242ef10f204ef5',1,'dbc::Signal::SampleCanId(uint32_t can_id)'],['../classdbc_1_1_signal.html#a2b8b2d2289d9d3df959e2178b3088b19',1,'dbc::Signal::SampleCanId() const']]], + ['samplecounter_1',['SampleCounter',['../classdbc_1_1_message.html#aa79b4def32c809c79653eae26f57a8f6',1,'dbc::Message::SampleCounter()'],['../classdbc_1_1_signal.html#a390aa7058f873c46bc89e4bb5353cde4',1,'dbc::Signal::SampleCounter() const']]], + ['sampletime_2',['SampleTime',['../classdbc_1_1_signal.html#a2627086d63747403263dcb3996b91d5f',1,'dbc::Signal::SampleTime(uint64_t ns1970)'],['../classdbc_1_1_signal.html#a739aac045c5f29a6d3ac74c6185e7bd5',1,'dbc::Signal::SampleTime() const']]], + ['sampletoindex_3',['SampleToIndex',['../classdbc_1_1_signal_observer.html#aede221d4974746371c75ece420bd99b3',1,'dbc::SignalObserver']]], + ['scale_4',['Scale',['../classdbc_1_1_signal.html#a684f972a119ab5e0ffae27e61957ee72',1,'dbc::Signal::Scale(double scale)'],['../classdbc_1_1_signal.html#a8d975f981a7a0c860701fc2dc5210891',1,'dbc::Signal::Scale() const']]], + ['senders_5',['Senders',['../classdbc_1_1_message.html#ab347aebc6f9adeaaad3cbc83883818fe',1,'dbc::Message']]], + ['setmessagesize_6',['SetMessageSize',['../classdbc_1_1_dbc_file.html#a79829227309764bde202dd7f4d4e3551',1,'dbc::DbcFile']]], + ['signalgroups_7',['SignalGroups',['../classdbc_1_1_network.html#a8837f5355ff4fb70b48255677cb6689c',1,'dbc::Network']]], + ['signalobserver_8',['SignalObserver',['../classdbc_1_1_signal_observer.html#af4adc266e432ea5d7aaba16ae6aa49ad',1,'dbc::SignalObserver::SignalObserver(const Signal &signal)'],['../classdbc_1_1_signal_observer.html#a76a3ccf7438b90f648f11e5a7a721a6a',1,'dbc::SignalObserver::SignalObserver()=delete']]], + ['signals_9',['Signals',['../classdbc_1_1_message.html#a92a54b54be5674cd3f53f82f61826d52',1,'dbc::Message::Signals()'],['../classdbc_1_1_signal_group.html#a3acfcfe0e0a9be47dee7826efd9853ef',1,'dbc::SignalGroup::Signals(const std::vector< std::string > &signals)'],['../classdbc_1_1_signal_group.html#a595d2694d37a961eeef0a3d457cb418b',1,'dbc::SignalGroup::Signals() const']]], + ['source_10',['Source',['../classdbc_1_1_dbc_message.html#a646c5d5e0433b1fd936cbca43dee95a7',1,'dbc::DbcMessage::Source()'],['../classdbc_1_1_message.html#a71940aef5644a0f2762489c2475fc05d',1,'dbc::Message::Source()'],['../classdbc_1_1_node.html#acce31e612f3cfa7f61b86b6f2d83a39a',1,'dbc::Node::Source(uint8_t source)'],['../classdbc_1_1_node.html#ade44d0764f366cc5042dcd8195f5db36',1,'dbc::Node::Source() const']]], + ['stepsamplecounter_11',['StepSampleCounter',['../classdbc_1_1_message.html#a1e9f36dc823b7372faa7fedcf762a1e2',1,'dbc::Message::StepSampleCounter()'],['../classdbc_1_1_signal.html#abbaf69c053d6062bcdb6062247ec74ac',1,'dbc::Signal::StepSampleCounter()']]] +]; diff --git a/docs/manual/html/search/mag.svg b/docs/manual/html/search/mag.svg new file mode 100644 index 0000000..9f46b30 --- /dev/null +++ b/docs/manual/html/search/mag.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/docs/manual/html/search/mag_d.svg b/docs/manual/html/search/mag_d.svg new file mode 100644 index 0000000..b9a814c --- /dev/null +++ b/docs/manual/html/search/mag_d.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/docs/manual/html/search/mag_sel.svg b/docs/manual/html/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/docs/manual/html/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/docs/manual/html/search/mag_seld.svg b/docs/manual/html/search/mag_seld.svg new file mode 100644 index 0000000..6e720dc --- /dev/null +++ b/docs/manual/html/search/mag_seld.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/docs/manual/html/search/namespaces_0.js b/docs/manual/html/search/namespaces_0.js new file mode 100644 index 0000000..7a485f4 --- /dev/null +++ b/docs/manual/html/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dbc_0',['dbc',['../namespacedbc.html',1,'']]] +]; diff --git a/docs/manual/html/search/pages_0.js b/docs/manual/html/search/pages_0.js new file mode 100644 index 0000000..d55bc2d --- /dev/null +++ b/docs/manual/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dbc_20c_2b_2b_20library_0',['DBC C++ Library',['../index.html',1,'']]] +]; diff --git a/docs/manual/html/search/search.css b/docs/manual/html/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/docs/manual/html/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/manual/html/search/search.js b/docs/manual/html/search/search.js new file mode 100644 index 0000000..e103a26 --- /dev/null +++ b/docs/manual/html/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + searchResults.Search(searchValue); + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e + + + + + + +DbcLib: include/dbc/signal.h File Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    signal.h File Reference
    +
    +
    + +

    Interface against a DBC signal configuration. +More...

    +
    #include <cstdint>
    +#include <string>
    +#include <vector>
    +#include <map>
    +#include "dbc/attribute.h"
    +#include "dbc/isampleobserver.h"
    +
    +Include dependency graph for signal.h:
    +
    +
    + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Classes

    struct  dbc::SignalValue
     Support function that holds the channel value for a signal. More...
     
    struct  dbc::ExtendedMux
     Support function for the extended multiplexor functionality. More...
     
    class  dbc::Signal
     Interface against a DBC signal configuration. More...
     
    + + + + +

    +Namespaces

    namespace  dbc
     Main namespace for the DBC library.
     
    + + + + +

    +Typedefs

    +using dbc::RangePair = std::pair< size_t, size_t >
     Min and Max range definition.
     
    + + + + + + + +

    +Enumerations

    enum class  dbc::SignalDataType : int { dbc::SignedData +, dbc::UnsignedData +, dbc::FloatData +, dbc::DoubleData + }
     Signal data type. More...
     
    enum class  dbc::MuxType : int { dbc::NotMultiplexed +, dbc::Multiplexor +, dbc::Multiplexed +, dbc::ExtendedMultiplexor + }
     Multiplexer type. More...
     
    +
    + + + + diff --git a/docs/manual/html/signal_8h__dep__incl.map b/docs/manual/html/signal_8h__dep__incl.map new file mode 100644 index 0000000..ded3ab1 --- /dev/null +++ b/docs/manual/html/signal_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/manual/html/signal_8h__dep__incl.md5 b/docs/manual/html/signal_8h__dep__incl.md5 new file mode 100644 index 0000000..d2aa229 --- /dev/null +++ b/docs/manual/html/signal_8h__dep__incl.md5 @@ -0,0 +1 @@ +89c4642702c70d3b26cf4af3f4025da2 \ No newline at end of file diff --git a/docs/manual/html/signal_8h__dep__incl.png b/docs/manual/html/signal_8h__dep__incl.png new file mode 100644 index 0000000..d2e17d2 Binary files /dev/null and b/docs/manual/html/signal_8h__dep__incl.png differ diff --git a/docs/manual/html/signal_8h__incl.map b/docs/manual/html/signal_8h__incl.map new file mode 100644 index 0000000..ee3a0c9 --- /dev/null +++ b/docs/manual/html/signal_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/manual/html/signal_8h__incl.md5 b/docs/manual/html/signal_8h__incl.md5 new file mode 100644 index 0000000..5502e1d --- /dev/null +++ b/docs/manual/html/signal_8h__incl.md5 @@ -0,0 +1 @@ +0573eb44d5674e82e4c8c5991aa021ac \ No newline at end of file diff --git a/docs/manual/html/signal_8h__incl.png b/docs/manual/html/signal_8h__incl.png new file mode 100644 index 0000000..d7fa5a8 Binary files /dev/null and b/docs/manual/html/signal_8h__incl.png differ diff --git a/docs/manual/html/signal_8h_source.html b/docs/manual/html/signal_8h_source.html new file mode 100644 index 0000000..68b2fc1 --- /dev/null +++ b/docs/manual/html/signal_8h_source.html @@ -0,0 +1,481 @@ + + + + + + + +DbcLib: include/dbc/signal.h Source File + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    signal.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2* Copyright 2022 Ingemar Hedvall
    +
    3* SPDX-License-Identifier: MIT
    +
    4 */
    +
    8#pragma once
    +
    9#include <cstdint>
    +
    10#include <string>
    +
    11#include <vector>
    +
    12#include <map>
    +
    13#include "dbc/attribute.h"
    +
    14#include "dbc/isampleobserver.h"
    +
    15
    +
    16namespace dbc {
    + +
    19 bool valid = false;
    +
    20 int64_t signed_value = 0;
    +
    21 uint64_t unsigned_value = 0;
    +
    22 double float_value = 0;
    +
    23 std::vector<uint8_t> array_value;
    +
    25 void Clear() {
    +
    26 valid = false;
    +
    27 signed_value = 0;
    + +
    29 float_value = 0;
    +
    30 array_value.clear();
    +
    31 }
    +
    32};
    +
    33
    +
    35enum class SignalDataType : int {
    + + +
    38 FloatData,
    + +
    40};
    +
    41
    +
    48enum class MuxType : int {
    + + + + +
    53};
    +
    54
    +
    56using RangePair = std::pair<size_t, size_t>;
    +
    57
    + +
    60 std::string multiplexor;
    +
    61 std::vector<RangePair> range_list;
    +
    62 [[nodiscard]] bool InRange(size_t value) const;
    +
    63};
    +
    64
    +
    68class Signal {
    +
    69 public:
    +
    70 virtual ~Signal();
    +
    71
    +
    73 void Name(const std::string& name) { name_ = name; }
    +
    75 [[nodiscard]] const std::string& Name() const { return name_; }
    +
    76
    +
    78 void Unit(const std::string& unit) { unit_ = unit; }
    +
    80 [[nodiscard]] const std::string& Unit() const { return unit_; }
    +
    81
    +
    83 void Comment(const std::string& comment) { comment_ = comment; }
    +
    85 [[nodiscard]] const std::string& Comment() const { return comment_; }
    +
    86
    +
    88 void DataType(SignalDataType type) { data_type_ = type; }
    +
    90 [[nodiscard]] SignalDataType DataType() const { return data_type_; }
    +
    92 [[nodiscard]] std::string DataTypeAsString() const;
    +
    93
    +
    95 void Mux(MuxType type) { mux_type_ = type; }
    +
    97 [[nodiscard]] MuxType Mux() const { return mux_type_; }
    +
    99 [[nodiscard]] std::string MuxAsString() const;
    +
    101 void MuxValue(int value) { mux_value_ = value; }
    +
    103 [[nodiscard]] int MuxValue() const { return mux_value_; }
    +
    104
    +
    106 void BitStart(size_t start) { bit_start_ = start; }
    +
    108 [[nodiscard]] size_t BitStart() const { return bit_start_; }
    +
    109
    +
    111 void BitLength(size_t length) { bit_length_ = length; }
    +
    113 [[nodiscard]] size_t BitLength() const { return bit_length_; }
    +
    114
    +
    116 void LittleEndian(bool endian) { little_endian_ = endian; }
    +
    118 [[nodiscard]] bool LittleEndian() const { return little_endian_; }
    +
    119
    +
    120 void Scale(double scale) { scale_ = scale; }
    +
    121 [[nodiscard]] double Scale() const { return scale_; }
    +
    122
    +
    123 void Offset(double offset) { offset_ = offset; }
    +
    124 [[nodiscard]] double Offset() const { return offset_; }
    +
    125
    +
    126 void Min(double min) { min_ = min; }
    +
    127 [[nodiscard]] double Min() const { return min_; }
    +
    128
    +
    129 void Max(double max) { max_ = max; }
    +
    130 [[nodiscard]] double Max() const { return max_; }
    +
    131
    +
    133 void EnumList(const std::map<int64_t, std::string>& enum_list);
    +
    135 [[nodiscard]] const std::map<int64_t, std::string>& EnumList() const;
    +
    136
    +
    138 void Receivers(const std::vector<std::string>& receiver_list);
    +
    140 [[nodiscard]] const std::vector<std::string>& Receivers() const;
    +
    141
    +
    143 [[nodiscard]] const std::vector<Attribute>& Attributes() const {
    +
    144 return attribute_list_;
    +
    145 }
    +
    146
    +
    148 void MessageId(uint64_t message_id) { message_id_ = message_id;}
    +
    150 [[nodiscard]] uint64_t MessageId() const { return message_id_; }
    +
    151
    +
    152 [[nodiscard]] bool IsMultiplexed() const;
    +
    154 [[nodiscard]] Attribute& CreateAttribute(const Attribute& definition);
    +
    156 [[nodiscard]] ExtendedMux& GetExtendedMux();
    +
    157
    +
    159 [[nodiscard]] std::string GetEnumString(int64_t index) const;
    +
    160
    +
    162 void ParseMessage(const std::vector<uint8_t>& message, uint64_t ns1970,
    +
    163 uint32_t can_id);
    +
    165 void ResetSampleCounter() const {sample_counter_ = 0;}
    +
    167 void StepSampleCounter() const {++sample_counter_;}
    +
    169 size_t SampleCounter() const {return sample_counter_;}
    +
    170
    +
    172 void SampleTime(uint64_t ns1970) {sample_time_ = ns1970;}
    +
    174 [[nodiscard]] uint64_t SampleTime() const {return sample_time_;}
    +
    175
    +
    177 void SampleCanId(uint32_t can_id) {sample_can_id_ = can_id;}
    +
    179 [[nodiscard]] uint64_t SampleCanId() const {return sample_can_id_;}
    +
    180
    +
    181 void Valid(bool valid) {valid_ = valid;}
    +
    182 [[nodiscard]] bool Valid() const {return valid_;}
    +
    183
    +
    185 template <typename T>
    +
    186 bool ChannelValue( T& value ) const;
    +
    187
    +
    189 template <typename T>
    +
    190 bool EngValue( T& value ) const;
    +
    191
    +
    193 void AttachObserver(ISampleObserver* observer) const;
    +
    195 void DetachObserver(const ISampleObserver* observer) const;
    +
    196 private:
    +
    197 std::string name_;
    +
    198 std::string comment_;
    +
    199 std::string unit_;
    +
    200
    +
    201 std::vector<std::string> receiver_list_;
    +
    202
    +
    203 MuxType mux_type_ = MuxType::NotMultiplexed;
    +
    204 int mux_value_ = 0;
    +
    205 size_t bit_start_ = 0;
    +
    206 size_t bit_length_ = 0;
    +
    207 bool little_endian_ = true;
    + +
    209 double scale_ = 1.0;
    +
    210 double offset_ = 0.0;
    +
    211 double min_ = 0.0;
    +
    212 double max_ = 0.0;
    +
    213 ExtendedMux extended_mux_;
    +
    214
    +
    215 std::vector<Attribute> attribute_list_;
    +
    216 std::map<int64_t, std::string> enum_list_;
    +
    217
    +
    218 SignalValue channel_value_;
    +
    219
    +
    220 uint64_t message_id_ = 0;
    +
    221 mutable size_t sample_counter_ = 0;
    +
    222 bool valid_ = true;
    +
    223 uint64_t sample_time_ = 0;
    +
    224 uint32_t sample_can_id_ = 0;
    +
    225
    +
    226 mutable std::vector<ISampleObserver*> observer_list_;
    +
    227 void FireOnSample();
    +
    228
    +
    229};
    +
    230
    +
    231template <typename T>
    +
    232bool Signal::ChannelValue(T& value) const {
    +
    233 bool valid = channel_value_.valid && Valid();
    +
    234 value = {};
    +
    235
    +
    236 switch (data_type_) {
    + +
    238 try {
    +
    239 const auto temp = channel_value_.signed_value;
    +
    240 value = static_cast<T>(temp);
    +
    241 } catch (const std::exception&) {
    +
    242 valid = false;
    +
    243 }
    +
    244 break;
    +
    245 }
    +
    246
    + +
    248 size_t bytes = bit_length_ / 8;
    +
    249 if ((bit_length_ % 8) != 0) {
    +
    250 ++bytes;
    +
    251 }
    +
    252 if (bytes > 8) {
    +
    253 valid = false;
    +
    254 } else {
    +
    255 try {
    +
    256 const auto temp = channel_value_.unsigned_value;
    +
    257 value = static_cast<T>(temp);
    +
    258 } catch (const std::exception&) {
    +
    259 valid = false;
    +
    260 }
    +
    261 }
    +
    262 break;
    +
    263 }
    +
    264
    + + +
    267 try {
    +
    268 const auto temp = channel_value_.float_value;
    +
    269 value = static_cast<T>(temp);
    +
    270 } catch (const std::exception&) {
    +
    271 valid = false;
    +
    272 }
    +
    273 break;
    +
    274 }
    +
    275
    +
    276 default:
    +
    277 valid = false;
    +
    278 break;
    +
    279 }
    +
    280 return valid;
    +
    281}
    +
    282
    +
    284template <>
    +
    285bool Signal::ChannelValue(std::string& value) const;
    +
    286
    +
    288template <>
    + +
    290
    +
    291
    +
    292template <typename T>
    +
    293bool Signal::EngValue(T& value) const {
    +
    294 bool valid = false;
    +
    295 value = {};
    +
    296 bool need_to_convert = true;
    +
    297 // If it is an enumerate. We could convert the enum string but that's weird.
    +
    298 if (!enum_list_.empty()) {
    +
    299 need_to_convert = false;
    +
    300 }
    +
    301 // Avoid truncation
    +
    302 if (scale_ == 1.0 && offset_ == 0) {
    +
    303 need_to_convert = false;
    +
    304 }
    +
    305
    +
    306 switch (data_type_) {
    + +
    308 int64_t channel = 0;
    +
    309 valid = ChannelValue(channel);
    +
    310
    +
    311 if (need_to_convert) {
    +
    312 auto temp = static_cast<double>(channel);
    +
    313 temp *= scale_;
    +
    314 temp += offset_;
    +
    315 value = static_cast<T>(temp);
    +
    316 } else {
    +
    317 value = static_cast<T>(channel);
    +
    318 }
    +
    319 break;
    +
    320 }
    +
    321
    + +
    323 uint64_t channel = 0;
    +
    324 valid = ChannelValue(channel);
    +
    325 if (need_to_convert) {
    +
    326 auto temp = static_cast<double>(channel);
    +
    327 temp *= scale_;
    +
    328 temp += offset_;
    +
    329 value = static_cast<T>(temp);
    +
    330 } else {
    +
    331 value = static_cast<T>(channel);
    +
    332 }
    +
    333 break;
    +
    334 }
    +
    335
    + +
    337 float channel = 0;
    +
    338 valid = ChannelValue(channel);
    +
    339 if (need_to_convert) {
    +
    340 auto temp = static_cast<double>(channel);
    +
    341 temp *= scale_;
    +
    342 temp += offset_;
    +
    343 value = static_cast<T>(temp);
    +
    344 } else {
    +
    345 value = static_cast<T>(channel);
    +
    346 }
    +
    347 break;
    +
    348 }
    +
    349
    + +
    351 double channel = 0;
    +
    352 valid = ChannelValue(channel);
    +
    353 if (need_to_convert) {
    +
    354 auto temp = channel;
    +
    355 temp *= scale_;
    +
    356 temp += offset_;
    +
    357 value = static_cast<T>(temp);
    +
    358 } else {
    +
    359 value = static_cast<T>(channel);
    +
    360 }
    +
    361 break;
    +
    362 }
    +
    363
    +
    364 default:
    +
    365 break;
    +
    366 }
    +
    367 return valid;
    +
    368}
    +
    369
    +
    371template <>
    +
    372bool Signal::EngValue(std::string& value) const;
    +
    373
    +
    374} // namespace dbc
    +
    All DBC network objects may have attributes attached to them.
    +
    Support class for handling attributes of network objects.
    Definition: attribute.h:49
    +
    Interface that handles samples. Internal usage.
    Definition: isampleobserver.h:13
    +
    Interface against a DBC signal configuration.
    Definition: signal.h:68
    +
    void BitLength(size_t length)
    Sets the bit length.
    Definition: signal.h:111
    +
    int MuxValue() const
    Returns the multiplexor value.
    Definition: signal.h:103
    +
    size_t BitLength() const
    Returns the bit length.
    Definition: signal.h:113
    +
    bool EngValue(T &value) const
    Returns the scaled engineering value.
    Definition: signal.h:293
    +
    std::string DataTypeAsString() const
    Returns the data type as text.
    +
    double Offset() const
    Return offset.
    Definition: signal.h:124
    +
    void Offset(double offset)
    Sets the offset.
    Definition: signal.h:123
    +
    void Mux(MuxType type)
    Sets the multiplexer type.
    Definition: signal.h:95
    +
    void Max(double max)
    Sets the max range.
    Definition: signal.h:129
    +
    void SampleCanId(uint32_t can_id)
    Sets the CAN ID for the sample.
    Definition: signal.h:177
    +
    void SampleTime(uint64_t ns1970)
    Sets the sample time.
    Definition: signal.h:172
    +
    Attribute & CreateAttribute(const Attribute &definition)
    Creates an attribute.
    +
    uint64_t SampleCanId() const
    Returns the CAN ID for latest sample.
    Definition: signal.h:179
    +
    bool IsMultiplexed() const
    True if multiplexed signal.
    +
    uint64_t MessageId() const
    Returns the message ID that the signal belongs to.
    Definition: signal.h:150
    +
    const std::vector< Attribute > & Attributes() const
    Returns the attribute list.
    Definition: signal.h:143
    +
    size_t SampleCounter() const
    Returns the sample counter.
    Definition: signal.h:169
    +
    std::string GetEnumString(int64_t index) const
    Returns the enumerate text for an index.
    +
    bool Valid() const
    Trie if value is valid.
    Definition: signal.h:182
    +
    void MuxValue(int value)
    Sets the multiplexor value.
    Definition: signal.h:101
    +
    void Unit(const std::string &unit)
    Sets the unit of measure.
    Definition: signal.h:78
    +
    void AttachObserver(ISampleObserver *observer) const
    Attach a sample observer.
    +
    const std::vector< std::string > & Receivers() const
    Return the receiver list.
    +
    bool ChannelValue(T &value) const
    Returns the channel value.
    Definition: signal.h:232
    +
    virtual ~Signal()
    Destructor.
    +
    ExtendedMux & GetExtendedMux()
    Creates an extended multiplexor struct.
    +
    void Scale(double scale)
    Sets the scaling constant.
    Definition: signal.h:120
    +
    void ResetSampleCounter() const
    Resets the sample counter.
    Definition: signal.h:165
    +
    size_t BitStart() const
    Returns the start bit.
    Definition: signal.h:108
    +
    uint64_t SampleTime() const
    Returns the sample time.
    Definition: signal.h:174
    +
    const std::string & Unit() const
    Returns the unit of measure.
    Definition: signal.h:80
    +
    void DetachObserver(const ISampleObserver *observer) const
    Detach a sample observer.
    +
    MuxType Mux() const
    Returns the multiplexer type.
    Definition: signal.h:97
    +
    void Name(const std::string &name)
    Sets the signal name.
    Definition: signal.h:73
    +
    void BitStart(size_t start)
    Sets the start bit.
    Definition: signal.h:106
    +
    void EnumList(const std::map< int64_t, std::string > &enum_list)
    Sets the enumeration.
    +
    double Scale() const
    Scaling constant.
    Definition: signal.h:121
    +
    SignalDataType DataType() const
    Returns the data type.
    Definition: signal.h:90
    +
    void Receivers(const std::vector< std::string > &receiver_list)
    Sets the receiver list.
    +
    void Min(double min)
    Sets min range.
    Definition: signal.h:126
    +
    void Valid(bool valid)
    Set to true if valid value.
    Definition: signal.h:181
    +
    const std::string & Comment() const
    Returns the descriptive text.
    Definition: signal.h:85
    +
    const std::map< int64_t, std::string > & EnumList() const
    Returns the enumeration.
    +
    void DataType(SignalDataType type)
    Sets the data type.
    Definition: signal.h:88
    +
    std::string MuxAsString() const
    Returns the multiplexer type as text.
    +
    bool LittleEndian() const
    Return true if little endian byte order.
    Definition: signal.h:118
    +
    void StepSampleCounter() const
    Steps the sample counter.
    Definition: signal.h:167
    +
    const std::string & Name() const
    Returns the signal name.
    Definition: signal.h:75
    +
    double Max() const
    Max range.
    Definition: signal.h:130
    +
    double Min() const
    Min range.
    Definition: signal.h:127
    +
    void Comment(const std::string &comment)
    Sets the descriptive text.
    Definition: signal.h:83
    +
    void MessageId(uint64_t message_id)
    Sets the signals message ID.
    Definition: signal.h:148
    +
    void ParseMessage(const std::vector< uint8_t > &message, uint64_t ns1970, uint32_t can_id)
    Parse out the signal value from a message data buffer.
    +
    void LittleEndian(bool endian)
    Set true if little endian byte order.
    Definition: signal.h:116
    +
    Internal object that define an observer interface that handle samples.
    +
    Main namespace for the DBC library.
    Definition: attribute.h:13
    +
    SignalDataType
    Signal data type.
    Definition: signal.h:35
    +
    @ SignedData
    Signed integer.
    +
    @ DoubleData
    Double value.
    +
    @ UnsignedData
    Unsigned integer.
    +
    @ FloatData
    Float value.
    +
    MuxType
    Multiplexer type.
    Definition: signal.h:48
    +
    @ Multiplexor
    Multiplexor signal.
    +
    @ Multiplexed
    Multiplexed signal.
    +
    @ NotMultiplexed
    Normal signal.
    +
    @ ExtendedMultiplexor
    Extended multiplexor signal.
    +
    std::pair< size_t, size_t > RangePair
    Min and Max range definition.
    Definition: signal.h:56
    +
    Support function for the extended multiplexor functionality.
    Definition: signal.h:59
    +
    bool InRange(size_t value) const
    True if value is active.
    +
    std::vector< RangePair > range_list
    Active range for the multiplexor.
    Definition: signal.h:61
    +
    std::string multiplexor
    Signal name of the multiplexor.
    Definition: signal.h:60
    +
    Support function that holds the channel value for a signal.
    Definition: signal.h:18
    +
    bool valid
    True if the value is valid.
    Definition: signal.h:19
    +
    void Clear()
    Resets the value.
    Definition: signal.h:25
    +
    std::vector< uint8_t > array_value
    Array or string value.
    Definition: signal.h:23
    +
    int64_t signed_value
    Integer value.
    Definition: signal.h:20
    +
    uint64_t unsigned_value
    Unsigned value.
    Definition: signal.h:21
    +
    double float_value
    Float value.
    Definition: signal.h:22
    +
    + + + + diff --git a/docs/manual/html/signalgroup_8h.html b/docs/manual/html/signalgroup_8h.html new file mode 100644 index 0000000..cfeb4ff --- /dev/null +++ b/docs/manual/html/signalgroup_8h.html @@ -0,0 +1,132 @@ + + + + + + + +DbcLib: include/dbc/signalgroup.h File Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    signalgroup.h File Reference
    +
    +
    + +

    Defines a signal group. +More...

    +
    #include <cstdint>
    +#include <string>
    +#include <vector>
    +
    +Include dependency graph for signalgroup.h:
    +
    +
    + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dbc::SignalGroup
     Interface against a signal group. More...
     
    + + + + +

    +Namespaces

    namespace  dbc
     Main namespace for the DBC library.
     
    +
    + + + + diff --git a/docs/manual/html/signalgroup_8h__dep__incl.map b/docs/manual/html/signalgroup_8h__dep__incl.map new file mode 100644 index 0000000..9ba70b7 --- /dev/null +++ b/docs/manual/html/signalgroup_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/manual/html/signalgroup_8h__dep__incl.md5 b/docs/manual/html/signalgroup_8h__dep__incl.md5 new file mode 100644 index 0000000..b8e12d9 --- /dev/null +++ b/docs/manual/html/signalgroup_8h__dep__incl.md5 @@ -0,0 +1 @@ +81421218684eb70dea946a93743e501e \ No newline at end of file diff --git a/docs/manual/html/signalgroup_8h__dep__incl.png b/docs/manual/html/signalgroup_8h__dep__incl.png new file mode 100644 index 0000000..8e0c068 Binary files /dev/null and b/docs/manual/html/signalgroup_8h__dep__incl.png differ diff --git a/docs/manual/html/signalgroup_8h__incl.map b/docs/manual/html/signalgroup_8h__incl.map new file mode 100644 index 0000000..41e9033 --- /dev/null +++ b/docs/manual/html/signalgroup_8h__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/manual/html/signalgroup_8h__incl.md5 b/docs/manual/html/signalgroup_8h__incl.md5 new file mode 100644 index 0000000..3da5a47 --- /dev/null +++ b/docs/manual/html/signalgroup_8h__incl.md5 @@ -0,0 +1 @@ +052ab1530b6a0840686f451771dc7010 \ No newline at end of file diff --git a/docs/manual/html/signalgroup_8h__incl.png b/docs/manual/html/signalgroup_8h__incl.png new file mode 100644 index 0000000..b18e96c Binary files /dev/null and b/docs/manual/html/signalgroup_8h__incl.png differ diff --git a/docs/manual/html/signalgroup_8h_source.html b/docs/manual/html/signalgroup_8h_source.html new file mode 100644 index 0000000..9348c35 --- /dev/null +++ b/docs/manual/html/signalgroup_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +DbcLib: include/dbc/signalgroup.h Source File + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    signalgroup.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * Copyright 2022 Ingemar Hedvall
    +
    3 * SPDX-License-Identifier: MIT
    +
    4 */
    +
    8#pragma once
    +
    9#include <cstdint>
    +
    10#include <string>
    +
    11#include <vector>
    +
    12namespace dbc {
    +
    13
    + +
    16 public:
    +
    18 void MessageId(uint64_t message_id) { message_id_ = message_id; }
    +
    20 [[nodiscard]] uint64_t MessageId() const { return message_id_; }
    +
    21
    +
    22 void Name( const std::string& name) { name_ = name; }
    +
    23 [[nodiscard]] const std::string& Name() const { return name_; }
    +
    24
    +
    25 void Repetition(size_t rep) { repetition_ = rep; }
    +
    26 [[nodiscard]] size_t Repetition() const {return repetition_;}
    +
    27
    +
    29 void Signals(const std::vector<std::string>& signals );
    +
    31 [[nodiscard]] const std::vector<std::string>& Signals() const;
    +
    32
    +
    33 private:
    +
    34 uint64_t message_id_ = 0;
    +
    35 std::string name_;
    +
    36 size_t repetition_ = 1;
    +
    37 std::vector<std::string> signal_list_;
    +
    38};
    +
    39
    +
    40} // namespace dbc
    +
    Interface against a signal group.
    Definition: signalgroup.h:15
    +
    uint64_t MessageId() const
    Returns the message ID.
    Definition: signalgroup.h:20
    +
    void Signals(const std::vector< std::string > &signals)
    Returns a list of signal names.
    +
    const std::vector< std::string > & Signals() const
    Returns a list of signal names.
    +
    const std::string & Name() const
    Name.
    Definition: signalgroup.h:23
    +
    void Name(const std::string &name)
    Sets the name.
    Definition: signalgroup.h:22
    +
    void Repetition(size_t rep)
    Sets the repetition.
    Definition: signalgroup.h:25
    +
    void MessageId(uint64_t message_id)
    Sets the message ID.
    Definition: signalgroup.h:18
    +
    size_t Repetition() const
    Repetition.
    Definition: signalgroup.h:26
    +
    Main namespace for the DBC library.
    Definition: attribute.h:13
    +
    + + + + diff --git a/docs/manual/html/signalobserver_8h.html b/docs/manual/html/signalobserver_8h.html new file mode 100644 index 0000000..33de603 --- /dev/null +++ b/docs/manual/html/signalobserver_8h.html @@ -0,0 +1,138 @@ + + + + + + + +DbcLib: include/dbc/signalobserver.h File Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    signalobserver.h File Reference
    +
    +
    + +

    The sample observer holds sample values for a signal. +More...

    +
    #include "dbc/isampleobserver.h"
    +#include "dbc/signal.h"
    +#include <utility>
    +#include <memory>
    +
    +Include dependency graph for signalobserver.h:
    +
    +
    + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dbc::SignalObserver
     The sample observer hold a number of samples. More...
     
    + + + + +

    +Namespaces

    namespace  dbc
     Main namespace for the DBC library.
     
    + + + + +

    +Typedefs

    +using dbc::SignalObserverList = std::vector< std::unique_ptr< SignalObserver > >
     List of observer.
     
    +
    + + + + diff --git a/docs/manual/html/signalobserver_8h__incl.map b/docs/manual/html/signalobserver_8h__incl.map new file mode 100644 index 0000000..e1f43b8 --- /dev/null +++ b/docs/manual/html/signalobserver_8h__incl.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/manual/html/signalobserver_8h__incl.md5 b/docs/manual/html/signalobserver_8h__incl.md5 new file mode 100644 index 0000000..239c99c --- /dev/null +++ b/docs/manual/html/signalobserver_8h__incl.md5 @@ -0,0 +1 @@ +db4ba0318e26f39235fd32550c5de27f \ No newline at end of file diff --git a/docs/manual/html/signalobserver_8h__incl.png b/docs/manual/html/signalobserver_8h__incl.png new file mode 100644 index 0000000..c924a19 Binary files /dev/null and b/docs/manual/html/signalobserver_8h__incl.png differ diff --git a/docs/manual/html/signalobserver_8h_source.html b/docs/manual/html/signalobserver_8h_source.html new file mode 100644 index 0000000..fda7bba --- /dev/null +++ b/docs/manual/html/signalobserver_8h_source.html @@ -0,0 +1,342 @@ + + + + + + + +DbcLib: include/dbc/signalobserver.h Source File + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    signalobserver.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2* Copyright 2022 Ingemar Hedvall
    +
    3* SPDX-License-Identifier: MIT
    +
    4 */
    +
    8#pragma once
    + +
    10#include "dbc/signal.h"
    +
    11#include <utility>
    +
    12#include <memory>
    +
    13
    +
    14namespace dbc {
    + +
    24 public:
    +
    25 explicit SignalObserver(const Signal& signal);
    +
    26 SignalObserver() = delete;
    +
    27 ~SignalObserver() override;
    +
    28
    +
    30 void MaxSamples(size_t max_nof_samples);
    +
    32 [[nodiscard]] size_t MaxSamples() const { return value_list_.size();}
    +
    33
    +
    35 [[nodiscard]] const Signal& GetSignal() const {return signal_;}
    +
    36
    +
    38 [[nodiscard]] uint64_t Time(size_t index) const;
    +
    39
    +
    41 [[nodiscard]] uint32_t CanId(size_t index) const;
    +
    42
    +
    52 template <typename V>
    +
    53 bool ChannelValue(size_t index, uint64_t& ns1970, V& value) const;
    +
    54
    +
    64 template <typename V>
    +
    65 bool EngValue(size_t index, uint64_t& ns1970, V& value) const;
    +
    66
    + +
    68
    +
    69 [[nodiscard]] size_t FirstIndex() const;
    +
    70 [[nodiscard]] size_t LastIndex() const;
    +
    72 [[nodiscard]] size_t NofSamples() const {return nof_samples_;}
    +
    74 [[nodiscard]] size_t NofValidSamples() const;
    +
    75
    +
    77 [[nodiscard]] size_t SampleToIndex(size_t sample) const;
    +
    78
    +
    80 [[nodiscard]] std::pair<size_t, bool> TimeToIndex(uint64_t time) const;
    +
    81
    +
    82 void DetachObserver() override;
    +
    83 void OnSample() override;
    +
    84
    +
    85 protected:
    +
    86 private:
    +
    88 struct ChannelSample {
    +
    89 uint64_t ns1970 = 0;
    +
    90 uint32_t can_id = 0;
    +
    91 SignalValue value;
    +
    92
    +
    94 [[nodiscard]] uint8_t Source() const {
    +
    95 return static_cast<uint8_t>(can_id & 0xFF);
    +
    96 }
    +
    97 };
    +
    98 const Signal& signal_;
    +
    99 std::vector<ChannelSample> value_list_;
    +
    100
    +
    101 size_t sample_index_ = 0;
    +
    102 size_t nof_samples_ = 0;
    +
    103 bool attached_ = false;
    +
    104};
    +
    105
    +
    106template <typename V>
    +
    107bool SignalObserver::ChannelValue(size_t index, uint64_t& ns1970,
    +
    108 V& value) const {
    +
    109 if (index >= value_list_.size()) {
    +
    110 return false;
    +
    111 }
    +
    112 const auto& sample = value_list_[index];
    +
    113 bool valid = sample.value.valid;
    +
    114 ns1970 = sample.ns1970;
    +
    115
    +
    116 value = {};
    +
    117
    +
    118 switch (signal_.DataType()) {
    + +
    120 try {
    +
    121 const auto temp = sample.value.signed_value;
    +
    122 value = static_cast<V>(temp);
    +
    123 } catch (const std::exception&) {
    +
    124 valid = false;
    +
    125 }
    +
    126 break;
    +
    127 }
    +
    128
    + +
    130 size_t bytes = signal_.BitLength() / 8;
    +
    131 if ((signal_.BitLength() % 8) != 0) {
    +
    132 ++bytes;
    +
    133 }
    +
    134 if (bytes > 8) {
    +
    135 valid = false;
    +
    136 } else {
    +
    137 try {
    +
    138 const auto temp = sample.value.unsigned_value;
    +
    139 value = static_cast<V>(temp);
    +
    140 } catch (const std::exception&) {
    +
    141 valid = false;
    +
    142 }
    +
    143 }
    +
    144 break;
    +
    145 }
    +
    146
    + + +
    149 try {
    +
    150 const auto temp = sample.value.float_value;
    +
    151 value = static_cast<V>(temp);
    +
    152 } catch (const std::exception&) {
    +
    153 valid = false;
    +
    154 }
    +
    155 break;
    +
    156 }
    +
    157
    +
    158 default:
    +
    159 break;
    +
    160 }
    +
    161 return valid;
    +
    162}
    +
    164template <>
    +
    165bool SignalObserver::ChannelValue(size_t index, uint64_t& ns1970,
    +
    166 std::string& value) const;
    +
    167
    +
    168template <typename V>
    +
    169bool SignalObserver::EngValue(size_t index, uint64_t& ns1970,
    +
    170 V& value) const {
    +
    171 if (index >= value_list_.size()) {
    +
    172 return false;
    +
    173 }
    +
    174 const auto& sample = value_list_[index];
    +
    175 bool valid = sample.value.valid;
    +
    176 ns1970 = sample.ns1970;
    +
    177
    +
    178 value = {};
    +
    179
    +
    180 bool need_to_convert = true;
    +
    181 // If it is an enumerate. We could convert the enum string but that's weird.
    +
    182 if (!signal_.EnumList().empty()) {
    +
    183 need_to_convert = false;
    +
    184 }
    +
    185 // Avoid truncation
    +
    186 if (signal_.Scale() == 1.0 && signal_.Offset() == 0) {
    +
    187 need_to_convert = false;
    +
    188 }
    +
    189
    +
    190 switch (signal_.DataType()) {
    + +
    192 int64_t channel = 0;
    +
    193 valid = ChannelValue(index, ns1970, channel);
    +
    194
    +
    195 if (need_to_convert) {
    +
    196 auto temp = static_cast<double>(channel);
    +
    197 temp *= signal_.Scale();
    +
    198 temp += signal_.Offset();
    +
    199 value = static_cast<V>(temp);
    +
    200 } else {
    +
    201 value = static_cast<V>(channel);
    +
    202 }
    +
    203 break;
    +
    204 }
    +
    205
    + +
    207 uint64_t channel = 0;
    +
    208 valid = ChannelValue(index, ns1970, channel);
    +
    209 if (need_to_convert) {
    +
    210 auto temp = static_cast<double>(channel);
    +
    211 temp *= signal_.Scale();
    +
    212 temp += signal_.Offset();
    +
    213 value = static_cast<V>(temp);
    +
    214 } else {
    +
    215 value = static_cast<V>(channel);
    +
    216 }
    +
    217 break;
    +
    218 }
    +
    219
    + +
    221 float channel = 0;
    +
    222 valid = ChannelValue(index, ns1970, channel);
    +
    223 if (need_to_convert) {
    +
    224 auto temp = static_cast<double>(channel);
    +
    225 temp *= signal_.Scale();
    +
    226 temp += signal_.Offset();
    +
    227 value = static_cast<V>(temp);
    +
    228 } else {
    +
    229 value = static_cast<V>(channel);
    +
    230 }
    +
    231 break;
    +
    232 }
    +
    233
    + +
    235 double channel = 0;
    +
    236 valid = ChannelValue(index, ns1970, channel);
    +
    237 if (need_to_convert) {
    +
    238 auto temp = channel;
    +
    239 temp *= signal_.Scale();
    +
    240 temp += signal_.Offset();
    +
    241 value = static_cast<V>(temp);
    +
    242 } else {
    +
    243 value = static_cast<V>(channel);
    +
    244 }
    +
    245 break;
    +
    246 }
    +
    247
    +
    248 default:
    +
    249 break;
    +
    250 }
    +
    251 return valid;
    +
    252}
    +
    253
    +
    255template <>
    +
    256bool SignalObserver::EngValue(size_t index, uint64_t& ns1970,
    +
    257 std::string& value) const;
    +
    258
    +
    260using SignalObserverList = std::vector<std::unique_ptr<SignalObserver>>;
    +
    261
    +
    262} // namespace dbc
    +
    Interface that handles samples. Internal usage.
    Definition: isampleobserver.h:13
    +
    Interface against a DBC signal configuration.
    Definition: signal.h:68
    +
    void BitLength(size_t length)
    Sets the bit length.
    Definition: signal.h:111
    +
    void Offset(double offset)
    Sets the offset.
    Definition: signal.h:123
    +
    void Scale(double scale)
    Sets the scaling constant.
    Definition: signal.h:120
    +
    void EnumList(const std::map< int64_t, std::string > &enum_list)
    Sets the enumeration.
    +
    void DataType(SignalDataType type)
    Sets the data type.
    Definition: signal.h:88
    +
    The sample observer hold a number of samples.
    Definition: signalobserver.h:23
    +
    void OnSample() override
    On sample callback handler.
    +
    size_t NofValidSamples() const
    Returns number of valid samples.
    +
    uint64_t Time(size_t index) const
    Returns the absolute time for a sample.
    +
    void ResetSampleIndex()
    Reset the sample index.
    +
    bool ChannelValue(size_t index, uint64_t &ns1970, V &value) const
    Returns the unscaled signal value.
    Definition: signalobserver.h:107
    +
    size_t FirstIndex() const
    First sample.
    +
    SignalObserver()=delete
    Default constructor.
    +
    void MaxSamples(size_t max_nof_samples)
    Sets the maximum number of samples.
    +
    ~SignalObserver() override
    Default destructor.
    +
    void DetachObserver() override
    Detach an observer.
    +
    const Signal & GetSignal() const
    Returns the signal object.
    Definition: signalobserver.h:35
    +
    std::pair< size_t, bool > TimeToIndex(uint64_t time) const
    Sample time to internal index.
    +
    size_t MaxSamples() const
    Returns the max number of samples.
    Definition: signalobserver.h:32
    +
    size_t NofSamples() const
    Returns number of samples.
    Definition: signalobserver.h:72
    +
    uint32_t CanId(size_t index) const
    Returns the CAN ID for a sample.
    +
    bool EngValue(size_t index, uint64_t &ns1970, V &value) const
    Returns the scaled signal value.
    Definition: signalobserver.h:169
    +
    size_t SampleToIndex(size_t sample) const
    Sample number (0..) to internal index.
    +
    SignalObserver(const Signal &signal)
    Constructor.
    +
    size_t LastIndex() const
    Last sample.
    +
    Internal object that define an observer interface that handle samples.
    +
    Main namespace for the DBC library.
    Definition: attribute.h:13
    +
    @ SignedData
    Signed integer.
    +
    @ DoubleData
    Double value.
    +
    @ UnsignedData
    Unsigned integer.
    +
    @ FloatData
    Float value.
    +
    std::vector< std::unique_ptr< SignalObserver > > SignalObserverList
    List of observer.
    Definition: signalobserver.h:260
    +
    Interface against a DBC signal configuration.
    +
    Support function that holds the channel value for a signal.
    Definition: signal.h:18
    +
    + + + + diff --git a/docs/manual/html/splitbar.png b/docs/manual/html/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/docs/manual/html/splitbar.png differ diff --git a/docs/manual/html/splitbard.png b/docs/manual/html/splitbard.png new file mode 100644 index 0000000..8367416 Binary files /dev/null and b/docs/manual/html/splitbard.png differ diff --git a/docs/manual/html/structdbc_1_1_extended_mux-members.html b/docs/manual/html/structdbc_1_1_extended_mux-members.html new file mode 100644 index 0000000..df6a5ba --- /dev/null +++ b/docs/manual/html/structdbc_1_1_extended_mux-members.html @@ -0,0 +1,93 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dbc::ExtendedMux Member List
    +
    +
    + +

    This is the complete list of members for dbc::ExtendedMux, including all inherited members.

    + + + + +
    InRange(size_t value) constdbc::ExtendedMux
    multiplexordbc::ExtendedMux
    range_listdbc::ExtendedMux
    + + + + diff --git a/docs/manual/html/structdbc_1_1_extended_mux.html b/docs/manual/html/structdbc_1_1_extended_mux.html new file mode 100644 index 0000000..209fa83 --- /dev/null +++ b/docs/manual/html/structdbc_1_1_extended_mux.html @@ -0,0 +1,118 @@ + + + + + + + +DbcLib: dbc::ExtendedMux Struct Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dbc::ExtendedMux Struct Reference
    +
    +
    + +

    Support function for the extended multiplexor functionality. +

    + +

    #include <signal.h>

    + + + + + +

    +Public Member Functions

    +bool InRange (size_t value) const
     True if value is active.
     
    + + + + + + + +

    +Public Attributes

    +std::string multiplexor
     Signal name of the multiplexor.
     
    +std::vector< RangePairrange_list
     Active range for the multiplexor.
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/manual/html/structdbc_1_1_signal_value-members.html b/docs/manual/html/structdbc_1_1_signal_value-members.html new file mode 100644 index 0000000..3b8cffa --- /dev/null +++ b/docs/manual/html/structdbc_1_1_signal_value-members.html @@ -0,0 +1,96 @@ + + + + + + + +DbcLib: Member List + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dbc::SignalValue Member List
    +
    + + + + + diff --git a/docs/manual/html/structdbc_1_1_signal_value.html b/docs/manual/html/structdbc_1_1_signal_value.html new file mode 100644 index 0000000..d40b744 --- /dev/null +++ b/docs/manual/html/structdbc_1_1_signal_value.html @@ -0,0 +1,130 @@ + + + + + + + +DbcLib: dbc::SignalValue Struct Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    DbcLib 1.0 +
    +
    CAN DBC C++ library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dbc::SignalValue Struct Reference
    +
    +
    + +

    Support function that holds the channel value for a signal. +

    + +

    #include <signal.h>

    + + + + + +

    +Public Member Functions

    +void Clear ()
     Resets the value.
     
    + + + + + + + + + + + + + + + + +

    +Public Attributes

    +bool valid = false
     True if the value is valid.
     
    +int64_t signed_value = 0
     Integer value.
     
    +uint64_t unsigned_value = 0
     Unsigned value.
     
    +double float_value = 0
     Float value.
     
    +std::vector< uint8_t > array_value
     Array or string value.
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/manual/html/sync_off.png b/docs/manual/html/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/docs/manual/html/sync_off.png differ diff --git a/docs/manual/html/sync_on.png b/docs/manual/html/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/docs/manual/html/sync_on.png differ diff --git a/docs/manual/html/tab_a.png b/docs/manual/html/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/docs/manual/html/tab_a.png differ diff --git a/docs/manual/html/tab_ad.png b/docs/manual/html/tab_ad.png new file mode 100644 index 0000000..e34850a Binary files /dev/null and b/docs/manual/html/tab_ad.png differ diff --git a/docs/manual/html/tab_b.png b/docs/manual/html/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/docs/manual/html/tab_b.png differ diff --git a/docs/manual/html/tab_bd.png b/docs/manual/html/tab_bd.png new file mode 100644 index 0000000..91c2524 Binary files /dev/null and b/docs/manual/html/tab_bd.png differ diff --git a/docs/manual/html/tab_h.png b/docs/manual/html/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/docs/manual/html/tab_h.png differ diff --git a/docs/manual/html/tab_hd.png b/docs/manual/html/tab_hd.png new file mode 100644 index 0000000..2489273 Binary files /dev/null and b/docs/manual/html/tab_hd.png differ diff --git a/docs/manual/html/tab_s.png b/docs/manual/html/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/docs/manual/html/tab_s.png differ diff --git a/docs/manual/html/tab_sd.png b/docs/manual/html/tab_sd.png new file mode 100644 index 0000000..757a565 Binary files /dev/null and b/docs/manual/html/tab_sd.png differ diff --git a/docs/manual/html/tabs.css b/docs/manual/html/tabs.css new file mode 100644 index 0000000..71c8a47 --- /dev/null +++ b/docs/manual/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/doxygen/dbclib.css b/doxygen/dbclib.css new file mode 100644 index 0000000..5c54408 --- /dev/null +++ b/doxygen/dbclib.css @@ -0,0 +1,8 @@ + +hr.footer { + display: none; +} + +.footer { + display: none; +} \ No newline at end of file diff --git a/doxygen/mainpage.dox b/doxygen/mainpage.dox index 29f7c1c..f444888 100644 --- a/doxygen/mainpage.dox +++ b/doxygen/mainpage.dox @@ -1,50 +1,22 @@ /* - * Copyright 2022 Ingemar Hedvall + * Copyright 2023 Ingemar Hedvall * SPDX-License-Identifier: MIT */ /** -\mainpage MDF Library +\mainpage DBC C++ Library ##Summary -The MDF Library is a C++ interface against ASAM MDF files. It supports version 3 and 4 of the files. -MDF files are de-facto standard for measurement data files within the automotive industry. It is well -suited for long-term storage of data. +The DBC C++ library is a C++ interface against CAN DBC files. The project consist of the following main components. - C++ Library with all main functionality. -- MDF Viewer GUI application that simply display the content of MDF files. - -## Measurement Data File -The MDF file consist of several linked file block. -For an overview of MDF files see [ASAM MDF wiki](https://www.asam.net/standards/detail/mdf/wiki/). - -The first block is an ID block of 64 bytes. The identification block, -just defines that this is a MDF file and its version. - -The next block is the important HD block. The header block is the main block of the file and holds -the links to all other blocks. It have links the following blocks. - -- Meta Data Blocks. In version 4, the meta data about the measurement can embedded into the file. -- History Blocks. Describes who and what created or modified the file. -- Measurement Data Blocks. Called DG blocks and holds data and channel information. -- Attachment Blocks. Can be referenced or embedded into the file. -- Event Blocks. Events and general messages that happened during the measurement. -- Channel Hierarchy Block. Describe the logical structure for a channel. - -##Building the project - -The project uses CMAKE for building. The following third-party libraries are used and -needs to be downloaded and built. - -- Util Library. Automatically fetched from GitHub. -- Boost Library. Set the 'Boost_ROOT' variable to the Boost root path. -- Expat Library. Set the 'EXPAT_ROOT' variable to the expat root path. -- OpenSSL Library. Set the 'OPENSSL_ROOT' variable to the OpenSSL root path. -- ZLIB Library. Set the 'ZLIB_ROOT' variable to the ZLIB root path. -- WxWidgets Library. Is required if the GUI application should be built. -- Doxygen's application. Is required if the documentation should be built. -- Google Test Library. Is required for running and build the unit +- DBC Viewer GUI application that simply display the content of DBC files. + +The DBC file defines a CAN network. The network consist of devices (nodes), messages and signals. + +The C++ library can also parse a CAN message into signal values. Additional the library support +adding multiple CAN messages into signal sample values. */ diff --git a/doxygen/namespaces.dox b/doxygen/namespaces.dox index ae66ea9..7aa7e9a 100644 --- a/doxygen/namespaces.dox +++ b/doxygen/namespaces.dox @@ -1,13 +1,13 @@ /* - * Copyright 2022 Ingemar Hedvall + * Copyright 2023 Ingemar Hedvall * SPDX-License-Identifier: MIT */ -/** \brief Main namespace for the MDF library. +/** \brief Main namespace for the DBC library. * - * Main namespace for all MDF library classes and functions. + * Main namespace for the DBC C++ library classes and functions. */ -namespace mdf { +namespace dbc { } diff --git a/img/document.ico b/img/document.ico new file mode 100644 index 0000000..db23201 Binary files /dev/null and b/img/document.ico differ diff --git a/img/mdflib.ico b/img/mdflib.ico new file mode 100644 index 0000000..d187a54 Binary files /dev/null and b/img/mdflib.ico differ diff --git a/img/mdflib.png b/img/mdflib.png new file mode 100644 index 0000000..bca6514 Binary files /dev/null and b/img/mdflib.png differ diff --git a/include/dbc/attribute.h b/include/dbc/attribute.h index 2601f76..3f97793 100644 --- a/include/dbc/attribute.h +++ b/include/dbc/attribute.h @@ -2,71 +2,103 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file attribute.h + * \brief All DBC network objects may have attributes attached to them. + */ #pragma once #include #include #include namespace dbc { - +/** \brief Define what type of network object the attribute is valid for. + * + */ enum class AttributeType : int { - DbcNetwork, - DbcNode, - DbcMessage, - DbcSignal, - EnvironmentVariable, - NodeSignalRelation, - NodeMessageRelation, + DbcNetwork, ///< Network attribute. + DbcNode, ///< Node/Device attribute. + DbcMessage, ///< Message attribute. + DbcSignal, ///< Signal attribute. + EnvironmentVariable, ///< Environment attribute + NodeSignalRelation, ///< Node signal relation attribute. + NodeMessageRelation, ///< Node message relation attribute. }; +/** \brief Data type of the attribute. + * + */ enum class AttributeValueType : int { - IntegerValue, - FloatValue, - StringValue, - EnumValue, - HexValue + IntegerValue, ///< Integer value. + FloatValue, ///< Floating point value. + StringValue, ///< Text value. + EnumValue, ///< Enumerate value. + HexValue ///< Hexa-decimal value. }; +/** \brief Support class for handling attributes of network objects. + * + * The Attribute class is a support class for handling attributes attached + * to DBC objects. + * + * The DBC file first specify a definition of an attribute. + * This definition defines range and data type i.e. a sort of template. + * + * Then the DBC file define the attribute that references a definition and + * has a value (constant). + */ class Attribute { public: + /** \brief Constructor for an attribute or definition. */ Attribute( AttributeType type, const std::string& name ); + /** \brief Sets the name of the attribute. */ void Name(const std::string& name) { name_ = name; } + /** \brief Retuns the attribute name. */ [[nodiscard]] const std::string& Name() const { return name_; } + /** \brief Sets the type of attribute. */ void Type(AttributeType type ) { type_ = type; } + /** \brief Return type of attribute. */ [[nodiscard]] AttributeType Type() const { return type_; } + /** \brief Sets the attribute data type. */ void ValueType(AttributeValueType type ) { value_type_ = type; } + /** \brief Returns the attribute data type. */ [[nodiscard]] AttributeValueType ValueType() const { return value_type_; } - std::string ValueTypeAsString() const; + /** \brief Returns the attribute data type as string. */ + [[nodiscard]] std::string ValueTypeAsString() const; - void Min(double min ) { min_ = min; } - [[nodiscard]] double Min() const { return min_; } + void Min(double min ) { min_ = min; } ///< Sets the min range + [[nodiscard]] double Min() const { return min_; } ///< Min range. - void Max(double max ) { max_ = max; } - [[nodiscard]] double Max() const { return max_; } + void Max(double max ) { max_ = max; } ///< Sets the max range. + [[nodiscard]] double Max() const { return max_; } ///< Max range. + /** \brief Sets an enumerate string list. */ void EnumList(const std::vector& list); + /** \brief Returns an enumerated string list. */ [[nodiscard]] const std::vector& EnumList() const; + /** \brief Sets the attribute value. */ template void Value(const T& value); + /** \brief Returns the attribute value. */ template - T Value() const; + [[nodiscard]] T Value() const; private: - AttributeType type_ = AttributeType::DbcNetwork; - std::string name_; - AttributeValueType value_type_ = AttributeValueType::StringValue; - double value_float_ = 0.0; - std::string value_string_; - std::vector enum_list_; - double min_ = 0.0; - double max_ = 0.0; + AttributeType type_ = AttributeType::DbcNetwork; ///< Attribute type + std::string name_; ///< Name of attribute. + AttributeValueType value_type_ = + AttributeValueType::StringValue; ///< Attribute data type. + double value_float_ = 0.0; ///< Attribute float value. + std::string value_string_; ///< Attribute text value. + std::vector enum_list_; ///< Attribute enumerate list. + double min_ = 0.0; ///< Min range. + double max_ = 0.0; ///< Max range. }; + template void Attribute::Value(const T& value) { try { @@ -99,11 +131,11 @@ void Attribute::Value(const T& value) { } } +/** \brief Sets an attribute string value. */ template<> void Attribute::Value(const std::string& value); - template T Attribute::Value() const { T value = {}; @@ -124,8 +156,7 @@ T Attribute::Value() const { return value; } - - +/** \brief Returns an attribute string value. */ template <> [[nodiscard]] std::string Attribute::Value() const; diff --git a/include/dbc/dbcfile.h b/include/dbc/dbcfile.h index f40be8d..3ec16c2 100644 --- a/include/dbc/dbcfile.h +++ b/include/dbc/dbcfile.h @@ -2,7 +2,9 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file dbcfile.h + * \brief The DBC file object is the main user object. + */ #pragma once #include #include @@ -11,35 +13,73 @@ namespace dbc { +/** \brief Main user object that is an interface against a DBC file. + * + * The DBC file is the only object the user shall create. It handle the parsing + * of the file. A DBC file defines nodes, messages and signals for one CAN + * network. + */ class DbcFile { public: + /** \brief Sets the file name. Full path required. */ void Filename(const std::string& filename) {filename_ = filename; } + /** \brief Returns the file name with full path. */ [[nodiscard]] const std::string& Filename() const {return filename_; } + /** \brief Returns the File name without path and extension. */ [[nodiscard]] std::string Name() const; + /** \brief Returns the last (parser) error text. */ [[nodiscard]] const std::string& LastError() const { return last_error_; } + + /** \brief Returns the network object. */ [[nodiscard]] Network* GetNetwork() { return network_.get(); } + /** \brief Returns the network object. */ [[nodiscard]] const Network* GetNetwork() const { return network_.get(); } + /** \brief Parses the DBC file. Returns true on success. */ [[nodiscard]] bool ParseFile(); + + /** \brief Start time of messages. + * + * The base time is the time of the first message. If not set, the + * AddMessage will set it to the first DBCMessage. + * @param ns1970 Nano-seconds since 1970. + */ void BaseTime(uint64_t ns1970) {base_time_ = ns1970;} + /** \brief Returns the base (start) time of first message. */ [[nodiscard]] uint64_t BaseTime() const {return base_time_;} + + /** \brief Sets the maximum message queue size. */ void SetMessageSize(size_t nof_messages); + /** \brief Adds q message to the message queue. */ void AddMessage(size_t index, const DbcMessage& message); + /** \brief Parses the message into signal values. */ bool ParseMessage(const DbcMessage& message); + /** \brief Resets the sample counter for all signals. */ void ResetSampleCounter() const; + /** \brief Reparse the message queue. + * + * This function is used to reparse the message queue. This function is + * used when the first parse message round just count number of samples + * while the next round, the user selects signals (SignalObserver) and + * reparse the message queue. + * + */ void ReparseMessageList(); private: + /** \brief Parses standard CAN messages. */ bool ParseStandardCAN(const DbcMessage& message); + /** \brief Parses J1939 messages. */ bool ParseJ1939(const DbcMessage& message); + /** \brief Parses NMEA2000 messages. */ bool ParseNMEA2000(const DbcMessage& message); std::string filename_; ///< Full path name mutable std::string last_error_; ///< Last error message - std::unique_ptr network_; - std::vector message_list_; - uint64_t base_time_ = 0; + std::unique_ptr network_; ///< Pointer to the network object. + std::vector message_list_; ///< List of CAN messages. + uint64_t base_time_ = 0; ///< Time that samples times are related to. }; } // namespace dbc diff --git a/include/dbc/dbcmessage.h b/include/dbc/dbcmessage.h index 62ad293..744e001 100644 --- a/include/dbc/dbcmessage.h +++ b/include/dbc/dbcmessage.h @@ -2,34 +2,54 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file dbcmessage.h + * \brief Wrapper around a CAN message. + */ #pragma once #include #include namespace dbc { +/** \brief Wrapper class around a CAN message. + * + * Simple support class that holds a CAN message. CAN message has a time, ID + * and none or more data bytes. This sound simple but there are several + * protocols on top of CAN that treat the CAN ID and its data bytes + * differently. + */ class DbcMessage { public: - DbcMessage() = default; + DbcMessage() = default; ///< Default constructor. + /** \brief Constructor that wraps a CAN message. + * + * Constructor that wraps a CAN message. + * @param time Nano-seconds since 1970. + * @param can_id 11/29-bit CAN ID. + * @param data CAN data bytes. + */ DbcMessage(uint64_t time, uint32_t can_id, std::vector data); - DbcMessage(const DbcMessage& message) = default; - void Time(uint64_t ns1970) {time_ = ns1970;} - [[nodiscard]] uint64_t Time() const {return time_;} + DbcMessage(const DbcMessage& message) = default; ///< Default destructor. + + + void Time(uint64_t ns1970) {time_ = ns1970;} ///< Sets the time. + [[nodiscard]] uint64_t Time() const {return time_;} ///< Message time. - void CanId(uint32_t can_id) {can_id_ = can_id;} - [[nodiscard]] uint32_t CanId() const {return can_id_;} + void CanId(uint32_t can_id) {can_id_ = can_id;} ///< Sets the CAN ID. + [[nodiscard]] uint32_t CanId() const {return can_id_;} ///< CAN ID. + /** \brief Sets the CAN data bytes. */ void Data(const std::vector& data) {data_ = data;} + /** \brief Returns the CAN data bytes. */ [[nodiscard]] const std::vector& Data() const {return data_;} - [[nodiscard]] uint32_t Pgn() const; - [[nodiscard]] uint8_t Priority() const; - [[nodiscard]] bool ExtendedDataPage() const; - [[nodiscard]] bool DataPage() const; - [[nodiscard]] uint8_t PduFormat() const; - [[nodiscard]] uint8_t PduSpecific() const; - [[nodiscard]] uint8_t Source() const; + [[nodiscard]] uint32_t Pgn() const; ///< PGN Program number + [[nodiscard]] uint8_t Priority() const; ///< Priority (0-8) + [[nodiscard]] bool ExtendedDataPage() const; ///< True if extended data page. + [[nodiscard]] bool DataPage() const; ///< True if data page. + [[nodiscard]] uint8_t PduFormat() const; ///< PDU format. + [[nodiscard]] uint8_t PduSpecific() const; ///< PDU specific. + [[nodiscard]] uint8_t Source() const; ///< Source number. private: uint64_t time_ = 0; ///< Nanoseconds since 1970 uint32_t can_id_ = 0; ///< 29-bit CAN ID diff --git a/include/dbc/envvar.h b/include/dbc/envvar.h index 0b8cbc0..8fd4db8 100644 --- a/include/dbc/envvar.h +++ b/include/dbc/envvar.h @@ -3,6 +3,9 @@ * SPDX-License-Identifier: MIT */ +/** \file envvar.h + * \brief Wrapper wrong environment variables. + */ #pragma once #include @@ -11,73 +14,88 @@ #include namespace dbc { - +/** \brief The variable data type. */ enum class EnvType : int { - IntegerType = 0, - FloatType = 1, - StringType = 2, - DataType = 3 + IntegerType = 0, ///< Integer variable. + FloatType = 1, ///< Floating point variable. + StringType = 2, ///< Text variable + DataType = 3 ///< Data type variable. }; +/** \brief Type of access. */ enum class AccessType : int { - Unrestricted = 0, - ReadOnly = 1, - WriteOnly = 2, - ReadWrite = 3 + Unrestricted = 0, ///< Unrestricted access. + ReadOnly = 1, ///< Read-only access. + WriteOnly = 2, ///< Write-only access. + ReadWrite = 3 ///< Read and write access. }; +/** \brief Wrapper around an environment DBC variable. */ class EnvVar { public: + /** \brief Sets the name. */ void Name(const std::string& name) { name_ = name; } + /** \brief Retuns the name. */ [[nodiscard]] const std::string& Name() const { return name_; } + /** \brief Sets the descriptive text. */ void Comment(const std::string& comment) { comment_ = comment;} + /** \brief Return the descriptive text. */ [[nodiscard]] const std::string& Comment() const { return comment_; } + /** \brief Sets the data type. */ void Type(EnvType type) { type_ = type; } + /** \brief Returns the data type. */ [[nodiscard]] EnvType Type() const { return type_; } + /** \brief Returns the data type as string. */ [[nodiscard]] std::string TypeAsString() const; - void Min(double min) { min_ = min; } - [[nodiscard]] double Min() const { return min_;} + void Min(double min) { min_ = min; } ///< Sets the min range + [[nodiscard]] double Min() const { return min_;} ///< Min range. - void Max(double max) {max_ = max;} - [[nodiscard]] double Max() const { return max_;} + void Max(double max) {max_ = max;} ///< Sets the max range. + [[nodiscard]] double Max() const { return max_;} ///< Max range. - void Unit(const std::string& unit) { unit_ = unit; } - [[nodiscard]] const std::string& Unit() const { return unit_; } + void Unit(const std::string& unit) { unit_ = unit; } ///< Sets the unit. + [[nodiscard]] const std::string& Unit() const { return unit_; } ///< Unit. + /** \brief Sets the initial value. */ void InitValue(double value) {init_value_ = value;} + /** \brief Returns the initial value. */ [[nodiscard]] double InitValue() const { return init_value_; } - void Ident(uint64_t ident) {ident_ = ident;} - [[nodiscard]] uint64_t Ident() const { return ident_;} + void Ident(uint64_t ident) {ident_ = ident;} ///< Sets the identity. + [[nodiscard]] uint64_t Ident() const { return ident_;} ///< Identity. - void Access(AccessType type) { access_type_ = type; } - [[nodiscard]] AccessType Access() const { return access_type_; } + void Access(AccessType type) { access_type_ = type; } ///< Sets the access. + [[nodiscard]] AccessType Access() const { return access_type_; } ///< Access + /** \brief Sets the node list. */ void NodeList(const std::vector& node_list) { node_list_ = node_list; } + /** \brief Returns the node list. */ [[nodiscard]] const std::vector& NodeList() const { return node_list_; } + /** \brief Sets the enumerate list. */ void EnumList(const std::map& enum_list); + /** \brief Returns the node list. */ [[nodiscard]] const std::map& EnumList() const; private: - std::string name_; - std::string comment_; - EnvType type_ = EnvType::IntegerType; - double min_ = 0.0; - double max_ = 0.0; - std::string unit_; - double init_value_ = 0.0; - uint64_t ident_ = 0; - AccessType access_type_ = AccessType::Unrestricted; - std::vector node_list_; - std::map enum_list_; + std::string name_; ///< Variable name. + std::string comment_; ///< Variable description. + EnvType type_ = EnvType::IntegerType; ///< Variable data type. + double min_ = 0.0; ///< Min range. + double max_ = 0.0; ///< Max range. + std::string unit_; ///< Unit of measure. + double init_value_ = 0.0; ///< Initial value. + uint64_t ident_ = 0; ///< Identity. + AccessType access_type_ = AccessType::Unrestricted; ///< Access type. + std::vector node_list_; ///< Node list. + std::map enum_list_; ///< Enumerate list. }; } // namespace dbc diff --git a/include/dbc/isampleobserver.h b/include/dbc/isampleobserver.h index 81936b0..b7fbe72 100644 --- a/include/dbc/isampleobserver.h +++ b/include/dbc/isampleobserver.h @@ -2,17 +2,20 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file isampleobserver.h + * \brief Internal object that define an observer interface that handle samples. + */ #pragma once #include namespace dbc { - +/** \brief Interface that handles samples. Internal usage. + */ class ISampleObserver { public: - ISampleObserver() = default; - virtual ~ISampleObserver() = default; - virtual void OnSample() = 0; - virtual void DetachObserver() = 0; + ISampleObserver() = default; ///< Default constructor. + virtual ~ISampleObserver() = default; ///< Default destructor. + virtual void OnSample() = 0; ///< Handle a sample. + virtual void DetachObserver() = 0; ///< Detach the observer object. }; } // namespace dbc diff --git a/include/dbc/message.h b/include/dbc/message.h index 30343e7..68cbd67 100644 --- a/include/dbc/message.h +++ b/include/dbc/message.h @@ -2,7 +2,9 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file message.h + * \brief DBC message configuration object. + */ #pragma once #include #include @@ -13,21 +15,22 @@ #include "dbc/signal.h" namespace dbc { - +/** \brief Sorted list of signal objects. */ using SignalList = std::map; +/** \brief DBC message configuration object. */ class Message { public: - void Ident(uint64_t ident) { + void Ident(uint64_t ident) { ///< Sets the message ID (29-bit) ident_ = ident; } - [[nodiscard]] uint64_t Ident() const { + [[nodiscard]] uint64_t Ident() const { ///< Returns the message ID. return ident_; } - [[nodiscard]] bool IsExtended() const; - [[nodiscard]] bool IsJ1939() const; - [[nodiscard]] uint32_t CanId() const; + [[nodiscard]] bool IsExtended() const; ///< True if 29-bit ID. + [[nodiscard]] bool IsJ1939() const; ///< True if it is a J1939 message. + [[nodiscard]] uint32_t CanId() const; ///< Returns CAN ID. [[nodiscard]] uint8_t Priority() const; ///< J1939 Priority [[nodiscard]] uint32_t Pgn() const; ///< J1939 PGN [[nodiscard]] uint8_t Source() const; ///< J1939 Source @@ -35,72 +38,109 @@ class Message { [[nodiscard]] bool DataPage() const; ///< J1938 Data Page Flag [[nodiscard]] uint8_t PduFormat() const; ///< J1939 PF [[nodiscard]] uint8_t PduSpecific() const; ///< J1939 PS - [[nodiscard]] bool IsPdu1() const; - [[nodiscard]] bool IsPdu2() const; + [[nodiscard]] bool IsPdu1() const; ///< True if PDU1 + [[nodiscard]] bool IsPdu2() const; ///< True if PDU2 + /** \brief Sets the message name. */ void Name(const std::string& name) { name_ = name; } + /** \brief Returns the message name. */ [[nodiscard]] const std::string& Name() const { return name_; } + /** \brief Sets the descriptive text. */ void Comment(const std::string& comment) { comment_ = comment; } + /** \brief Returns the descriptive text. */ [[nodiscard]] const std::string& Comment() const { return comment_; } - void NofBytes(size_t bytes); - [[nodiscard]] size_t NofBytes() const; + void NofBytes(size_t bytes); ///< Sets the number of bytes. + [[nodiscard]] size_t NofBytes() const; ///< Returns the number of bytes. + /** \brief Sets a node name. */ void Node(const std::string& node) { if (node_.empty()) { node_ = node; } sender_list_.push_back(node); } - + /** \brief Returns the node name. */ [[nodiscard]] std::string NodeName() const { return node_; } + /** \brief Returns a signal by its name. */ [[nodiscard]] Signal* GetSignal(const std::string& name); + /** \brief Returns a signal by its name. */ [[nodiscard]] const Signal* GetSignal(const std::string& name) const; + /** \brief Returns the multiplexer signal object. */ [[nodiscard]] Signal* GetMultiplexor(); + + /** \brief Returns an attribute by its name. */ [[nodiscard]] const Attribute* GetAttribute(const std::string& name) const; + /** \brief Returns the signal list. */ [[nodiscard]] const SignalList& Signals() const { return signal_list_; } + + /** \brief Returns a list of sender names. */ [[nodiscard]] const std::vector& Senders() const { return sender_list_; } + + /** \brief Returns a list of attributes. */ [[nodiscard]] const std::vector& Attributes() const { return attribute_list_; } + /** \brief Returns true if the node is a sender. */ [[nodiscard]] bool IsNodeSender(const std::string& node_name) const; + /** \brief Returns the last message data buffer. */ [[nodiscard]] const std::vector& Data() const {return data_;} + + /** \brief Update the internal data buffer. + * + * Sets the internal last message data buffer. Note that the input offset + * and destination offset is used if the message requires more than one + * CAN data message before it is complete. + * + * @param message Message data. + * @param offset Offset in the message data buffer (input index). + * @param data_index Offset in the last message data buffer (dest index). + * @return Returns true if this was the last byte (complete message). + */ bool UpdateData(const std::vector& message, size_t offset = 0, size_t data_index = 0); + /** \brief Parses the message. Internal usage. */ void ParseMessage(uint64_t ns1970, uint32_t can_id); + /** \brief Reset the internal sequence counter. */ void ResetSequenceNumber() {sequence_number_ = 0;} + /** \brief Returns the next sequence number. */ uint8_t NextSequenceNumber() const {return sequence_number_;} - void ResetSampleCounter() const; + void ResetSampleCounter() const; ///< Reset the sample counters. + /** \brief Increments the internal sample counters. */ void StepSampleCounter() const {++sample_counter_;} + /** \brief Returns number of samples. */ size_t SampleCounter() const {return sample_counter_;} + /** \brief Creates an attributes by using its definition. */ Attribute& CreateAttribute(const Attribute& definition); + + /** \brief Create a new signal by its name. */ Signal& CreateSignal(const std::string& name); private: uint64_t ident_; ///< Message ID - std::string name_; - std::string comment_; - std::string node_; + std::string name_; ///< Message name. + std::string comment_; ///< Message description. + std::string node_; ///< Node (ECU) sender name. std::vector sender_list_; ///< Also holds the node name - std::vector attribute_list_; + std::vector attribute_list_; ///< Attribute list. - SignalList signal_list_; + SignalList signal_list_; ///< Signal list. - mutable size_t sample_counter_ = 0; + mutable size_t sample_counter_ = 0; ///< Sample counter. std::vector data_; ///< Store last message and solve >8 byte data uint8_t sequence_number_ = 0; ///< Used to verify multibyte package }; diff --git a/include/dbc/network.h b/include/dbc/network.h index 4717974..30a0218 100644 --- a/include/dbc/network.h +++ b/include/dbc/network.h @@ -2,7 +2,9 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file network.h + * \brief Defines a DBC network configuration object. + */ #pragma once #include #include @@ -14,136 +16,183 @@ #include "dbc/signalgroup.h" namespace dbc { - +/** \brief Enumerate list. */ using EnumMap = std::map; +/** \brief Type of CAN protocol. */ enum class ProtocolType : int { - StandardCAN = 0, - J1939 = 1, - NMEA2000 = 2, - OBD2 = 3 + StandardCAN = 0, ///< Standard CAN. + J1939 = 1, ///< J1939 protocol. + NMEA2000 = 2, ///< NMEA protocol. + OBD2 = 3 ///< OBD2 protocol. }; +/** \brief Type of bus. */ enum class BusType : int { - CAN = 0 + CAN = 0 ///< CAN bus }; +/** \brief Sorted message of messages. Message ID is the key. */ using MessageList = std::map; +/** \brief Interface against a DBC network configuration. */ class Network { public: - [[nodiscard]] std::string Name() const; + [[nodiscard]] std::string Name() const; ///< Network name. + /** \brief Sets the file name. */ void Filename(const std::string& filename) { filename_ = filename;} + /** \brief Returns the file name. */ [[nodiscard]] std::string Filename() const {return filename_;}; + /** \brief Sets the protocol type. Should be included in the file but + * sometimes is missing. + * @param type Type of protocol. + */ void Protocol(ProtocolType type); + /** \brief Returns what type of protocol the bus is using. */ [[nodiscard]] ProtocolType Protocol() const; + /** \brief Returns the network protocol as text. */ [[nodiscard]] std::string ProtocolAsString() const; + /** \brief Sets the type of bus. */ void Bus(BusType type); + /** \brief Returns the type of bus. */ [[nodiscard]] BusType Bus() const; + /** \brief Returns the type of bus as text. */ [[nodiscard]] std::string BusAsString() const; + /** \brief Sets the DBC (file) version. */ void Version(const std::string& version) { version_ = version; } + /** \brief Returns the DBC file version. */ [[nodiscard]] const std::string& Version() const { return version_; } - + /** \brief Sets the descriptive text for the DBC file. */ void Comment(const std::string& comment) { comment_ = comment; } + /** \brief Returns the desciptive text. */ [[nodiscard]] const std::string& Comment() const { return comment_; } + /** \brief Returns the node by its name. */ [[nodiscard]] Node* GetNode(const std::string& name); + /** \brief Returns the node by its name. */ [[nodiscard]] const Node* GetNode(const std::string& name) const; + /** \brief Returns the node by its source number. */ [[nodiscard]] const Node* GetNodeBySource(uint8_t source) const; + /** \brief Set to true if this is a J1939 bus. */ void J1939(bool j1939) {j1939_ = j1939;} + /** \brief Returns true if this is a J1939 bus. */ [[nodiscard]] bool J1939() const {return j1939_;} + /** \brief Returns a message object by its message ID. */ [[nodiscard]] Message* GetMessage(uint64_t message_id); + /** \brief Returns a message object by its message ID. */ [[nodiscard]] const Message* GetMessage(uint64_t message_id) const; + /** \brief Returns a message object by its CAN ID. */ [[nodiscard]] Message* GetMessageByCanId(uint64_t can_id); + /** \brief Returns a message object by its CAN ID. */ [[nodiscard]] const Message* GetMessageByCanId(uint64_t can_id) const; + /** \brief Returns a message object by its name. */ [[nodiscard]] const Message* GetMessageByName(const std::string &name) const; + /** \brief Returns a message object by its PGN. */ [[nodiscard]] Message* GetMessageByPgn(uint32_t pgn); + /** \brief Returns a message object by its PGN and source number. */ [[nodiscard]] Message* GetMessageByPgnAndSource(uint32_t pgn, uint8_t source); + + /** \brief Returns a signal by its message ID and signal name. */ [[nodiscard]] Signal* GetSignal(uint64_t message_id, const std::string& signal_name); - + /** \brief Returns a signal by its message ID and signal name. */ [[nodiscard]] const Signal* GetSignal(uint64_t message_id, const std::string& signal_name) const; - + /** \brief Returns a signal by its CAN ID and signal name. */ [[nodiscard]] const Signal* GetSignalByCanId(uint64_t can_id, const std::string& signal_name) const; - + /** \brief Returns a signal by its name. */ [[nodiscard]] const Signal* GetSignalByName( const std::string& signal_name) const; + /** \brief Returns a signal group by its message ID and group name. */ [[nodiscard]] const SignalGroup* GetSignalGroup(uint64_t message_id, const std::string& name) const; - + /** \brief Returns a signal group by its group name. */ [[nodiscard]] const SignalGroup* GetSignalGroupByName( const std::string& name) const; + /** \brief Returns the list of environment variables. */ [[nodiscard]] const std::map& EnvVars() const { return env_var_list_; } + /** \brief Returns the list of messages. */ [[nodiscard]] const MessageList& Messages() const { return message_list_; } + /** \brief Returns the list of Nodes. */ [[nodiscard]] const std::map& Nodes() const { return node_list_; } + /** \brief Returns the list of signal groups. */ [[nodiscard]] const std::vector& SignalGroups() const { return signal_group_list_; } + /** \brief Returns the list of enumerates. */ [[nodiscard]] const std::map& Enums() const { return value_table_list_; } - + /** \brief Returns the list of attributes. */ [[nodiscard]] const std::vector& Attributes() const { return attribute_list_; } + /** \brief Returns an attribute by its name. */ [[nodiscard]] Attribute* GetAttribute(const std::string& name); + /** \brief Returns an attribute by its name. */ [[nodiscard]] const Attribute* GetAttribute(const std::string& name) const; + /** \brief Adds a enumerate. */ void AddValueTable(const std::string& name, const EnumMap& list); + + /** \brief Adds a signal group. */ void AddSignalGroup(const SignalGroup& group); // Parser only functions + /** \brief Parser function that gets/creates an environment variable. */ [[nodiscard]] EnvVar& GetEnvVar(const std::string& name); + /** \brief Parser function that creates a node. */ [[nodiscard]] Node& CreateNode(const std::string& name); + /** \brief Parser function that creates a definition. */ [[nodiscard]] Attribute& CreateDefinition(const std::string& name); + /** \brief Parser function that creates an attribute. */ [[nodiscard]] Attribute& CreateAttribute(const Attribute& definition); + /** \brief Parser function that creates a message. */ [[nodiscard]] Message& CreateMessage(uint64_t message_id); + /** \brief Returns the last message. */ [[nodiscard]] Message* LastMessage(); private: - std::string filename_; - std::string version_; - std::string comment_; - std::map env_var_list_; - uint64_t last_message_id_ = 0; + std::string filename_; ///< File name with path and extension. + std::string version_; ///< File version. + std::string comment_; ///< File description. + std::map env_var_list_; ///< Environment list. + uint64_t last_message_id_ = 0; ///< Parser to track current message. bool j1939_ = false; ///< Indicate if this is a J1939 network // Only define the name and type of value - std::map definition_list_; - std::vector attribute_list_; - - using NodeList = std::map; - NodeList node_list_; - + std::map definition_list_; ///< Definition list. + std::vector attribute_list_; ///< Attribute list. - MessageList message_list_; + using NodeList = std::map; ///< Sorted node list. + NodeList node_list_; ///< Node list. + MessageList message_list_; ///< Message list. - std::map value_table_list_; - std::vector signal_group_list_; + std::map value_table_list_; ///< Enum list. + std::vector signal_group_list_; ///< Signal group list. }; } // namespace dbc diff --git a/include/dbc/node.h b/include/dbc/node.h index a7cf873..cf9cb1e 100644 --- a/include/dbc/node.h +++ b/include/dbc/node.h @@ -2,36 +2,49 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file node.h + * \brief Interface against a DBC node (Device(ECU). + */ #pragma once #include #include #include "dbc/attribute.h" namespace dbc { - +/** \brief Interface against a DBC node which normally is an ECU. + * + */ class Node { public: + /** \brief Sets the name. */ void Name(const std::string& name) { name_ = name; } + /** \brief Returns the name. */ [[nodiscard]] const std::string& Name() const { return name_; } + + /** \brief Source number is used in J1939 and is included in the CAN ID. */ void Source(uint8_t source) {source_ = source;}; + /** \brief Source number (J1939). */ [[nodiscard]] uint8_t Source() const; + /** \brief Sets the descriptive text. */ void Comment(const std::string& comment) { comment_ = comment; } + /** \brief Returns the descriptive text. */ [[nodiscard]] const std::string& Comment() const { return comment_; } + /** \brief Returns the attribute list. */ [[nodiscard]] const std::vector& Attributes() const { return attribute_list_; } + /** \brief Creates an attribute. Parser function. */ Attribute& CreateAttribute(const Attribute& definition); + /** \brief Returns an attribute by its name. */ const Attribute* GetAttribute(const std::string& name) const; - private: - std::string name_; - std::string comment_; - std::vector attribute_list_; + std::string name_; ///< Node name. + std::string comment_; ///< Node description. + std::vector attribute_list_; ///< Attribute list. uint8_t source_ = 254; ///< Source Address (254-255 = not defined) }; diff --git a/include/dbc/signal.h b/include/dbc/signal.h index d3a5571..e3f99fb 100644 --- a/include/dbc/signal.h +++ b/include/dbc/signal.h @@ -2,7 +2,9 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file signal.h + * \brief Interface against a DBC signal configuration. + */ #pragma once #include #include @@ -12,13 +14,14 @@ #include "dbc/isampleobserver.h" namespace dbc { - +/** \brief Support function that holds the channel value for a signal. */ struct SignalValue { - bool valid = false; - int64_t signed_value = 0; - uint64_t unsigned_value = 0; - double float_value = 0; - std::vector array_value; + bool valid = false; ///< True if the value is valid. + int64_t signed_value = 0; ///< Integer value. + uint64_t unsigned_value = 0; ///< Unsigned value. + double float_value = 0; ///< Float value. + std::vector array_value; ///< Array or string value. + /** \brief Resets the value. */ void Clear() { valid = false; signed_value = 0; @@ -28,144 +31,200 @@ struct SignalValue { } }; +/** \brief Signal data type. */ enum class SignalDataType : int { - SignedData, - UnsignedData, - FloatData, - DoubleData + SignedData, ///< Signed integer. + UnsignedData, ///< Unsigned integer. + FloatData, ///< Float value. + DoubleData ///< Double value }; +/** \brief Multiplexer type. + * + * A signal may be multiplexed i.e. have different value depending on + * another multiplexor signal.Then someone invented the extended multiplexed + * value which makes every thing confusing. + */ enum class MuxType : int { - NotMultiplexed, - Multiplexor, - Multiplexed, - ExtendedMultiplexor + NotMultiplexed, ///< Normal signal + Multiplexor, ///< Multiplexor signal. + Multiplexed, ///< Multiplexed signal. + ExtendedMultiplexor ///< Extended multiplexor signal. }; +/** \brief Min and Max range definition. */ using RangePair = std::pair; + +/** \brief Support function for the extended multiplexor functionality. */ struct ExtendedMux { - std::string multiplexor; - std::vector range_list; - [[nodiscard]] bool InRange(size_t value) const; + std::string multiplexor; ///< Signal name of the multiplexor. + std::vector range_list; ///< Active range for the multiplexor. + [[nodiscard]] bool InRange(size_t value) const; ///< True if value is active. }; +/** \brief Interface against a DBC signal configuration. + * + */ class Signal { public: - virtual ~Signal(); + virtual ~Signal(); ///< Destructor + + /** \brief Sets the signal name. */ void Name(const std::string& name) { name_ = name; } + /** \brief Returns the signal name. */ [[nodiscard]] const std::string& Name() const { return name_; } + /** \brief Sets the unit of measure. */ void Unit(const std::string& unit) { unit_ = unit; } + /** \brief Returns the unit of measure. */ [[nodiscard]] const std::string& Unit() const { return unit_; } + /** \brief Sets the descriptive text. */ void Comment(const std::string& comment) { comment_ = comment; } + /** \brief Returns the descriptive text. */ [[nodiscard]] const std::string& Comment() const { return comment_; } + /** \brief Sets the data type. */ void DataType(SignalDataType type) { data_type_ = type; } + /** \brief Returns the data type. */ [[nodiscard]] SignalDataType DataType() const { return data_type_; } + /** \brief Returns the data type as text. */ [[nodiscard]] std::string DataTypeAsString() const; + /** \brief Sets the multiplexer type. */ void Mux(MuxType type) { mux_type_ = type; } + /** \brief Returns the multiplexer type. */ [[nodiscard]] MuxType Mux() const { return mux_type_; } + /** \brief Returns the multiplexer type as text. */ [[nodiscard]] std::string MuxAsString() const; - + /** \brief Sets the multiplexor value. */ void MuxValue(int value) { mux_value_ = value; } + /** \brief Returns the multiplexor value. */ [[nodiscard]] int MuxValue() const { return mux_value_; } + /** \brief Sets the start bit. */ void BitStart(size_t start) { bit_start_ = start; } + /** \brief Returns the start bit. */ [[nodiscard]] size_t BitStart() const { return bit_start_; } + /** \brief Sets the bit length. */ void BitLength(size_t length) { bit_length_ = length; } + /** \brief Returns the bit length. */ [[nodiscard]] size_t BitLength() const { return bit_length_; } + /** \brief Set true if little endian byte order. */ void LittleEndian(bool endian) { little_endian_ = endian; } + /** \brief Return true if little endian byte order. */ [[nodiscard]] bool LittleEndian() const { return little_endian_; } - void Scale(double scale) { scale_ = scale; } - [[nodiscard]] double Scale() const { return scale_; } + void Scale(double scale) { scale_ = scale; } ///< Sets the scaling constant. + [[nodiscard]] double Scale() const { return scale_; } ///< Scaling constant. - void Offset(double offset) { offset_ = offset; } - [[nodiscard]] double Offset() const { return offset_; } + void Offset(double offset) { offset_ = offset; } ///< Sets the offset + [[nodiscard]] double Offset() const { return offset_; } ///< Return offset. - void Min(double min) { min_ = min; } - [[nodiscard]] double Min() const { return min_; } + void Min(double min) { min_ = min; } ///< Sets min range. + [[nodiscard]] double Min() const { return min_; } ///< Min range. - void Max(double max) { max_ = max; } - [[nodiscard]] double Max() const { return max_; } + void Max(double max) { max_ = max; } ///< Sets the max range. + [[nodiscard]] double Max() const { return max_; } ///< Max range. + /** \brief Sets the enumeration. */ void EnumList(const std::map& enum_list); + /** \brief Returns the enumeration. */ [[nodiscard]] const std::map& EnumList() const; + /** \brief Sets the receiver list. */ void Receivers(const std::vector& receiver_list); + /** \brief Return the receiver list. */ [[nodiscard]] const std::vector& Receivers() const; + /** \brief Returns the attribute list. */ [[nodiscard]] const std::vector& Attributes() const { return attribute_list_; } + /** \brief Sets the signals message ID. */ void MessageId(uint64_t message_id) { message_id_ = message_id;} + /** \brief Returns the message ID that the signal belongs to. */ [[nodiscard]] uint64_t MessageId() const { return message_id_; } - [[nodiscard]] bool IsMultiplexed() const; - + [[nodiscard]] bool IsMultiplexed() const; ///< True if multiplexed signal. + /** \brief Creates an attribute. */ [[nodiscard]] Attribute& CreateAttribute(const Attribute& definition); + /** \brief Creates an extended multiplexor struct. */ [[nodiscard]] ExtendedMux& GetExtendedMux(); + + /** \brief Returns the enumerate text for an index. */ [[nodiscard]] std::string GetEnumString(int64_t index) const; + /** \brief Parse out the signal value from a message data buffer. */ void ParseMessage(const std::vector& message, uint64_t ns1970, uint32_t can_id); + /** \brief Resets the sample counter. */ void ResetSampleCounter() const {sample_counter_ = 0;} + /** \brief Steps the sample counter. */ void StepSampleCounter() const {++sample_counter_;} + /** \brief Returns the sample counter. */ size_t SampleCounter() const {return sample_counter_;} + /** \brief Sets the sample time. */ void SampleTime(uint64_t ns1970) {sample_time_ = ns1970;} + /** \brief Returns the sample time. */ [[nodiscard]] uint64_t SampleTime() const {return sample_time_;} + /** \brief Sets the CAN ID for the sample. */ void SampleCanId(uint32_t can_id) {sample_can_id_ = can_id;} + /** \brief Returns the CAN ID for latest sample. */ [[nodiscard]] uint64_t SampleCanId() const {return sample_can_id_;} - void Valid(bool valid) {valid_ = valid;} - [[nodiscard]] bool Valid() const {return valid_;} + void Valid(bool valid) {valid_ = valid;} ///< Set to true if valid value. + [[nodiscard]] bool Valid() const {return valid_;} ///< Trie if value is valid. + + /** \brief Returns the channel value. */ template bool ChannelValue( T& value ) const; + /** \brief Returns the scaled engineering value. */ template bool EngValue( T& value ) const; + /** \brief Attach a sample observer. */ void AttachObserver(ISampleObserver* observer) const; + /** \brief Detach a sample observer. */ void DetachObserver(const ISampleObserver* observer) const; private: - std::string name_; - std::string comment_; - std::string unit_; - - std::vector receiver_list_; - - MuxType mux_type_ = MuxType::NotMultiplexed; - int mux_value_ = 0; - size_t bit_start_ = 0; - size_t bit_length_ = 0; - bool little_endian_ = true; - SignalDataType data_type_ = SignalDataType::SignedData; - double scale_ = 1.0; - double offset_ = 0.0; - double min_ = 0.0; - double max_ = 0.0; - ExtendedMux extended_mux_; - - std::vector attribute_list_; - std::map enum_list_; + std::string name_; ///< Signal nsame. + std::string comment_; ///< Signal description. + std::string unit_; ///< Signal unit. + + std::vector receiver_list_; ///< Receiver list. + + MuxType mux_type_ = MuxType::NotMultiplexed; ///< Multiplexer type. + int mux_value_ = 0; ///< Temporary storage of mux value. + size_t bit_start_ = 0; ///< Bit start. + size_t bit_length_ = 0; ///< Bit length. + bool little_endian_ = true; ///< Byte order. True if little endian. + SignalDataType data_type_ = SignalDataType::SignedData; ///< Data type. + double scale_ = 1.0; ///< Scale + double offset_ = 0.0; ///< Offset + double min_ = 0.0; ///< Min range + double max_ = 0.0; ///< Max range. + ExtendedMux extended_mux_; ///< Extended mux support struct. + + std::vector attribute_list_; ///< Attribute list. + std::map enum_list_; ///< Enumeration list. SignalValue channel_value_; ///< Unscaled value (last reported value) - uint64_t message_id_ = 0; - mutable size_t sample_counter_ = 0; - bool valid_ = true; + uint64_t message_id_ = 0; ///< Message ID of last message. + mutable size_t sample_counter_ = 0; ///< Number of samples received. + bool valid_ = true; ///< Trie if valid. uint64_t sample_time_ = 0; ///< Last sample time uint32_t sample_can_id_ = 0; ///< Last Can ID - mutable std::vector observer_list_; - void FireOnSample(); + mutable std::vector observer_list_; ///< Observer list. + void FireOnSample(); ///< Fire OnSample event. }; @@ -221,12 +280,15 @@ bool Signal::ChannelValue(T& value) const { return valid; } +/** \brief Returns the signal value as a string */ template <> bool Signal::ChannelValue(std::string& value) const; +/** \brief Returns the signal value as a signal value */ template <> bool Signal::ChannelValue(SignalValue& value) const; + template bool Signal::EngValue(T& value) const { bool valid = false; @@ -305,7 +367,7 @@ bool Signal::EngValue(T& value) const { return valid; } - +/** \brief Returns the engineering value as a string value */ template <> bool Signal::EngValue(std::string& value) const; diff --git a/include/dbc/signalgroup.h b/include/dbc/signalgroup.h index d421653..e9ca7a2 100644 --- a/include/dbc/signalgroup.h +++ b/include/dbc/signalgroup.h @@ -2,32 +2,39 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file signalgroup.h + * \brief Defines a signal group. + */ #pragma once #include #include #include namespace dbc { +/** \brief Interface against a signal group. */ class SignalGroup { public: + /** \brief Sets the message ID. */ void MessageId(uint64_t message_id) { message_id_ = message_id; } + /** \brief Returns the message ID. */ [[nodiscard]] uint64_t MessageId() const { return message_id_; } - void Name( const std::string& name) { name_ = name; } - [[nodiscard]] const std::string& Name() const { return name_; } + void Name( const std::string& name) { name_ = name; } ///< Sets the name. + [[nodiscard]] const std::string& Name() const { return name_; } ///< Name - void Repetition(size_t rep) { repetition_ = rep; } - [[nodiscard]] size_t Repetition() const { return repetition_; } + void Repetition(size_t rep) { repetition_ = rep; } ///< Sets the repetition. + [[nodiscard]] size_t Repetition() const {return repetition_;} ///< Repetition + /** \brief Returns a list of signal names. */ void Signals(const std::vector& signals ); + /** \brief Returns a list of signal names. */ [[nodiscard]] const std::vector& Signals() const; private: - uint64_t message_id_ = 0; - std::string name_; - size_t repetition_ = 1; - std::vector signal_list_; + uint64_t message_id_ = 0; ///< Message eID. + std::string name_; ///< Name. + size_t repetition_ = 1; ///< Repetition. + std::vector signal_list_; ///< Signal list. }; } // namespace dbc diff --git a/include/dbc/signalobserver.h b/include/dbc/signalobserver.h index 31ff3ad..a854391 100644 --- a/include/dbc/signalobserver.h +++ b/include/dbc/signalobserver.h @@ -2,7 +2,9 @@ * Copyright 2022 Ingemar Hedvall * SPDX-License-Identifier: MIT */ - +/** \file signalobserver.h + * \brief The sample observer holds sample values for a signal. + */ #pragma once #include "dbc/isampleobserver.h" #include "dbc/signal.h" @@ -10,53 +12,95 @@ #include namespace dbc { - +/** \brief The sample observer hold a number of samples. + * + * The observer holds signal values in a circular buffer of + * a maximum number of samples size. The user shall access the samples + * in normal sample order i.e the first sample is 0 while the internal circular + * index might be something else. + * + */ class SignalObserver : public ISampleObserver { public: - explicit SignalObserver(const Signal& signal); - SignalObserver() = delete; - ~SignalObserver() override; + explicit SignalObserver(const Signal& signal); ///< Constructor + SignalObserver() = delete; ///< Default constructor. + ~SignalObserver() override; ///< Default destructor. + /** \brief Sets the maximum number of samples. */ void MaxSamples(size_t max_nof_samples); + /** \brief Returns the max number of samples. */ [[nodiscard]] size_t MaxSamples() const { return value_list_.size();} + + /** \brief Returns the signal object. */ [[nodiscard]] const Signal& GetSignal() const {return signal_;} + + /** \brief Returns the absolute time for a sample. */ [[nodiscard]] uint64_t Time(size_t index) const; + + /** \brief Returns the CAN ID for a sample. */ [[nodiscard]] uint32_t CanId(size_t index) const; + + /** \brief Returns the unscaled signal value. + * + * Returns the unscaled signal value for a specific sample. + * @tparam V Value type. + * @param index Sample index (0..). + * @param ns1970 Sample time nano-seconds since 1970. + * @param value Sample value. + * @return True if value is valid. + */ template bool ChannelValue(size_t index, uint64_t& ns1970, V& value) const; + /** \brief Returns the scaled signal value. + * + * Returns the scaled signal value for a specific sample. + * @tparam V Value type. + * @param index Sample index (0..). + * @param ns1970 Sample time nano-seconds since 1970. + * @param value Sample value. + * @return True if value is valid. + */ template bool EngValue(size_t index, uint64_t& ns1970, V& value) const; - void ResetSampleIndex(); + void ResetSampleIndex(); ///< Reset the sample index - [[nodiscard]] size_t FirstIndex() const; - [[nodiscard]] size_t LastIndex() const; + [[nodiscard]] size_t FirstIndex() const; ///< First sample. + [[nodiscard]] size_t LastIndex() const; ///< Last sample. + /** \brief Returns number of samples. */ [[nodiscard]] size_t NofSamples() const {return nof_samples_;} + /** \brief Returns number of valid samples. */ [[nodiscard]] size_t NofValidSamples() const; + /** \brief Sample number (0..) to internal index. */ [[nodiscard]] size_t SampleToIndex(size_t sample) const; + + /** \brief Sample time to internal index. */ [[nodiscard]] std::pair TimeToIndex(uint64_t time) const; - void DetachObserver() override; - void OnSample() override; + + void DetachObserver() override; ///< Detach an observer. + void OnSample() override; ///< On sample callback handler. protected: private: + /** \brief Sample value. */ struct ChannelSample { - uint64_t ns1970; - uint32_t can_id; - SignalValue value; + uint64_t ns1970 = 0; ///< Nano-seconds since 1970. + uint32_t can_id = 0; ///< CAN ID + SignalValue value; ///< Unscaled signal value. + /** \brief Returns the source number from the CAN ID. */ [[nodiscard]] uint8_t Source() const { return static_cast(can_id & 0xFF); } }; - const Signal& signal_; + const Signal& signal_; ///< Reference to the signal configuration. std::vector value_list_; ///< Channel values size_t sample_index_ = 0; ///< Points on next index - size_t nof_samples_ = 0; - bool attached_ = false; + size_t nof_samples_ = 0; ///< Number of samples. + bool attached_ = false; ///< True if the observer is attached. }; template @@ -116,7 +160,7 @@ bool SignalObserver::ChannelValue(size_t index, uint64_t& ns1970, } return valid; } - +/** \brief Returns the unscaled signal value as a string. */ template <> bool SignalObserver::ChannelValue(size_t index, uint64_t& ns1970, std::string& value) const; @@ -207,10 +251,12 @@ bool SignalObserver::EngValue(size_t index, uint64_t& ns1970, return valid; } +/** \brief Returns the scaled signal value as a string' */ template <> bool SignalObserver::EngValue(size_t index, uint64_t& ns1970, std::string& value) const; +/** \brief List of observer. */ using SignalObserverList = std::vector>; } // namespace dbc