Cleap up, remove other vehicles because I am not maintaining it
This commit is contained in:
parent
77e7740e1b
commit
fcd3f12b5b
|
@ -1,14 +0,0 @@
|
|||
#
|
||||
# Main component makefile.
|
||||
#
|
||||
# This Makefile can be left empty. By default, it will take the sources in the
|
||||
# src/ directory, compile them and link them into lib(subdirectory_name).a
|
||||
# in the build directory. This behaviour is entirely configurable,
|
||||
# please read the ESP-IDF documents if you need to do this.
|
||||
#
|
||||
|
||||
ifdef CONFIG_OVMS_VEHICLE_BMWI3
|
||||
COMPONENT_ADD_INCLUDEDIRS:=src
|
||||
COMPONENT_SRCDIRS:=src
|
||||
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
|
||||
endif
|
|
@ -1,695 +0,0 @@
|
|||
|
||||
These JSON files provide a description of some of the ECUs fitted to the BMW i3/i3s.
|
||||
|
||||
These files were derived from the Ediasbaslib project and the included
|
||||
DeepOBD application. Find the project at:
|
||||
|
||||
https://github.com/uholeschak/ediabaslib
|
||||
|
||||
Both Ediasbaslib and the Deep OBD application are very useful tools that we wholeheartedly
|
||||
recommend to you. Deep OBD in particular is a powerful tool to assist to understand
|
||||
the i3 ECUs.
|
||||
|
||||
Thank you Ulrich Holeschak and other contributors for making these tools available
|
||||
with an open-source licence.
|
||||
|
||||
Ediasbaslib is licenced with the GPL-3.0 Licence, which I reproduce below. Accordingly,
|
||||
these derived JSON files are similarly GPL 3.0 licensed.
|
||||
|
||||
|
||||
/* GPL 3.0 Licence */
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,120 +0,0 @@
|
|||
{
|
||||
"tables" : {
|
||||
"RES_0XAD73_R" : [
|
||||
{
|
||||
"DATENTYP" : "unsigned char",
|
||||
"STR" : "-",
|
||||
"MASKE" : "-",
|
||||
"NAME" : "TAB_SME_HEIZUNG_FUNKTION",
|
||||
"INFO" : "Ergebniss der funktionalen Heizungsdiagnose",
|
||||
"RRR" : "+",
|
||||
"ADD" : "-",
|
||||
"MUL" : "-",
|
||||
"STPR" : "-",
|
||||
"INFO_EN" : "Result of the functional heating diagnosis",
|
||||
"RESULTNAME" : "STAT_HEIZUNG_FUNKTION_NR",
|
||||
"EINHEIT" : "0-n",
|
||||
"L/H" : "high",
|
||||
"DIV" : "-"
|
||||
}
|
||||
],
|
||||
"RES_0XAD71_R" : [
|
||||
{
|
||||
"EINHEIT" : "V",
|
||||
"DIV" : "100.0",
|
||||
"L/H" : "high",
|
||||
"RESULTNAME" : "STAT_SPANNUNG_MIN_LIM_WERT",
|
||||
"MUL" : "1.0",
|
||||
"INFO_EN" : "Limit value for minimum voltage in volts (project-specific UminLim)",
|
||||
"STPR" : "-",
|
||||
"NAME" : "-",
|
||||
"DATENTYP" : "unsigned int",
|
||||
"STR" : "-",
|
||||
"MASKE" : "-",
|
||||
"ADD" : "0.0",
|
||||
"RRR" : "+",
|
||||
"INFO" : "Grenzwert für minimale Spannung in Volt (projektspezifischer UminLim)"
|
||||
},
|
||||
{
|
||||
"ADD" : "0.0",
|
||||
"INFO" : "Grenzwert für maximale Spannung in Volt (projektspezifischer UmaxLim)",
|
||||
"RRR" : "+",
|
||||
"NAME" : "-",
|
||||
"MASKE" : "-",
|
||||
"STR" : "-",
|
||||
"DATENTYP" : "unsigned int",
|
||||
"STPR" : "-",
|
||||
"INFO_EN" : "Limit value for maximum voltage in volts (project-specific UmaxLim)",
|
||||
"MUL" : "1.0",
|
||||
"RESULTNAME" : "STAT_SPANNUNG_MAX_LIM_WERT",
|
||||
"L/H" : "high",
|
||||
"DIV" : "100.0",
|
||||
"EINHEIT" : "V"
|
||||
},
|
||||
{
|
||||
"RESULTNAME" : "STAT_HIS_SPANNUNG_MOD_1_WERT",
|
||||
"L/H" : "high",
|
||||
"DIV" : "1.0",
|
||||
"EINHEIT" : "min",
|
||||
"RRR" : "+",
|
||||
"INFO" : "Dauer in Minuten in der Klasse UminLim <= U <= 3.57 (I12) bzw. UminLim <= U <= 3.82 (I01) (SBL)",
|
||||
"ADD" : "0.0",
|
||||
"STR" : "-",
|
||||
"DATENTYP" : "unsigned long",
|
||||
"MASKE" : "-",
|
||||
"NAME" : "-",
|
||||
"STPR" : "-",
|
||||
"INFO_EN" : "Duration in minutes in the class UminLim <= U <= 3.57 (I12) or UminLim <= U <= 3.82 (I01) (SBL)",
|
||||
"MUL" : "1.0"
|
||||
},
|
||||
{
|
||||
"ADD" : "0.0",
|
||||
"INFO" : "Dauer in Minuten in der Klasse 3.57 < U <= 3.77 (I12) bzw. 3.82 < U <= 3.91 (I01) (SBL)",
|
||||
"RRR" : "+",
|
||||
"NAME" : "-",
|
||||
"DATENTYP" : "unsigned long",
|
||||
"MASKE" : "-",
|
||||
"STR" : "-",
|
||||
"INFO_EN" : "Duration in minutes in class 3.57 <U <= 3.77 (I12) or 3.82 <U <= 3.91 (I01) (SBL)",
|
||||
"STPR" : "-",
|
||||
"MUL" : "1.0",
|
||||
"RESULTNAME" : "STAT_HIS_SPANNUNG_MOD_2_WERT",
|
||||
"DIV" : "1.0",
|
||||
"L/H" : "high",
|
||||
"EINHEIT" : "min"
|
||||
},
|
||||
{
|
||||
"EINHEIT" : "min",
|
||||
"L/H" : "high",
|
||||
"DIV" : "1.0",
|
||||
"RESULTNAME" : "STAT_HIS_SPANNUNG_MOD_3_WERT",
|
||||
"MUL" : "1.0",
|
||||
"STPR" : "-",
|
||||
"INFO_EN" : "Duration in minutes in class 3.77 <U <= 3.93 (I12) or 3.91 <U <= 4.03 (I01) (SBL)",
|
||||
"MASKE" : "-",
|
||||
"STR" : "-",
|
||||
"DATENTYP" : "unsigned long",
|
||||
"NAME" : "-",
|
||||
"RRR" : "+",
|
||||
"INFO" : "Dauer in Minuten in der Klasse 3.77 < U <= 3.93 (I12) bzw. 3.91 < U <= 4.03 (I01) (SBL)",
|
||||
"ADD" : "0.0"
|
||||
},
|
||||
{
|
||||
"RESULTNAME" : "STAT_HIS_SPANNUNG_MOD_4_WERT",
|
||||
"EINHEIT" : "min",
|
||||
"DIV" : "1.0",
|
||||
"L/H" : "high",
|
||||
"DATENTYP" : "unsigned long",
|
||||
"MASKE" : "-",
|
||||
"STR" : "-",
|
||||
"NAME" : "-",
|
||||
"RRR" : "+",
|
||||
"INFO" : "Dauer in Minuten in der Klasse 3.93 < U <= UmaxLim (I12) bzw. 4.03 < U <= UmaxLim (I01) (SBL)",
|
||||
"ADD" : "0.0",
|
||||
"MUL" : "1.0",
|
||||
"STPR" : "-",
|
||||
"INFO_EN" : "Duration in minutes in class 3.93 <U <= UmaxLim (I12) or 4.03 <U <= UmaxLim (I01) (SBL)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,171 +0,0 @@
|
|||
|
||||
=============
|
||||
BMW i3 / i3s
|
||||
=============
|
||||
|
||||
Vehicle Type: **BMWI3**
|
||||
|
||||
This vehicle type supports the BMW i3 and i3s models. All model years should be supported.
|
||||
|
||||
The OVMS support was developed Jan 2021.
|
||||
|
||||
It was developed against the author's 2018 120Ah i3s BEV. I would welcome engagement from
|
||||
the owner of a REX type to further develop metrics related to the REX engine. Testing by
|
||||
drivers of LHD models, as well as those with the smaller batteries will also be helpful.
|
||||
|
||||
As of this release this vehicle support is read-only and cannot send commands to the car.
|
||||
|
||||
----------------
|
||||
Support Overview
|
||||
----------------
|
||||
|
||||
"tba" item are still on the to-do list and are not currently supported.
|
||||
|
||||
=========================== ==============
|
||||
Function Support Status
|
||||
=========================== ==============
|
||||
Hardware Any OVMS v3 (or later) module.
|
||||
Vehicle Cable OBD-II cable: left-handed cable worked best in my RHD car
|
||||
GSM Antenna 1000500 Open Vehicles OVMS GSM Antenna (or any compatible antenna)
|
||||
GPS Antenna 1020200 Universal GPS Antenna (or any compatible antenna)
|
||||
SOC Display Yes
|
||||
Range Display Yes
|
||||
Cabin Pre-heat/cool Control tba
|
||||
GPS Location Yes (from modem module GPS)
|
||||
Speed Display Yes
|
||||
Temperature Display Yes
|
||||
BMS v+t Display Yes
|
||||
TPMS Display tba
|
||||
Charge Status Display Yes
|
||||
Charge Interruption Alerts Yes
|
||||
Charge Control tba
|
||||
Lock/Unlock Vehicle tba
|
||||
Valet Mode Control No
|
||||
Others 12v battery voltage/current, battery true SOC, etc
|
||||
=========================== ==============
|
||||
|
||||
--------
|
||||
WARNINGS
|
||||
--------
|
||||
|
||||
Alarm behaviour
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
As standard, the i3 will sound the alarm if anything is left connected to the OBD-II
|
||||
port when the car is locked.
|
||||
|
||||
A tool like Bimmercode will allow you to disable this. Alternatively
|
||||
you will need to disconnect the OVMS unit before locking the car.
|
||||
|
||||
A future version may add a command to allow you to disable this alarm directly
|
||||
from your OVMS shell.
|
||||
|
||||
12V Battery drain
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
The i3 has a small 20Ah AGM 12v battery. Whilst care has been taken to minimize OVMS' power usage,
|
||||
OVMS could eventually drain this battery if the car is left unplugged and locked.
|
||||
OVMS will also send an alert if 12V drops under 12V alert threshold. (See 12V Calibration section).
|
||||
|
||||
HOWEVER: If you are going to leave the car for a fews days, it is recommended to unplug OVMS.
|
||||
|
||||
----------
|
||||
Car status
|
||||
----------
|
||||
|
||||
The car is accessible over the OBD-II port when it is running (ignition on) and for a short time
|
||||
(40 seconds or so) after it is turned off or the car is "tweaked" (lock button pushed,
|
||||
connected-drive command received, etc).
|
||||
|
||||
Unfortunately this means that when your car is standing or charging OVMS only has
|
||||
intermittent access to data from the car.
|
||||
|
||||
By observation, whilst the car is charging it wakes up now and then (seems to be every 30 minutes).
|
||||
So at those times we can update our SOC etc.
|
||||
|
||||
Metrics "v.e.awake" tells you if the car is awake or not. Metric "xi3.s.age" will tell you how
|
||||
many minutes have passed since we last received data from the car.
|
||||
|
||||
You may also refer to metric xi3.s.pollermode as follows:
|
||||
|
||||
==== ================================================
|
||||
Mode Meaning
|
||||
==== ================================================
|
||||
0 Car is asleep - no OBD-II data traffic
|
||||
1 Car OBD-II is awake - we are seeing data traffic
|
||||
2 Car is ready to drive or driving
|
||||
3 Car is charging
|
||||
==== ================================================
|
||||
|
||||
-------------------
|
||||
Custom metrics
|
||||
-------------------
|
||||
|
||||
======================================== =================== =====================================================================================================
|
||||
Metric name Example value Description
|
||||
======================================== =================== =====================================================================================================
|
||||
xi3.s.age 5Min How long since we last got data from the car
|
||||
xi3.s.pollermode 0 OBD-II polling mode as explained above
|
||||
xi3.v.b.p.ocv.avg 4.0646V Main battery pack - average open-circuit voltage
|
||||
xi3.v.b.p.ocv.max 4.067V Main battery pack - highest open-circuit voltage
|
||||
xi3.v.b.p.ocv.min 4.063V Main battery pack - lowest open-circuit voltage
|
||||
xi3.v.b.range.bc 245km Available range per trip computer (based on current driving mode and style)
|
||||
xi3.v.b.range.comfort 217km Available range if you use Comfort mode
|
||||
xi3.v.b.range.ecopro 245km Available range if you use EcoPro mode
|
||||
xi3.v.b.range.ecoproplus 247km Available range if you use EcoPro+ mode
|
||||
xi3.v.b.soc.actual 85% Actual physical state-of-charge of the main battery pack
|
||||
xi3.v.b.soc.actual.highlimit 93.7% Highest physical charge level permitted (shown as 100% SOC)
|
||||
xi3.v.b.soc.actual.lowlimit 10.5% Minimum physical charge level permitted (shown as 0% SOC)
|
||||
xi3.v.c.chargecablecapacity 0A Maximum power capacity of connected charge cable per the charging interface
|
||||
xi3.v.c.chargeledstate 0 Colour of the "ring light" on the charging interface.
|
||||
xi3.v.c.chargeplugstatus Not connected Charging cable connected?
|
||||
xi3.v.c.current.dc 0A Power flowing on the DC side of the AC charger
|
||||
xi3.v.c.current.dc.limit 0.100003A Limit
|
||||
xi3.v.c.current.dc.maxlimit 16A Maximum limit
|
||||
xi3.v.c.current.phase1 0A Power being drawn on AC phase 1
|
||||
xi3.v.c.current.phase2 0A Power being drawn on AC phase 2
|
||||
xi3.v.c.current.phase3 0A Power being drawn on AC phase 3
|
||||
xi3.v.c.dc.chargevoltage 0V Voltage seen on the DC charger input
|
||||
xi3.v.c.dc.contactorstatus open DC contactor state (closed implies we are DC charging)
|
||||
xi3.v.c.dc.controlsignals 0 DC charger control signals (always see 0?)
|
||||
xi3.v.c.dc.inprogress no DC charging in progress?
|
||||
xi3.v.c.dc.plugconnected no Is DC charger plug connected (doesn't seem to work)
|
||||
xi3.v.c.deratingreasons 0 Reasons why charging rate is derated
|
||||
xi3.v.c.error 0 Charging error codes
|
||||
xi3.v.c.failsafetriggers 0 Failsafe trigger reasons
|
||||
xi3.v.c.interruptionreasons 0 Charging interruption reasons
|
||||
xi3.v.c.pilotsignal 0A Charge rate pilot signal being received from EVSE
|
||||
xi3.v.c.readytocharge no Are we ready to charge
|
||||
xi3.v.c.temp.gatedriver 40°C Charger gatedrive mosfet temperature
|
||||
xi3.v.c.voltage.dc 8.4V Charger output DC voltage being seen (for AC charging, not DC)
|
||||
xi3.v.c.voltage.dc.limit 420V Maximum permitted DC voltge
|
||||
xi3.v.c.voltage.phase1 0V Voltage seen on AC charger input phase 1
|
||||
xi3.v.c.voltage.phase2 0V Voltage seen on AC charger input phase 2
|
||||
xi3.v.c.voltage.phase3 0V Voltage seen on AC charger input phase 3
|
||||
xi3.v.d.chargeport.dc no Is the charger port DC cover open (doesn't seem to work)
|
||||
xi3.v.e.autorecirc no Ventilation is in "auto-recirculate" mode
|
||||
xi3.v.e.obdtraffic no Are we seeing OBD-II frames from the car?
|
||||
xi3.v.p.tripconsumption 127Wh/km Average consumption for the current or most recent trip
|
||||
xi3.v.p.wheel1_speed 0km/h Wheel 1 speed
|
||||
xi3.v.p.wheel2_speed 0km/h Wheel 2 speed
|
||||
xi3.v.p.wheel3_speed 0km/h Wheel 3 speed
|
||||
xi3.v.p.wheel4_speed 0km/h Wheel 4 speed
|
||||
xi3.v.p.wheel_speed 0km/h Average wheel speed
|
||||
======================================== =================== =====================================================================================================
|
||||
|
||||
----------------
|
||||
To be researched
|
||||
----------------
|
||||
|
||||
Can we start/stop charging?
|
||||
|
||||
Can we pre-heat?
|
||||
|
||||
Can we lock/unlock the car?
|
||||
|
||||
Can we disable the OBD-II alarm
|
||||
|
||||
Still looking for the trip regen kWh
|
||||
|
||||
Can we get the voltage state of each individual cells rather than just the battery min / max / average?
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
|
||||
These ecu definition files are generated from the JSON files found in the dev directory.
|
||||
You will find the relevant programs in the tools directory.
|
||||
|
||||
The origin on the JSON ecu definitions in the dev directory is explained in the README file
|
||||
that you will find there.
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,10 +0,0 @@
|
|||
|
||||
|
||||
// VIN:
|
||||
|
||||
|
||||
#define I3_PID_BDC_VIN 0xF190
|
||||
// Returns the VIN - 17 byte string response
|
||||
|
||||
// POLL line
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_VIN, { 0,300,300,300 }, 0, ISOTP_EXTADR }, // 0xF190
|
|
@ -1,244 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/bdc.json: BDC 40: Body domain controller
|
||||
// This generated code makes it easier to process CANBUS messages from the BDC ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_PIA_NR_AKTUELL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x0F27
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HOD_KALIBRIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA093
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BATTERIEVORSCHAEDIGUNGSHISTORIE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA099
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_WISCHER_LIN_EINLERNVORGANG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA118
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUSSENSPIEGEL_SELBSTTEST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA322
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_REGENSENSOR_INITIALISIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA3B7
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LEUCHTEN_KALTUEBERWACHUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA530
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LEUCHTEN_WARMUEBERWACHUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA531
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HOEHENSTAENDE_OFFSET_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA532
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_GURTZUBRINGER_INIT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA71A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LIN_AUTOADRESSIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA838
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ELV_ANLIEFERZUSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAA73
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SMO_SIMULATION_BEDIENUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAA80
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STEUERN_CA_BROADCAST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAC54
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STEUERN_CA_ANTENNEN_TEST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAC55
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STEUERN_FBD_EMPFAENGER_INIT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAC58
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FBD_REICHWEITENMESSUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAC5D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FBD_FEHLER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAC5E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ELSV_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD070
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LENKRADHEIZUNG_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD073
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ELSV_STATEMACHINE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD07B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ELSV_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD07F
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LENKRAD_MFL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD081
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ELSV_POS_STATUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD089
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SMO_SPIELSCHUTZZAEHLER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD096
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SMO_VARIANTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD098
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_PLOCK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD09D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ZUSATZINFO_LICHT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0F1
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HANDBREMSE_KONTAKT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD130
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_HINTEN_TASTER_LINKS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD161
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_HINTEN_TASTER_RECHTS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD162
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FA_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD188
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BF_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD189
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FAH_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD18A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BFH_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD18B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_KISI_LED, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD18D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FA_BEWEGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1A7
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BF_BEWEGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1A8
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FAH_BEWEGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1A9
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BFH_BEWEGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1AA
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BFH_RELAIS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1AD
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BFH_HALLSENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1AE
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FAH_RELAIS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1AF
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FAH_HALLSENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B0
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FA_RELAIS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B1
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FA_HALLSENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B2
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BF_RELAIS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B3
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BF_HALLSENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B4
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FA_STATUS_DETAIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B5
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BF_STATUS_DETAIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B6
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_FAH_STATUS_DETAIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B7
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FH_BFH_STATUS_DETAIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B8
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STATUS_SITZEXT_TASTEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1CA
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STATUS_SITZEXT_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1CB
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_TANK_FUELLSTAND_LINKS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD258
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_TANK_FUELLSTAND_RECHTS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD259
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HUPE_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD297
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUSSENSPIEGEL_THERMOSCHUTZ, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD321
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUSSENSPIEGEL_LIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD329
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUSSENSPIEGEL_MEM_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD32B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUSSENSPIEGEL_HEIZUNG_VERBAUT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD32E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_EC_SPIEGEL_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD330
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUSSENSPIEGEL_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD331
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUSSENSPIEGEL_KLAPPEN_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD332
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_UGDO_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD33A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUSSENSPIEGEL_ABBLENDEN_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD33C
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_UGDO_LAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD33D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_UGDO_MODE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD33E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_KOMPASS_SPIEGEL_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD343
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_KOMPASS_SPIEGEL_MAGNET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD344
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_KOMPASS_SPIEGEL_SPRACHE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD345
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_KOMPASS_SPIEGEL_LENKUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD346
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_WISCHER_FRONT_MOTOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD351
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_WISCHER_HECK_MOTOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD353
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SRA_RELAIS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD354
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_WASCHWASSERSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD357
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_WISCHER_HECK_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD358
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SRA_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD359
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LENKSTOCK_WISCHER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD35B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_WISCHER_FRONT_LIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD35E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_REGENSENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD373
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_REGENSENSOR_INIT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD375
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_REGENSENSOR_INT_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD376
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FAHRLICHTSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD3BE
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FAHRLICHTSENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD3BF
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HOD_LENKRAD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD3F0
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HOD_ZUSTAND_GAP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD3F1
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_WISCHER_LIN_DATEN_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD505
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_WISCHER_HECK_MOTOR_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD507
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_INNENLICHTEINHEIT_DRITTE_SITZREIHE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD52C
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LESELICHT_VORNE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD53A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LICHTSCHALTER_WBL_TASTER_BEL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD53D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_RUECKWAERTSGANG_SCHALTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD540
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SCHEINWERFER_GRUNDSTELLUNG_STATUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD541
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LESELICHT_VORNE_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD544
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LESELICHT_HINTEN_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD545
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LWR_DYNAMISCH_SCHRITTE_REFLAUF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD548
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_INNENLICHT_HINTEN_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD54B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_INNENLICHT_VORNE_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD54C
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BUS_IN_BELADUNGSSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD54D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LESELICHT_HINTEN_RECHTS_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD54E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LWR_MANUELL_POTI, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD54F
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LICHTSCHALTEREINHEIT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD550
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LICHTSCHALTER_WBL_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD552
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LESELICHT_HINTEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD553
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_PIA_FLA_FOLLOW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD555
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SCHALTERBELEUCHTUNG_RAENDELRAD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD557
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_PIA_ABBIEGELICHT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD559
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_PIA_TIPPBLINKEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD55E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LWR_MANUELL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD55F
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_PIA_TAGFAHRLICHT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD573
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_INNENLICHT_HINTEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD57B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LWR_MODUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD57E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_INNENLICHT_KLEMME_VA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD57F
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LENKSTOCK_BLINKER_TASTER_FLA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD580
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LENKSTOCK_BLINKER_TASTER_BC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD581
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LENKSTOCK_BLINKER_FRA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD582
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LENKSTOCK_BLINKER_LICHTHUPE_FERNLICHT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD583
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LENKSTOCK_BLINKER_WIPPE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD585
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LESELICHT_HINTEN_LINKS_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD587
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LESELICHT_VORNE_RECHTS_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD588
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LESELICHT_VORNE_LINKS_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD589
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LWR_POSITION_MIN_MAX, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD58A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LICHTSCHALTER_NSW_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD58B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LICHTSCHALTER_NSL_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD58C
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AMBIENTE_BELEUCHTUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5D3
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_INNENLICHT_MAPPING, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5DE
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AHL_LWR_TMS_ID_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5E5
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HOEHENSTAENDE_SENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD601
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HOEHENSTAENDE_VERSORGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD603
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HOEHENSTAENDE_KALIBRIERUNG_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD604
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STATUS_FES_MODUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD611
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STATUS_FES_STATISTIK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD612
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SWITCH_BOARD_TASTEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD622
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STATUS_FES_DATEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD625
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SWITCHBOARD_TASTE_VERBAU, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD627
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUSSTATTUNG_CORONA_LED, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD62B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FES_MASTER_SW_FEHLER_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD62D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SWITCH_BOARD_TASTEN_VERBAU, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD669
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_KUEHLMITTELSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD672
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_GURTZUBRINGER_FA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD71A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_GURTZUBRINGER_BF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD71B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_FA_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD726
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_BF_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD727
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_FAH_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD728
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_BFH_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD729
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BUS_IN_SITZHEIZUNG_STUFE_BF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD72D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_BF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD730
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BUS_IN_SITZHEIZUNG_STUFE_FA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD731
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_VORHANDEN_DRITTE_SITZREIHE_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD762
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_VERRIEGELUNG_ZWEITE_SITZREIHE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD763
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_FA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD771
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_FAH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD7EA
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_BFH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD7EC
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SITZHEIZUNG_HINTEN_TASTER_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD86C
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_VORHANDEN_FONDSCHICHTUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8AA
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SOLARSENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8AB
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUC_SENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8AC
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FENSTERHEBER_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8FE
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_KLIMAKOMPRESSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD906
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_VORHANDEN_KOMPRESSORKUPPLUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD916
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_DRUCKSENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD959
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_VORHANDEN_WASSERVENTIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD95A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SOLARSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD961
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_AUC_SENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD963
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_DRUCKSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD967
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BESCHLAGSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD96C
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BESCHLAGSENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD96D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_FONDSCHICHTUNGS_POTI, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD96E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_DRUCKSENSOR_HOCHAUFLOESEND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD9B8
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LENKRAD_SCHALTPADDLES, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA24
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_DC_DC_WANDLER_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA54
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STAT_LIN_LAYERING, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA5F
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STATUS_CODIERUNG_FAHRZEUGKLAPPEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA61
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_TUERKONTAKT_BFH_OBEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA7B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_TUERKONTAKT_FAH_OBEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA7E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ZV_BEIFAHRER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA81
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ZV_BEIFAHRER_HINTEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA82
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ZV_FAHRER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA83
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ZV_FAHRER_HINTEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA84
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ZV_HECKKLAPPE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA85
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ZV_HECKSCHEIBE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA86
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ZV_GESAMT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA87
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ZV_KURZSCHLUSSABSCHALTUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA95
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SPANNUNG_KLEMMEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAB3
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_KEY_VALID_NR_AKTUELL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAB4
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_CA_TAGE_ER_LEITUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAB5
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_START_STOP_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAB6
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STATUS_KLEMMEN_VERHINDERER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDABA
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BUS_IN_DATUM_ZEIT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDABB
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BUS_IN_DME1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDABC
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BUS_IN_DSC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDABD
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BUS_IN_FH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDABF
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_CA_TAGE_STATUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDACA
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SPANNUNG_KLEMME_30L1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAD6
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_SPANNUNG_KLEMME_30L2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAD7
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_KLEMMENSTEUERUNG_KURZSCHLUSSABSCHALTUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB12
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HECKKLAPPENSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB16
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_NACHLAUFZEIT_KLEMME_15N, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB2D
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_NACHLAUFZEIT_KLEMME_30B, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB2E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STATUS_KLEMMEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC56
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_STATUS_KL15_ABSCHALTUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC57
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_ANSTEUERUNG_KL30F_HINTEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC5A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_BREMSLICHT_SCHALTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC61
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_KUPPL_PN_SCHALTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC63
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_MOTORHAUBE_SCHALTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC65
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HOTEL_SCHALTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC66
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_READHWMODIFICATIONINDEX, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF152
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_LWR_STATISTIK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x2302
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_COUNT_NSC_MIRRORHEATING_ACTIVATIONS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x2303
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__LWR_DIAG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4507
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__LICHT_UEBERSPANNUNGSCOUNTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4508
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__ZV_KURZSCHLUSSABSCHALTUNG_ZAEHLER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4700
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__INNENBELEUCHTUNG_DAUERAUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4801
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__SARAH_STATISTIK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4910
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__STATUS_BASESTATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4E07
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_IBS_WAKEUP_GRUND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4F0E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__STATUS_DFZ_SK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5001
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__STATUS_DFZ_GUELTIGKEIT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5003
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__KLEMMENSTEUERUNG_KURZSCHLUSSABSCHALTUNG_ZAEHLER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5020
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__ECUMA_INTERN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5101
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__ECUMA_SLEEP_MODE_NRC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5109
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_HW_INFO_PROVIDER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x510A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__JTAGLOCK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x510B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_READ_PULLUP_REF_RESFUEL_TANK_0, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5DBE
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC_READ_PULLUP_REF_RESFUEL_TANK_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5DBF
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_FA_STATISTIKZAEHLER_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6020
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_BF_STATISTIKZAEHLER_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6021
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_FAH_STATISTIKZAEHLER_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6022
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_BFH_STATISTIKZAEHLER_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6023
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_DENORMIERUNGS_LOGGER_LESEN_FRONT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x603A
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_DENORMIERUNGS_LOGGER_LESEN_REAR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x603B
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_REVERSIER_LOGGER_LESEN_FRONT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x603E
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_REVERSIER_LOGGER_LESEN_REAR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x603F
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_MOTORSTOP_LOGGER_LESEN_FRONT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6042
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__FH_MOTORSTOP_LOGGER_LESEN_REAR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6043
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__STEUERN_DFZ_VERBINDUNGSENDE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF003
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__ECU_HW_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF005
|
||||
//{ I3_ECU_BDC_TX, I3_ECU_BDC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_BDC__LWR_STATISTIK_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF105
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,92 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/dsc_i1.json: DSC 29: Dynamic stability controller
|
||||
// This generated code makes it easier to process CANBUS messages from the DSC ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_FS_LOESCHEN_PERMANENT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1060
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_FEHLERSPEICHER_ENDE_WERKSABLAUF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1061
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_START_ADAPTIVDATEN_RUECKSETZEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA051
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STEUERN_AX_AY_ABGLEICH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA052
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_START_ADAPTIVDATEN_WERKSMODUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA053
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STEUERN_ADAPTIVDATEN_SLW_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA05B
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RPA_RESET_STATISTIK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA068
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_DSC_DRUCKSENSOREN_KALIBRIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA070
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RPA_RESET_STANDARDISIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA074
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_DAC_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA087
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_DAC_AUSLOESUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA088
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_IPB_LED, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA123
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_FLM_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA130
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EXTERNE_ANFORDERUNG_GKU_IPB_ZAEHLER_RUECKSETZEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA1AA
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EXTERNE_ANFORDERUNG_EPB_ZAEHLER_RUECKSETZEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA1BE
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_DSC_PUMPENFUNKTIONSTEST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA222
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STEUERN_ANTI_POWER_HOP_FUNKTION_ZAEHLER_RUECKSETZEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA2A2
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STEUERN_EEPROM_SCHREIBEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAB5B
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_START_ADAPTIVDATEN_WERKSMODUS_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xABA3
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_GMK_DATEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD09A
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_BREMSPEDALWINKELSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0D2
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_CBS_BREMSE_DETAILS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD272
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_FES_COORDINT_SW_FEHLER_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD62E
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_FLM_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6D6
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EMF_LERNDATEN_STATISTIK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD804
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EMF_AKTUATOR_KOMBISATTEL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD805
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EMF_LERNDATEN_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD808
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EMF_LERNDATEN_AKTUATOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD80A
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EMF_KLEMMEN_KOMBISATTEL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD80C
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EMF_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD80D
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EXTERNE_ANFORDERUNG_GKU_IPB_ZAEHLER_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD81A
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_LESEN_ANTI_POWER_HOP_FUNKTION_ZAEHLER_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8EB
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_MODUS_ROLLENPRUEFSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB5B
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_GIERRATE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBD9
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_QUERBESCHLEUNIGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBDA
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_LAENGSBESCHLEUNIGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBDB
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_BREMSBELAGSSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBDF
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_REIFENPANNENANZEIGE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBE3
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_GESCHWINDIGKEIT_RAD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBE4
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_DSC_DRUCKSENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBE5
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_DSC_KLEMMEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBE7
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_VAKUUMSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBF4
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_BREMSPEDALWEGSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBF5
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_BREMSREKUPERATIONSMOMENT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDBF6
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_ADAPTIVDATEN_ZUSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC13
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RPA_LERNDATEN_STATISTIK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC14
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RPA_LERNDATEN_STD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC15
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_DSC_BREMSLICHTSCHALTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC1E
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_BREMSFLUESSIGKEITSSCHALTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC1F
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_GBRPLUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC3A
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_LLP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC42
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_ABS_FUNKTION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC6C
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_ASC_FUNKTION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC6D
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_FDR_FUNKTION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC6E
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_PBRK_FUNKTION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC6F
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_HDC_FUNKTION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC70
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_MIRROR_AAEPS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC8F
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_MIRROR_EV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC90
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_MIRROR_SBS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC91
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_MIRROR_TSC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC92
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_MIRROR_ZFM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC93
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_RDC_VERSION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC94
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_RDC_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC95
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_HS_INAKTIVEREIGNIS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC96
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_HS_KALIBRIEREREIGNIS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC97
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_MESSDATENBLOCK_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC98
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_MESSDATENBLOCK_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC99
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_MESSDATENBLOCK_3, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC9A
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_MESSDATENBLOCK_4, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC9B
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_HS_WARNEREIGNIS_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC9C
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_HS_WARNEREIGNIS_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC9D
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_HS_WARNEREIGNIS_3, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC9E
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_HS_WARNEREIGNIS_RUECKNAHME, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC9F
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_RE_LESEN_DRUCKCODIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCD9
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_HS_WARNEREIGNIS_WEICH_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCF1
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_HS_WARNEREIGNIS_WEICH_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCF2
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_RDC_HS_WARNEREIGNIS_WEICH_3, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCF3
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_STATUS_AUTO_EPB_ZAEHLER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD1B
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_EXTERNE_ANFORDERUNG_EPB_ZAEHLER_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE354
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC__SW_IDENTIFIKATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4000
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_FAHRZEUGZUSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5002
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_ANTRIEBSZUSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5004
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_SPANNUNGSMASTER_VERFUEGBAR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5008
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_FUNKTIONSZUSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x500B
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_INTERNER_FUNKTIONSZUSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x500C
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_FEHLERSPEICHERSPERRE_AKTIV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x500F
|
||||
//{ I3_ECU_DSC_TX, I3_ECU_DSC_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_DSC_NETZWERK_ROHDATEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x5010
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,24 +0,0 @@
|
|||
|
||||
|
||||
// -------- IBS (12V Battery monitor) --------------------------------------------------------------------------------------
|
||||
|
||||
#define I3_PID_EDM_STATUS_MESSWERTE_IBS 0x402B
|
||||
// Values from the IBS - the battery monitor
|
||||
|
||||
#define I3_RES_EDM_STAT_T_BATT_WERT (RXBUF_SINT(0)/10)
|
||||
#define I3_RES_EDM_STAT_T_BATT_WERT_UNIT '°C'
|
||||
#define I3_RES_EDM_STAT_T_BATT_WERT_TYPE float
|
||||
// Temp
|
||||
|
||||
#define I3_RES_EDM_STAT_U_BATT_WERT (RXBUF_UINT(2)/4000.0f+6.0f)
|
||||
#define I3_RES_EDM_STAT_U_BATT_WERT_UNIT 'V'
|
||||
#define I3_RES_EDM_STAT_U_BATT_WERT_TYPE float
|
||||
// Battery voltage
|
||||
|
||||
#define I3_RES_EDM_STAT_I_BATT_WERT (RXBUF_UINT(4)/12.5f-200.0f)
|
||||
#define I3_RES_EDM_STAT_I_BATT_WERT_UNIT 'A'
|
||||
#define I3_RES_EDM_STAT_I_BATT_WERT_TYPE float
|
||||
// Battery current
|
||||
|
||||
// POLL line
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_MESSWERTE_IBS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x402B
|
|
@ -1,45 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/edmei1.json: EDM 12: Electrical digital motor electronics (low voltage ECU)
|
||||
// This generated code makes it easier to process CANBUS messages from the EDM ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_ENTLUEFTUNG_KUEHLSYSTEM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA1D0
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_MCAMOS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xADFA
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_12V_NACHLADEHISTORIE_LOESCHEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAE02
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_12V_NACHLADEHISTOGRAMM_LOESCHEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAE03
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_EME_KAELTEMITTEL_ABSPERRVENTIL_ON_OFF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE22
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_PEDALWERTGEBER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE9C
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_REX_STATISTIK_BETRIEB, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEE1
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_REX_STATISTIK_DREHZAHL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEE2
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_ZYKLISCHES_NACHLADEN_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEFD
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_ZYKLISCHES_NACHLADEN_HISTOGRAMM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEFE
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_REX_STATISTIK_TEMPERATUR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF53
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_REX_STATISTIK_KILOMETER_KLASSEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF54
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_REX_STATISTIK_ZYKLEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF55
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_REX_STATISTIK_SOC_KILOMETER_KLASSEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF56
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_REX_STATISTIK_ZAEHLER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF5E
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STEUERN_INTERLOCK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1061
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_12V_NACHLADEHISTORIE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x409D
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_12V_NACHLADEHISTOGRAMM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x409E
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_E_S_KL_15_WUP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4101
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_E_A_PWG1_RAW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4102
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_E_A_PWG2_RAW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4103
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_E_A_TMEL_RAW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4104
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_BATTERIE_VOLTAGE_RAUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4105
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_A_U_PWG1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4106
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_A_U_PWG2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4107
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_E_A_MEL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4109
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_ECU_MICRO_TEMPERATUR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x410A
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_E_A_TMEL2_RAW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x410B
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_A_S_ELRLY, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4120
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_A_T_ELUE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4121
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_A_T_EWP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4122
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_A_S_KV1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4123
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_A_S_KV2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4124
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_A_S_MEL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4125
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_E_A_PWG1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4182
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_E_A_PWG2_FILTERED, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4183
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_TEMPERATUR_SENSOR_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4184
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_BATTERY_VOLTAGE_FILTERED, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4185
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STATUS_TEMPERATUR_SENSOR_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x418B
|
||||
//{ I3_ECU_EDM_TX, I3_ECU_EDM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EDM_STEUERN_AKKS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF0D5
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,76 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/eme_i01.json: EME 1A: Electrical machine electronics
|
||||
// This generated code makes it easier to process CANBUS messages from the EME ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_FS_LOESCHEN_PERMANENT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1060
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_FEHLERSPEICHER_ENDE_WERKSABLAUF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1061
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AKS_DIAG_STATUS_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4009
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_EME_DCDC_LV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDF6
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_EME_HVPM_DCDC_ANSTEUERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE00
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_EME_HVPM_HV_SYSTEM_ON_OFF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE02
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_EME_HVPM_ENERGIEBORDNETZ_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE04
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_EME_HVPM_PKOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE06
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_EME_HVIL_GESAMT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE0C
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_EME_ANSTEUERUNG_ELUP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE0E
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_EME_HVPM_DCDC_ALS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE1C
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_CPLD_VERSION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE2D
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_SYSTEMLEISTUNG_INV_EM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE39
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_LSC_LADEN_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE6E
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_CHARGE_ENABLE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE71
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_PARKSPERRE_SENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE74
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_HV_SPANNUNG_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE75
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_PARKSPERRE_SW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE76
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_PARKSPERRE_POSITION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE79
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_PARKSPERRE_STROM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE7B
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_PARKSPERRE_SPANNUNGEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE7C
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ROHSIG_AUSGANG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE7D
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ROHSIG_EINGANG_SENS_ELUP_BUDS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE7E
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ROHSIG_EINGANG_SENS_EM_INV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE7F
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ROHSIG_EINGANG_SENS_PARKSPERRE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE80
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ROHSIG_EINGANG_SENS_SG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE81
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ROHSIG_EINGANG_SENS_SLE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE82
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ROHSIG_EINGANG_SENS_DCDC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE83
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_BETRIEBSZUSTAND_SLE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE84
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_SLE_LEISTUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE85
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_SLE_SPANNUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE86
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_SLE_STROM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE87
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_SPANNUNG_KLEMME30B, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE88
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_STROM_DCDC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE89
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_STROM_EMASCHINE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE8A
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_TEMP_LE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE8C
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ZUSTAND_1_DCDC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE92
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ZUSTAND_DCDC_FEHLERBILD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE96
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_STATUS_CONNECTED_DRIVE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE9E
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_BUDS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEA5
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_TEMP_EMASCHINE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEA6
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ELEKTRISCHE_MASCHINE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEA7
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_ZUSTAND_2_DCDC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEA9
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_PARKSPERRE_VERSION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEB0
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_CTRL_VERSION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEBC
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_SPANNUNG_DCDC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEBD
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_SPANNUNG_LE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEBE
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_SYSSTATE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEBF
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_SPANNUNG_ELUP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEC2
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_STROM_ELUP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEC3
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_FAHRSTUFE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEDD
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_LSC_LADEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEDE
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_HISTOGRAMM_ANTRIEB, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEED
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_HISTOGRAMM_DEGRADATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEEF
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AUTOP_SBW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEFB
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_FAHRSTUFEN_ZAEHLER_SBW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEFF
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_HISTOGRAMM_LADEKOORDINATOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF49
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_INVERTER_HISTOGRAMM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF4D
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_INVERTER_RBM_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF58
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_DCDC_RBM_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF59
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_LADEGERAET_RBM_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF5A
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_LIEFERANT_TRACE_NUMMER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF5B
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_LADEGERAET_TEMPERATUR_HISTOGRAMM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFB5
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_LADEGERAET_HV_UEBERSTROM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFB7
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_EMASCHINE_MAX_DREHZAHL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFCE
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_LAST_HISTOGRAMM_EMASCHINE_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFD0
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_RATE_BASED_MONITORING, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE52F
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_LADEKOORDINATOR_INTERFACE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE5FE
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_DCDC_MESSGROESSEN_KOMPLETT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE5FF
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_RESETINFO_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF011
|
||||
//{ I3_ECU_EME_TX, I3_ECU_EME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EME_AE_FREILAUF_MODUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF050
|
|
@ -1,166 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/eps_i1.json: EPS 30: Power steering
|
||||
// This generated code makes it easier to process CANBUS messages from the EPS ecu in a BMW i3
|
||||
//
|
||||
|
||||
case I3_PID_EPS_STEUERN_EPS_PULLDRIFT_OFFSET_RESET: { // 0xA2BB
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_EPS_EPS_LENKWINKELSENSOR_KALIBRIERUNG_RESET: { // 0xAB69
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_EPS_EPS_INITIALISIERUNG_SERVICE: { // 0xAB6C
|
||||
if (datalen < 4) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_EPS_EPS_INITIALISIERUNG_SERVICE", 4);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_ROUTINE_STATUS = (RXBUF_UCHAR(0));
|
||||
// Execution status / Ausführungsstatus
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "EPS", "EPS_INITIALISIERUNG_SERVICE", "STAT_ROUTINE_STATUS", STAT_ROUTINE_STATUS, "\"0-n\"");
|
||||
|
||||
short STAT_LENKRADWINKEL_WERT = (RXBUF_SINT(1));
|
||||
// Steering wheel angle / Lenkradwinkel
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%d%s\n", "EPS", "EPS_INITIALISIERUNG_SERVICE", "STAT_LENKRADWINKEL_WERT", STAT_LENKRADWINKEL_WERT, "\"°\"");
|
||||
|
||||
char STAT_SENSOR_ZUSTAND_NR = (RXBUF_SCHAR(3));
|
||||
// Condition sensor pinion angle sensor / Zustand Sensor Ritzelwinkelsensor
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "EPS", "EPS_INITIALISIERUNG_SERVICE", "STAT_SENSOR_ZUSTAND_NR", STAT_SENSOR_ZUSTAND_NR, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_EPS_STEUERN_EPS_MULTITURNWERT_RESET: { // 0xAB7D
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_EPS_EPS_RITZELWINKELSENSOR: { // 0xDB57
|
||||
if (datalen < 7) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_EPS_EPS_RITZELWINKELSENSOR", 7);
|
||||
break;
|
||||
}
|
||||
|
||||
float STAT_RITZELWINKEL_WERT = (RXBUF_SINT32(0)/100.0f);
|
||||
// Pinion angle / Ritzelwinkel
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "EPS", "EPS_RITZELWINKELSENSOR", "STAT_RITZELWINKEL_WERT", STAT_RITZELWINKEL_WERT, "\"°\"");
|
||||
|
||||
short STAT_RITZELWINKELGESCHWINDIGKEIT_WERT = (RXBUF_SINT(4));
|
||||
// Pinion angle angular speed / Ritzelwinkel Winkelgeschwindigkeit
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%d%s\n", "EPS", "EPS_RITZELWINKELSENSOR", "STAT_RITZELWINKELGESCHWINDIGKEIT_WERT", STAT_RITZELWINKELGESCHWINDIGKEIT_WERT, "\"°/s\"");
|
||||
|
||||
char STAT_SENSOR_ZUSTAND_NR_0XDB57 = (RXBUF_SCHAR(6));
|
||||
// Condition sensor pinion angle sensor / Zustand Sensor Ritzelwinkelsensor
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "EPS", "EPS_RITZELWINKELSENSOR", "STAT_SENSOR_ZUSTAND_NR_0XDB57", STAT_SENSOR_ZUSTAND_NR_0XDB57, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_EPS_EPS_MOMENTENSENSOR: { // 0xDB99
|
||||
if (datalen < 3) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_EPS_EPS_MOMENTENSENSOR", 3);
|
||||
break;
|
||||
}
|
||||
|
||||
float STAT_MOMENT_WERT = (RXBUF_SINT(0)/128.0f);
|
||||
// Current moment / Aktuelles Moment
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "EPS", "EPS_MOMENTENSENSOR", "STAT_MOMENT_WERT", STAT_MOMENT_WERT, "\"Nm\"");
|
||||
|
||||
char STAT_SENSOR_ZUSTAND_NR_0XDB99 = (RXBUF_SCHAR(2));
|
||||
// State of the steering torque sensor / Zustand Sensor Lenkmoment
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "EPS", "EPS_MOMENTENSENSOR", "STAT_SENSOR_ZUSTAND_NR_0XDB99", STAT_SENSOR_ZUSTAND_NR_0XDB99, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_EPS_EPS_ZAHNSTANGENMITTE: { // 0xDC77
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_EPS_EPS_ZAHNSTANGENMITTE", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_ZAHNSTANGENMITTE_ZUSTAND_NR = (RXBUF_UCHAR(0));
|
||||
// State of rack center learned / Zustand Zahnstangenmitte gelernt
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "EPS", "EPS_ZAHNSTANGENMITTE", "STAT_ZAHNSTANGENMITTE_ZUSTAND_NR", STAT_ZAHNSTANGENMITTE_ZUSTAND_NR, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_EPS_GELERNTER_ZAHNSTANGENWEG: { // 0xDFDD
|
||||
if (datalen < 0) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_EPS_GELERNTER_ZAHNSTANGENWEG", 0);
|
||||
break;
|
||||
}
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_EPS_READHWMODIFICATIONINDEX: { // 0xF152
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_EPS_READHWMODIFICATIONINDEX", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_HW_MODIFICATION_INDEX_WERT = (RXBUF_UCHAR(0));
|
||||
// Index of hardware modification: FF: Not supported index / Index of hardware modification: FF: Not supported
|
||||
// index
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "EPS", "READHWMODIFICATIONINDEX", "STAT_HW_MODIFICATION_INDEX_WERT", STAT_HW_MODIFICATION_INDEX_WERT, "\"HEX\"");
|
||||
|
||||
unsigned char BF_22_F152_SUPPLIERINFO = (RXBUF_UCHAR(1));
|
||||
// Supplier info tab / Tab Supplierinfo
|
||||
// BF_22_F152_SUPPLIERINFO is a BITFIELD of size unsigned char. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// STAT_HWMODEL: Mask: 0xC0 - hardware model
|
||||
// STAT_SUPPLIERINFOFIELD: Mask: 0x3F - supplierInfo
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "EPS", "READHWMODIFICATIONINDEX", "BF_22_F152_SUPPLIERINFO", (unsigned long)BF_22_F152_SUPPLIERINFO, "\"Bit\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_EPS_FLASH_UPDATE_MULTITURNZAEHLER: { // 0x1234
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_EPS_FLASH_UPDATE_MULTITURNZAEHLER", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_SERVICE = (RXBUF_UCHAR(0));
|
||||
// Status of the service / Status des Service
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "EPS", "FLASH_UPDATE_MULTITURNZAEHLER", "STAT_SERVICE", STAT_SERVICE, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_PIC = (RXBUF_UCHAR(1));
|
||||
// Status of the processor to be flashed / Status des zu flashenden Prozessors
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "EPS", "FLASH_UPDATE_MULTITURNZAEHLER", "STAT_PIC", STAT_PIC, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
|
@ -1,125 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/eps_i1.json: EPS 30: Power steering
|
||||
// This generated code makes it easier to process CANBUS messages from the EPS ecu in a BMW i3
|
||||
//
|
||||
|
||||
#define I3_ECU_EPS_TX 0x06F130
|
||||
#define I3_ECU_EPS_RX 0x0630F1
|
||||
|
||||
#define I3_PID_EPS_STEUERN_EPS_PULLDRIFT_OFFSET_RESET 0xA2BB
|
||||
// Reset EPS pull-drift long-term offset / Reset EPS Pull-Drift Langzeit-Offset
|
||||
|
||||
// Skipping EPS_PENDELN on 0xAB56 which takes arguments
|
||||
|
||||
#define I3_PID_EPS_EPS_LENKWINKELSENSOR_KALIBRIERUNG_RESET 0xAB69
|
||||
// Start reset steering angle offset / Start Reset Lenkwinkel Offset
|
||||
|
||||
#define I3_PID_EPS_EPS_INITIALISIERUNG_SERVICE 0xAB6C
|
||||
// Start, stop and status initialization routine / Starten, Stoppen und Status Initialisierungsroutine
|
||||
|
||||
#define I3_RES_EPS_STAT_ROUTINE_STATUS (RXBUF_UCHAR(0))
|
||||
#define I3_RES_EPS_STAT_ROUTINE_STATUS_UNIT '0-n'
|
||||
#define I3_RES_EPS_STAT_ROUTINE_STATUS_TYPE unsigned char
|
||||
// Execution status / Ausführungsstatus
|
||||
|
||||
#define I3_RES_EPS_STAT_LENKRADWINKEL_WERT (RXBUF_SINT(1))
|
||||
#define I3_RES_EPS_STAT_LENKRADWINKEL_WERT_UNIT '°'
|
||||
#define I3_RES_EPS_STAT_LENKRADWINKEL_WERT_TYPE short
|
||||
// Steering wheel angle / Lenkradwinkel
|
||||
|
||||
#define I3_RES_EPS_STAT_SENSOR_ZUSTAND_NR (RXBUF_SCHAR(3))
|
||||
#define I3_RES_EPS_STAT_SENSOR_ZUSTAND_NR_UNIT '0-n'
|
||||
#define I3_RES_EPS_STAT_SENSOR_ZUSTAND_NR_TYPE char
|
||||
// Condition sensor pinion angle sensor / Zustand Sensor Ritzelwinkelsensor
|
||||
|
||||
// Skipping EPS_VERFAHREN on 0xAB71 which takes arguments
|
||||
|
||||
// Skipping EPS_INITIALISIERUNG_WERK on 0xAB72 which takes arguments
|
||||
|
||||
#define I3_PID_EPS_STEUERN_EPS_MULTITURNWERT_RESET 0xAB7D
|
||||
// Reset EPS multiturn value / Reset EPS Multiturnwert
|
||||
|
||||
#define I3_PID_EPS_EPS_RITZELWINKELSENSOR 0xDB57
|
||||
// Read out data EPS pinion angle / Auslesen Daten EPS Ritzelwinkel
|
||||
|
||||
#define I3_RES_EPS_STAT_RITZELWINKEL_WERT (RXBUF_SINT32(0)/100.0f)
|
||||
#define I3_RES_EPS_STAT_RITZELWINKEL_WERT_UNIT '°'
|
||||
#define I3_RES_EPS_STAT_RITZELWINKEL_WERT_TYPE float
|
||||
// Pinion angle / Ritzelwinkel
|
||||
|
||||
#define I3_RES_EPS_STAT_RITZELWINKELGESCHWINDIGKEIT_WERT (RXBUF_SINT(4))
|
||||
#define I3_RES_EPS_STAT_RITZELWINKELGESCHWINDIGKEIT_WERT_UNIT '°/s'
|
||||
#define I3_RES_EPS_STAT_RITZELWINKELGESCHWINDIGKEIT_WERT_TYPE short
|
||||
// Pinion angle angular speed / Ritzelwinkel Winkelgeschwindigkeit
|
||||
|
||||
#define I3_RES_EPS_STAT_SENSOR_ZUSTAND_NR_0XDB57 (RXBUF_SCHAR(6))
|
||||
#define I3_RES_EPS_STAT_SENSOR_ZUSTAND_NR_0XDB57_UNIT '0-n'
|
||||
#define I3_RES_EPS_STAT_SENSOR_ZUSTAND_NR_0XDB57_TYPE char
|
||||
// Condition sensor pinion angle sensor / Zustand Sensor Ritzelwinkelsensor
|
||||
|
||||
// Skipping EPS_LENKWINKELSENSOR_KALIBRIERUNG on 0xDB5A which takes arguments
|
||||
|
||||
#define I3_PID_EPS_EPS_MOMENTENSENSOR 0xDB99
|
||||
// Reading out data from the steering torque sensor / Auslesen Daten Sensor Lenkmoment
|
||||
|
||||
#define I3_RES_EPS_STAT_MOMENT_WERT (RXBUF_SINT(0)/128.0f)
|
||||
#define I3_RES_EPS_STAT_MOMENT_WERT_UNIT 'Nm'
|
||||
#define I3_RES_EPS_STAT_MOMENT_WERT_TYPE float
|
||||
// Current moment / Aktuelles Moment
|
||||
|
||||
#define I3_RES_EPS_STAT_SENSOR_ZUSTAND_NR_0XDB99 (RXBUF_SCHAR(2))
|
||||
#define I3_RES_EPS_STAT_SENSOR_ZUSTAND_NR_0XDB99_UNIT '0-n'
|
||||
#define I3_RES_EPS_STAT_SENSOR_ZUSTAND_NR_0XDB99_TYPE char
|
||||
// State of the steering torque sensor / Zustand Sensor Lenkmoment
|
||||
|
||||
#define I3_PID_EPS_EPS_ZAHNSTANGENMITTE 0xDC77
|
||||
// State of rack center learned / Zustand Zahnstangenmitte gelernt
|
||||
|
||||
#define I3_RES_EPS_STAT_ZAHNSTANGENMITTE_ZUSTAND_NR (RXBUF_UCHAR(0))
|
||||
#define I3_RES_EPS_STAT_ZAHNSTANGENMITTE_ZUSTAND_NR_UNIT '0-n'
|
||||
#define I3_RES_EPS_STAT_ZAHNSTANGENMITTE_ZUSTAND_NR_TYPE unsigned char
|
||||
// State of rack center learned / Zustand Zahnstangenmitte gelernt
|
||||
|
||||
#define I3_PID_EPS_GELERNTER_ZAHNSTANGENWEG 0xDFDD
|
||||
// GELERNTER_ZAHNSTANGENWEG / GELERNTER_ZAHNSTANGENWEG
|
||||
|
||||
// Can't process STAT_LENKRADWINKEL_LIEFERANT_WERT - don't know type motorola float (*** this will mean all the following offsets are wrong!!! ****)
|
||||
|
||||
// Can't process STAT_LENKRADWINKEL_AUTOMATISCH_GELERNT_WERT - don't know type motorola float (*** this will mean all the following offsets are wrong!!! ****)
|
||||
|
||||
#define I3_PID_EPS_READHWMODIFICATIONINDEX 0xF152
|
||||
// This service is only used if there has been a slight hardware change on the control unit that did not result
|
||||
// in a change in the part number or the hardware SGBM IDs. Such a change cannot be diagnosed from the outside,
|
||||
// which is why this service was introduced for it. / Dieser Service kommt nur zum Einsatz, wenn es eine
|
||||
// geringfügige Hardwareänderung an dem Steuergerät gegeben hat, die nicht zu einer Änderung der Sachnummer bzw.
|
||||
// der Hardware SGBM-IDs geführt hat. Eine solche Änderung ist von außen nicht diagnostizierbar, daher wurde
|
||||
// dieser Dienst dafür eingeführt.
|
||||
|
||||
#define I3_RES_EPS_STAT_HW_MODIFICATION_INDEX_WERT (RXBUF_UCHAR(0))
|
||||
#define I3_RES_EPS_STAT_HW_MODIFICATION_INDEX_WERT_UNIT 'HEX'
|
||||
#define I3_RES_EPS_STAT_HW_MODIFICATION_INDEX_WERT_TYPE unsigned char
|
||||
// Index of hardware modification: FF: Not supported index / Index of hardware modification: FF: Not supported
|
||||
// index
|
||||
|
||||
// BF_22_F152_SUPPLIERINFO is a BITFIELD of size unsigned char. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// Supplier info tab / Tab Supplierinfo
|
||||
// STAT_HWMODEL: Mask: 0xC0 - hardware model
|
||||
// STAT_SUPPLIERINFOFIELD: Mask: 0x3F - supplierInfo
|
||||
#define I3_RES_EPS_BF_22_F152_SUPPLIERINFO (RXBUF_UCHAR(1))
|
||||
#define I3_RES_EPS_BF_22_F152_SUPPLIERINFO_UNIT 'Bit'
|
||||
#define I3_RES_EPS_BF_22_F152_SUPPLIERINFO_TYPE unsigned char
|
||||
// Supplier info tab / Tab Supplierinfo
|
||||
|
||||
#define I3_PID_EPS_FLASH_UPDATE_MULTITURNZAEHLER 0x1234
|
||||
// Flash update of the multiturn counter / Flash Update des Multiturnzählers
|
||||
|
||||
#define I3_RES_EPS_STAT_SERVICE (RXBUF_UCHAR(0))
|
||||
#define I3_RES_EPS_STAT_SERVICE_UNIT '0-n'
|
||||
#define I3_RES_EPS_STAT_SERVICE_TYPE unsigned char
|
||||
// Status of the service / Status des Service
|
||||
|
||||
#define I3_RES_EPS_STAT_PIC (RXBUF_UCHAR(1))
|
||||
#define I3_RES_EPS_STAT_PIC_UNIT '0-n'
|
||||
#define I3_RES_EPS_STAT_PIC_TYPE unsigned char
|
||||
// Status of the processor to be flashed / Status des zu flashenden Prozessors
|
|
@ -1,15 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/eps_i1.json: EPS 30: Power steering
|
||||
// This generated code makes it easier to process CANBUS messages from the EPS ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_STEUERN_EPS_PULLDRIFT_OFFSET_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA2BB
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_EPS_LENKWINKELSENSOR_KALIBRIERUNG_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAB69
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_EPS_INITIALISIERUNG_SERVICE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAB6C
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_STEUERN_EPS_MULTITURNWERT_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAB7D
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_EPS_RITZELWINKELSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB57
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_EPS_MOMENTENSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB99
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_EPS_ZAHNSTANGENMITTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDC77
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_GELERNTER_ZAHNSTANGENWEG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFDD
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_READHWMODIFICATIONINDEX, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF152
|
||||
//{ I3_ECU_EPS_TX, I3_ECU_EPS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_EPS_FLASH_UPDATE_MULTITURNZAEHLER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1234
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,35 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/fzd_f15.json: FZD 56: Roof function centre
|
||||
// This generated code makes it easier to process CANBUS messages from the FZD ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_SINE_ANSTEUERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAA70
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_SINE_BATT_LEVEL_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAA71
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_ALARM_ANZAHL_LOESCHEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAA7A
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_HALLSENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD180
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_ESH_TASTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD192
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_ESH_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD193
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_ESH_TASTER_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD194
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD195
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_BEWEGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD196
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_STATUS_DETAIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1A6
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_RELAIS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1B9
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_ESH_BEWEGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1BA
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_ESH_HALLSENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1BB
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_ESH_RELAIS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1BC
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_ESH_STATUS_DETAIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1BD
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_STATISTIKZAEHLER_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1BE
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_ESH_STATISTIKZAEHLER_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1C0
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_SINE_LIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCA1
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_SINE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCA2
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_SINE_BATT_LEVEL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCA3
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_SINE_NEIGUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCA9
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_INTERN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCAC
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_ALARM_AUSGELOEST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCB0
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCB1
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_USIS_EMPFINDLICHKEIT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCB2
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_KLAPPENKONTAKTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDCDD
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_ESH_BEWERTUNG_KENNLINIE_SCHIEBELAGE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4107
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_BEWERTUNG_KENNLINIE_AUSSTELLLAGE_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4108
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_SHD_BEWERTUNG_KENNLINIE_SCHIEBELAGE_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4109
|
||||
//{ I3_ECU_FZD_TX, I3_ECU_FZD_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_FZD_DWA_ALARM_ANZAHL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6012
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,111 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/ihx_i1.json: IHX 78: Integrated automatic heating/aircon
|
||||
// This generated code makes it easier to process CANBUS messages from the IHX ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_EDH_VERRIEGELUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA11B
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_WP_BEFUELLUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA11C
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_WP_EXP_VENTIL_KALIBRIEREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA11D
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SITZHEIZUNG_VORNE_TASTER_LINKS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD15D
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SITZHEIZUNG_VORNE_TASTER_RECHTS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD15E
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SITZHEIZUNG_VORNE_LED_RECHTS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD15F
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SITZHEIZUNG_VORNE_LED_LINKS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD160
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_FBM_TASTEN_VORHANDEN_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD599
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_TEMP_FUSSRAUM_LINKS_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD859
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_TEMP_FUSSRAUM_RECHTS_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD85A
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_TEMP_INNEN_UNBELUEFTET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD85C
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_POTI_SCHICHTUNG_FOND_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD860
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KONFIGURATION_KLIMA_VORN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD866
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KAELTEMITTEL_MEDIUM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD868
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_STEUERN_MOTOREN_KALIBRIERLAUF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD88D
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SCHRITTMOTOR_FEHLER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD88E
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_STEUERN_SELBSTTEST_SCHRITTMOTOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD88F
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_VORHANDEN_FONDSCHICHTUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8AA
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SOLARSENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8AB
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_AUC_SENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8AC
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_EKK_DREHZAHLERHOEHUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8C2
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_EKMV_ANALOGWERTE_GEN20, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8C4
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_EKMV_BETRIEBSZUSTAND_GEN20, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8C5
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_EDH_STATUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8CD
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KONFIGURATION_KLIMA_PRODUKTLINIE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8CE
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_HV_POWERMANAGEMENT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8D2
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_HV_PM_EDH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8D3
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_KUEHLMITTELTEMPERATUR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD8D4
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SOLLWERT_ELEKTRISCHER_ZUHEIZER_VORN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD902
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_OUT_ZUSATZWASSERPUMPE_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD904
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_TIMER_EINLAUFSCHUTZ, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD905
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SITZHEIZUNG_VORNE_TASTER_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD90E
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_VORHANDEN_KOMPRESSORKUPPLUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD916
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_LUFTVERTEILUNG_LI_RE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD91A
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_OUT_KLIMAKOMPRESSOR_PWM_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD91D
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_KLAPPEN_PRG_MITTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD928
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_GEBLAESESTUFE_ANZ, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD92B
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_OFF_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD92C
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_PRG_DEFROST_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD92D
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_PRG_MAX_AC_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD92E
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_PRG_AUC_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD930
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_PRG_UMLUFT_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD931
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_PRG_HHS_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD932
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_PRG_AC_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD934
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_PRG_KLIMASTIL_MITTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD936
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_PRG_STANDLUEFTEN_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD939
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_GEBLAESELEISTUNG_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD93F
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_DEFROST_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD941
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_BELUEFTUNG_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD942
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_FUSSRAUM_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD947
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_SCHICHTUNG_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD949
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_SCHICHTUNG_LI_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD94A
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_SCHICHTUNG_RE_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD94B
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_UMLUFT_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD94D
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_TEMP_LUFT_FOND_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD950
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_MOTOR_KALIBRIERLAUF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD953
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SELBSTTEST_SCHRITTMOTORE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD954
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_TEMP_BELUEFTUNG_LINKS_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD957
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_TEMP_BELUEFTUNG_RECHTS_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD958
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_DRUCKSENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD959
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_VORHANDEN_WASSERVENTIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD95A
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_TEMP_VERDAMPFER_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD95C
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_KOMPRESSORFREIGABE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD960
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_SOLARSENSOR_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD962
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_AUC_SENSOR_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD964
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_BESCHLAGSENSOR_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD966
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_KAELTEMITTELDRUCK_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD968
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_IN_TEMP_AUSSEN_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD96B
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BESCHLAGSENSOR_VORHANDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD96D
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_TEMPERATUR_SOLLWERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD977
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_LIN_1_ADRESSEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD97B
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_STEUERN_RESET_LIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD97C
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLAPPEN_VERSTELLBEREICH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD980
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_STEUERN_AUTOADR_KLAPPENMOTOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD981
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_TEMPERATUR_MITTE_SOLLWERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD988
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_MISCHLUFT_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD98A
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_ZENTRALANTRIEB_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD98B
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_MISCHLUFT_LINKS_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD98C
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLP_POS_MISCHLUFT_RECHTS_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD98E
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_MIKROSCHALTER_ZENTRALANTRIEB, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD98F
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_TEMP_BELUEFTUNG_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD990
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_TEMP_FUSSRAUM_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD991
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_VORHANDEN_AUDIOBEDIENTEIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD995
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_POTI_SCHICHTUNG_MITTE_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD998
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_MOT_POS_BEL_FUSS_LI_RE_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD99C
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_VARIANTE_AUDIOBEDIENTEIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD9A0
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_BUS_OUT_KOMPRESSORKUPPLUNG_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD9A1
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_VORHANDEN_EKMV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD9A4
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_KLIMA_VORN_PRG_HFS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD9A8
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_WAERMEPUMPE_SENSOREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD9AC
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_VORHANDEN_EDH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD9AE
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_VORHANDEN_WAERMEPUMPE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD9AF
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_VORHANDEN_FSH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD9B1
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_SPANNUNG_KLEMME_30_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAD8
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_STATUS_KLEMME_R_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAFD
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_STATUS_KLEMME_15_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAFE
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_STATUS_KLEMME_30B_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB06
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_STATUS_KLEMME_50_EIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB10
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_HV_EDH_STECKVERBINDUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFC0
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_HV_EKMV_STECKVERBINDUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFC1
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_UWB_CPD_DIAGINFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4001
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX_UWB_HKLUSV_DIAGINFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4002
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX__ADC_EINGAENGE_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4010
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX__STAT_STANDHEIZUNG_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4011
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX__STANDHEIZUNG_AUSGANG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4012
|
||||
//{ I3_ECU_IHX_TX, I3_ECU_IHX_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_IHX__VALEO_LESEN_SPEICHER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4020
|
|
@ -1,952 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/kafas20.json: KAF 5D: Camera based driver assistance system
|
||||
// This generated code makes it easier to process CANBUS messages from the KAF ecu in a BMW i3
|
||||
//
|
||||
|
||||
case I3_PID_KAF__FASTA_FLA_DATA: { // 0x4001
|
||||
if (datalen < 24) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__FASTA_FLA_DATA", 24);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_FLA_OP_TIME_WERT = (RXBUF_UINT32(0));
|
||||
// Duration of FLA activated by driver [s] / Zeitdauer FLA durch Fahrer aktiviert [s]
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_FLA_OP_TIME_WERT", STAT_FLA_OP_TIME_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_DELTA_TIME_FLA_NIGHT_WERT = (RXBUF_UINT32(4));
|
||||
// Duration in the ambient brightness FLA activation allowed [s] / Zeitdauer in der Umgebungshelligkeit FLA
|
||||
// Aktivierung erlaubt [s]
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_DELTA_TIME_FLA_NIGHT_WERT", STAT_DELTA_TIME_FLA_NIGHT_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_DELTA_TIME_FLA_ACT_HB_WERT = (RXBUF_UINT32(8));
|
||||
// Duration of switch-on recommendation FLA [s] / Zeitdauer Einschaltempfehlung FLA [s]
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_DELTA_TIME_FLA_ACT_HB_WERT", STAT_DELTA_TIME_FLA_ACT_HB_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_DELTA_TIME_FLA_ACT_LB_WERT = (RXBUF_UINT32(12));
|
||||
// Duration of switch-off recommendation [s] / Zeitdauer Abschaltempfehlung [s]
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_DELTA_TIME_FLA_ACT_LB_WERT", STAT_DELTA_TIME_FLA_ACT_LB_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_FLA_COUNT_OVERRIDE_WERT = (RXBUF_UINT32(16));
|
||||
// Number of driver overloads / Anzahl Übersteuerung durch Fahrer
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_FLA_COUNT_OVERRIDE_WERT", STAT_FLA_COUNT_OVERRIDE_WERT, "\"Counts\"");
|
||||
|
||||
unsigned long STAT_OPTIME_TOTAL_WERT = (RXBUF_UINT32(20));
|
||||
// Absolute operating time counter [s] / Absoluter Betriebszeitzähler [s]
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_OPTIME_TOTAL_WERT", STAT_OPTIME_TOTAL_WERT, "\"s\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__KAFAS_ECU_DATA: { // 0x4002
|
||||
if (datalen < 38) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__KAFAS_ECU_DATA", 38);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_CNTRY_CODE_WERT = (RXBUF_UINT(0));
|
||||
// ISO Country Code of the country in which the vehicle covered the most kilometers. / ISO Country Code des
|
||||
// Landes in welchem das Fahrzeug die meisten Kilometer zurückgelegt hat.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_CNTRY_CODE_WERT", STAT_CNTRY_CODE_WERT, "\"Counts\"");
|
||||
|
||||
unsigned long STAT_OPTIME_TOTAL_WERT_0X4002 = (RXBUF_UINT32(2));
|
||||
// Absolute operating time counter / Absoluter Betriebszeitzähler
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_OPTIME_TOTAL_WERT_0X4002", STAT_OPTIME_TOTAL_WERT_0X4002, "\"s\"");
|
||||
|
||||
unsigned long STAT_OPTIME_NIGHT_WERT = (RXBUF_UINT32(6));
|
||||
// Operating time at night. Based on BV-Algo overnight decision / Betriebszeit in der Nacht. Basiert auf BV-Algo
|
||||
// Nachtentscheidung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_OPTIME_NIGHT_WERT", STAT_OPTIME_NIGHT_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_OPTIME_WIPER_WERT = (RXBUF_UINT32(10));
|
||||
// Operating time during rain. Based on Algo Rain Decision / Betriebszeit während Regen. Basiert auf Algo
|
||||
// Regenentscheidung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_OPTIME_WIPER_WERT", STAT_OPTIME_WIPER_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_DRIVEN_DIST_TOTAL_WERT = (RXBUF_UINT32(14));
|
||||
// Absolutely driven kilometers / Absolut gefahrene Kilometer
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_TOTAL_WERT", STAT_DRIVEN_DIST_TOTAL_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_DRIVEN_DIST_URBAN_WERT = (RXBUF_UINT32(18));
|
||||
// Total kilometers driven on urban or residential area roads / Absolut gefahrene Kilometer auf Straßentyp Urban
|
||||
// oder Residential Area
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_URBAN_WERT", STAT_DRIVEN_DIST_URBAN_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_DRIVEN_DIST_RURAL_WERT = (RXBUF_UINT32(22));
|
||||
// Absolute kilometers driven on the rural or highway type / Absolut gefahrene Kilometer auf Straßentyp Rural
|
||||
// oder Highway
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_RURAL_WERT", STAT_DRIVEN_DIST_RURAL_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_DRIVEN_DIST_MOWAY_WERT = (RXBUF_UINT32(26));
|
||||
// Absolute kilometers driven on road type Motorway / Absolut gefahrene Kilometer auf Straßentyp Motorway
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_MOWAY_WERT", STAT_DRIVEN_DIST_MOWAY_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_DRIVEN_DIST_NA_WERT = (RXBUF_UINT32(30));
|
||||
// Absolute kilometers driven with no available road type / Absolut gefahrene Kilometer ohne verfügbaren
|
||||
// Straßentyp
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_NA_WERT", STAT_DRIVEN_DIST_NA_WERT, "\"km\"");
|
||||
|
||||
unsigned short STAT_AMNT_EYEQ_RESET_WERT = (RXBUF_UINT(34));
|
||||
// Number of resets of the BV processor performed during normal operation / Anzahl der erfolgten Resets des
|
||||
// BV-Prozessors während normalem Betrieb
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_AMNT_EYEQ_RESET_WERT", STAT_AMNT_EYEQ_RESET_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_AMNT_ONLINE_CALIB_WERT = (RXBUF_UINT(36));
|
||||
// Counter for the completed online calibration processes / Zähler über die Erfolgten Online-Kalibriervorgänge
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_AMNT_ONLINE_CALIB_WERT", STAT_AMNT_ONLINE_CALIB_WERT, "\"Counts\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__KAFAS_TLC_DATA: { // 0x4003
|
||||
if (datalen < 20) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__KAFAS_TLC_DATA", 20);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_TLC_DRIV_LEFT_AVAIL_WERT = (RXBUF_UINT32(0));
|
||||
// Absolute kilometers driven with availability on the left / Absolut gefahrene Kilometer mit Verfübarkeit auf
|
||||
// der linken Seite
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_DRIV_LEFT_AVAIL_WERT", STAT_TLC_DRIV_LEFT_AVAIL_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_TLC_DRIV_RIGHT_AVAIL_WERT = (RXBUF_UINT32(4));
|
||||
// Absolute kilometers driven with availability on the right / Absolut gefahrene Kilometer mit Verfübarkeit auf
|
||||
// der rechten Seite
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_DRIV_RIGHT_AVAIL_WERT", STAT_TLC_DRIV_RIGHT_AVAIL_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_TLC_DRIV_DIST_REL_SPD_WERT = (RXBUF_UINT32(8));
|
||||
// Absolutely driven with active TLC and relevant speed / Absolut gefahrene mit aktivem TLC und relavanter
|
||||
// Geschwindigkeit
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_DRIV_DIST_REL_SPD_WERT", STAT_TLC_DRIV_DIST_REL_SPD_WERT, "\"km\"");
|
||||
|
||||
unsigned short STAT_TLC_AMNT_WARN_WERT = (RXBUF_UINT(12));
|
||||
// Number of issued TLC warnings / Anzahl ausgegebener TLC Warnungen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_AMNT_WARN_WERT", STAT_TLC_AMNT_WARN_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_TLC_AMNT_DEACT_WERT = (RXBUF_UINT(14));
|
||||
// Number of times the TLC function was deactivated by the driver / Anzahl der Deaktivierung der TLC-Funktion
|
||||
// durch den Fahrer
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_AMNT_DEACT_WERT", STAT_TLC_AMNT_DEACT_WERT, "\"Counts\"");
|
||||
|
||||
unsigned long STAT_TLC_DRIV_DIST_ACT_WERT = (RXBUF_UINT32(16));
|
||||
// Kilometers driven with activated TLC / Gefahrene Kilometer mit aktiviertem TLC
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_DRIV_DIST_ACT_WERT", STAT_TLC_DRIV_DIST_ACT_WERT, "\"km\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_KAFAS_FCW_DATA: { // 0x4004
|
||||
if (datalen < 42) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_KAFAS_FCW_DATA", 42);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_FCW_DRIVEN_DIST_ACT_WERT = (RXBUF_UINT32(0));
|
||||
// Total kilometers driven with activated FCW function / Absolut gefahrene Kilometer mit aktivierter FCW Funktion
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_ACT_WERT", STAT_FCW_DRIVEN_DIST_ACT_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_FCW_DRIVEN_DIST_FS_WERT = (RXBUF_UINT32(4));
|
||||
// Total kilometers driven in fail safe mode / Absolut gefahrene Kilometer im Fail Safe Mode
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FS_WERT", STAT_FCW_DRIVEN_DIST_FS_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_FCW_DRIVEN_DIST_FS_ACT_WERT = (RXBUF_UINT32(8));
|
||||
// Total kilometers driven with activated FCW function in fail safe mode / Absolut gefahrene Kilometer mit
|
||||
// aktivierter FCW Funktion im Fail Safe Mode
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FS_ACT_WERT", STAT_FCW_DRIVEN_DIST_FS_ACT_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_FCW_DRIVEN_DIST_FOR_OFF_WERT = (RXBUF_UINT32(12));
|
||||
// Absolutely driven kilometers with activated FCW function and advance warning level off / Absolut gefahrene
|
||||
// Kilometer mit aktivierter FCW Funktion und Vorwarnstufe aus
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FOR_OFF_WERT", STAT_FCW_DRIVEN_DIST_FOR_OFF_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_FCW_DRIVEN_DIST_FOR_EARLY_WERT = (RXBUF_UINT32(16));
|
||||
// Total kilometers traveled with activated FCW function and early warning level / Absolut gefahrene Kilometer
|
||||
// mit aktivierter FCW Funktion und Vorwarnstufe früh
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FOR_EARLY_WERT", STAT_FCW_DRIVEN_DIST_FOR_EARLY_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_FCW_DRIVEN_DIST_FOR_LATE_WERT = (RXBUF_UINT32(20));
|
||||
// Total kilometers driven with activated FCW function and late warning level / Absolut gefahrene Kilometer mit
|
||||
// aktivierter FCW Funktion und Vorwarnstufe spät
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FOR_LATE_WERT", STAT_FCW_DRIVEN_DIST_FOR_LATE_WERT, "\"km\"");
|
||||
|
||||
unsigned short STAT_FCW_AMNT_FOR_WERT = (RXBUF_UINT(24));
|
||||
// Number of pre-warnings / Anzahl der Vorwarnungen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_FOR_WERT", STAT_FCW_AMNT_FOR_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_FCW_AMNT_ACUTE_WERT = (RXBUF_UINT(26));
|
||||
// Number of acute warnings / Anzahl der Akutwarnungen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_ACUTE_WERT", STAT_FCW_AMNT_ACUTE_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_FCW_AMNT_ACUTE_45_WERT = (RXBUF_UINT(28));
|
||||
// Number of acute warnings in the range 0 km / h¿ 45 km / h / Anzahl der Akutwarnungen im Bereich 0 km/h¿ 45
|
||||
// km/h
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_ACUTE_45_WERT", STAT_FCW_AMNT_ACUTE_45_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_FCW_AMNT_ACUTE_90_WERT = (RXBUF_UINT(30));
|
||||
// Number of acute warnings in the range 45 km / h¿ 90 km / h / Anzahl der Akutwarnungen im Bereich 45 km/h¿ 90
|
||||
// km/h
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_ACUTE_90_WERT", STAT_FCW_AMNT_ACUTE_90_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_FCW_AMNT_ACUTE_135_WERT = (RXBUF_UINT(32));
|
||||
// Number of acute warnings in the range 90 km / h¿ 135 km / h / Anzahl der Akutwarnungen im Bereich 90 km/h¿ 135
|
||||
// km/h
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_ACUTE_135_WERT", STAT_FCW_AMNT_ACUTE_135_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_FCW_PREFILLS_WERT = (RXBUF_UINT(34));
|
||||
// Number of pre-fill requests triggered by FCW / Anzahl der von FCW ausgelösten Pre-Fill Anforderungen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_PREFILLS_WERT", STAT_FCW_PREFILLS_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_FCW_PRECRASH_WERT = (RXBUF_UINT(36));
|
||||
// Number of pre-crash messages triggered by FCW / Anzahl der von FCW ausgelösten Pre-Crash Meldungen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_PRECRASH_WERT", STAT_FCW_PRECRASH_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_FCW_DEACT_WERT = (RXBUF_UINT(38));
|
||||
// Number of times the FCW function has been deactivated by the driver / Anzahl der Deaktivierung der
|
||||
// FCW-Funktion durch den Fahrer
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DEACT_WERT", STAT_FCW_DEACT_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_FCW_FS_CC_WERT = (RXBUF_UINT(40));
|
||||
// Number of triggered Fail-Save CC messages / Anzahl der ausgelösten Fail-Save CC-Meldungen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_FS_CC_WERT", STAT_FCW_FS_CC_WERT, "\"Counts\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__KAFAS_SLI_DATA: { // 0x4005
|
||||
if (datalen < 27) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__KAFAS_SLI_DATA", 27);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_SLI_AMT_CAM_DET_WERT = (RXBUF_UINT32(0));
|
||||
// Number of camera detections of traffic signs / Anzahl der Kameradetektionen von Verkehrsschildern
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_AMT_CAM_DET_WERT", STAT_SLI_AMT_CAM_DET_WERT, "\"Counts\"");
|
||||
|
||||
char STAT_SLI_MATCH_URBAN_WERT = (RXBUF_UCHAR(4));
|
||||
// Share of camera detection that match the explicit speed limits on the street type Urban or Residential Area /
|
||||
// Anteil der Kameradetektion die mit den expliziten Speed Limits auf dem Straßentyp Urban oder Residential Area
|
||||
// übereinstimmen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_MATCH_URBAN_WERT", STAT_SLI_MATCH_URBAN_WERT, "\"Counts\"");
|
||||
|
||||
char STAT_SLI_MATCH_RURAL_WERT = (RXBUF_UCHAR(5));
|
||||
// Proportion of camera detection that corresponds to the explicit speed limits on the road type rural or highway
|
||||
// / Anteil der Kameradetektion die mit den expliziten Speed Limits auf dem Straßentyp Rural oder Highway
|
||||
// übereinstimmen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_MATCH_RURAL_WERT", STAT_SLI_MATCH_RURAL_WERT, "\"Counts\"");
|
||||
|
||||
char STAT_SLI_MATCH_MOWAY_WERT = (RXBUF_UCHAR(6));
|
||||
// Percentage of camera detection that corresponds to the explicit speed limits on the road type Motorway /
|
||||
// Anteil der Kameradetektion die mit den expliziten Speed Limits auf dem Straßentyp Motorway übereinstimmen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_MATCH_MOWAY_WERT", STAT_SLI_MATCH_MOWAY_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_SLI_REP_URBAN_WERT = (RXBUF_UINT(7));
|
||||
// Average distance at which signs repeat on the street type Urban or Residential Area / Durschnittlich Enfernung
|
||||
// in welcher sich Schilder auf dem Straßentyp Urbanoder Residential Area wiederholen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_REP_URBAN_WERT", STAT_SLI_REP_URBAN_WERT, "\"m\"");
|
||||
|
||||
unsigned short STAT_SLI_REP_RURAL_WERT = (RXBUF_UINT(9));
|
||||
// Average distance at which signs repeat on the road type rural or highway / Durschnittlich Enfernung in welcher
|
||||
// sich Schilder auf dem Straßentyp Rural oder Highway wiederholen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_REP_RURAL_WERT", STAT_SLI_REP_RURAL_WERT, "\"m\"");
|
||||
|
||||
unsigned short STAT_SLI_REP_MOWAY_WERT = (RXBUF_UINT(11));
|
||||
// Average distance at which signs repeat on the road type Motorway / Durschnittlich Enfernung in welcher sich
|
||||
// Schilder auf dem Straßentyp Motorway wiederholen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_REP_MOWAY_WERT", STAT_SLI_REP_MOWAY_WERT, "\"m\"");
|
||||
|
||||
unsigned long STAT_SLI_OVER_SLI_WERT = (RXBUF_UINT32(13));
|
||||
// Distance driven at least 20 km / h above the detected speed limit / Gefahrene Entfernung mit mindestens 20
|
||||
// km/h über dem erkannten Speed Limit
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_OVER_SLI_WERT", STAT_SLI_OVER_SLI_WERT, "\"km\"");
|
||||
|
||||
unsigned short STAT_SLI_SSS_TIME_WERT = (RXBUF_UINT(17));
|
||||
// Number of recognized additional characters with time restriction / Anzahl der erkannten Zusatzzeichen mit
|
||||
// Zeitbeschränkung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_SSS_TIME_WERT", STAT_SLI_SSS_TIME_WERT, "\"Counts\"");
|
||||
|
||||
unsigned long STAT_SLI_NPI_WERT = (RXBUF_UINT32(19));
|
||||
// Kilometers driven with no overtaking recognized / Gefahrene Kilometer mit erkanntem Überholverbot
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_NPI_WERT", STAT_SLI_NPI_WERT, "\"km\"");
|
||||
|
||||
unsigned short STAT_SLI_NP_WITHDRAW_DIST_WERT = (RXBUF_UINT(23));
|
||||
// Number of cancellations of overtaking ban due to exceeding the stopping distance / Anzahl Aufhebungen
|
||||
// Überholverbot infolge Überschreitung Haltedistanz
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_NP_WITHDRAW_DIST_WERT", STAT_SLI_NP_WITHDRAW_DIST_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_SLI_NP_WITHDRAW_SIGN_WERT = (RXBUF_UINT(25));
|
||||
// Number of cancellations No overtaking due to detection of a lifting sign / Anzahl Aufhebungen Überholverbot
|
||||
// infolge Detektion Aufhebungsschild
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_NP_WITHDRAW_SIGN_WERT", STAT_SLI_NP_WITHDRAW_SIGN_WERT, "\"Counts\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__STATUS_SAFETY_DIAG_INFO: { // 0x400E
|
||||
if (datalen < 7) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__STATUS_SAFETY_DIAG_INFO", 7);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_BYTE_0_FAULT_WERT = (RXBUF_UCHAR(0));
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0
|
||||
// UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2 UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5
|
||||
// VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7 V_BAT1_freeze_fault / The parameter values shall indicate 0 for
|
||||
// fault_not_present and 1 for fault_present. Bit: 0 UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2
|
||||
// UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5 VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7
|
||||
// V_BAT1_freeze_fault
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_0_FAULT_WERT", STAT_BYTE_0_FAULT_WERT, "\"HEX\"");
|
||||
|
||||
unsigned char STAT_BYTE_1_FAULT_WERT = (RXBUF_UCHAR(1));
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0
|
||||
// UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2 UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5
|
||||
// VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7 V_BAT1_freeze_fault / The parameter values shall indicate 0 for
|
||||
// fault_not_present and 1 for fault_present. Bit: 0 UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2
|
||||
// UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5 VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7
|
||||
// V_BAT1_freeze_fault
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_1_FAULT_WERT", STAT_BYTE_1_FAULT_WERT, "\"HEX\"");
|
||||
|
||||
unsigned char STAT_BYTE_2_FAULT_WERT = (RXBUF_UCHAR(2));
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0
|
||||
// UP1V0D_voltage_fault 1 UP1V8D_voltage_fault 2 UP2V5D_voltage_fault 3 UP3V3D_voltage_fault 4
|
||||
// UP5V0D_voltage_fault 5 VTEMP1_temperature_fault 6 VTEMP2_temperature_fault 7 V_BAT1_voltage_fault / The
|
||||
// parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 UP1V0D_voltage_fault
|
||||
// 1 UP1V8D_voltage_fault 2 UP2V5D_voltage_fault 3 UP3V3D_voltage_fault 4 UP5V0D_voltage_fault 5
|
||||
// VTEMP1_temperature_fault 6 VTEMP2_temperature_fault 7 V_BAT1_voltage_fault
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_2_FAULT_WERT", STAT_BYTE_2_FAULT_WERT, "\"HEX\"");
|
||||
|
||||
unsigned char STAT_BYTE_3_FAULT_WERT = (RXBUF_UCHAR(3));
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0
|
||||
// ECU_inconsistent_temperature_fault / The parameter values shall indicate 0 for fault_not_present and 1 for
|
||||
// fault_present. Bit: 0 ECU_inconsistent_temperature_fault
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_3_FAULT_WERT", STAT_BYTE_3_FAULT_WERT, "\"HEX\"");
|
||||
|
||||
unsigned char STAT_BYTE_4_FAULT_WERT = (RXBUF_UCHAR(4));
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 Eq2Unavailable 1
|
||||
// Eq2FaultHandlingAliveError 2 Eq2FaultHandlingCrcError 3 VideoError_400 4 TempStatus_400 5 CamLVDS_Defect_400 6
|
||||
// CamEEP_Fail_400 7 BurntPixel_400 / The parameter values shall indicate 0 for fault_not_present and 1 for
|
||||
// fault_present. Bit: 0 Eq2Unavailable 1 Eq2FaultHandlingAliveError 2 Eq2FaultHandlingCrcError 3 VideoError_400
|
||||
// 4 TempStatus_400 5 CamLVDS_Defect_400 6 CamEEP_Fail_400 7 BurntPixel_400
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_4_FAULT_WERT", STAT_BYTE_4_FAULT_WERT, "\"HEX\"");
|
||||
|
||||
unsigned char STAT_BYTE_5_FAULT_WERT = (RXBUF_UCHAR(5));
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 DDR_Failure_400 1
|
||||
// WdgMSafetyAliveSupervisonFault / The parameter values shall indicate 0 for fault_not_present and 1 for
|
||||
// fault_present. Bit: 0 DDR_Failure_400 1 WdgMSafetyAliveSupervisonFault
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_5_FAULT_WERT", STAT_BYTE_5_FAULT_WERT, "\"HEX\"");
|
||||
|
||||
unsigned char STAT_BYTE_6_FAULT_WERT = (RXBUF_UCHAR(6));
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 ActiveFaultClass
|
||||
// Bit 0 * 1 ActiveFaultClass Bit 1 * 2 ActiveFaultClass Bit 2 * 3 (not disp_drasy_available) 4 (not
|
||||
// aAssistFunctionAvailable) 5 (not qAssistActive) 6 Not in use 7 Safe state entered disp_drasy_available means
|
||||
// that the bit is 0 when the signal is available, and 1 when it is not available / The parameter values shall
|
||||
// indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 ActiveFaultClass Bit 0* 1 ActiveFaultClass
|
||||
// Bit 1* 2 ActiveFaultClass Bit 2* 3 (not disp_drasy_available) 4 (not aAssistFunctionAvailable) 5 (not
|
||||
// qAssistActive) 6 Not in use 7 Safe state entered disp_drasy_available means that the bit is 0 when the
|
||||
// signal is availablem, and 1 when it is not available
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_6_FAULT_WERT", STAT_BYTE_6_FAULT_WERT, "\"HEX\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__STATUS_WARNZEITPUNKT_FCW: { // 0x400F
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__STATUS_WARNZEITPUNKT_FCW", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_WARN_FLAV_FCW = (RXBUF_UCHAR(0));
|
||||
// currently selected warning flavor / currently selected warning flavor
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_WARNZEITPUNKT_FCW", "STAT_WARN_FLAV_FCW", STAT_WARN_FLAV_FCW, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_FASTA_PPP_DATA: { // 0x4010
|
||||
if (datalen < 50) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_FASTA_PPP_DATA", 50);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_PPP_WARNING_ZONE = (RXBUF_UINT(0));
|
||||
// Type of warning zone / Art der Warnzone
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_WARNING_ZONE", STAT_PPP_WARNING_ZONE, "\"0-n\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_DZ_EVENTS_0_TO_20_WERT = (RXBUF_UINT(2));
|
||||
// The parameter is determined by counting the number of DZ events in the range 0 <x <20 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der DZ-Events im Bereich 0 < x < 20 km/h gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_DZ_EVENTS_0_TO_20_WERT", STAT_PPP_AMNT_DZ_EVENTS_0_TO_20_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_DZ_EVENTS_20_TO_40_WERT = (RXBUF_UINT(4));
|
||||
// The parameter is determined by counting the number of DZ events in the range 20 <x <40 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der DZ-Events im Bereich 20 < x < 40 km/h gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_DZ_EVENTS_20_TO_40_WERT", STAT_PPP_AMNT_DZ_EVENTS_20_TO_40_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_DZ_EVENTS_40_TO_60_WERT = (RXBUF_UINT(6));
|
||||
// The parameter is determined by counting the number of DZ events in the range 40 <x <60 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der DZ-Events im Bereich 40 < x < 60 km/h gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_DZ_EVENTS_40_TO_60_WERT", STAT_PPP_AMNT_DZ_EVENTS_40_TO_60_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_PDZ1_EVENTS_0_TO_20_WERT = (RXBUF_UINT(8));
|
||||
// The parameter is determined by counting the number of PDZ1 events in the range 0 <x <20 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der PDZ1-Events im Bereich 0 < x < 20 km/h gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_PDZ1_EVENTS_0_TO_20_WERT", STAT_PPP_AMNT_PDZ1_EVENTS_0_TO_20_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_PDZ1_EVENTS_20_TO_40_WERT = (RXBUF_UINT(10));
|
||||
// The parameter is determined by counting the number of PDZ1 events in the range 20 <x <40 km / h / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der PDZ1-Events im Bereich 20 < x < 40 km/h gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_PDZ1_EVENTS_20_TO_40_WERT", STAT_PPP_AMNT_PDZ1_EVENTS_20_TO_40_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_PDZ1_EVENTS_40_TO_60_WERT = (RXBUF_UINT(12));
|
||||
// The parameter is determined by counting the number of PDZ1 events in the range 40 <x <60 km / h / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der PDZ1-Events im Bereich 40 < x < 60 km/h gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_PDZ1_EVENTS_40_TO_60_WERT", STAT_PPP_AMNT_PDZ1_EVENTS_40_TO_60_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_PDZ2_EVENTS_0_TO_20_WERT = (RXBUF_UINT(14));
|
||||
// The parameter is determined by counting the number of PDZ2 events in the range 0 <x <20 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der PDZ2-Events im Bereich 0 < x < 20 km/h gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_PDZ2_EVENTS_0_TO_20_WERT", STAT_PPP_AMNT_PDZ2_EVENTS_0_TO_20_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_PDZ2_EVENTS_20_TO_40_WERT = (RXBUF_UINT(16));
|
||||
// The parameter is determined by counting the number of PDZ2 events in the range 20 <x <40 km / h / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der PDZ2-Events im Bereich 20 < x < 40 km/h gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_PDZ2_EVENTS_20_TO_40_WERT", STAT_PPP_AMNT_PDZ2_EVENTS_20_TO_40_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_PDZ2_EVENTS_40_TO_60_WERT = (RXBUF_UINT(18));
|
||||
// The parameter is determined by counting the number of PDZ2 events in the range 40 <x <60 km / h / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der PDZ2-Events im Bereich 40 < x < 60 km/h gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_PDZ2_EVENTS_40_TO_60_WERT", STAT_PPP_AMNT_PDZ2_EVENTS_40_TO_60_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_PREWARNUNG_REQUESTS_WERT = (RXBUF_UINT(20));
|
||||
// The parameter is determined by counting the number of pre-warning requests / Die Kenngröße wird bestimmt,
|
||||
// indem die Anzahl der Pre-Warning-Requests gezählt wird
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_PREWARNUNG_REQUESTS_WERT", STAT_PPP_AMNT_PREWARNUNG_REQUESTS_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_ACUTEWARNING_REQUESTS_WERT = (RXBUF_UINT(22));
|
||||
// The parameter is determined by counting the number of acute warning requests. / Die Kenngröße wird bestimmt,
|
||||
// indem die Anzahl der Acute-Warning-Requests gezählt wird.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_ACUTEWARNING_REQUESTS_WERT", STAT_PPP_AMNT_ACUTEWARNING_REQUESTS_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_HBA_REQUESTS_WERT = (RXBUF_UINT(24));
|
||||
// The parameter is determined by counting the number of HBA requests. / Die Kenngröße wird bestimmt, indem die
|
||||
// Anzahl der HBA-Requests gezählt wird.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_HBA_REQUESTS_WERT", STAT_PPP_AMNT_HBA_REQUESTS_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_PREFILL_REQUESTS_WERT = (RXBUF_UINT(26));
|
||||
// The parameter is determined by counting the number of prefill requests. / Die Kenngröße wird bestimmt, indem
|
||||
// die Anzahl der Prefill-Requests gezählt wird.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_PREFILL_REQUESTS_WERT", STAT_PPP_AMNT_PREFILL_REQUESTS_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_AMNT_BRAKE_REQUESTS_WERT = (RXBUF_UINT(28));
|
||||
// The parameter is determined by counting the number of brake requests. / Die Kenngröße wird bestimmt, indem die
|
||||
// Anzahl der Brake-Requests gezählt wird.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_AMNT_BRAKE_REQUESTS_WERT", STAT_PPP_AMNT_BRAKE_REQUESTS_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_DEACT_DRIVER_WERT = (RXBUF_UINT(30));
|
||||
// The parameter is determined by counting the number of times the pFGS function was switched off by the driver.
|
||||
// (Status change of the activation by pressing the button) / Die Kenngröße wird bestimmt, indem die Anzahl der
|
||||
// Abschaltungen der Funktion pFGS durch den Fahrer gezählt wird. (Statuswechsel der Aktivierung durch
|
||||
// Tasterbetätigung)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_DEACT_DRIVER_WERT", STAT_PPP_DEACT_DRIVER_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_DEACT_AVAILABILITY_WERT = (RXBUF_UINT(32));
|
||||
// The parameter is determined by counting the number of times the pFGS function was switched off by the KAFAS
|
||||
// system based on the availability concept (e.g. recognition qualifier, degradation concept, ...). / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der Abschaltungen der Funktion pFGS durch das KAFAS System aufgrund
|
||||
// des Verfügbarkeitskonzeptes (z.B. Erkennungsqualifier, Degradationskonzept,...) gezählt wird.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_DEACT_AVAILABILITY_WERT", STAT_PPP_DEACT_AVAILABILITY_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_PPP_DEACT_WARNING_CHAIN_WERT = (RXBUF_UINT(34));
|
||||
// The parameter is determined by counting the number of times the pPP function has been switched off by the
|
||||
// KAFAS system based on the braking and warning chain. / Die Kenngröße wird bestimmt, indem die Anzahl der
|
||||
// Abschaltungen der Funktion pPP durch das KAFAS System aufgrund der Brems-und Warnkette gezählt wird.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_DEACT_WARNING_CHAIN_WERT", STAT_PPP_DEACT_WARNING_CHAIN_WERT, "\"Counts\"");
|
||||
|
||||
unsigned long STAT_PPP_OPERATION_TIME_CL50_WERT = (RXBUF_UINT32(36));
|
||||
// The parameter is determined by always counting the operating time in seconds from terminal 50. / Die Kenngröße
|
||||
// wird bestimmt, indem immer ab Kl 50 die Betriebszeit in Sekunden gezählt wird.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_OPERATION_TIME_CL50_WERT", STAT_PPP_OPERATION_TIME_CL50_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_PPP_OPERATION_TIME_ACTIVE_WERT = (RXBUF_UINT32(40));
|
||||
// The parameter is determined by always counting the operating time in seconds from terminal 50 while the pFGS
|
||||
// function is activated. / Die Kenngröße wird bestimmt, indem immer ab Kl 50 die Betriebszeit in Sekunden
|
||||
// gezählt wird, während die pFGS-Funktion aktiviert ist.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_OPERATION_TIME_ACTIVE_WERT", STAT_PPP_OPERATION_TIME_ACTIVE_WERT, "\"s\"");
|
||||
|
||||
unsigned short STAT_PPP_FS_CC_WERT = (RXBUF_UINT(44));
|
||||
// The parameter is determined by counting the number of Check Control messages triggered due to reduced
|
||||
// visibility for the pFGS function. / Die Kenngröße wird bestimmt, indem die Anzahl der ausgelösten Check
|
||||
// Control Meldungen aufgrund reduzierter Sicht für die Funktion pFGS gezählt wird.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_FS_CC_WERT", STAT_PPP_FS_CC_WERT, "\"Counts\"");
|
||||
|
||||
unsigned long STAT_PPP_DRIVEN_TIME_FS_ACT_WERT = (RXBUF_UINT32(46));
|
||||
// The parameter is determined by determining the operating time from Kl 50 in seconds in which pFGS is in the
|
||||
// reduced visibility status and activated by the driver. / Die Kenngröße wird bestimmt, indem die Betriebszeit
|
||||
// ab Kl 50 in Sekunden ermittelt wird, in der pFGS im Status reduzierte Sicht und vom Fahrer aktiviert ist.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_DRIVEN_TIME_FS_ACT_WERT", STAT_PPP_DRIVEN_TIME_FS_ACT_WERT, "\"s\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_FASTA_CCM_DATA: { // 0x4011
|
||||
if (datalen < 6) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_FASTA_CCM_DATA", 6);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_CCM_AMNT_BRAKE_20_WERT = (RXBUF_UINT(0));
|
||||
// The parameter is determined by counting the number of CCM brakes in which the speed of the host vehicle at the
|
||||
// start of braking is greater than or equal to 0 km / h and less than 20 km / h. / Die Kenngröße wird bestimmt,
|
||||
// indem die Anzahl der CCM-Bremsungen gezählt wird, bei denen die Geschwindigkeit des Egofahrzeugs zu
|
||||
// Bremsbeginn größer gleich 0 km/h und kleiner 20 km/h ist.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_CCM_DATA", "STAT_CCM_AMNT_BRAKE_20_WERT", STAT_CCM_AMNT_BRAKE_20_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_CCM_AMNT_BRAKE_40_WERT = (RXBUF_UINT(2));
|
||||
// The parameter is determined by counting the number of CCM brakes in which the speed of the host vehicle at the
|
||||
// start of braking is greater than or equal to 20 km / h and less than 40 km / h. / Die Kenngröße wird bestimmt,
|
||||
// indem die Anzahl der CCM-Bremsungen gezählt wird, bei denen die Geschwindigkeit des Egofahrzeugs zu
|
||||
// Bremsbeginn größer gleich 20 km/h und kleiner 40 km/h ist.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_CCM_DATA", "STAT_CCM_AMNT_BRAKE_40_WERT", STAT_CCM_AMNT_BRAKE_40_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_CCM_AMNT_BRAKE_GEQ40_WERT = (RXBUF_UINT(4));
|
||||
// The parameter is determined by counting the number of CCM brakes in which the speed of the host vehicle is
|
||||
// greater than or equal to 40 km / h at the beginning of the braking / Die Kenngröße wird bestimmt, indem die
|
||||
// Anzahl der CCM-Bremsungen gezählt wird, bei denen die Geschwindigkeit des Egofahrzeugs zu Bremsbeginn größer
|
||||
// gleich 40 km/h ist
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_CCM_DATA", "STAT_CCM_AMNT_BRAKE_GEQ40_WERT", STAT_CCM_AMNT_BRAKE_GEQ40_WERT, "\"Counts\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__KAFAS_ENVINT_DATA: { // 0x4012
|
||||
if (datalen < 8) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__KAFAS_ENVINT_DATA", 8);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ENVINT_DRIVEN_DIST_FS_WERT = (RXBUF_UINT32(0));
|
||||
// Cont the number of km driven with degraded availability / Cont the number of km driven with degraded
|
||||
// availability
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ENVINT_DATA", "STAT_ENVINT_DRIVEN_DIST_FS_WERT", STAT_ENVINT_DRIVEN_DIST_FS_WERT, "\"km\"");
|
||||
|
||||
unsigned long STAT_ENVINT_DRIVEN_TIME_FS_WERT = (RXBUF_UINT32(4));
|
||||
// Count the time in seconds driven with degraded availability / Count the time in seconds driven with degraded
|
||||
// availability
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ENVINT_DATA", "STAT_ENVINT_DRIVEN_TIME_FS_WERT", STAT_ENVINT_DRIVEN_TIME_FS_WERT, "\"s\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_PPP_ANFORDERUNGEN: { // 0x4016
|
||||
if (datalen < 9) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_PPP_ANFORDERUNGEN", 9);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_TYPE_OF_WARNING = (RXBUF_UCHAR(0));
|
||||
// 0x01 if only a Brake request according to 2) is triggered 0x02 if only an Acute warning request according to
|
||||
// 1) is triggered 0x03 if both an Acute warning request and a Brake request is triggered / 0x01 if only a Brake
|
||||
// request according to 2) is triggered 0x02 if only an Acute warning request according to 1) is triggered 0x03
|
||||
// if both an Acute warning request and a Brake request is triggered
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "PPP_ANFORDERUNGEN", "STAT_TYPE_OF_WARNING", STAT_TYPE_OF_WARNING, "\"0-n\"");
|
||||
|
||||
unsigned long STAT_TIMESTAMP_ACUTE_WERT = (RXBUF_UINT32(1));
|
||||
// The time stamp is the system time value (message 328h) when the warning happened / The time stamp is the
|
||||
// system time value (message 328h) when the warning happened
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "PPP_ANFORDERUNGEN", "STAT_TIMESTAMP_ACUTE_WERT", STAT_TIMESTAMP_ACUTE_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_TIMESTAMP_BRAKE_WERT = (RXBUF_UINT32(5));
|
||||
// The time stamp is the system time value (message 328h) when the warning happened. / The time stamp is the
|
||||
// system time value (message 328h) when the warning happened.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "PPP_ANFORDERUNGEN", "STAT_TIMESTAMP_BRAKE_WERT", STAT_TIMESTAMP_BRAKE_WERT, "\"s\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__GENERIC_EYEQ2_INFO: { // 0x4017
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__GENERIC_EYEQ2_INFO", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_EYEQ2_RESTARTS_WERT = (RXBUF_UCHAR(0));
|
||||
// EyeQ2 restarts, 1 byte Counter for number of EyeQ2 restarts caused by camera error debouncing as described in
|
||||
// DTC 0x800ABB - Camera Connection Error / EyeQ2 restarts, 1 byte Counter for number of EyeQ2 restarts caused by
|
||||
// camera error debouncing as described in DTC 0x800ABB - Camera Connection Error
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_GENERIC_EYEQ2_INFO", "STAT_EYEQ2_RESTARTS_WERT", STAT_EYEQ2_RESTARTS_WERT, "\"Counts\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__STATUS_CAMERA_MONITORING_WERT: { // 0x4050
|
||||
if (datalen < 7) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__STATUS_CAMERA_MONITORING_WERT", 7);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_FRAME_INDEX_WERT = (RXBUF_UINT(0));
|
||||
// This is a frame counter, that shall be increased for every frame that is not skipped. Frames that are skipped
|
||||
// for any reason shall not increment this counter. When the counter reaches over 65535, it shall restart from 0.
|
||||
// The counter shall restart from 0 at every startup of the EyeQ2. / This is a frame counter, that shall be
|
||||
// increased for every frame that is not skipped. Frames that are skipped for any reason shall not increment this
|
||||
// counter. When the counter reaches over 65535, it shall restart from 0. The counter shall restart from 0 at
|
||||
// every startup of the EyeQ2.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_STATUS_CAMERA_MONITORING_WERT", "STAT_FRAME_INDEX_WERT", STAT_FRAME_INDEX_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_VIDEO_ERROR_COUNT_WERT = (RXBUF_UINT(2));
|
||||
// The number of bad frames received from the camera (frames dropped due to data / sync errors). This counter
|
||||
// shall be increased with one for each cycle the video error signal is set in the 0x400 message. / The number of
|
||||
// bad frames received from the camera (frames dropped due to data/sync errors). This counter shall be increased
|
||||
// with one for each cycle the Video error signal is set in the 0x400 message.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_STATUS_CAMERA_MONITORING_WERT", "STAT_VIDEO_ERROR_COUNT_WERT", STAT_VIDEO_ERROR_COUNT_WERT, "\"Counts\"");
|
||||
|
||||
unsigned short STAT_DROPPED_FRAME_COUNT_WERT = (RXBUF_UINT(4));
|
||||
// The number of dropped frames. This counter shall be increased when there is a video error and when the EyeQ2
|
||||
// skips a frame for any other reason, such as too long processing time for the preceding frame. / The number of
|
||||
// dropped frames. This counter shall be increased when there is a video error and when the EyeQ2 skips a frame
|
||||
// for any other reason, such as too long processing time for the preceding frame.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_STATUS_CAMERA_MONITORING_WERT", "STAT_DROPPED_FRAME_COUNT_WERT", STAT_DROPPED_FRAME_COUNT_WERT, "\"Counts\"");
|
||||
|
||||
unsigned char STAT_CAMERA_TEMP_WERT = (RXBUF_UCHAR(6)-60.0);
|
||||
// The camera temperature, as read by the EyeQ2 via I2C. The camera temperature shall be read from the EyeQ2
|
||||
// every 10 seconds. / The camera temperature, as read by the EyeQ2 via I2C. The camera temperature shall be read
|
||||
// from the EyeQ2 every 10 seconds.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_CAMERA_MONITORING_WERT", "STAT_CAMERA_TEMP_WERT", STAT_CAMERA_TEMP_WERT, "\"°C\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_ABSCHALTGRUND_FERNLICHT: { // 0xD341
|
||||
if (datalen < 8) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_ABSCHALTGRUND_FERNLICHT", 8);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_FLA_ENTGEGENKOMMENDES_FAHRZEUG = (RXBUF_UCHAR(0));
|
||||
// Indicates whether an oncoming vehicle has been detected: 0 = no vehicle detected, 1 = vehicle detected / Gibt
|
||||
// aus, ob ein entgegenkommendes Fahrzeug erkannt worden ist: 0 = kein Fahrzeug erkannt, 1 = Fahrzeug erkannt
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ABSCHALTGRUND_FERNLICHT", "STAT_FLA_ENTGEGENKOMMENDES_FAHRZEUG", STAT_FLA_ENTGEGENKOMMENDES_FAHRZEUG, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_FLA_VORAUSFAHRENDES_FAHRZEUG = (RXBUF_UCHAR(1));
|
||||
// Indicates whether a vehicle in front has been detected: 0 = no vehicle detected, 1 = vehicle detected / Gibt
|
||||
// aus, ob ein vorausfahrendes Fahrzeug erkannt worden ist: 0 = kein Fahrzeug erkannt, 1 = Fahrzeug erkannt
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ABSCHALTGRUND_FERNLICHT", "STAT_FLA_VORAUSFAHRENDES_FAHRZEUG", STAT_FLA_VORAUSFAHRENDES_FAHRZEUG, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_FLA_GESCHWINDIGKEITSLIMIT = (RXBUF_UCHAR(2));
|
||||
// Indicates whether the speed below the limit has been detected: 0 = speed above the threshold, high beam is
|
||||
// switched on, 1 = speed below the threshold, high beam is switched off / Gibt aus, ob die Geschwindigkeit
|
||||
// unterhalb der Grenze erkannt worden ist: 0 = Geschwindigkeit oberhalb der Schwelle, Fernlicht wird
|
||||
// eingeschaltet, 1 = Geschwindigkeit unterhalb der Schwelle, Fernlicht wird abgeschaltet
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ABSCHALTGRUND_FERNLICHT", "STAT_FLA_GESCHWINDIGKEITSLIMIT", STAT_FLA_GESCHWINDIGKEITSLIMIT, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_FLA_UMGEBUNGSHELLIGKEIT = (RXBUF_UCHAR(3));
|
||||
// Indicates whether ambient brightness (day) has been recognized: 0 = no brightness (night) recognized, 1 =
|
||||
// brightness (day) recognized / Gibt aus, ob Umgebungshelligkeit (Tag) erkannt worden ist: 0 = kein Helligkeit
|
||||
// (Nacht) erkannt, 1 = Helligkeit (Tag) erkannt
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ABSCHALTGRUND_FERNLICHT", "STAT_FLA_UMGEBUNGSHELLIGKEIT", STAT_FLA_UMGEBUNGSHELLIGKEIT, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_FLA_ORTSCHAFTSERKENNUNG = (RXBUF_UCHAR(4));
|
||||
// Indicates whether sufficient lighting has been detected: 0 = insufficient lighting detected, 1 = sufficient
|
||||
// lighting detected / Gibt aus, ob eine ausreichende Beleuchtung erkannt worden ist: 0 = keine ausreichende
|
||||
// Beleuchtung erkannt, 1 = ausreichende Beleuchtung erkannt
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ABSCHALTGRUND_FERNLICHT", "STAT_FLA_ORTSCHAFTSERKENNUNG", STAT_FLA_ORTSCHAFTSERKENNUNG, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_FLA_NEBELERKENNUNG = (RXBUF_UCHAR(5));
|
||||
// Indicates whether fog has been detected: 0 = no fog, 1 = fog detected / Gibt aus, ob Nebel erkannt worden ist:
|
||||
// 0 = kein Nebel, 1 = Nebel erkannt
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ABSCHALTGRUND_FERNLICHT", "STAT_FLA_NEBELERKENNUNG", STAT_FLA_NEBELERKENNUNG, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_FLA_AUTOBAHNMODE = (RXBUF_UCHAR(6));
|
||||
// Indicates whether a motorway has been recognized: 0 = no motorway, 1 = motorway recognized / Gibt aus, ob
|
||||
// Autobahn erkannt worden ist: 0 = keine Autobahn, 1 = Autobahn erkannt
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ABSCHALTGRUND_FERNLICHT", "STAT_FLA_AUTOBAHNMODE", STAT_FLA_AUTOBAHNMODE, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_FLA_VERZOEGERUNGSZEIT = (RXBUF_UCHAR(7));
|
||||
// Indicates whether the high beam is not switched on due to a time delay: 0 = no time delay, 1 = time delay /
|
||||
// Gibt aus, ob wegen einer Zeiterzögerung das Fernlicht nicht eingeschaltet wird: 0 = keine Zeitverzögerung, 1
|
||||
// = Zeitverzögerung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ABSCHALTGRUND_FERNLICHT", "STAT_FLA_VERZOEGERUNGSZEIT", STAT_FLA_VERZOEGERUNGSZEIT, "\"0/1\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_KONFIGURATION_KAFAS: { // 0xD374
|
||||
if (datalen < 6) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_KONFIGURATION_KAFAS", 6);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_VORHANDEN_TLC = (RXBUF_UCHAR(0));
|
||||
// Indicates whether the time-to-line crossing function is available: 0 = not available; 1 = present / Gibt an,
|
||||
// ob die Funktion Time-to-Line Crossing vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "KONFIGURATION_KAFAS", "STAT_VORHANDEN_TLC", STAT_VORHANDEN_TLC, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_VORHANDEN_FLA = (RXBUF_UCHAR(1));
|
||||
// Indicates whether the high beam assistant function is available: 0 = not available; 1 = present / Gibt an, ob
|
||||
// die Funktion Fernlichtassistent vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "KONFIGURATION_KAFAS", "STAT_VORHANDEN_FLA", STAT_VORHANDEN_FLA, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_VORHANDEN_SLI = (RXBUF_UCHAR(2));
|
||||
// Indicates whether the Speed-Limit-Info function is available: 0 = not available; 1 = present / Gibt an, ob die
|
||||
// Funktion Speed-Limit-Info vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "KONFIGURATION_KAFAS", "STAT_VORHANDEN_SLI", STAT_VORHANDEN_SLI, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_VORHANDEN_NPI = (RXBUF_UCHAR(3));
|
||||
// Indicates whether the NoPassing-Info function is available: 0 = not available; 1 = present / Gibt an, ob die
|
||||
// Funktion NoPassing-Info vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "KONFIGURATION_KAFAS", "STAT_VORHANDEN_NPI", STAT_VORHANDEN_NPI, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_VORHANDEN_FCW = (RXBUF_UCHAR(4));
|
||||
// Indicates whether the Forward Collision Warning function is available: 0 = not available; 1 = present / Gibt
|
||||
// an, ob die Funktion Forward-Collision-Warning vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "KONFIGURATION_KAFAS", "STAT_VORHANDEN_FCW", STAT_VORHANDEN_FCW, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_VORHANDEN_PED = (RXBUF_UCHAR(5));
|
||||
// Indicates whether the Pedistrian Recognition function is available: 0 = not available; 1 = present / Gibt an,
|
||||
// ob die Funktion Pedistrian Recognition (Fußgängererkennung) vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "KONFIGURATION_KAFAS", "STAT_VORHANDEN_PED", STAT_VORHANDEN_PED, "\"0/1\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_KAFAS_VINS_LESEN: { // 0xD393
|
||||
if (datalen < 15) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_KAFAS_VINS_LESEN", 15);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_KAFAS_VIN_STATUS_NR = (RXBUF_UCHAR(14));
|
||||
// Indicates whether the assignment of camera to control unit matches: 0x00: NO MATCH, 0x01: MATCH / Gibt aus, ob
|
||||
// die Zuordnung Kamera zu Steuergerät übereinstimmt: 0x00: KEINE UEBEREINSTIMMUNG, 0x01: UEBEREINSTIMMUNG
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "KAFAS_VINS_LESEN", "STAT_KAFAS_VIN_STATUS_NR", STAT_KAFAS_VIN_STATUS_NR, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_KALIBRIERDATEN_KAFAS: { // 0xD396
|
||||
if (datalen < 25) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_KALIBRIERDATEN_KAFAS", 25);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_OFFLINE_YAW_WERT = (RXBUF_UINT(0));
|
||||
// Offline yaw angle / Offline Yaw-Winkel
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KALIBRIERDATEN_KAFAS", "STAT_OFFLINE_YAW_WERT", STAT_OFFLINE_YAW_WERT, "\"Pixel\"");
|
||||
|
||||
unsigned short STAT_OFFLINE_HORIZON_WERT = (RXBUF_UINT(2));
|
||||
// Offline horizon angle / Offline Horizon-Winkel
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KALIBRIERDATEN_KAFAS", "STAT_OFFLINE_HORIZON_WERT", STAT_OFFLINE_HORIZON_WERT, "\"Pixel\"");
|
||||
|
||||
float STAT_OFFLINE_ROLL_WERT = (RXBUF_UINT(4)/100.0f);
|
||||
// Offline roll angle / Offline Roll-Winkel
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KAF", "KALIBRIERDATEN_KAFAS", "STAT_OFFLINE_ROLL_WERT", STAT_OFFLINE_ROLL_WERT, "\"Grad\"");
|
||||
|
||||
unsigned short STAT_ONLINE_YAW_WERT = (RXBUF_UINT(6));
|
||||
// Online yaw angle / Online Yaw-Winkel
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KALIBRIERDATEN_KAFAS", "STAT_ONLINE_YAW_WERT", STAT_ONLINE_YAW_WERT, "\"Pixel\"");
|
||||
|
||||
unsigned short STAT_ONLINE_HORIZON_WERT = (RXBUF_UINT(8));
|
||||
// Online horizon angle / Online Horizon-Winkel
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KALIBRIERDATEN_KAFAS", "STAT_ONLINE_HORIZON_WERT", STAT_ONLINE_HORIZON_WERT, "\"Pixel\"");
|
||||
|
||||
float STAT_ONLINE_ROLL_WERT = (RXBUF_UINT(10)/100.0f);
|
||||
// Online roll angle / Online Roll-Winkel
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KAF", "KALIBRIERDATEN_KAFAS", "STAT_ONLINE_ROLL_WERT", STAT_ONLINE_ROLL_WERT, "\"Grad\"");
|
||||
|
||||
unsigned short STAT_KAM_HOEHE_WERT = (RXBUF_UINT(12));
|
||||
// Camera installation height / Kamera-Verbauhöhe
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KALIBRIERDATEN_KAFAS", "STAT_KAM_HOEHE_WERT", STAT_KAM_HOEHE_WERT, "\"mm\"");
|
||||
|
||||
unsigned short STAT_BRENNWEITE_WERT = (RXBUF_UINT(14));
|
||||
// Focal length / Brennweite
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KALIBRIERDATEN_KAFAS", "STAT_BRENNWEITE_WERT", STAT_BRENNWEITE_WERT, "\"Pixel\"");
|
||||
|
||||
unsigned short STAT_GRABBING_SHIFT_WERT = (RXBUF_UINT(16));
|
||||
// Grabbing shift / Grabbing-Shift
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KALIBRIERDATEN_KAFAS", "STAT_GRABBING_SHIFT_WERT", STAT_GRABBING_SHIFT_WERT, "\"Pixel\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_KAMERAVERBINDUNG_ECU: { // 0xD397
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_KAMERAVERBINDUNG_ECU", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_KAFAS_VERBINDUNG_KAM_NR = (RXBUF_UCHAR(0));
|
||||
// For values see TAB_KAM_VERBINDUNG / Werte siehe TAB_KAM_VERBINDUNG
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "KAMERAVERBINDUNG_ECU", "STAT_KAFAS_VERBINDUNG_KAM_NR", STAT_KAFAS_VERBINDUNG_KAM_NR, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_ERGEBNIS_SLI: { // 0xD3AA
|
||||
if (datalen < 7) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_ERGEBNIS_SLI", 7);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_KAMERA_ZEICHEN_NR = (RXBUF_UCHAR(0));
|
||||
// Indicates which character was recognized by the camera: Results see TAB_ZEICHEN_KAMERA / Gibt aus, welches
|
||||
// Zeichen von der Kamera erkannt wurde: Results siehe TAB_ZEICHEN_KAMERA
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ERGEBNIS_SLI", "STAT_KAMERA_ZEICHEN_NR", STAT_KAMERA_ZEICHEN_NR, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_KAMERA_GESCHWINDIGKEIT_WERT = (RXBUF_UCHAR(1));
|
||||
// Indicates the speed that was recognized in the characters: 0 = cancellation of everything, 5 to 150 in steps
|
||||
// of 5. / Gibt aus, welche Geschwindigkeit in den Zeichen erkannt wurde: 0 = Aufhebung alles, 5 bis 150 in 5-er
|
||||
// Schritten.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ERGEBNIS_SLI", "STAT_KAMERA_GESCHWINDIGKEIT_WERT", STAT_KAMERA_GESCHWINDIGKEIT_WERT, "");
|
||||
|
||||
unsigned char STAT_KARTE_ZEICHEN_NR = (RXBUF_UCHAR(2));
|
||||
// Indicates which character was read from the card: For results see TAB_ZEICHEN_KARTE / Gibt aus, welches
|
||||
// Zeichen aus der Karte gelesen wurde: Results siehe TAB_ZEICHEN_KARTE
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ERGEBNIS_SLI", "STAT_KARTE_ZEICHEN_NR", STAT_KARTE_ZEICHEN_NR, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_KARTE_GESCHWINDIGKEIT_WERT = (RXBUF_UCHAR(3));
|
||||
// Indicates the speed that was read from the card: 0 = cancel everything, 5 to 150 in steps of 5. / Gibt aus,
|
||||
// welche Geschwindigkeit aus der Karte gelesen wurde: 0 = Aufhebung alles, 5 bis 150 in 5-er Schritten.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ERGEBNIS_SLI", "STAT_KARTE_GESCHWINDIGKEIT_WERT", STAT_KARTE_GESCHWINDIGKEIT_WERT, "");
|
||||
|
||||
unsigned char STAT_FUSIONIERT_ZEICHEN_NR = (RXBUF_UCHAR(4));
|
||||
// Indicates which character is output from the merged recognition result: Results see TAB_ZEICHEN_FUSIONIERT /
|
||||
// Gibt aus, welches Zeichen aus den fusioniertem Erkennungsergebnis ausgegeben wird: Results siehe
|
||||
// TAB_ZEICHEN_FUSIONIERT
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ERGEBNIS_SLI", "STAT_FUSIONIERT_ZEICHEN_NR", STAT_FUSIONIERT_ZEICHEN_NR, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_FUSIONIERT_GESCHWINDIGKEIT_WERT = (RXBUF_UCHAR(5));
|
||||
// Outputs the speed from the merged recognition result: 0 = cancel everything, 5 to 150 in steps of 5 / Gibt
|
||||
// aus, welche Geschwindigkeit aus dem fusionierten Erkennungsergebnis ausgegeben wird: 0 = Aufhebung alles, 5
|
||||
// bis 150 in 5-er Schritten
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ERGEBNIS_SLI", "STAT_FUSIONIERT_GESCHWINDIGKEIT_WERT", STAT_FUSIONIERT_GESCHWINDIGKEIT_WERT, "");
|
||||
|
||||
unsigned char STAT_GUETE_KAM_SLI_GESCHW_WERT = (RXBUF_UCHAR(6));
|
||||
// Indicates the quality with which the restriction and cancellation sign for speeds was recognized with the
|
||||
// camera: 0 - 100 / Gibt aus, mit welcher Güte das Beschränkungs- und Aufhebungszeichen für Geschwindigkeiten
|
||||
// mit der Kamera erkannt wurde: 0 - 100
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "ERGEBNIS_SLI", "STAT_GUETE_KAM_SLI_GESCHW_WERT", STAT_GUETE_KAM_SLI_GESCHW_WERT, "\"%\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF_SPANNUNG_KLEMME_15N_WERT: { // 0xDAD2
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_SPANNUNG_KLEMME_15N_WERT", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
float STAT_SPANNUNG_KLEMME_15N_WERT = (RXBUF_UINT(0)/10.0f);
|
||||
// Voltage value on the control unit at terminal 15N (accurate to one decimal place) / Spannungswert am
|
||||
// Steuergerät an Klemme 15N (auf eine Nachkommastelle genau)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KAF", "SPANNUNG_KLEMME_15N_WERT", "STAT_SPANNUNG_KLEMME_15N_WERT", STAT_SPANNUNG_KLEMME_15N_WERT, "\"V\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__DEBUG_AUSGABE: { // 0xF001
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__DEBUG_AUSGABE", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_DEBUG_AUSGABE = (RXBUF_UINT(0));
|
||||
// Returns the status of whether the debug message output is active / Liefert den Status ob die Ausgabe der
|
||||
// Debug-Nachrichten aktiv ist
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_DEBUG_AUSGABE", "STAT_DEBUG_AUSGABE", STAT_DEBUG_AUSGABE, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__PEDANTIC_MODE: { // 0xF003
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__PEDANTIC_MODE", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_PEDANTIC_MODE = (RXBUF_UCHAR(0));
|
||||
// Activation status of Pedantic Mode for SLI and NPI / Aktivierungsstatus des Pedantic Mode für SLI und NPI
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_PEDANTIC_MODE", "STAT_PEDANTIC_MODE", STAT_PEDANTIC_MODE, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KAF__ERASE_MICRO_CORE_DUMP: { // 0xF004
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__ERASE_MICRO_CORE_DUMP", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_ERASE_RESULT = (RXBUF_UINT(0));
|
||||
// Deletion result / Löschergebnis
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_ERASE_MICRO_CORE_DUMP", "STAT_ERASE_RESULT", STAT_ERASE_RESULT, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
|
@ -1,944 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/kafas20.json: KAF 5D: Camera based driver assistance system
|
||||
// This generated code makes it easier to process CANBUS messages from the KAF ecu in a BMW i3
|
||||
//
|
||||
|
||||
#define I3_ECU_KAF_TX 0x06F15D
|
||||
#define I3_ECU_KAF_RX 0x065DF1
|
||||
|
||||
// Skipping _BREMSENANSTEUERUNG_FCW on 0x4000 which takes arguments
|
||||
|
||||
#define I3_PID_KAF__FASTA_FLA_DATA 0x4001
|
||||
// _FASTA_FLA_DATA / _FASTA_FLA_DATA
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_OP_TIME_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_KAF_STAT_FLA_OP_TIME_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_FLA_OP_TIME_WERT_TYPE unsigned long
|
||||
// Duration of FLA activated by driver [s] / Zeitdauer FLA durch Fahrer aktiviert [s]
|
||||
|
||||
#define I3_RES_KAF_STAT_DELTA_TIME_FLA_NIGHT_WERT (RXBUF_UINT32(4))
|
||||
#define I3_RES_KAF_STAT_DELTA_TIME_FLA_NIGHT_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_DELTA_TIME_FLA_NIGHT_WERT_TYPE unsigned long
|
||||
// Duration in the ambient brightness FLA activation allowed [s] / Zeitdauer in der Umgebungshelligkeit FLA
|
||||
// Aktivierung erlaubt [s]
|
||||
|
||||
#define I3_RES_KAF_STAT_DELTA_TIME_FLA_ACT_HB_WERT (RXBUF_UINT32(8))
|
||||
#define I3_RES_KAF_STAT_DELTA_TIME_FLA_ACT_HB_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_DELTA_TIME_FLA_ACT_HB_WERT_TYPE unsigned long
|
||||
// Duration of switch-on recommendation FLA [s] / Zeitdauer Einschaltempfehlung FLA [s]
|
||||
|
||||
#define I3_RES_KAF_STAT_DELTA_TIME_FLA_ACT_LB_WERT (RXBUF_UINT32(12))
|
||||
#define I3_RES_KAF_STAT_DELTA_TIME_FLA_ACT_LB_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_DELTA_TIME_FLA_ACT_LB_WERT_TYPE unsigned long
|
||||
// Duration of switch-off recommendation [s] / Zeitdauer Abschaltempfehlung [s]
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_COUNT_OVERRIDE_WERT (RXBUF_UINT32(16))
|
||||
#define I3_RES_KAF_STAT_FLA_COUNT_OVERRIDE_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FLA_COUNT_OVERRIDE_WERT_TYPE unsigned long
|
||||
// Number of driver overloads / Anzahl Übersteuerung durch Fahrer
|
||||
|
||||
#define I3_RES_KAF_STAT_OPTIME_TOTAL_WERT (RXBUF_UINT32(20))
|
||||
#define I3_RES_KAF_STAT_OPTIME_TOTAL_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_OPTIME_TOTAL_WERT_TYPE unsigned long
|
||||
// Absolute operating time counter [s] / Absoluter Betriebszeitzähler [s]
|
||||
|
||||
#define I3_PID_KAF__KAFAS_ECU_DATA 0x4002
|
||||
// _KAFAS_ECU_DATA / _KAFAS_ECU_DATA
|
||||
|
||||
#define I3_RES_KAF_STAT_CNTRY_CODE_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_KAF_STAT_CNTRY_CODE_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_CNTRY_CODE_WERT_TYPE unsigned short
|
||||
// ISO Country Code of the country in which the vehicle covered the most kilometers. / ISO Country Code des
|
||||
// Landes in welchem das Fahrzeug die meisten Kilometer zurückgelegt hat.
|
||||
|
||||
#define I3_RES_KAF_STAT_OPTIME_TOTAL_WERT_0X4002 (RXBUF_UINT32(2))
|
||||
#define I3_RES_KAF_STAT_OPTIME_TOTAL_WERT_0X4002_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_OPTIME_TOTAL_WERT_0X4002_TYPE unsigned long
|
||||
// Absolute operating time counter / Absoluter Betriebszeitzähler
|
||||
|
||||
#define I3_RES_KAF_STAT_OPTIME_NIGHT_WERT (RXBUF_UINT32(6))
|
||||
#define I3_RES_KAF_STAT_OPTIME_NIGHT_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_OPTIME_NIGHT_WERT_TYPE unsigned long
|
||||
// Operating time at night. Based on BV-Algo overnight decision / Betriebszeit in der Nacht. Basiert auf BV-Algo
|
||||
// Nachtentscheidung
|
||||
|
||||
#define I3_RES_KAF_STAT_OPTIME_WIPER_WERT (RXBUF_UINT32(10))
|
||||
#define I3_RES_KAF_STAT_OPTIME_WIPER_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_OPTIME_WIPER_WERT_TYPE unsigned long
|
||||
// Operating time during rain. Based on Algo Rain Decision / Betriebszeit während Regen. Basiert auf Algo
|
||||
// Regenentscheidung
|
||||
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_TOTAL_WERT (RXBUF_UINT32(14))
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_TOTAL_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_TOTAL_WERT_TYPE unsigned long
|
||||
// Absolutely driven kilometers / Absolut gefahrene Kilometer
|
||||
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_URBAN_WERT (RXBUF_UINT32(18))
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_URBAN_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_URBAN_WERT_TYPE unsigned long
|
||||
// Total kilometers driven on urban or residential area roads / Absolut gefahrene Kilometer auf Straßentyp Urban
|
||||
// oder Residential Area
|
||||
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_RURAL_WERT (RXBUF_UINT32(22))
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_RURAL_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_RURAL_WERT_TYPE unsigned long
|
||||
// Absolute kilometers driven on the rural or highway type / Absolut gefahrene Kilometer auf Straßentyp Rural
|
||||
// oder Highway
|
||||
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_MOWAY_WERT (RXBUF_UINT32(26))
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_MOWAY_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_MOWAY_WERT_TYPE unsigned long
|
||||
// Absolute kilometers driven on road type Motorway / Absolut gefahrene Kilometer auf Straßentyp Motorway
|
||||
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_NA_WERT (RXBUF_UINT32(30))
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_NA_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_DRIVEN_DIST_NA_WERT_TYPE unsigned long
|
||||
// Absolute kilometers driven with no available road type / Absolut gefahrene Kilometer ohne verfügbaren
|
||||
// Straßentyp
|
||||
|
||||
#define I3_RES_KAF_STAT_AMNT_EYEQ_RESET_WERT (RXBUF_UINT(34))
|
||||
#define I3_RES_KAF_STAT_AMNT_EYEQ_RESET_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_AMNT_EYEQ_RESET_WERT_TYPE unsigned short
|
||||
// Number of resets of the BV processor performed during normal operation / Anzahl der erfolgten Resets des
|
||||
// BV-Prozessors während normalem Betrieb
|
||||
|
||||
#define I3_RES_KAF_STAT_AMNT_ONLINE_CALIB_WERT (RXBUF_UINT(36))
|
||||
#define I3_RES_KAF_STAT_AMNT_ONLINE_CALIB_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_AMNT_ONLINE_CALIB_WERT_TYPE unsigned short
|
||||
// Counter for the completed online calibration processes / Zähler über die Erfolgten Online-Kalibriervorgänge
|
||||
|
||||
#define I3_PID_KAF__KAFAS_TLC_DATA 0x4003
|
||||
// _KAFAS_TLC_DATA / _KAFAS_TLC_DATA
|
||||
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_LEFT_AVAIL_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_LEFT_AVAIL_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_LEFT_AVAIL_WERT_TYPE unsigned long
|
||||
// Absolute kilometers driven with availability on the left / Absolut gefahrene Kilometer mit Verfübarkeit auf
|
||||
// der linken Seite
|
||||
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_RIGHT_AVAIL_WERT (RXBUF_UINT32(4))
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_RIGHT_AVAIL_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_RIGHT_AVAIL_WERT_TYPE unsigned long
|
||||
// Absolute kilometers driven with availability on the right / Absolut gefahrene Kilometer mit Verfübarkeit auf
|
||||
// der rechten Seite
|
||||
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_DIST_REL_SPD_WERT (RXBUF_UINT32(8))
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_DIST_REL_SPD_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_DIST_REL_SPD_WERT_TYPE unsigned long
|
||||
// Absolutely driven with active TLC and relevant speed / Absolut gefahrene mit aktivem TLC und relavanter
|
||||
// Geschwindigkeit
|
||||
|
||||
#define I3_RES_KAF_STAT_TLC_AMNT_WARN_WERT (RXBUF_UINT(12))
|
||||
#define I3_RES_KAF_STAT_TLC_AMNT_WARN_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_TLC_AMNT_WARN_WERT_TYPE unsigned short
|
||||
// Number of issued TLC warnings / Anzahl ausgegebener TLC Warnungen
|
||||
|
||||
#define I3_RES_KAF_STAT_TLC_AMNT_DEACT_WERT (RXBUF_UINT(14))
|
||||
#define I3_RES_KAF_STAT_TLC_AMNT_DEACT_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_TLC_AMNT_DEACT_WERT_TYPE unsigned short
|
||||
// Number of times the TLC function was deactivated by the driver / Anzahl der Deaktivierung der TLC-Funktion
|
||||
// durch den Fahrer
|
||||
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_DIST_ACT_WERT (RXBUF_UINT32(16))
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_DIST_ACT_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_TLC_DRIV_DIST_ACT_WERT_TYPE unsigned long
|
||||
// Kilometers driven with activated TLC / Gefahrene Kilometer mit aktiviertem TLC
|
||||
|
||||
#define I3_PID_KAF_KAFAS_FCW_DATA 0x4004
|
||||
// KAFAS_FCW_DATA / KAFAS_FCW_DATA
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_ACT_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_ACT_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_ACT_WERT_TYPE unsigned long
|
||||
// Total kilometers driven with activated FCW function / Absolut gefahrene Kilometer mit aktivierter FCW Funktion
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FS_WERT (RXBUF_UINT32(4))
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FS_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FS_WERT_TYPE unsigned long
|
||||
// Total kilometers driven in fail safe mode / Absolut gefahrene Kilometer im Fail Safe Mode
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FS_ACT_WERT (RXBUF_UINT32(8))
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FS_ACT_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FS_ACT_WERT_TYPE unsigned long
|
||||
// Total kilometers driven with activated FCW function in fail safe mode / Absolut gefahrene Kilometer mit
|
||||
// aktivierter FCW Funktion im Fail Safe Mode
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FOR_OFF_WERT (RXBUF_UINT32(12))
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FOR_OFF_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FOR_OFF_WERT_TYPE unsigned long
|
||||
// Absolutely driven kilometers with activated FCW function and advance warning level off / Absolut gefahrene
|
||||
// Kilometer mit aktivierter FCW Funktion und Vorwarnstufe aus
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FOR_EARLY_WERT (RXBUF_UINT32(16))
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FOR_EARLY_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FOR_EARLY_WERT_TYPE unsigned long
|
||||
// Total kilometers traveled with activated FCW function and early warning level / Absolut gefahrene Kilometer
|
||||
// mit aktivierter FCW Funktion und Vorwarnstufe früh
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FOR_LATE_WERT (RXBUF_UINT32(20))
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FOR_LATE_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_FCW_DRIVEN_DIST_FOR_LATE_WERT_TYPE unsigned long
|
||||
// Total kilometers driven with activated FCW function and late warning level / Absolut gefahrene Kilometer mit
|
||||
// aktivierter FCW Funktion und Vorwarnstufe spät
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_FOR_WERT (RXBUF_UINT(24))
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_FOR_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_FOR_WERT_TYPE unsigned short
|
||||
// Number of pre-warnings / Anzahl der Vorwarnungen
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_WERT (RXBUF_UINT(26))
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_WERT_TYPE unsigned short
|
||||
// Number of acute warnings / Anzahl der Akutwarnungen
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_45_WERT (RXBUF_UINT(28))
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_45_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_45_WERT_TYPE unsigned short
|
||||
// Number of acute warnings in the range 0 km / h¿ 45 km / h / Anzahl der Akutwarnungen im Bereich 0 km/h¿ 45
|
||||
// km/h
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_90_WERT (RXBUF_UINT(30))
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_90_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_90_WERT_TYPE unsigned short
|
||||
// Number of acute warnings in the range 45 km / h¿ 90 km / h / Anzahl der Akutwarnungen im Bereich 45 km/h¿ 90
|
||||
// km/h
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_135_WERT (RXBUF_UINT(32))
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_135_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FCW_AMNT_ACUTE_135_WERT_TYPE unsigned short
|
||||
// Number of acute warnings in the range 90 km / h¿ 135 km / h / Anzahl der Akutwarnungen im Bereich 90 km/h¿ 135
|
||||
// km/h
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_PREFILLS_WERT (RXBUF_UINT(34))
|
||||
#define I3_RES_KAF_STAT_FCW_PREFILLS_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FCW_PREFILLS_WERT_TYPE unsigned short
|
||||
// Number of pre-fill requests triggered by FCW / Anzahl der von FCW ausgelösten Pre-Fill Anforderungen
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_PRECRASH_WERT (RXBUF_UINT(36))
|
||||
#define I3_RES_KAF_STAT_FCW_PRECRASH_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FCW_PRECRASH_WERT_TYPE unsigned short
|
||||
// Number of pre-crash messages triggered by FCW / Anzahl der von FCW ausgelösten Pre-Crash Meldungen
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_DEACT_WERT (RXBUF_UINT(38))
|
||||
#define I3_RES_KAF_STAT_FCW_DEACT_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FCW_DEACT_WERT_TYPE unsigned short
|
||||
// Number of times the FCW function has been deactivated by the driver / Anzahl der Deaktivierung der
|
||||
// FCW-Funktion durch den Fahrer
|
||||
|
||||
#define I3_RES_KAF_STAT_FCW_FS_CC_WERT (RXBUF_UINT(40))
|
||||
#define I3_RES_KAF_STAT_FCW_FS_CC_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FCW_FS_CC_WERT_TYPE unsigned short
|
||||
// Number of triggered Fail-Save CC messages / Anzahl der ausgelösten Fail-Save CC-Meldungen
|
||||
|
||||
#define I3_PID_KAF__KAFAS_SLI_DATA 0x4005
|
||||
// _KAFAS_SLI_DATA / _KAFAS_SLI_DATA
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_AMT_CAM_DET_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_KAF_STAT_SLI_AMT_CAM_DET_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_SLI_AMT_CAM_DET_WERT_TYPE unsigned long
|
||||
// Number of camera detections of traffic signs / Anzahl der Kameradetektionen von Verkehrsschildern
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_MATCH_URBAN_WERT (RXBUF_UCHAR(4))
|
||||
#define I3_RES_KAF_STAT_SLI_MATCH_URBAN_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_SLI_MATCH_URBAN_WERT_TYPE char
|
||||
// Share of camera detection that match the explicit speed limits on the street type Urban or Residential Area /
|
||||
// Anteil der Kameradetektion die mit den expliziten Speed Limits auf dem Straßentyp Urban oder Residential Area
|
||||
// übereinstimmen
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_MATCH_RURAL_WERT (RXBUF_UCHAR(5))
|
||||
#define I3_RES_KAF_STAT_SLI_MATCH_RURAL_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_SLI_MATCH_RURAL_WERT_TYPE char
|
||||
// Proportion of camera detection that corresponds to the explicit speed limits on the road type rural or highway
|
||||
// / Anteil der Kameradetektion die mit den expliziten Speed Limits auf dem Straßentyp Rural oder Highway
|
||||
// übereinstimmen
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_MATCH_MOWAY_WERT (RXBUF_UCHAR(6))
|
||||
#define I3_RES_KAF_STAT_SLI_MATCH_MOWAY_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_SLI_MATCH_MOWAY_WERT_TYPE char
|
||||
// Percentage of camera detection that corresponds to the explicit speed limits on the road type Motorway /
|
||||
// Anteil der Kameradetektion die mit den expliziten Speed Limits auf dem Straßentyp Motorway übereinstimmen
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_REP_URBAN_WERT (RXBUF_UINT(7))
|
||||
#define I3_RES_KAF_STAT_SLI_REP_URBAN_WERT_UNIT 'm'
|
||||
#define I3_RES_KAF_STAT_SLI_REP_URBAN_WERT_TYPE unsigned short
|
||||
// Average distance at which signs repeat on the street type Urban or Residential Area / Durschnittlich Enfernung
|
||||
// in welcher sich Schilder auf dem Straßentyp Urbanoder Residential Area wiederholen
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_REP_RURAL_WERT (RXBUF_UINT(9))
|
||||
#define I3_RES_KAF_STAT_SLI_REP_RURAL_WERT_UNIT 'm'
|
||||
#define I3_RES_KAF_STAT_SLI_REP_RURAL_WERT_TYPE unsigned short
|
||||
// Average distance at which signs repeat on the road type rural or highway / Durschnittlich Enfernung in welcher
|
||||
// sich Schilder auf dem Straßentyp Rural oder Highway wiederholen
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_REP_MOWAY_WERT (RXBUF_UINT(11))
|
||||
#define I3_RES_KAF_STAT_SLI_REP_MOWAY_WERT_UNIT 'm'
|
||||
#define I3_RES_KAF_STAT_SLI_REP_MOWAY_WERT_TYPE unsigned short
|
||||
// Average distance at which signs repeat on the road type Motorway / Durschnittlich Enfernung in welcher sich
|
||||
// Schilder auf dem Straßentyp Motorway wiederholen
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_OVER_SLI_WERT (RXBUF_UINT32(13))
|
||||
#define I3_RES_KAF_STAT_SLI_OVER_SLI_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_SLI_OVER_SLI_WERT_TYPE unsigned long
|
||||
// Distance driven at least 20 km / h above the detected speed limit / Gefahrene Entfernung mit mindestens 20
|
||||
// km/h über dem erkannten Speed Limit
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_SSS_TIME_WERT (RXBUF_UINT(17))
|
||||
#define I3_RES_KAF_STAT_SLI_SSS_TIME_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_SLI_SSS_TIME_WERT_TYPE unsigned short
|
||||
// Number of recognized additional characters with time restriction / Anzahl der erkannten Zusatzzeichen mit
|
||||
// Zeitbeschränkung
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_NPI_WERT (RXBUF_UINT32(19))
|
||||
#define I3_RES_KAF_STAT_SLI_NPI_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_SLI_NPI_WERT_TYPE unsigned long
|
||||
// Kilometers driven with no overtaking recognized / Gefahrene Kilometer mit erkanntem Überholverbot
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_NP_WITHDRAW_DIST_WERT (RXBUF_UINT(23))
|
||||
#define I3_RES_KAF_STAT_SLI_NP_WITHDRAW_DIST_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_SLI_NP_WITHDRAW_DIST_WERT_TYPE unsigned short
|
||||
// Number of cancellations of overtaking ban due to exceeding the stopping distance / Anzahl Aufhebungen
|
||||
// Überholverbot infolge Überschreitung Haltedistanz
|
||||
|
||||
#define I3_RES_KAF_STAT_SLI_NP_WITHDRAW_SIGN_WERT (RXBUF_UINT(25))
|
||||
#define I3_RES_KAF_STAT_SLI_NP_WITHDRAW_SIGN_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_SLI_NP_WITHDRAW_SIGN_WERT_TYPE unsigned short
|
||||
// Number of cancellations No overtaking due to detection of a lifting sign / Anzahl Aufhebungen Überholverbot
|
||||
// infolge Detektion Aufhebungsschild
|
||||
|
||||
// Skipping _FASTA_FLA_LOESCHEN on 0x4006 which takes arguments
|
||||
|
||||
// Skipping _STEURUNG_KALIBRIERDATEN_KAFAS on 0x400A which takes arguments
|
||||
|
||||
// Skipping _STEUERN_SLI_NPI_KAMERA_ERKENNUNG on 0x400B which takes arguments
|
||||
|
||||
// Skipping _STEURUNG_SHUTDOWN_WATCHDOG on 0x400C which takes arguments
|
||||
|
||||
#define I3_PID_KAF__STATUS_SAFETY_DIAG_INFO 0x400E
|
||||
// This job shall respond with information about the errors detected by the Safety Diagnostic Manager. The
|
||||
// parameter values shall indicate 0 for fault_not_present and 1 for fault_present. / This job shall respond with
|
||||
// information about the errors detected by the Safety Diagnostic Manager. The parameter values shall indicate 0
|
||||
// for fault_not_present and 1 for fault_present.
|
||||
|
||||
#define I3_RES_KAF_STAT_BYTE_0_FAULT_WERT (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KAF_STAT_BYTE_0_FAULT_WERT_UNIT 'HEX'
|
||||
#define I3_RES_KAF_STAT_BYTE_0_FAULT_WERT_TYPE unsigned char
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0
|
||||
// UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2 UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5
|
||||
// VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7 V_BAT1_freeze_fault / The parameter values shall indicate 0 for
|
||||
// fault_not_present and 1 for fault_present. Bit: 0 UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2
|
||||
// UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5 VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7
|
||||
// V_BAT1_freeze_fault
|
||||
|
||||
#define I3_RES_KAF_STAT_BYTE_1_FAULT_WERT (RXBUF_UCHAR(1))
|
||||
#define I3_RES_KAF_STAT_BYTE_1_FAULT_WERT_UNIT 'HEX'
|
||||
#define I3_RES_KAF_STAT_BYTE_1_FAULT_WERT_TYPE unsigned char
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0
|
||||
// UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2 UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5
|
||||
// VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7 V_BAT1_freeze_fault / The parameter values shall indicate 0 for
|
||||
// fault_not_present and 1 for fault_present. Bit: 0 UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2
|
||||
// UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5 VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7
|
||||
// V_BAT1_freeze_fault
|
||||
|
||||
#define I3_RES_KAF_STAT_BYTE_2_FAULT_WERT (RXBUF_UCHAR(2))
|
||||
#define I3_RES_KAF_STAT_BYTE_2_FAULT_WERT_UNIT 'HEX'
|
||||
#define I3_RES_KAF_STAT_BYTE_2_FAULT_WERT_TYPE unsigned char
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0
|
||||
// UP1V0D_voltage_fault 1 UP1V8D_voltage_fault 2 UP2V5D_voltage_fault 3 UP3V3D_voltage_fault 4
|
||||
// UP5V0D_voltage_fault 5 VTEMP1_temperature_fault 6 VTEMP2_temperature_fault 7 V_BAT1_voltage_fault / The
|
||||
// parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 UP1V0D_voltage_fault
|
||||
// 1 UP1V8D_voltage_fault 2 UP2V5D_voltage_fault 3 UP3V3D_voltage_fault 4 UP5V0D_voltage_fault 5
|
||||
// VTEMP1_temperature_fault 6 VTEMP2_temperature_fault 7 V_BAT1_voltage_fault
|
||||
|
||||
#define I3_RES_KAF_STAT_BYTE_3_FAULT_WERT (RXBUF_UCHAR(3))
|
||||
#define I3_RES_KAF_STAT_BYTE_3_FAULT_WERT_UNIT 'HEX'
|
||||
#define I3_RES_KAF_STAT_BYTE_3_FAULT_WERT_TYPE unsigned char
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0
|
||||
// ECU_inconsistent_temperature_fault / The parameter values shall indicate 0 for fault_not_present and 1 for
|
||||
// fault_present. Bit: 0 ECU_inconsistent_temperature_fault
|
||||
|
||||
#define I3_RES_KAF_STAT_BYTE_4_FAULT_WERT (RXBUF_UCHAR(4))
|
||||
#define I3_RES_KAF_STAT_BYTE_4_FAULT_WERT_UNIT 'HEX'
|
||||
#define I3_RES_KAF_STAT_BYTE_4_FAULT_WERT_TYPE unsigned char
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 Eq2Unavailable 1
|
||||
// Eq2FaultHandlingAliveError 2 Eq2FaultHandlingCrcError 3 VideoError_400 4 TempStatus_400 5 CamLVDS_Defect_400 6
|
||||
// CamEEP_Fail_400 7 BurntPixel_400 / The parameter values shall indicate 0 for fault_not_present and 1 for
|
||||
// fault_present. Bit: 0 Eq2Unavailable 1 Eq2FaultHandlingAliveError 2 Eq2FaultHandlingCrcError 3 VideoError_400
|
||||
// 4 TempStatus_400 5 CamLVDS_Defect_400 6 CamEEP_Fail_400 7 BurntPixel_400
|
||||
|
||||
#define I3_RES_KAF_STAT_BYTE_5_FAULT_WERT (RXBUF_UCHAR(5))
|
||||
#define I3_RES_KAF_STAT_BYTE_5_FAULT_WERT_UNIT 'HEX'
|
||||
#define I3_RES_KAF_STAT_BYTE_5_FAULT_WERT_TYPE unsigned char
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 DDR_Failure_400 1
|
||||
// WdgMSafetyAliveSupervisonFault / The parameter values shall indicate 0 for fault_not_present and 1 for
|
||||
// fault_present. Bit: 0 DDR_Failure_400 1 WdgMSafetyAliveSupervisonFault
|
||||
|
||||
#define I3_RES_KAF_STAT_BYTE_6_FAULT_WERT (RXBUF_UCHAR(6))
|
||||
#define I3_RES_KAF_STAT_BYTE_6_FAULT_WERT_UNIT 'HEX'
|
||||
#define I3_RES_KAF_STAT_BYTE_6_FAULT_WERT_TYPE unsigned char
|
||||
// The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 ActiveFaultClass
|
||||
// Bit 0 * 1 ActiveFaultClass Bit 1 * 2 ActiveFaultClass Bit 2 * 3 (not disp_drasy_available) 4 (not
|
||||
// aAssistFunctionAvailable) 5 (not qAssistActive) 6 Not in use 7 Safe state entered disp_drasy_available means
|
||||
// that the bit is 0 when the signal is available, and 1 when it is not available / The parameter values shall
|
||||
// indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 ActiveFaultClass Bit 0* 1 ActiveFaultClass
|
||||
// Bit 1* 2 ActiveFaultClass Bit 2* 3 (not disp_drasy_available) 4 (not aAssistFunctionAvailable) 5 (not
|
||||
// qAssistActive) 6 Not in use 7 Safe state entered disp_drasy_available means that the bit is 0 when the
|
||||
// signal is availablem, and 1 when it is not available
|
||||
|
||||
#define I3_PID_KAF__STATUS_WARNZEITPUNKT_FCW 0x400F
|
||||
// currently selected warning flavor / currently selected warning flavor
|
||||
|
||||
#define I3_RES_KAF_STAT_WARN_FLAV_FCW (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KAF_STAT_WARN_FLAV_FCW_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_WARN_FLAV_FCW_TYPE unsigned char
|
||||
// currently selected warning flavor / currently selected warning flavor
|
||||
|
||||
#define I3_PID_KAF_FASTA_PPP_DATA 0x4010
|
||||
// FASTA_PPP_DATA / FASTA_PPP_DATA
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_WARNING_ZONE (RXBUF_UINT(0))
|
||||
#define I3_RES_KAF_STAT_PPP_WARNING_ZONE_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_PPP_WARNING_ZONE_TYPE unsigned short
|
||||
// Type of warning zone / Art der Warnzone
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_DZ_EVENTS_0_TO_20_WERT (RXBUF_UINT(2))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_DZ_EVENTS_0_TO_20_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_DZ_EVENTS_0_TO_20_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of DZ events in the range 0 <x <20 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der DZ-Events im Bereich 0 < x < 20 km/h gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_DZ_EVENTS_20_TO_40_WERT (RXBUF_UINT(4))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_DZ_EVENTS_20_TO_40_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_DZ_EVENTS_20_TO_40_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of DZ events in the range 20 <x <40 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der DZ-Events im Bereich 20 < x < 40 km/h gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_DZ_EVENTS_40_TO_60_WERT (RXBUF_UINT(6))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_DZ_EVENTS_40_TO_60_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_DZ_EVENTS_40_TO_60_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of DZ events in the range 40 <x <60 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der DZ-Events im Bereich 40 < x < 60 km/h gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ1_EVENTS_0_TO_20_WERT (RXBUF_UINT(8))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ1_EVENTS_0_TO_20_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ1_EVENTS_0_TO_20_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of PDZ1 events in the range 0 <x <20 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der PDZ1-Events im Bereich 0 < x < 20 km/h gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ1_EVENTS_20_TO_40_WERT (RXBUF_UINT(10))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ1_EVENTS_20_TO_40_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ1_EVENTS_20_TO_40_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of PDZ1 events in the range 20 <x <40 km / h / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der PDZ1-Events im Bereich 20 < x < 40 km/h gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ1_EVENTS_40_TO_60_WERT (RXBUF_UINT(12))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ1_EVENTS_40_TO_60_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ1_EVENTS_40_TO_60_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of PDZ1 events in the range 40 <x <60 km / h / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der PDZ1-Events im Bereich 40 < x < 60 km/h gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ2_EVENTS_0_TO_20_WERT (RXBUF_UINT(14))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ2_EVENTS_0_TO_20_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ2_EVENTS_0_TO_20_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of PDZ2 events in the range 0 <x <20 km / h / Die Kenngröße
|
||||
// wird bestimmt, indem die Anzahl der PDZ2-Events im Bereich 0 < x < 20 km/h gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ2_EVENTS_20_TO_40_WERT (RXBUF_UINT(16))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ2_EVENTS_20_TO_40_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ2_EVENTS_20_TO_40_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of PDZ2 events in the range 20 <x <40 km / h / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der PDZ2-Events im Bereich 20 < x < 40 km/h gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ2_EVENTS_40_TO_60_WERT (RXBUF_UINT(18))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ2_EVENTS_40_TO_60_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PDZ2_EVENTS_40_TO_60_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of PDZ2 events in the range 40 <x <60 km / h / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der PDZ2-Events im Bereich 40 < x < 60 km/h gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PREWARNUNG_REQUESTS_WERT (RXBUF_UINT(20))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PREWARNUNG_REQUESTS_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PREWARNUNG_REQUESTS_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of pre-warning requests / Die Kenngröße wird bestimmt,
|
||||
// indem die Anzahl der Pre-Warning-Requests gezählt wird
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_ACUTEWARNING_REQUESTS_WERT (RXBUF_UINT(22))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_ACUTEWARNING_REQUESTS_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_ACUTEWARNING_REQUESTS_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of acute warning requests. / Die Kenngröße wird bestimmt,
|
||||
// indem die Anzahl der Acute-Warning-Requests gezählt wird.
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_HBA_REQUESTS_WERT (RXBUF_UINT(24))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_HBA_REQUESTS_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_HBA_REQUESTS_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of HBA requests. / Die Kenngröße wird bestimmt, indem die
|
||||
// Anzahl der HBA-Requests gezählt wird.
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PREFILL_REQUESTS_WERT (RXBUF_UINT(26))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PREFILL_REQUESTS_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_PREFILL_REQUESTS_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of prefill requests. / Die Kenngröße wird bestimmt, indem
|
||||
// die Anzahl der Prefill-Requests gezählt wird.
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_BRAKE_REQUESTS_WERT (RXBUF_UINT(28))
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_BRAKE_REQUESTS_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_AMNT_BRAKE_REQUESTS_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of brake requests. / Die Kenngröße wird bestimmt, indem die
|
||||
// Anzahl der Brake-Requests gezählt wird.
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_DEACT_DRIVER_WERT (RXBUF_UINT(30))
|
||||
#define I3_RES_KAF_STAT_PPP_DEACT_DRIVER_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_DEACT_DRIVER_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of times the pFGS function was switched off by the driver.
|
||||
// (Status change of the activation by pressing the button) / Die Kenngröße wird bestimmt, indem die Anzahl der
|
||||
// Abschaltungen der Funktion pFGS durch den Fahrer gezählt wird. (Statuswechsel der Aktivierung durch
|
||||
// Tasterbetätigung)
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_DEACT_AVAILABILITY_WERT (RXBUF_UINT(32))
|
||||
#define I3_RES_KAF_STAT_PPP_DEACT_AVAILABILITY_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_DEACT_AVAILABILITY_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of times the pFGS function was switched off by the KAFAS
|
||||
// system based on the availability concept (e.g. recognition qualifier, degradation concept, ...). / Die
|
||||
// Kenngröße wird bestimmt, indem die Anzahl der Abschaltungen der Funktion pFGS durch das KAFAS System aufgrund
|
||||
// des Verfügbarkeitskonzeptes (z.B. Erkennungsqualifier, Degradationskonzept,...) gezählt wird.
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_DEACT_WARNING_CHAIN_WERT (RXBUF_UINT(34))
|
||||
#define I3_RES_KAF_STAT_PPP_DEACT_WARNING_CHAIN_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_DEACT_WARNING_CHAIN_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of times the pPP function has been switched off by the
|
||||
// KAFAS system based on the braking and warning chain. / Die Kenngröße wird bestimmt, indem die Anzahl der
|
||||
// Abschaltungen der Funktion pPP durch das KAFAS System aufgrund der Brems-und Warnkette gezählt wird.
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_OPERATION_TIME_CL50_WERT (RXBUF_UINT32(36))
|
||||
#define I3_RES_KAF_STAT_PPP_OPERATION_TIME_CL50_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_PPP_OPERATION_TIME_CL50_WERT_TYPE unsigned long
|
||||
// The parameter is determined by always counting the operating time in seconds from terminal 50. / Die Kenngröße
|
||||
// wird bestimmt, indem immer ab Kl 50 die Betriebszeit in Sekunden gezählt wird.
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_OPERATION_TIME_ACTIVE_WERT (RXBUF_UINT32(40))
|
||||
#define I3_RES_KAF_STAT_PPP_OPERATION_TIME_ACTIVE_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_PPP_OPERATION_TIME_ACTIVE_WERT_TYPE unsigned long
|
||||
// The parameter is determined by always counting the operating time in seconds from terminal 50 while the pFGS
|
||||
// function is activated. / Die Kenngröße wird bestimmt, indem immer ab Kl 50 die Betriebszeit in Sekunden
|
||||
// gezählt wird, während die pFGS-Funktion aktiviert ist.
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_FS_CC_WERT (RXBUF_UINT(44))
|
||||
#define I3_RES_KAF_STAT_PPP_FS_CC_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_PPP_FS_CC_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of Check Control messages triggered due to reduced
|
||||
// visibility for the pFGS function. / Die Kenngröße wird bestimmt, indem die Anzahl der ausgelösten Check
|
||||
// Control Meldungen aufgrund reduzierter Sicht für die Funktion pFGS gezählt wird.
|
||||
|
||||
#define I3_RES_KAF_STAT_PPP_DRIVEN_TIME_FS_ACT_WERT (RXBUF_UINT32(46))
|
||||
#define I3_RES_KAF_STAT_PPP_DRIVEN_TIME_FS_ACT_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_PPP_DRIVEN_TIME_FS_ACT_WERT_TYPE unsigned long
|
||||
// The parameter is determined by determining the operating time from Kl 50 in seconds in which pFGS is in the
|
||||
// reduced visibility status and activated by the driver. / Die Kenngröße wird bestimmt, indem die Betriebszeit
|
||||
// ab Kl 50 in Sekunden ermittelt wird, in der pFGS im Status reduzierte Sicht und vom Fahrer aktiviert ist.
|
||||
|
||||
#define I3_PID_KAF_FASTA_CCM_DATA 0x4011
|
||||
// FASTA_CCM_DATA / FASTA_CCM_DATA
|
||||
|
||||
#define I3_RES_KAF_STAT_CCM_AMNT_BRAKE_20_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_KAF_STAT_CCM_AMNT_BRAKE_20_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_CCM_AMNT_BRAKE_20_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of CCM brakes in which the speed of the host vehicle at the
|
||||
// start of braking is greater than or equal to 0 km / h and less than 20 km / h. / Die Kenngröße wird bestimmt,
|
||||
// indem die Anzahl der CCM-Bremsungen gezählt wird, bei denen die Geschwindigkeit des Egofahrzeugs zu
|
||||
// Bremsbeginn größer gleich 0 km/h und kleiner 20 km/h ist.
|
||||
|
||||
#define I3_RES_KAF_STAT_CCM_AMNT_BRAKE_40_WERT (RXBUF_UINT(2))
|
||||
#define I3_RES_KAF_STAT_CCM_AMNT_BRAKE_40_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_CCM_AMNT_BRAKE_40_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of CCM brakes in which the speed of the host vehicle at the
|
||||
// start of braking is greater than or equal to 20 km / h and less than 40 km / h. / Die Kenngröße wird bestimmt,
|
||||
// indem die Anzahl der CCM-Bremsungen gezählt wird, bei denen die Geschwindigkeit des Egofahrzeugs zu
|
||||
// Bremsbeginn größer gleich 20 km/h und kleiner 40 km/h ist.
|
||||
|
||||
#define I3_RES_KAF_STAT_CCM_AMNT_BRAKE_GEQ40_WERT (RXBUF_UINT(4))
|
||||
#define I3_RES_KAF_STAT_CCM_AMNT_BRAKE_GEQ40_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_CCM_AMNT_BRAKE_GEQ40_WERT_TYPE unsigned short
|
||||
// The parameter is determined by counting the number of CCM brakes in which the speed of the host vehicle is
|
||||
// greater than or equal to 40 km / h at the beginning of the braking / Die Kenngröße wird bestimmt, indem die
|
||||
// Anzahl der CCM-Bremsungen gezählt wird, bei denen die Geschwindigkeit des Egofahrzeugs zu Bremsbeginn größer
|
||||
// gleich 40 km/h ist
|
||||
|
||||
#define I3_PID_KAF__KAFAS_ENVINT_DATA 0x4012
|
||||
// _KAFAS_ENVINT_DATA / _KAFAS_ENVINT_DATA
|
||||
|
||||
#define I3_RES_KAF_STAT_ENVINT_DRIVEN_DIST_FS_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_KAF_STAT_ENVINT_DRIVEN_DIST_FS_WERT_UNIT 'km'
|
||||
#define I3_RES_KAF_STAT_ENVINT_DRIVEN_DIST_FS_WERT_TYPE unsigned long
|
||||
// Cont the number of km driven with degraded availability / Cont the number of km driven with degraded
|
||||
// availability
|
||||
|
||||
#define I3_RES_KAF_STAT_ENVINT_DRIVEN_TIME_FS_WERT (RXBUF_UINT32(4))
|
||||
#define I3_RES_KAF_STAT_ENVINT_DRIVEN_TIME_FS_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_ENVINT_DRIVEN_TIME_FS_WERT_TYPE unsigned long
|
||||
// Count the time in seconds driven with degraded availability / Count the time in seconds driven with degraded
|
||||
// availability
|
||||
|
||||
// Skipping _STEUERN_WARNAUSGABE_PPP on 0x4015 which takes arguments
|
||||
|
||||
#define I3_PID_KAF_PPP_ANFORDERUNGEN 0x4016
|
||||
// This job shall respond with the timestamp and type of warning. It shall be possible to read the information
|
||||
// over a clamp change, which means the information needs to be store in a NVRAM. The response value shall be set
|
||||
// to 0x00 as default value (i.e. if no acute warning or brake request have been triggered this job shall respond
|
||||
// with zeros) The type of warning and timestamps shall be related to the type of warning. 1) Acute warning
|
||||
// request When signal WARN_HDWOBS_FGS in message 198h (SYS3637) is set to 0001b Timestamp_acute = the actual
|
||||
// system time when the warning happened. 2) Brake request When signal TAR_DCRN_FGS in the message 198h (SYS3637)
|
||||
// changes from 0xFE to a value less than 0xFE. Timestamp_brake = the actual system time when the warning
|
||||
// happened. / This job shall respond with the timestamp and type of warning. It shall be possible to read the
|
||||
// information over a clamp change, which means the information needs to be store in a NVRAM. The response value
|
||||
// shall be set to 0x00 as default value (i.e. if no acute warning or brake request have been triggered this job
|
||||
// shall respond with zeros) The type of warning and timestamps shall be related to the type of warning. 1)
|
||||
// Acute warning request When signal WARN_HDWOBS_FGS in message 198h (SYS3637) is set to 0001b Timestamp_acute =
|
||||
// the actual system time when the warning happened. 2) Brake request When signal TAR_DCRN_FGS in the message
|
||||
// 198h (SYS3637) changes from 0xFE to a value less than 0xFE. Timestamp_brake = the actual system time when the
|
||||
// warning happened.
|
||||
|
||||
#define I3_RES_KAF_STAT_TYPE_OF_WARNING (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KAF_STAT_TYPE_OF_WARNING_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_TYPE_OF_WARNING_TYPE unsigned char
|
||||
// 0x01 if only a Brake request according to 2) is triggered 0x02 if only an Acute warning request according to
|
||||
// 1) is triggered 0x03 if both an Acute warning request and a Brake request is triggered / 0x01 if only a Brake
|
||||
// request according to 2) is triggered 0x02 if only an Acute warning request according to 1) is triggered 0x03
|
||||
// if both an Acute warning request and a Brake request is triggered
|
||||
|
||||
#define I3_RES_KAF_STAT_TIMESTAMP_ACUTE_WERT (RXBUF_UINT32(1))
|
||||
#define I3_RES_KAF_STAT_TIMESTAMP_ACUTE_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_TIMESTAMP_ACUTE_WERT_TYPE unsigned long
|
||||
// The time stamp is the system time value (message 328h) when the warning happened / The time stamp is the
|
||||
// system time value (message 328h) when the warning happened
|
||||
|
||||
#define I3_RES_KAF_STAT_TIMESTAMP_BRAKE_WERT (RXBUF_UINT32(5))
|
||||
#define I3_RES_KAF_STAT_TIMESTAMP_BRAKE_WERT_UNIT 's'
|
||||
#define I3_RES_KAF_STAT_TIMESTAMP_BRAKE_WERT_TYPE unsigned long
|
||||
// The time stamp is the system time value (message 328h) when the warning happened. / The time stamp is the
|
||||
// system time value (message 328h) when the warning happened.
|
||||
|
||||
#define I3_PID_KAF__GENERIC_EYEQ2_INFO 0x4017
|
||||
// EyeQ2 restarts, 1 byte Counter for number of EyeQ2 restarts caused by camera error debouncing as described in
|
||||
// DTC 0x800ABB - Camera Connection Error / EyeQ2 restarts, 1 byte Counter for number of EyeQ2 restarts caused by
|
||||
// camera error debouncing as described in DTC 0x800ABB - Camera Connection Error
|
||||
|
||||
#define I3_RES_KAF_STAT_EYEQ2_RESTARTS_WERT (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KAF_STAT_EYEQ2_RESTARTS_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_EYEQ2_RESTARTS_WERT_TYPE unsigned char
|
||||
// EyeQ2 restarts, 1 byte Counter for number of EyeQ2 restarts caused by camera error debouncing as described in
|
||||
// DTC 0x800ABB - Camera Connection Error / EyeQ2 restarts, 1 byte Counter for number of EyeQ2 restarts caused by
|
||||
// camera error debouncing as described in DTC 0x800ABB - Camera Connection Error
|
||||
|
||||
// Skipping _RESET_GENERIC_EYEQ2_INFO on 0x4018 which takes arguments
|
||||
|
||||
#define I3_PID_KAF__STATUS_CAMERA_MONITORING_WERT 0x4050
|
||||
// The DID can be used to monitor the status of the camera -> EyeQ2 image transfer, as well as the camera
|
||||
// temperature. / The DID can be used to monitor the status of the camera -> EyeQ2 image transfer, as well as the
|
||||
// camera temperature.
|
||||
|
||||
#define I3_RES_KAF_STAT_FRAME_INDEX_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_KAF_STAT_FRAME_INDEX_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_FRAME_INDEX_WERT_TYPE unsigned short
|
||||
// This is a frame counter, that shall be increased for every frame that is not skipped. Frames that are skipped
|
||||
// for any reason shall not increment this counter. When the counter reaches over 65535, it shall restart from 0.
|
||||
// The counter shall restart from 0 at every startup of the EyeQ2. / This is a frame counter, that shall be
|
||||
// increased for every frame that is not skipped. Frames that are skipped for any reason shall not increment this
|
||||
// counter. When the counter reaches over 65535, it shall restart from 0. The counter shall restart from 0 at
|
||||
// every startup of the EyeQ2.
|
||||
|
||||
#define I3_RES_KAF_STAT_VIDEO_ERROR_COUNT_WERT (RXBUF_UINT(2))
|
||||
#define I3_RES_KAF_STAT_VIDEO_ERROR_COUNT_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_VIDEO_ERROR_COUNT_WERT_TYPE unsigned short
|
||||
// The number of bad frames received from the camera (frames dropped due to data / sync errors). This counter
|
||||
// shall be increased with one for each cycle the video error signal is set in the 0x400 message. / The number of
|
||||
// bad frames received from the camera (frames dropped due to data/sync errors). This counter shall be increased
|
||||
// with one for each cycle the Video error signal is set in the 0x400 message.
|
||||
|
||||
#define I3_RES_KAF_STAT_DROPPED_FRAME_COUNT_WERT (RXBUF_UINT(4))
|
||||
#define I3_RES_KAF_STAT_DROPPED_FRAME_COUNT_WERT_UNIT 'Counts'
|
||||
#define I3_RES_KAF_STAT_DROPPED_FRAME_COUNT_WERT_TYPE unsigned short
|
||||
// The number of dropped frames. This counter shall be increased when there is a video error and when the EyeQ2
|
||||
// skips a frame for any other reason, such as too long processing time for the preceding frame. / The number of
|
||||
// dropped frames. This counter shall be increased when there is a video error and when the EyeQ2 skips a frame
|
||||
// for any other reason, such as too long processing time for the preceding frame.
|
||||
|
||||
#define I3_RES_KAF_STAT_CAMERA_TEMP_WERT (RXBUF_UCHAR(6)-60.0)
|
||||
#define I3_RES_KAF_STAT_CAMERA_TEMP_WERT_UNIT '°C'
|
||||
#define I3_RES_KAF_STAT_CAMERA_TEMP_WERT_TYPE unsigned char
|
||||
// The camera temperature, as read by the EyeQ2 via I2C. The camera temperature shall be read from the EyeQ2
|
||||
// every 10 seconds. / The camera temperature, as read by the EyeQ2 via I2C. The camera temperature shall be read
|
||||
// from the EyeQ2 every 10 seconds.
|
||||
|
||||
// Skipping STEUERN_ANZEIGE_KOMBI_TLC on 0xA37C which takes arguments
|
||||
|
||||
#define I3_PID_KAF_ABSCHALTGRUND_FERNLICHT 0xD341
|
||||
// Reasons for switching off high beam. / Abschaltgründe für Fernlicht.
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_ENTGEGENKOMMENDES_FAHRZEUG (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KAF_STAT_FLA_ENTGEGENKOMMENDES_FAHRZEUG_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_FLA_ENTGEGENKOMMENDES_FAHRZEUG_TYPE unsigned char
|
||||
// Indicates whether an oncoming vehicle has been detected: 0 = no vehicle detected, 1 = vehicle detected / Gibt
|
||||
// aus, ob ein entgegenkommendes Fahrzeug erkannt worden ist: 0 = kein Fahrzeug erkannt, 1 = Fahrzeug erkannt
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_VORAUSFAHRENDES_FAHRZEUG (RXBUF_UCHAR(1))
|
||||
#define I3_RES_KAF_STAT_FLA_VORAUSFAHRENDES_FAHRZEUG_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_FLA_VORAUSFAHRENDES_FAHRZEUG_TYPE unsigned char
|
||||
// Indicates whether a vehicle in front has been detected: 0 = no vehicle detected, 1 = vehicle detected / Gibt
|
||||
// aus, ob ein vorausfahrendes Fahrzeug erkannt worden ist: 0 = kein Fahrzeug erkannt, 1 = Fahrzeug erkannt
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_GESCHWINDIGKEITSLIMIT (RXBUF_UCHAR(2))
|
||||
#define I3_RES_KAF_STAT_FLA_GESCHWINDIGKEITSLIMIT_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_FLA_GESCHWINDIGKEITSLIMIT_TYPE unsigned char
|
||||
// Indicates whether the speed below the limit has been detected: 0 = speed above the threshold, high beam is
|
||||
// switched on, 1 = speed below the threshold, high beam is switched off / Gibt aus, ob die Geschwindigkeit
|
||||
// unterhalb der Grenze erkannt worden ist: 0 = Geschwindigkeit oberhalb der Schwelle, Fernlicht wird
|
||||
// eingeschaltet, 1 = Geschwindigkeit unterhalb der Schwelle, Fernlicht wird abgeschaltet
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_UMGEBUNGSHELLIGKEIT (RXBUF_UCHAR(3))
|
||||
#define I3_RES_KAF_STAT_FLA_UMGEBUNGSHELLIGKEIT_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_FLA_UMGEBUNGSHELLIGKEIT_TYPE unsigned char
|
||||
// Indicates whether ambient brightness (day) has been recognized: 0 = no brightness (night) recognized, 1 =
|
||||
// brightness (day) recognized / Gibt aus, ob Umgebungshelligkeit (Tag) erkannt worden ist: 0 = kein Helligkeit
|
||||
// (Nacht) erkannt, 1 = Helligkeit (Tag) erkannt
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_ORTSCHAFTSERKENNUNG (RXBUF_UCHAR(4))
|
||||
#define I3_RES_KAF_STAT_FLA_ORTSCHAFTSERKENNUNG_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_FLA_ORTSCHAFTSERKENNUNG_TYPE unsigned char
|
||||
// Indicates whether sufficient lighting has been detected: 0 = insufficient lighting detected, 1 = sufficient
|
||||
// lighting detected / Gibt aus, ob eine ausreichende Beleuchtung erkannt worden ist: 0 = keine ausreichende
|
||||
// Beleuchtung erkannt, 1 = ausreichende Beleuchtung erkannt
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_NEBELERKENNUNG (RXBUF_UCHAR(5))
|
||||
#define I3_RES_KAF_STAT_FLA_NEBELERKENNUNG_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_FLA_NEBELERKENNUNG_TYPE unsigned char
|
||||
// Indicates whether fog has been detected: 0 = no fog, 1 = fog detected / Gibt aus, ob Nebel erkannt worden ist:
|
||||
// 0 = kein Nebel, 1 = Nebel erkannt
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_AUTOBAHNMODE (RXBUF_UCHAR(6))
|
||||
#define I3_RES_KAF_STAT_FLA_AUTOBAHNMODE_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_FLA_AUTOBAHNMODE_TYPE unsigned char
|
||||
// Indicates whether a motorway has been recognized: 0 = no motorway, 1 = motorway recognized / Gibt aus, ob
|
||||
// Autobahn erkannt worden ist: 0 = keine Autobahn, 1 = Autobahn erkannt
|
||||
|
||||
#define I3_RES_KAF_STAT_FLA_VERZOEGERUNGSZEIT (RXBUF_UCHAR(7))
|
||||
#define I3_RES_KAF_STAT_FLA_VERZOEGERUNGSZEIT_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_FLA_VERZOEGERUNGSZEIT_TYPE unsigned char
|
||||
// Indicates whether the high beam is not switched on due to a time delay: 0 = no time delay, 1 = time delay /
|
||||
// Gibt aus, ob wegen einer Zeiterzögerung das Fernlicht nicht eingeschaltet wird: 0 = keine Zeitverzögerung, 1
|
||||
// = Zeitverzögerung
|
||||
|
||||
#define I3_PID_KAF_KONFIGURATION_KAFAS 0xD374
|
||||
// Issue of equipment from KAFAS / Ausgabe der Ausstattung von KAFAS
|
||||
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_TLC (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_TLC_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_TLC_TYPE unsigned char
|
||||
// Indicates whether the time-to-line crossing function is available: 0 = not available; 1 = present / Gibt an,
|
||||
// ob die Funktion Time-to-Line Crossing vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_FLA (RXBUF_UCHAR(1))
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_FLA_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_FLA_TYPE unsigned char
|
||||
// Indicates whether the high beam assistant function is available: 0 = not available; 1 = present / Gibt an, ob
|
||||
// die Funktion Fernlichtassistent vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_SLI (RXBUF_UCHAR(2))
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_SLI_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_SLI_TYPE unsigned char
|
||||
// Indicates whether the Speed-Limit-Info function is available: 0 = not available; 1 = present / Gibt an, ob die
|
||||
// Funktion Speed-Limit-Info vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_NPI (RXBUF_UCHAR(3))
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_NPI_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_NPI_TYPE unsigned char
|
||||
// Indicates whether the NoPassing-Info function is available: 0 = not available; 1 = present / Gibt an, ob die
|
||||
// Funktion NoPassing-Info vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_FCW (RXBUF_UCHAR(4))
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_FCW_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_FCW_TYPE unsigned char
|
||||
// Indicates whether the Forward Collision Warning function is available: 0 = not available; 1 = present / Gibt
|
||||
// an, ob die Funktion Forward-Collision-Warning vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_PED (RXBUF_UCHAR(5))
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_PED_UNIT '0/1'
|
||||
#define I3_RES_KAF_STAT_VORHANDEN_PED_TYPE unsigned char
|
||||
// Indicates whether the Pedistrian Recognition function is available: 0 = not available; 1 = present / Gibt an,
|
||||
// ob die Funktion Pedistrian Recognition (Fußgängererkennung) vorhanden ist: 0= nicht vorhanden; 1= vorhanden
|
||||
|
||||
#define I3_PID_KAF_KAFAS_VINS_LESEN 0xD393
|
||||
// Reading out the chassis number from the camera and the control unit. / Auslesen der Fahrgestellnummer aus der
|
||||
// Kamera und dem Steuergerät.
|
||||
|
||||
// Can't yet generate code for STAT_KAFAS_KAM_VIN_TEXT of type string[7], at offset 0. But we account for the 7 bytes
|
||||
// Output of the 7-digit chassis number from the camera. / Ausgabe der 7-stelligen Fahrgestellnummer aus der
|
||||
// Kamera.
|
||||
|
||||
// Can't yet generate code for STAT_KAFAS_ECU_VIN_TEXT of type string[7], at offset 7. But we account for the 7 bytes
|
||||
// Output of the 7-digit chassis number from the control unit. / Ausgabe der 7-stelligen Fahrgestellnummer aus
|
||||
// dem Steuergerät.
|
||||
|
||||
#define I3_RES_KAF_STAT_KAFAS_VIN_STATUS_NR (RXBUF_UCHAR(14))
|
||||
#define I3_RES_KAF_STAT_KAFAS_VIN_STATUS_NR_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_KAFAS_VIN_STATUS_NR_TYPE unsigned char
|
||||
// Indicates whether the assignment of camera to control unit matches: 0x00: NO MATCH, 0x01: MATCH / Gibt aus, ob
|
||||
// die Zuordnung Kamera zu Steuergerät übereinstimmt: 0x00: KEINE UEBEREINSTIMMUNG, 0x01: UEBEREINSTIMMUNG
|
||||
|
||||
#define I3_PID_KAF_KALIBRIERDATEN_KAFAS 0xD396
|
||||
// Output of the calibration data from the KAFAS camera / Ausgabe der Kalibrierdaten der KAFAS-Kamera
|
||||
|
||||
#define I3_RES_KAF_STAT_OFFLINE_YAW_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_KAF_STAT_OFFLINE_YAW_WERT_UNIT 'Pixel'
|
||||
#define I3_RES_KAF_STAT_OFFLINE_YAW_WERT_TYPE unsigned short
|
||||
// Offline yaw angle / Offline Yaw-Winkel
|
||||
|
||||
#define I3_RES_KAF_STAT_OFFLINE_HORIZON_WERT (RXBUF_UINT(2))
|
||||
#define I3_RES_KAF_STAT_OFFLINE_HORIZON_WERT_UNIT 'Pixel'
|
||||
#define I3_RES_KAF_STAT_OFFLINE_HORIZON_WERT_TYPE unsigned short
|
||||
// Offline horizon angle / Offline Horizon-Winkel
|
||||
|
||||
#define I3_RES_KAF_STAT_OFFLINE_ROLL_WERT (RXBUF_UINT(4)/100.0f)
|
||||
#define I3_RES_KAF_STAT_OFFLINE_ROLL_WERT_UNIT 'Grad'
|
||||
#define I3_RES_KAF_STAT_OFFLINE_ROLL_WERT_TYPE float
|
||||
// Offline roll angle / Offline Roll-Winkel
|
||||
|
||||
#define I3_RES_KAF_STAT_ONLINE_YAW_WERT (RXBUF_UINT(6))
|
||||
#define I3_RES_KAF_STAT_ONLINE_YAW_WERT_UNIT 'Pixel'
|
||||
#define I3_RES_KAF_STAT_ONLINE_YAW_WERT_TYPE unsigned short
|
||||
// Online yaw angle / Online Yaw-Winkel
|
||||
|
||||
#define I3_RES_KAF_STAT_ONLINE_HORIZON_WERT (RXBUF_UINT(8))
|
||||
#define I3_RES_KAF_STAT_ONLINE_HORIZON_WERT_UNIT 'Pixel'
|
||||
#define I3_RES_KAF_STAT_ONLINE_HORIZON_WERT_TYPE unsigned short
|
||||
// Online horizon angle / Online Horizon-Winkel
|
||||
|
||||
#define I3_RES_KAF_STAT_ONLINE_ROLL_WERT (RXBUF_UINT(10)/100.0f)
|
||||
#define I3_RES_KAF_STAT_ONLINE_ROLL_WERT_UNIT 'Grad'
|
||||
#define I3_RES_KAF_STAT_ONLINE_ROLL_WERT_TYPE float
|
||||
// Online roll angle / Online Roll-Winkel
|
||||
|
||||
#define I3_RES_KAF_STAT_KAM_HOEHE_WERT (RXBUF_UINT(12))
|
||||
#define I3_RES_KAF_STAT_KAM_HOEHE_WERT_UNIT 'mm'
|
||||
#define I3_RES_KAF_STAT_KAM_HOEHE_WERT_TYPE unsigned short
|
||||
// Camera installation height / Kamera-Verbauhöhe
|
||||
|
||||
#define I3_RES_KAF_STAT_BRENNWEITE_WERT (RXBUF_UINT(14))
|
||||
#define I3_RES_KAF_STAT_BRENNWEITE_WERT_UNIT 'Pixel'
|
||||
#define I3_RES_KAF_STAT_BRENNWEITE_WERT_TYPE unsigned short
|
||||
// Focal length / Brennweite
|
||||
|
||||
#define I3_RES_KAF_STAT_GRABBING_SHIFT_WERT (RXBUF_UINT(16))
|
||||
#define I3_RES_KAF_STAT_GRABBING_SHIFT_WERT_UNIT 'Pixel'
|
||||
#define I3_RES_KAF_STAT_GRABBING_SHIFT_WERT_TYPE unsigned short
|
||||
// Grabbing shift / Grabbing-Shift
|
||||
|
||||
// Can't yet generate code for STAT_FAHRGESTELLNR_TEXT of type string[7], at offset 18. But we account for the 7 bytes
|
||||
// Chassis number in the camera / Fahrgestellnummer in der Kamera
|
||||
|
||||
#define I3_PID_KAF_KAMERAVERBINDUNG_ECU 0xD397
|
||||
// For values see TAB_KAM_VERBINDUNG / Werte siehe TAB_KAM_VERBINDUNG
|
||||
|
||||
#define I3_RES_KAF_STAT_KAFAS_VERBINDUNG_KAM_NR (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KAF_STAT_KAFAS_VERBINDUNG_KAM_NR_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_KAFAS_VERBINDUNG_KAM_NR_TYPE unsigned char
|
||||
// For values see TAB_KAM_VERBINDUNG / Werte siehe TAB_KAM_VERBINDUNG
|
||||
|
||||
// Skipping TLC_AKTUATOR on 0xD399 which takes arguments
|
||||
|
||||
// Skipping DEMO_MODE_FLA on 0xD3A6 which takes arguments
|
||||
|
||||
// Skipping FCW_WARNAUSGABE on 0xD3A7 which takes arguments
|
||||
|
||||
// Skipping FCW_VERFUEGBARKEITSVERLUST on 0xD3A8 which takes arguments
|
||||
|
||||
// Skipping STEUERN_ANZEIGE_KOMBI_SLI on 0xD3A9 which takes arguments
|
||||
|
||||
#define I3_PID_KAF_ERGEBNIS_SLI 0xD3AA
|
||||
// Output of the result of the traffic sign recognition. / Ausgabe des Ergebnis der Verkehrzeichenerkennung.
|
||||
|
||||
#define I3_RES_KAF_STAT_KAMERA_ZEICHEN_NR (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KAF_STAT_KAMERA_ZEICHEN_NR_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_KAMERA_ZEICHEN_NR_TYPE unsigned char
|
||||
// Indicates which character was recognized by the camera: Results see TAB_ZEICHEN_KAMERA / Gibt aus, welches
|
||||
// Zeichen von der Kamera erkannt wurde: Results siehe TAB_ZEICHEN_KAMERA
|
||||
|
||||
#define I3_RES_KAF_STAT_KAMERA_GESCHWINDIGKEIT_WERT (RXBUF_UCHAR(1))
|
||||
#define I3_RES_KAF_STAT_KAMERA_GESCHWINDIGKEIT_WERT_TYPE unsigned char
|
||||
// Indicates the speed that was recognized in the characters: 0 = cancellation of everything, 5 to 150 in steps
|
||||
// of 5. / Gibt aus, welche Geschwindigkeit in den Zeichen erkannt wurde: 0 = Aufhebung alles, 5 bis 150 in 5-er
|
||||
// Schritten.
|
||||
|
||||
#define I3_RES_KAF_STAT_KARTE_ZEICHEN_NR (RXBUF_UCHAR(2))
|
||||
#define I3_RES_KAF_STAT_KARTE_ZEICHEN_NR_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_KARTE_ZEICHEN_NR_TYPE unsigned char
|
||||
// Indicates which character was read from the card: For results see TAB_ZEICHEN_KARTE / Gibt aus, welches
|
||||
// Zeichen aus der Karte gelesen wurde: Results siehe TAB_ZEICHEN_KARTE
|
||||
|
||||
#define I3_RES_KAF_STAT_KARTE_GESCHWINDIGKEIT_WERT (RXBUF_UCHAR(3))
|
||||
#define I3_RES_KAF_STAT_KARTE_GESCHWINDIGKEIT_WERT_TYPE unsigned char
|
||||
// Indicates the speed that was read from the card: 0 = cancel everything, 5 to 150 in steps of 5. / Gibt aus,
|
||||
// welche Geschwindigkeit aus der Karte gelesen wurde: 0 = Aufhebung alles, 5 bis 150 in 5-er Schritten.
|
||||
|
||||
#define I3_RES_KAF_STAT_FUSIONIERT_ZEICHEN_NR (RXBUF_UCHAR(4))
|
||||
#define I3_RES_KAF_STAT_FUSIONIERT_ZEICHEN_NR_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_FUSIONIERT_ZEICHEN_NR_TYPE unsigned char
|
||||
// Indicates which character is output from the merged recognition result: Results see TAB_ZEICHEN_FUSIONIERT /
|
||||
// Gibt aus, welches Zeichen aus den fusioniertem Erkennungsergebnis ausgegeben wird: Results siehe
|
||||
// TAB_ZEICHEN_FUSIONIERT
|
||||
|
||||
#define I3_RES_KAF_STAT_FUSIONIERT_GESCHWINDIGKEIT_WERT (RXBUF_UCHAR(5))
|
||||
#define I3_RES_KAF_STAT_FUSIONIERT_GESCHWINDIGKEIT_WERT_TYPE unsigned char
|
||||
// Outputs the speed from the merged recognition result: 0 = cancel everything, 5 to 150 in steps of 5 / Gibt
|
||||
// aus, welche Geschwindigkeit aus dem fusionierten Erkennungsergebnis ausgegeben wird: 0 = Aufhebung alles, 5
|
||||
// bis 150 in 5-er Schritten
|
||||
|
||||
#define I3_RES_KAF_STAT_GUETE_KAM_SLI_GESCHW_WERT (RXBUF_UCHAR(6))
|
||||
#define I3_RES_KAF_STAT_GUETE_KAM_SLI_GESCHW_WERT_UNIT '%'
|
||||
#define I3_RES_KAF_STAT_GUETE_KAM_SLI_GESCHW_WERT_TYPE unsigned char
|
||||
// Indicates the quality with which the restriction and cancellation sign for speeds was recognized with the
|
||||
// camera: 0 - 100 / Gibt aus, mit welcher Güte das Beschränkungs- und Aufhebungszeichen für Geschwindigkeiten
|
||||
// mit der Kamera erkannt wurde: 0 - 100
|
||||
|
||||
// Skipping STEUERN_METHODE_SLI on 0xD3AB which takes arguments
|
||||
|
||||
// Skipping EMPFEHLUNG_FLA_STFLA on 0xD3AD which takes arguments
|
||||
|
||||
// Skipping SELBST_KALIBRIERUNG on 0xD3BD which takes arguments
|
||||
|
||||
// Skipping KAFAS_SCHEIBENHEIZUNG on 0xD3CD which takes arguments
|
||||
|
||||
#define I3_PID_KAF_SPANNUNG_KLEMME_15N_WERT 0xDAD2
|
||||
// Voltage value on the control unit at terminal 15N (accurate to one decimal place) / Spannungswert am
|
||||
// Steuergerät an Klemme 15N (auf eine Nachkommastelle genau)
|
||||
|
||||
#define I3_RES_KAF_STAT_SPANNUNG_KLEMME_15N_WERT (RXBUF_UINT(0)/10.0f)
|
||||
#define I3_RES_KAF_STAT_SPANNUNG_KLEMME_15N_WERT_UNIT 'V'
|
||||
#define I3_RES_KAF_STAT_SPANNUNG_KLEMME_15N_WERT_TYPE float
|
||||
// Voltage value on the control unit at terminal 15N (accurate to one decimal place) / Spannungswert am
|
||||
// Steuergerät an Klemme 15N (auf eine Nachkommastelle genau)
|
||||
|
||||
#define I3_PID_KAF__DEBUG_AUSGABE 0xF001
|
||||
// Debug output for KAFAS / Debug Ausgabe für KAFAS
|
||||
|
||||
#define I3_RES_KAF_STAT_DEBUG_AUSGABE (RXBUF_UINT(0))
|
||||
#define I3_RES_KAF_STAT_DEBUG_AUSGABE_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_DEBUG_AUSGABE_TYPE unsigned short
|
||||
// Returns the status of whether the debug message output is active / Liefert den Status ob die Ausgabe der
|
||||
// Debug-Nachrichten aktiv ist
|
||||
|
||||
// Skipping _SIM_COUNTRY_CODE on 0xF002 which takes arguments
|
||||
|
||||
#define I3_PID_KAF__PEDANTIC_MODE 0xF003
|
||||
// Pedantic mode for SLI and NPI / Pedantic Mode für SLI und NPI
|
||||
|
||||
#define I3_RES_KAF_STAT_PEDANTIC_MODE (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KAF_STAT_PEDANTIC_MODE_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_PEDANTIC_MODE_TYPE unsigned char
|
||||
// Activation status of Pedantic Mode for SLI and NPI / Aktivierungsstatus des Pedantic Mode für SLI und NPI
|
||||
|
||||
#define I3_PID_KAF__ERASE_MICRO_CORE_DUMP 0xF004
|
||||
// Delete from MicroCoreDump / Löschen vom MicroCoreDump
|
||||
|
||||
#define I3_RES_KAF_STAT_ERASE_RESULT (RXBUF_UINT(0))
|
||||
#define I3_RES_KAF_STAT_ERASE_RESULT_UNIT '0-n'
|
||||
#define I3_RES_KAF_STAT_ERASE_RESULT_TYPE unsigned short
|
||||
// Deletion result / Löschergebnis
|
|
@ -1,28 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/kafas20.json: KAF 5D: Camera based driver assistance system
|
||||
// This generated code makes it easier to process CANBUS messages from the KAF ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__FASTA_FLA_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4001
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__KAFAS_ECU_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4002
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__KAFAS_TLC_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4003
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_KAFAS_FCW_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4004
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__KAFAS_SLI_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4005
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__STATUS_SAFETY_DIAG_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x400E
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__STATUS_WARNZEITPUNKT_FCW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x400F
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_FASTA_PPP_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4010
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_FASTA_CCM_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4011
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__KAFAS_ENVINT_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4012
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_PPP_ANFORDERUNGEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4016
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__GENERIC_EYEQ2_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4017
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__STATUS_CAMERA_MONITORING_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4050
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_ABSCHALTGRUND_FERNLICHT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD341
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_KONFIGURATION_KAFAS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD374
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_KAFAS_VINS_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD393
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_KALIBRIERDATEN_KAFAS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD396
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_KAMERAVERBINDUNG_ECU, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD397
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_ERGEBNIS_SLI, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD3AA
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF_SPANNUNG_KLEMME_15N_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAD2
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__DEBUG_AUSGABE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF001
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__PEDANTIC_MODE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF003
|
||||
//{ I3_ECU_KAF_TX, I3_ECU_KAF_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KAF__ERASE_MICRO_CORE_DUMP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF004
|
|
@ -1,730 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/ucx2_i01.json: KLE 15: Convenience charging electronics
|
||||
// This generated code makes it easier to process CANBUS messages from the KLE ecu in a BMW i3
|
||||
//
|
||||
|
||||
case I3_PID_KLE_FLASH_DSPS: { // 0xAF43
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_FLASH_DSPS", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_DSP_FLASHING = (RXBUF_UCHAR(0));
|
||||
// DSP programming status. / Status der DSP-Programmierung.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "FLASH_DSPS", "STAT_DSP_FLASHING", STAT_DSP_FLASHING, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_BETRIEBSZUSTAND_LADEGERAET: { // 0xDE84
|
||||
if (datalen < 16) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_BETRIEBSZUSTAND_LADEGERAET", 16);
|
||||
break;
|
||||
}
|
||||
|
||||
float STAT_NETZFREQUENZ_PHASE_1_WERT = (RXBUF_UCHAR(0)/4.0f);
|
||||
// Current grid frequency phase 1 / Aktuelle Netzfrequenz Phase 1
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "STAT_NETZFREQUENZ_PHASE_1_WERT", STAT_NETZFREQUENZ_PHASE_1_WERT, "\"Hz\"");
|
||||
|
||||
unsigned char BF_LADEGERAET_DERATING = (RXBUF_UCHAR(1));
|
||||
// Reason for derating / Grund für Derating
|
||||
// BF_LADEGERAET_DERATING is a BITFIELD of size unsigned char. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// STAT_DERATING_BIT0: Mask: 0x01 - Overtemperature: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT1: Mask: 0x02 - Mains frequency too low: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT2: Mask: 0x04 - Failure of a charging module: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT3: Mask: 0x08 - DC current limitation: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT4: Mask: 0x10 - Network available power of lower nominal power: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT5: Mask: 0x20 - Reserved
|
||||
// STAT_DERATING_BIT6: Mask: 0x40 - Reserved
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "BF_LADEGERAET_DERATING", (unsigned long)BF_LADEGERAET_DERATING, "\"Bit\"");
|
||||
|
||||
float STAT_LEISTUNG_DERATING_WERT = (RXBUF_UINT(2)*10.0f);
|
||||
// Derating performance / Derating Leistung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "STAT_LEISTUNG_DERATING_WERT", STAT_LEISTUNG_DERATING_WERT, "\"W\"");
|
||||
|
||||
unsigned char STAT_DERATING_WERT = (RXBUF_UCHAR(4));
|
||||
// Derating / Derating
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "STAT_DERATING_WERT", STAT_DERATING_WERT, "\"%\"");
|
||||
|
||||
unsigned char BF_LADEGERAET_FEHLERZUSTAND_UCXII = (RXBUF_UCHAR(5));
|
||||
// Charger fault conditions / Ladegerät Fehlerzustände
|
||||
// BF_LADEGERAET_FEHLERZUSTAND_UCXII is a BITFIELD of size unsigned char. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// STAT_FEHLERZUSTAND_BIT0: Mask: 0x01 - Derating: 0 = not active; 1 = active
|
||||
// STAT_FEHLERZUSTAND_BIT1: Mask: 0x02 - Charge interruption: 0 = not active; 1 = active
|
||||
// STAT_FEHLERZUSTAND_BIT2: Mask: 0x04 - Failsafe: 0 = not active; 1 = active
|
||||
// STAT_FEHLERZUSTAND_BIT3: Mask: 0x08 - Communication failure: 0 = not active; 1 = active
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "BF_LADEGERAET_FEHLERZUSTAND_UCXII", (unsigned long)BF_LADEGERAET_FEHLERZUSTAND_UCXII, "\"Bit\"");
|
||||
|
||||
unsigned short BF_AUSLOESER_FAILSAFE_UCXII = (RXBUF_UINT(6));
|
||||
// Failsafe trigger / Auslöser Failsafe
|
||||
// BF_AUSLOESER_FAILSAFE_UCXII is a BITFIELD of size unsigned int. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT0: Mask: 0x001 - Hardware error: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT1: Mask: 0x002 - Undervoltage AC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT2: Mask: 0x004 - Overvoltage AC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT3: Mask: 0x008 - Overcurrent AC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT4: Mask: 0x010 - Undervoltage DC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT5: Mask: 0x020 - Overvoltage DC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT6: Mask: 0x040 - Overcurrent DC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT7: Mask: 0x080 - Temperature: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT8: Mask: 0x100 - Communication error: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT9: Mask: 0x200 - Load initialization timeout: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT10: Mask: 0x400 - Controller undervoltage: 0 = not active; 1 = active
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "BF_AUSLOESER_FAILSAFE_UCXII", (unsigned long)BF_AUSLOESER_FAILSAFE_UCXII, "\"Bit\"");
|
||||
|
||||
unsigned char BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG = (RXBUF_UCHAR(8));
|
||||
// Cause of charging interruption / Ursache für Ladeunterbrechung
|
||||
// BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG is a BITFIELD of size unsigned char. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// STAT_URSACHE_LADEUNTERBRECHUNG_BIT0: Mask: 0x01 - Forced separation of the plug: 0 = not active; 1 = active
|
||||
// STAT_URSACHE_LADEUNTERBRECHUNG_BIT1: Mask: 0x02 - AC voltage missing or grid connection unstable: 0 = not active; 1 = active
|
||||
// STAT_URSACHE_LADEUNTERBRECHUNG_BIT2: Mask: 0x04 - Connector not locked: 0 = not active; 1 = active
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG", (unsigned long)BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG, "\"Bit\"");
|
||||
|
||||
unsigned char STAT_BETRIEBSART_NR = (RXBUF_UCHAR(9));
|
||||
// Operating mode / Betriebsart
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "STAT_BETRIEBSART_NR", STAT_BETRIEBSART_NR, "\"0-n\"");
|
||||
|
||||
float STAT_NETZFREQUENZ_PHASE_2_WERT = (RXBUF_UCHAR(10)/4.0f);
|
||||
// Current grid frequency phase 2 / Aktuelle Netzfrequenz Phase 2
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "STAT_NETZFREQUENZ_PHASE_2_WERT", STAT_NETZFREQUENZ_PHASE_2_WERT, "\"Hz\"");
|
||||
|
||||
float STAT_NETZFREQUENZ_PHASE_3_WERT = (RXBUF_UCHAR(11)/4.0f);
|
||||
// Current grid frequency phase 3 / Aktuelle Netzfrequenz Phase 3
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "STAT_NETZFREQUENZ_PHASE_3_WERT", STAT_NETZFREQUENZ_PHASE_3_WERT, "\"Hz\"");
|
||||
|
||||
unsigned long BF_MOD_ERR = (RXBUF_UINT32(12));
|
||||
// Error states load module / Fehlerzustände Lademodul
|
||||
// BF_MOD_ERR is a BITFIELD of size unsigned long. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// STAT_BF_DSP_ERR_HVDCV_OORL: Mask: 0x00000001 - PM HVDC voltage sensor outside lower threshold: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_HVDCV_OORH: Mask: 0x00000002 - PM HVDC voltage sensor outside upper threshold: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_HVDCI_OORH: Mask: 0x00000004 - PM HVDC current sensor outside upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_IRES_OORH: Mask: 0x00000008 - PM sensor resonance current outside the upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VBUS_OORL: Mask: 0x00000010 - PM sensor bus voltage outside the lower threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VBUS_OORH: Mask: 0x00000020 - PM sensor bus voltage outside the upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_OVERTEMPERATURE: Mask: 0x00000040 - PM temperature sensor outside upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_UNDERTEMPERATURE: Mask: 0x00000080 - PM temperature sensor outside lower threshold: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_HVDCV_SHGND: Mask: 0x00000100 - PM HVDC voltage sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_HVDCI_SHGND: Mask: 0x00000200 - PM HVDC current sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_AC_I_OORH: Mask: 0x00000400 - PM AC current sensor outside upper threshold: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_AC_I_SHGND: Mask: 0x00000800 - PM AC current sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LX_SHBATT: Mask: 0x00001000 - PM AC Lx current sensor short circuit to positive: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LX_SHGND: Mask: 0x00002000 - PM AC Lx current sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_IRES_SHBATT: Mask: 0x00004000 - PM sensor resonance current short circuit to plus: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_IRES_SHGND: Mask: 0x00008000 - PM sensor resonance current short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CAN_ALIVE: Mask: 0x00010000 - PM error test ALIVE: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CAN_MSG401_TOUT: Mask: 0x00020000 - PM error timeout telegram 0x401: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CAN_MSG300_TOUT: Mask: 0x00040000 - PM error timeout telegram 0x300: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_SPI_PROTOCOL: Mask: 0x00080000 - PM error SPI protocol: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_SPI_WIPER0_MISMATCH: Mask: 0x00100000 - PM error SPI Wiper0 discrepancy: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_SPI_WIPER1_MISMATCH: Mask: 0x00200000 - PM error SPI Wiper1 discrepancy: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_RAM: Mask: 0x00400000 - PM error RAM: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_WATCHDOG: Mask: 0x00800000 - PM watchdog error: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_STACKOVFL: Mask: 0x01000000 - PM stack overflow: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_DATA_INTEGRITY: Mask: 0x02000000 - PM data integrity: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CLOCK: Mask: 0x04000000 - PM clock: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CRC_CALIBRATION: Mask: 0x08000000 - PM CRC calibration: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LY_SHBATT: Mask: 0x10000000 - PM AC Ly voltage sensor short circuit to plus: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LY_SHGND: Mask: 0x20000000 - PM AC Ly voltage sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LX_OORH: Mask: 0x40000000 - PM AC Lx voltage sensor outside upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LY_OORH: Mask: 0x80000000 - PM AC Ly voltage sensor outside upper threshold: 0 = not active; 1 = active
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET", "BF_MOD_ERR", (unsigned long)BF_MOD_ERR, "\"Bit\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_LEISTUNG: { // 0xDE85
|
||||
if (datalen < 4) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_LEISTUNG", 4);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT = (RXBUF_UCHAR(0));
|
||||
// Charge cycle efficiency / Wirkungsgrad Ladezyklus
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_LEISTUNG", "STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT", STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT, "\"%\"");
|
||||
|
||||
unsigned char STAT_WIRKUNGSGRAD_DC_WERT = (RXBUF_UCHAR(1));
|
||||
// Efficiency DC / Wirkungsgrad DC
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_LEISTUNG", "STAT_WIRKUNGSGRAD_DC_WERT", STAT_WIRKUNGSGRAD_DC_WERT, "\"%\"");
|
||||
|
||||
unsigned short STAT_LADEGERAET_DC_HV_LEISTUNG_WERT = (RXBUF_UINT(2));
|
||||
// Instantaneous power output in the intermediate circuit / Abgegebende Momentanleistung in den Zwischenkreis
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_LEISTUNG", "STAT_LADEGERAET_DC_HV_LEISTUNG_WERT", STAT_LADEGERAET_DC_HV_LEISTUNG_WERT, "\"W\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_SPANNUNG: { // 0xDE86
|
||||
if (datalen < 12) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_SPANNUNG", 12);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_SPANNUNG_RMS_AC_PHASE_1_WERT = (RXBUF_UINT(0));
|
||||
// RMS values of the AC conductor voltages (phase 1) / Effektivwerte der AC Leiterspannungen (Phase1)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_SPANNUNG", "STAT_SPANNUNG_RMS_AC_PHASE_1_WERT", STAT_SPANNUNG_RMS_AC_PHASE_1_WERT, "\"V\"");
|
||||
|
||||
float STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT = (RXBUF_UINT(2)/10.0f);
|
||||
// HV DC voltage upper limit / HV DC Spannungsobergrenze
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_SPANNUNG", "STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT", STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT, "\"V\"");
|
||||
|
||||
float STAT_SPANNUNG_DC_HV_WERT = (RXBUF_UINT(4)/10.0f);
|
||||
// HV DC voltage / HV DC Spannung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_SPANNUNG", "STAT_SPANNUNG_DC_HV_WERT", STAT_SPANNUNG_DC_HV_WERT, "\"V\"");
|
||||
|
||||
float STAT_SPANNUNG_KL30_WERT = (RXBUF_UCHAR(6)/10.0f);
|
||||
// KL30 voltage / KL30 Spannung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_SPANNUNG", "STAT_SPANNUNG_KL30_WERT", STAT_SPANNUNG_KL30_WERT, "\"V\"");
|
||||
|
||||
float STAT_SPANNUNG_KL30C_WERT = (RXBUF_UCHAR(7)/10.0f);
|
||||
// KL30C voltage / KL30C Spannung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_SPANNUNG", "STAT_SPANNUNG_KL30C_WERT", STAT_SPANNUNG_KL30C_WERT, "\"V\"");
|
||||
|
||||
unsigned short STAT_SPANNUNG_RMS_AC_PHASE_2_WERT = (RXBUF_UINT(8));
|
||||
// RMS values of the AC conductor voltages (phase 2) / Effektivwerte der AC Leiterspannungen (Phase 2)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_SPANNUNG", "STAT_SPANNUNG_RMS_AC_PHASE_2_WERT", STAT_SPANNUNG_RMS_AC_PHASE_2_WERT, "\"V\"");
|
||||
|
||||
unsigned short STAT_SPANNUNG_RMS_AC_PHASE_3_WERT = (RXBUF_UINT(10));
|
||||
// RMS values of the AC conductor voltages (phase 3) / Effektivwerte der AC Leiterspannungen (Phase 3)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_SPANNUNG", "STAT_SPANNUNG_RMS_AC_PHASE_3_WERT", STAT_SPANNUNG_RMS_AC_PHASE_3_WERT, "\"V\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_STROM: { // 0xDE87
|
||||
if (datalen < 14) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_STROM", 14);
|
||||
break;
|
||||
}
|
||||
|
||||
float STAT_STROM_AC_PHASE_1_WERT = (RXBUF_UINT(0)/10.0f);
|
||||
// AC current phase 1 / AC Strom Phase 1
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM", "STAT_STROM_AC_PHASE_1_WERT", STAT_STROM_AC_PHASE_1_WERT, "\"A\"");
|
||||
|
||||
float STAT_STROM_AC_MAX_GESPEICHERT_WERT = (RXBUF_UINT(2)/10.0f);
|
||||
// Maximum stored AC current / Maximal gespeicherter AC Strom
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM", "STAT_STROM_AC_MAX_GESPEICHERT_WERT", STAT_STROM_AC_MAX_GESPEICHERT_WERT, "\"A\"");
|
||||
|
||||
float STAT_STROM_HV_DC_WERT = (RXBUF_UINT(4)/10.0f-204.7);
|
||||
// HV DC electricity / HV DC Strom
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM", "STAT_STROM_HV_DC_WERT", STAT_STROM_HV_DC_WERT, "\"A\"");
|
||||
|
||||
float STAT_STROM_HV_DC_MAX_LIMIT_WERT = (RXBUF_UINT(6)/10.0f);
|
||||
// Maximum permitted HV DC current / Maximal erlaubter HV DC Strom
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM", "STAT_STROM_HV_DC_MAX_LIMIT_WERT", STAT_STROM_HV_DC_MAX_LIMIT_WERT, "\"A\"");
|
||||
|
||||
float STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT = (RXBUF_UINT(8)/10.0f-204.7);
|
||||
// Maximum stored DC current / Maximal gespeicherter DC Strom
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM", "STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT", STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT, "\"A\"");
|
||||
|
||||
float STAT_STROM_AC_PHASE_2_WERT = (RXBUF_UINT(10)/10.0f);
|
||||
// AC current phase 2 / AC Strom Phase 2
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM", "STAT_STROM_AC_PHASE_2_WERT", STAT_STROM_AC_PHASE_2_WERT, "\"A\"");
|
||||
|
||||
float STAT_STROM_AC_PHASE_3_WERT = (RXBUF_UINT(12)/10.0f);
|
||||
// AC current phase 3 / AC Strom Phase 3
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM", "STAT_STROM_AC_PHASE_3_WERT", STAT_STROM_AC_PHASE_3_WERT, "\"A\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_AC_PHASENANZAHL: { // 0xDF25
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_AC_PHASENANZAHL", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_AC_PHASENANZAHL_WERT = (RXBUF_UCHAR(0));
|
||||
// Status of the number of AC phases / Status AC-Phasenanzahl
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "AC_PHASENANZAHL", "STAT_AC_PHASENANZAHL_WERT", STAT_AC_PHASENANZAHL_WERT, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_LADEDAUER: { // 0xDFB0
|
||||
if (datalen < 8) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_LADEDAUER", 8);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_MINUTEN_LADEZYKLUS_WERT = (RXBUF_UINT32(0));
|
||||
// Charging time in minutes / Ladezeit in Minuten
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADEDAUER", "STAT_MINUTEN_LADEZYKLUS_WERT", STAT_MINUTEN_LADEZYKLUS_WERT, "\"min\"");
|
||||
|
||||
unsigned short STAT_SEKUNDEN_LADEZYKLUS_WERT = (RXBUF_UINT(4));
|
||||
// Loading time in seconds / Ladezeit in Sekunden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_LADEDAUER", "STAT_SEKUNDEN_LADEZYKLUS_WERT", STAT_SEKUNDEN_LADEZYKLUS_WERT, "\"s\"");
|
||||
|
||||
unsigned short STAT_LADEZYKLEN_WERT = (RXBUF_UINT(6));
|
||||
// Number of charging cycles / Anzahl der Ladezyklen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_LADEDAUER", "STAT_LADEZYKLEN_WERT", STAT_LADEZYKLEN_WERT, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_TEMPERATUREN: { // 0xDFB1
|
||||
if (datalen < 10) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_TEMPERATUREN", 10);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_NTC1_TEMPERATUR_WERT = (RXBUF_UCHAR(0)-75.0);
|
||||
// internal temperature (temperature sensor 1) / interne Temperatur (Temperatursensor 1)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC1_TEMPERATUR_WERT", STAT_NTC1_TEMPERATUR_WERT, "\"°C\"");
|
||||
|
||||
unsigned char STAT_NTC2_TEMPERATUR_WERT = (RXBUF_UCHAR(1)-75.0);
|
||||
// internal temperature (temperature sensor 2) / interne Temperatur (Temperatursensor 2)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC2_TEMPERATUR_WERT", STAT_NTC2_TEMPERATUR_WERT, "\"°C\"");
|
||||
|
||||
unsigned char STAT_NTC3_TEMPERATUR_WERT = (RXBUF_UCHAR(2)-75.0);
|
||||
// internal temperature (temperature sensor 3) / interne Temperatur (Temperatursensor 3)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC3_TEMPERATUR_WERT", STAT_NTC3_TEMPERATUR_WERT, "\"°C\"");
|
||||
|
||||
unsigned char STAT_NTC4_TEMPERATUR_WERT = (RXBUF_UCHAR(3)-75.0);
|
||||
// internal temperature (temperature sensor 4) / interne Temperatur (Temperatursensor 4)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC4_TEMPERATUR_WERT", STAT_NTC4_TEMPERATUR_WERT, "\"°C\"");
|
||||
|
||||
unsigned char STAT_NTC5_TEMPERATUR_WERT = (RXBUF_UCHAR(4)-75.0);
|
||||
// internal temperature (temperature sensor 5) / interne Temperatur (Temperatursensor 5)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC5_TEMPERATUR_WERT", STAT_NTC5_TEMPERATUR_WERT, "\"°C\"");
|
||||
|
||||
unsigned char STAT_NTC6_TEMPERATUR_WERT = (RXBUF_UCHAR(5)-75.0);
|
||||
// internal temperature (temperature sensor 6) / interne Temperatur (Temperatursensor 6)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC6_TEMPERATUR_WERT", STAT_NTC6_TEMPERATUR_WERT, "\"°C\"");
|
||||
|
||||
unsigned char STAT_NTC7_TEMPERAUTR_WERT = (RXBUF_UCHAR(6)-75.0);
|
||||
// internal temperature (temperature sensor 7) / interne Temperatur (Temperatursensor 7)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC7_TEMPERAUTR_WERT", STAT_NTC7_TEMPERAUTR_WERT, "\"°C\"");
|
||||
|
||||
unsigned char STAT_NTC8_TEMPERATUR_WERT = (RXBUF_UCHAR(7)-75.0);
|
||||
// internal temperature (temperature sensor 8) / interne Tempeartur (Temperatursensor 8)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC8_TEMPERATUR_WERT", STAT_NTC8_TEMPERATUR_WERT, "\"°C\"");
|
||||
|
||||
unsigned char STAT_NTC9_TEMPEARTUR_WERT = (RXBUF_UCHAR(8)-75.0);
|
||||
// internal temperature (temperature sensor 9) / interne Temperatur (Temperatursensor 9)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC9_TEMPEARTUR_WERT", STAT_NTC9_TEMPEARTUR_WERT, "\"°C\"");
|
||||
|
||||
unsigned char STAT_NTC10_TEMPEARTUR_WERT = (RXBUF_UCHAR(9)-75.0);
|
||||
// internal temperature (temperature sensor 10) / interne Temperatur (Temperatursensor 10)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_TEMPERATUREN", "STAT_NTC10_TEMPEARTUR_WERT", STAT_NTC10_TEMPEARTUR_WERT, "\"°C\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_LEISTUNG2: { // 0xDFB4
|
||||
if (datalen < 4) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_LEISTUNG2", 4);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT_0XDFB4 = (RXBUF_UCHAR(0));
|
||||
// Charge cycle efficiency / Wirkungsgrad Ladezyklus
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_LEISTUNG2", "STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT_0XDFB4", STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT_0XDFB4, "\"%\"");
|
||||
|
||||
unsigned char STAT_WIRKUNGSGRAD_DC_WERT_0XDFB4 = (RXBUF_UCHAR(1));
|
||||
// Efficiency DC / Wirkungsgrad DC
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "LADEGERAET_LEISTUNG2", "STAT_WIRKUNGSGRAD_DC_WERT_0XDFB4", STAT_WIRKUNGSGRAD_DC_WERT_0XDFB4, "\"%\"");
|
||||
|
||||
unsigned short STAT_LADEGERAET_DC_HV_LEISTUNG_WERT_0XDFB4 = (RXBUF_UINT(2));
|
||||
// Instantaneous power output in the intermediate circuit / Abgegebende Momentanleistung in den Zwischenkreis
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_LEISTUNG2", "STAT_LADEGERAET_DC_HV_LEISTUNG_WERT_0XDFB4", STAT_LADEGERAET_DC_HV_LEISTUNG_WERT_0XDFB4, "\"W\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_LADE_HISTOGRAMM: { // 0xDFB6
|
||||
if (datalen < 40) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_LADE_HISTOGRAMM", 40);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT = (RXBUF_UINT32(0));
|
||||
// Seconds at temperature below 0 ° C / Sekunden bei Temperatur unter 0°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT", STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT = (RXBUF_UINT32(4));
|
||||
// Seconds at a temperature between 0 ° C and 45 ° C / Sekunden bei Temperatur zwischen 0°C und 45°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT", STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT = (RXBUF_UINT32(8));
|
||||
// Seconds at a temperature between 46 ° C and 60 ° C / Sekunden bei Temperatur zwischen 46°C und 60°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT", STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT = (RXBUF_UINT32(12));
|
||||
// Seconds in the temperature range between 61 ° C and 70 ° C / Sekunden im Temperaturbereich zwischen 61°C und
|
||||
// 70°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT", STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT = (RXBUF_UINT32(16));
|
||||
// Seconds at a temperature between 71 ° C and 85 ° C / Sekunden bei Temperatur zwischen 71°C und 85°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT", STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT = (RXBUF_UINT32(20));
|
||||
// Seconds at temperatures above 85 ° C / Sekunden bei Temperatur über 85°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT", STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT = (RXBUF_UINT32(24));
|
||||
// Seconds at power below 1000W / Sekunden bei Leistung unter 1000W
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT", STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT = (RXBUF_UINT32(28));
|
||||
// Seconds at power between 1001W and 2000W / Sekunden bei Leistung zwischen 1001W und 2000W
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT", STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT = (RXBUF_UINT32(32));
|
||||
// Seconds at power between 2001W and 3000W / Sekunden bei Leistung zwischen 2001W und 3000W
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT", STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT = (RXBUF_UINT32(36));
|
||||
// Seconds at power over 3000W / Sekunden bei Leistung über 3000W
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM", "STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT", STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT, "\"s\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_LADE_HISTOGRAMM2: { // 0xDFB7
|
||||
if (datalen < 40) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_LADE_HISTOGRAMM2", 40);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT_0XDFB7 = (RXBUF_UINT32(0));
|
||||
// Seconds at temperature below 0 ° C / Sekunden bei Temperatur unter 0°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT_0XDFB7", STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT_0XDFB7 = (RXBUF_UINT32(4));
|
||||
// Seconds at a temperature between 0 ° C and 45 ° C / Sekunden bei Temperatur zwischen 0°C und 45°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT_0XDFB7", STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT_0XDFB7 = (RXBUF_UINT32(8));
|
||||
// Seconds at a temperature between 46 ° C and 60 ° C / Sekunden bei Temperatur zwischen 46°C und 60°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT_0XDFB7", STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT_0XDFB7 = (RXBUF_UINT32(12));
|
||||
// Seconds in the temperature range between 61 ° C and 70 ° C / Sekunden im Temperaturbereich zwischen 61°C und
|
||||
// 70°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT_0XDFB7", STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT_0XDFB7 = (RXBUF_UINT32(16));
|
||||
// Seconds at a temperature between 71 ° C and 85 ° C / Sekunden bei Temperatur zwischen 71°C und 85°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT_0XDFB7", STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT_0XDFB7 = (RXBUF_UINT32(20));
|
||||
// Seconds at temperatures above 85 ° C / Sekunden bei Temperatur über 85°C
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT_0XDFB7", STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT_0XDFB7 = (RXBUF_UINT32(24));
|
||||
// Seconds at power below 1000W / Sekunden bei Leistung unter 1000W
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT_0XDFB7", STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT_0XDFB7 = (RXBUF_UINT32(28));
|
||||
// Seconds at power between 1001W and 2000W / Sekunden bei Leistung zwischen 1001W und 2000W
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT_0XDFB7", STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT_0XDFB7 = (RXBUF_UINT32(32));
|
||||
// Seconds at power between 2001W and 3000W / Sekunden bei Leistung zwischen 2001W und 3000W
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT_0XDFB7", STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
unsigned long STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT_0XDFB7 = (RXBUF_UINT32(36));
|
||||
// Seconds at power over 3000W / Sekunden bei Leistung über 3000W
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADE_HISTOGRAMM2", "STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT_0XDFB7", STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT_0XDFB7, "\"s\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_LADEDAUER2: { // 0xDFB8
|
||||
if (datalen < 8) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_LADEDAUER2", 8);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_MINUTEN_LADEZYKLUS_WERT_0XDFB8 = (RXBUF_UINT32(0));
|
||||
// Charging time in minutes / Ladezeit in Minuten
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEGERAET_LADEDAUER2", "STAT_MINUTEN_LADEZYKLUS_WERT_0XDFB8", STAT_MINUTEN_LADEZYKLUS_WERT_0XDFB8, "\"min\"");
|
||||
|
||||
unsigned short STAT_SEKUNDEN_LADEZYKLUS_WERT_0XDFB8 = (RXBUF_UINT(4));
|
||||
// Loading time in seconds / Ladezeit in Sekunden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_LADEDAUER2", "STAT_SEKUNDEN_LADEZYKLUS_WERT_0XDFB8", STAT_SEKUNDEN_LADEZYKLUS_WERT_0XDFB8, "\"s\"");
|
||||
|
||||
unsigned short STAT_LADEZYKLEN_WERT_0XDFB8 = (RXBUF_UINT(6));
|
||||
// Number of charging cycles / Anzahl der Ladezyklen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_LADEDAUER2", "STAT_LADEZYKLEN_WERT_0XDFB8", STAT_LADEZYKLEN_WERT_0XDFB8, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_UMSCHALTMATRIX: { // 0xDFB9
|
||||
if (datalen < 20) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_UMSCHALTMATRIX", 20);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_SCHALTER1_SCHALTZYKLEN_ANZAHL_WERT = (RXBUF_UINT32(0));
|
||||
// Number of switching cycles for switch 1 (multi-phase charging: phase 1) / Anzahl von Schaltzyklen für Schalter
|
||||
// 1 (mehrphasiges Laden: Phase 1)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "UMSCHALTMATRIX", "STAT_SCHALTER1_SCHALTZYKLEN_ANZAHL_WERT", STAT_SCHALTER1_SCHALTZYKLEN_ANZAHL_WERT, "");
|
||||
|
||||
unsigned long STAT_SCHALTER2_SCHALTZYKLEN_ANZAHL_WERT = (RXBUF_UINT32(4));
|
||||
// Number of switching cycles for switch 2 (multi-phase charging: phase 2) / Anzahl von Schaltzyklen für Schalter
|
||||
// 2 (mehrphasiges Laden: Phase 2)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "UMSCHALTMATRIX", "STAT_SCHALTER2_SCHALTZYKLEN_ANZAHL_WERT", STAT_SCHALTER2_SCHALTZYKLEN_ANZAHL_WERT, "");
|
||||
|
||||
unsigned long STAT_SCHALTER3_SCHALTZYKLEN_ANZAHL_WERT = (RXBUF_UINT32(8));
|
||||
// Number of switching cycles for switch 3 (multi-phase charging: phase 3) / Anzahl von Schaltzyklen für Schalter
|
||||
// 3 (mehrphasiges Laden: Phase 3)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "UMSCHALTMATRIX", "STAT_SCHALTER3_SCHALTZYKLEN_ANZAHL_WERT", STAT_SCHALTER3_SCHALTZYKLEN_ANZAHL_WERT, "");
|
||||
|
||||
unsigned long STAT_SCHALTER4_SCHALTZYKLEN_ANZAHL_WERT = (RXBUF_UINT32(12));
|
||||
// Number of switching cycles for switch 4 (multi-phase charging: changeover) / Anzahl von Schaltzyklen für
|
||||
// Schalter 4 (mehrphasiges Laden: Umschaltung)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "UMSCHALTMATRIX", "STAT_SCHALTER4_SCHALTZYKLEN_ANZAHL_WERT", STAT_SCHALTER4_SCHALTZYKLEN_ANZAHL_WERT, "");
|
||||
|
||||
unsigned char STAT_SCHALTER1 = (RXBUF_UCHAR(16));
|
||||
// State of switch 1 (0 = open, 1 = closed) / Zustand vom Schalter 1 (0= offen, 1=geschlossen)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "UMSCHALTMATRIX", "STAT_SCHALTER1", STAT_SCHALTER1, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_SCHALTER2 = (RXBUF_UCHAR(17));
|
||||
// State of switch 2 (0 = open, 1 = closed) / Zustand vom Schalter 2 (0= offen, 1=geschlossen)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "UMSCHALTMATRIX", "STAT_SCHALTER2", STAT_SCHALTER2, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_SCHALTER3 = (RXBUF_UCHAR(18));
|
||||
// State of switch 3 (0 = open, 1 = closed) / Zustand vom Schalter 3 (0= offen, 1=geschlossen)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "UMSCHALTMATRIX", "STAT_SCHALTER3", STAT_SCHALTER3, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_SCHALTER4 = (RXBUF_UCHAR(19));
|
||||
// State of switch 4 (0 = charger 1, 1 = charger 2) / Zustand vom Schalter 4 (0= Ladegerät 1, 1=Ladegerät 2)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "UMSCHALTMATRIX", "STAT_SCHALTER4", STAT_SCHALTER4, "\"0/1\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_SPANNUNG2: { // 0xDFBA
|
||||
if (datalen < 12) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_SPANNUNG2", 12);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_SPANNUNG_RMS_AC_PHASE_1_WERT_0XDFBA = (RXBUF_UINT(0));
|
||||
// RMS values of the AC conductor voltages (phase 1) / Effektivwerte der AC Leiterspannungen (Phase1)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_SPANNUNG2", "STAT_SPANNUNG_RMS_AC_PHASE_1_WERT_0XDFBA", STAT_SPANNUNG_RMS_AC_PHASE_1_WERT_0XDFBA, "\"V\"");
|
||||
|
||||
float STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT_0XDFBA = (RXBUF_UINT(2)/10.0f);
|
||||
// HV DC voltage upper limit / HV DC Spannungsobergrenze
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_SPANNUNG2", "STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT_0XDFBA", STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT_0XDFBA, "\"V\"");
|
||||
|
||||
float STAT_SPANNUNG_DC_HV_WERT_0XDFBA = (RXBUF_UINT(4)/10.0f);
|
||||
// HV DC voltage / HV DC Spannung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_SPANNUNG2", "STAT_SPANNUNG_DC_HV_WERT_0XDFBA", STAT_SPANNUNG_DC_HV_WERT_0XDFBA, "\"V\"");
|
||||
|
||||
float STAT_SPANNUNG_KL30_WERT_0XDFBA = (RXBUF_UCHAR(6)/10.0f);
|
||||
// KL30 voltage / KL30 Spannung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_SPANNUNG2", "STAT_SPANNUNG_KL30_WERT_0XDFBA", STAT_SPANNUNG_KL30_WERT_0XDFBA, "\"V\"");
|
||||
|
||||
float STAT_SPANNUNG_KL30C_WERT_0XDFBA = (RXBUF_UCHAR(7)/10.0f);
|
||||
// KL30C voltage / KL30C Spannung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_SPANNUNG2", "STAT_SPANNUNG_KL30C_WERT_0XDFBA", STAT_SPANNUNG_KL30C_WERT_0XDFBA, "\"V\"");
|
||||
|
||||
unsigned short STAT_SPANNUNG_RMS_AC_PHASE_2_WERT_0XDFBA = (RXBUF_UINT(8));
|
||||
// RMS values of the AC conductor voltages (phase 2) / Effektivwerte der AC Leiterspannungen (Phase 2)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_SPANNUNG2", "STAT_SPANNUNG_RMS_AC_PHASE_2_WERT_0XDFBA", STAT_SPANNUNG_RMS_AC_PHASE_2_WERT_0XDFBA, "\"V\"");
|
||||
|
||||
unsigned short STAT_SPANNUNG_RMS_AC_PHASE_3_WERT_0XDFBA = (RXBUF_UINT(10));
|
||||
// RMS values of the AC conductor voltages (phase 3) / Effektivwerte der AC Leiterspannungen (Phase 3)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEGERAET_SPANNUNG2", "STAT_SPANNUNG_RMS_AC_PHASE_3_WERT_0XDFBA", STAT_SPANNUNG_RMS_AC_PHASE_3_WERT_0XDFBA, "\"V\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEGERAET_STROM2: { // 0xDFBB
|
||||
if (datalen < 14) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEGERAET_STROM2", 14);
|
||||
break;
|
||||
}
|
||||
|
||||
float STAT_STROM_AC_PHASE_1_WERT_0XDFBB = (RXBUF_UINT(0)/10.0f);
|
||||
// AC current phase 1 / AC Strom Phase 1
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM2", "STAT_STROM_AC_PHASE_1_WERT_0XDFBB", STAT_STROM_AC_PHASE_1_WERT_0XDFBB, "\"A\"");
|
||||
|
||||
float STAT_STROM_AC_MAX_GESPEICHERT_WERT_0XDFBB = (RXBUF_UINT(2)/10.0f);
|
||||
// Maximum stored AC current / Maximal gespeicherter AC Strom
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM2", "STAT_STROM_AC_MAX_GESPEICHERT_WERT_0XDFBB", STAT_STROM_AC_MAX_GESPEICHERT_WERT_0XDFBB, "\"A\"");
|
||||
|
||||
float STAT_STROM_HV_DC_WERT_0XDFBB = (RXBUF_UINT(4)/10.0f-204.7);
|
||||
// HV DC electricity / HV DC Strom
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM2", "STAT_STROM_HV_DC_WERT_0XDFBB", STAT_STROM_HV_DC_WERT_0XDFBB, "\"A\"");
|
||||
|
||||
float STAT_STROM_HV_DC_MAX_LIMIT_WERT_0XDFBB = (RXBUF_UINT(6)/10.0f);
|
||||
// Maximum permitted HV DC current / Maximal erlaubter HV DC Strom
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM2", "STAT_STROM_HV_DC_MAX_LIMIT_WERT_0XDFBB", STAT_STROM_HV_DC_MAX_LIMIT_WERT_0XDFBB, "\"A\"");
|
||||
|
||||
float STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT_0XDFBB = (RXBUF_UINT(8)/10.0f-204.7);
|
||||
// Maximum stored DC current / Maximal gespeicherter DC Strom
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM2", "STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT_0XDFBB", STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT_0XDFBB, "\"A\"");
|
||||
|
||||
float STAT_STROM_AC_PHASE_2_WERT_0XDFBB = (RXBUF_UINT(10)/10.0f);
|
||||
// AC current phase 2 / AC Strom Phase 2
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM2", "STAT_STROM_AC_PHASE_2_WERT_0XDFBB", STAT_STROM_AC_PHASE_2_WERT_0XDFBB, "\"A\"");
|
||||
|
||||
float STAT_STROM_AC_PHASE_3_WERT_0XDFBB = (RXBUF_UINT(12)/10.0f);
|
||||
// AC current phase 3 / AC Strom Phase 3
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "LADEGERAET_STROM2", "STAT_STROM_AC_PHASE_3_WERT_0XDFBB", STAT_STROM_AC_PHASE_3_WERT_0XDFBB, "\"A\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_BETRIEBSZUSTAND_LADEGERAET2: { // 0xDFBC
|
||||
if (datalen < 12) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_BETRIEBSZUSTAND_LADEGERAET2", 12);
|
||||
break;
|
||||
}
|
||||
|
||||
float STAT_NETZFREQUENZ_PHASE_1_WERT_0XDFBC = (RXBUF_UCHAR(0)/4.0f);
|
||||
// Current grid frequency phase 1 / Aktuelle Netzfrequenz Phase 1
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "STAT_NETZFREQUENZ_PHASE_1_WERT_0XDFBC", STAT_NETZFREQUENZ_PHASE_1_WERT_0XDFBC, "\"Hz\"");
|
||||
|
||||
unsigned char BF_LADEGERAET_DERATING_0XDFBC = (RXBUF_UCHAR(1));
|
||||
// Reason for derating / Grund für Derating
|
||||
// BF_LADEGERAET_DERATING_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "BF_LADEGERAET_DERATING_0XDFBC", (unsigned long)BF_LADEGERAET_DERATING_0XDFBC, "\"Bit\"");
|
||||
|
||||
float STAT_LEISTUNG_DERATING_WERT_0XDFBC = (RXBUF_UINT(2)*10.0f);
|
||||
// Derating performance / Derating Leistung
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "STAT_LEISTUNG_DERATING_WERT_0XDFBC", STAT_LEISTUNG_DERATING_WERT_0XDFBC, "\"W\"");
|
||||
|
||||
unsigned char STAT_DERATING_WERT_0XDFBC = (RXBUF_UCHAR(4));
|
||||
// Derating / Derating
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "STAT_DERATING_WERT_0XDFBC", STAT_DERATING_WERT_0XDFBC, "\"%\"");
|
||||
|
||||
unsigned char BF_LADEGERAET_FEHLERZUSTAND_UCXII_0XDFBC = (RXBUF_UCHAR(5));
|
||||
// Charger fault conditions / Ladegerät Fehlerzustände
|
||||
// BF_LADEGERAET_FEHLERZUSTAND_UCXII_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "BF_LADEGERAET_FEHLERZUSTAND_UCXII_0XDFBC", (unsigned long)BF_LADEGERAET_FEHLERZUSTAND_UCXII_0XDFBC, "\"Bit\"");
|
||||
|
||||
unsigned char BF_AUSLOESER_FAILSAFE_UCXII_0XDFBC = (RXBUF_UCHAR(6));
|
||||
// Failsafe trigger / Auslöser Failsafe
|
||||
// BF_AUSLOESER_FAILSAFE_UCXII_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "BF_AUSLOESER_FAILSAFE_UCXII_0XDFBC", (unsigned long)BF_AUSLOESER_FAILSAFE_UCXII_0XDFBC, "\"Bit\"");
|
||||
|
||||
unsigned char BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_0XDFBC = (RXBUF_UCHAR(7));
|
||||
// Cause of charging interruption / Ursache für Ladeunterbrechung
|
||||
// BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_0XDFBC", (unsigned long)BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_0XDFBC, "\"Bit\"");
|
||||
|
||||
unsigned char STAT_BETRIEBSART_NR_0XDFBC = (RXBUF_UCHAR(8));
|
||||
// Operating mode / Betriebsart
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "STAT_BETRIEBSART_NR_0XDFBC", STAT_BETRIEBSART_NR_0XDFBC, "\"0-n\"");
|
||||
|
||||
float STAT_NETZFREQUENZ_PHASE_2_WERT_0XDFBC = (RXBUF_UCHAR(9)/4.0f);
|
||||
// Current grid frequency phase 2 / Aktuelle Netzfrequenz Phase 2
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "STAT_NETZFREQUENZ_PHASE_2_WERT_0XDFBC", STAT_NETZFREQUENZ_PHASE_2_WERT_0XDFBC, "\"Hz\"");
|
||||
|
||||
float STAT_NETZFREQUENZ_PHASE_3_WERT_0XDFBC = (RXBUF_UCHAR(10)/4.0f);
|
||||
// Current grid frequency phase 3 / Aktuelle Netzfrequenz Phase 3
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "STAT_NETZFREQUENZ_PHASE_3_WERT_0XDFBC", STAT_NETZFREQUENZ_PHASE_3_WERT_0XDFBC, "\"Hz\"");
|
||||
|
||||
unsigned char BF_MOD_ERR_0XDFBC = (RXBUF_UCHAR(11));
|
||||
// Error states load module / Fehlerzustände Lademodul
|
||||
// BF_MOD_ERR_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lx%s\n", "KLE", "BETRIEBSZUSTAND_LADEGERAET2", "BF_MOD_ERR_0XDFBC", (unsigned long)BF_MOD_ERR_0XDFBC, "\"Bit\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_LADEDAUER_LADEART: { // 0xDFBD
|
||||
if (datalen < 16) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_LADEDAUER_LADEART", 16);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_MINUTEN_LADEZYKLUS_1PH_WERT = (RXBUF_UINT32(0));
|
||||
// Charging time in minutes for single-phase charging / Ladezeit in Minuten für einphasiges Laden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEDAUER_LADEART", "STAT_MINUTEN_LADEZYKLUS_1PH_WERT", STAT_MINUTEN_LADEZYKLUS_1PH_WERT, "\"min\"");
|
||||
|
||||
unsigned short STAT_SEKUNDEN_LADEZYKLUS_1PH_WERT = (RXBUF_UINT(4));
|
||||
// Charging time in seconds for single-phase charging / Ladezeit in Sekunden für einphasiges Laden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEDAUER_LADEART", "STAT_SEKUNDEN_LADEZYKLUS_1PH_WERT", STAT_SEKUNDEN_LADEZYKLUS_1PH_WERT, "\"s\"");
|
||||
|
||||
unsigned short STAT_LADEZYKLUS_1PH_WERT = (RXBUF_UINT(6));
|
||||
// Number of charging cycles, single-phase charging / Anzahl Ladezyklus einphasiges Laden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEDAUER_LADEART", "STAT_LADEZYKLUS_1PH_WERT", STAT_LADEZYKLUS_1PH_WERT, "");
|
||||
|
||||
unsigned long STAT_MINUTEN_LADEZYKLUS_3PH_WERT = (RXBUF_UINT32(8));
|
||||
// Charging time in minutes for multi-phase charging / Ladezeit in Minuten für mehrphasiges Laden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KLE", "LADEDAUER_LADEART", "STAT_MINUTEN_LADEZYKLUS_3PH_WERT", STAT_MINUTEN_LADEZYKLUS_3PH_WERT, "\"min\"");
|
||||
|
||||
unsigned short STAT_SEKUNDEN_LADEZYKLUS_3PH_WERT = (RXBUF_UINT(12));
|
||||
// Charging time in seconds for multi-phase charging / Ladezeit in Sekunden für mehrphasiges Laden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEDAUER_LADEART", "STAT_SEKUNDEN_LADEZYKLUS_3PH_WERT", STAT_SEKUNDEN_LADEZYKLUS_3PH_WERT, "\"s\"");
|
||||
|
||||
unsigned short STAT_LADEZYKLUS_3PH_WERT = (RXBUF_UINT(14));
|
||||
// Number of charging cycles, multi-phase charging / Anzahl Ladezyklus mehrphasiges Laden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KLE", "LADEDAUER_LADEART", "STAT_LADEZYKLUS_3PH_WERT", STAT_LADEZYKLUS_3PH_WERT, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_KLE_FLASH_DSPS_0XF000: { // 0xF000
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KLE_FLASH_DSPS_0XF000", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_DSP_FLASHING_0XF000 = (RXBUF_UCHAR(0));
|
||||
// DSP programming status. / Status der DSP-Programmierung.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KLE", "FLASH_DSPS_0XF000", "STAT_DSP_FLASHING_0XF000", STAT_DSP_FLASHING_0XF000, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
|
@ -1,688 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/ucx2_i01.json: KLE 15: Convenience charging electronics
|
||||
// This generated code makes it easier to process CANBUS messages from the KLE ecu in a BMW i3
|
||||
//
|
||||
|
||||
#define I3_ECU_KLE_TX 0x06F115
|
||||
#define I3_ECU_KLE_RX 0x0615F1
|
||||
|
||||
#define I3_PID_KLE_FLASH_DSPS 0xAF43
|
||||
// Programming of DSP / Programmierung von DSP
|
||||
|
||||
#define I3_RES_KLE_STAT_DSP_FLASHING (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KLE_STAT_DSP_FLASHING_UNIT '0-n'
|
||||
#define I3_RES_KLE_STAT_DSP_FLASHING_TYPE unsigned char
|
||||
// DSP programming status. / Status der DSP-Programmierung.
|
||||
|
||||
#define I3_PID_KLE_BETRIEBSZUSTAND_LADEGERAET 0xDE84
|
||||
// Operating modes charger / Betriebsarten Ladegerät
|
||||
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_1_WERT (RXBUF_UCHAR(0)/4.0f)
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_1_WERT_UNIT 'Hz'
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_1_WERT_TYPE float
|
||||
// Current grid frequency phase 1 / Aktuelle Netzfrequenz Phase 1
|
||||
|
||||
// BF_LADEGERAET_DERATING is a BITFIELD of size unsigned char. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// Reason for derating / Grund für Derating
|
||||
// STAT_DERATING_BIT0: Mask: 0x01 - Overtemperature: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT1: Mask: 0x02 - Mains frequency too low: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT2: Mask: 0x04 - Failure of a charging module: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT3: Mask: 0x08 - DC current limitation: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT4: Mask: 0x10 - Network available power of lower nominal power: 0 = not active; 1 = active
|
||||
// STAT_DERATING_BIT5: Mask: 0x20 - Reserved
|
||||
// STAT_DERATING_BIT6: Mask: 0x40 - Reserved
|
||||
#define I3_RES_KLE_BF_LADEGERAET_DERATING (RXBUF_UCHAR(1))
|
||||
#define I3_RES_KLE_BF_LADEGERAET_DERATING_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_LADEGERAET_DERATING_TYPE unsigned char
|
||||
// Reason for derating / Grund für Derating
|
||||
|
||||
#define I3_RES_KLE_STAT_LEISTUNG_DERATING_WERT (RXBUF_UINT(2)*10.0f)
|
||||
#define I3_RES_KLE_STAT_LEISTUNG_DERATING_WERT_UNIT 'W'
|
||||
#define I3_RES_KLE_STAT_LEISTUNG_DERATING_WERT_TYPE float
|
||||
// Derating performance / Derating Leistung
|
||||
|
||||
#define I3_RES_KLE_STAT_DERATING_WERT (RXBUF_UCHAR(4))
|
||||
#define I3_RES_KLE_STAT_DERATING_WERT_UNIT '%'
|
||||
#define I3_RES_KLE_STAT_DERATING_WERT_TYPE unsigned char
|
||||
// Derating / Derating
|
||||
|
||||
// BF_LADEGERAET_FEHLERZUSTAND_UCXII is a BITFIELD of size unsigned char. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// Charger fault conditions / Ladegerät Fehlerzustände
|
||||
// STAT_FEHLERZUSTAND_BIT0: Mask: 0x01 - Derating: 0 = not active; 1 = active
|
||||
// STAT_FEHLERZUSTAND_BIT1: Mask: 0x02 - Charge interruption: 0 = not active; 1 = active
|
||||
// STAT_FEHLERZUSTAND_BIT2: Mask: 0x04 - Failsafe: 0 = not active; 1 = active
|
||||
// STAT_FEHLERZUSTAND_BIT3: Mask: 0x08 - Communication failure: 0 = not active; 1 = active
|
||||
#define I3_RES_KLE_BF_LADEGERAET_FEHLERZUSTAND_UCXII (RXBUF_UCHAR(5))
|
||||
#define I3_RES_KLE_BF_LADEGERAET_FEHLERZUSTAND_UCXII_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_LADEGERAET_FEHLERZUSTAND_UCXII_TYPE unsigned char
|
||||
// Charger fault conditions / Ladegerät Fehlerzustände
|
||||
|
||||
// BF_AUSLOESER_FAILSAFE_UCXII is a BITFIELD of size unsigned int. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// Failsafe trigger / Auslöser Failsafe
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT0: Mask: 0x001 - Hardware error: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT1: Mask: 0x002 - Undervoltage AC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT2: Mask: 0x004 - Overvoltage AC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT3: Mask: 0x008 - Overcurrent AC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT4: Mask: 0x010 - Undervoltage DC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT5: Mask: 0x020 - Overvoltage DC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT6: Mask: 0x040 - Overcurrent DC: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT7: Mask: 0x080 - Temperature: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT8: Mask: 0x100 - Communication error: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT9: Mask: 0x200 - Load initialization timeout: 0 = not active; 1 = active
|
||||
// STAT_AUSLOESER_FAILSAFE_BIT10: Mask: 0x400 - Controller undervoltage: 0 = not active; 1 = active
|
||||
#define I3_RES_KLE_BF_AUSLOESER_FAILSAFE_UCXII (RXBUF_UINT(6))
|
||||
#define I3_RES_KLE_BF_AUSLOESER_FAILSAFE_UCXII_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_AUSLOESER_FAILSAFE_UCXII_TYPE unsigned short
|
||||
// Failsafe trigger / Auslöser Failsafe
|
||||
|
||||
// BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG is a BITFIELD of size unsigned char. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// Cause of charging interruption / Ursache für Ladeunterbrechung
|
||||
// STAT_URSACHE_LADEUNTERBRECHUNG_BIT0: Mask: 0x01 - Forced separation of the plug: 0 = not active; 1 = active
|
||||
// STAT_URSACHE_LADEUNTERBRECHUNG_BIT1: Mask: 0x02 - AC voltage missing or grid connection unstable: 0 = not active; 1 = active
|
||||
// STAT_URSACHE_LADEUNTERBRECHUNG_BIT2: Mask: 0x04 - Connector not locked: 0 = not active; 1 = active
|
||||
#define I3_RES_KLE_BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG (RXBUF_UCHAR(8))
|
||||
#define I3_RES_KLE_BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_TYPE unsigned char
|
||||
// Cause of charging interruption / Ursache für Ladeunterbrechung
|
||||
|
||||
#define I3_RES_KLE_STAT_BETRIEBSART_NR (RXBUF_UCHAR(9))
|
||||
#define I3_RES_KLE_STAT_BETRIEBSART_NR_UNIT '0-n'
|
||||
#define I3_RES_KLE_STAT_BETRIEBSART_NR_TYPE unsigned char
|
||||
// Operating mode / Betriebsart
|
||||
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_2_WERT (RXBUF_UCHAR(10)/4.0f)
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_2_WERT_UNIT 'Hz'
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_2_WERT_TYPE float
|
||||
// Current grid frequency phase 2 / Aktuelle Netzfrequenz Phase 2
|
||||
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_3_WERT (RXBUF_UCHAR(11)/4.0f)
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_3_WERT_UNIT 'Hz'
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_3_WERT_TYPE float
|
||||
// Current grid frequency phase 3 / Aktuelle Netzfrequenz Phase 3
|
||||
|
||||
// BF_MOD_ERR is a BITFIELD of size unsigned long. We don't yet generate definitions for each bit, we treat as the host data type
|
||||
// Error states load module / Fehlerzustände Lademodul
|
||||
// STAT_BF_DSP_ERR_HVDCV_OORL: Mask: 0x00000001 - PM HVDC voltage sensor outside lower threshold: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_HVDCV_OORH: Mask: 0x00000002 - PM HVDC voltage sensor outside upper threshold: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_HVDCI_OORH: Mask: 0x00000004 - PM HVDC current sensor outside upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_IRES_OORH: Mask: 0x00000008 - PM sensor resonance current outside the upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VBUS_OORL: Mask: 0x00000010 - PM sensor bus voltage outside the lower threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VBUS_OORH: Mask: 0x00000020 - PM sensor bus voltage outside the upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_OVERTEMPERATURE: Mask: 0x00000040 - PM temperature sensor outside upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_UNDERTEMPERATURE: Mask: 0x00000080 - PM temperature sensor outside lower threshold: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_HVDCV_SHGND: Mask: 0x00000100 - PM HVDC voltage sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_HVDCI_SHGND: Mask: 0x00000200 - PM HVDC current sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_AC_I_OORH: Mask: 0x00000400 - PM AC current sensor outside upper threshold: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_AC_I_SHGND: Mask: 0x00000800 - PM AC current sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LX_SHBATT: Mask: 0x00001000 - PM AC Lx current sensor short circuit to positive: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LX_SHGND: Mask: 0x00002000 - PM AC Lx current sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_IRES_SHBATT: Mask: 0x00004000 - PM sensor resonance current short circuit to plus: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_IRES_SHGND: Mask: 0x00008000 - PM sensor resonance current short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CAN_ALIVE: Mask: 0x00010000 - PM error test ALIVE: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CAN_MSG401_TOUT: Mask: 0x00020000 - PM error timeout telegram 0x401: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CAN_MSG300_TOUT: Mask: 0x00040000 - PM error timeout telegram 0x300: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_SPI_PROTOCOL: Mask: 0x00080000 - PM error SPI protocol: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_SPI_WIPER0_MISMATCH: Mask: 0x00100000 - PM error SPI Wiper0 discrepancy: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_SPI_WIPER1_MISMATCH: Mask: 0x00200000 - PM error SPI Wiper1 discrepancy: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_RAM: Mask: 0x00400000 - PM error RAM: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_WATCHDOG: Mask: 0x00800000 - PM watchdog error: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_STACKOVFL: Mask: 0x01000000 - PM stack overflow: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_DATA_INTEGRITY: Mask: 0x02000000 - PM data integrity: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CLOCK: Mask: 0x04000000 - PM clock: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_CRC_CALIBRATION: Mask: 0x08000000 - PM CRC calibration: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LY_SHBATT: Mask: 0x10000000 - PM AC Ly voltage sensor short circuit to plus: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LY_SHGND: Mask: 0x20000000 - PM AC Ly voltage sensor short circuit to ground: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LX_OORH: Mask: 0x40000000 - PM AC Lx voltage sensor outside upper threshold value: 0 = not active; 1 = active
|
||||
// STAT_BF_DSP_ERR_VAC_LY_OORH: Mask: 0x80000000 - PM AC Ly voltage sensor outside upper threshold: 0 = not active; 1 = active
|
||||
#define I3_RES_KLE_BF_MOD_ERR (RXBUF_UINT32(12))
|
||||
#define I3_RES_KLE_BF_MOD_ERR_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_MOD_ERR_TYPE unsigned long
|
||||
// Error states load module / Fehlerzustände Lademodul
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_LEISTUNG 0xDE85
|
||||
// Power values intermediate circuit of the charger / Leistungswerte Zwischenkreis des Ladegeräts
|
||||
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT_UNIT '%'
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT_TYPE unsigned char
|
||||
// Charge cycle efficiency / Wirkungsgrad Ladezyklus
|
||||
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_DC_WERT (RXBUF_UCHAR(1))
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_DC_WERT_UNIT '%'
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_DC_WERT_TYPE unsigned char
|
||||
// Efficiency DC / Wirkungsgrad DC
|
||||
|
||||
#define I3_RES_KLE_STAT_LADEGERAET_DC_HV_LEISTUNG_WERT (RXBUF_UINT(2))
|
||||
#define I3_RES_KLE_STAT_LADEGERAET_DC_HV_LEISTUNG_WERT_UNIT 'W'
|
||||
#define I3_RES_KLE_STAT_LADEGERAET_DC_HV_LEISTUNG_WERT_TYPE unsigned short
|
||||
// Instantaneous power output in the intermediate circuit / Abgegebende Momentanleistung in den Zwischenkreis
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_SPANNUNG 0xDE86
|
||||
// AC and DC voltages charger / AC und DC Spannungen Ladegerät
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_1_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_1_WERT_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_1_WERT_TYPE unsigned short
|
||||
// RMS values of the AC conductor voltages (phase 1) / Effektivwerte der AC Leiterspannungen (Phase1)
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT (RXBUF_UINT(2)/10.0f)
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT_TYPE float
|
||||
// HV DC voltage upper limit / HV DC Spannungsobergrenze
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_WERT (RXBUF_UINT(4)/10.0f)
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_WERT_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_WERT_TYPE float
|
||||
// HV DC voltage / HV DC Spannung
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30_WERT (RXBUF_UCHAR(6)/10.0f)
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30_WERT_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30_WERT_TYPE float
|
||||
// KL30 voltage / KL30 Spannung
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30C_WERT (RXBUF_UCHAR(7)/10.0f)
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30C_WERT_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30C_WERT_TYPE float
|
||||
// KL30C voltage / KL30C Spannung
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_2_WERT (RXBUF_UINT(8))
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_2_WERT_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_2_WERT_TYPE unsigned short
|
||||
// RMS values of the AC conductor voltages (phase 2) / Effektivwerte der AC Leiterspannungen (Phase 2)
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_3_WERT (RXBUF_UINT(10))
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_3_WERT_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_3_WERT_TYPE unsigned short
|
||||
// RMS values of the AC conductor voltages (phase 3) / Effektivwerte der AC Leiterspannungen (Phase 3)
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_STROM 0xDE87
|
||||
// AC and DC currents charger / AC und DC Ströme Ladegerät
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_1_WERT (RXBUF_UINT(0)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_1_WERT_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_1_WERT_TYPE float
|
||||
// AC current phase 1 / AC Strom Phase 1
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_AC_MAX_GESPEICHERT_WERT (RXBUF_UINT(2)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_AC_MAX_GESPEICHERT_WERT_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_AC_MAX_GESPEICHERT_WERT_TYPE float
|
||||
// Maximum stored AC current / Maximal gespeicherter AC Strom
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_WERT (RXBUF_UINT(4)/10.0f-204.7)
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_WERT_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_WERT_TYPE float
|
||||
// HV DC electricity / HV DC Strom
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_LIMIT_WERT (RXBUF_UINT(6)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_LIMIT_WERT_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_LIMIT_WERT_TYPE float
|
||||
// Maximum permitted HV DC current / Maximal erlaubter HV DC Strom
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT (RXBUF_UINT(8)/10.0f-204.7)
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT_TYPE float
|
||||
// Maximum stored DC current / Maximal gespeicherter DC Strom
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_2_WERT (RXBUF_UINT(10)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_2_WERT_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_2_WERT_TYPE float
|
||||
// AC current phase 2 / AC Strom Phase 2
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_3_WERT (RXBUF_UINT(12)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_3_WERT_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_3_WERT_TYPE float
|
||||
// AC current phase 3 / AC Strom Phase 3
|
||||
|
||||
#define I3_PID_KLE_AC_PHASENANZAHL 0xDF25
|
||||
// Status of the number of AC phases / Status AC-Phasenanzahl
|
||||
|
||||
#define I3_RES_KLE_STAT_AC_PHASENANZAHL_WERT (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KLE_STAT_AC_PHASENANZAHL_WERT_TYPE unsigned char
|
||||
// Status of the number of AC phases / Status AC-Phasenanzahl
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_LADEDAUER 0xDFB0
|
||||
// Information on the charging time / Information zur Ladedauer
|
||||
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_WERT_UNIT 'min'
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_WERT_TYPE unsigned long
|
||||
// Charging time in minutes / Ladezeit in Minuten
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_WERT (RXBUF_UINT(4))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_WERT_TYPE unsigned short
|
||||
// Loading time in seconds / Ladezeit in Sekunden
|
||||
|
||||
#define I3_RES_KLE_STAT_LADEZYKLEN_WERT (RXBUF_UINT(6))
|
||||
#define I3_RES_KLE_STAT_LADEZYKLEN_WERT_TYPE unsigned short
|
||||
// Number of charging cycles / Anzahl der Ladezyklen
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_TEMPERATUREN 0xDFB1
|
||||
// Reading out temperatures / Auslesen Temperaturen
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC1_TEMPERATUR_WERT (RXBUF_UCHAR(0)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC1_TEMPERATUR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC1_TEMPERATUR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 1) / interne Temperatur (Temperatursensor 1)
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC2_TEMPERATUR_WERT (RXBUF_UCHAR(1)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC2_TEMPERATUR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC2_TEMPERATUR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 2) / interne Temperatur (Temperatursensor 2)
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC3_TEMPERATUR_WERT (RXBUF_UCHAR(2)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC3_TEMPERATUR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC3_TEMPERATUR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 3) / interne Temperatur (Temperatursensor 3)
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC4_TEMPERATUR_WERT (RXBUF_UCHAR(3)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC4_TEMPERATUR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC4_TEMPERATUR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 4) / interne Temperatur (Temperatursensor 4)
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC5_TEMPERATUR_WERT (RXBUF_UCHAR(4)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC5_TEMPERATUR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC5_TEMPERATUR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 5) / interne Temperatur (Temperatursensor 5)
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC6_TEMPERATUR_WERT (RXBUF_UCHAR(5)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC6_TEMPERATUR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC6_TEMPERATUR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 6) / interne Temperatur (Temperatursensor 6)
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC7_TEMPERAUTR_WERT (RXBUF_UCHAR(6)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC7_TEMPERAUTR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC7_TEMPERAUTR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 7) / interne Temperatur (Temperatursensor 7)
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC8_TEMPERATUR_WERT (RXBUF_UCHAR(7)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC8_TEMPERATUR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC8_TEMPERATUR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 8) / interne Tempeartur (Temperatursensor 8)
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC9_TEMPEARTUR_WERT (RXBUF_UCHAR(8)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC9_TEMPEARTUR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC9_TEMPEARTUR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 9) / interne Temperatur (Temperatursensor 9)
|
||||
|
||||
#define I3_RES_KLE_STAT_NTC10_TEMPEARTUR_WERT (RXBUF_UCHAR(9)-75.0)
|
||||
#define I3_RES_KLE_STAT_NTC10_TEMPEARTUR_WERT_UNIT '°C'
|
||||
#define I3_RES_KLE_STAT_NTC10_TEMPEARTUR_WERT_TYPE unsigned char
|
||||
// internal temperature (temperature sensor 10) / interne Temperatur (Temperatursensor 10)
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_LEISTUNG2 0xDFB4
|
||||
// Power values for second charger (multi-phase charging) / Leistungswerte für zweites Ladegerät (mehrphasiges
|
||||
// Laden)
|
||||
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT_0XDFB4 (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT_0XDFB4_UNIT '%'
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_LADEZYKLUS_WERT_0XDFB4_TYPE unsigned char
|
||||
// Charge cycle efficiency / Wirkungsgrad Ladezyklus
|
||||
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_DC_WERT_0XDFB4 (RXBUF_UCHAR(1))
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_DC_WERT_0XDFB4_UNIT '%'
|
||||
#define I3_RES_KLE_STAT_WIRKUNGSGRAD_DC_WERT_0XDFB4_TYPE unsigned char
|
||||
// Efficiency DC / Wirkungsgrad DC
|
||||
|
||||
#define I3_RES_KLE_STAT_LADEGERAET_DC_HV_LEISTUNG_WERT_0XDFB4 (RXBUF_UINT(2))
|
||||
#define I3_RES_KLE_STAT_LADEGERAET_DC_HV_LEISTUNG_WERT_0XDFB4_UNIT 'W'
|
||||
#define I3_RES_KLE_STAT_LADEGERAET_DC_HV_LEISTUNG_WERT_0XDFB4_TYPE unsigned short
|
||||
// Instantaneous power output in the intermediate circuit / Abgegebende Momentanleistung in den Zwischenkreis
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_LADE_HISTOGRAMM 0xDFB6
|
||||
// Charge histogram related to temperature and power / Ladehistogramm bezüglich Temperatur und Leistung
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT_TYPE unsigned long
|
||||
// Seconds at temperature below 0 ° C / Sekunden bei Temperatur unter 0°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT (RXBUF_UINT32(4))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT_TYPE unsigned long
|
||||
// Seconds at a temperature between 0 ° C and 45 ° C / Sekunden bei Temperatur zwischen 0°C und 45°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT (RXBUF_UINT32(8))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT_TYPE unsigned long
|
||||
// Seconds at a temperature between 46 ° C and 60 ° C / Sekunden bei Temperatur zwischen 46°C und 60°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT (RXBUF_UINT32(12))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT_TYPE unsigned long
|
||||
// Seconds in the temperature range between 61 ° C and 70 ° C / Sekunden im Temperaturbereich zwischen 61°C und
|
||||
// 70°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT (RXBUF_UINT32(16))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT_TYPE unsigned long
|
||||
// Seconds at a temperature between 71 ° C and 85 ° C / Sekunden bei Temperatur zwischen 71°C und 85°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT (RXBUF_UINT32(20))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT_TYPE unsigned long
|
||||
// Seconds at temperatures above 85 ° C / Sekunden bei Temperatur über 85°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT (RXBUF_UINT32(24))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT_TYPE unsigned long
|
||||
// Seconds at power below 1000W / Sekunden bei Leistung unter 1000W
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT (RXBUF_UINT32(28))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT_TYPE unsigned long
|
||||
// Seconds at power between 1001W and 2000W / Sekunden bei Leistung zwischen 1001W und 2000W
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT (RXBUF_UINT32(32))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT_TYPE unsigned long
|
||||
// Seconds at power between 2001W and 3000W / Sekunden bei Leistung zwischen 2001W und 3000W
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT (RXBUF_UINT32(36))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT_TYPE unsigned long
|
||||
// Seconds at power over 3000W / Sekunden bei Leistung über 3000W
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_LADE_HISTOGRAMM2 0xDFB7
|
||||
// Charging histogram relating to temperature and power for a second charger (multi-phase charging). /
|
||||
// Ladehistogramm bezüglich Temperatur und Leistung für ein zweites Ladegerät (mehrphasiges Laden).
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT_0XDFB7 (RXBUF_UINT32(0))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_1_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds at temperature below 0 ° C / Sekunden bei Temperatur unter 0°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT_0XDFB7 (RXBUF_UINT32(4))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_2_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds at a temperature between 0 ° C and 45 ° C / Sekunden bei Temperatur zwischen 0°C und 45°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT_0XDFB7 (RXBUF_UINT32(8))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_3_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds at a temperature between 46 ° C and 60 ° C / Sekunden bei Temperatur zwischen 46°C und 60°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT_0XDFB7 (RXBUF_UINT32(12))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_4_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds in the temperature range between 61 ° C and 70 ° C / Sekunden im Temperaturbereich zwischen 61°C und
|
||||
// 70°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT_0XDFB7 (RXBUF_UINT32(16))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_5_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds at a temperature between 71 ° C and 85 ° C / Sekunden bei Temperatur zwischen 71°C und 85°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT_0XDFB7 (RXBUF_UINT32(20))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_TEMPERATUR_BEREICH_6_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds at temperatures above 85 ° C / Sekunden bei Temperatur über 85°C
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT_0XDFB7 (RXBUF_UINT32(24))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_1_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds at power below 1000W / Sekunden bei Leistung unter 1000W
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT_0XDFB7 (RXBUF_UINT32(28))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_2_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds at power between 1001W and 2000W / Sekunden bei Leistung zwischen 1001W und 2000W
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT_0XDFB7 (RXBUF_UINT32(32))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_3_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds at power between 2001W and 3000W / Sekunden bei Leistung zwischen 2001W und 3000W
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT_0XDFB7 (RXBUF_UINT32(36))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT_0XDFB7_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LEISTUNG_BEREICH_4_WERT_0XDFB7_TYPE unsigned long
|
||||
// Seconds at power over 3000W / Sekunden bei Leistung über 3000W
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_LADEDAUER2 0xDFB8
|
||||
// Information on the charging time for a second charger (multi-phase charging) / Information zur Ladedauer für
|
||||
// ein zweites Ladegerät (mehrphasiges Laden)
|
||||
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_WERT_0XDFB8 (RXBUF_UINT32(0))
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_WERT_0XDFB8_UNIT 'min'
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_WERT_0XDFB8_TYPE unsigned long
|
||||
// Charging time in minutes / Ladezeit in Minuten
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_WERT_0XDFB8 (RXBUF_UINT(4))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_WERT_0XDFB8_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_WERT_0XDFB8_TYPE unsigned short
|
||||
// Loading time in seconds / Ladezeit in Sekunden
|
||||
|
||||
#define I3_RES_KLE_STAT_LADEZYKLEN_WERT_0XDFB8 (RXBUF_UINT(6))
|
||||
#define I3_RES_KLE_STAT_LADEZYKLEN_WERT_0XDFB8_TYPE unsigned short
|
||||
// Number of charging cycles / Anzahl der Ladezyklen
|
||||
|
||||
#define I3_PID_KLE_UMSCHALTMATRIX 0xDFB9
|
||||
// Switching matrix (multi-phase charging): number of switching cycles and state of the switches / Umschaltmatrix
|
||||
// (mehrphasiges Laden): Anzahl von Schaltzyklen und Zustand der Schalter
|
||||
|
||||
#define I3_RES_KLE_STAT_SCHALTER1_SCHALTZYKLEN_ANZAHL_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_KLE_STAT_SCHALTER1_SCHALTZYKLEN_ANZAHL_WERT_TYPE unsigned long
|
||||
// Number of switching cycles for switch 1 (multi-phase charging: phase 1) / Anzahl von Schaltzyklen für Schalter
|
||||
// 1 (mehrphasiges Laden: Phase 1)
|
||||
|
||||
#define I3_RES_KLE_STAT_SCHALTER2_SCHALTZYKLEN_ANZAHL_WERT (RXBUF_UINT32(4))
|
||||
#define I3_RES_KLE_STAT_SCHALTER2_SCHALTZYKLEN_ANZAHL_WERT_TYPE unsigned long
|
||||
// Number of switching cycles for switch 2 (multi-phase charging: phase 2) / Anzahl von Schaltzyklen für Schalter
|
||||
// 2 (mehrphasiges Laden: Phase 2)
|
||||
|
||||
#define I3_RES_KLE_STAT_SCHALTER3_SCHALTZYKLEN_ANZAHL_WERT (RXBUF_UINT32(8))
|
||||
#define I3_RES_KLE_STAT_SCHALTER3_SCHALTZYKLEN_ANZAHL_WERT_TYPE unsigned long
|
||||
// Number of switching cycles for switch 3 (multi-phase charging: phase 3) / Anzahl von Schaltzyklen für Schalter
|
||||
// 3 (mehrphasiges Laden: Phase 3)
|
||||
|
||||
#define I3_RES_KLE_STAT_SCHALTER4_SCHALTZYKLEN_ANZAHL_WERT (RXBUF_UINT32(12))
|
||||
#define I3_RES_KLE_STAT_SCHALTER4_SCHALTZYKLEN_ANZAHL_WERT_TYPE unsigned long
|
||||
// Number of switching cycles for switch 4 (multi-phase charging: changeover) / Anzahl von Schaltzyklen für
|
||||
// Schalter 4 (mehrphasiges Laden: Umschaltung)
|
||||
|
||||
#define I3_RES_KLE_STAT_SCHALTER1 (RXBUF_UCHAR(16))
|
||||
#define I3_RES_KLE_STAT_SCHALTER1_UNIT '0/1'
|
||||
#define I3_RES_KLE_STAT_SCHALTER1_TYPE unsigned char
|
||||
// State of switch 1 (0 = open, 1 = closed) / Zustand vom Schalter 1 (0= offen, 1=geschlossen)
|
||||
|
||||
#define I3_RES_KLE_STAT_SCHALTER2 (RXBUF_UCHAR(17))
|
||||
#define I3_RES_KLE_STAT_SCHALTER2_UNIT '0/1'
|
||||
#define I3_RES_KLE_STAT_SCHALTER2_TYPE unsigned char
|
||||
// State of switch 2 (0 = open, 1 = closed) / Zustand vom Schalter 2 (0= offen, 1=geschlossen)
|
||||
|
||||
#define I3_RES_KLE_STAT_SCHALTER3 (RXBUF_UCHAR(18))
|
||||
#define I3_RES_KLE_STAT_SCHALTER3_UNIT '0/1'
|
||||
#define I3_RES_KLE_STAT_SCHALTER3_TYPE unsigned char
|
||||
// State of switch 3 (0 = open, 1 = closed) / Zustand vom Schalter 3 (0= offen, 1=geschlossen)
|
||||
|
||||
#define I3_RES_KLE_STAT_SCHALTER4 (RXBUF_UCHAR(19))
|
||||
#define I3_RES_KLE_STAT_SCHALTER4_UNIT '0/1'
|
||||
#define I3_RES_KLE_STAT_SCHALTER4_TYPE unsigned char
|
||||
// State of switch 4 (0 = charger 1, 1 = charger 2) / Zustand vom Schalter 4 (0= Ladegerät 1, 1=Ladegerät 2)
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_SPANNUNG2 0xDFBA
|
||||
// AC and DC voltages for second charger (multi-phase charging) / AC und DC Spannungen für zweites Ladegerät
|
||||
// (mehrphasiges Laden)
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_1_WERT_0XDFBA (RXBUF_UINT(0))
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_1_WERT_0XDFBA_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_1_WERT_0XDFBA_TYPE unsigned short
|
||||
// RMS values of the AC conductor voltages (phase 1) / Effektivwerte der AC Leiterspannungen (Phase1)
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT_0XDFBA (RXBUF_UINT(2)/10.0f)
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT_0XDFBA_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_OBERGRENZE_WERT_0XDFBA_TYPE float
|
||||
// HV DC voltage upper limit / HV DC Spannungsobergrenze
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_WERT_0XDFBA (RXBUF_UINT(4)/10.0f)
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_WERT_0XDFBA_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_DC_HV_WERT_0XDFBA_TYPE float
|
||||
// HV DC voltage / HV DC Spannung
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30_WERT_0XDFBA (RXBUF_UCHAR(6)/10.0f)
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30_WERT_0XDFBA_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30_WERT_0XDFBA_TYPE float
|
||||
// KL30 voltage / KL30 Spannung
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30C_WERT_0XDFBA (RXBUF_UCHAR(7)/10.0f)
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30C_WERT_0XDFBA_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_KL30C_WERT_0XDFBA_TYPE float
|
||||
// KL30C voltage / KL30C Spannung
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_2_WERT_0XDFBA (RXBUF_UINT(8))
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_2_WERT_0XDFBA_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_2_WERT_0XDFBA_TYPE unsigned short
|
||||
// RMS values of the AC conductor voltages (phase 2) / Effektivwerte der AC Leiterspannungen (Phase 2)
|
||||
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_3_WERT_0XDFBA (RXBUF_UINT(10))
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_3_WERT_0XDFBA_UNIT 'V'
|
||||
#define I3_RES_KLE_STAT_SPANNUNG_RMS_AC_PHASE_3_WERT_0XDFBA_TYPE unsigned short
|
||||
// RMS values of the AC conductor voltages (phase 3) / Effektivwerte der AC Leiterspannungen (Phase 3)
|
||||
|
||||
#define I3_PID_KLE_LADEGERAET_STROM2 0xDFBB
|
||||
// Charger currents for second charger (multi-phase charging) / Ströme des Ladegeräts für zweits Ladegerät
|
||||
// (mehrphasiges Laden)
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_1_WERT_0XDFBB (RXBUF_UINT(0)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_1_WERT_0XDFBB_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_1_WERT_0XDFBB_TYPE float
|
||||
// AC current phase 1 / AC Strom Phase 1
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_AC_MAX_GESPEICHERT_WERT_0XDFBB (RXBUF_UINT(2)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_AC_MAX_GESPEICHERT_WERT_0XDFBB_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_AC_MAX_GESPEICHERT_WERT_0XDFBB_TYPE float
|
||||
// Maximum stored AC current / Maximal gespeicherter AC Strom
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_WERT_0XDFBB (RXBUF_UINT(4)/10.0f-204.7)
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_WERT_0XDFBB_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_WERT_0XDFBB_TYPE float
|
||||
// HV DC electricity / HV DC Strom
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_LIMIT_WERT_0XDFBB (RXBUF_UINT(6)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_LIMIT_WERT_0XDFBB_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_LIMIT_WERT_0XDFBB_TYPE float
|
||||
// Maximum permitted HV DC current / Maximal erlaubter HV DC Strom
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT_0XDFBB (RXBUF_UINT(8)/10.0f-204.7)
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT_0XDFBB_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_HV_DC_MAX_GESPEICHERT_WERT_0XDFBB_TYPE float
|
||||
// Maximum stored DC current / Maximal gespeicherter DC Strom
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_2_WERT_0XDFBB (RXBUF_UINT(10)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_2_WERT_0XDFBB_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_2_WERT_0XDFBB_TYPE float
|
||||
// AC current phase 2 / AC Strom Phase 2
|
||||
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_3_WERT_0XDFBB (RXBUF_UINT(12)/10.0f)
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_3_WERT_0XDFBB_UNIT 'A'
|
||||
#define I3_RES_KLE_STAT_STROM_AC_PHASE_3_WERT_0XDFBB_TYPE float
|
||||
// AC current phase 3 / AC Strom Phase 3
|
||||
|
||||
#define I3_PID_KLE_BETRIEBSZUSTAND_LADEGERAET2 0xDFBC
|
||||
// Operating modes charger for second charger (multi-phase charging) / Betriebsarten Ladegerät für zweites
|
||||
// Ladegerät (mehrphasiges Laden)
|
||||
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_1_WERT_0XDFBC (RXBUF_UCHAR(0)/4.0f)
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_1_WERT_0XDFBC_UNIT 'Hz'
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_1_WERT_0XDFBC_TYPE float
|
||||
// Current grid frequency phase 1 / Aktuelle Netzfrequenz Phase 1
|
||||
|
||||
// BF_LADEGERAET_DERATING_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
// Reason for derating / Grund für Derating
|
||||
#define I3_RES_KLE_BF_LADEGERAET_DERATING_0XDFBC (RXBUF_UCHAR(1))
|
||||
#define I3_RES_KLE_BF_LADEGERAET_DERATING_0XDFBC_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_LADEGERAET_DERATING_0XDFBC_TYPE unsigned char
|
||||
// Reason for derating / Grund für Derating
|
||||
|
||||
#define I3_RES_KLE_STAT_LEISTUNG_DERATING_WERT_0XDFBC (RXBUF_UINT(2)*10.0f)
|
||||
#define I3_RES_KLE_STAT_LEISTUNG_DERATING_WERT_0XDFBC_UNIT 'W'
|
||||
#define I3_RES_KLE_STAT_LEISTUNG_DERATING_WERT_0XDFBC_TYPE float
|
||||
// Derating performance / Derating Leistung
|
||||
|
||||
#define I3_RES_KLE_STAT_DERATING_WERT_0XDFBC (RXBUF_UCHAR(4))
|
||||
#define I3_RES_KLE_STAT_DERATING_WERT_0XDFBC_UNIT '%'
|
||||
#define I3_RES_KLE_STAT_DERATING_WERT_0XDFBC_TYPE unsigned char
|
||||
// Derating / Derating
|
||||
|
||||
// BF_LADEGERAET_FEHLERZUSTAND_UCXII_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
// Charger fault conditions / Ladegerät Fehlerzustände
|
||||
#define I3_RES_KLE_BF_LADEGERAET_FEHLERZUSTAND_UCXII_0XDFBC (RXBUF_UCHAR(5))
|
||||
#define I3_RES_KLE_BF_LADEGERAET_FEHLERZUSTAND_UCXII_0XDFBC_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_LADEGERAET_FEHLERZUSTAND_UCXII_0XDFBC_TYPE unsigned char
|
||||
// Charger fault conditions / Ladegerät Fehlerzustände
|
||||
|
||||
// BF_AUSLOESER_FAILSAFE_UCXII_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
// Failsafe trigger / Auslöser Failsafe
|
||||
#define I3_RES_KLE_BF_AUSLOESER_FAILSAFE_UCXII_0XDFBC (RXBUF_UCHAR(6))
|
||||
#define I3_RES_KLE_BF_AUSLOESER_FAILSAFE_UCXII_0XDFBC_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_AUSLOESER_FAILSAFE_UCXII_0XDFBC_TYPE unsigned char
|
||||
// Failsafe trigger / Auslöser Failsafe
|
||||
|
||||
// BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
// Cause of charging interruption / Ursache für Ladeunterbrechung
|
||||
#define I3_RES_KLE_BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_0XDFBC (RXBUF_UCHAR(7))
|
||||
#define I3_RES_KLE_BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_0XDFBC_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_LADEGERAET_URSACHE_LADEUNTERBRECHUNG_0XDFBC_TYPE unsigned char
|
||||
// Cause of charging interruption / Ursache für Ladeunterbrechung
|
||||
|
||||
#define I3_RES_KLE_STAT_BETRIEBSART_NR_0XDFBC (RXBUF_UCHAR(8))
|
||||
#define I3_RES_KLE_STAT_BETRIEBSART_NR_0XDFBC_UNIT '0-n'
|
||||
#define I3_RES_KLE_STAT_BETRIEBSART_NR_0XDFBC_TYPE unsigned char
|
||||
// Operating mode / Betriebsart
|
||||
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_2_WERT_0XDFBC (RXBUF_UCHAR(9)/4.0f)
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_2_WERT_0XDFBC_UNIT 'Hz'
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_2_WERT_0XDFBC_TYPE float
|
||||
// Current grid frequency phase 2 / Aktuelle Netzfrequenz Phase 2
|
||||
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_3_WERT_0XDFBC (RXBUF_UCHAR(10)/4.0f)
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_3_WERT_0XDFBC_UNIT 'Hz'
|
||||
#define I3_RES_KLE_STAT_NETZFREQUENZ_PHASE_3_WERT_0XDFBC_TYPE float
|
||||
// Current grid frequency phase 3 / Aktuelle Netzfrequenz Phase 3
|
||||
|
||||
// BF_MOD_ERR_0XDFBC is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***
|
||||
// Error states load module / Fehlerzustände Lademodul
|
||||
#define I3_RES_KLE_BF_MOD_ERR_0XDFBC (RXBUF_UCHAR(11))
|
||||
#define I3_RES_KLE_BF_MOD_ERR_0XDFBC_UNIT 'Bit'
|
||||
#define I3_RES_KLE_BF_MOD_ERR_0XDFBC_TYPE unsigned char
|
||||
// Error states load module / Fehlerzustände Lademodul
|
||||
|
||||
#define I3_PID_KLE_LADEDAUER_LADEART 0xDFBD
|
||||
// Charging time for different charging types / Ladedauer für verschiedene Ladearten
|
||||
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_1PH_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_1PH_WERT_UNIT 'min'
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_1PH_WERT_TYPE unsigned long
|
||||
// Charging time in minutes for single-phase charging / Ladezeit in Minuten für einphasiges Laden
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_1PH_WERT (RXBUF_UINT(4))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_1PH_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_1PH_WERT_TYPE unsigned short
|
||||
// Charging time in seconds for single-phase charging / Ladezeit in Sekunden für einphasiges Laden
|
||||
|
||||
#define I3_RES_KLE_STAT_LADEZYKLUS_1PH_WERT (RXBUF_UINT(6))
|
||||
#define I3_RES_KLE_STAT_LADEZYKLUS_1PH_WERT_TYPE unsigned short
|
||||
// Number of charging cycles, single-phase charging / Anzahl Ladezyklus einphasiges Laden
|
||||
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_3PH_WERT (RXBUF_UINT32(8))
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_3PH_WERT_UNIT 'min'
|
||||
#define I3_RES_KLE_STAT_MINUTEN_LADEZYKLUS_3PH_WERT_TYPE unsigned long
|
||||
// Charging time in minutes for multi-phase charging / Ladezeit in Minuten für mehrphasiges Laden
|
||||
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_3PH_WERT (RXBUF_UINT(12))
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_3PH_WERT_UNIT 's'
|
||||
#define I3_RES_KLE_STAT_SEKUNDEN_LADEZYKLUS_3PH_WERT_TYPE unsigned short
|
||||
// Charging time in seconds for multi-phase charging / Ladezeit in Sekunden für mehrphasiges Laden
|
||||
|
||||
#define I3_RES_KLE_STAT_LADEZYKLUS_3PH_WERT (RXBUF_UINT(14))
|
||||
#define I3_RES_KLE_STAT_LADEZYKLUS_3PH_WERT_TYPE unsigned short
|
||||
// Number of charging cycles, multi-phase charging / Anzahl Ladezyklus mehrphasiges Laden
|
||||
|
||||
#define I3_PID_KLE_FLASH_DSPS_0XF000 0xF000
|
||||
// RID used to flash DSPs / RID used to flash DSPs
|
||||
|
||||
#define I3_RES_KLE_STAT_DSP_FLASHING_0XF000 (RXBUF_UCHAR(0))
|
||||
#define I3_RES_KLE_STAT_DSP_FLASHING_0XF000_UNIT '0-n'
|
||||
#define I3_RES_KLE_STAT_DSP_FLASHING_0XF000_TYPE unsigned char
|
||||
// DSP programming status. / Status der DSP-Programmierung.
|
|
@ -1,23 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/ucx2_i01.json: KLE 15: Convenience charging electronics
|
||||
// This generated code makes it easier to process CANBUS messages from the KLE ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_FLASH_DSPS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAF43
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_BETRIEBSZUSTAND_LADEGERAET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE84
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_LEISTUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE85
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_SPANNUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE86
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_STROM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE87
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_AC_PHASENANZAHL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF25
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_LADEDAUER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFB0
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_TEMPERATUREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFB1
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_LEISTUNG2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFB4
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_LADE_HISTOGRAMM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFB6
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_LADE_HISTOGRAMM2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFB7
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_LADEDAUER2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFB8
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_UMSCHALTMATRIX, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFB9
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_SPANNUNG2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFBA
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEGERAET_STROM2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFBB
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_BETRIEBSZUSTAND_LADEGERAET2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFBC
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_LADEDAUER_LADEART, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFBD
|
||||
//{ I3_ECU_KLE_TX, I3_ECU_KLE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KLE_FLASH_DSPS_0XF000, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF000
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,75 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/komb25.json: KOM 60: Instrument panel
|
||||
// This generated code makes it easier to process CANBUS messages from the KOM ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_SELBSTTEST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x0F04
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_START_SYSTIME, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1005
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_STATUS_SYSTIME, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1725
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_STATUS_AKT_AUSFALL_CCMS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x2521
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_SELBSTTEST_HUD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA104
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_AO_TOTAL_TIME_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA108
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_SHOWMODE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAA00
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_LOGBUCH_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAA01
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_DREHZAHL_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD106
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_TACHO_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD107
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_GWSZ_ABSOLUT_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD10D
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_LSS_TASTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD10E
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_KOMBI_REICHWEITE_BEV_PHEV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD111
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_A_TEMP_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD112
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_KOMBI_UHRZEIT_DATUM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD113
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_GWSZ_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD114
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_STARTWERT_ZEITEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD118
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_TANKINHALT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD11F
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_TIMER_KLIMATISIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD121
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_ZEITSTEMPEL_HU_ABFRAGEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD12C
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_SEGMENTDATEN_SPEICHER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD12F
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_REICHWEITE_GEWONNENER_KRAFTSTOFF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D0
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCHSERHOEHUNG_ALPHA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D1
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCHSERHOEHUNG_PI, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D2
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_MEHRVERBRAUCH_MV_REF, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D3
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_ECO_MODE_AUSTRITT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D4
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAEUCHE_SKALIERUNG_X, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D5
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAEUCHE_SKALIERUNG_Y, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D6
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAEUCHE_SKALIERUNG_Z, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D7
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAEUCHE_SKALIERUNG_A, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D8
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCHSVORTEIL_HYBRID_AKT_SEGMENT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1D9
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_KOMBI_HUD_AKTIVE_WARPLISTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA00
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_STATUS_HUD_BILDPOSITION_SCHRITTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA0A
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_STATUS_HUD_BILDROTATION_SCHRITTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA0F
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_PORTS_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA43
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_SW_VERSION_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA44
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_SENSOREN_IDENT_LESEN_ERWEITERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA46
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_KOMBI_HUD_BILDPOSITION_STUFEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDA47
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_REICHWEITE_GEWONNENER_KRAFTSTOFF_0X4200, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4200
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCHSERHOEHUNG_ALPHA_0X4201, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4201
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCHSERHOEHUNG_PI_0X4202, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4202
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_MEHRVERBRAUCH_MV_REF_0X4203, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4203
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_ECO_MODE_AUSTRITT_0X4204, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4204
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAEUCHE_SKALIERUNG_X_0X4205, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4205
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAEUCHE_SKALIERUNG_Y_0X4206, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4206
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAEUCHE_SKALIERUNG_Z_0X4207, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4207
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAEUCHE_SKALIERUNG_A_0X4208, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4208
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCHSVORTEIL_HYBRID_AKT_SEGMENT_0X4209, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4209
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERVRAEUCHE_SKALIERUNG_MCV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x420A
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCHSVORTEIL_HYBRID_AKT_SEGMENT_MCV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x420B
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_REICHWEITE_MCV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x420C
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCH_ERHOEHUNG_A, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x420D
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCH_ERHOEHUNG_TT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x420E
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_MEHRVERBRAUCH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x420F
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_ECO_MODE_AUSTRITT_0X4210, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4210
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCH_CHARAKTERISTIK_ECO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4230
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCH_CHARAKTERISTIK_NORMAL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4231
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCH_CHARAKTERISTIK_LERNFAKTOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4232
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_VERBRAUCH_CHARAKTERISTIK_FAKTOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4233
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_LOGBUCH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4800
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_PIA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4801
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_NO_SIGNAL_SCREEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4803
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_START_UP_SCREEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4804
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_PROCESS_VERSION_READ, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4805
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_KOMBI_BC_BCW_L_KM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD126
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_KOMBI_BC_RBC_L_KM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD127
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_KOMBI_BC_BCW_KWH_KM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD129
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_KOMBI_BC_RBC_KWH_KM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD12A
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_CC_MELDUNGSSPEICHER_LOESCHEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF010
|
||||
//{ I3_ECU_KOM_TX, I3_ECU_KOM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_KOM_HUD_M_SHOWMODE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF018
|
|
@ -1,199 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/lim_i1.json: LIM 14: Charging interface module
|
||||
// This generated code makes it easier to process CANBUS messages from the LIM ecu in a BMW i3
|
||||
//
|
||||
|
||||
case I3_PID_LIM_STATUS_CALCVN: { // 0x2541
|
||||
if (datalen < 20) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_LIM_STATUS_CALCVN", 20);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_CVN_WERT = (RXBUF_UINT32(16));
|
||||
// Read out CVN (here the CVN must be output as in mode $ 09 (PID $ 06)) / CVN auslesen (hier muss die CVN wie
|
||||
// bei Mode $09 (PID $06) ausgegeben werden)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "LIM", "STATUS_CALCVN", "STAT_CVN_WERT", STAT_CVN_WERT, "\"HEX\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_LIM_LADESTECKDOSE_TEMPERATUR: { // 0xDB0F
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_LIM_LADESTECKDOSE_TEMPERATUR", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
float STAT_LADESTECKDOSE_TEMP_WERT = (RXBUF_UINT(0)/10.0f-40.0);
|
||||
// Temperature of the DC charging connection in ° C (China) / Temperatur der DC-Ladeanschluss in °C (China)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "LIM", "LADESTECKDOSE_TEMPERATUR", "STAT_LADESTECKDOSE_TEMP_WERT", STAT_LADESTECKDOSE_TEMP_WERT, "\"°C\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_LIM_LADEBEREITSCHAFT_LIM: { // 0xDEF2
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_LIM_LADEBEREITSCHAFT_LIM", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_LADEBEREITSCHAFT_LIM = (RXBUF_UCHAR(0));
|
||||
// Ready to charge (HW line), (1 = yes, 0 = no) sent from LIM to SLE / Ladebereitschaft (HW-Leitung), (1 = ja, 0
|
||||
// = nein) vom LIM an SLE gesendet
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "LADEBEREITSCHAFT_LIM", "STAT_LADEBEREITSCHAFT_LIM", STAT_LADEBEREITSCHAFT_LIM, "\"0/1\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_LIM_PROXIMITY: { // 0xDEF5
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_LIM_PROXIMITY", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_STECKER_NR = (RXBUF_UCHAR(0));
|
||||
// Condition of the plug / Zustand des Steckers
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "PROXIMITY", "STAT_STECKER_NR", STAT_STECKER_NR, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_STROMTRAGFAEHIGKEIT_WERT = (RXBUF_UCHAR(1));
|
||||
// Current carrying capacity of the connected cable / Stromtragfähigkeit des angeschlossenen Kabels
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "PROXIMITY", "STAT_STROMTRAGFAEHIGKEIT_WERT", STAT_STROMTRAGFAEHIGKEIT_WERT, "\"A\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_LIM_PILOTSIGNAL: { // 0xDEF6
|
||||
if (datalen < 7) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_LIM_PILOTSIGNAL", 7);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_PILOT_AKTIV = (RXBUF_UCHAR(0));
|
||||
// State of the pilot signal (0 = not active, 1 = active) / Zustand des Pilotsignals (0 = nicht aktiv, 1 = aktiv)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "PILOTSIGNAL", "STAT_PILOT_AKTIV", STAT_PILOT_AKTIV, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_PILOT_PWM_DUTYCYCLE_WERT = (RXBUF_UCHAR(1));
|
||||
// Pulse duty factor PWM pilot signal / Tastverhältnis PWM Pilotsignal
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "PILOTSIGNAL", "STAT_PILOT_PWM_DUTYCYCLE_WERT", STAT_PILOT_PWM_DUTYCYCLE_WERT, "\"%\"");
|
||||
|
||||
unsigned char STAT_PILOT_CURRENT_WERT = (RXBUF_UCHAR(2));
|
||||
// Current value calculated from the pilot signal / Errechneter Stromwert aus Pilotsignal
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "PILOTSIGNAL", "STAT_PILOT_CURRENT_WERT", STAT_PILOT_CURRENT_WERT, "\"A\"");
|
||||
|
||||
unsigned char STAT_PILOT_LADEBEREIT = (RXBUF_UCHAR(3));
|
||||
// Vehicle ready to charge state (0 = not ready to charge, 1 = ready to charge) / Zustand Ladebereitschaft
|
||||
// Fahrzeug (0 = nicht ladebereit, 1 = ladebereit)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "PILOTSIGNAL", "STAT_PILOT_LADEBEREIT", STAT_PILOT_LADEBEREIT, "\"0/1\"");
|
||||
|
||||
unsigned short STAT_PILOT_FREQUENZ_WERT = (RXBUF_UINT(4));
|
||||
// Frequency of the pilot signal / Frequenz des Pilotsignals
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "LIM", "PILOTSIGNAL", "STAT_PILOT_FREQUENZ_WERT", STAT_PILOT_FREQUENZ_WERT, "\"Hz\"");
|
||||
|
||||
float STAT_PILOT_PEGEL_WERT = (RXBUF_UCHAR(6)/10.0f);
|
||||
// Pilot signal level / Pegel des Pilotsignals
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "LIM", "PILOTSIGNAL", "STAT_PILOT_PEGEL_WERT", STAT_PILOT_PEGEL_WERT, "\"V\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_LIM_LADESCHNITTSTELLE_DC_TEPCO: { // 0xDEF7
|
||||
if (datalen < 4) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_LIM_LADESCHNITTSTELLE_DC_TEPCO", 4);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_CHARGE_CONTROL_1 = (RXBUF_UCHAR(0));
|
||||
// Charge control status 1 line (0 = not active, 1 = active) / Zustand Charge control 1 Leitung (0 = nicht aktiv,
|
||||
// 1 = aktiv)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "LADESCHNITTSTELLE_DC_TEPCO", "STAT_CHARGE_CONTROL_1", STAT_CHARGE_CONTROL_1, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_CHARGE_CONTROL_2 = (RXBUF_UCHAR(1));
|
||||
// Charge control status 2 line (0 = not active, 1 = active) / Zustand Charge control 2 Leitung (0 = nicht aktiv,
|
||||
// 1 = aktiv)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "LADESCHNITTSTELLE_DC_TEPCO", "STAT_CHARGE_CONTROL_2", STAT_CHARGE_CONTROL_2, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_CHARGE_PERMISSION = (RXBUF_UCHAR(2));
|
||||
// Charge permission line status (0 = not active, 1 = active) / Zustand Charge Permission Leitung (0 = nicht
|
||||
// aktiv, 1 = aktiv)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "LADESCHNITTSTELLE_DC_TEPCO", "STAT_CHARGE_PERMISSION", STAT_CHARGE_PERMISSION, "\"0/1\"");
|
||||
|
||||
unsigned char STAT_LADESTECKER = (RXBUF_UCHAR(3));
|
||||
// State of charging plug (0 = not plugged in, 1 = plugged in) / Zustand Ladestecker (0 = nicht gesteckt, 1 =
|
||||
// gesteckt)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "LADESCHNITTSTELLE_DC_TEPCO", "STAT_LADESTECKER", STAT_LADESTECKER, "\"0/1\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_LIM_DC_SCHUETZ_SCHALTER: { // 0xDEF8
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_LIM_DC_SCHUETZ_SCHALTER", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_DC_SCHUETZ_SCHALTER = (RXBUF_UCHAR(0));
|
||||
// Contactor switch status (DC charging) / Status Schützschalter (DC-Laden)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "DC_SCHUETZ_SCHALTER", "STAT_DC_SCHUETZ_SCHALTER", STAT_DC_SCHUETZ_SCHALTER, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_LIM_DC_SCHUETZ_SPANNUNG_EINGANG: { // 0xDEF9
|
||||
if (datalen < 3) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_LIM_DC_SCHUETZ_SPANNUNG_EINGANG", 3);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_DC_SCHUETZ_SPANNUNG_EINGANG_WERT = (RXBUF_UINT(0));
|
||||
// Voltage at the input of the relay box (contactors) for DC charging / Spannung am Eingang der Relaisbox
|
||||
// (Schaltschütze) für DC-Laden
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "LIM", "DC_SCHUETZ_SPANNUNG_EINGANG", "STAT_DC_SCHUETZ_SPANNUNG_EINGANG_WERT", STAT_DC_SCHUETZ_SPANNUNG_EINGANG_WERT, "\"V\"");
|
||||
|
||||
unsigned char STAT_DC_SCHUETZ_SPANNUNG_NEGATIV = (RXBUF_UCHAR(2));
|
||||
// Detection of a negative voltage (0 = no or positive voltage / 1 = negative voltage) / Erkennung einer
|
||||
// negativen Spannung (0 = keine oder positive Spannung / 1 = negative Spannung)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "DC_SCHUETZ_SPANNUNG_EINGANG", "STAT_DC_SCHUETZ_SPANNUNG_NEGATIV", STAT_DC_SCHUETZ_SPANNUNG_NEGATIV, "\"0/1\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_LIM_DC_PINABDECKUNG_COMBO: { // 0xDEFA
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_LIM_DC_PINABDECKUNG_COMBO", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_DC_PINABDECKUNG = (RXBUF_UCHAR(0));
|
||||
// State of the DC pin cover for combo socket (0 = closed, 1 = open) / Zustand der DC Pinabdeckung bei
|
||||
// Combo-Steckdose (0 = geschlossen, 1 = geöffnet)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "LIM", "DC_PINABDECKUNG_COMBO", "STAT_DC_PINABDECKUNG", STAT_DC_PINABDECKUNG, "\"0/1\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
|
@ -1,163 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/lim_i1.json: LIM 14: Charging interface module
|
||||
// This generated code makes it easier to process CANBUS messages from the LIM ecu in a BMW i3
|
||||
//
|
||||
|
||||
#define I3_ECU_LIM_TX 0x06F114
|
||||
#define I3_ECU_LIM_RX 0x0614F1
|
||||
|
||||
#define I3_PID_LIM_STATUS_CALCVN 0x2541
|
||||
// Read out Cal-ID (Calibration-ID) and CVN (Calibration Verification Number). (OBD scopes) Byte layout: 20 bytes
|
||||
// long 00-15 = STAT_CALID_WERT 16-19 = STAT_CVN_EINH as Hex unit32 in Intel format / Cal-ID (Calibration-ID) und
|
||||
// CVN(Calibration Verification Number) auslesen. (OBD-Umfänge) Byte-Layout: 20 Byte lang 00-15 =
|
||||
// STAT_CALID_WERT 16-19 = STAT_CVN_EINH als Hex unit32 im Intel Format
|
||||
|
||||
// Can't yet generate code for STAT_CALID_TEXT of type string[16], at offset 0. But we account for the 16 bytes
|
||||
// Read out Cal ID (here the Cal ID must be output as in mode $ 09 (PID $ 04)) / Cal-ID auslesen (hier muss die
|
||||
// Cal-ID wie bei Mode $09 (PID $04) ausgegeben werden).
|
||||
|
||||
#define I3_RES_LIM_STAT_CVN_WERT (RXBUF_UINT32(16))
|
||||
#define I3_RES_LIM_STAT_CVN_WERT_UNIT 'HEX'
|
||||
#define I3_RES_LIM_STAT_CVN_WERT_TYPE unsigned long
|
||||
// Read out CVN (here the CVN must be output as in mode $ 09 (PID $ 06)) / CVN auslesen (hier muss die CVN wie
|
||||
// bei Mode $09 (PID $06) ausgegeben werden)
|
||||
|
||||
// Skipping ZV_LADESTECKER_CN on 0xDB0E which takes arguments
|
||||
|
||||
#define I3_PID_LIM_LADESTECKDOSE_TEMPERATUR 0xDB0F
|
||||
// Temperature of the DC charging connection in ° C (China) / Temperatur der DC-Ladeanschluss in °C (China)
|
||||
|
||||
#define I3_RES_LIM_STAT_LADESTECKDOSE_TEMP_WERT (RXBUF_UINT(0)/10.0f-40.0)
|
||||
#define I3_RES_LIM_STAT_LADESTECKDOSE_TEMP_WERT_UNIT '°C'
|
||||
#define I3_RES_LIM_STAT_LADESTECKDOSE_TEMP_WERT_TYPE float
|
||||
// Temperature of the DC charging connection in ° C (China) / Temperatur der DC-Ladeanschluss in °C (China)
|
||||
|
||||
// Skipping LADEN_HOSPITALITY_FUNKTION on 0xDE6B which takes arguments
|
||||
|
||||
// Skipping ZV_LADESTECKER on 0xDEF0 which takes arguments
|
||||
|
||||
// Skipping ZV_LADEKLAPPE on 0xDEF1 which takes arguments
|
||||
|
||||
#define I3_PID_LIM_LADEBEREITSCHAFT_LIM 0xDEF2
|
||||
// Ready to charge (HW line), (1 = yes, 0 = no) sent from LIM to SLE / Ladebereitschaft (HW-Leitung), (1 = ja, 0
|
||||
// = nein) vom LIM an SLE gesendet
|
||||
|
||||
#define I3_RES_LIM_STAT_LADEBEREITSCHAFT_LIM (RXBUF_UCHAR(0))
|
||||
#define I3_RES_LIM_STAT_LADEBEREITSCHAFT_LIM_UNIT '0/1'
|
||||
#define I3_RES_LIM_STAT_LADEBEREITSCHAFT_LIM_TYPE unsigned char
|
||||
// Ready to charge (HW line), (1 = yes, 0 = no) sent from LIM to SLE / Ladebereitschaft (HW-Leitung), (1 = ja, 0
|
||||
// = nein) vom LIM an SLE gesendet
|
||||
|
||||
// Skipping LED_LADESTATUS on 0xDEF3 which takes arguments
|
||||
|
||||
// Skipping LED_SUCHBELEUCHTUNG on 0xDEF4 which takes arguments
|
||||
|
||||
#define I3_PID_LIM_PROXIMITY 0xDEF5
|
||||
// Current status of the proximity / Aktueller Zustand des Proximity
|
||||
|
||||
#define I3_RES_LIM_STAT_STECKER_NR (RXBUF_UCHAR(0))
|
||||
#define I3_RES_LIM_STAT_STECKER_NR_UNIT '0-n'
|
||||
#define I3_RES_LIM_STAT_STECKER_NR_TYPE unsigned char
|
||||
// Condition of the plug / Zustand des Steckers
|
||||
|
||||
#define I3_RES_LIM_STAT_STROMTRAGFAEHIGKEIT_WERT (RXBUF_UCHAR(1))
|
||||
#define I3_RES_LIM_STAT_STROMTRAGFAEHIGKEIT_WERT_UNIT 'A'
|
||||
#define I3_RES_LIM_STAT_STROMTRAGFAEHIGKEIT_WERT_TYPE unsigned char
|
||||
// Current carrying capacity of the connected cable / Stromtragfähigkeit des angeschlossenen Kabels
|
||||
|
||||
#define I3_PID_LIM_PILOTSIGNAL 0xDEF6
|
||||
// current data of the pilot signal about the charging current / aktuelle Daten des Pilotsignals über den
|
||||
// Ladestrom
|
||||
|
||||
#define I3_RES_LIM_STAT_PILOT_AKTIV (RXBUF_UCHAR(0))
|
||||
#define I3_RES_LIM_STAT_PILOT_AKTIV_UNIT '0/1'
|
||||
#define I3_RES_LIM_STAT_PILOT_AKTIV_TYPE unsigned char
|
||||
// State of the pilot signal (0 = not active, 1 = active) / Zustand des Pilotsignals (0 = nicht aktiv, 1 = aktiv)
|
||||
|
||||
#define I3_RES_LIM_STAT_PILOT_PWM_DUTYCYCLE_WERT (RXBUF_UCHAR(1))
|
||||
#define I3_RES_LIM_STAT_PILOT_PWM_DUTYCYCLE_WERT_UNIT '%'
|
||||
#define I3_RES_LIM_STAT_PILOT_PWM_DUTYCYCLE_WERT_TYPE unsigned char
|
||||
// Pulse duty factor PWM pilot signal / Tastverhältnis PWM Pilotsignal
|
||||
|
||||
#define I3_RES_LIM_STAT_PILOT_CURRENT_WERT (RXBUF_UCHAR(2))
|
||||
#define I3_RES_LIM_STAT_PILOT_CURRENT_WERT_UNIT 'A'
|
||||
#define I3_RES_LIM_STAT_PILOT_CURRENT_WERT_TYPE unsigned char
|
||||
// Current value calculated from the pilot signal / Errechneter Stromwert aus Pilotsignal
|
||||
|
||||
#define I3_RES_LIM_STAT_PILOT_LADEBEREIT (RXBUF_UCHAR(3))
|
||||
#define I3_RES_LIM_STAT_PILOT_LADEBEREIT_UNIT '0/1'
|
||||
#define I3_RES_LIM_STAT_PILOT_LADEBEREIT_TYPE unsigned char
|
||||
// Vehicle ready to charge state (0 = not ready to charge, 1 = ready to charge) / Zustand Ladebereitschaft
|
||||
// Fahrzeug (0 = nicht ladebereit, 1 = ladebereit)
|
||||
|
||||
#define I3_RES_LIM_STAT_PILOT_FREQUENZ_WERT (RXBUF_UINT(4))
|
||||
#define I3_RES_LIM_STAT_PILOT_FREQUENZ_WERT_UNIT 'Hz'
|
||||
#define I3_RES_LIM_STAT_PILOT_FREQUENZ_WERT_TYPE unsigned short
|
||||
// Frequency of the pilot signal / Frequenz des Pilotsignals
|
||||
|
||||
#define I3_RES_LIM_STAT_PILOT_PEGEL_WERT (RXBUF_UCHAR(6)/10.0f)
|
||||
#define I3_RES_LIM_STAT_PILOT_PEGEL_WERT_UNIT 'V'
|
||||
#define I3_RES_LIM_STAT_PILOT_PEGEL_WERT_TYPE float
|
||||
// Pilot signal level / Pegel des Pilotsignals
|
||||
|
||||
#define I3_PID_LIM_LADESCHNITTSTELLE_DC_TEPCO 0xDEF7
|
||||
// Status of the batch control lines / Status der Chargecontroll Leitungen
|
||||
|
||||
#define I3_RES_LIM_STAT_CHARGE_CONTROL_1 (RXBUF_UCHAR(0))
|
||||
#define I3_RES_LIM_STAT_CHARGE_CONTROL_1_UNIT '0/1'
|
||||
#define I3_RES_LIM_STAT_CHARGE_CONTROL_1_TYPE unsigned char
|
||||
// Charge control status 1 line (0 = not active, 1 = active) / Zustand Charge control 1 Leitung (0 = nicht aktiv,
|
||||
// 1 = aktiv)
|
||||
|
||||
#define I3_RES_LIM_STAT_CHARGE_CONTROL_2 (RXBUF_UCHAR(1))
|
||||
#define I3_RES_LIM_STAT_CHARGE_CONTROL_2_UNIT '0/1'
|
||||
#define I3_RES_LIM_STAT_CHARGE_CONTROL_2_TYPE unsigned char
|
||||
// Charge control status 2 line (0 = not active, 1 = active) / Zustand Charge control 2 Leitung (0 = nicht aktiv,
|
||||
// 1 = aktiv)
|
||||
|
||||
#define I3_RES_LIM_STAT_CHARGE_PERMISSION (RXBUF_UCHAR(2))
|
||||
#define I3_RES_LIM_STAT_CHARGE_PERMISSION_UNIT '0/1'
|
||||
#define I3_RES_LIM_STAT_CHARGE_PERMISSION_TYPE unsigned char
|
||||
// Charge permission line status (0 = not active, 1 = active) / Zustand Charge Permission Leitung (0 = nicht
|
||||
// aktiv, 1 = aktiv)
|
||||
|
||||
#define I3_RES_LIM_STAT_LADESTECKER (RXBUF_UCHAR(3))
|
||||
#define I3_RES_LIM_STAT_LADESTECKER_UNIT '0/1'
|
||||
#define I3_RES_LIM_STAT_LADESTECKER_TYPE unsigned char
|
||||
// State of charging plug (0 = not plugged in, 1 = plugged in) / Zustand Ladestecker (0 = nicht gesteckt, 1 =
|
||||
// gesteckt)
|
||||
|
||||
#define I3_PID_LIM_DC_SCHUETZ_SCHALTER 0xDEF8
|
||||
// Contactor switch status (DC charging) / Status Schützschalter (DC-Laden)
|
||||
|
||||
#define I3_RES_LIM_STAT_DC_SCHUETZ_SCHALTER (RXBUF_UCHAR(0))
|
||||
#define I3_RES_LIM_STAT_DC_SCHUETZ_SCHALTER_UNIT '0-n'
|
||||
#define I3_RES_LIM_STAT_DC_SCHUETZ_SCHALTER_TYPE unsigned char
|
||||
// Contactor switch status (DC charging) / Status Schützschalter (DC-Laden)
|
||||
|
||||
#define I3_PID_LIM_DC_SCHUETZ_SPANNUNG_EINGANG 0xDEF9
|
||||
// Voltage at the input of the relay box (contactors) for DC charging / Spannung am Eingang der Relaisbox
|
||||
// (Schaltschütze) für DC-Laden
|
||||
|
||||
#define I3_RES_LIM_STAT_DC_SCHUETZ_SPANNUNG_EINGANG_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_LIM_STAT_DC_SCHUETZ_SPANNUNG_EINGANG_WERT_UNIT 'V'
|
||||
#define I3_RES_LIM_STAT_DC_SCHUETZ_SPANNUNG_EINGANG_WERT_TYPE unsigned short
|
||||
// Voltage at the input of the relay box (contactors) for DC charging / Spannung am Eingang der Relaisbox
|
||||
// (Schaltschütze) für DC-Laden
|
||||
|
||||
#define I3_RES_LIM_STAT_DC_SCHUETZ_SPANNUNG_NEGATIV (RXBUF_UCHAR(2))
|
||||
#define I3_RES_LIM_STAT_DC_SCHUETZ_SPANNUNG_NEGATIV_UNIT '0/1'
|
||||
#define I3_RES_LIM_STAT_DC_SCHUETZ_SPANNUNG_NEGATIV_TYPE unsigned char
|
||||
// Detection of a negative voltage (0 = no or positive voltage / 1 = negative voltage) / Erkennung einer
|
||||
// negativen Spannung (0 = keine oder positive Spannung / 1 = negative Spannung)
|
||||
|
||||
#define I3_PID_LIM_DC_PINABDECKUNG_COMBO 0xDEFA
|
||||
// State of the DC pin cover for combo socket (0 = closed, 1 = open) / Zustand der DC Pinabdeckung bei
|
||||
// Combo-Steckdose (0 = geschlossen, 1 = geöffnet)
|
||||
|
||||
#define I3_RES_LIM_STAT_DC_PINABDECKUNG (RXBUF_UCHAR(0))
|
||||
#define I3_RES_LIM_STAT_DC_PINABDECKUNG_UNIT '0/1'
|
||||
#define I3_RES_LIM_STAT_DC_PINABDECKUNG_TYPE unsigned char
|
||||
// State of the DC pin cover for combo socket (0 = closed, 1 = open) / Zustand der DC Pinabdeckung bei
|
||||
// Combo-Steckdose (0 = geschlossen, 1 = geöffnet)
|
|
@ -1,38 +0,0 @@
|
|||
|
||||
|
||||
// -------- LIM (Charger port) --------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#define I3_PID_LIM_STATUS_LADEKLAPPE 0xDEF1
|
||||
// Status of the charging door
|
||||
|
||||
#define I3_RES_LIM_STAT_LADEKLAPPE (RXBUF_UINT(0))
|
||||
#define I3_RES_LIM_STAT_LADEKLAPPE_UNIT ''
|
||||
#define I3_RES_LIM_STAT_LADEKLAPPE_TYPE unsigned short
|
||||
|
||||
// POLL line
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_STATUS_LADEKLAPPE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEF1
|
||||
|
||||
|
||||
|
||||
#define I3_PID_LIM_STATUS_LADESTECKER 0xDEF0
|
||||
// "Status sensor AC connector lock front (0 = unlocked, 1 = locked)
|
||||
|
||||
#define I3_RES_LIM_STAT_LADESTECKER_0XDEFO (RXBUF_UCHAR(0))
|
||||
#define I3_RES_LIM_STAT_LADESTECKER_0XDEFO_UNIT ''
|
||||
#define I3_RES_LIM_STAT_LADESTECKER_0XDEFO_TYPE unsigned char
|
||||
|
||||
// POLL line
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_STATUS_LADESTECKER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEF0
|
||||
|
||||
|
||||
#define I3_PID_LIM_LED_LADESTATUS 0xDEF3
|
||||
// Status or control LED for charging status (RGB light ring)
|
||||
|
||||
#define I3_RES_LIM_LED_LADESTATUS (RXBUF_UCHAR(0))
|
||||
#define I3_RES_LIM_LED_LADESTATUS_UNIT ''
|
||||
#define I3_RES_LIM_LED_LADESTATUS_TYPE unsigned char
|
||||
|
||||
// POLL line
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_LED_LADESTATUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEF3
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/lim_i1.json: LIM 14: Charging interface module
|
||||
// This generated code makes it easier to process CANBUS messages from the LIM ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_STATUS_CALCVN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x2541
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_LADESTECKDOSE_TEMPERATUR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDB0F
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_LADEBEREITSCHAFT_LIM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEF2
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_PROXIMITY, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEF5
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_PILOTSIGNAL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEF6
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_LADESCHNITTSTELLE_DC_TEPCO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEF7
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_DC_SCHUETZ_SCHALTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEF8
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_DC_SCHUETZ_SPANNUNG_EINGANG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEF9
|
||||
//{ I3_ECU_LIM_TX, I3_ECU_LIM_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_LIM_DC_PINABDECKUNG_COMBO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDEFA
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,115 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/nbtevo.json: NBT 63: Headunit high
|
||||
// This generated code makes it easier to process CANBUS messages from the NBT ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_RESET_AKTIVIERUNGSLEITUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1024
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ETH_PHY_SWITCH_ENGINE_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1044
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ETH_RESET_PORT_CONFIGURATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x104A
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ETH_RESET_PORT_TX_RX_STATS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x104B
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_LIFECYCLE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1735
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ETH_GET_NUMBER_OF_PORTS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1800
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ETH_PHY_LINK_STATE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1802
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ETH_LEARN_PORT_CONFIGURATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x1803
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STEUERN_VOLUMEAUDIO_DEFAULT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA002
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STEUERN_LINEAR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA004
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_FIND_BEST_STATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA00A
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STEUERN_INTERNAL_RESET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA023
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_PROVISIONING, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA02F
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STEUERN_DELETE_COOKIES, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA030
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STEUERN_RESCUE_MODE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA03B
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_SDARS_FACTORY_DEFAULTS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA03D
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_FIND_BEST_STATION_DAB, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA03F
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_FIND_BEST_TMC_STATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA045
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STEUERN_BT_DELETE_ALL_PHONE_ID, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA04B
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_INITIALISATION_COUNTER_REGION_CODE_DVD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA04D
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_SWUP_REMOVE_CUSTOMER_UPDATES, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA05A
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STEUERN_CLEAR_FAULT_TRACKING, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA085
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_TDA_AKTIVIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA0A8
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_UPDATE_ZERTIFIKATE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA0A9
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_TELNET_ZUGANG_AUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA0B0
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_WLAN_WPS_PUSH_BUTTON, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA0BB
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_HU_VIN_PROTECTION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA0F6
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_HU_FSC_REFURBISH_UI, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA0F7
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_HU_FSC_REFURBISH_VIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA0FB
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_HU_VIN_PROTECTION_ENFORCE_CYCLIC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xA109
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_LESEN_SYSTEMAUDIO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD002
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_INITIALISIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD004
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_DRIVE_HDD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD007
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_MEMORY_USAGE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD00A
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_VERSION_ID_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD00B
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_LESEN_LAUFWERK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD00C
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_ANT_QFS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD010
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_SGBMID_NAVIMAP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD012
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_SER_NR_DOM_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD019
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_BT_GEKOPPELTE_GERAETE_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD01D
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_SWUP_INSTALLATION_HISTORY, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD01E
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_LOGISTIC_NR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD020
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_APPLICATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD021
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_ANALOG_TEMPERATUR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD026
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_CD_MD_CDC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD02C
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_SPEED, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD030
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_DIRECTION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD031
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_GPS_DILUTION_OF_POSITION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD032
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_GPS_SATINFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD034
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_GPS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD038
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_GPS_RECEIVER_SW_VERSION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD03B
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_MAPMATERIAL_VERSION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD03C
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_NAVI_CALIBRATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD03D
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_EXT_GYROSIGNAL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD03E
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_HMI_VERSION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD03F
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_SGBMID_GRACENOTES, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD042
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_ANT_QFS_FM2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD045
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_SIGNAL_DAB, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD053
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_USB_HUB_TEST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD057
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_ROUTE_DOWNLOAD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD065
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_ADAS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD067
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_TDA_AKTIVIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD091
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_TIME_AFTER_STARTUP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD092
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_FM_PHASDIV_ANTENNA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD093
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_BT_FIRMWARE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD095
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_HD_DECODER_FIRMWARE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0B8
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ABLAUF_ZERTIFIKAT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0B9
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_COOKIES, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0BA
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_COUNTER_FILES_MUSICDB, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0C1
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ZIN_CENTRAL_INSTRUMENT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0C9
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ZIN_EVENT_QUEUE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0CA
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_ZIN_INTERNAL_STATES, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0CB
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_PROVISIONING_PARAMETER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0CE
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_MEDIA_STATISTIK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0D1
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_PROVISIONING_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0D3
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_LAST_DESTINATIONS_FIRST_DATA_SET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0D6
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_SDARS_RADIO_ID, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0DA
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_SDARS_VERSIONS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0DD
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_SDARS_SIGNAL_QUALITY_SXM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0DF
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_LAST_DESTINATIONS_SECOND_DATA_SET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0E0
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_DRIVE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0E2
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_BORDERLINE_SETTING, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0E5
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_BORDERLINE_CHANGE_MODE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0E8
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_SDARS_PELLET_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0E9
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_PROVISIONING_FORMAT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD0EB
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_WLAN_AUSSTATTUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1FA
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_WLAN_DEVICELIST_WIFI_DIRECT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD1FC
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_USB_TEST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD207
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_WLAN_AP_NETWORK, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD20E
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_TOUCH_COMMAND_NUMBER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD26A
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_CID_PHOTOSENSOR, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5CB
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_CID_TEMP_BACKLIGHT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5CC
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_CID_HELLIGKEIT_SOLLWERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5CD
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_CID_HELLIGKEIT_ISTWERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5CE
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_CID_EINGANGSWERTE_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5CF
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_CID_VERBINDUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5D0
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_CID_DETAIL_INFORMATIONEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD5D4
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_EQDATA_FILENAME, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4008
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_SENSOR_WERTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x400A
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_CID_SW_VERSION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x400E
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_INTERNAL_STATES, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x400F
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_CID_CODIERDATEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4010
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_STATUS_CID_DETAIL_INFORMATION_EXTENDED, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4011
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_WLAN_SIGNAL_TEST_AP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4044
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT_WLAN_SIGNAL_TEST_WIFI_DIRECT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4045
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT__STEUERN_DELETE_PERSISTENCY_JACINTO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xFDE1
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT__STEUERN_DELETE_PERSISTENCY_INTEL_PLUS_SWT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xFDE2
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT__STEUERN_DELETE_PERSISTENCY_INTEL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xFDE3
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT__STEUERN_BACKUP_PERSISTENCY, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xFDE5
|
||||
//{ I3_ECU_NBT_TX, I3_ECU_NBT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_NBT__STEUERN_RESTORE_PERSISTENCY, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xFDE6
|
|
@ -1,209 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/sas_i1.json: SAS 22: Optional equipment system
|
||||
// This generated code makes it easier to process CANBUS messages from the SAS ecu in a BMW i3
|
||||
//
|
||||
|
||||
case I3_PID_SAS_LERNDATEN_RUECKSETZEN: { // 0xABC9
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_SAS_VDC0_LESEN: { // 0xD817
|
||||
if (datalen < 29) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_SAS_VDC0_LESEN", 29);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_VDC_SOLLSTROM_VL_WERT = (RXBUF_UINT(0));
|
||||
// Target current of the VDC channel in the front left / Sollstrom des VDC Kanals vorne links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_SOLLSTROM_VL_WERT", STAT_VDC_SOLLSTROM_VL_WERT, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_SOLLSTROM_VR_WERT = (RXBUF_UINT(2));
|
||||
// Target current of the VDC channel in the front right / Sollstrom des VDC Kanals vorne rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_SOLLSTROM_VR_WERT", STAT_VDC_SOLLSTROM_VR_WERT, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_SOLLSTROM_HL_WERT = (RXBUF_UINT(4));
|
||||
// Target current of the VDC channel at the rear left / Sollstrom des VDC Kanals hinten links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_SOLLSTROM_HL_WERT", STAT_VDC_SOLLSTROM_HL_WERT, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_SOLLSTROM_HR_WERT = (RXBUF_UINT(6));
|
||||
// Set current of the VDC channel at the rear right / Sollstrom des VDC Kanals hinten rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_SOLLSTROM_HR_WERT", STAT_VDC_SOLLSTROM_HR_WERT, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_ISTSTROM_VL_WERT = (RXBUF_UINT(8));
|
||||
// Actual current of the VDC channel front left / Iststrom des VDC Kanals vorne links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_ISTSTROM_VL_WERT", STAT_VDC_ISTSTROM_VL_WERT, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_ISTSTROM_VR_WERT = (RXBUF_UINT(10));
|
||||
// Actual current of the VDC channel in the front right / Iststrom des VDC Kanals vorne rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_ISTSTROM_VR_WERT", STAT_VDC_ISTSTROM_VR_WERT, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_ISTSTROM_HL_WERT = (RXBUF_UINT(12));
|
||||
// Actual current of the VDC channel at the rear left / Iststrom des VDC Kanals hinten links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_ISTSTROM_HL_WERT", STAT_VDC_ISTSTROM_HL_WERT, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_ISTSTROM_HR_WERT = (RXBUF_UINT(14));
|
||||
// Actual current of the VDC channel at the rear right / Iststrom des VDC Kanals hinten rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_ISTSTROM_HR_WERT", STAT_VDC_ISTSTROM_HR_WERT, "\"mA\"");
|
||||
|
||||
unsigned char STAT_VDC_STATUS_VL = (RXBUF_UCHAR(16));
|
||||
// Status of the front left VDC channel / Status des VDC Kanals vorne links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_STATUS_VL", STAT_VDC_STATUS_VL, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_VDC_STATUS_VR = (RXBUF_UCHAR(17));
|
||||
// Status of the VDC channel in the front right / Status des VDC Kanals vorne rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_STATUS_VR", STAT_VDC_STATUS_VR, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_VDC_STATUS_HL = (RXBUF_UCHAR(18));
|
||||
// Status of the VDC channel in the back left / Status des VDC Kanals hinten links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_STATUS_HL", STAT_VDC_STATUS_HL, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_VDC_STATUS_HR = (RXBUF_UCHAR(19));
|
||||
// Status of the VDC channel in the back right / Status des VDC Kanals hinten rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN", "STAT_VDC_STATUS_HR", STAT_VDC_STATUS_HR, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_KLEMMEN = (RXBUF_UCHAR(20));
|
||||
// Internal status of terminal KL15 0 = KL15 OFF 1 = KL15 ON / Interner Status der Klemme KL15 0 = KL15 AUS 1 =
|
||||
// KL15 AN
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN", "STAT_KLEMMEN", STAT_KLEMMEN, "\"0-n\"");
|
||||
|
||||
float STAT_WHL_SPD_VL_WERT = (RXBUF_UINT(21)*0.0156f-511.984);
|
||||
// Front left wheel speed (from FlexRay) / Radgeschwindigkeit vorne links (von FlexRay)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "SAS", "VDC0_LESEN", "STAT_WHL_SPD_VL_WERT", STAT_WHL_SPD_VL_WERT, "\"rad/s\"");
|
||||
|
||||
float STAT_WHL_SPD_VR_WERT = (RXBUF_UINT(23)*0.0156f-511.984);
|
||||
// Wheel speed front right (from FlexRay) / Radgeschwindigkeit vorne rechts (von FlexRay)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "SAS", "VDC0_LESEN", "STAT_WHL_SPD_VR_WERT", STAT_WHL_SPD_VR_WERT, "\"rad/s\"");
|
||||
|
||||
float STAT_WHL_SPD_HL_WERT = (RXBUF_UINT(25)*0.0156f-511.984);
|
||||
// Rear left wheel speed (from FlexRay) / Radgeschwindigkeit hinten links (von FlexRay)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "SAS", "VDC0_LESEN", "STAT_WHL_SPD_HL_WERT", STAT_WHL_SPD_HL_WERT, "\"rad/s\"");
|
||||
|
||||
float STAT_WHL_SPD_HR_WERT = (RXBUF_UINT(27)*0.0156f-511.984);
|
||||
// Wheel speed rear right (from FlexRay) / Radgeschwindigkeit hinten rechts (von FlexRay)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "SAS", "VDC0_LESEN", "STAT_WHL_SPD_HR_WERT", STAT_WHL_SPD_HR_WERT, "\"rad/s\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_SAS_VDC0_LESEN_0XD817: { // 0xD817
|
||||
if (datalen < 29) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_SAS_VDC0_LESEN_0XD817", 29);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_VDC_SOLLSTROM_VL_WERT_0XD817 = (RXBUF_UINT(0));
|
||||
// Target current of the VDC channel in the front left / Sollstrom des VDC Kanals vorne links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_SOLLSTROM_VL_WERT_0XD817", STAT_VDC_SOLLSTROM_VL_WERT_0XD817, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_SOLLSTROM_VR_WERT_0XD817 = (RXBUF_UINT(2));
|
||||
// Target current of the VDC channel in the front right / Sollstrom des VDC Kanals vorne rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_SOLLSTROM_VR_WERT_0XD817", STAT_VDC_SOLLSTROM_VR_WERT_0XD817, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_SOLLSTROM_HL_WERT_0XD817 = (RXBUF_UINT(4));
|
||||
// Target current of the VDC channel at the rear left / Sollstrom des VDC Kanals hinten links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_SOLLSTROM_HL_WERT_0XD817", STAT_VDC_SOLLSTROM_HL_WERT_0XD817, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_SOLLSTROM_HR_WERT_0XD817 = (RXBUF_UINT(6));
|
||||
// Set current of the VDC channel at the rear right / Sollstrom des VDC Kanals hinten rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_SOLLSTROM_HR_WERT_0XD817", STAT_VDC_SOLLSTROM_HR_WERT_0XD817, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_ISTSTROM_VL_WERT_0XD817 = (RXBUF_UINT(8));
|
||||
// Actual current of the VDC channel front left / Iststrom des VDC Kanals vorne links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_ISTSTROM_VL_WERT_0XD817", STAT_VDC_ISTSTROM_VL_WERT_0XD817, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_ISTSTROM_VR_WERT_0XD817 = (RXBUF_UINT(10));
|
||||
// Actual current of the VDC channel in the front right / Iststrom des VDC Kanals vorne rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_ISTSTROM_VR_WERT_0XD817", STAT_VDC_ISTSTROM_VR_WERT_0XD817, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_ISTSTROM_HL_WERT_0XD817 = (RXBUF_UINT(12));
|
||||
// Actual current of the VDC channel at the rear left / Iststrom des VDC Kanals hinten links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_ISTSTROM_HL_WERT_0XD817", STAT_VDC_ISTSTROM_HL_WERT_0XD817, "\"mA\"");
|
||||
|
||||
unsigned short STAT_VDC_ISTSTROM_HR_WERT_0XD817 = (RXBUF_UINT(14));
|
||||
// Actual current of the VDC channel at the rear right / Iststrom des VDC Kanals hinten rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_ISTSTROM_HR_WERT_0XD817", STAT_VDC_ISTSTROM_HR_WERT_0XD817, "\"mA\"");
|
||||
|
||||
unsigned char STAT_VDC_STATUS_VL_0XD817 = (RXBUF_UCHAR(16));
|
||||
// Status of the front left VDC channel / Status des VDC Kanals vorne links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_STATUS_VL_0XD817", STAT_VDC_STATUS_VL_0XD817, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_VDC_STATUS_VR_0XD817 = (RXBUF_UCHAR(17));
|
||||
// Status of the VDC channel in the front right / Status des VDC Kanals vorne rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_STATUS_VR_0XD817", STAT_VDC_STATUS_VR_0XD817, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_VDC_STATUS_HL_0XD817 = (RXBUF_UCHAR(18));
|
||||
// Status of the VDC channel in the back left / Status des VDC Kanals hinten links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_STATUS_HL_0XD817", STAT_VDC_STATUS_HL_0XD817, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_VDC_STATUS_HR_0XD817 = (RXBUF_UCHAR(19));
|
||||
// Status of the VDC channel in the back right / Status des VDC Kanals hinten rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_VDC_STATUS_HR_0XD817", STAT_VDC_STATUS_HR_0XD817, "\"0-n\"");
|
||||
|
||||
unsigned char STAT_KLEMMEN_0XD817 = (RXBUF_UCHAR(20));
|
||||
// Internal status of terminal KL15 0 = KL15 OFF 1 = KL15 ON / Interner Status der Klemme KL15 0 = KL15 AUS 1 =
|
||||
// KL15 AN
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_KLEMMEN_0XD817", STAT_KLEMMEN_0XD817, "\"0-n\"");
|
||||
|
||||
float STAT_WHL_SPD_VL_WERT_0XD817 = (RXBUF_UINT(21)*0.0156f-511.984);
|
||||
// Front left wheel speed (from FlexRay) / Radgeschwindigkeit vorne links (von FlexRay)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_WHL_SPD_VL_WERT_0XD817", STAT_WHL_SPD_VL_WERT_0XD817, "\"rad/s\"");
|
||||
|
||||
float STAT_WHL_SPD_VR_WERT_0XD817 = (RXBUF_UINT(23)*0.0156f-511.984);
|
||||
// Wheel speed front right (from FlexRay) / Radgeschwindigkeit vorne rechts (von FlexRay)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_WHL_SPD_VR_WERT_0XD817", STAT_WHL_SPD_VR_WERT_0XD817, "\"rad/s\"");
|
||||
|
||||
float STAT_WHL_SPD_HL_WERT_0XD817 = (RXBUF_UINT(25)*0.0156f-511.984);
|
||||
// Rear left wheel speed (from FlexRay) / Radgeschwindigkeit hinten links (von FlexRay)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_WHL_SPD_HL_WERT_0XD817", STAT_WHL_SPD_HL_WERT_0XD817, "\"rad/s\"");
|
||||
|
||||
float STAT_WHL_SPD_HR_WERT_0XD817 = (RXBUF_UINT(27)*0.0156f-511.984);
|
||||
// Wheel speed rear right (from FlexRay) / Radgeschwindigkeit hinten rechts (von FlexRay)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "SAS", "VDC0_LESEN_0XD817", "STAT_WHL_SPD_HR_WERT_0XD817", STAT_WHL_SPD_HR_WERT_0XD817, "\"rad/s\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_SAS_STATUS_SWC_VERSIONEN_LESEN_ANZAHL_DATENSAETZE: { // 0xDD33
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_SAS_STATUS_SWC_VERSIONEN_LESEN_ANZAHL_DATENSAETZE", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_INDEX_DATENSATZ_WERT = (RXBUF_UINT(0));
|
||||
// - / -
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "SAS", "STATUS_SWC_VERSIONEN_LESEN_ANZAHL_DATENSAETZE", "STAT_INDEX_DATENSATZ_WERT", STAT_INDEX_DATENSATZ_WERT, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_SAS_READ_EXCEPTION_DATA: { // 0x4001
|
||||
if (datalen < 50) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_SAS_READ_EXCEPTION_DATA", 50);
|
||||
break;
|
||||
}
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_SAS_CLEAR_EXCEPTION_DATA: { // 0xF000
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
|
@ -1,221 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/sas_i1.json: SAS 22: Optional equipment system
|
||||
// This generated code makes it easier to process CANBUS messages from the SAS ecu in a BMW i3
|
||||
//
|
||||
|
||||
#define I3_ECU_SAS_TX 0x06F122
|
||||
#define I3_ECU_SAS_RX 0x0622F1
|
||||
|
||||
// Skipping SWC_VERSIONEN_LESEN_INDEX_DATENSATZ on 0xA200 which takes arguments
|
||||
|
||||
// Skipping SWC_VERSIONEN_LESEN_KMAIN_KSUB on 0xA201 which takes arguments
|
||||
|
||||
// Skipping VDC0_FESTSTROM on 0xABC7 which takes arguments
|
||||
|
||||
// Skipping VDC0_FESTSTROM on 0xABC7 which takes arguments
|
||||
|
||||
// Skipping VDC0_MODUS on 0xABC8 which takes arguments
|
||||
|
||||
#define I3_PID_SAS_LERNDATEN_RUECKSETZEN 0xABC9
|
||||
// Learning data (of the learning infrastructure) are reset to default values. / Lerndaten (der Infrastruktur
|
||||
// Lernen) werden auf Standardwerte zurückgesetzt.
|
||||
|
||||
#define I3_PID_SAS_VDC0_LESEN 0xD817
|
||||
// Reading out the current status of each VDC0 valve (status, actual current, target current) and environmental
|
||||
// data (terminal, wheel speeds, ¿). / Auslesen des aktuellen Status jedes VDC0-Ventils (Status, Ist-Strom,
|
||||
// Soll-Strom) und Umgebungsdaten (Klemme, Radgeschwindigkeiten,¿).
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VL_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VL_WERT_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VL_WERT_TYPE unsigned short
|
||||
// Target current of the VDC channel in the front left / Sollstrom des VDC Kanals vorne links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VR_WERT (RXBUF_UINT(2))
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VR_WERT_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VR_WERT_TYPE unsigned short
|
||||
// Target current of the VDC channel in the front right / Sollstrom des VDC Kanals vorne rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HL_WERT (RXBUF_UINT(4))
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HL_WERT_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HL_WERT_TYPE unsigned short
|
||||
// Target current of the VDC channel at the rear left / Sollstrom des VDC Kanals hinten links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HR_WERT (RXBUF_UINT(6))
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HR_WERT_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HR_WERT_TYPE unsigned short
|
||||
// Set current of the VDC channel at the rear right / Sollstrom des VDC Kanals hinten rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VL_WERT (RXBUF_UINT(8))
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VL_WERT_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VL_WERT_TYPE unsigned short
|
||||
// Actual current of the VDC channel front left / Iststrom des VDC Kanals vorne links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VR_WERT (RXBUF_UINT(10))
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VR_WERT_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VR_WERT_TYPE unsigned short
|
||||
// Actual current of the VDC channel in the front right / Iststrom des VDC Kanals vorne rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HL_WERT (RXBUF_UINT(12))
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HL_WERT_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HL_WERT_TYPE unsigned short
|
||||
// Actual current of the VDC channel at the rear left / Iststrom des VDC Kanals hinten links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HR_WERT (RXBUF_UINT(14))
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HR_WERT_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HR_WERT_TYPE unsigned short
|
||||
// Actual current of the VDC channel at the rear right / Iststrom des VDC Kanals hinten rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VL (RXBUF_UCHAR(16))
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VL_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VL_TYPE unsigned char
|
||||
// Status of the front left VDC channel / Status des VDC Kanals vorne links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VR (RXBUF_UCHAR(17))
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VR_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VR_TYPE unsigned char
|
||||
// Status of the VDC channel in the front right / Status des VDC Kanals vorne rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HL (RXBUF_UCHAR(18))
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HL_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HL_TYPE unsigned char
|
||||
// Status of the VDC channel in the back left / Status des VDC Kanals hinten links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HR (RXBUF_UCHAR(19))
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HR_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HR_TYPE unsigned char
|
||||
// Status of the VDC channel in the back right / Status des VDC Kanals hinten rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_KLEMMEN (RXBUF_UCHAR(20))
|
||||
#define I3_RES_SAS_STAT_KLEMMEN_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_KLEMMEN_TYPE unsigned char
|
||||
// Internal status of terminal KL15 0 = KL15 OFF 1 = KL15 ON / Interner Status der Klemme KL15 0 = KL15 AUS 1 =
|
||||
// KL15 AN
|
||||
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VL_WERT (RXBUF_UINT(21)*0.0156f-511.984)
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VL_WERT_UNIT 'rad/s'
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VL_WERT_TYPE float
|
||||
// Front left wheel speed (from FlexRay) / Radgeschwindigkeit vorne links (von FlexRay)
|
||||
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VR_WERT (RXBUF_UINT(23)*0.0156f-511.984)
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VR_WERT_UNIT 'rad/s'
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VR_WERT_TYPE float
|
||||
// Wheel speed front right (from FlexRay) / Radgeschwindigkeit vorne rechts (von FlexRay)
|
||||
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HL_WERT (RXBUF_UINT(25)*0.0156f-511.984)
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HL_WERT_UNIT 'rad/s'
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HL_WERT_TYPE float
|
||||
// Rear left wheel speed (from FlexRay) / Radgeschwindigkeit hinten links (von FlexRay)
|
||||
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HR_WERT (RXBUF_UINT(27)*0.0156f-511.984)
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HR_WERT_UNIT 'rad/s'
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HR_WERT_TYPE float
|
||||
// Wheel speed rear right (from FlexRay) / Radgeschwindigkeit hinten rechts (von FlexRay)
|
||||
|
||||
#define I3_PID_SAS_VDC0_LESEN_0XD817 0xD817
|
||||
// Reading out the current status of each VDC0 valve (status, actual current, target current) and environmental
|
||||
// data (terminal, wheel speeds, ¿). / Auslesen des aktuellen Status jedes VDC0-Ventils (Status, Ist-Strom,
|
||||
// Soll-Strom) und Umgebungsdaten (Klemme, Radgeschwindigkeiten,¿).
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VL_WERT_0XD817 (RXBUF_UINT(0))
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VL_WERT_0XD817_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VL_WERT_0XD817_TYPE unsigned short
|
||||
// Target current of the VDC channel in the front left / Sollstrom des VDC Kanals vorne links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VR_WERT_0XD817 (RXBUF_UINT(2))
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VR_WERT_0XD817_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_VR_WERT_0XD817_TYPE unsigned short
|
||||
// Target current of the VDC channel in the front right / Sollstrom des VDC Kanals vorne rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HL_WERT_0XD817 (RXBUF_UINT(4))
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HL_WERT_0XD817_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HL_WERT_0XD817_TYPE unsigned short
|
||||
// Target current of the VDC channel at the rear left / Sollstrom des VDC Kanals hinten links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HR_WERT_0XD817 (RXBUF_UINT(6))
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HR_WERT_0XD817_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_SOLLSTROM_HR_WERT_0XD817_TYPE unsigned short
|
||||
// Set current of the VDC channel at the rear right / Sollstrom des VDC Kanals hinten rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VL_WERT_0XD817 (RXBUF_UINT(8))
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VL_WERT_0XD817_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VL_WERT_0XD817_TYPE unsigned short
|
||||
// Actual current of the VDC channel front left / Iststrom des VDC Kanals vorne links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VR_WERT_0XD817 (RXBUF_UINT(10))
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VR_WERT_0XD817_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_VR_WERT_0XD817_TYPE unsigned short
|
||||
// Actual current of the VDC channel in the front right / Iststrom des VDC Kanals vorne rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HL_WERT_0XD817 (RXBUF_UINT(12))
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HL_WERT_0XD817_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HL_WERT_0XD817_TYPE unsigned short
|
||||
// Actual current of the VDC channel at the rear left / Iststrom des VDC Kanals hinten links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HR_WERT_0XD817 (RXBUF_UINT(14))
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HR_WERT_0XD817_UNIT 'mA'
|
||||
#define I3_RES_SAS_STAT_VDC_ISTSTROM_HR_WERT_0XD817_TYPE unsigned short
|
||||
// Actual current of the VDC channel at the rear right / Iststrom des VDC Kanals hinten rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VL_0XD817 (RXBUF_UCHAR(16))
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VL_0XD817_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VL_0XD817_TYPE unsigned char
|
||||
// Status of the front left VDC channel / Status des VDC Kanals vorne links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VR_0XD817 (RXBUF_UCHAR(17))
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VR_0XD817_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_VR_0XD817_TYPE unsigned char
|
||||
// Status of the VDC channel in the front right / Status des VDC Kanals vorne rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HL_0XD817 (RXBUF_UCHAR(18))
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HL_0XD817_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HL_0XD817_TYPE unsigned char
|
||||
// Status of the VDC channel in the back left / Status des VDC Kanals hinten links
|
||||
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HR_0XD817 (RXBUF_UCHAR(19))
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HR_0XD817_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_VDC_STATUS_HR_0XD817_TYPE unsigned char
|
||||
// Status of the VDC channel in the back right / Status des VDC Kanals hinten rechts
|
||||
|
||||
#define I3_RES_SAS_STAT_KLEMMEN_0XD817 (RXBUF_UCHAR(20))
|
||||
#define I3_RES_SAS_STAT_KLEMMEN_0XD817_UNIT '0-n'
|
||||
#define I3_RES_SAS_STAT_KLEMMEN_0XD817_TYPE unsigned char
|
||||
// Internal status of terminal KL15 0 = KL15 OFF 1 = KL15 ON / Interner Status der Klemme KL15 0 = KL15 AUS 1 =
|
||||
// KL15 AN
|
||||
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VL_WERT_0XD817 (RXBUF_UINT(21)*0.0156f-511.984)
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VL_WERT_0XD817_UNIT 'rad/s'
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VL_WERT_0XD817_TYPE float
|
||||
// Front left wheel speed (from FlexRay) / Radgeschwindigkeit vorne links (von FlexRay)
|
||||
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VR_WERT_0XD817 (RXBUF_UINT(23)*0.0156f-511.984)
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VR_WERT_0XD817_UNIT 'rad/s'
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_VR_WERT_0XD817_TYPE float
|
||||
// Wheel speed front right (from FlexRay) / Radgeschwindigkeit vorne rechts (von FlexRay)
|
||||
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HL_WERT_0XD817 (RXBUF_UINT(25)*0.0156f-511.984)
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HL_WERT_0XD817_UNIT 'rad/s'
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HL_WERT_0XD817_TYPE float
|
||||
// Rear left wheel speed (from FlexRay) / Radgeschwindigkeit hinten links (von FlexRay)
|
||||
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HR_WERT_0XD817 (RXBUF_UINT(27)*0.0156f-511.984)
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HR_WERT_0XD817_UNIT 'rad/s'
|
||||
#define I3_RES_SAS_STAT_WHL_SPD_HR_WERT_0XD817_TYPE float
|
||||
// Wheel speed rear right (from FlexRay) / Radgeschwindigkeit hinten rechts (von FlexRay)
|
||||
|
||||
#define I3_PID_SAS_STATUS_SWC_VERSIONEN_LESEN_ANZAHL_DATENSAETZE 0xDD33
|
||||
// - / -
|
||||
|
||||
#define I3_RES_SAS_STAT_INDEX_DATENSATZ_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_SAS_STAT_INDEX_DATENSATZ_WERT_TYPE unsigned short
|
||||
// - / -
|
||||
|
||||
#define I3_PID_SAS_READ_EXCEPTION_DATA 0x4001
|
||||
// Developer data for analyzing exceptions / Entwicklerdaten zur Analyse von Exceptions
|
||||
|
||||
// Can't yet generate code for STAT_EXCEPTION_DATA of type data[50] at offset 0. But we account for the 50 bytes
|
||||
// Developer data for analyzing exceptions / Entwicklerdaten zur Analyse von Exceptions
|
||||
|
||||
#define I3_PID_SAS_CLEAR_EXCEPTION_DATA 0xF000
|
||||
// Deletion of the additional data to support the debugging of occurring exceptions / Löschen der zusätzlichen
|
||||
// Daten zur Unterstützung des Debuggens auftretender Exceptions
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/sas_i1.json: SAS 22: Optional equipment system
|
||||
// This generated code makes it easier to process CANBUS messages from the SAS ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_SAS_TX, I3_ECU_SAS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SAS_LERNDATEN_RUECKSETZEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xABC9
|
||||
//{ I3_ECU_SAS_TX, I3_ECU_SAS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SAS_VDC0_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD817
|
||||
//{ I3_ECU_SAS_TX, I3_ECU_SAS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SAS_VDC0_LESEN_0XD817, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD817
|
||||
//{ I3_ECU_SAS_TX, I3_ECU_SAS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SAS_STATUS_SWC_VERSIONEN_LESEN_ANZAHL_DATENSAETZE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD33
|
||||
//{ I3_ECU_SAS_TX, I3_ECU_SAS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SAS_READ_EXCEPTION_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x4001
|
||||
//{ I3_ECU_SAS_TX, I3_ECU_SAS_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SAS_CLEAR_EXCEPTION_DATA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF000
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,134 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/sme_i1.json: SME 07: Battery management electronics
|
||||
// This generated code makes it easier to process CANBUS messages from the SME ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ALTERUNG_INNENWIDERSTAND_TS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6334
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ALTERUNG_KAPAZITAET_TS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6335
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME__ST_SYM_MODUS, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6516
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME__UEBERLAST_ZAHELER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x651D
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME__STATUS_UEBERNAHME_KAPATEST_NV, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x6526
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ISOLATIONSWIDERSTAND_KOMMUNIKATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAD5E
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ISOLATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAD61
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_KAPAZITAET_BESTIMMUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAD66
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HEIZUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAD6A
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SYMMETRIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAD6B
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HEIZUNG_FUNKTION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xAD73
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_RB_SOC_REKALIBRIERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD4C5
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SOC_GUETE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD4C7
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_SOC_GUETE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD4C8
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ANZAHL_OCV_SOC_REKAL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD4C9
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ANZAHL_LADEENDE_REKAL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD4CA
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_RB_SOC_VOLLADEENDE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD4CB
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_KUEHLDAUER_HVB, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD4CC
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_LADUNGSVERLUST_ZELLE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD67F
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_STATUS_MIN_KAPAZITAET_MOD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD681
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_RB_ISO_MESS_TRG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6C7
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_RB_ISO_MESS_STD_IO_NIO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6C8
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_RB_ISO_MESS_TRG_IO_NIO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6C9
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ISODIAG_INPUT_ISTWERTE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6CA
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ISO_ERR_STD_FZ1_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6CB
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_RB_SOH_KAPATEST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6CC
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_REKU_VOLTAGE_LIFT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6CD
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_RB_ALTERUNG_KAPA, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6CE
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_CSC_TEMPERATUREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6CF
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ISO_ERR_TRG_FZ1_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD6D1
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SCHUETZ_SCHALTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD60
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SCHUETZSCHALTUNGEN_ANZAHL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD63
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HVIL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD64
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_SPANNUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD66
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ANZAHL_KUEHLANFORDERUNG_DRINGEND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD67
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_SPANNUNG_BERECHNET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD68
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_STROM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD69
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ISOLATIONSWIDERSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD6A
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_KUEHLKREISLAUF_TEMP, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD6C
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_AUFSTART_VERHINDERER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD72
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_CUMULATIVE_LADUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD73
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_CUMULATIVE_ENTLADUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD74
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_STATUS_KL30C_SPANNUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD76
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ALTERUNG_KAPAZITAET, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD7B
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_GW_INFO, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD7C
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_STROMGRENZEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD7D
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SPANNUNGSGRENZEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD7E
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HVB_HISTORIE_ZYKLEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD8E
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ZEIT_TEMP_HISTOGRAMM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD90
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ZEIT_SOC_KLASSE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD91
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T1_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD94
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T2_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD95
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T3_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD96
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T4_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD97
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T5_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD98
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T6_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD99
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T7_1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDD9A
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_LADEZIELSPANNUNG_TAUSCH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDAB
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_SPANNUNG_BATTERIE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDB4
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ALTERUNG_INNENWIDERSTAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDB6
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ANZEIGE_SOC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDBC
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SERVICE_DISCONNECT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDBD
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_VORLADUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDBE
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ZELLSPANNUNGEN_MIN_MAX, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDBF
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_TEMPERATUREN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDC0
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ALTERUNG_PARAMETER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDC2
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HISTO_SYM_DAUER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDC6
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HISTO_SYM_ZELLANZAHL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDC7
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SYM_DELTASOC, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDC8
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_MAX_SYM_DAUER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDC9
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SERIENNUMMER_ECU, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDCA
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SOC_GRENZEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDCB
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_DIFFERENZ_SPANNUNGEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDCF
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ALTERUNG_KAPAZITAET_DEGRADATION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDE8
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ALTERUNG_KAPAZITAET_HISTOGRAMM_SOC_HUB, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDE9
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_RINGPUFFER_LADEVORGAENGE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDEB
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_PROG_LADEZEIT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDEC
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_SPANNUNG_QUER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDDEF
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ALPHA_INITIAL_ALTERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDE37
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_BETRIEBSSTUNDEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF60
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_COOL_DOWN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF62
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_KLEMMENZYKLEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF63
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_KUEHLDAUER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF64
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_TEMP_SPREIZUNG_SYSTEM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF65
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_TEMP_KUEHLMITTEL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF66
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_LADUNG_KUEHLUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF67
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T1_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF68
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T4_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF69
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T3_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF6A
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T5_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF6B
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T2_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF6C
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T7_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF6D
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HV_BATT_HIST_SOC_T6_2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF6E
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_ERR_LIM_STROM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF6F
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_EFF_STROM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF70
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_PROJEKT_PARAMETER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF71
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_KURZSCHLUESSE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF72
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HEIZUNG_VERBAUT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF73
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_VOKO_HEIZ_DAUER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF74
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_LADE_KOND_HEIZ_DAUER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF75
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_VOKO_KUEHL_DAUER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF76
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_LADE_DAUER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF77
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_SOC_WARN_GRENZEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF81
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ID_SBOX, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF83
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SOC_HISTORIE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF86
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_KL30C, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF89
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_EFF_STROM_TMIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF8A
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_EFF_STROM_TLOW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF8B
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_EFF_STROM_TMID, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF8C
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_EFF_STROM_THIGH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF8D
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_EFF_STROM_TMAX, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF8E
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_ERR_LIM_STROM_TMIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF8F
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_ERR_LIM_STROM_TLOW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF90
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_ERR_LIM_STROM_THIGH, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF91
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_ERR_LIM_STROM_TMAX, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF92
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_LADEZEIT_ADAPT_KENNFELD_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF9C
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_VERH_VOLLADE_LADEVORG_LESEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDF9E
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ZUSTAND_SPEICHER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFA0
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_ERR_LIM_SPANNUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFA1
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HIS_SOC_MAX_MIN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFAE
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_STATUS_HV_SPEICHER_ID, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFE1
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_SYMMETRIERBAND, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDFE2
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_GW_INFO_SCHNELLLADEN, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE50D
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_CODIERVARIABLEN_HV_SPEICHER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE540
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_ANZAHL_DEFEKTE_SICHERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE5F1
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_HVOFF_VOLTAGES, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE5F2
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_RB_SOH_KAPATEST_ERW, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE5F3
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_CPI_ANALYSE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE5F4
|
||||
//{ I3_ECU_SME_TX, I3_ECU_SME_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_SME_KAPAZITAETSTEST_ASYMMETRIE_POTENTIAL, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xE5FA
|
|
@ -1,545 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/zbe6.json: ZBE 67: iDrive controller
|
||||
// This generated code makes it easier to process CANBUS messages from the ZBE ecu in a BMW i3
|
||||
//
|
||||
|
||||
case I3_PID_ZBE_PROGRAMMING_COUNTER: { // 0x2502
|
||||
if (datalen < 4) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_PROGRAMMING_COUNTER", 4);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_RESERVE_WERT = (RXBUF_UCHAR(0));
|
||||
// Reserve. Constant = 0x00 / Reserve. Konstante = 0x00
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "ZBE", "PROGRAMMING_COUNTER", "STAT_RESERVE_WERT", STAT_RESERVE_WERT, "");
|
||||
|
||||
unsigned char STAT_PROG_ZAEHLER_STATUS = (RXBUF_UCHAR(1));
|
||||
// ProgrammingCounterStatus / ProgrammingCounterStatus
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "ZBE", "PROGRAMMING_COUNTER", "STAT_PROG_ZAEHLER_STATUS", STAT_PROG_ZAEHLER_STATUS, "\"0-n\"");
|
||||
|
||||
unsigned short STAT_PROG_ZAEHLER_WERT = (RXBUF_UINT(2));
|
||||
// ProgrammingCounter / ProgrammingCounter
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "ZBE", "PROGRAMMING_COUNTER", "STAT_PROG_ZAEHLER_WERT", STAT_PROG_ZAEHLER_WERT, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_PROGRAMMING_COUNTER_MAX_VALUE: { // 0x2503
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_PROGRAMMING_COUNTER_MAX_VALUE", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_PROG_MAX_WERT = (RXBUF_UINT(0));
|
||||
// maximum number of programming processes / maximalen Anzahl von Programmiervorgängen
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "ZBE", "PROGRAMMING_COUNTER_MAX_VALUE", "STAT_PROG_MAX_WERT", STAT_PROG_MAX_WERT, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_FLASH_TIMING_PARAMETER: { // 0x2504
|
||||
if (datalen < 12) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_FLASH_TIMING_PARAMETER", 12);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_ERASE_MEMORY_TIME_WERT = (RXBUF_UINT(0));
|
||||
// EraseMemoryTime, maximum SWE deletion time with process control in the control unit. / EraseMemoryTime,
|
||||
// maximale SWE-Löschzeit mit Ablaufkontrolle im Steuergerät.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "ZBE", "FLASH_TIMING_PARAMETER", "STAT_ERASE_MEMORY_TIME_WERT", STAT_ERASE_MEMORY_TIME_WERT, "\"s\"");
|
||||
|
||||
unsigned short STAT_CHECK_MEMORY_TIME_WERT = (RXBUF_UINT(2));
|
||||
// CheckMemoryTime (e.g. signature check), maximum memory check time with process control in the control unit. /
|
||||
// CheckMemoryTime (Bsp.: Signaturprüfung), maximale Speicherprüfzeit mit Ablaufkontrolle im Steuergerät.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "ZBE", "FLASH_TIMING_PARAMETER", "STAT_CHECK_MEMORY_TIME_WERT", STAT_CHECK_MEMORY_TIME_WERT, "\"s\"");
|
||||
|
||||
unsigned short STAT_BOOTLOADER_INSTALLATION_TIME_WERT = (RXBUF_UINT(4));
|
||||
// BootloaderInstallationTime The time that is required after the reset so that the auxiliary bootloader is
|
||||
// started, the bootloader is deleted, the new bootloader is copied, its signature is checked and the new
|
||||
// bootloader is started until it can be diagnosed again. This information is mandatory for all control units,
|
||||
// even if the control unit has not planned a bootloader update. A value of 0x0000 is prohibited. /
|
||||
// BootloaderInstallationTime Die Zeit, die nach dem Reset benötigt wird, damit der Hilfsbootloader gestartet
|
||||
// wird, den Bootloader löscht, den neuen Bootloader kopiert, dessen Signatur prüf und der neue Bootloader
|
||||
// gestartet wird bis er wieder diagnosefähig ist. Angabe ist verpflichtend für alle Steuergeräte, auch wenn das
|
||||
// Steuergerät keinen Bootloader Update geplant hat. Ein Wert von 0x0000 ist verboten.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "ZBE", "FLASH_TIMING_PARAMETER", "STAT_BOOTLOADER_INSTALLATION_TIME_WERT", STAT_BOOTLOADER_INSTALLATION_TIME_WERT, "\"s\"");
|
||||
|
||||
unsigned short STAT_AUTHENTICATION_TIME_WERT = (RXBUF_UINT(6));
|
||||
// AuthenticationTime, the maximum time that the control device needs to check the authentication (sendKey) with
|
||||
// flow control in the control device. / AuthenticationTime, die maximale Zeit, die das Steuergerät zur Prüfung
|
||||
// der Authentisierung (sendKey) benötigt mit Ablaufkontrolle im Steuergerät.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "ZBE", "FLASH_TIMING_PARAMETER", "STAT_AUTHENTICATION_TIME_WERT", STAT_AUTHENTICATION_TIME_WERT, "\"s\"");
|
||||
|
||||
unsigned short STAT_RESET_TIME_WERT = (RXBUF_UINT(8));
|
||||
// ResetTime The time refers to the transition from the ApplicationExtendedSession to the ProgrammingSession or
|
||||
// to the transition from the ProgrammingSession to the DefaultSession. The maximum value is to be output. After
|
||||
// the reset time has elapsed, the control unit can be addressed by diagnosis. / ResetTime Die Zeitangabe bezieht
|
||||
// sich auf den Übergang von der ApplicationExtendedSesssion in die ProgrammingSession bzw. bei Übergang von der
|
||||
// ProgrammingSession in die DefaultSession. Es ist der Maximalwert auszugeben. Nach Ablauf der ResetTime ist das
|
||||
// Steuergerät durch Diagnose ansprechbar.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "ZBE", "FLASH_TIMING_PARAMETER", "STAT_RESET_TIME_WERT", STAT_RESET_TIME_WERT, "\"s\"");
|
||||
|
||||
unsigned short STAT_TRANSFER_DATA_TIME_WERT = (RXBUF_UINT(10));
|
||||
// TransferDataTime The specification has to refer to a TransferData with a maximum block length to the time span
|
||||
// from the complete reception of the data in the control unit via the possibly necessary decompression and the
|
||||
// complete storage in the non-volatile memory up to and including the sending of the positive response. /
|
||||
// TransferDataTime Die Angabe hat sich zu beziehen auf einen TransferData mit maximaler Blocklänge auf die
|
||||
// Zeitspanne vom vollständigen Empfang der Daten im Steuergerät über das ggf. erforderliche Dekomprimieren und
|
||||
// dem vollständigen Speichern im nichtflüchtigen Speicher bis einschließlich dem Senden der positiven Response.
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "ZBE", "FLASH_TIMING_PARAMETER", "STAT_TRANSFER_DATA_TIME_WERT", STAT_TRANSFER_DATA_TIME_WERT, "\"s\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_MILE_KM_EEPROM: { // 0x2540
|
||||
if (datalen < 3) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_MILE_KM_EEPROM", 3);
|
||||
break;
|
||||
}
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_VARIANTE_ZBE: { // 0xD137
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_VARIANTE_ZBE", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_ZBE_VARIANTE_NR = (RXBUF_UCHAR(0));
|
||||
// Variant ZBE: 0 = standard variant 1 = Asian variant 2 = standard variant with touchpad 3 = Asian variant with
|
||||
// touchpad 255 = invalid value or ZBE not coded / Variante ZBE: 0 = Standardvariante 1 = Asiavariante 2 =
|
||||
// Standardvariante mit Touchpad 3 = Asiavariante mit Touchpad 255 = Ungültiger Wert oder ZBE nicht codiert
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "ZBE", "VARIANTE_ZBE", "STAT_ZBE_VARIANTE_NR", STAT_ZBE_VARIANTE_NR, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_SCHRITTE_ROTRAD: { // 0xD14E
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_SCHRITTE_ROTRAD", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned short STAT_REGISTER_ROTRAD_WERT = (RXBUF_UINT(0));
|
||||
// Output of the current value for the position of the rotating wheel. Value 0 if the encoder has not been
|
||||
// configured / Ausgabe vom aktuellen Wert für die Stellung des Rotationsrad. Wert 0, wenn Drehgeber nicht
|
||||
// konfiguriert wurde
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "ZBE", "SCHRITTE_ROTRAD", "STAT_REGISTER_ROTRAD_WERT", STAT_REGISTER_ROTRAD_WERT, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_TASTE1: { // 0xD213
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_TASTE1", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE1", "STAT_ANZAHL_DRUCK_WERT", STAT_ANZAHL_DRUCK_WERT, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE1", "STAT_ANZAHL_LANGDRUCK_WERT", STAT_ANZAHL_LANGDRUCK_WERT, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE1", "STAT_ANZAHL_HAENGER_WERT", STAT_ANZAHL_HAENGER_WERT, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_TASTE2: { // 0xD214
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_TASTE2", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD214 = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE2", "STAT_ANZAHL_DRUCK_WERT_0XD214", STAT_ANZAHL_DRUCK_WERT_0XD214, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD214 = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE2", "STAT_ANZAHL_LANGDRUCK_WERT_0XD214", STAT_ANZAHL_LANGDRUCK_WERT_0XD214, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD214 = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE2", "STAT_ANZAHL_HAENGER_WERT_0XD214", STAT_ANZAHL_HAENGER_WERT_0XD214, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_TASTE3: { // 0xD215
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_TASTE3", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD215 = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE3", "STAT_ANZAHL_DRUCK_WERT_0XD215", STAT_ANZAHL_DRUCK_WERT_0XD215, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD215 = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE3", "STAT_ANZAHL_LANGDRUCK_WERT_0XD215", STAT_ANZAHL_LANGDRUCK_WERT_0XD215, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD215 = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE3", "STAT_ANZAHL_HAENGER_WERT_0XD215", STAT_ANZAHL_HAENGER_WERT_0XD215, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_TASTE4: { // 0xD216
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_TASTE4", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD216 = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE4", "STAT_ANZAHL_DRUCK_WERT_0XD216", STAT_ANZAHL_DRUCK_WERT_0XD216, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD216 = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE4", "STAT_ANZAHL_LANGDRUCK_WERT_0XD216", STAT_ANZAHL_LANGDRUCK_WERT_0XD216, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD216 = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE4", "STAT_ANZAHL_HAENGER_WERT_0XD216", STAT_ANZAHL_HAENGER_WERT_0XD216, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_TASTE5: { // 0xD217
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_TASTE5", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD217 = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE5", "STAT_ANZAHL_DRUCK_WERT_0XD217", STAT_ANZAHL_DRUCK_WERT_0XD217, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD217 = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE5", "STAT_ANZAHL_LANGDRUCK_WERT_0XD217", STAT_ANZAHL_LANGDRUCK_WERT_0XD217, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD217 = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE5", "STAT_ANZAHL_HAENGER_WERT_0XD217", STAT_ANZAHL_HAENGER_WERT_0XD217, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_TASTE6: { // 0xD218
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_TASTE6", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD218 = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE6", "STAT_ANZAHL_DRUCK_WERT_0XD218", STAT_ANZAHL_DRUCK_WERT_0XD218, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD218 = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE6", "STAT_ANZAHL_LANGDRUCK_WERT_0XD218", STAT_ANZAHL_LANGDRUCK_WERT_0XD218, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD218 = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE6", "STAT_ANZAHL_HAENGER_WERT_0XD218", STAT_ANZAHL_HAENGER_WERT_0XD218, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_TASTE7: { // 0xD219
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_TASTE7", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD219 = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE7", "STAT_ANZAHL_DRUCK_WERT_0XD219", STAT_ANZAHL_DRUCK_WERT_0XD219, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD219 = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE7", "STAT_ANZAHL_LANGDRUCK_WERT_0XD219", STAT_ANZAHL_LANGDRUCK_WERT_0XD219, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD219 = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE7", "STAT_ANZAHL_HAENGER_WERT_0XD219", STAT_ANZAHL_HAENGER_WERT_0XD219, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_TASTE8: { // 0xD21A
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_TASTE8", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD21A = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE8", "STAT_ANZAHL_DRUCK_WERT_0XD21A", STAT_ANZAHL_DRUCK_WERT_0XD21A, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD21A = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE8", "STAT_ANZAHL_LANGDRUCK_WERT_0XD21A", STAT_ANZAHL_LANGDRUCK_WERT_0XD21A, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD21A = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_TASTE8", "STAT_ANZAHL_HAENGER_WERT_0XD21A", STAT_ANZAHL_HAENGER_WERT_0XD21A, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_DREHSTELLER: { // 0xD21B
|
||||
if (datalen < 36) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_DREHSTELLER", 36);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_RASTEN_IM_UHRZEIGERSINN_WERT = (RXBUF_UINT32(0));
|
||||
// Number of notches in clockwise direction / Anzahl Rasten im Uhrzeigersinn
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER", "STAT_RASTEN_IM_UHRZEIGERSINN_WERT", STAT_RASTEN_IM_UHRZEIGERSINN_WERT, "");
|
||||
|
||||
unsigned long STAT_RASTEN_GEGEN_UHRZEIGERSINN_WERT = (RXBUF_UINT32(8));
|
||||
// Number of notches counterclockwise / Anzahl Rasten gegen Uhrzeigersinn
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER", "STAT_RASTEN_GEGEN_UHRZEIGERSINN_WERT", STAT_RASTEN_GEGEN_UHRZEIGERSINN_WERT, "");
|
||||
|
||||
unsigned long STAT_UNDERFLOW_WERT = (RXBUF_UINT32(16));
|
||||
// Number of underflows, stop on the left / Anzahl Underflow, Anschlag links
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER", "STAT_UNDERFLOW_WERT", STAT_UNDERFLOW_WERT, "");
|
||||
|
||||
unsigned long STAT_OVERFLOW_WERT = (RXBUF_UINT32(24));
|
||||
// Number of overflows, stop on the right / Anzahl Overflow, Anschlag rechts
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER", "STAT_OVERFLOW_WERT", STAT_OVERFLOW_WERT, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_DREHSTELLER_NORD: { // 0xD21C
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_DREHSTELLER_NORD", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD21C = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_NORD", "STAT_ANZAHL_DRUCK_WERT_0XD21C", STAT_ANZAHL_DRUCK_WERT_0XD21C, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD21C = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_NORD", "STAT_ANZAHL_LANGDRUCK_WERT_0XD21C", STAT_ANZAHL_LANGDRUCK_WERT_0XD21C, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD21C = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_NORD", "STAT_ANZAHL_HAENGER_WERT_0XD21C", STAT_ANZAHL_HAENGER_WERT_0XD21C, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_DREHSTELLER_OST: { // 0xD21D
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_DREHSTELLER_OST", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD21D = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_OST", "STAT_ANZAHL_DRUCK_WERT_0XD21D", STAT_ANZAHL_DRUCK_WERT_0XD21D, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD21D = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_OST", "STAT_ANZAHL_LANGDRUCK_WERT_0XD21D", STAT_ANZAHL_LANGDRUCK_WERT_0XD21D, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD21D = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_OST", "STAT_ANZAHL_HAENGER_WERT_0XD21D", STAT_ANZAHL_HAENGER_WERT_0XD21D, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_DREHSTELLER_SUED: { // 0xD21E
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_DREHSTELLER_SUED", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD21E = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_SUED", "STAT_ANZAHL_DRUCK_WERT_0XD21E", STAT_ANZAHL_DRUCK_WERT_0XD21E, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD21E = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_SUED", "STAT_ANZAHL_LANGDRUCK_WERT_0XD21E", STAT_ANZAHL_LANGDRUCK_WERT_0XD21E, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD21E = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_SUED", "STAT_ANZAHL_HAENGER_WERT_0XD21E", STAT_ANZAHL_HAENGER_WERT_0XD21E, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_DREHSTELLER_WEST: { // 0xD21F
|
||||
if (datalen < 28) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_DREHSTELLER_WEST", 28);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned long STAT_ANZAHL_DRUCK_WERT_0XD21F = (RXBUF_UINT32(0));
|
||||
// Number of prints / Anzahl Druck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_WEST", "STAT_ANZAHL_DRUCK_WERT_0XD21F", STAT_ANZAHL_DRUCK_WERT_0XD21F, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_LANGDRUCK_WERT_0XD21F = (RXBUF_UINT32(8));
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_WEST", "STAT_ANZAHL_LANGDRUCK_WERT_0XD21F", STAT_ANZAHL_LANGDRUCK_WERT_0XD21F, "");
|
||||
|
||||
unsigned long STAT_ANZAHL_HAENGER_WERT_0XD21F = (RXBUF_UINT32(16));
|
||||
// Number of hangers / Anzahl Hänger
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "ZBE", "LOGGING_DREHSTELLER_WEST", "STAT_ANZAHL_HAENGER_WERT_0XD21F", STAT_ANZAHL_HAENGER_WERT_0XD21F, "");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_LOGGING_VERBAU: { // 0xD228
|
||||
if (datalen < 30) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_LOGGING_VERBAU", 30);
|
||||
break;
|
||||
}
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_TOUCHPAD_BERUEHRUNG: { // 0xD60D
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_TOUCHPAD_BERUEHRUNG", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_TOUCHPAD_BERUEHRUNG = (RXBUF_UCHAR(0));
|
||||
// Touch detection Touchpad: 0x00 = no touch detected 0x01 = touch detected / Berührungserkennung Touchpad: 0x00
|
||||
// = keine Berührung erkannt 0x01 = Berührung erkannt
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "ZBE", "TOUCHPAD_BERUEHRUNG", "STAT_TOUCHPAD_BERUEHRUNG", STAT_TOUCHPAD_BERUEHRUNG, "\"0/1\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_TOUCHPAD_ANNAEHERUNG: { // 0xD68D
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_TOUCHPAD_ANNAEHERUNG", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_TOUCHPAD_ANNAEHERUNG = (RXBUF_UCHAR(0));
|
||||
// Proximity detection touchpad: 0x00 = no proximity detected 0x01 = proximity detected / Annäherungsserkennung
|
||||
// Touchpad: 0x00 = keine Annäherung erkannt 0x01 = Annäherung erkannt
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "ZBE", "TOUCHPAD_ANNAEHERUNG", "STAT_TOUCHPAD_ANNAEHERUNG", STAT_TOUCHPAD_ANNAEHERUNG, "\"0/1\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_SPANNUNG_KLEMME_30B_WERT: { // 0xDAD9
|
||||
if (datalen < 2) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_SPANNUNG_KLEMME_30B_WERT", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
float STAT_SPANNUNG_KLEMME_30B_WERT = (RXBUF_UINT(0)/10.0f);
|
||||
// Voltage value on the control unit at terminal 30B (accurate to one decimal place) / Spannungswert am
|
||||
// Steuergerät an Klemme 30B (auf eine Nachkommastelle genau)
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%.4f%s\n", "ZBE", "SPANNUNG_KLEMME_30B_WERT", "STAT_SPANNUNG_KLEMME_30B_WERT", STAT_SPANNUNG_KLEMME_30B_WERT, "\"V\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I3_PID_ZBE_ACTIVE_DIAGNOSTIC_SESSION: { // 0xF186
|
||||
if (datalen < 1) {
|
||||
ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_ZBE_ACTIVE_DIAGNOSTIC_SESSION", 1);
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned char STAT_ACTIVE_DIAGNOSTIC_SESSION = (RXBUF_UCHAR(0));
|
||||
// activeDiagnosticSession / activeDiagnosticSession
|
||||
ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "ZBE", "ACTIVE_DIAGNOSTIC_SESSION", "STAT_ACTIVE_DIAGNOSTIC_SESSION", STAT_ACTIVE_DIAGNOSTIC_SESSION, "\"0-n\"");
|
||||
|
||||
// ========== Add your processing here ==========
|
||||
hexdump(rxbuf, type, pid);
|
||||
|
||||
break;
|
||||
}
|
|
@ -1,539 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/zbe6.json: ZBE 67: iDrive controller
|
||||
// This generated code makes it easier to process CANBUS messages from the ZBE ecu in a BMW i3
|
||||
//
|
||||
|
||||
#define I3_ECU_ZBE_TX 0x06F167
|
||||
#define I3_ECU_ZBE_RX 0x0667F1
|
||||
|
||||
#define I3_PID_ZBE_PROGRAMMING_COUNTER 0x2502
|
||||
// Programming counter / Programming-Counter
|
||||
|
||||
#define I3_RES_ZBE_STAT_RESERVE_WERT (RXBUF_UCHAR(0))
|
||||
#define I3_RES_ZBE_STAT_RESERVE_WERT_TYPE unsigned char
|
||||
// Reserve. Constant = 0x00 / Reserve. Konstante = 0x00
|
||||
|
||||
#define I3_RES_ZBE_STAT_PROG_ZAEHLER_STATUS (RXBUF_UCHAR(1))
|
||||
#define I3_RES_ZBE_STAT_PROG_ZAEHLER_STATUS_UNIT '0-n'
|
||||
#define I3_RES_ZBE_STAT_PROG_ZAEHLER_STATUS_TYPE unsigned char
|
||||
// ProgrammingCounterStatus / ProgrammingCounterStatus
|
||||
|
||||
#define I3_RES_ZBE_STAT_PROG_ZAEHLER_WERT (RXBUF_UINT(2))
|
||||
#define I3_RES_ZBE_STAT_PROG_ZAEHLER_WERT_TYPE unsigned short
|
||||
// ProgrammingCounter / ProgrammingCounter
|
||||
|
||||
#define I3_PID_ZBE_PROGRAMMING_COUNTER_MAX_VALUE 0x2503
|
||||
// maximum number of programming processes / maximalen Anzahl von Programmiervorgängen
|
||||
|
||||
#define I3_RES_ZBE_STAT_PROG_MAX_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_ZBE_STAT_PROG_MAX_WERT_TYPE unsigned short
|
||||
// maximum number of programming processes / maximalen Anzahl von Programmiervorgängen
|
||||
|
||||
#define I3_PID_ZBE_FLASH_TIMING_PARAMETER 0x2504
|
||||
// Programming specific timing parameters / Programmierspezifische Timing Parameter
|
||||
|
||||
#define I3_RES_ZBE_STAT_ERASE_MEMORY_TIME_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_ZBE_STAT_ERASE_MEMORY_TIME_WERT_UNIT 's'
|
||||
#define I3_RES_ZBE_STAT_ERASE_MEMORY_TIME_WERT_TYPE unsigned short
|
||||
// EraseMemoryTime, maximum SWE deletion time with process control in the control unit. / EraseMemoryTime,
|
||||
// maximale SWE-Löschzeit mit Ablaufkontrolle im Steuergerät.
|
||||
|
||||
#define I3_RES_ZBE_STAT_CHECK_MEMORY_TIME_WERT (RXBUF_UINT(2))
|
||||
#define I3_RES_ZBE_STAT_CHECK_MEMORY_TIME_WERT_UNIT 's'
|
||||
#define I3_RES_ZBE_STAT_CHECK_MEMORY_TIME_WERT_TYPE unsigned short
|
||||
// CheckMemoryTime (e.g. signature check), maximum memory check time with process control in the control unit. /
|
||||
// CheckMemoryTime (Bsp.: Signaturprüfung), maximale Speicherprüfzeit mit Ablaufkontrolle im Steuergerät.
|
||||
|
||||
#define I3_RES_ZBE_STAT_BOOTLOADER_INSTALLATION_TIME_WERT (RXBUF_UINT(4))
|
||||
#define I3_RES_ZBE_STAT_BOOTLOADER_INSTALLATION_TIME_WERT_UNIT 's'
|
||||
#define I3_RES_ZBE_STAT_BOOTLOADER_INSTALLATION_TIME_WERT_TYPE unsigned short
|
||||
// BootloaderInstallationTime The time that is required after the reset so that the auxiliary bootloader is
|
||||
// started, the bootloader is deleted, the new bootloader is copied, its signature is checked and the new
|
||||
// bootloader is started until it can be diagnosed again. This information is mandatory for all control units,
|
||||
// even if the control unit has not planned a bootloader update. A value of 0x0000 is prohibited. /
|
||||
// BootloaderInstallationTime Die Zeit, die nach dem Reset benötigt wird, damit der Hilfsbootloader gestartet
|
||||
// wird, den Bootloader löscht, den neuen Bootloader kopiert, dessen Signatur prüf und der neue Bootloader
|
||||
// gestartet wird bis er wieder diagnosefähig ist. Angabe ist verpflichtend für alle Steuergeräte, auch wenn das
|
||||
// Steuergerät keinen Bootloader Update geplant hat. Ein Wert von 0x0000 ist verboten.
|
||||
|
||||
#define I3_RES_ZBE_STAT_AUTHENTICATION_TIME_WERT (RXBUF_UINT(6))
|
||||
#define I3_RES_ZBE_STAT_AUTHENTICATION_TIME_WERT_UNIT 's'
|
||||
#define I3_RES_ZBE_STAT_AUTHENTICATION_TIME_WERT_TYPE unsigned short
|
||||
// AuthenticationTime, the maximum time that the control device needs to check the authentication (sendKey) with
|
||||
// flow control in the control device. / AuthenticationTime, die maximale Zeit, die das Steuergerät zur Prüfung
|
||||
// der Authentisierung (sendKey) benötigt mit Ablaufkontrolle im Steuergerät.
|
||||
|
||||
#define I3_RES_ZBE_STAT_RESET_TIME_WERT (RXBUF_UINT(8))
|
||||
#define I3_RES_ZBE_STAT_RESET_TIME_WERT_UNIT 's'
|
||||
#define I3_RES_ZBE_STAT_RESET_TIME_WERT_TYPE unsigned short
|
||||
// ResetTime The time refers to the transition from the ApplicationExtendedSession to the ProgrammingSession or
|
||||
// to the transition from the ProgrammingSession to the DefaultSession. The maximum value is to be output. After
|
||||
// the reset time has elapsed, the control unit can be addressed by diagnosis. / ResetTime Die Zeitangabe bezieht
|
||||
// sich auf den Übergang von der ApplicationExtendedSesssion in die ProgrammingSession bzw. bei Übergang von der
|
||||
// ProgrammingSession in die DefaultSession. Es ist der Maximalwert auszugeben. Nach Ablauf der ResetTime ist das
|
||||
// Steuergerät durch Diagnose ansprechbar.
|
||||
|
||||
#define I3_RES_ZBE_STAT_TRANSFER_DATA_TIME_WERT (RXBUF_UINT(10))
|
||||
#define I3_RES_ZBE_STAT_TRANSFER_DATA_TIME_WERT_UNIT 's'
|
||||
#define I3_RES_ZBE_STAT_TRANSFER_DATA_TIME_WERT_TYPE unsigned short
|
||||
// TransferDataTime The specification has to refer to a TransferData with a maximum block length to the time span
|
||||
// from the complete reception of the data in the control unit via the possibly necessary decompression and the
|
||||
// complete storage in the non-volatile memory up to and including the sending of the positive response. /
|
||||
// TransferDataTime Die Angabe hat sich zu beziehen auf einen TransferData mit maximaler Blocklänge auf die
|
||||
// Zeitspanne vom vollständigen Empfang der Daten im Steuergerät über das ggf. erforderliche Dekomprimieren und
|
||||
// dem vollständigen Speichern im nichtflüchtigen Speicher bis einschließlich dem Senden der positiven Response.
|
||||
|
||||
#define I3_PID_ZBE_MILE_KM_EEPROM 0x2540
|
||||
// Mileage stored in the EEPROM. / Im EEPROM abgelegter Kilometerstand.
|
||||
|
||||
// Can't yet generate code for STAT_MILE_KM_EEPROM_DATA of type data[3] at offset 0. But we account for the 3 bytes
|
||||
// Mileage stored in the EEPROM. / Im EEPROM abgelegter Kilometerstand.
|
||||
|
||||
// Skipping STELLGLIED_POSITIONEN on 0xD134 which takes arguments
|
||||
|
||||
#define I3_PID_ZBE_VARIANTE_ZBE 0xD137
|
||||
// Variant ZBE: 0 = standard variant 1 = Asian variant 2 = standard variant with touchpad 3 = Asian variant with
|
||||
// touchpad 255 = invalid value or ZBE not coded / Variante ZBE: 0 = Standardvariante 1 = Asiavariante 2 =
|
||||
// Standardvariante mit Touchpad 3 = Asiavariante mit Touchpad 255 = Ungültiger Wert oder ZBE nicht codiert
|
||||
|
||||
#define I3_RES_ZBE_STAT_ZBE_VARIANTE_NR (RXBUF_UCHAR(0))
|
||||
#define I3_RES_ZBE_STAT_ZBE_VARIANTE_NR_UNIT '0-n'
|
||||
#define I3_RES_ZBE_STAT_ZBE_VARIANTE_NR_TYPE unsigned char
|
||||
// Variant ZBE: 0 = standard variant 1 = Asian variant 2 = standard variant with touchpad 3 = Asian variant with
|
||||
// touchpad 255 = invalid value or ZBE not coded / Variante ZBE: 0 = Standardvariante 1 = Asiavariante 2 =
|
||||
// Standardvariante mit Touchpad 3 = Asiavariante mit Touchpad 255 = Ungültiger Wert oder ZBE nicht codiert
|
||||
|
||||
// Skipping ZBE_TASTEN on 0xD14D which takes arguments
|
||||
|
||||
#define I3_PID_ZBE_SCHRITTE_ROTRAD 0xD14E
|
||||
// Output of the current value for the position of the rotating wheel. Value 0 if the encoder has not been
|
||||
// configured / Ausgabe vom aktuellen Wert für die Stellung des Rotationsrad. Wert 0, wenn Drehgeber nicht
|
||||
// konfiguriert wurde
|
||||
|
||||
#define I3_RES_ZBE_STAT_REGISTER_ROTRAD_WERT (RXBUF_UINT(0))
|
||||
#define I3_RES_ZBE_STAT_REGISTER_ROTRAD_WERT_TYPE unsigned short
|
||||
// Output of the current value for the position of the rotating wheel. Value 0 if the encoder has not been
|
||||
// configured / Ausgabe vom aktuellen Wert für die Stellung des Rotationsrad. Wert 0, wenn Drehgeber nicht
|
||||
// konfiguriert wurde
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_TASTE1 0xD213
|
||||
// Logging data of the keys. / Loggingdaten der Tasten.
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_TASTE2 0xD214
|
||||
// Logging data of the keys. / Loggingdaten der Tasten.
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD214 (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD214_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD214 of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD214 (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD214_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD214 of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD214 (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD214_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD214 of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD214 of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_TASTE3 0xD215
|
||||
// Logging data of the keys. / Loggingdaten der Tasten.
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD215 (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD215_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD215 of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD215 (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD215_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD215 of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD215 (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD215_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD215 of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD215 of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_TASTE4 0xD216
|
||||
// Logging data of the keys. / Loggingdaten der Tasten.
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD216 (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD216_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD216 of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD216 (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD216_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD216 of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD216 (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD216_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD216 of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD216 of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_TASTE5 0xD217
|
||||
// Logging data of the keys. / Loggingdaten der Tasten.
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD217 (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD217_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD217 of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD217 (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD217_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD217 of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD217 (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD217_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD217 of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD217 of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_TASTE6 0xD218
|
||||
// Logging data of the keys. / Loggingdaten der Tasten.
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD218 (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD218_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD218 of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD218 (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD218_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD218 of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD218 (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD218_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD218 of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD218 of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_TASTE7 0xD219
|
||||
// Logging data of the keys. / Loggingdaten der Tasten.
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD219 (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD219_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD219 of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD219 (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD219_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD219 of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD219 (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD219_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD219 of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD219 of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_TASTE8 0xD21A
|
||||
// Logging data of the keys. / Loggingdaten der Tasten.
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21A (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21A_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD21A of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21A (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21A_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD21A of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21A (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21A_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD21A of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD21A of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_DREHSTELLER 0xD21B
|
||||
// Logging of the rotary actuator (turning, tilting) / Logging des Drehstellers (Drehen, Kippen)
|
||||
|
||||
#define I3_RES_ZBE_STAT_RASTEN_IM_UHRZEIGERSINN_WERT (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_RASTEN_IM_UHRZEIGERSINN_WERT_TYPE unsigned long
|
||||
// Number of notches in clockwise direction / Anzahl Rasten im Uhrzeigersinn
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_IM_UHRZEIGERSINN_DATA of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of the last counterclockwise rotation / Relativzeit der letzten Drehung gegen den Uhrzeigersinn
|
||||
|
||||
#define I3_RES_ZBE_STAT_RASTEN_GEGEN_UHRZEIGERSINN_WERT (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_RASTEN_GEGEN_UHRZEIGERSINN_WERT_TYPE unsigned long
|
||||
// Number of notches counterclockwise / Anzahl Rasten gegen Uhrzeigersinn
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_GEGEN_UHRZEIGERSINN_DATA of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last counter-clockwise rotation / Relativzeit letzte Drehung gegen den Uhrzeigersinn
|
||||
|
||||
#define I3_RES_ZBE_STAT_UNDERFLOW_WERT (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_UNDERFLOW_WERT_TYPE unsigned long
|
||||
// Number of underflows, stop on the left / Anzahl Underflow, Anschlag links
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_UNDERFLOW_DATA of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last underflow / Relativzeit letzter Underflow
|
||||
|
||||
#define I3_RES_ZBE_STAT_OVERFLOW_WERT (RXBUF_UINT32(24))
|
||||
#define I3_RES_ZBE_STAT_OVERFLOW_WERT_TYPE unsigned long
|
||||
// Number of overflows, stop on the right / Anzahl Overflow, Anschlag rechts
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_OVERFLOW_DATA of type data[4] at offset 28. But we account for the 4 bytes
|
||||
// Relative time of last overflow / Relativzeit letzter Overflow
|
||||
|
||||
// Can't yet generate code for STAT_KM_DREH_DATA of type data[4] at offset 32. But we account for the 4 bytes
|
||||
// KM status of the last shooting / KM-Stand der letzten Drehaktion
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_DREHSTELLER_NORD 0xD21C
|
||||
// Logging the keys / Logging der Tasten
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21C (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21C_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD21C of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21C (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21C_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD21C of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21C (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21C_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD21C of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD21C of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_DREHSTELLER_OST 0xD21D
|
||||
// Logging the keys / Logging der Tasten
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21D (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21D_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD21D of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21D (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21D_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD21D of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21D (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21D_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD21D of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD21D of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_DREHSTELLER_SUED 0xD21E
|
||||
// Logging the keys / Logging der Tasten
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21E (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21E_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD21E of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21E (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21E_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD21E of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21E (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21E_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD21E of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD21E of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_DREHSTELLER_WEST 0xD21F
|
||||
// Logging the keys / Logging der Tasten
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21F (RXBUF_UINT32(0))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_DRUCK_WERT_0XD21F_TYPE unsigned long
|
||||
// Number of prints / Anzahl Druck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_DRUCK_DATA_0XD21F of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// Relative time of last print / Relativzeit letzter Druck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21F (RXBUF_UINT32(8))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_LANGDRUCK_WERT_0XD21F_TYPE unsigned long
|
||||
// Number of long presses / Anzahl Langdruck
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LANGDRUCK_DATA_0XD21F of type data[4] at offset 12. But we account for the 4 bytes
|
||||
// Relative time of the last long press / Relativzeit letzter Langdruck
|
||||
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21F (RXBUF_UINT32(16))
|
||||
#define I3_RES_ZBE_STAT_ANZAHL_HAENGER_WERT_0XD21F_TYPE unsigned long
|
||||
// Number of hangers / Anzahl Hänger
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_HAENGER_DATA_0XD21F of type data[4] at offset 20. But we account for the 4 bytes
|
||||
// Relative time of the last trailer / Relativzeit letzter Hänger
|
||||
|
||||
// Can't yet generate code for STAT_KM_DRUCK_DATA_0XD21F of type data[4] at offset 24. But we account for the 4 bytes
|
||||
// KM status last print, long print or hanger / KM-Stand letzter Druck, Langdruck oder Hänger
|
||||
|
||||
#define I3_PID_ZBE_LOGGING_VERBAU 0xD228
|
||||
// Read out when the component was installed / Auslesen, wann die Komponente verbaut wurde
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_VERBAU_DATA of type data[4] at offset 0. But we account for the 4 bytes
|
||||
// Time of first installation / Zeit des Erstverbau
|
||||
|
||||
// Can't yet generate code for STAT_KM_VERBAU_DATA of type data[4] at offset 4. But we account for the 4 bytes
|
||||
// KM stand during installation / KM-Stand beim Verbau
|
||||
|
||||
// Can't yet generate code for STAT_VIN_DATA of type data[7] at offset 8. But we account for the 7 bytes
|
||||
// VIN / VIN
|
||||
|
||||
// Can't yet generate code for STAT_RELATIVZEIT_LETZTVERBAU_DATA of type data[4] at offset 15. But we account for the 4 bytes
|
||||
// Relative time last installation / Relativzeit Letztverbau
|
||||
|
||||
// Can't yet generate code for STAT_KM_LETZTVERBAU_DATA of type data[4] at offset 19. But we account for the 4 bytes
|
||||
// KM stand last installation / KM-Stand Letztverbau
|
||||
|
||||
// Can't yet generate code for STAT_VIN_LETZTVERBAU_DATA of type data[7] at offset 23. But we account for the 7 bytes
|
||||
// Chassis number of the last installation / Fahrgestellnummer Letztverbau
|
||||
|
||||
// Skipping STEUERN_SIGNALMODE on 0xD598 which takes arguments
|
||||
|
||||
#define I3_PID_ZBE_TOUCHPAD_BERUEHRUNG 0xD60D
|
||||
// Touch detection Touchpad: 0x00 = no touch detected 0x01 = touch detected / Berührungserkennung Touchpad: 0x00
|
||||
// = keine Berührung erkannt 0x01 = Berührung erkannt
|
||||
|
||||
#define I3_RES_ZBE_STAT_TOUCHPAD_BERUEHRUNG (RXBUF_UCHAR(0))
|
||||
#define I3_RES_ZBE_STAT_TOUCHPAD_BERUEHRUNG_UNIT '0/1'
|
||||
#define I3_RES_ZBE_STAT_TOUCHPAD_BERUEHRUNG_TYPE unsigned char
|
||||
// Touch detection Touchpad: 0x00 = no touch detected 0x01 = touch detected / Berührungserkennung Touchpad: 0x00
|
||||
// = keine Berührung erkannt 0x01 = Berührung erkannt
|
||||
|
||||
// Skipping TOUCHPAD_AKTIVIERUNG on 0xD60E which takes arguments
|
||||
|
||||
#define I3_PID_ZBE_TOUCHPAD_ANNAEHERUNG 0xD68D
|
||||
// Proximity detection touchpad: 0x00 = no proximity detected 0x01 = proximity detected / Annäherungsserkennung
|
||||
// Touchpad: 0x00 = keine Annäherung erkannt 0x01 = Annäherung erkannt
|
||||
|
||||
#define I3_RES_ZBE_STAT_TOUCHPAD_ANNAEHERUNG (RXBUF_UCHAR(0))
|
||||
#define I3_RES_ZBE_STAT_TOUCHPAD_ANNAEHERUNG_UNIT '0/1'
|
||||
#define I3_RES_ZBE_STAT_TOUCHPAD_ANNAEHERUNG_TYPE unsigned char
|
||||
// Proximity detection touchpad: 0x00 = no proximity detected 0x01 = proximity detected / Annäherungsserkennung
|
||||
// Touchpad: 0x00 = keine Annäherung erkannt 0x01 = Annäherung erkannt
|
||||
|
||||
#define I3_PID_ZBE_SPANNUNG_KLEMME_30B_WERT 0xDAD9
|
||||
// Voltage value on the control unit at terminal 30B (accurate to one decimal place) / Spannungswert am
|
||||
// Steuergerät an Klemme 30B (auf eine Nachkommastelle genau)
|
||||
|
||||
#define I3_RES_ZBE_STAT_SPANNUNG_KLEMME_30B_WERT (RXBUF_UINT(0)/10.0f)
|
||||
#define I3_RES_ZBE_STAT_SPANNUNG_KLEMME_30B_WERT_UNIT 'V'
|
||||
#define I3_RES_ZBE_STAT_SPANNUNG_KLEMME_30B_WERT_TYPE float
|
||||
// Voltage value on the control unit at terminal 30B (accurate to one decimal place) / Spannungswert am
|
||||
// Steuergerät an Klemme 30B (auf eine Nachkommastelle genau)
|
||||
|
||||
#define I3_PID_ZBE_ACTIVE_DIAGNOSTIC_SESSION 0xF186
|
||||
// activeDiagnosticSession / activeDiagnosticSession
|
||||
|
||||
#define I3_RES_ZBE_STAT_ACTIVE_DIAGNOSTIC_SESSION (RXBUF_UCHAR(0))
|
||||
#define I3_RES_ZBE_STAT_ACTIVE_DIAGNOSTIC_SESSION_UNIT '0-n'
|
||||
#define I3_RES_ZBE_STAT_ACTIVE_DIAGNOSTIC_SESSION_TYPE unsigned char
|
||||
// activeDiagnosticSession / activeDiagnosticSession
|
|
@ -1,29 +0,0 @@
|
|||
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/zbe6.json: ZBE 67: iDrive controller
|
||||
// This generated code makes it easier to process CANBUS messages from the ZBE ecu in a BMW i3
|
||||
//
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_PROGRAMMING_COUNTER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x2502
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_PROGRAMMING_COUNTER_MAX_VALUE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x2503
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_FLASH_TIMING_PARAMETER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x2504
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_MILE_KM_EEPROM, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0x2540
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_VARIANTE_ZBE, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD137
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_SCHRITTE_ROTRAD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD14E
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_TASTE1, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD213
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_TASTE2, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD214
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_TASTE3, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD215
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_TASTE4, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD216
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_TASTE5, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD217
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_TASTE6, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD218
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_TASTE7, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD219
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_TASTE8, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD21A
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_DREHSTELLER, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD21B
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_DREHSTELLER_NORD, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD21C
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_DREHSTELLER_OST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD21D
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_DREHSTELLER_SUED, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD21E
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_DREHSTELLER_WEST, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD21F
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_LOGGING_VERBAU, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD228
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_TOUCHPAD_BERUEHRUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD60D
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_TOUCHPAD_ANNAEHERUNG, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xD68D
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_SPANNUNG_KLEMME_30B_WERT, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xDAD9
|
||||
//{ I3_ECU_ZBE_TX, I3_ECU_ZBE_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_ZBE_ACTIVE_DIAGNOSTIC_SESSION, { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // 0xF186
|
File diff suppressed because it is too large
Load Diff
|
@ -1,146 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 14th March 2017
|
||||
;
|
||||
; OVMS Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2011 Michael Stegen / Stegen Electronics
|
||||
; (C) 2011-2017 Mark Webb-Johnson
|
||||
; (C) 2011 Sonny Chen @ EPRO/DX
|
||||
;
|
||||
; BMW I3 component:
|
||||
; Developed by Stephen Davies <steve@telviva.co.za>
|
||||
;
|
||||
; 2020-12-12 0.0 Work started
|
||||
; 2021-01-04 Ready to merge as first version
|
||||
;
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#ifndef __VEHICLE_BMWI3_H__
|
||||
#define __VEHICLE_BMWI3_H__
|
||||
|
||||
#include "vehicle.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
// rxbuff access macros: b=byte# 0..7 / n=nibble# 0..15
|
||||
#define RXBUF_BYTE(b) (rxbuf[b])
|
||||
#define RXBUF_UCHAR(b) ((unsigned char)RXBUF_BYTE(b))
|
||||
#define RXBUF_SCHAR(b) ((signed char)RXBUF_BYTE(b))
|
||||
#define RXBUF_UINT(b) (((UINT)RXBUF_BYTE(b) << 8) | RXBUF_BYTE(b+1))
|
||||
#define RXBUF_SINT(b) ((short)RXBUF_UINT(b))
|
||||
#define RXBUF_UINT24(b) (((uint32_t)RXBUF_BYTE(b) << 16) | ((UINT)RXBUF_BYTE(b+1) << 8) | RXBUF_BYTE(b+2))
|
||||
#define RXBUF_UINT32(b) (((uint32_t)RXBUF_BYTE(b) << 24) | ((uint32_t)RXBUF_BYTE(b+1) << 16) | ((UINT)RXBUF_BYTE(b+2) << 8) | RXBUF_BYTE(b+3))
|
||||
#define RXBUF_SINT32(b) ((int32_t)RXBUF_UINT32(b))
|
||||
#define RXBUF_NIBL(b) (rxbuff[b] & 0x0f)
|
||||
#define RXBUF_NIBH(b) (rxbuff[b] >> 4)
|
||||
#define RXBUF_NIB(n) (((n)&1) ? RXBUF_NIBL((n)>>1) : RXBUF_NIBH((n)>>1))
|
||||
|
||||
|
||||
#define POLLSTATE_SHUTDOWN 0
|
||||
#define POLLSTATE_ALIVE 1
|
||||
#define POLLSTATE_READY 2
|
||||
#define POLLSTATE_CHARGING 3
|
||||
|
||||
|
||||
class OvmsVehicleBMWi3 : public OvmsVehicle
|
||||
{
|
||||
public:
|
||||
OvmsVehicleBMWi3();
|
||||
~OvmsVehicleBMWi3();
|
||||
void CanResponder(const CAN_frame_t* p_frame);
|
||||
void Ticker1(uint32_t ticker);
|
||||
void Ticker10(uint32_t ticker);
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
string bmwi3_obd_rxbuf; // CAN messages unpacked into here
|
||||
float hv_volts; // Traction battery voltage - used to calculate power from current
|
||||
float soc = 0.0f; // Remember SOC for derivative calcs
|
||||
int framecount = 0, tickercount = 0, replycount = 0; // Keep track of when the car is talking or schtum.
|
||||
int eps_messages = 0; // Is the EPS (power steering) alive? If so we are "on"
|
||||
int pollerstate; // What pollerstate we are in
|
||||
int last_obd_data_seen; // "monotonic" value last time we saw data
|
||||
|
||||
// Local metrics
|
||||
// Wheel speeds
|
||||
OvmsMetricFloat *mt_i3_wheel1_speed;
|
||||
OvmsMetricFloat *mt_i3_wheel2_speed;
|
||||
OvmsMetricFloat *mt_i3_wheel3_speed;
|
||||
OvmsMetricFloat *mt_i3_wheel4_speed;
|
||||
OvmsMetricFloat *mt_i3_wheel_speed; // "Combined" the car calls it. Not sure how its combined
|
||||
// Charge limits
|
||||
OvmsMetricFloat *mt_i3_charge_actual;
|
||||
OvmsMetricFloat *mt_i3_charge_max;
|
||||
OvmsMetricFloat *mt_i3_charge_min;
|
||||
// Cell OCV (Open circuit voltage) stats
|
||||
OvmsMetricFloat *mt_i3_batt_pack_ocv_avg;
|
||||
OvmsMetricFloat *mt_i3_batt_pack_ocv_min;
|
||||
OvmsMetricFloat *mt_i3_batt_pack_ocv_max;
|
||||
// Ranges
|
||||
OvmsMetricInt *mt_i3_range_bc;
|
||||
OvmsMetricInt *mt_i3_range_comfort;
|
||||
OvmsMetricInt *mt_i3_range_ecopro;
|
||||
OvmsMetricInt *mt_i3_range_ecoproplus;
|
||||
// Charging
|
||||
OvmsMetricInt *mt_i3_v_charge_voltage_phase1;
|
||||
OvmsMetricInt *mt_i3_v_charge_voltage_phase2;
|
||||
OvmsMetricInt *mt_i3_v_charge_voltage_phase3;
|
||||
OvmsMetricFloat *mt_i3_v_charge_voltage_dc;
|
||||
OvmsMetricFloat *mt_i3_v_charge_voltage_dc_limit;
|
||||
OvmsMetricFloat *mt_i3_v_charge_current_phase1;
|
||||
OvmsMetricFloat *mt_i3_v_charge_current_phase2;
|
||||
OvmsMetricFloat *mt_i3_v_charge_current_phase3;
|
||||
OvmsMetricFloat *mt_i3_v_charge_current_dc;
|
||||
OvmsMetricFloat *mt_i3_v_charge_current_dc_limit;
|
||||
OvmsMetricFloat *mt_i3_v_charge_current_dc_maxlimit;
|
||||
OvmsMetricInt *mt_i3_v_charge_deratingreasons;
|
||||
OvmsMetricInt *mt_i3_v_charge_faults;
|
||||
OvmsMetricInt *mt_i3_v_charge_failsafetriggers;
|
||||
OvmsMetricInt *mt_i3_v_charge_interruptionreasons;
|
||||
OvmsMetricInt *mt_i3_v_charge_errors;
|
||||
OvmsMetricBool *mt_i3_v_charge_readytocharge;
|
||||
OvmsMetricString *mt_i3_v_charge_plugstatus;
|
||||
OvmsMetricInt *mt_i3_v_charge_pilotsignal;
|
||||
OvmsMetricInt *mt_i3_v_charge_cablecapacity;
|
||||
OvmsMetricBool *mt_i3_v_charge_dc_plugconnected;
|
||||
OvmsMetricInt *mt_i3_v_charge_chargeledstate;
|
||||
OvmsMetricInt *mt_i3_v_charge_dc_voltage;
|
||||
OvmsMetricInt *mt_i3_v_charge_dc_controlsignals;
|
||||
OvmsMetricBool *mt_i3_v_door_dc_chargeport;
|
||||
OvmsMetricBool *mt_i3_v_charge_dc_inprogress;
|
||||
OvmsMetricString *mt_i3_v_charge_dc_contactorstatus;
|
||||
OvmsMetricInt *mt_i3_v_charge_temp_gatedriver;
|
||||
// Trip consumption
|
||||
OvmsMetricInt *mt_i3_v_pos_tripconsumption;
|
||||
// Cabin aircon
|
||||
OvmsMetricBool *mt_i3_v_env_autorecirc;
|
||||
// State
|
||||
OvmsMetricBool *mt_i3_obdisalive;
|
||||
OvmsMetricInt *mt_i3_pollermode;
|
||||
OvmsMetricInt *mt_i3_age;
|
||||
|
||||
void IncomingPollReply(canbus* bus, uint16_t type, uint16_t pid, uint8_t* data, uint8_t length, uint16_t mlremain);
|
||||
};
|
||||
|
||||
#endif //#ifndef __VEHICLE_BMWI3_H__
|
|
@ -1,329 +0,0 @@
|
|||
#! /usr/bin/perl -w
|
||||
|
||||
no warnings 'experimental::smartmatch';
|
||||
|
||||
use File::Slurp;
|
||||
use Data::Dumper;
|
||||
use JSON::PP;
|
||||
|
||||
our $DEBUG = 0;
|
||||
|
||||
# Optionally you can pass a PID to match in which case you get that one only
|
||||
our @MATCH_PIDS = ();
|
||||
if (scalar(@ARGV) > 3) {
|
||||
@MATCH_PIDS = @ARGV[3..scalar(@ARGV)-1];
|
||||
@MATCH_PIDS = map { uc($_) } @MATCH_PIDS;
|
||||
}
|
||||
|
||||
our $types = {
|
||||
'signed char' => 'SCHAR',
|
||||
'unsigned char' => 'UCHAR',
|
||||
'char' => 'UCHAR',
|
||||
'signed int' => 'SINT',
|
||||
'unsigned int' => 'UINT',
|
||||
'int' => 'UINT',
|
||||
'long' => 'SINT32',
|
||||
'signed long' => 'SINT32',
|
||||
'unsigned long' => 'UINT32'
|
||||
};
|
||||
|
||||
our $sizes = {
|
||||
'signed char' => 1,
|
||||
'unsigned char' => 1,
|
||||
'char' => 1,
|
||||
'signed int' => 2,
|
||||
'unsigned int' => 2,
|
||||
'int' => 2,
|
||||
'long' => 4,
|
||||
'signed long' => 4,
|
||||
'unsigned long' => 4
|
||||
};
|
||||
|
||||
our $ctypes = {
|
||||
'signed char' => 'char',
|
||||
'unsigned char' => 'unsigned char',
|
||||
'char' => 'char',
|
||||
'signed int' => 'short',
|
||||
'unsigned int' => 'unsigned short',
|
||||
'int' => 'unsigned short',
|
||||
'signed long' => 'long',
|
||||
'long' => 'long',
|
||||
'unsigned long' => 'unsigned long',
|
||||
'BITFIELD' => 'HANDLED SEPARATELY'
|
||||
};
|
||||
|
||||
# These map from the C++ types!
|
||||
our $formats = {
|
||||
'char' => '%x',
|
||||
'unsigned char' => '%x',
|
||||
'short' => '%d',
|
||||
'unsigned short' => '%u',
|
||||
'long' => '%ld',
|
||||
'unsigned long' => '%lu',
|
||||
'float' => "%.4f",
|
||||
'string?' => "%s"
|
||||
};
|
||||
|
||||
our $blacklist = {
|
||||
# 'KUEHLDAUER_HVB' => 1 # Obsolete and dupe
|
||||
};
|
||||
|
||||
# We sometimes get duplicate result names - in that case we dedupe them by added the ID that they are returned from
|
||||
our $usedfunctionnames = {};
|
||||
our $usedresultnames = {};
|
||||
|
||||
|
||||
open (CODE, ">&=3") || die "Can't fdopen 3";
|
||||
open (POLLLIST, ">&=4") || die "Can't fdopen 4";
|
||||
|
||||
binmode(STDOUT, ":utf8");
|
||||
binmode(STDERR, ":utf8");
|
||||
binmode(CODE, ":utf8");
|
||||
binmode(POLLLIST, ":utf8");
|
||||
|
||||
# Read ECU definition json as created by parseecu.pl
|
||||
my $tables;
|
||||
{
|
||||
my $jsonpp = JSON::PP->new->utf8;
|
||||
my $json = read_file($ARGV[0]);
|
||||
$tables = $jsonpp->decode($json);
|
||||
}
|
||||
|
||||
our $ECU = $ARGV[1] || $tables->{'ovmscode'} || "???";
|
||||
our $ECUID = $ARGV[2] || $tables->{'ovmsextaddr'} || "??";
|
||||
our $ECUDESC = $tables->{'ovmsdesc'} || "ECU: $ECU";
|
||||
|
||||
print STDERR "Generating OVMS config for ECU $ECU on id $ECUID: $ECUDESC\n";
|
||||
|
||||
# Dump header
|
||||
foreach my $FD (*STDOUT, *CODE, *POLLLIST) {
|
||||
print $FD "
|
||||
//
|
||||
// Warning: don't edit - generated by generate_ecu_code.pl processing $ARGV[0]: $ECU $ECUID: $ECUDESC
|
||||
// This generated code makes it easier to process CANBUS messages from the $ECU ecu in a BMW i3
|
||||
//";
|
||||
}
|
||||
|
||||
print "
|
||||
|
||||
#define I3_ECU_${ECU}_TX 0x06F1${ECUID}
|
||||
#define I3_ECU_${ECU}_RX 0x06${ECUID}F1";
|
||||
|
||||
|
||||
$tables = $tables->{'tables'};
|
||||
my $functions = $tables->{'SG_FUNKTIONEN'};
|
||||
|
||||
my $need_nl = 0;
|
||||
|
||||
# Read through the functions
|
||||
foreach my $function (@$functions) {
|
||||
|
||||
my $functionname = $function->{ARG};
|
||||
|
||||
# Filter
|
||||
if (scalar(@MATCH_PIDS)) {
|
||||
print STDERR "checking " .
|
||||
next unless (uc($function->{ID}) ~~ @MATCH_PIDS);
|
||||
}
|
||||
|
||||
# For now skip those that take arguments (which are actually some of the most interesting)
|
||||
$need_nl = 1;
|
||||
if ($function->{ARG_TABELLE} && $function->{ARG_TABELLE} ne '-') {
|
||||
if ($need_nl) { print "\n"; $need_nl = 0; }
|
||||
print "\n// Skipping " . $functionname . " on " . $function->{ID} . " which takes arguments";
|
||||
next;
|
||||
}
|
||||
|
||||
# And skip those marked as obsolete
|
||||
if ($function->{INFO} =~ /^Dieser Job ist nicht mehr angefordert und wird nicht mehr/) {
|
||||
if ($need_nl) { print "\n"; $need_nl = 0; }
|
||||
print "\n// Skipping " . $functionname . " on " . $function->{ID} . " INFO says it's obsolete";
|
||||
next;
|
||||
}
|
||||
|
||||
# And skip those blacklisted
|
||||
if ($blacklist->{$functionname}) {
|
||||
if ($need_nl) { print "\n"; $need_nl = 0; }
|
||||
print "\n// Skipping " . $functionname . " on " . $function->{ID} . ": Blacklisted";
|
||||
next;
|
||||
}
|
||||
|
||||
if ($need_nl) { print "\n"; $need_nl = 0; }
|
||||
|
||||
# Uniqueify function name (there are dupes, though I'm sure there shouldn't be)
|
||||
if ($usedfunctionnames->{$functionname}) {
|
||||
$functionname = $functionname . '_'. uc($function->{ID});
|
||||
print STDERR "De-duped function " . $function->{ARG} . " as $functionname\n";
|
||||
}
|
||||
$usedfunctionnames->{$functionname} = 1;
|
||||
|
||||
|
||||
my $desc = format_desc($function->{INFO_EN}, $function->{INFO});
|
||||
if ($DEBUG) {
|
||||
print Dumper($function);
|
||||
if ($function->{ARG_TABELLE} && $function->{ARG_TABELLE} ne '-') {
|
||||
print Dumper({ arg_table => $tables->{uc($function->{ARG_TABELLE})} });
|
||||
}
|
||||
if ($function->{RES_TABELLE} && $function->{RES_TABELLE} ne '-') {
|
||||
print Dumper({ res_table => $tables->{uc($function->{RES_TABELLE})} });
|
||||
}
|
||||
}
|
||||
printf "\n#define I3_PID_%s_%-49s %6s", $ECU, $functionname, $function->{ID};
|
||||
print "\n // $desc" if ($desc ne '');
|
||||
|
||||
# write the code
|
||||
printf(CODE "%-80s // %s", "\n\n case I3_PID_${ECU}_" . $functionname . ": {", $function->{ID});
|
||||
|
||||
# Now deal with the results
|
||||
my $results = $function->{RES_TABELLE};
|
||||
$results = $tables->{uc($results)};
|
||||
if (! $results) {
|
||||
# Might just be a single result
|
||||
if ($function->{DATENTYP} && $function->{DATENTYP} ne '-') {
|
||||
$results = [ $function ];
|
||||
Dumper($results);
|
||||
}
|
||||
}
|
||||
if ($results) {
|
||||
my $offset = 0;
|
||||
my @codelines;
|
||||
foreach my $result (@$results) {
|
||||
print "\n";
|
||||
print STDERR Dumper({result => $result}) if ($DEBUG);
|
||||
my $desc = format_desc($result->{INFO_EN}, $result->{INFO});
|
||||
my $datatype = $result->{DATENTYP};
|
||||
my $mul = $result->{MUL};
|
||||
my $div = $result->{DIV};
|
||||
my $add = $result->{ADD};
|
||||
my $unit = $result->{EINHEIT};
|
||||
my $resultname = $result->{RESULTNAME};
|
||||
$resultname = $result->{NAME} unless ($resultname && $resultname ne "-");
|
||||
# De-dupe it
|
||||
if ($usedresultnames->{$resultname}) {
|
||||
print STDERR "De-duped result $resultname as " . uc($function->{ID}) . "_" . $resultname . "\n";
|
||||
$resultname = $resultname . '_' . uc($function->{ID});
|
||||
}
|
||||
$usedresultnames->{$resultname} = 1;
|
||||
# Build the macro expansion including any manipulations.
|
||||
my $expr;
|
||||
my $ctype;
|
||||
if ($datatype =~ /^data\[(\d+)\]$/) {
|
||||
print "\n // Can't yet generate code for $resultname of type $datatype at offset $offset. But we account for the $1 bytes";
|
||||
print "\n // $desc" if ($desc ne '');
|
||||
$offset += $1;
|
||||
}
|
||||
elsif ($datatype =~ /^string\[(\d+)\]$/) {
|
||||
print "\n // Can't yet generate code for $resultname of type $datatype, at offset $offset. But we account for the $1 bytes";
|
||||
print "\n // $desc" if ($desc ne '');
|
||||
$offset += $1;
|
||||
}
|
||||
elsif (! $ctypes->{$datatype} ) {
|
||||
print "\n // Can't process $resultname - don't know type $datatype (*** this will mean all the following offsets are wrong!!! ****)";
|
||||
} else {
|
||||
# For a bitfield we can look up the bit definitions.
|
||||
my $isbitfield = 0;
|
||||
my $bits;
|
||||
if ($datatype eq "BITFIELD") {
|
||||
$isbitfield = 1;
|
||||
$bits = $tables->{$resultname};
|
||||
# print Dumper({ "resultname" => $resultname, "datatype" => $datatype, "bitsdesc" => $bits});
|
||||
if ($bits && $bits->[0]) {
|
||||
$datatype = $bits->[0]->{DATENTYP};
|
||||
print "\n // $resultname is a BITFIELD of size $datatype. We don't yet generate definitions for each bit, we treat as the host data type";
|
||||
print "\n // $desc" if ($desc ne '');
|
||||
foreach my $bit (@$bits) {
|
||||
print "\n // " . $bit->{RESULTNAME} . ": Mask: " . $bit->{MASKE} . " - " . $bit->{INFO_EN};
|
||||
}
|
||||
} else {
|
||||
$datatype = "unsigned char";
|
||||
print "\n // $resultname is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***";
|
||||
print "\n // $desc" if ($desc ne '');
|
||||
}
|
||||
}
|
||||
|
||||
$ctype = $ctypes->{$datatype};
|
||||
$expr = '(RXBUF_' . $types->{$datatype} . '(' . $offset . ')';
|
||||
if ($mul ne '-' && $mul != 1) {
|
||||
$expr .= '*' . $mul . 'f';
|
||||
$ctype = 'float';
|
||||
}
|
||||
if ($div ne '-' && $div != 1) {
|
||||
$expr .= '/' . $div . 'f';
|
||||
$ctype = 'float';
|
||||
}
|
||||
$expr .= (($add > 0) ? '+' : '') . $add if ($add ne '-' && $add != 0);
|
||||
$expr .= ')';
|
||||
$offset += $sizes->{$datatype};
|
||||
|
||||
printf "\n #define I3_RES_%s_%-45s %s", $ECU, $resultname, $expr;
|
||||
printf "\n #define I3_RES_%s_%-45s '%s'", $ECU, $resultname . '_UNIT', $unit if ($unit && $unit ne '-');
|
||||
printf "\n #define I3_RES_%s_%-45s %s", $ECU, $resultname . '_TYPE', $ctype if ($ctype);
|
||||
print "\n // $desc" if ($desc ne '');
|
||||
|
||||
# code
|
||||
push @codelines, "\n $ctype $resultname = $expr;\n";
|
||||
push @codelines, " // $desc\n";
|
||||
if ($isbitfield) {
|
||||
if ($bits && $bits->[0]) {
|
||||
push @codelines, " // $resultname is a BITFIELD of size $datatype. We don't yet generate definitions for each bit, we treat as the host data type\n";
|
||||
foreach my $bit (@$bits) {
|
||||
push @codelines, " // " . $bit->{RESULTNAME} . ": Mask: " . $bit->{MASKE} . " - " . $bit->{INFO_EN} . "\n";
|
||||
}
|
||||
} else {
|
||||
push @codelines, " // $resultname is a BITFIELD of unknown size. We don't have definitions for each bit, and we GUESSED it is one byte ***\n";
|
||||
}
|
||||
}
|
||||
print STDERR "Don't have format for $ctype\n" unless ($formats->{$ctype});
|
||||
push @codelines, " ESP_LOGD(TAG, \"From ECU %s, pid %s: got %s=" . ($isbitfield ? "%lx" : $formats->{$ctype}) . "%s\\n\", \"$ECU\", \"" . $functionname . "\", \"$resultname\", " . ($isbitfield ? "(unsigned long)" : "") . "$resultname, " . (($unit && $unit ne "-") ? "\"\\\"$unit\\\"\"" : "\"\"") . ");\n";
|
||||
}
|
||||
}
|
||||
# code
|
||||
print CODE "\n if (datalen < $offset) {\n ESP_LOGW(TAG, \"Received %d bytes for %s, expected %d\", datalen, \"I3_PID_${ECU}_" . $functionname . "\", $offset);\n break;\n }";
|
||||
print CODE "\n" . join('', @codelines);
|
||||
}
|
||||
|
||||
# code
|
||||
print CODE "\n // ========== Add your processing here ==========\n";
|
||||
print CODE " hexdump(rxbuf, type, pid);\n";
|
||||
|
||||
print CODE "\n break;\n }";
|
||||
|
||||
|
||||
# polllist
|
||||
printf POLLLIST "\n%-120s %s", " //{ I3_ECU_${ECU}_TX, I3_ECU_${ECU}_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, I3_PID_${ECU}_" . $functionname . ",", " { 0, 0, 0, 0 }, 0, ISOTP_EXTADR }, // " . $function->{ID};
|
||||
}
|
||||
|
||||
print "\n";
|
||||
print POLLLIST "\n";
|
||||
print CODE "\n";
|
||||
|
||||
|
||||
sub format_desc {
|
||||
my ($en, $de) = @_;
|
||||
|
||||
my $desc = $en || '';
|
||||
if ($desc eq '') {
|
||||
$desc = $de || '';
|
||||
} else {
|
||||
$desc .= " / " . $de if ($de);
|
||||
}
|
||||
if ($desc && $desc ne '') {
|
||||
$desc =~ s/(.{1,110}|\S{111,})(?:\s[^\S\r\n]*|\Z)/$1\n \/\/ /g if (length $desc >= 110);
|
||||
$desc =~ s/(\n \/\/ )?$//;
|
||||
}
|
||||
return $desc;
|
||||
}
|
||||
|
||||
# 'result' => {
|
||||
# 'MASKE' => '-',
|
||||
# 'INFO' => "\x{c3}\x{9c}berlastz\x{c3}\x{a4}hler Sch\x{c3}\x{bc}tz K1",
|
||||
# 'DATENTYP' => 'unsigned int',
|
||||
# 'MUL' => '1.0',
|
||||
# 'INFO_EN' => 'Overload counter contactor K1',
|
||||
# 'ADD' => '0.0',
|
||||
# 'RESULTNAME' => 'STAT_OVERLOAD_K1_WERT',
|
||||
# 'NAME' => '-',
|
||||
# 'L/H' => 'high',
|
||||
# 'DIV' => '1.0',
|
||||
# 'EINHEIT' => '-'
|
||||
# }
|
|
@ -1,49 +0,0 @@
|
|||
#! /bin/bash
|
||||
|
||||
# Still unclear:
|
||||
# 01 ? Initialisation sends 010319020C000000 and gets 0601 F1 03 5902FF
|
||||
# 06 ? Initialisation sends 060319020C000000 and gets 0606 F1 03 5902FF -> same
|
||||
# 2C ? Same init thing as above
|
||||
# 2D ? Ditto
|
||||
# 37 ? Same init thing
|
||||
# 43 ? And again
|
||||
# 44 ? Again
|
||||
# 61 ? And again
|
||||
|
||||
# Identified:
|
||||
# 07 SME Battery management electronics
|
||||
# 10 ZGW
|
||||
# 12 EDME Electrical digital motor electronics (low voltage ECU)
|
||||
# 14 LIM Charging interface module (this is the actual connector at the back of the car)
|
||||
# 15 UCX2 Convenience charging electronics (the ac charger for the main battery)
|
||||
# 1A EME Electrical machine electronics (motor controller etc)
|
||||
# 22 SAS Optional equipment system (TPMS)
|
||||
# 29 DSC Dynamic stability control
|
||||
# 30 EPS Electromechanical power steering
|
||||
# 35 TBX5
|
||||
# 40 BDC The body domain controller
|
||||
# 56 FZD Roof function center (seems to be the alarm mostly)
|
||||
# 5D KAFAS Camera based driver assist system
|
||||
# 5E GWS Gear selector switch
|
||||
# 60 KOMBI Instrument panel
|
||||
# 63 NBTEVO Headunit high (is this the mid-mounted display)
|
||||
# 67 ZBE6 iDrive controller
|
||||
# 78 IHX Integrated automatic heating / aircon - though its mainly the buttons I think)
|
||||
|
||||
|
||||
perl ./generate_ecu_code.pl ../dev/sme_i1.json >../ecu_definitions/ecu_sme_defines.h 3>../ecu_definitions/ecu_sme_code.cpp 4>../ecu_definitions/ecu_sme_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/edmei1.json >../ecu_definitions/ecu_edm_defines.h 3>../ecu_definitions/ecu_edm_code.cpp 4>../ecu_definitions/ecu_edm_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/lim_i1.json >../ecu_definitions/ecu_lim_defines.h 3>../ecu_definitions/ecu_lim_code.cpp 4>../ecu_definitions/ecu_lim_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/ucx2_i01.json >../ecu_definitions/ecu_kle_defines.h 3>../ecu_definitions/ecu_kle_code.cpp 4>../ecu_definitions/ecu_kle_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/eme_i01.json >../ecu_definitions/ecu_eme_defines.h 3>../ecu_definitions/ecu_eme_code.cpp 4>../ecu_definitions/ecu_eme_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/sas_i1.json >../ecu_definitions/ecu_sas_defines.h 3>../ecu_definitions/ecu_sas_code.cpp 4>../ecu_definitions/ecu_sas_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/dsc_i1.json >../ecu_definitions/ecu_dsc_defines.h 3>../ecu_definitions/ecu_dsc_code.cpp 4>../ecu_definitions/ecu_dsc_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/bdc.json >../ecu_definitions/ecu_bdc_defines.h 3>../ecu_definitions/ecu_bdc_code.cpp 4>../ecu_definitions/ecu_bdc_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/fzd_f15.json >../ecu_definitions/ecu_fzd_defines.h 3>../ecu_definitions/ecu_fzd_code.cpp 4>../ecu_definitions/ecu_fzd_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/kafas20.json >../ecu_definitions/ecu_kaf_defines.h 3>../ecu_definitions/ecu_kaf_code.cpp 4>../ecu_definitions/ecu_kaf_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/komb25.json >../ecu_definitions/ecu_kom_defines.h 3>../ecu_definitions/ecu_kom_code.cpp 4>../ecu_definitions/ecu_kom_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/nbtevo.json >../ecu_definitions/ecu_nbt_defines.h 3>../ecu_definitions/ecu_nbt_code.cpp 4>../ecu_definitions/ecu_nbt_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/zbe6.json >../ecu_definitions/ecu_zbe_defines.h 3>../ecu_definitions/ecu_zbe_code.cpp 4>../ecu_definitions/ecu_zbe_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/ihx_i1.json >../ecu_definitions/ecu_ihx_defines.h 3>../ecu_definitions/ecu_ihx_code.cpp 4>../ecu_definitions/ecu_ihx_polls.cpp
|
||||
perl ./generate_ecu_code.pl ../dev/eps_i1.json >../ecu_definitions/ecu_eps_defines.h 3>../ecu_definitions/ecu_eps_code.cpp 4>../ecu_definitions/ecu_eps_polls.cpp
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
#! /usr/bin/perl
|
||||
|
||||
use WWW::Google::Translate;
|
||||
use File::Slurp;
|
||||
use Data::Dumper;
|
||||
use JSON::PP;
|
||||
|
||||
use utf8;
|
||||
|
||||
binmode(STDIN, ":utf8");
|
||||
binmode(STDOUT, ":utf8");
|
||||
binmode(STDERR, ":utf8");
|
||||
|
||||
# ------ TRANSLATION ---------------------------------------------------------------------------
|
||||
|
||||
my $google_translate_api_key = "YOUR-KEY-GOES-HERE";
|
||||
|
||||
my $de_to_en = WWW::Google::Translate->new({
|
||||
key => $google_translate_api_key,
|
||||
default_source => 'de',
|
||||
default_target => 'en'
|
||||
});
|
||||
|
||||
my %previous_translations;
|
||||
|
||||
sub de_to_en {
|
||||
($text_de) = @_;
|
||||
my $previously = $previous_translations{$text_de};
|
||||
return $previously if ($previously);
|
||||
|
||||
my $en = $de_to_en->translate({ q=>$text_de });
|
||||
#print Dumper($en);
|
||||
if ($en->{data} && $en->{data}->{translations}) {
|
||||
my $ent = $en->{data}->{translations}[0]{translatedText};
|
||||
$previous_translations{$text_de} = $ent;
|
||||
return $ent;
|
||||
}
|
||||
}
|
||||
|
||||
sub test_translation {
|
||||
my $de = "17-stellige Fahrgestellnummer. Zum Zurücksetzen im Steuergerät wird das Argument '00000000000000000' verwendet. Hinweis: Der Argumentwert '00000000000000000' wird SGBD-intern in 0xFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF gewandelt, bevor er an das CAS gesendet wird.";
|
||||
|
||||
my $en = de_to_en($de);
|
||||
print "$de\n$en\n";
|
||||
|
||||
print de_to_en("Differenz zwischen dem mittleren und minimalen Ladezsustand aller Zellen bezogen auf Nennkapazität") . "\n";
|
||||
|
||||
my $en = de_to_en($de);
|
||||
print "Again:\n$de\n$en\n";
|
||||
}
|
||||
|
||||
# test_translation;
|
||||
# exit 99;
|
||||
|
||||
# ------ TRANSLATION ---------------------------------------------------------------------------
|
||||
|
||||
# ------ READ ECU DESCRIPTION -----------------------------------------------------------------
|
||||
|
||||
my $tables = {};
|
||||
my $tablename;
|
||||
my $table;
|
||||
my @headings;
|
||||
|
||||
while (<>) {
|
||||
chomp($_);
|
||||
if ( $_ eq "TEND" ) {
|
||||
$tables->{$tablename} = $table;
|
||||
$table = undef;
|
||||
}
|
||||
elsif ( $_ =~ /^TBEG *"(.*?)"/ ) {
|
||||
$tablename = $1;
|
||||
$table = [];
|
||||
print STDERR "$tablename\n";
|
||||
}
|
||||
elsif ( $_ =~ /^HEAD *"(.*?)"$/ ) {
|
||||
# $1 =~ s/^"//; $1 =~ s/"$//;
|
||||
@headings = split(/", ?"/, $1);
|
||||
}
|
||||
elsif ( $_ =~ /^LINE *"(.*?)"$/ ) {
|
||||
my %line;
|
||||
@line{@headings} = split(/", ?"/, $1);
|
||||
foreach my $name ( qw(INFO TEXT ORTTEXT ARTTEXT) ) {
|
||||
if ($line{$name} && $line{$name} ne '' ) { # && $tablename eq "SG_FUNKTIONEN") {
|
||||
$line{"${name}_EN"} = de_to_en($line{$name});
|
||||
}
|
||||
}
|
||||
push $table, \%line;
|
||||
}
|
||||
}
|
||||
|
||||
# ------ SHOW RESULTS -------------------------------------------------------------------------
|
||||
|
||||
print STDERR Dumper($tables->{"SG_FUNKTIONEN"});
|
||||
|
||||
my $json = JSON::PP->new->pretty; # ->utf8(true);
|
||||
|
||||
print $json->encode( { tables => $tables } );
|
|
@ -1,14 +0,0 @@
|
|||
#
|
||||
# Main component makefile.
|
||||
#
|
||||
# This Makefile can be left empty. By default, it will take the sources in the
|
||||
# src/ directory, compile them and link them into lib(subdirectory_name).a
|
||||
# in the build directory. This behaviour is entirely configurable,
|
||||
# please read the ESP-IDF documents if you need to do this.
|
||||
#
|
||||
|
||||
ifdef CONFIG_OVMS_VEHICLE_BOLTEV
|
||||
COMPONENT_ADD_INCLUDEDIRS:=src
|
||||
COMPONENT_SRCDIRS:=src
|
||||
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
|
||||
endif
|
|
@ -1,434 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 16th August 2019
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2019 Marko Juhanne
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
|
||||
#include "ovms_log.h"
|
||||
static const char *TAG = "v-boltev";
|
||||
|
||||
#include <stdio.h>
|
||||
#include "ovms_config.h"
|
||||
#include "vehicle_boltev.h"
|
||||
#include "canutils.h"
|
||||
|
||||
#define VA_PREHEAT_STOPPED 0
|
||||
#define VA_PREHEAT_STARTING 1
|
||||
#define VA_PREHEAT_SWITCH_ON 2 // Used only for overriding BCM
|
||||
#define VA_PREHEAT_STARTED 3
|
||||
#define VA_PREHEAT_STOPPING 4
|
||||
#define VA_PREHEAT_ERROR 5
|
||||
#define VA_PREHEAT_RELINQUISH 6 // Used only when preheating is activated via key fob while BCM overriding is on-going
|
||||
|
||||
const char* const va_preheat_status_strings[] = {
|
||||
"Stopped",
|
||||
"Starting",
|
||||
"Switch on",
|
||||
"Started",
|
||||
"Stopping",
|
||||
"Error"
|
||||
};
|
||||
|
||||
#define VA_PREHEAT_TIMEOUT 15 //seconds
|
||||
#define VA_PREHEAT_MAX_TIME_DEFAULT 20 // minutes
|
||||
#define VA_PREHEAT_MAX_RETRIES 3
|
||||
#define VA_PREHEAT_LIGHTS_ACTIVE (va_light_t)(Park)
|
||||
#define VA_PREHEAT_LIGHTS_STARTSTOP (va_light_t)(Driver_front_signal | Passenger_front_signal | Left_rear_signal | Right_rear_signal )
|
||||
#define VA_PREHEAT_LIGHTS_ERROR VA_PREHEAT_LIGHTS_STARTSTOP
|
||||
|
||||
#define BCM_OVERRIDE_IGNORE_PERIOD 3000 // milliseconds
|
||||
#define BCM_OVERRIDE_RELAUNCH_PERIOD 10000 // milliseconds
|
||||
|
||||
|
||||
const char * OvmsVehicleBoltEV::PreheatStatus()
|
||||
{
|
||||
return va_preheat_status_strings[ mt_preheat_status->AsInt() ];
|
||||
}
|
||||
|
||||
void OvmsVehicleBoltEV::ClimateControlInit()
|
||||
{
|
||||
// New VA specific metrics
|
||||
mt_preheat_status = MyMetrics.InitInt("xcb.v.ac.preheat", SM_STALE_MIN, VA_PREHEAT_STOPPED);
|
||||
mt_preheat_timer = MyMetrics.InitInt("xcb.v.ac.preheat_timer", SM_STALE_MIN, 0);
|
||||
mt_ac_active = MyMetrics.InitBool("xcb.v.ac.active", SM_STALE_MIN, 0);
|
||||
mt_ac_front_blower_fan_speed = MyMetrics.InitInt("xcb.v.ac.front_blower_fan_speed", SM_STALE_MIN, 0, Percentage);
|
||||
|
||||
m_preheat_commander = Disabled;
|
||||
}
|
||||
|
||||
void OvmsVehicleBoltEV::ClimateControlPrintStatus(int verbosity, OvmsWriter* writer)
|
||||
{
|
||||
writer->printf("Preheat status: %s - Cabin temperature %2.1f\n", PreheatStatus(), StandardMetrics.ms_v_env_cabintemp->AsFloat());
|
||||
}
|
||||
|
||||
void OvmsVehicleBoltEV::ClimateControlIncomingSWCAN(CAN_frame_t* p_frame)
|
||||
{
|
||||
uint8_t *d = p_frame->data.u8;
|
||||
bool unexpected_data = false;
|
||||
|
||||
// Process the incoming message
|
||||
switch (p_frame->MsgID) {
|
||||
|
||||
// Front seat heat cool control
|
||||
case 0x107220A9: {
|
||||
if ( (d[0]==0) && (d[1]==0) )
|
||||
ESP_LOGD(TAG,"Driver and passenger seat heater off");
|
||||
else
|
||||
ESP_LOGD(TAG,"Seat heaters %02x / %02x", d[2],d[3]);
|
||||
break;
|
||||
}
|
||||
|
||||
// Fob status
|
||||
case 0x10718040: {
|
||||
uint16_t fob_func = ((GET16(p_frame,0))>>1) & 0x3f;
|
||||
bool fob_low_batt = d[1] & 0x1;
|
||||
uint8_t fob_number = ((GET16(p_frame,0))>>7) & 0x3;
|
||||
ESP_LOGD(TAG,"Fob key press. Fob #%d func #%d low_batt %d", fob_number, fob_func, fob_low_batt);
|
||||
switch (fob_func) {
|
||||
case 1: {
|
||||
ESP_LOGI(TAG,"Fob key press: LOCK");
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
ESP_LOGI(TAG,"Fob key press: UNLOCK");
|
||||
if (m_preheat_commander==OVMS) {
|
||||
// Turn off preheating
|
||||
ESP_LOGI(TAG,"<--- Turn off preheating due to fob unlock cmd ---->");
|
||||
PreheatModeChange(VA_PREHEAT_STOPPING);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
ESP_LOGI(TAG,"Fob key press: OPEN CHARGER PORT");
|
||||
break;
|
||||
}
|
||||
case 11: {
|
||||
ESP_LOGI(TAG,"Fob key press: PREHEAT");
|
||||
if (m_preheat_commander==OVMS) {
|
||||
ESP_LOGI(TAG,"<--- Relinquish the control of the preheating to BCM ---->");
|
||||
PreheatModeChange(VA_PREHEAT_RELINQUISH);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 12: {
|
||||
// This is sent when long pressing the warming button did not cause BCM to start preheating
|
||||
ESP_LOGI(TAG,"Fob key press: WARM BTN LONG PRESS");
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
ESP_LOGW(TAG,"Fob key press: unknown %d",fob_func);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Coolant Heater Status
|
||||
case 0x1047809D: {
|
||||
mt_coolant_heater_pwr->SetValue((float)d[1]*0.02);
|
||||
break;
|
||||
}
|
||||
|
||||
// Climate control general status
|
||||
case 0x10734099: {
|
||||
uint8_t mode = (d[0] >> 4) & 3;
|
||||
// this flag is active when AC is turned on from dashboard, or when preheat is initiated via fob or via Onstar (but NOT when overriding BCM)
|
||||
if (mode==1) {
|
||||
mt_ac_active->SetValue(false);
|
||||
} else if (mode==2) {
|
||||
mt_ac_active->SetValue(true);
|
||||
} else
|
||||
unexpected_data = true;
|
||||
|
||||
// Incorrect DBC entry: This is not absolute target temperature but some kind of differential temp. Needs more investigating..
|
||||
//mt_ac_target_temp->SetValue( (GET16(p_frame, 2) & 0x3ff) / 10 - 10);
|
||||
break;
|
||||
}
|
||||
|
||||
// Climate Control Basic Status
|
||||
case 0x10814099: {
|
||||
// Blower fan speed is the only reliable indicator (that I know of) of whether preheat is switched on or not, since
|
||||
// the Climate_control_general_status:ac_active flag is not set if we override BCM...
|
||||
bool ac_status = mt_ac_front_blower_fan_speed->AsInt() > 0;
|
||||
mt_ac_front_blower_fan_speed->SetValue( (float)d[1]*0.39 );
|
||||
|
||||
AirConStatusUpdated(ac_status);
|
||||
|
||||
// this flag is active only when turning AC on manually on the dashboard, but NOT when preheating
|
||||
//mt_ac_active->SetValue( (d[0]>>5)&1 );
|
||||
break;
|
||||
}
|
||||
|
||||
// Alarm_2_Request_LS (provides us with estimated cabin temperature)
|
||||
case 0x10440099: {
|
||||
// This is estimated roof surface temperature
|
||||
ESP_LOGI(TAG,"Cabin temp: %f",(float)d[5]/2 - 40);
|
||||
StandardMetrics.ms_v_env_cabintemp->SetValue( (float)d[5]/2 - 40 );
|
||||
|
||||
// There is also estimated bulk internal air temperature, but for comfort I think we prefer the surface temperature
|
||||
//StandardMetrics.ms_v_env_cabintemp->SetValue( (float)d[4]/2 - 40 );
|
||||
|
||||
// this flag is active only when turning AC on manually on the dashboard, but NOT when preheating
|
||||
//mt_ac_active->SetValue( (d[0]>>5)&1 );
|
||||
break;
|
||||
}
|
||||
|
||||
// Remote start status (Preheating)
|
||||
case 0x10390040: {
|
||||
if (d[0]==0)
|
||||
// Remote start off
|
||||
{
|
||||
if ((mt_preheat_status->AsInt()==VA_PREHEAT_STARTING) || (mt_preheat_status->AsInt()==VA_PREHEAT_STARTED) ) {
|
||||
if (m_preheat_commander==OVMS) {
|
||||
ESP_LOGW(TAG,"BCM attempted to turn off preheating. Overriding by sending new start message...");
|
||||
PreheatModeChange(VA_PREHEAT_SWITCH_ON);
|
||||
} else {
|
||||
if ( (m_preheat_commander==Onstar) && (mt_preheat_status->AsInt()==VA_PREHEAT_STARTING) ) {
|
||||
ESP_LOGW(TAG,"BCM sending preheating off msg while trying to start? Ignoring for now..");
|
||||
} else {
|
||||
ESP_LOGW(TAG,"BCM switching preheat off (after maximum time-on?)");
|
||||
PreheatModeChange(VA_PREHEAT_STOPPING);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if ( (d[0]>>1) & 1)
|
||||
// Remote start request
|
||||
{
|
||||
// Preheat switched on most likely via key fob
|
||||
ESP_LOGI(TAG,"Preheating initiated by BCM (via key fob?)");
|
||||
m_preheat_commander = Fob;
|
||||
PreheatModeChange(VA_PREHEAT_STARTING);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (unexpected_data)
|
||||
ESP_LOGE(TAG,"IncomingFrameSWCan: Unexpected data! Id %08x: %02x %02x %02x %02x %02x %02x %02x %02x",
|
||||
p_frame->MsgID, d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7] );
|
||||
}
|
||||
|
||||
|
||||
// Take care of handling state changes and event signaling.
|
||||
void OvmsVehicleBoltEV::PreheatModeChange( uint8_t preheat_status )
|
||||
{
|
||||
CAN_frame_t txframe;
|
||||
m_preheat_modechange_timer = 0;
|
||||
|
||||
ESP_LOGW(TAG,"---- PreheatModeChange: %s -> %s ----",
|
||||
PreheatStatus(), va_preheat_status_strings[preheat_status]);
|
||||
|
||||
switch (preheat_status) {
|
||||
case VA_PREHEAT_RELINQUISH: { // used only when preheating is started via key fob while BCM overriding is on-going
|
||||
CommandLights(VA_PREHEAT_LIGHTS_ACTIVE,false);
|
||||
m_preheat_commander=Fob;
|
||||
} // intentional fall-thru
|
||||
case VA_PREHEAT_STARTING: {
|
||||
// Reset timer only if it's actually starting the first time (not cycled between started -> starting -> started)
|
||||
if (mt_preheat_status->AsInt() == VA_PREHEAT_STOPPED)
|
||||
mt_preheat_timer->SetValue(0);
|
||||
|
||||
mt_preheat_status->SetValue(VA_PREHEAT_STARTING);
|
||||
MyEvents.SignalEvent("vehicle.preheat.starting",NULL);
|
||||
} // ... intentional fall-thru
|
||||
case VA_PREHEAT_SWITCH_ON: { // used only for overriding BCM
|
||||
if (m_preheat_commander == Onstar) {
|
||||
ESP_LOGI(TAG,"Turning preheating on via Onstar emulation");
|
||||
SEND_EXT_FRAME(p_swcan, txframe, 0x1024E097, 3, 0x80,0x01,0xff)
|
||||
vTaskDelay(360 / portTICK_PERIOD_MS);
|
||||
SEND_EXT_FRAME(p_swcan, txframe, 0x1024E097, 3, 0x00,0x00,0xff)
|
||||
} else if (m_preheat_commander == OVMS) {
|
||||
ESP_LOGI(TAG,"Turn on preheat via overriding BCM");
|
||||
//m_preheat_BCM_overridden = true;
|
||||
//SEND_EXT_FRAME(p_swcan, txframe, 0x10390040, 1, 0x02)
|
||||
//vTaskDelay(720 / portTICK_PERIOD_MS);
|
||||
SEND_EXT_FRAME(p_swcan, txframe, 0x10390040, 1, 0x03)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VA_PREHEAT_STARTED: {
|
||||
ESP_LOGI(TAG,"PreheatModeChange: Preheat started");
|
||||
mt_preheat_status->SetValue(VA_PREHEAT_STARTED);
|
||||
StandardMetrics.ms_v_env_hvac->SetValue(true);
|
||||
MyEvents.SignalEvent("vehicle.preheat.started",NULL);
|
||||
if (m_preheat_commander == OVMS) {
|
||||
// When overriding BCM, controlling lights is needed since BCM does not do it for us
|
||||
CommandLights(VA_PREHEAT_LIGHTS_ACTIVE,true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VA_PREHEAT_STOPPING: {
|
||||
MyEvents.SignalEvent("vehicle.preheat.stopping",NULL);
|
||||
mt_preheat_status->SetValue(VA_PREHEAT_STOPPING);
|
||||
if (m_preheat_commander == Onstar) {
|
||||
ESP_LOGI(TAG,"Turning preheating off via Onstar emulation");
|
||||
SEND_EXT_FRAME(p_swcan, txframe, 0x1024E097, 3, 0x40,0x01,0xff)
|
||||
vTaskDelay(360 / portTICK_PERIOD_MS);
|
||||
SEND_EXT_FRAME(p_swcan, txframe, 0x1024E097, 3, 0x00,0x00,0xff)
|
||||
} else if (m_preheat_commander == OVMS) {
|
||||
ESP_LOGI(TAG,"Turn off preheat via overriding BCM");
|
||||
SEND_EXT_FRAME(p_swcan, txframe, 0x10390040, 1, 0x00)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VA_PREHEAT_STOPPED: {
|
||||
ESP_LOGI(TAG,"PreheatModeChange: Preheat stopped");
|
||||
mt_preheat_status->SetValue(VA_PREHEAT_STOPPED);
|
||||
StandardMetrics.ms_v_env_hvac->SetValue(false);
|
||||
MyEvents.SignalEvent("vehicle.preheat.stopped",NULL);
|
||||
mt_preheat_timer->SetValue(0);
|
||||
if (m_preheat_commander == OVMS) {
|
||||
// When overriding BCM, controlling lights is needed since BCM does not do it for us
|
||||
CommandLights(VA_PREHEAT_LIGHTS_ACTIVE,false);
|
||||
}
|
||||
m_preheat_commander = Disabled;
|
||||
break;
|
||||
}
|
||||
case VA_PREHEAT_ERROR: {
|
||||
MyEvents.SignalEvent("vehicle.preheat.error", NULL);
|
||||
FlashLights(VA_PREHEAT_LIGHTS_ERROR,300,5);
|
||||
PreheatModeChange(VA_PREHEAT_STOPPED);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// AC status changed
|
||||
void OvmsVehicleBoltEV::AirConStatusUpdated( bool ac_enabled )
|
||||
{
|
||||
ESP_LOGD(TAG,"AirConStatusUpdated: ac_enabled %d, preheat_status: %s", ac_enabled, PreheatStatus());
|
||||
|
||||
if (m_preheat_commander == Disabled)
|
||||
return;
|
||||
|
||||
if (ac_enabled) {
|
||||
if (mt_preheat_status->AsInt() == VA_PREHEAT_STARTING) {
|
||||
PreheatModeChange(VA_PREHEAT_STARTED);
|
||||
}
|
||||
} else {
|
||||
if (mt_preheat_status->AsInt() == VA_PREHEAT_STOPPING) {
|
||||
PreheatModeChange(VA_PREHEAT_STOPPED);
|
||||
} else if (mt_preheat_status->AsInt() == VA_PREHEAT_STARTED) {
|
||||
if ( (m_preheat_commander == OVMS) && (m_preheat_modechange_timer < BCM_OVERRIDE_RELAUNCH_PERIOD)) {
|
||||
ESP_LOGW(TAG,"AirConStatusUpdated: BCM managed to turn AC off despite our counter-attack. Relaunching..");
|
||||
PreheatModeChange(VA_PREHEAT_STARTING);
|
||||
} else {
|
||||
ESP_LOGW(TAG,"AirConStatusUpdated: Preheat stopped prematurily!");
|
||||
PreheatModeChange(VA_PREHEAT_ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void OvmsVehicleBoltEV::PreheatWatchdog()
|
||||
{
|
||||
if (mt_preheat_status->AsInt() == VA_PREHEAT_STARTED) {
|
||||
mt_preheat_timer->SetValue(mt_preheat_timer->AsInt()+1);
|
||||
}
|
||||
m_preheat_modechange_timer++;
|
||||
|
||||
switch (mt_preheat_status->AsInt()) {
|
||||
case VA_PREHEAT_STARTING: {
|
||||
if (m_preheat_modechange_timer > VA_PREHEAT_TIMEOUT) {
|
||||
// For some reason preheating did not (re)start..
|
||||
m_preheat_retry_counter++;
|
||||
if (m_preheat_retry_counter < VA_PREHEAT_MAX_RETRIES) {
|
||||
ESP_LOGW(TAG,"Preheat did not start! Retrying..");
|
||||
MyEvents.SignalEvent("vehicle.preheat.start_retry", NULL);
|
||||
CommandWakeup();
|
||||
vTaskDelay(720 / portTICK_PERIOD_MS);
|
||||
PreheatModeChange(VA_PREHEAT_STARTING);
|
||||
} else {
|
||||
ESP_LOGE(TAG,"Preheat did not start!");
|
||||
PreheatModeChange(VA_PREHEAT_ERROR);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VA_PREHEAT_STARTED: {
|
||||
if (m_preheat_commander==OVMS) {
|
||||
unsigned int max_time = MyConfig.GetParamValueInt("xcb", "preheat.max_time", VA_PREHEAT_MAX_TIME_DEFAULT);
|
||||
if (mt_preheat_timer->AsInt() > 60 * max_time) {
|
||||
ESP_LOGW(TAG,"Maximum preheat time reached. Stopping..");
|
||||
PreheatModeChange(VA_PREHEAT_STOPPING);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VA_PREHEAT_STOPPING: {
|
||||
if (m_preheat_modechange_timer > VA_PREHEAT_TIMEOUT) {
|
||||
if (mt_ac_front_blower_fan_speed->IsStale()) {
|
||||
// AC actually did stop, but we did not receive the last fan_speed=0 message. Assume AC is off
|
||||
ESP_LOGW(TAG,"AC status went stale... Assume AC is off");
|
||||
PreheatModeChange(VA_PREHEAT_STOPPED);
|
||||
} else {
|
||||
if (m_preheat_commander==OVMS) {
|
||||
ESP_LOGE(TAG,"Preheat did not stop! Retrying..");
|
||||
MyEvents.SignalEvent("vehicle.preheat.error", NULL);
|
||||
PreheatModeChange(VA_PREHEAT_STOPPING);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleBoltEV::CommandClimateControl(bool enable)
|
||||
{
|
||||
#ifdef CONFIG_OVMS_COMP_EXTERNAL_SWCAN
|
||||
ESP_LOGW(TAG,"<------ REMOTE CLIMATE CONTROL: %d (Preheat Status: %s) ------>", enable, PreheatStatus() );
|
||||
|
||||
if ( ((mt_preheat_status->AsInt()!=VA_PREHEAT_STARTED) && (enable)) ||
|
||||
((mt_preheat_status->AsInt()!=VA_PREHEAT_STOPPED) && (!enable) ) ) {
|
||||
if (enable) {
|
||||
CommandWakeup();
|
||||
vTaskDelay(720 / portTICK_PERIOD_MS);
|
||||
}
|
||||
if (MyConfig.GetParamValueBool("xcb", "preheat.override_bcm", false)) {
|
||||
FlashLights(VA_PREHEAT_LIGHTS_STARTSTOP);
|
||||
m_preheat_commander = OVMS;
|
||||
} else
|
||||
m_preheat_commander = Onstar;
|
||||
m_preheat_retry_counter = 0;
|
||||
|
||||
PreheatModeChange(enable ? VA_PREHEAT_STARTING : VA_PREHEAT_STOPPING );
|
||||
} else {
|
||||
ESP_LOGE(TAG,"Preheat already %s!", enable ? "active" : "inactive");
|
||||
return Fail;
|
||||
}
|
||||
return Success;
|
||||
#else
|
||||
return NotImplemented;
|
||||
#endif // #ifdef CONFIG_OVMS_COMP_EXTERNAL_SWCAN
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 14th December 2021
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2021 Alexander Kiiyashko
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#include "vehicle_boltev.h"
|
||||
#include "ovms_notify.h"
|
||||
|
||||
void OvmsVehicleBoltEV::NotifyFuel()
|
||||
{
|
||||
if(m_notify_metrics) {
|
||||
MyNotify.NotifyStringf("data", "xcb.stat.fuel", "XCB-ENG-FuelStatus,1,86400,%d", mt_fuel_level->AsInt());
|
||||
}
|
||||
}
|
||||
|
||||
void OvmsVehicleBoltEV::NotifyMetrics()
|
||||
{
|
||||
NotifyFuel();
|
||||
}
|
|
@ -1,157 +0,0 @@
|
|||
/**
|
||||
* Project: Open Vehicle Monitor System
|
||||
* Module: Bolt EV Webserver
|
||||
*
|
||||
* (c) 2019 Marko Juhanne
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sdkconfig.h>
|
||||
#ifdef CONFIG_OVMS_COMP_WEBSERVER
|
||||
|
||||
// #include "ovms_log.h"
|
||||
// static const char *TAG = "v-boltev";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string>
|
||||
#include "ovms_metrics.h"
|
||||
#include "ovms_events.h"
|
||||
#include "ovms_config.h"
|
||||
#include "ovms_command.h"
|
||||
#include "metrics_standard.h"
|
||||
#include "ovms_notify.h"
|
||||
#include "ovms_webserver.h"
|
||||
|
||||
#include "vehicle_boltev.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define _attr(text) (c.encode_html(text).c_str())
|
||||
#define _html(text) (c.encode_html(text).c_str())
|
||||
|
||||
|
||||
/**
|
||||
* WebInit: register pages
|
||||
*/
|
||||
void OvmsVehicleBoltEV::WebInit()
|
||||
{
|
||||
// vehicle menu:
|
||||
MyWebServer.RegisterPage("/xcb/features", "Features", WebCfgFeatures, PageMenu_Vehicle, PageAuth_Cookie);
|
||||
|
||||
// TODO: Battery monitoring
|
||||
//MyWebServer.RegisterPage("/xcb/battmon", "Battery Monitor", OvmsWebServer::HandleBmsCellMonitor, PageMenu_Vehicle, PageAuth_Cookie);
|
||||
}
|
||||
|
||||
void OvmsVehicleBoltEV::WebCleanup()
|
||||
{
|
||||
MyWebServer.DeregisterPage("/xcb/features");
|
||||
|
||||
// TODO: Battery monitoring
|
||||
//MyWebServer.DeregisterPage("/xcb/battmon");
|
||||
}
|
||||
|
||||
/**
|
||||
* WebCfgFeatures: configure general parameters (URL /xcb/config)
|
||||
*/
|
||||
void OvmsVehicleBoltEV::WebCfgFeatures(PageEntry_t& p, PageContext_t& c)
|
||||
{
|
||||
std::string error;
|
||||
bool preheat_override_BCM;
|
||||
bool extended_wakeup;
|
||||
std::string preheat_max_time;
|
||||
|
||||
if (c.method == "POST") {
|
||||
// process form submission:
|
||||
preheat_override_BCM = (c.getvar("preheat_override_BCM") == "yes");
|
||||
preheat_max_time = c.getvar("preheat_max_time");
|
||||
extended_wakeup = (c.getvar("extended_wakeup") == "yes");
|
||||
|
||||
// check values
|
||||
if (!preheat_max_time.empty()) {
|
||||
int n = atoi(preheat_max_time.c_str());
|
||||
if (n < 1 || n > 30)
|
||||
error += "<li data-input=\"preheat_max_time\">Preheat maximum time out of range (1…30) mins</li>";
|
||||
}
|
||||
|
||||
if (error == "") {
|
||||
// store:
|
||||
MyConfig.SetParamValueBool("xcb", "preheat.override_bcm", preheat_override_BCM);
|
||||
MyConfig.SetParamValue("xcb", "preheat.max_time", preheat_max_time);
|
||||
MyConfig.SetParamValueBool("xcb", "extended_wakeup", extended_wakeup);
|
||||
|
||||
c.head(200);
|
||||
c.alert("success", "<p class=\"lead\">Bolt EV feature configuration saved.</p>");
|
||||
MyWebServer.OutputHome(p, c);
|
||||
c.done();
|
||||
return;
|
||||
}
|
||||
|
||||
// output error, return to form:
|
||||
error = "<p class=\"lead\">Error!</p><ul class=\"errorlist\">" + error + "</ul>";
|
||||
c.head(400);
|
||||
c.alert("danger", error.c_str());
|
||||
} else {
|
||||
// read configuration:
|
||||
preheat_override_BCM = MyConfig.GetParamValueBool("xcb", "preheat.override_bcm", false);
|
||||
preheat_max_time = MyConfig.GetParamValue("xcb", "preheat.max_time", STR(VA_PREHEAT_MAX_TIME_DEFAULT));
|
||||
extended_wakeup = MyConfig.GetParamValueBool("xcb", "extended_wakeup", false);
|
||||
|
||||
c.head(200);
|
||||
}
|
||||
|
||||
// generate form
|
||||
c.panel_start("primary", "Bolt EV feature configuration");
|
||||
c.form_start(p.uri);
|
||||
|
||||
c.fieldset_start("SWCAN");
|
||||
c.print("<p>SWCAN module support: ");
|
||||
#ifdef CONFIG_OVMS_COMP_EXTERNAL_SWCAN
|
||||
c.print("enabled");
|
||||
#else
|
||||
c.print("disabled");
|
||||
#endif
|
||||
c.print("</p>");
|
||||
c.input_checkbox("Enable Extended Wake Up sequence", "extended_wakeup", extended_wakeup,
|
||||
"<p>Waking up only the Body Control Module and HVAC module should be enough for our purposes. If for some reason the Remote Start / Preheating "
|
||||
"or other Onstar functions do not work, please enable the Extended Wakeup feature which wakes up all the known modules and mimics better the wakeup sequence "
|
||||
"that the MyVoltStar application uses. However there's a longer lag (few seconds) before actions take place. </p>");
|
||||
c.fieldset_end();
|
||||
|
||||
c.fieldset_start("HVAC / Preheating / Remote Start");
|
||||
c.input_checkbox("Enable BCM overriding when invoking Remote Start", "preheat_override_BCM", preheat_override_BCM,
|
||||
"<p>Normally Remote start is invoked via key fob or by sending CAN messages that mimic those sent by Onstar module. However this does not "
|
||||
"seem to work on certain models (2014 Ampera). By enabling this option the OVMS takes control of the preheating/precooling "
|
||||
"and overrides the BCM by sending Remote Start CAN messages. Allows us also to set the maximum preheating time to longer than 20 minutes.</p>"
|
||||
"<p>Warning! Currently does not enable the 14V Auxiliary Module, so using this option may cause charge depletion of the 12V battery unless "
|
||||
"charging cable is connected!</p>"
|
||||
);
|
||||
c.input("number", "Maximum preheating/precooling time", "preheat_max_time", preheat_max_time.c_str(), "Default: 20 minutes",
|
||||
"<p>Maximum preheating time allowed. Note! This only applies when BCM overriding is enabled.</p>",
|
||||
"min=\"1\" step=\"1\" max=\"30\"", "minutes");
|
||||
c.fieldset_end();
|
||||
|
||||
c.print("<hr>");
|
||||
c.input_button("default", "Save");
|
||||
c.form_end();
|
||||
c.panel_end();
|
||||
c.done();
|
||||
}
|
||||
|
||||
#endif //CONFIG_OVMS_COMP_WEBSERVER
|
File diff suppressed because it is too large
Load Diff
|
@ -1,167 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 14th March 2017
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2011 Michael Stegen / Stegen Electronics
|
||||
; (C) 2011-2017 Mark Webb-Johnson
|
||||
; (C) 2011 Sonny Chen @ EPRO/DX
|
||||
; (C) 2022 Alexander von Gluck IV
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#ifndef __VEHICLE_BOLTEV_H__
|
||||
#define __VEHICLE_BOLTEV_H__
|
||||
|
||||
#include "vehicle.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
#ifdef CONFIG_OVMS_COMP_WEBSERVER
|
||||
#include "ovms_webserver.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_OVMS_COMP_EXTERNAL_SWCAN
|
||||
#include "swcan.h"
|
||||
#endif
|
||||
|
||||
class OvmsVehicleBoltEV : public OvmsVehicle
|
||||
{
|
||||
public:
|
||||
OvmsVehicleBoltEV();
|
||||
~OvmsVehicleBoltEV();
|
||||
|
||||
public:
|
||||
void Status(int verbosity, OvmsWriter* writer);
|
||||
void ConfigChanged(OvmsConfigParam* param);
|
||||
|
||||
typedef enum {
|
||||
Park = 1,
|
||||
Left_rear_signal = 2,
|
||||
Right_rear_signal = 4,
|
||||
Driver_front_signal = 8,
|
||||
Passenger_front_signal = 16,
|
||||
Center_stop_lamp = 32,
|
||||
Charging_indicator = 64,
|
||||
Interior_lamp = 128
|
||||
} va_light_t;
|
||||
|
||||
typedef enum {
|
||||
Disabled, // preheat disabled
|
||||
Fob, // preheat is activated via key fob and BCM controls it. OVMS just follows the procedure passively
|
||||
Onstar, // Onstar emulation. OVMS sends the Start/Stop commands but BCM controls the actual preheating
|
||||
OVMS // OVMS takes care of everything (starting, stopping, lights)
|
||||
} va_preheat_commander_t;
|
||||
|
||||
vehicle_command_t CommandWakeup();
|
||||
vehicle_command_t CommandClimateControl(bool enable);
|
||||
vehicle_command_t CommandLock(const char* pin);
|
||||
vehicle_command_t CommandUnlock(const char* pin);
|
||||
vehicle_command_t CommandHomelink(int button, int durationms=1000);
|
||||
vehicle_command_t CommandLights(va_light_t lights, bool turn_on);
|
||||
vehicle_command_t CommandSetChargeCurrent(uint16_t limit);
|
||||
void FlashLights(va_light_t light, int interval=500, int count=1); // milliseconds
|
||||
|
||||
protected:
|
||||
void IncomingFrameCan1(CAN_frame_t* p_frame);
|
||||
void IncomingFrameCan2(CAN_frame_t* p_frame);
|
||||
void IncomingFrameCan3(CAN_frame_t* p_frame);
|
||||
void IncomingFrameCan4(CAN_frame_t* p_frame);
|
||||
void IncomingPollReply(canbus* bus, uint16_t type, uint16_t pid, uint8_t* data, uint8_t length, uint16_t mlremain);
|
||||
void TxCallback(const CAN_frame_t* p_frame, bool success);
|
||||
void CommandWakeupComplete(const CAN_frame_t* p_frame, bool success);
|
||||
void SendTesterPresentMessage( uint32_t id );
|
||||
virtual void Ticker1(uint32_t ticker);
|
||||
virtual void Ticker10(uint32_t ticker);
|
||||
virtual void Ticker300(uint32_t ticker);
|
||||
virtual void NotifiedVehicleOn();
|
||||
virtual void NotifiedVehicleOff();
|
||||
virtual void NotifiedVehicleAwake();
|
||||
|
||||
// va_ac_preheat
|
||||
void ClimateControlInit();
|
||||
void ClimateControlPrintStatus(int verbosity, OvmsWriter* writer);
|
||||
void ClimateControlIncomingSWCAN(CAN_frame_t* p_frame);
|
||||
void AirConStatusUpdated( bool ac_enabled );
|
||||
const char * PreheatStatus();
|
||||
void PreheatModeChange( uint8_t preheat_status );
|
||||
void PreheatWatchdog();
|
||||
|
||||
//va_notify
|
||||
void NotifyFuel();
|
||||
void NotifyMetrics();
|
||||
|
||||
protected:
|
||||
char m_vin[18];
|
||||
char m_type[6];
|
||||
int m_modelyear;
|
||||
unsigned int m_charge_timer;
|
||||
unsigned int m_charge_wm;
|
||||
unsigned int m_candata_timer;
|
||||
unsigned int m_range_rated_km;
|
||||
unsigned int m_startPolling_timer;
|
||||
poll_pid_t * m_pPollingList;
|
||||
|
||||
canbus* p_swcan; // Either "can4" or "can3" bus, depending on which is connected to slow speed GMLAN bus
|
||||
#ifdef CONFIG_OVMS_COMP_EXTERNAL_SWCAN
|
||||
swcan* p_swcan_if; // Actual SWCAN interface with facilities to switch between normal and HVWUP modes
|
||||
#endif
|
||||
|
||||
CanFrameCallback wakeup_frame_sent;
|
||||
unsigned int m_tx_retry_counter;
|
||||
|
||||
// Bitwise status of the lights that we control. Used for establishing if sending periodic Tester Present messages is required
|
||||
uint32_t m_controlled_lights;
|
||||
uint32_t m_tester_present_timer;
|
||||
bool m_extended_wakeup;
|
||||
bool m_notify_metrics;
|
||||
|
||||
OvmsMetricInt * mt_preheat_status;
|
||||
OvmsMetricInt * mt_preheat_timer;
|
||||
OvmsMetricBool * mt_ac_active;
|
||||
OvmsMetricInt * mt_ac_front_blower_fan_speed; // %
|
||||
OvmsMetricFloat * mt_coolant_heater_pwr; // kW
|
||||
OvmsMetricInt * mt_coolant_temp;
|
||||
OvmsMetricVector<int> * mt_charging_limits;
|
||||
OvmsMetricInt * mt_fuel_level; // %
|
||||
OvmsMetricFloat * mt_v_trip_ev; // km
|
||||
|
||||
unsigned long m_preheat_modechange_timer;
|
||||
va_preheat_commander_t m_preheat_commander;
|
||||
unsigned int m_preheat_retry_counter;
|
||||
|
||||
#ifdef CONFIG_OVMS_COMP_WEBSERVER
|
||||
// --------------------------------------------------------------------------
|
||||
// Webserver subsystem
|
||||
// - implementation: va_web.(h,cpp)
|
||||
//
|
||||
|
||||
public:
|
||||
void WebInit();
|
||||
void WebCleanup();
|
||||
static void WebCfgFeatures(PageEntry_t& p, PageContext_t& c);
|
||||
|
||||
#endif //CONFIG_OVMS_COMP_WEBSERVER
|
||||
|
||||
};
|
||||
|
||||
#endif //#ifndef __VEHICLE_VOLTAMPERA_H__
|
|
@ -1,14 +0,0 @@
|
|||
#
|
||||
# Main component makefile.
|
||||
#
|
||||
# This Makefile can be left empty. By default, it will take the sources in the
|
||||
# src/ directory, compile them and link them into lib(subdirectory_name).a
|
||||
# in the build directory. This behaviour is entirely configurable,
|
||||
# please read the ESP-IDF documents if you need to do this.
|
||||
#
|
||||
|
||||
ifdef CONFIG_OVMS_VEHICLE_CADILLAC_C2_CTS
|
||||
COMPONENT_ADD_INCLUDEDIRS:=src
|
||||
COMPONENT_SRCDIRS:=src
|
||||
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
|
||||
endif
|
|
@ -1,387 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 9th May 2020
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2019 Michael Stegen / Stegen Electronics
|
||||
; (C) 2019 Mark Webb-Johnson
|
||||
; (C) 2020 Craig Leres
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#include "ovms_log.h"
|
||||
static const char *TAG = "v-cadillacc2cts";
|
||||
|
||||
#define F2C(f) (((f) - 32) / 1.8)
|
||||
|
||||
#include <stdio.h>
|
||||
#include "vehicle_cadillac_c2_cts.h"
|
||||
|
||||
OvmsVehicleCadillaccC2CTS* MyCadillaccC2CTS = NULL;
|
||||
|
||||
static const OvmsVehicle::poll_pid_t obdii_polls[] =
|
||||
{
|
||||
// Engine coolant temp
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x05, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
// Engine RPM
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x0c, { 10, 10, 10 }, 0, ISOTP_STD },
|
||||
// Speed
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x0d, { 0, 10, 10 }, 0, ISOTP_STD },
|
||||
// Engine air intake temp
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x0f, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
// Fuel level
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x2f, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
// Ambiant temp
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x46, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
// Engine oil temp
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x5c, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
#ifdef notdef
|
||||
// VIN
|
||||
// { 0x7df, 0, VEHICLE_POLL_TYPE_OBDIIVEHICLE, 0x02, {999,999,999 } },
|
||||
#endif
|
||||
POLL_LIST_END
|
||||
};
|
||||
|
||||
static volatile bool processing;
|
||||
|
||||
OvmsVehicleCadillaccC2CTS::OvmsVehicleCadillaccC2CTS()
|
||||
{
|
||||
ESP_LOGI(TAG, "Cadillac 2nd gen CTS vehicle module");
|
||||
memset(m_vin, 0, sizeof(m_vin));
|
||||
RegisterCanBus(1, CAN_MODE_ACTIVE, CAN_SPEED_500KBPS);
|
||||
RegisterCanBus(2, CAN_MODE_ACTIVE, CAN_SPEED_33KBPS);
|
||||
PollSetPidList(m_can1, obdii_polls);
|
||||
PollSetState(0);
|
||||
MyCadillaccC2CTS = this;
|
||||
}
|
||||
|
||||
#ifdef notdef
|
||||
StandardMetrics.ms_v_env_headlights->SetValue(?);
|
||||
#endif
|
||||
|
||||
OvmsVehicleCadillaccC2CTS::~OvmsVehicleCadillaccC2CTS()
|
||||
{
|
||||
ESP_LOGI(TAG, "Shutdown Cadillac 2nd gen CTS vehicle module");
|
||||
MyCadillaccC2CTS = NULL;
|
||||
}
|
||||
|
||||
void OvmsVehicleCadillaccC2CTS::IncomingFrameCan2(CAN_frame_t* p_frame)
|
||||
{
|
||||
int i, len;
|
||||
uint8_t *d;
|
||||
|
||||
processing = 1;
|
||||
d = p_frame->data.u8;
|
||||
len = p_frame->FIR.B.DLC;
|
||||
if (len > sizeof(p_frame->data))
|
||||
len = sizeof(p_frame->data);
|
||||
|
||||
switch (p_frame->MsgID)
|
||||
{
|
||||
#ifdef notdef
|
||||
case 0x1004C040:
|
||||
/* Maybe soc (fuel level)? */
|
||||
// 2R29 1004C040 00 68 05 7b 00 bb 00 00
|
||||
// 0 1 2 3 4 5 6 7
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef notdef
|
||||
case 0x1004C040:
|
||||
/* Engine RPM and run state */
|
||||
bool isRunning = (dp5] != 0);
|
||||
if (StandardMetrics.ms_v_env_on->AsBool() != isRunning) {
|
||||
StdMetrics.ms_v_env_on->SetValue(isRunning);
|
||||
|
||||
ESP_LOGI(TAG, "running: \"%s\"", isRunning ? "yes" : "no");
|
||||
}
|
||||
StandardMetrics.ms_v_mot_rpm->SetValue((d[2] << 8) + d[3]);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef notdef
|
||||
case 0x12A:
|
||||
/* XXX 0F9 might be a better "awake" pid */
|
||||
/* ??? is d[5] pressure? */
|
||||
|
||||
/* XXX we can probably find a better pid for this */
|
||||
if (!StandardMetrics.ms_v_env_awake->AsBool() ) {
|
||||
StandardMetrics.ms_v_env_awake->SetValue(true);
|
||||
|
||||
ESP_LOGI(TAG, "now awake");
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 0x10024040:
|
||||
/* First 8 of vin */
|
||||
if (m_vin[0] == '\0') {
|
||||
i = len;
|
||||
if (i > 8)
|
||||
i = 8;
|
||||
/* The World Manufacturer number: United States */
|
||||
m_vin[0] = '1';
|
||||
memcpy(m_vin + 1, d, i);
|
||||
if (m_vin[1 + 8] != '\0')
|
||||
StandardMetrics.ms_v_vin->SetValue(m_vin);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x10026040:
|
||||
/* Last 8 of vin */
|
||||
if (m_vin[1 + 8] == '\0') {
|
||||
i = len;
|
||||
if (i > 8)
|
||||
i = 8;
|
||||
memcpy(m_vin + 1 + 8, d, i);
|
||||
if (m_vin[0] != '\0')
|
||||
StandardMetrics.ms_v_vin->SetValue(m_vin);
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef notdef
|
||||
case 0x0C9:
|
||||
/* Throttle percentage */
|
||||
StandardMetrics.ms_v_env_throttle->SetValue(d[1]);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef notdef
|
||||
case 0x0f1:
|
||||
/* ??? d[1] brake 0-100% (0-254) */
|
||||
StandardMetrics.ms_v_env_footbrake->SetValue(d[2]);
|
||||
#ifdef notdef
|
||||
StandardMetrics.ms_v_env_handbrake->SetValue(?);
|
||||
#endif
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef notdef
|
||||
case 0x120:
|
||||
/* ??? Might be locks (vehicle_kiasoulev) */
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef notdef
|
||||
case 0x1f5:
|
||||
// ??? d[3] is transmission gear: ?? might only know R, N and other
|
||||
// 1=park, 2=reverse, F=neutral, ?=drive, ?=low ??
|
||||
// 0x20 is probably reverse
|
||||
// Gear/direction; negative=reverse, 0=neutral [1]
|
||||
StandardMetrics.ms_v_env_gear->SetValue(?);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef notdef
|
||||
case 0x771:
|
||||
/* ??? Might be open/lock doors (vehicle_kiasoulev) */
|
||||
StandardMetrics.ms_v_door_fl->SetValue(?);
|
||||
StandardMetrics.ms_v_door_fr->SetValue(?);
|
||||
StandardMetrics.ms_v_door_rl->SetValue(?);
|
||||
StandardMetrics.ms_v_door_rr->SetValue(?);
|
||||
|
||||
StandardMetrics.ms_v_door_hood->SetValue(?);
|
||||
StandardMetrics.ms_v_door_trunk->SetValue(?);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 0x4c1:
|
||||
/* ??? Ambient temperature (probably wrong) */
|
||||
/* ??? probably pressure (psi) of some kind */
|
||||
#ifdef notdef
|
||||
StandardMetrics.ms_v_env_temp->SetValue(F2C(d[4] - 0x28));
|
||||
// Cabin temperature
|
||||
StandardMetrics.ms_v_env_cabintemp->SetValue(F2C(?));
|
||||
#endif
|
||||
break;
|
||||
|
||||
#ifdef notdef
|
||||
case 0x???:
|
||||
/* ??? Speed */
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(?);
|
||||
#endif
|
||||
|
||||
#ifdef notdef
|
||||
case 0x???:
|
||||
/* ??? Odometer */
|
||||
StandardMetrics.ms_v_pos_odometer->SetValue(?);
|
||||
#endif
|
||||
|
||||
#ifdef notdef
|
||||
case 0x???:
|
||||
/* ??? TMPS */
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
processing = 0;
|
||||
}
|
||||
|
||||
void
|
||||
OvmsVehicleCadillaccC2CTS::IncomingPollReply(canbus* bus, uint16_t type,
|
||||
uint16_t pid, uint8_t* data, uint8_t length, uint16_t mlremain)
|
||||
{
|
||||
int value1 = (int)data[0];
|
||||
int value2 = ((int)data[0] << 8) + (int)data[1];
|
||||
|
||||
switch (pid)
|
||||
{
|
||||
#ifdef notdef
|
||||
case 0x02: // VIN (multi-line response)
|
||||
strncat(m_vin,(char*)data,length);
|
||||
if (mlremain==0)
|
||||
{
|
||||
StandardMetrics.ms_v_vin->SetValue(m_vin);
|
||||
m_vin[0] = 0;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 0x05: // Engine coolant temperature
|
||||
StandardMetrics.ms_v_bat_temp->SetValue(value1 - 0x28);
|
||||
break;
|
||||
|
||||
case 0x0f: // Engine intake air temperature
|
||||
StandardMetrics.ms_v_inv_temp->SetValue(value1 - 0x28);
|
||||
break;
|
||||
|
||||
case 0x5c: // Engine oil temperature
|
||||
StandardMetrics.ms_v_mot_temp->SetValue(value1 - 0x28);
|
||||
break;
|
||||
|
||||
case 0x46: // Ambient temperature
|
||||
StandardMetrics.ms_v_env_temp->SetValue(value1 - 0x28);
|
||||
break;
|
||||
|
||||
case 0x0d: // Speed
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(value1);
|
||||
break;
|
||||
|
||||
case 0x2f: // Fuel Level
|
||||
StandardMetrics.ms_v_bat_soc->SetValue((value1 * 100) >> 8);
|
||||
break;
|
||||
|
||||
case 0x0c: // Engine RPM
|
||||
if (value2 == 0)
|
||||
{ // Car engine is OFF
|
||||
PollSetState(0);
|
||||
StandardMetrics.ms_v_env_handbrake->SetValue(true);
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(0);
|
||||
StandardMetrics.ms_v_env_charging12v->SetValue(false);
|
||||
}
|
||||
else
|
||||
{ // Car engine is ON
|
||||
PollSetState(1);
|
||||
StandardMetrics.ms_v_env_handbrake->SetValue(false);
|
||||
StandardMetrics.ms_v_env_on->SetValue(true);
|
||||
StandardMetrics.ms_v_env_charging12v->SetValue(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
class OvmsVehicleCadillaccC2CTSInit
|
||||
{
|
||||
public: OvmsVehicleCadillaccC2CTSInit();
|
||||
} MyOvmsVehicleCadillaccC2CTSInit __attribute__ ((init_priority (9000)));
|
||||
|
||||
OvmsVehicleCadillaccC2CTSInit::OvmsVehicleCadillaccC2CTSInit()
|
||||
{
|
||||
ESP_LOGI(TAG, "Registering Vehicle: Cadillac 2nd gen CTS (9000)");
|
||||
|
||||
MyVehicleFactory.RegisterVehicle<OvmsVehicleCadillaccC2CTS>("C2CTS",
|
||||
"Cadillac 2nd gen CTS");
|
||||
if (!StandardMetrics.ms_v_env_on->AsBool())
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
}
|
||||
|
||||
// XXX from vehicle_nissanleaf.cpp
|
||||
/**
|
||||
* Ticker10: Called every ten seconds
|
||||
*/
|
||||
void OvmsVehicleCadillaccC2CTS::Ticker10(uint32_t ticker)
|
||||
{
|
||||
// FIXME
|
||||
// detecting that on is stale and therefor should turn off probably shouldn't
|
||||
// be done like this
|
||||
// perhaps there should be a car on-off state tracker and event generator in
|
||||
// the core framework?
|
||||
// perhaps interested code should be able to subscribe to "onChange" and
|
||||
// "onStale" events for each metric?
|
||||
|
||||
/* Skip if we're processing a can frame */
|
||||
if (!processing && StandardMetrics.ms_v_env_awake->AsBool() &&
|
||||
StandardMetrics.ms_v_env_awake->IsStale())
|
||||
{
|
||||
StandardMetrics.ms_v_env_awake->SetValue(false);
|
||||
ESP_LOGI(TAG, "now asleep");
|
||||
}
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleCadillaccC2CTS::CommandWakeup()
|
||||
{
|
||||
CAN_frame_t frame;
|
||||
memset(&frame,0,sizeof(frame));
|
||||
|
||||
frame.origin = m_can2;
|
||||
frame.FIR.U = 0;
|
||||
frame.FIR.B.DLC = 1;
|
||||
frame.FIR.B.FF = CAN_frame_std;
|
||||
frame.MsgID = 0x102;
|
||||
frame.data.u8[0] = 0x0a;
|
||||
m_can2->Write(&frame);
|
||||
|
||||
#ifdef notdef
|
||||
// XXX roadster version
|
||||
frame.origin = m_can2;
|
||||
frame.FIR.U = 0;
|
||||
frame.FIR.B.DLC = 8;
|
||||
frame.FIR.B.FF = CAN_frame_std;
|
||||
frame.MsgID = 0x102;
|
||||
frame.data.u8[0] = 0x06;
|
||||
frame.data.u8[1] = 0x2c;
|
||||
frame.data.u8[2] = 0x01;
|
||||
frame.data.u8[3] = 0x00;
|
||||
frame.data.u8[4] = 0x00;
|
||||
frame.data.u8[5] = 0x09;
|
||||
frame.data.u8[6] = 0x10;
|
||||
frame.data.u8[7] = 0x00;
|
||||
m_can2->Write(&frame);
|
||||
#endif
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t
|
||||
OvmsVehicleCadillaccC2CTS::CommandLock(const char* pin)
|
||||
{
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t
|
||||
OvmsVehicleCadillaccC2CTS::CommandUnlock(const char* pin)
|
||||
{
|
||||
return NotImplemented;
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 9th May 2020
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2019 Michael Stegen / Stegen Electronics
|
||||
; (C) 2019 Mark Webb-Johnson
|
||||
; (C) 2020 Craig Leres
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#ifndef __VEHICLE_CADILLAC_C2_CTS_H__
|
||||
#define __VEHICLE_CADILLAC_C2_CTS_H__
|
||||
|
||||
#include "vehicle.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
class OvmsVehicleCadillaccC2CTS : public OvmsVehicle
|
||||
{
|
||||
public:
|
||||
OvmsVehicleCadillaccC2CTS();
|
||||
~OvmsVehicleCadillaccC2CTS();
|
||||
|
||||
protected:
|
||||
void IncomingPollReply(canbus* bus, uint16_t type, uint16_t pid,
|
||||
uint8_t* data, uint8_t length, uint16_t mlremain);
|
||||
|
||||
public:
|
||||
void IncomingFrameCan2(CAN_frame_t* p_frame);
|
||||
|
||||
public:
|
||||
virtual vehicle_command_t CommandWakeup(void);
|
||||
virtual vehicle_command_t CommandLock(const char* pin);
|
||||
virtual vehicle_command_t CommandUnlock(const char* pin);
|
||||
|
||||
private:
|
||||
void Ticker10(uint32_t ticker);
|
||||
|
||||
protected:
|
||||
char m_vin[18];
|
||||
};
|
||||
|
||||
#endif //#ifndef __VEHICLE_CADILLAC_C2_CTS_H__
|
|
@ -1,14 +0,0 @@
|
|||
#
|
||||
# Main component makefile.
|
||||
#
|
||||
# This Makefile can be left empty. By default, it will take the sources in the
|
||||
# src/ directory, compile them and link them into lib(subdirectory_name).a
|
||||
# in the build directory. This behaviour is entirely configurable,
|
||||
# please read the ESP-IDF documents if you need to do this.
|
||||
#
|
||||
|
||||
ifdef CONFIG_OVMS_VEHICLE_CHEVROLET_C6_CORVETTE
|
||||
COMPONENT_ADD_INCLUDEDIRS:=src
|
||||
COMPONENT_SRCDIRS:=src
|
||||
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
|
||||
endif
|
|
@ -1,154 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 9th May 2020
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2011 Michael Stegen / Stegen Electronics
|
||||
; (C) 2011-2017 Mark Webb-Johnson
|
||||
; (C) 2011 Sonny Chen @ EPRO/DX
|
||||
; (C) 2020 Craig Leres
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#include "ovms_log.h"
|
||||
static const char *TAG = "v-chevroletc6corvette";
|
||||
|
||||
#include <stdio.h>
|
||||
#include "vehicle_chevrolet_c6_corvette.h"
|
||||
|
||||
static const OvmsVehicle::poll_pid_t obdii_polls[] =
|
||||
{
|
||||
// Engine coolant temp
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x05, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
// Engine RPM
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x0c, { 10, 10, 10 }, 0, ISOTP_STD },
|
||||
// Speed
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x0d, { 0, 10, 10 }, 0, ISOTP_STD },
|
||||
// Engine air intake temp
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x0f, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
// Fuel level
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x2f, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
// Ambiant temp
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x46, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
// Engine oil temp
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIICURRENT, 0x5c, { 0, 30, 30 }, 0, ISOTP_STD },
|
||||
// VIN
|
||||
{ 0x7df, 0, VEHICLE_POLL_TYPE_OBDIIVEHICLE, 0x02, {999,999,999 }, 0, ISOTP_STD },
|
||||
POLL_LIST_END
|
||||
};
|
||||
|
||||
OvmsVehicleChevroletC6Corvette::OvmsVehicleChevroletC6Corvette()
|
||||
{
|
||||
ESP_LOGI(TAG, "Chevrolet C6 Corvette vehicle module");
|
||||
|
||||
memset(m_vin,0,sizeof(m_vin));
|
||||
|
||||
RegisterCanBus(1,CAN_MODE_ACTIVE,CAN_SPEED_500KBPS);
|
||||
PollSetPidList(m_can1, obdii_polls);
|
||||
PollSetState(0);
|
||||
}
|
||||
|
||||
OvmsVehicleChevroletC6Corvette::~OvmsVehicleChevroletC6Corvette()
|
||||
{
|
||||
ESP_LOGI(TAG, "Shutdown Chevrolet C6 Corvette vehicle module");
|
||||
}
|
||||
|
||||
void OvmsVehicleChevroletC6Corvette::IncomingPollReply(canbus* bus, uint16_t type, uint16_t pid, uint8_t* data, uint8_t length, uint16_t mlremain)
|
||||
{
|
||||
int value1 = (int)data[0];
|
||||
int value2 = ((int)data[0] << 8) + (int)data[1];
|
||||
|
||||
switch (pid)
|
||||
{
|
||||
case 0x02: // VIN (multi-line response)
|
||||
// Data in the first frame starts with 0x01 for some (all?) vehicles
|
||||
if (length > 1 && data[0] == 0x01)
|
||||
{
|
||||
++data;
|
||||
--length;
|
||||
}
|
||||
strncat(m_vin,(char*)data,length);
|
||||
if (mlremain==0)
|
||||
{
|
||||
StandardMetrics.ms_v_vin->SetValue(m_vin);
|
||||
m_vin[0] = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x05: // Engine coolant temperature
|
||||
StandardMetrics.ms_v_bat_temp->SetValue(value1 - 0x28);
|
||||
break;
|
||||
|
||||
case 0x0f: // Engine intake air temperature
|
||||
StandardMetrics.ms_v_inv_temp->SetValue(value1 - 0x28);
|
||||
break;
|
||||
|
||||
case 0x5c: // Engine oil temperature
|
||||
StandardMetrics.ms_v_mot_temp->SetValue(value1 - 0x28);
|
||||
break;
|
||||
|
||||
case 0x46: // Ambient temperature
|
||||
StandardMetrics.ms_v_env_temp->SetValue(value1 - 0x28);
|
||||
break;
|
||||
|
||||
case 0x0d: // Speed
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(value1);
|
||||
break;
|
||||
|
||||
case 0x2f: // Fuel Level
|
||||
StandardMetrics.ms_v_bat_soc->SetValue((value1 * 100) >> 8);
|
||||
break;
|
||||
|
||||
case 0x0c: // Engine RPM
|
||||
if (value2 == 0)
|
||||
{ // Car engine is OFF
|
||||
PollSetState(0);
|
||||
StandardMetrics.ms_v_env_handbrake->SetValue(true);
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(0);
|
||||
StandardMetrics.ms_v_env_charging12v->SetValue(false);
|
||||
}
|
||||
else
|
||||
{ // Car engine is ON
|
||||
PollSetState(1);
|
||||
StandardMetrics.ms_v_env_handbrake->SetValue(false);
|
||||
StandardMetrics.ms_v_env_on->SetValue(true);
|
||||
StandardMetrics.ms_v_env_charging12v->SetValue(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
class OvmsVehicleChevroletC6CorvetteInit
|
||||
{
|
||||
public: OvmsVehicleChevroletC6CorvetteInit();
|
||||
} MyOvmsVehicleChevroletC6CorvetteInit __attribute__ ((init_priority (9000)));
|
||||
|
||||
OvmsVehicleChevroletC6CorvetteInit::OvmsVehicleChevroletC6CorvetteInit()
|
||||
{
|
||||
ESP_LOGI(TAG, "Registering Vehicle: Chevrolet C6 Corvette (9000)");
|
||||
|
||||
MyVehicleFactory.RegisterVehicle<OvmsVehicleChevroletC6Corvette>("C6CORVETTE",
|
||||
"Chevrolet C6 Corvette");
|
||||
if (!StandardMetrics.ms_v_env_on->AsBool())
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 9th May 2020
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2011 Michael Stegen / Stegen Electronics
|
||||
; (C) 2011-2017 Mark Webb-Johnson
|
||||
; (C) 2011 Sonny Chen @ EPRO/DX
|
||||
; (C) 2020 Craig Leres
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#ifndef __VEHICLE_CHEVROLET_C6_CORVETTE_H__
|
||||
#define __VEHICLE_CHEVROLET_C6_CORVETTE_H__
|
||||
|
||||
#include "vehicle.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
class OvmsVehicleChevroletC6Corvette : public OvmsVehicle
|
||||
{
|
||||
public:
|
||||
OvmsVehicleChevroletC6Corvette();
|
||||
~OvmsVehicleChevroletC6Corvette();
|
||||
|
||||
protected:
|
||||
void IncomingPollReply(canbus* bus, uint16_t type, uint16_t pid, uint8_t* data, uint8_t length, uint16_t mlremain);
|
||||
|
||||
protected:
|
||||
char m_vin[18];
|
||||
};
|
||||
|
||||
#endif //#ifndef __VEHICLE_CHEVROLET_C6_CORVETTE_H__
|
|
@ -1,12 +0,0 @@
|
|||
#
|
||||
# Main component makefile.
|
||||
#
|
||||
# This Makefile can be left empty. By default, it will take the sources in the
|
||||
# src/ directory, compile them and link them into lib(subdirectory_name).a
|
||||
# in the build directory. This behaviour is entirely configurable,
|
||||
# please read the ESP-IDF documents if you need to do this.
|
||||
#
|
||||
|
||||
COMPONENT_ADD_INCLUDEDIRS:=src
|
||||
COMPONENT_SRCDIRS:=src
|
||||
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
|
|
@ -1,192 +0,0 @@
|
|||
================
|
||||
DBC Introduction
|
||||
================
|
||||
|
||||
DBC is a CAN data description file format introduced by `Vector Informatik GmbH <https://www.vector.com/>`_.
|
||||
DBC files are text files so can be created and edited using a simple text editor like the one built into
|
||||
the OVMS web UI.
|
||||
|
||||
DBC files can be used to support vehicles that don't have a dedicated native adaption yet. This is done
|
||||
using the generic DBC vehicle type, which can use DBC files to translate CAN data into metrics.
|
||||
|
||||
This section tries to show you how to create and use a DBC specification on the OVMS. Of course
|
||||
you'll need to know how to decode your vehicle's CAN frames first. You can use the OVMS RE (reverse
|
||||
engineering) toolkit to identify which messages are on the bus and which changes correlate to
|
||||
actions and status on the car.
|
||||
|
||||
There's also a very good general introduction to DBC from CSS Electronics including an explanatory video:
|
||||
https://www.csselectronics.com/screen/page/can-dbc-file-database-intro/language/en
|
||||
|
||||
DBC files only specify the passive (reading) part, they don't provide a means to define transmissions.
|
||||
If you need to send frames to request certain information, you can still use the OVMS DBC engine to
|
||||
decode the results (instead of doing the decoding in C++ code). So a DBC file can be used as a base
|
||||
for a real vehicle module. To request OBD2 data during development, you can use the ``re obdii``
|
||||
commands.
|
||||
|
||||
|
||||
-------------
|
||||
Basic Example
|
||||
-------------
|
||||
|
||||
.. warning::
|
||||
The DBC support is usable, but considered to be an alpha release.
|
||||
The way it works may change in the future.
|
||||
|
||||
This example is taken from the **Twizy**, which sends some primary BMS status data at CAN ID 0x155 (341).
|
||||
Note: the Twizy module actually does not use DBC, this is just an example how you would decode this
|
||||
message if using DBC.
|
||||
|
||||
**Message example**: ``05 96 E7 54 6D 58 00 6F``
|
||||
|
||||
- Byte 0: charge current limit [A], scaled by 5, no offset: ``05`` → **25A**
|
||||
- Bytes 1+2: momentary battery current [A], big endian, lower 12 bits, scaled by -0.25, offset +500: ``_6 E7`` → **58.25A**
|
||||
- Bytes 4+5: SOC [%], big endian, scaled by 0.0025, no offset: ``6D 58`` → **69.98%**
|
||||
|
||||
These can be translated to metrics directly:
|
||||
|
||||
- Charge current limit: ``v.c.climit``
|
||||
- Momentary battery current: ``v.b.current``
|
||||
- Battery SOC: ``v.b.soc``
|
||||
|
||||
|
||||
---------------
|
||||
Create DBC File
|
||||
---------------
|
||||
|
||||
**Copy & paste** the following into a new editor window:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
VERSION "DBC Example 1.0"
|
||||
|
||||
BS_: 500000 : 0,0
|
||||
|
||||
BO_ 341 BMS_1: 8 Vector__XXX
|
||||
SG_ v_c_climit : 7|8@0+ (5,0) [0|35] "A" Vector__XXX
|
||||
SG_ v_b_current : 11|12@0+ (-0.25,500) [-500|1000] "A" Vector__XXX
|
||||
SG_ v_b_soc : 39|16@0+ (0.0025,0) [0|100] "%" Vector__XXX
|
||||
|
||||
|
||||
**What does this mean?**
|
||||
|
||||
- ``BS_`` defines the bus speed (500 kbit in this example) and bit timings (unused)
|
||||
- ``BO_`` defines the data object, a CAN frame of length 8 with ID 341 (0x155) ("BMS_1" is just an arbitrary name)
|
||||
- ``SG_`` lines define the signals (values) embedded in the object (see below)
|
||||
- ``Vector__XXX`` is just a placeholder for any sender/receiver (currently unused by the OVMS)
|
||||
|
||||
**Signals** are defined by their…
|
||||
|
||||
- Name (= metric name with ``.`` replaced by ``_``)
|
||||
- Start position (bit position) and bit length (``7|8``)
|
||||
- Endianness: ``0`` = big endian (most significant byte first), ``1`` = little endian (least significant byte first) (Note: the DBC format documentation is wrong on this)
|
||||
- Signedness: ``+`` = unsigned, ``-`` = signed
|
||||
- Scaling and offset: ``(-0.25,500)`` => real value = raw value * -0.25 + 500
|
||||
- Minimum/maximum: ``[-500|1000]`` = valid real values are in the range -500 to 1000
|
||||
- Unit: e.g. ``"A"`` (ignored/irrelevant, defined by the metric)
|
||||
|
||||
The metric to set can be given as the name of the signal. You may use the metric name directly
|
||||
on the OVMS, but to conform to the DBC standard, replace the dots by ``_``.
|
||||
|
||||
**Bit positions** are counted from byte 0 upwards by their significance, regardless of the endianness.
|
||||
The first message byte has bits 0…7 with bit 7 being the most significant bit of the byte. The
|
||||
second byte has bits 8…15 with bit 15 being the MSB, and so on:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[ 7 6 5 4 3 2 1 0 ] [ 15 14 13 12 11 10 9 8 ] [ 23 22 21 20 …
|
||||
`----- Byte 0 ----´ `------- Byte 1 --------´ `----- Byte 2 …
|
||||
|
||||
For big endian values, signal start bit positions are given for the most significant bit. For
|
||||
little endian values, the start position is that of the least significant bit.
|
||||
|
||||
.. note::
|
||||
**On endianness**: "big endian" means a byte sequence of ``0x12 0x34`` decodes into ``0x1234``
|
||||
(most significant byte first), "little endian" means the same byte sequence decodes into ``0x3412``
|
||||
(least significant byte first). "Big endian" is the natural way of writing numbers, i.e. with their
|
||||
most significant digit coming first, "little endian" is vice versa. Endianness only applies
|
||||
to values of multiple bytes, single byte values are always written naturally / "big endian".
|
||||
|
||||
|
||||
------------
|
||||
Use DBC File
|
||||
------------
|
||||
|
||||
**Save** the DBC example as: ``/store/dbc/twizy1.dbc`` (the directory will be created by the editor)
|
||||
|
||||
**Open the shell**. To see debug logs, issue ``log level debug dbc-parser`` and ``log level debug v-dbc``.
|
||||
|
||||
Note: the DBC parser currently isn't graceful on errors, **a wrong DBC file may crash the module**.
|
||||
So you should only enable automatic loading of DBC files on boot when you're done developing
|
||||
and testing it.
|
||||
|
||||
So let's first try if the **DBC engine can parse** our file. The ``dbc autoload`` command loads all
|
||||
DBC files from the ``/store/dbc`` directory:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
OVMS# dbc autoload
|
||||
Auto-loading DBC files...
|
||||
D (238062) dbc-parser: VERSION parsed as: DBC Example 1.0
|
||||
D (238062) dbc-parser: BU_ parsed 1 nodes
|
||||
D (238062) dbc-parser: BO_ parsed message 341
|
||||
D (238072) dbc-parser: SG_ parsed signal v_c_climit
|
||||
D (238072) dbc-parser: SG_ parsed signal v_b_current
|
||||
D (238082) dbc-parser: SG_ parsed signal v_b_soc
|
||||
|
||||
Looks good. ``dbc list`` can tell us some statistics:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
OVMS# dbc list
|
||||
twizy1: DBC Example 1.0: 1 message(s), 3 signal(s), 56% coverage, 1 lock(s)
|
||||
|
||||
The coverage tells us how much of our CAN data bits are covered by signal definitions.
|
||||
|
||||
Now let's **load the file into the DBC vehicle**:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
OVMS# config set vehicle dbc.can1 twizy1
|
||||
Parameter has been set.
|
||||
|
||||
OVMS# vehicle module NONE
|
||||
I (1459922) v-none: Generic NONE vehicle module
|
||||
|
||||
OVMS# vehicle module DBC
|
||||
I (249022) v-dbc: Pure DBC vehicle module
|
||||
I (249022) v-dbc: Registering can bus #1 as DBC twizy1
|
||||
|
||||
Nice. Let's **simulate receiving our test frame** and check the decoded metrics:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
OVMS# can can1 rx standard 155 05 96 E7 54 6D 58 00 6F
|
||||
OVMS# me li v.b.soc
|
||||
v.b.soc 69.98%
|
||||
OVMS# me li v.b.current
|
||||
v.b.current 58.25A
|
||||
OVMS# me li v.c.climit
|
||||
v.c.climit 25A
|
||||
|
||||
So the decoding apparently works.
|
||||
|
||||
**To configure DBC mode for autostart** we now just need to set the DBC vehicle mode to be
|
||||
loaded on vehicle startup, and to enable autoloading of the DBC files from ``/store/dbc``. You can
|
||||
do so either by using the user interface page Config → Autostart (check "Autoload DBC files" and
|
||||
set the vehicle type to "DBC"), or from the shell by…
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
OVMS# config set auto dbc yes
|
||||
OVMS# config set auto vehicle.type DBC
|
||||
|
||||
Try a reboot to see if everything works.
|
||||
|
||||
You can now add more objects and signals to your DBC file.
|
||||
|
||||
|
||||
.. note::
|
||||
During development of a DBC file, you'll need to reload the file frequently. The DBC engine
|
||||
locks the currently used vehicle, so you'll need to unload the DBC vehicle (``vehicle module NONE``),
|
||||
then reload the DBC file (``dbc autoload``), then reactivate the DBC vehicle (``vehicle module DBC``).
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
==================
|
||||
DBC Based Vehicles
|
||||
==================
|
||||
|
||||
Vehicle Type: **DBC**
|
||||
|
||||
The DBC based vehicle reads a specified DBC file describing CAN bus messages and produces vehicle metrics from that. It is under development, experimental, and not generally available.
|
||||
|
||||
----------------
|
||||
Support Overview
|
||||
----------------
|
||||
|
||||
=========================== ==============
|
||||
Function Support Status
|
||||
=========================== ==============
|
||||
Hardware This is vehicle specific. The DBC vehicle module can be configured to use any or all of the 3 CAN buses.
|
||||
Vehicle Cable Vehicle specific
|
||||
GSM Antenna Standard GSM antenna
|
||||
GPS Antenna Vehicle specific. Standard OVMS GPS supported.
|
||||
SOC Display Yes, if DBC maps it
|
||||
Range Display Yes, if DBC maps it
|
||||
GPS Location Yes, if DBC maps it, otherwise OVMS GPS
|
||||
Speed Display Yes, if DBC maps it
|
||||
Temperature Display Yes, if DBC maps it
|
||||
BMS v+t Display Not currently supported
|
||||
TPMS Display Yes, if DBC maps it
|
||||
Charge Status Display Yes, if DBC maps it
|
||||
Charge Interruption Alerts Yes, if DBC maps it
|
||||
Charge Control Not supported by DBC format, maybe by extension
|
||||
Cabin Pre-heat/cool Control Not supported by DBC format, maybe by extension
|
||||
Lock/Unlock Vehicle Not supported by DBC format, maybe by extension
|
||||
Valet Mode Control Not supported by DBC format, maybe by extension
|
||||
Others None
|
||||
=========================== ==============
|
||||
|
||||
|
||||
--------
|
||||
Contents
|
||||
--------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
dbc-primer
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 14th March 2017
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2011 Michael Stegen / Stegen Electronics
|
||||
; (C) 2011-2017 Mark Webb-Johnson
|
||||
; (C) 2011 Sonny Chen @ EPRO/DX
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#include "ovms_log.h"
|
||||
static const char *TAG = "v-dbc";
|
||||
|
||||
#include "vehicle_dbc.h"
|
||||
#include "dbc_app.h"
|
||||
|
||||
OvmsVehicleDBC::OvmsVehicleDBC()
|
||||
{
|
||||
}
|
||||
|
||||
OvmsVehicleDBC::~OvmsVehicleDBC()
|
||||
{
|
||||
if (m_can1) m_can1->DetachDBC();
|
||||
if (m_can2) m_can2->DetachDBC();
|
||||
if (m_can3) m_can3->DetachDBC();
|
||||
}
|
||||
|
||||
bool OvmsVehicleDBC::RegisterCanBusDBC(int bus, CAN_mode_t mode, const char* name, const char* dbc)
|
||||
{
|
||||
dbcfile *ndbc = MyDBC.LoadString(name, dbc);
|
||||
if (ndbc == NULL) return false;
|
||||
|
||||
OvmsVehicle::RegisterCanBus(bus, mode, (CAN_speed_t)(ndbc->m_bittiming.GetBaudRate()/1000),ndbc);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OvmsVehicleDBC::RegisterCanBusDBCLoaded(int bus, CAN_mode_t mode, const char* dbcloaded)
|
||||
{
|
||||
dbcfile* ndbc = MyDBC.Find(dbcloaded);
|
||||
if (ndbc==NULL) return false;
|
||||
OvmsVehicle::RegisterCanBus(bus, mode, (CAN_speed_t)(ndbc->m_bittiming.GetBaudRate()/1000),ndbc);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OvmsVehicleDBC::IncomingFrameCan1(CAN_frame_t* p_frame)
|
||||
{
|
||||
// This should be called from the IncomingFrameCan1 handler of the derived vehicle class
|
||||
IncomingFrame(m_can1, p_frame);
|
||||
}
|
||||
|
||||
void OvmsVehicleDBC::IncomingFrameCan2(CAN_frame_t* p_frame)
|
||||
{
|
||||
// This should be called from the IncomingFrameCan1 handler of the derived vehicle class
|
||||
IncomingFrame(m_can2, p_frame);
|
||||
}
|
||||
|
||||
void OvmsVehicleDBC::IncomingFrameCan3(CAN_frame_t* p_frame)
|
||||
{
|
||||
// This should be called from the IncomingFrameCan1 handler of the derived vehicle class
|
||||
IncomingFrame(m_can3, p_frame);
|
||||
}
|
||||
|
||||
void OvmsVehicleDBC::IncomingFrame(canbus* bus, CAN_frame_t* frame)
|
||||
{
|
||||
dbcfile* dbc = bus->GetDBC();
|
||||
if (dbc==NULL) return;
|
||||
|
||||
dbcMessage* msg = dbc->m_messages.FindMessage(frame->FIR.B.FF, frame->MsgID);
|
||||
if (msg)
|
||||
{
|
||||
dbcSignal* mux = msg->GetMultiplexorSignal();
|
||||
uint32_t muxval;
|
||||
if (mux)
|
||||
{
|
||||
dbcNumber r = mux->Decode(frame);
|
||||
muxval = r.GetSignedInteger();
|
||||
}
|
||||
for (dbcSignal* sig : msg->m_signals)
|
||||
{
|
||||
OvmsMetric* m = sig->GetMetric();
|
||||
if (m)
|
||||
{
|
||||
if ((mux==NULL)||(sig->GetMultiplexSwitchvalue() == muxval))
|
||||
{
|
||||
dbcNumber r = sig->Decode(frame);
|
||||
m->SetValue(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OvmsVehiclePureDBC::OvmsVehiclePureDBC()
|
||||
{
|
||||
ESP_LOGI(TAG, "Pure DBC vehicle module");
|
||||
|
||||
std::string dbctype;
|
||||
|
||||
dbctype = MyConfig.GetParamValue("vehicle", "dbc.can1");
|
||||
if (dbctype.length()>0)
|
||||
{
|
||||
ESP_LOGI(TAG,"Registering can bus #1 as DBC %s",dbctype.c_str());
|
||||
RegisterCanBusDBCLoaded(1, CAN_MODE_LISTEN, dbctype.c_str());
|
||||
}
|
||||
|
||||
dbctype = MyConfig.GetParamValue("vehicle", "dbc.can2");
|
||||
if (dbctype.length()>0)
|
||||
{
|
||||
ESP_LOGI(TAG,"Registering can bus #2 as DBC %s",dbctype.c_str());
|
||||
RegisterCanBusDBCLoaded(2, CAN_MODE_LISTEN, dbctype.c_str());
|
||||
}
|
||||
|
||||
dbctype = MyConfig.GetParamValue("vehicle", "dbc.can3");
|
||||
if (dbctype.length()>0)
|
||||
{
|
||||
ESP_LOGI(TAG,"Registering can bus #3 as DBC %s",dbctype.c_str());
|
||||
RegisterCanBusDBCLoaded(3, CAN_MODE_LISTEN, dbctype.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
OvmsVehiclePureDBC::~OvmsVehiclePureDBC()
|
||||
{
|
||||
ESP_LOGI(TAG, "Shutdown Pure DBC vehicle module");
|
||||
}
|
||||
|
||||
void OvmsVehiclePureDBC::IncomingFrameCan1(CAN_frame_t* p_frame)
|
||||
{
|
||||
OvmsVehicleDBC::IncomingFrameCan1(p_frame);
|
||||
}
|
||||
|
||||
void OvmsVehiclePureDBC::IncomingFrameCan2(CAN_frame_t* p_frame)
|
||||
{
|
||||
OvmsVehicleDBC::IncomingFrameCan2(p_frame);
|
||||
}
|
||||
|
||||
void OvmsVehiclePureDBC::IncomingFrameCan3(CAN_frame_t* p_frame)
|
||||
{
|
||||
OvmsVehicleDBC::IncomingFrameCan3(p_frame);
|
||||
}
|
||||
|
||||
class OvmsVehiclePureDBCInit
|
||||
{
|
||||
public: OvmsVehiclePureDBCInit();
|
||||
} MyOvmsVehiclePureDBCInit __attribute__ ((init_priority (9000)));
|
||||
|
||||
OvmsVehiclePureDBCInit::OvmsVehiclePureDBCInit()
|
||||
{
|
||||
ESP_LOGI(TAG, "Registering Vehicle: DBC based vehicle (9000)");
|
||||
|
||||
MyVehicleFactory.RegisterVehicle<OvmsVehiclePureDBC>("DBC","DBC-based Vehicle");
|
||||
}
|
|
@ -1,70 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 14th March 2017
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2011 Michael Stegen / Stegen Electronics
|
||||
; (C) 2011-2017 Mark Webb-Johnson
|
||||
; (C) 2011 Sonny Chen @ EPRO/DX
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#ifndef __VEHICLE_DBC_H__
|
||||
#define __VEHICLE_DBC_H__
|
||||
|
||||
#include "vehicle.h"
|
||||
#include "dbc.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
class OvmsVehicleDBC : public OvmsVehicle
|
||||
{
|
||||
public:
|
||||
OvmsVehicleDBC();
|
||||
virtual ~OvmsVehicleDBC();
|
||||
|
||||
protected:
|
||||
bool RegisterCanBusDBC(int bus, CAN_mode_t mode, const char* name, const char* dbc);
|
||||
bool RegisterCanBusDBCLoaded(int bus, CAN_mode_t mode, const char* dbcloaded);
|
||||
|
||||
protected:
|
||||
virtual void IncomingFrameCan1(CAN_frame_t* p_frame);
|
||||
virtual void IncomingFrameCan2(CAN_frame_t* p_frame);
|
||||
virtual void IncomingFrameCan3(CAN_frame_t* p_frame);
|
||||
|
||||
protected:
|
||||
virtual void IncomingFrame(canbus* bus, CAN_frame_t* frame);
|
||||
};
|
||||
|
||||
class OvmsVehiclePureDBC : public OvmsVehicleDBC
|
||||
{
|
||||
public:
|
||||
OvmsVehiclePureDBC();
|
||||
~OvmsVehiclePureDBC();
|
||||
|
||||
public:
|
||||
void IncomingFrameCan1(CAN_frame_t* p_frame);
|
||||
void IncomingFrameCan2(CAN_frame_t* p_frame);
|
||||
void IncomingFrameCan3(CAN_frame_t* p_frame);
|
||||
};
|
||||
|
||||
#endif //#ifndef __VEHICLE_DBC_H__
|
|
@ -1,14 +0,0 @@
|
|||
#
|
||||
# Main component makefile.
|
||||
#
|
||||
# This Makefile can be left empty. By default, it will take the sources in the
|
||||
# src/ directory, compile them and link them into lib(subdirectory_name).a
|
||||
# in the build directory. This behaviour is entirely configurable,
|
||||
# please read the ESP-IDF documents if you need to do this.
|
||||
#
|
||||
|
||||
ifdef CONFIG_OVMS_VEHICLE_DEMO
|
||||
COMPONENT_ADD_INCLUDEDIRS:=src
|
||||
COMPONENT_SRCDIRS:=src
|
||||
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
|
||||
endif
|
|
@ -1,34 +0,0 @@
|
|||
============
|
||||
DEMO Vehicle
|
||||
============
|
||||
|
||||
Vehicle Type: **DEMO**
|
||||
|
||||
The demonstration vehicle can be used to verify module functionality, but is mostly used for development purposes. The vehicle itself updates system metrics with simulated data. It can respond to charge, and other similar, commands.
|
||||
|
||||
----------------
|
||||
Support Overview
|
||||
----------------
|
||||
|
||||
=========================== ==============
|
||||
Function Support Status
|
||||
=========================== ==============
|
||||
Hardware Demonstration data only, no vehicle connection
|
||||
Vehicle Cable None, not required (other than power)
|
||||
GSM Antenna Standard GSM antenna
|
||||
GPS Antenna None, not required
|
||||
SOC Display Yes
|
||||
Range Display Yes
|
||||
GPS Location Yes
|
||||
Speed Display Yes
|
||||
Temperature Display Yes
|
||||
BMS v+t Display Not currently supported
|
||||
TPMS Display Yes
|
||||
Charge Status Display Yes
|
||||
Charge Interruption Alerts Yes
|
||||
Charge Control Yes
|
||||
Cabin Pre-heat/cool Control Not currently supported
|
||||
Lock/Unlock Vehicle Yes
|
||||
Valet Mode Control Yes
|
||||
Others None
|
||||
=========================== ==============
|
|
@ -1,301 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 14th March 2017
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2011 Michael Stegen / Stegen Electronics
|
||||
; (C) 2011-2017 Mark Webb-Johnson
|
||||
; (C) 2011 Sonny Chen @ EPRO/DX
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#include "ovms_log.h"
|
||||
static const char *TAG = "v-demo";
|
||||
|
||||
#include <stdio.h>
|
||||
#include "vehicle_demo.h"
|
||||
#include "metrics_standard.h"
|
||||
|
||||
OvmsVehicleDemo::OvmsVehicleDemo()
|
||||
{
|
||||
ESP_LOGI(TAG, "Demonstration vehicle module");
|
||||
|
||||
StandardMetrics.ms_v_type->SetValue("DEMO");
|
||||
StandardMetrics.ms_v_vin->SetValue("DEMODEMODEMO");
|
||||
|
||||
StandardMetrics.ms_v_bat_soc->SetValue(50);
|
||||
StandardMetrics.ms_v_bat_soh->SetValue(100);
|
||||
StandardMetrics.ms_v_bat_cac->SetValue(160);
|
||||
StandardMetrics.ms_v_bat_voltage->SetValue(400);
|
||||
StandardMetrics.ms_v_bat_current->SetValue(0);
|
||||
StandardMetrics.ms_v_bat_power->SetValue(0);
|
||||
StandardMetrics.ms_v_bat_energy_used->SetValue(0);
|
||||
StandardMetrics.ms_v_bat_energy_recd->SetValue(0);
|
||||
StandardMetrics.ms_v_bat_range_full->SetValue(400);
|
||||
StandardMetrics.ms_v_bat_range_ideal->SetValue(200);
|
||||
StandardMetrics.ms_v_bat_range_est->SetValue(160);
|
||||
StandardMetrics.ms_v_bat_12v_voltage->SetValue(12);
|
||||
StandardMetrics.ms_v_bat_12v_current->SetValue(0);
|
||||
StandardMetrics.ms_v_bat_temp->SetValue(25);
|
||||
StandardMetrics.ms_v_charge_voltage->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_current->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_climit->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_kwh->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_mode->SetValue("standard");
|
||||
StandardMetrics.ms_v_charge_timermode->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_timerstart->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_state->SetValue("done");
|
||||
StandardMetrics.ms_v_charge_substate->SetValue("stopped");
|
||||
StandardMetrics.ms_v_charge_type->SetValue("type2");
|
||||
StandardMetrics.ms_v_charge_pilot->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_inprogress->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_limit_range->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_limit_soc->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_duration_full->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_duration_range->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_duration_soc->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_temp->SetValue(22);
|
||||
StandardMetrics.ms_v_inv_temp->SetValue(22);
|
||||
StandardMetrics.ms_v_mot_rpm->SetValue(0);
|
||||
StandardMetrics.ms_v_mot_temp->SetValue(30);
|
||||
StandardMetrics.ms_v_door_fl->SetValue(false);
|
||||
StandardMetrics.ms_v_door_fr->SetValue(false);
|
||||
StandardMetrics.ms_v_door_rl->SetValue(false);
|
||||
StandardMetrics.ms_v_door_rr->SetValue(false);
|
||||
StandardMetrics.ms_v_door_chargeport->SetValue(false);
|
||||
StandardMetrics.ms_v_door_hood->SetValue(false);
|
||||
StandardMetrics.ms_v_door_trunk->SetValue(false);
|
||||
StandardMetrics.ms_v_env_drivemode->SetValue(0);
|
||||
StandardMetrics.ms_v_env_handbrake->SetValue(false);
|
||||
StandardMetrics.ms_v_env_awake->SetValue(false);
|
||||
StandardMetrics.ms_v_env_charging12v->SetValue(false);
|
||||
StandardMetrics.ms_v_env_cooling->SetValue(false);
|
||||
StandardMetrics.ms_v_env_heating->SetValue(false);
|
||||
StandardMetrics.ms_v_env_hvac->SetValue(false);
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
StandardMetrics.ms_v_env_locked->SetValue(false);
|
||||
StandardMetrics.ms_v_env_valet->SetValue(false);
|
||||
StandardMetrics.ms_v_env_headlights->SetValue(false);
|
||||
StandardMetrics.ms_v_env_alarm->SetValue(false);
|
||||
StandardMetrics.ms_v_env_ctrl_login->SetValue(false);
|
||||
StandardMetrics.ms_v_env_ctrl_config->SetValue(false);
|
||||
StandardMetrics.ms_v_env_temp->SetValue(22);
|
||||
StandardMetrics.ms_v_pos_gpslock->SetValue(true);
|
||||
StandardMetrics.ms_v_pos_satcount->SetValue(12);
|
||||
StandardMetrics.ms_v_pos_latitude->SetValue(22.280868);
|
||||
StandardMetrics.ms_v_pos_longitude->SetValue(114.160598);
|
||||
StandardMetrics.ms_v_pos_direction->SetValue(10);
|
||||
StandardMetrics.ms_v_pos_altitude->SetValue(30);
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(0);
|
||||
StandardMetrics.ms_v_pos_odometer->SetValue(100000);
|
||||
StandardMetrics.ms_v_pos_trip->SetValue(0);
|
||||
StandardMetrics.ms_v_tpms_pressure->SetValue(std::vector<float>{ 206.843, 216.483, 275.79, 175.79 });
|
||||
StandardMetrics.ms_v_tpms_temp->SetValue(std::vector<float>{ 33, 33, 34, 38 });
|
||||
StandardMetrics.ms_v_tpms_health->SetValue(std::vector<float>{ 95, 93, 96, 74 });
|
||||
StandardMetrics.ms_v_tpms_alert->SetValue(std::vector<short>{ 0, 0, 0, 1 });
|
||||
}
|
||||
|
||||
OvmsVehicleDemo::~OvmsVehicleDemo()
|
||||
{
|
||||
ESP_LOGI(TAG, "Shutdown demonstration vehicle module");
|
||||
}
|
||||
|
||||
void OvmsVehicleDemo::Ticker1(uint32_t ticker)
|
||||
{
|
||||
OvmsVehicle::Ticker1(ticker);
|
||||
|
||||
if (StandardMetrics.ms_v_env_on->AsBool())
|
||||
{
|
||||
// We are driving
|
||||
int speed = StandardMetrics.ms_v_pos_speed->AsInt() + (rand()%3) -1;
|
||||
if (speed<0) speed = 0;
|
||||
else if (speed>100) speed = 100;
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(speed);
|
||||
StandardMetrics.ms_v_mot_rpm->SetValue(speed*112);
|
||||
}
|
||||
}
|
||||
|
||||
void OvmsVehicleDemo::Ticker10(uint32_t ticker)
|
||||
{
|
||||
OvmsVehicle::Ticker10(ticker);
|
||||
|
||||
if (StandardMetrics.ms_v_charge_inprogress->AsBool())
|
||||
{
|
||||
// We are charging
|
||||
float soc = StandardMetrics.ms_v_bat_soc->AsFloat();
|
||||
if (soc < 100)
|
||||
{
|
||||
soc += 0.1;
|
||||
StandardMetrics.ms_v_bat_soc->SetValue(soc);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Car full
|
||||
StandardMetrics.ms_v_charge_inprogress->SetValue(false);
|
||||
StandardMetrics.ms_v_door_chargeport->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_state->SetValue("done");
|
||||
StandardMetrics.ms_v_charge_substate->SetValue("stopped");
|
||||
StandardMetrics.ms_v_charge_pilot->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_voltage->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_current->SetValue(0);
|
||||
}
|
||||
}
|
||||
else if (StandardMetrics.ms_v_env_on->AsBool())
|
||||
{
|
||||
// We are driving
|
||||
float soc = StandardMetrics.ms_v_bat_soc->AsFloat();
|
||||
if (soc > 0)
|
||||
{
|
||||
int speed = StandardMetrics.ms_v_pos_speed->AsInt() + (rand()%3) -1;
|
||||
if (speed<0) speed = 0;
|
||||
else if (speed>100) speed = 100;
|
||||
soc -= 0.1;
|
||||
StandardMetrics.ms_v_bat_soc->SetValue(soc);
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(speed);
|
||||
StandardMetrics.ms_v_mot_rpm->SetValue(speed*112);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Battery is empty. Charge the car...
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(0);
|
||||
StandardMetrics.ms_v_mot_rpm->SetValue(0);
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_inprogress->SetValue(true);
|
||||
StandardMetrics.ms_v_door_chargeport->SetValue(true);
|
||||
StandardMetrics.ms_v_charge_state->SetValue("charging");
|
||||
StandardMetrics.ms_v_charge_substate->SetValue("onrequest");
|
||||
StandardMetrics.ms_v_charge_pilot->SetValue(true);
|
||||
StandardMetrics.ms_v_charge_voltage->SetValue(220);
|
||||
StandardMetrics.ms_v_charge_current->SetValue(32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandSetChargeMode(vehicle_mode_t mode)
|
||||
{
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandSetChargeCurrent(uint16_t limit)
|
||||
{
|
||||
StandardMetrics.ms_v_charge_climit->SetValue(limit);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandStartCharge()
|
||||
{
|
||||
StandardMetrics.ms_v_pos_speed->SetValue(0);
|
||||
StandardMetrics.ms_v_mot_rpm->SetValue(0);
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_inprogress->SetValue(true);
|
||||
StandardMetrics.ms_v_door_chargeport->SetValue(true);
|
||||
StandardMetrics.ms_v_charge_state->SetValue("charging");
|
||||
StandardMetrics.ms_v_charge_substate->SetValue("onrequest");
|
||||
StandardMetrics.ms_v_charge_pilot->SetValue(true);
|
||||
StandardMetrics.ms_v_charge_voltage->SetValue(220);
|
||||
StandardMetrics.ms_v_charge_current->SetValue(32);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandStopCharge()
|
||||
{
|
||||
StandardMetrics.ms_v_charge_inprogress->SetValue(false);
|
||||
StandardMetrics.ms_v_door_chargeport->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_state->SetValue("done");
|
||||
StandardMetrics.ms_v_charge_substate->SetValue("stopped");
|
||||
StandardMetrics.ms_v_charge_pilot->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_voltage->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_current->SetValue(0);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandSetChargeTimer(bool timeron, uint16_t timerstart)
|
||||
{
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandCooldown(bool cooldownon)
|
||||
{
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandWakeup()
|
||||
{
|
||||
StandardMetrics.ms_v_charge_inprogress->SetValue(false);
|
||||
StandardMetrics.ms_v_door_chargeport->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_state->SetValue("done");
|
||||
StandardMetrics.ms_v_charge_substate->SetValue("stopped");
|
||||
StandardMetrics.ms_v_charge_pilot->SetValue(false);
|
||||
StandardMetrics.ms_v_charge_voltage->SetValue(0);
|
||||
StandardMetrics.ms_v_charge_current->SetValue(0);
|
||||
StandardMetrics.ms_v_env_on->SetValue(true);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandLock(const char* pin)
|
||||
{
|
||||
StandardMetrics.ms_v_env_locked->SetValue(true);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandUnlock(const char* pin)
|
||||
{
|
||||
StandardMetrics.ms_v_env_locked->SetValue(false);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandActivateValet(const char* pin)
|
||||
{
|
||||
StandardMetrics.ms_v_env_valet->SetValue(true);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandDeactivateValet(const char* pin)
|
||||
{
|
||||
StandardMetrics.ms_v_env_valet->SetValue(false);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
OvmsVehicle::vehicle_command_t OvmsVehicleDemo::CommandHomelink(int button, int durationms)
|
||||
{
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
class OvmsVehicleDemoInit
|
||||
{
|
||||
public: OvmsVehicleDemoInit();
|
||||
} MyOvmsVehicleDemoInit __attribute__ ((init_priority (9000)));
|
||||
|
||||
OvmsVehicleDemoInit::OvmsVehicleDemoInit()
|
||||
{
|
||||
ESP_LOGI(TAG, "Registering Vehicle: DEMO (9000)");
|
||||
|
||||
MyVehicleFactory.RegisterVehicle<OvmsVehicleDemo>("DEMO","Demonstration Vehicle");
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
; Project: Open Vehicle Monitor System
|
||||
; Date: 14th March 2017
|
||||
;
|
||||
; Changes:
|
||||
; 1.0 Initial release
|
||||
;
|
||||
; (C) 2011 Michael Stegen / Stegen Electronics
|
||||
; (C) 2011-2017 Mark Webb-Johnson
|
||||
; (C) 2011 Sonny Chen @ EPRO/DX
|
||||
;
|
||||
; 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.
|
||||
*/
|
||||
|
||||
#ifndef __VEHICLE_DEMO_H__
|
||||
#define __VEHICLE_DEMO_H__
|
||||
|
||||
#include "vehicle.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
class OvmsVehicleDemo : public OvmsVehicle
|
||||
{
|
||||
public:
|
||||
OvmsVehicleDemo();
|
||||
~OvmsVehicleDemo();
|
||||
|
||||
public:
|
||||
virtual void Ticker1(uint32_t ticker);
|
||||
virtual void Ticker10(uint32_t ticker);
|
||||
|
||||
public:
|
||||
virtual vehicle_command_t CommandSetChargeMode(vehicle_mode_t mode);
|
||||
virtual vehicle_command_t CommandSetChargeCurrent(uint16_t limit);
|
||||
virtual vehicle_command_t CommandStartCharge();
|
||||
virtual vehicle_command_t CommandStopCharge();
|
||||
virtual vehicle_command_t CommandSetChargeTimer(bool timeron, uint16_t timerstart);
|
||||
virtual vehicle_command_t CommandCooldown(bool cooldownon);
|
||||
virtual vehicle_command_t CommandWakeup();
|
||||
virtual vehicle_command_t CommandLock(const char* pin);
|
||||
virtual vehicle_command_t CommandUnlock(const char* pin);
|
||||
virtual vehicle_command_t CommandActivateValet(const char* pin);
|
||||
virtual vehicle_command_t CommandDeactivateValet(const char* pin);
|
||||
virtual vehicle_command_t CommandHomelink(int button, int durationms=1000);
|
||||
};
|
||||
|
||||
#endif //#ifndef __VEHICLE_DEMO_H__
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue