Advanced Vehicle Technologies, Inc. - AVT-423 Firmware
ADVANCED VEHICLE TECHNOLOGIES, Inc.

AVT-423
Firmware Version Descriptions
Updated: 23 May 2021

Version 0001
Release date: Never released. Very early testing only.

Version 0002
Release date: Never released. Early testing only.

Version 0003
Release date: 4 August 2016
Taken from version: 0002.
First 'real' release.

Version 0004
Release date: Never released.
Taken from version 0003.

Version 0005
Release date: 22 January 2017.
Taken from version 0004.
Moved all TCP/IP functions to interrupt driven routines.
That removed all application delays associated with reading data from the control computer.
Added support for LIN0 and LIN1.
Some corrections to CAN commands and other CAN routines.

Version 0006
Release date: 4 July 2017
Taken from version 0005
Lots of changes and updates. Corrected many CAN control bits: IDE, RTR, EDL, and BRS.
Commands affected: 0x (transmit), 7x 18 (periodic message set-up), 7x 2A (object set-up), 7x 2C (object mask).
Error checking for invalid CAN bit definitions.
Updated error responses.
Increased number of CAN periodic messages to 48 (each CAN channel).
Moved the CAN timer update routine to an assembly language routine to speed it up.
Some Flexray routines have been implemented (comms between the Netburner CPU and the Flexray CPU).

Version 0007
Release date: 5 July 2017
Taken from version 0006
No general release. Only released to one customer for testing.
Primarily changes to FIFO2 manager. Investigating problems a customer has encountered.

Version 0008
Release date: 25 July 2017
Taken from version 0007
No general release. Only released to one customer for testing.
Rewrote tcp_error_manager. Changes to fifo2_manager. Corrections to fifo2_manager. Changes to tcp_rcv_manager task. Changed TICKS_PER_SECOND to 100. Changes to predef.h and constants.h. Rebuilt all system files. Rewrote CAN0 and CAN1 protection code when updating receive message fifo pointers and flags.

Version 0009
Release date: 30 July 2017
Taken from version 0008
Added SysLog feature; messages are broadcast (no ip address specified).
Lots and lots of changes. Primarily in how data is moved into FIFO2 and how it is moved off the board to the client. Created a new tcp send task. Re-ordered the priority of the three tasks. The three tasks are, in order of priority (high to low): tcp send, tcp receive, and usermain. Corrections to a number of commands and responses. At least one new error response, one error response corrected, and one error response deleted. The manual has been updated and posted. For CAN2 and CAN3, if the "error counter ii" rolls over (any element therein), that CAN channel is NOT reset (it used to be), only the client is notified of the condition but operations continue un-interrupted. Completely re-wrote the two tcp tasks and the fifo2_manager routines.
Users are encouraged to load this new version of firmware and work with it. It is much more reliable and moves data quicker.

Users are invited to let me know of any problems, questions, or corrections that need to be addressed.

Version 0010
Release date: 8 August 2017
Taken from version 0009
Converted to new development system (2.7.7).
Corrected /CS4 timing parameter.
Moved periodic message timers to FAST SRAM.
For all CAN channels removed the 'auto reset' feature from the error managers. Now I only inform the user that an error occurred. The user is responsible for handling recovery of the CAN channel.

Version 0012
Release date: 14 November 2017
Taken from versions 0010 and 0011
Version 0011 was never released. Major upgrade from previous versions. Lots of changes to improve code efficiency and maintainability. Cleaned up many routines. Corrected many errors. (Details can be found in notes in "main.cpp".)
Biggest change of note is the addition of ISO 15765 support for CAN0 and CAN1.
The following previously existing commands were changed and are not compatible with previous versions.

0x - transmit command
11 xx - transmit command
12 xx yy - transmit command
7x 2A - object set-up ID command
7x 2C - object set-up acceptance mask

New commands
7x 05 - object set-up
7x 06 - object set data
7x 07 - transmit status
7x 08 - transmit acknowledgements
7x 0E - outbound flow control separation time
7x 27 - padding
7x 28 - object pairing

The manual has been updated and posted.
As always - if you find an error in the manual, please let me know so that I can correct it.
If you have any questions - contact me. I will answer as quickly and as best I can. Call if you need a fast answer.

Version 0013
Release date: 26 November 2017
Taken from version 0012
Corrected several errors in the CAN mask command (7x 2C).
Corrected an error in the CAN acceptance ID commands (7x 05 and 7x 2A).

Version 0014
Release date: never released
Taken from version 0013
One correction to an ISO15765 processing routine.

Version 0015
Release date: never released
Taken from version 0014
One correction to an ISO15765 processing routine.

Version 0016
Release date: 12 March 2018
Taken from version 0015
Considerable re-work of all the ISO15765 processing routines.
Changed the defined states.
Corrected the non-zero block size functionality.
Incorporated changes from versions 0014 and 0015.
A number of other changes to correct or improve ISO15765 message processing.
Removed a few "22 5F xx" error responses and added a few others.
The manual has been updated and posted.

Version 0017
Release date: 15 March 2018
Taken from version 0016.
Lots of changes on how errors are detected and handled for CAN0 and CAN1.
Previously certain failure conditions would result in a non-stop (fast) series of error responses to the client.
CAN0 and CAN1 error registers are now monitored by a polling routine (not interrupt driven).
Those two channels are monitored on a alternating basis.
If a 'bus off' condition is detected: a 'bus off' message is sent to the client, the CAN channel is reset, and a reset response is sent to the client.
There were also changes to the '7x 0A' and '7x 0B' baud rate routines to stop writing fixed values.


Version 0018
Release date: 22 April 2018
Taken from version 0017.
For CAN0 and CAN1:
The timing register load values were changed to put the number of time quanta and the sample point more in line with CAN-CiA recommendations.
For CAN2 and CAN3:
A new CAN-FD IP core version was introduced.
For core version '0004' the CAN clock was 128.0000 MHz.
For core version '0010' the CAN clock is 160.0000 MHz.
The firmware was updated to query for the core version number to determine CAN2 and CAN3 timing register load values.
The timing register load values were changed for both the previous and the new core to put the number of time quanta and the sample point more in line with CAN-CiA recommendations.
CAN-CiA recommends the sample point be at nominal 87.5% (85% to 90%); where possible.

Manual has been updated and posted.


Version 0019
Release date: 30 May 2018
Taken from version 0018
Real world testing indicated that the new sample points were not working very well.
Changed all CAN sample points back to 75% (where possible). Bench testing indicates this works much better. Time in the real world will be the real test; I am confident.
(I do not know why the 87.5% sample point does not work, but it doesn't.)
Experience with the AVT-718 and AVT-85x products would seem to indicate that a 75% sample point is 'good' - that is where (I believe) the sample point is for those interfaces.
Added the new '24 97 0y rr tt' error response for CAN2 and CAN3. 'y' is the CAN channel number. 'rr tt' are the Classical CAN receive and transmit error counters.

The manual has been updated and posted.


Version 0020
Release date: 10 October 2018
Taken from version 0019
Implemented ISO 15765 for the CAN-FD channels (CAN2 and CAN3).
Channels CAN2 and CAN3 now have 16 receive objects and 16 transmit objects.
New command '7x 17' is used to set-up a transmit object.
You must now include the object number in the transmit command. (Previously it was zero and ignored.)
The '7x 30' command to query for and control 'AE' byte use was in previous releases but was not documented in the manual.
The following commands have been updated to include channels 2 and 3:
'7x 0E'
'7x 17'
'7x 27'
'7x 28'
'7x 30'
The maximum transfer size for CAN2 and CAN3 is currently limited to 8192 bytes.
That can be increased if necessary. Use with real modules will tell me what limit is necessary and appropriate.
The User's Manual has been updated and posted.

There is still some testing that needs to be completed including large block transfers and timing tests (with regards to compiler optimization level).


Version 0021
Release date: 17 October 2018
Taken from version 0020
Corrected an error in ISO15765 transmit buffer manager routine for CAN2 and CAN3 in how consecutive frames were constructed.

The manual has been updated and posted.


Version 0022
Release date: very limited release 7 November 2018
Taken from version 0021
Added the '7x 63' command. See version 0023 below.


Version 0023
Release date: 15 November 2018
Taken from version 0022
Corrected the '7x 63' command.
The new '7x 63' command allows the user to set the number of transmit attempts channels CAN2 and CAN3 will make before aborting the transmission and discarding the message.
The default value for both channels is 400 attempts (0x0190). A value of '0x0000' means continuous attempts (no limit).
Other changes include:
Conducted timing tests of two routines while varying the compiler optimization settings. Decided to continue to use optimization level 2.
Corrected the "AppName" issue. The model number and firmware version number now appear in both the IPSetup and AutoUpdate functions.
Minor changes to the periodic message manager routines to try and improve processing speed.
Investigated, but did not implement, the disable Nagle algorithm (function) for Ethernet traffic from the AVT-423 to the client. In high volume situations I feel this would needlessly increase Ethernet network traffic and reduce network efficiency.

The manual has been updated and posted.


Version 0024
Release date: 13 December 2018
Taken from version 0023
Corrected an error in the '7x 27' command.
I was not saving the new pad byte value if it was a disable padding command.

No manual update required.


Version 0025
Release date: 12 January 2019
Taken from version 0024
Completely re-vamped CAN2 and CAN3 ISO 15765 processing routines.
Added the '7x 29' command which allows the user to specify the 'max_dlc' value to use in processing ISO 15765 CAN-FD transmit frames.

The manual has been updated and posted.

Version 0026
Release date: 17 January 2019
Taken from version 0025
Corrections to channels CAN0 and CAN1 periodic message managers. Minor changes to CAN0 and CAN1 transmit managers.
A problem was discovered with CAN0 and CAN1 periodic messages. If they were run at an interval of about 10 msec or less, the message would cease after only a few seconds. The message would resume if a transmit command was processed. That problem was corrected with this release.

No manual update required.


Version 0027
Release date: 11 February 2019
Taken from version 0026
Corrections to the 'F1 A5' reset command processing routine. It was discovered that on fairly rare occasion the execution of that command could 'lock-up' the AVT-423. The interface would become un-responsive.

No manual update required.


Version 0028
Release date: 22 March 2019
Taken from version 0027
In the hardware initialization routine I added the call to enable the passive pull-up to UART0 receive data line. UART0 is the serial debug port. The pin was floating; which was wrong.

No manual update required.


Version 0029
Release date: N/A
Taken from version N/A
This version number was skipped.


Version 0030
Release date: 25 March 2019
Taken from version 0028

Two changes.

1. Added the ability to have multiple clients connect to and communicate with the AVT-423. I do not allow multiple clients to connect to a single port number. Instead, I have allocated Port # 10001 (as before), Port # 10002, and Port # 10003 for client connections. All three ports operate identically. A client can connect to any one of them, as desired (assuming no one else is already connected to that port.
Commands from all three ports are processed as they arrive.
One important operational note. All responses from the AVT-423 are issued to all connected clients. For example, client #1 sets up a CAN receive object. All messages received through that object are passed to all connected clients. In other words, everyone sees all responses from the AVT-423.

2. Added the '5x 80' command to query for and store start-up parameters. This function allows the user to specify certain AVT-423 start-up parameters and store them in non-volatile memory. A 32-bit long word is stored in non-volatile memory. It is read whenever the AVT-423 initializes (power-on reset, or the 'F1 A5' software reset). The stored long-word is a bit map. At this time only bits 0 through 3 are used. They indicate the state of the CAN bus termination for channels CAN0 through CAN3 - respectively. A stored value of '1' indicates the CAN bus termination for that channel is enabled on start-up. Likewise, a '0' indicates the termination is disabled. The stored value does not take effect until the next reset following storing the new values.
All un-used (reserved) bits should be set to '1'.

The manual has been updated and posted.
 

Version 0031
Release date: 24 April 2019
Taken from version 0030

Added the 'B1 03' command to query for model number. This will eventually replace the 'F0' command.

Added the 'B1 04' command to query for 'my' MAC address.

Fixed the '7x 04' command. If you queried for object status, that object would no longer receive.

(The 'mirror' function for CAN and LIN was developed for a customer.)

Added the CAN 'mirror' function for CAN0 and CAN1 only (at this time).
(Channels CAN2, CAN3, and LIN are pending.)

Added three new commands to support the CAN 'mirror' function.
'7x 20' to specify the receive ID.
'7x 21' to specify the transmit ID.
'7x 22' to disable/enable the CAN 'mirror' function.

The manual was not updated.


Version 0032
Release date: 6 May 2019
Taken from version 0031

Added the CAN 'mirror' function for CAN2 and CAN3.

The manual was updated and posted.


Version 0033
Release date: 22 May 2019
Taken from version 0032

Fixed the CAN0 and CAN1 receive manager. If RTR is true, the 'mirror' function is not executed.
(A CAN RTR frame is NOT 'mirror'ed.)

Fixed two error responses for CAN2 and CAN3 receive manager.
Those responses were '22 7F 25' and '22 7F 26'. But there was a conflict as those two error responses were already defined.
They were changed to '22 7F 21' and '22 7F 22'.
The definitions for '22 7F 25' and '22 7F 26' were updated.

Removed an un-used LIN checksum variable/flag. Corrected at least one LIN routine related to the use of that variable.

Added the LIN 'mirror' function for LIN1 and LIN0.
Added two new commands for this function.
'5x 11' is the setup command.
'5x 12' is the disable/enable command.

The manual was updated and posted.


Version 0034
Release date: 10 June 2019
Taken from version 0033

Very limited release.

Updated both LIN init routines to initialize all LIN variables. I discovered that some variables had been missed in the previous version.

In CAN0 and CAN1 init routines I corrected the value to write to 'errstat' to clear any and all pending error flags.

The response (to the client) to an 'F1 A5' reset command used to be:
'91 3A'
'94 04 xx yy'

The response (to the client) to an 'F1 A5' reset command is now:
'91 0F'
Note that the firmware version report has been removed. Did not make sense to send it.

I did this to allow the client to differentiate between a 'connect' response and an 'F1 A5' reset response.

One user has observed the AVT-423 complete a CPU reset for no apparent reason. It was observed to occur about once every half hour while the board was idle (doing nothing) or at some point after completing an 'F1 A5' reset. No more information available at this time.

The manual was not updated. See next entry.


Version 0035
Release date: 12 June 2019
Taken from version 0034

Corrected an error in the LIN mirror function 'lin_mirror_xmt_mgr'.
Error would appear as: If the re-transmit ID showed up within 3 msec of the last byte of the first frame, then the re-transmitted frame would contain the ID byte in the data field.

Manual has been updated and posted.


Version 0036
Release date: 6 September 2019
Taken from version 0035

I changed two parameters in how the microcontroller accesses the CAN-FD FPGA (CAN2 and CAN3). During testing using a customer supplied software application, it was possible that a received CAN frame 'appeared' to be a transmit acknowledgement and, hence, was discarded.

I changed the 'start-up' responses sent to the client. There are three different reasons a 'start-up' response is sent to the client. In previous versions they were all the same code. Therefore, it was ambiguous as to the reason the client received a 'start-up' response. A unique response has been assigned to each. They are:
Power-on reset: 91 0A.
An 'F1 A5' reset: 91 0F.
A client connection: 91 3A.

The manual has been updated.


Version 0037
Release date: 19 December 2019
Taken from version 0036

Very limited release; to one customer only - for testing.
Trying to track down one or more problems with CAN2 and/or CAN3 while ISO15765 processing is enabled.
Changed a number of '22 5F yy' error codes to '23 5F yy 0z' where 'z' is either '2' or '3' for CAN2 or CAN3.
The following '22 5F yy' error codes were changed:  43, 44, 45, 46, 48, 49, 4A, 4B, 4C, 4D, 4E, 4F, 50, 51, 52, 53, 56, 57, 58, 68, 69, 6B, 6C, 6D, 70, 71, 72, 73, 81, 83.

The "Nagle" algorithm or function has been disabled in the AVT-423.
Note that this only affects TCP packets send by the AVT-423 to the Client.

The Client is urged to disable the "Nagle" function for TCP packets sent by the Client to the AVT-423.
In the older Microsoft environment this was known as setting the parameter "TCP_NODELAY" to true ('1', one).
Exactly how this is done depends on the Client operating system and application development environment.

The manual has NOT been updated, yet.


Version 0038
Release date: 21 December 2019
Taken from version 0037

Very limited release; to one customer only - for testing.
Still working on tracking down the CAN2 and CAN3 problems.  Lost frames, invalid '02 02 A2' and '02 03 A2' responses, and '23 5F 56 0y' errors.

The manual has NOT been updated, yet.


Version 0039
Release date: 8 January 2020
Taken from version 0038

Very limited release; to one customer only - for testing.
Still working on the CAN2 and CAN3 problems.
I think I found the problem and implemented changes to CAN2 only.

The manual has NOT been updated, yet.


Version 0040
Release date: 16 January 2020
Taken from version 0039

Customer testing seems to indicate that I found and solved the problems with CAN2.
Implemented the changes to CAN3.  This version is still in customer testing.
I am confident that I have (finally) found the root cause of the problems and have fixed them.

The "Nagle" algorithm or function was disabled in the AVT-423 with version '0037'.
This only affects TCP packets send by the AVT-423 to the Client.

The Client is urged to disable the "Nagle" function for TCP packets sent by the Client to the AVT-423.
In the older Microsoft environment this was known as setting the parameter "TCP_NODELAY" to true ( or '1', one).
Exactly how this is done depends on the Client operating system and application development environment.

The manual HAS been updated and is posted.


Version 0041
Release date: Never released.
Taken from version 0040.

Added KWP support to the two K-line transceivers.
Basic transmit and receive functionality.  Added format byte processing to the receive function.  No periodic message support.
Moved to version 0042 before this could be released.


Version 0042
Release date: Never released.
Taken from version 0041.

Started work on changes to channels CAN2 and CAN3.
Changed my mind about how I want to proceed.
Dropped this version and moved to 0043.


Version 0043
Release date: 21 July 2020
Taken from version 0042.

Lots of changes and updates.  These notes are a summary of all changes from version 0040.

Added KWP support for the two K-line transceivers.
KWP operations using the transceiver assigned to pin # 23 of the DB-25P connector is known as KWP0 and is channel 8.
KWP operations using the transceiver assigned to pin #11 of the DB-25P connector is known as KWP1 and is channel 6.
Or, another way to look at this:

Pin # 23 of the DB-25P connector is either:
LIN0, channel 7
KWP0, channel 8

Pin # 11 of the DB-25P connector is either:
LIN1, channel 5
KWP1, channel 6

Updated many commands to support KWP operations.
At present, KWP operations are transmit and receive with format byte processing optional for receive operations.
There is no periodic message support, yet, for either KWP channel.

For channels CAN2 and CAN3 there are now 64 (decimal) receive and transmit objects available for use.
Note that this means there are 64 receive objects 'AND' 64 transmit objects.
The objects are numbered 0x00 to 0x3F.

(Note that channels CAN0 and CAN1 are different.  For those two channels there are a total of 16 objects that can be configured for one operation or the other.)
(Channels CAN0 and CAN1 have not been changed or affected.)

Many commands have been updated to support the new objects.  Those commands include:
7x 04
7x 17
7x 27
7x 28
7x 29
7x 2A
7x 2C
7x 30

There are several new formats of the transmit commands to support all the new objects.

The format of the transmit ack has also changed.

Refer to the manual for details on all the new, changed, and updated commands.
The manual has been updated and posted.


Version 0044
Release date: Never released.
Taken from version 0043.

Corrected KWP receive message status bit 7.

The manual has NOT been updated.


Version 0045
Release date: 22 November 2020.
Taken from version 0044.

Very limited release.

Modified the '7x 18' periodic message definition command to support KWP operations.
Put in some other KWP periodic message support routines.
None of that has been tested.

Removed a lot of volatile keywords from many LIN variables as well as FIFO3 and FIFO4.

The new AVT-424 board will be a mezzanine or daughter board to/for the AVT-423 board.
The AVT-424 will be mounted on top of the AVT-423.
The AVT-424 will add six new LIN channels to the AVT-423.
The new LIN channels are:
LIN2 thru LIN7.
They will be designated channel numbers:  'A' thru 'F'.

Started work on communications with the new AVT-424 LIN Expansion board.
It will use QSPI channel 1.
Removed many (all ?) references to Flexray.

Modified the following commands to recognize the new LIN channels.
5x 01 - received checksum to client
5x 02 - receive buffer timeout
5x 08 - time stamps
5x 40 - transmit ack
5x 50 - LIN bus baud rate
5x 52 - max frame time
5x 5A - checksum type
5x 66 - 'ID byte only' error response
5x 69 - disable/enable channel operations
5x 7E - short to ground counter
7x 18 - define periodic message
7x 1A - disable/enable periodic message
7x 1B - periodic message interval
7x 1C - disable all periodic messages

Created the following new commands:
21 30 - hardware reset of mezzanine board (AVT-424)
21 31 - firmware reset of mezzanine board (AVT-424)
5x 6B - mezzanine board heartbeat blink rate
B1 05 - request AVT-424 firmware version number
B1 06 - request mezzanine board model number

The '7x 1C' command has been changed.
 To disable ALL periodic messages, the command is now:  '72 1C FF'

The manual has NOT been updated.


Version 0046
Release date: 1 December 2020.
Taken from version 0045.

Very limited release.

Corrected the '7x 18' command to allow for zero length periodic message response to client.

Made some changes to several QSPI1 routines to correct AVT-424 comms failures.

The manual has NOT been updated.


Version 0047
Release date: 10 December 2020.
Taken from version 0046.

Multiple changes to the code to correct the comms failure issue with the AVT-424 board using the DSPI1 channel.
Defined all DSPI1 registers. I now access those registers directly (do not use the 'sim2.dspi1.xxx' calls - they take too much time).

I changed the entire interrupt priority scheme. All interrupts have been downgraded by one level. There are no interrupts above level 6.
Critical routines are now wrapped with level '7' to block all defined interrupts.

Other changes were implemented with respect to how interrupt routines are defined. I removed all manipulations of 'clmask' in the interrupt controller.

Removed remaining references to Flexray. They were in the assembly language routines.

The manual has NOT been updated.


Version 0048
Release date: 11 December 2020.
Taken from version 0047.

Identical to the last (final) version 0047.

I created this version so that there would not be any confusion with any other versions named '0047' that were used for testing.

The manual has NOT been updated.


Version 0049
Release date: 1 February 2021
Taken from version 0048

Updates to KWP mode.

Corrected several periodic message routines.

Added the '5x 2A' command to adjust the inter-message time, "P3".
Added the '5x 46' command to specify the bus idle time ('W5')before a Fast Init attempt.
Added the '5x 47' command to specify the Fast Init low time.
Added the '5x 48' command to specify the Fast Init high time.
Added the '6x 13' Fast Init command and related function.

Tested all KWP functions.
KWP operations are now fully operational for KWP0 (channel 8) and KWP1 (channel 6)

Added the '22 1B ss' error response for UART1  (LIN0 and KWP0).
Added the '22 1C ss' error response for UART2  (LIN1 and KWP1).

The manual has been updated and posted.


Version 0050
Release date: 8 February 2021
Taken from version 0049

One change to all CAN channels with ISO15765 processing enabled.
One customer reported a problem where the AVT-423 was transmitting consecutive frames a little faster than the inter-frame spacing as specified by the receiving device flow control frame.
To solve this I added the '7x 25' command to specify a time (1 msec increment) that is added to the time specified by the received flow control frame.  The default is 0.  For example, if the received flow control frame specifies an inter-frame spacing of 2 msec, and the client sets the "extra" time to 1 msec (using the '7x 25' command), then the AVT-423 will set the inter-frame spacing to 3 msec.

Added the '7x 25' command to specify the extra time for inter-frame spacing when transmitting a multi-frame message.

The manual will be updated and posted as soon as possible.


Version 0051
Release date: 4 April 2021
Taken from version 0050
For testing only. Never released.
Customer experience indicates fifo2 overflows and CPU crash; possibly due to fifo2 overflow.
This occurs under extremely heavy traffic moving from the AVT-423 to the client.
Revamped the main loop. Added additional calls to fifo2 manager.
Added 'overrun' space to fifo2.
Added additional buffer space to tcp send buffer.
Changed '21 03' error code for fifo1 overflow to:
'22 03 01' for fifo1p1 overflow.
'22 03 02' for fifo1p2 overflow.
'22 03 03' for fifo1p3 overflow.


Version 0052
Release date: 5 April 2021
Taken from version 0051
For testing only. Never released.
Changed the CAN_B receive manager. If fifo2 can not hold a response, I exit the routine.
Added a 'syslog' call to CAN_B lost frame manager. This might be the only way I can watch for lost frames.


Version 0053
Release date: 15 April 2021
Taken from version 0052
A customer reported that occasionally, under high traffic, the AVT-423 stops responding, the Ethernet connection is lost, they cannot establish a new Ethernet connection, the CPU heartbeat LED has stopped, and the only way to recover is to power cycle the AVT-423.

Lots of changes.
Modified tcp1_send_task.
If I get 5 write failures in a row, I close the connection.
If a keep alive error is detected, I close the connection.
If a receive error is detected, I close the connection.
I reviewed all the source files.
If any routine writes to fifo2, they first check to see if fifo2 can hold it.
If not, the write is either ignored (lost) or left pending.

A LIN lost frame counter is implemented as well as a LIN lost frame manager.
Added new error responses for LIN:
LIN0: 23 3A xx yy: 'xx yy' is the lost frame counter.
LIN1: 23 3B xx yy: 'xx yy' is the lost frame counter.
Added a 'syslog' call in the LIN lost frame manager.

A KWP lost frame counter is implemented as well as a KWP lost frame manager.
Added new error responses for KWP:
KWP0: 23 3C xx yy: 'xx yy' is the lost frame counter.
KWP1: 23 3D xx yy: 'xx yy' is the lost frame counter.
Added a 'syslog' call in the KWP lost frame manager.
Added a new KWP error response:
22 3F xx - where 'xx' is the channel id in KWP lost frame manager.

If a buffer42 packet does not fit into fifo2, it is deleted.
Added a buffer42 lost packet error response.
23 3E xx yy: 'xx yy' is the count of lost packets.
Added a 'syslog' call in the buffer42 lost frame manager.

If no client connection exists, there will be no 'syslog' transmissions.

The manual has been updated and posted.


Version 0054
Release date: 7 May 2021
Taken from version 0053

Added support for long periodic messages for channels CAN2 and CAN3 (CAN-FD).
Since the '7x 18' periodic message definition can not support a data field of more than 8 bytes, a new command was implemented.

New command to define a periodic message for channels CAN2 or CAN3 with 0 to 64 bytes in the data field.

Command format. (Either form is valid.)
--------------
11 bb 2r y0 pp tt vv ww zz mm nn ...
12 00 bb 2r y0 pp tt vv ww zz mm nn ...

11 or 12 - is the header for a long command.
bb - count of bytes to follow.
2 - indicates a long periodic message command.
r - channel number, 2 or 3.
y - b7: IDE where 0 = 11-bit ID or 1 = 29-bit ID.
. - b6: RTR where 0 = not an RTR frame or 1 = is an RTR frame.
. - b5: EDL where 0 = Classical CAN frame or 1 = CAN-FD frame.
. - b4: BRS where 0 = normal for entire frame or 1 = high speed data field.
pp - periodic message number $00 to $2F.
tt vv - 11-bit ID.
tt vv ww zz - 29-bit ID.
mm nn ... - data field (0 to 64 (decimal) bytes).

Query format. (Either form is valid.)
------------
11 03 2r 00 pp
12 00 03 2r 00 pp

11 or 12 - is the header for a long query.
03 - count of bytes to follow.
2 - indicates a long periodic message command.
r - channel number, 2 or 3.
00 pp - periodic message number $00 to $2F.

Notes
-----
- A long form definition command will always yield a long response.
- A long form query will always yield a long response.
- A short form query (7x 18 query) will yield a short form response if the data field is less than or equal to 8 bytes.
- A short form query (7x 18 query) will yield a long form response if the data field more than 8 bytes.
- Data field length 'must' be a defined CAN-FD length. An invalid data field length will yield a command error. The valid data field byte counts are:
- 0 to 8 bytes (inclusive), 12, 16, 20, 24, 32, 48, 64.

The manual has been updated and posted.


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx


Version xxxx
Release date: xxx
Taken from version xxx