ICL-4300 C SDK API "Readme"
This README.HTML file documents the changes made to the ICL-4300
C SDK API. The API is a product of
Industrial Control Links, Inc.
of Auburn California, USA.
v6.53
Summary
New Features/Changes
Fixed Problems
- Fixed problem in Modbus Slave and Bricknet driver where response to a Status or Coil query could send back invalid data bytes. Problem does not affect most Modbus master drivers.
v6.52
Summary
Maintenance and feature release.
New Features/Changes
- Added support for alternate CPU speeds other than the PCOS defaults.
- Added support I/O data for ScadaFlex CPU.
- Added support for assigning serial I/O schemes based on model number.
Fixed Problems
- Fixed problem in ioserial.c where the system would use two control scans per I/O update.
v6.51
Summary
Maintenance and feature release.
New Features/Changes
- Added FTP support for ScadaBuilder files.
Fixed Problems
- Fixed bug where email would not work with another protocol (such as FTP) on a dialup link. Each netSession maintains its own value for the 'deviceType'.
- Fixed bad enum in RegWriteString. Check error would report the wrong function.
- Fixed function name lookup problem in check errors where it was possible to use the name pointer before inititializing it.
v6.50
Summary
New Features/Changes
- Added support for EtherLogic serial I/O interface.
- DI counters counter can now be mapped to registers.
- Added additional ScadaBuilder support:
- Register buffer formating
- Local events/alarms
- Log events/alarms
- TUI alarms/logs
- Setting of trigger scan rate.
- Setting of counter scan rate.
- Setting of serial I/O WDT.
- Disable of I/O scan.
- Disable of network sessions.
- Added protocol analyzer feature functions ComSetProtoAnal()
and ComSetProtoAnalColors().
Fixed Problems
- TUI no longer opens the COM port if already in use.
- TUI only closes the COM port if it opened it.
- Fixed bug when determining hop count of routed messages.
- Fixed bug when setting scaling clamp values.
- Fixed memory overflows when allocating large trigger blocks.
- ComClearRcvBuf() verifies the port is open before taking
action.
v6.01
Summary
New Features/Changes
Fixed Problems
- Added missing "stub" functions that would cause a non-Xinu
application not to link.
v6.00
Summary
New Features/Changes
- Requires a BIOS with "library version" of 3.41 or later.
- Added support for hardware and software handshaking on
COM ports 3 thru 6.
- Added BiosType() function.
- Added support for reading ScadaBuilder node configuration
(.sbn) files. This currently supports a subset of features
that include: register allocation, triggers, network ports,
network sessions, network events, TUI, I/O scaling and
I/O board mapping.
- Added Email support.
- Added support for TUI over Telnet (Ethernet-only).
- Added PPP dial-up support.
- TUI Page Links can now use an associated register to
disable the link based on the register value.
- When the ICL-4300 is acting as a dialup FTP
server, and there is no activity within a timeout period,
the modem connection is now terminated automatically to
allow the modem to be used for other activities (such as
dialing out alarms). The timeout is specified by the
NS_SesActiveTimeoutSet() function or by the
NetSession/sesTimeoutSec configuration file parameter. The
default is 30 seconds (you may want to increase this value
when using the ICL-4300 in this fashion).
- RTC functions were modified to support the EtherLogic
controller board.
- A unit can now be forced to a command prompt (while still
in run mode) by pressing the reset button and entering two
ESC keys on the console interface.
- Added support to configure an FTP client status buffer in
ESP and ISaGRAF.
- Added support to read the user address switch that can be
used for a TCP/IP address or a slave network address.
- Changed the log file name from "icl4300.log" to "system.log".
Fixed Problems
- Made communication API functions thread safe.
- Added small delays to RTCInit() macro to fix initialization
failing at high temperature.
- Removed EFR restore capability that was causing a COM port
to stop responding after a ComOpen()/ComClose() cycle.
- Fixed bug in ComBytesToMs() macro that would crash
communications at 300 baud.
- Fixed config file error when parsing unquoted '#'
characters in a 'format' parameter value.
This was broken since v4.70.
- Fixed memory leak -- if multiple modbus master sessions
are attached to one port, buffer gets allocated too many
times. Leak has existed since v4.50.
- Modified API library structure to provide more data space
(DGROUP) for user applications.
v5.03
Summary
Internal maintenence release.
New Features/Changes
Fixed Problems
- Leading zeros on numeric values in ESP configuration files
were incorrectly causing the configuration file parser
to interpret the numbers as octal -- they are now forced to
decimal. This was broken since v4.70.
v5.02
Summary
New Features/Changes
Fixed Problems
- Modbus routing was essentially non-functional. The routed
response delay was being calculated incorrectly, resulting
in very slow routings, especially at lower baud rates.
Response messages we not being reliably routed because of
an error in how the routing table entries were being
interpreted. Modbus routing was broken since the beginning.
- BrickNet routing was non-functional. The router was
generating CRC's incorrectly, resulting in the destination
unit rejecting the message. This was broken since v4.50.
- The Modbus ASCII Slave protocol driver was not processing
Preset Multiple Register (0x10) messages properly. The
byte count was not being extracted from the incoming
message, leaving the variable uninitialized and resulting
in too many or too few register values being stored.
This was broken since v5.00.
v5.01
Summary
New Features/Changes
- Improved Modbus communications performance, especially
when accessing a large number of boolean registers in
a single message.
Fixed Problems
- If a Modbus 16-bit register read message was misaligned
with 32-bit or 64-bit internal registers, or a regLink was
missing, the ICL-4300 would not respond to the query. Now
it responds with zeros (and still generates a system
error log message).
- Removed an overly-restrictive check on NetEvent src & dst
that was giving incorrect errors on read/src and write/dst
"non-existent" registers.
- When the ICL-4300 was configured as a Modbus router (also
known as "store and forward"), it would not repeat
received slave response messages. This problem had been
unintentionally introduced in v4.60.
v5.00
Summary
Major new feature release, including Web server and data/alarm
logging.
New Features/Changes
- Web Server
- Added HTTP (Web) server features. This allows you to
create static or interactive browser-based user
interfaces to your ICL-4300 application.
- Data & Alarm Logging
- Added data and alarm logging. Automatically logs data
records based on triggers and alarm records based on
change of alarm state. Features include single or
multiple files, configurable file format and maximum
size, and time/date stamp.
- TUI (Textual User Interface)
- Added the ability to display data and alarm logs on a
TUI.
- The Page Up and Page Down keys now work in the TUI.
- Added alarm properties that can be applied to TUI alarms
or alarm logs.
- Signed, unsigned and hex modes are now supported for TUI
fields.
- Communications
- Incoming PPP dial-up modem connections are now
supported when using TCP/IP.
- Additional modes and flexibility are now available to
send & receive "non-standard" data types over Modbus
protocol. You can now set up the ICL-4300 to deal with
almost any representation.
- Any integer register type is now allowed for diagnostic
mapping of Arcnet node IDs (int8 was required before).
- A list of phone numbers can now be used for alarm
dialing, with configurable control over how the system
advances from one number to the next.
- Error Messaging
- Improved error checking and reporting while parsing the
config file.
- Implemented new error checking mechanism using FNCT.TXT
lookup file. This eliminates numeric error codes and
improves usefullness of the error messages.
- The system event log mechanism has been changed so that
a fresh log file (icl4300.log) is created each time the
application starts. The previous log file, if any, is
backed up to icl4300.bak. This makes it easier to find
applicable error messages, and reduces the likelihood
that the log will fill up and stop recording.
- Miscellaneous
- The Status LED and the reboot signal can now be mapped
to Boolean registers.
- The configuration file parser has gotten more strict
about accepting floating point numbers where an integer
is expected.
- RegFormatCreate() now left justifies buffer register
types that are inserted into format string.
- Support added for new Analog Output voltage board,
#43-AO16-12VA.
Fixed Problems
- [Defines] entries can now be nested together when using
config files.
- BrickNet now has the ability to receive messages while
waiting to access the media when sending a command.
- The maximum register count for Arcnet messaging was being
calculated incorrectly, allowing too many registers to be
specified in a NetEvent.
- Error messages are now displayed cleanly to the TUI.
- The communication failure status now properly reflects
success/failure over a dialup connection.
- The presence of Arcnet hardware is now detected before the
system tries to install the Arcnet device driver.
- DTR is now cleared when the application exits in order to
hang up any attached modem(s).
- TUI autoedit feature was not working properly.
- Fixed Arcnet device address to eliminate unreliable Arcnet
device communications.
- If IOCalMode() is called out of sequence (after scaling), an
error message is now generated, instead of it just not
working right.
- If RegReadBuffer()/RegWriteBuffer() try to read/write past
the end of the buffer, a partial read/write will now be
performed, rather than nothing happening.
- The build configuration files for the bnet2.c and bnet3.c
sample applications were incorrect.
- IOCalMode() and IOScale() were called in the wrong order in
several sample applications.
v4.60
Summary
New feature release.
Minor maintenance.
New Features/Changes
- Added support for Arcnet LAN controller.
- Added NP_NodeIdMap() and NP_DiagMapMap() functions for
network ports.
Fixed Problems
- Modbus master can now rewind and re-evaluate received
characters as invalid message are rejected. This is in
support of systems that use store and forward.
v4.50
Summary
New feature release.
Minor maintenance.
New Features/Changes
- Textual User Interface (TUI)
- Added TUI value lists and TUI buttons.
- Added auto edit feature to TUI.
- Ctrl+N and Ctrl+P are now used for next and previous menus
in the TUI.
- Ctrl+S (or '*' on HotLink) is used for auto selection of
TUI value list.
- Ctrl+A is used to set a TUI register block to the value
of the currently selected register.
- Made attributes and colors configurable on the TUI.
- Changed TUI key scan time to 50ms from 100ms.
- TUI now supports both hierarchical and flat menu
structures.
- Events and Alarms
- Removed LE_EventCreate() and added LE_NumEventCreate() and
LE_StrEventCreate().
- Added NE_AddTrigger() and LE_AddTrigger().
- Added AlarmAddTrigger() and AlarmAddTriggerAck().
- Added NetAlarmAddAlarm() and LocAlarmAddAlarm().
- Communications
- Added FTP Server support.
- Added Telnet Server support.
- Network statistics and comm fail information can now be
mapped to registers.
- Moved response delay parameter from network sessions to
network ports.
- Changed NS_ModemConnectTimeout() to NS_ConnectTimeout().
- BrickNet always routes using routing table from session
that monitors.
- Other
- Added thread safe versions of getdate() and gettime().
- Increased configuration file (ESP) parsing performance.
Fixed Problems
- TCP/IP features are now supported when using XINU.
- BrickNet can now respond to messages while waiting to send
a command or during an event or cycle gap.
- API init now detects if Sockets is loaded instead of
packet driver.
- Removed "check" error on pager ID when using a numeric
pager.
v4.20
Summary
New Features/Changes
- Added Telnet command prompt support.
- Added Modbus/TCP Master protocol support.
- Syslogs for net event errors now display the error value.
- Net events with only a startup trigger are now allowed by
parser.
- TUI can now navigate up, down, left and right.
- WDT status register is restored on exit.
Fixed Problems
- Fixed problems with session-based address-qualified triggers
and trigger hold-off feature.
- Fixed problem where application exit code was not being
passed to DOS when Multitasking SDK used.
- Fixed application shutdown operation.
- Fixed handling of spurious interrupts on IRQ7 (INT0F).
- Added additional error code checking for calls to the TCP/
IP stack.
v4.10
Summary
New feature release.
Minor maintenance.
New Features/Changes
- Made enabling of power fail interrupt conditional. A new
user function has been added -- PfiEnable().
- Added to check to see that power fail interrupt is enabled
if registers are allocated in NVRAM
- Added TCP/IP Support for Ethernet (C SDK only).
- Added Modbus TCP Slave (server) protocol (C SDK only).
Fixed Problems
- All EEPROM cal values are now stored and read as signed 16
bit values. This resolves the problem of I/O boards which do
not have a DC offset adjust for zero volts/current when the
DAC is set to zero.
v4.00
Summary
Major feature release, adding support for the following:
- Voice playback and recording using local or dial-up
connection.
- Alarm processing, with annunciation using voice or digital
outputs.
- Dial-up modem data communications.
New Features/Changes
- Alarm Processing
- Alarm records may be created using function calls or with
an ESP configuration file.
- Alarm and alarm acknowledgement conditions are defined
by Trigger records.
- Alarms may be annunciated using local voice messaging,
voice messaging over a telephone or using a digital
output.
- Voice Recording/Playback
- Support for the #43-VA-8 and #43-VM-8 voice
recording/playback hardware options has been added.
- Low-level voice recording/playback operations may be
performed using function calls, or voice may be handled
automatically using an ESP configuration file or
functions to create appropriate records.
- New configuration record types
- In conjunction with other changes, several new record
types have been added. These records may be created
either with an ESP configuration file or using function
calls. The new record types are listed briefly below:
- RegInit - initializes registers or buffers with values
- Format - generates output to a buffer based on a format string and register value fields
- LocalEvent - stores a value to a register based on a trigger
- VoiceMsg - defines an individual voice message recording
- VoiceSeq - defines a voice message made of a sequence of individual recordings and register value fields
- Alarm - defines an alarm, including trigger and acknowledge conditions
- NetAlarm - defines how an alarm is to be annunciated via numeric or alphanumeric pager
- LocalAlarm - defines how an alarm is to be annunciated with a local digital output
- Vui - defines a VUI (Voice User Interface)
- VuiMenu - defines a menu for use in the VUI
- VuiReg - defines a register for use in the VUI
- Communications
- NetSession defaults have been changed (respTimeoutMs:
1000 => 3000, respRetry: 3 => 2)
- Added cfgErrorCount to tNetStats in order to track
configuration-related communications errors.
- Other
- If the CfgFileParse function is called with a filename
that does not exist, an error is now generated instead
of a fatal error (the program keeps running).
- If the file extension is not specified when calling
CfgFileParse, ".ini" is now assumed.
- Subsets of I/O channels may now be mapped to registers,
instead of requiring the whole block to be mapped.
- A new function, TimeStatsReset, has been added to reset
the application program time statistics.
- If NetPort is null, TUI now defaults to console.
- Quit key now allowed from TUI when using XINU.
- TUI now allows lower case in field entries.
- The TUI disables the 'P' key to edit the page number if
the showPageNum flag is FALSE.
- Vers.h was renamed Vers4300.h to avoid conflicts with
other ICL libraries.
- Added MdmRedir modem redirector sample program.
- All network trigger function names have changed to be
more generic, now supporting both local and network
triggering.
Fixed Problems
- The exit function may now be called from an application
program -- it cleans up properly and returns to DOS (
handled in both single tasking and multitasking cases).
- The functions DOWriteImmed and AOWriteImmed now update the
corresponding register even if the register is not mapped
to an I/O channel.
- Fixed problem that prevented including icl4300.h in cpp
file.
- When 32-bit or 64-bit registers are mapped to Modbus
messages, reads/writes from/to partial 32-bit or 64-bit
registers are no longer allowed. This prevents "garbage"
values in the unspecified register bytes (zeros are read
in partial registers, and nothing is written to partial
registers).
v3.09
Summary
New Features/Changes
- Improved error message when an unknown Trigger name is
referenced in a NetEvent record.
Fixed Problems
- Sample configuration files Samp4.cfg, Samp5.cfg, Samp7m.
cfg & Samp7s.cfg were missing.
- Modtui.cfg sample file incorrectly left out required
modules.
- Stack overflow could occur when timer or delta triggers
were created and Xinu used. Increased stack sizes for
timer and delta trigger threads.
- When ISaGRAF kernel was built using the API, registers in
TuiField records improperly generated warning messages.
Does not affect normal applications.
- System would not switch between multiple NetSessions on
the same port.
- A missing 'blockSize' parameter on a 'read' or 'write'
NetEvent would not generate an error message, but would
default to 0 and generate messages with zero-length data.
- When ISaGRAF kernel was built using the API, Trigger
records were improperly rejected. Does not affect normal
applications.
- Y2K - SysLog error logging function did not print year
properly when year reached 2000.
v3.08
Summary
New Features/Changes
- 3 new trigger types have been added. The triggers are
created with the following functions:
NT_TrigNetSesCreate()
NT_TrigNetAddrCreate()
NT_TrigTuiCreate()
They may also be created from the configuration file. The
triggers are activated when registers are written to by
communications or the TUI.
- Removed vers.c from project. Does not affect user
applications.
- Changed SysTickUserFnct() to SysTickCyclicFnct(). Does not
affect user applications.
- Added BiosCfgPtr() and BiosConsoleGet() functions.
Fixed Problems
- There was a problem with Modbus message byte ordering
that only affected the Isagraf kernel, which is built on
top of this API. Does not affect user applications.
- Made default regMode set to 'auto' for Isagraf, instead of
'MsbFirst'. This only affects the Isagraf kernel (built on
this API). Does not affect user applications.
- Removed all "static const" declarations which seem to
cause random fixup overflow by the linker.
- Fixed bug in FarToAbs() macro. Does not affect user
applications.
- Fixed bug in calculation of NVRAM base addess (specifying
512K would start at address 0x7fC00, which is standard RAM).
v3.07
Summary
New Features/Changes
- A new function, NE_UnTrigger(), was added to allow the
user program to clear the pending flag on a Net Event.
This can be useful at application startup time to avoid
sending events until things have settled out.
Fixed Problems
v3.06
Summary
New Features/Changes
- A new function, NE_Active(), was added to allow the user
program to find out if a network event is in process or
has been completed.
- A new function, NT_TrigClear(), was added to allow the
user program to reset a delta or edge trigger (clear the
condition by setting the last value field equal to the
current register value). Another new function,
NT_TrigClearAll(), performs this action on all triggers.
At system initialization, NT_TrigClearAll() is
automatically called after UserProgInit() to prevent a
false trigger at startup.
- Added UserProgEarlyInit() function which is called
immediately upon entry to main(). This was added to
provide a way to perform some initialization before Xinu
is started in the Multitasking SDK. Not typically needed in
normal applications.
Fixed Problems
- Made various event state changes thread safe.
v3.05
Summary
Maintenance release - Modbus fixes, time statistics.
New Features/Changes
- Time statistics functions were added to track the overall
loop time and time spent in UserProgMain (diagnostic aid).
Fixed Problems
- Modbus RTU Slave bad message rejection was further
improved by checking the register count against the byte
count for FMC and PMR messages. This eliminates a case
where the communication driver was trying to process the
data portion of a message addressed to another slave as a
valid message for itself (the message is now rejected
sooner, which allows the slave to more quickly recognize a
following good message).
- If a character gap is detected in the Modbus RTU Slave
driver, instead of throwing away any received bytes, the
receiver state machine is reset and the received bytes are
reevaluated beginning at the next possible start of
message byte. This improves the ability to detect good
messages embedded in noise or preceded by messages to
other slaves.
v3.04
Summary
Maintenance release - Modbus fixes.
New Features/Changes
- A flag has been added to the network session indicating
whether or not broadcast messages should be accepted. The
default state for this flag causes broadcast messages to
be ignored, which provides a minor performance improvement.
Fixed Problems
- It was possible for the Modbus RTU Slave driver to reject
good messages if they were preceded by noise or messages
destined for a different slave. The driver could "sync up"
with data or noise and begin to interpret the stream as a
message. The CRC would then fail and cause the data to be
discarded, possibly discarding some or all of a subsequent
good message. Now, if a message is rejected, the driver
backs up, throws out the first byte and attempts to re-
interpret the remaining data as a message.
- Modbus RTU Slave bad message rejection was improved by
adding cases for illegal length and illegal broadcast
message type codes so that the message or noise can be
discarded sooner.
- Broadcast messages were not being handled properly in the
Modbus Slave RTU driver. If a valid broadcast message was
received, a response would be generated (none should be).
Now responses are not generated.
- Increased the default net session character gap timeout
from 500 ms to 5000 ms to account for large delays in
UserProgMain (if user application code is slow). This
timeout is used in the Modbus slave driver to restart
the receive state machine if there is a large gap in the
incoming data stream.
- There was no prototype for the function
NS_RcvCharTimeoutSet.
v3.03
Summary
New Features/Changes
Fixed Problems
- When using the -10/10V mode on an AI16 board with no
calibration mode (kCalNone) the raw values would get
clamped at 0 and 4095. The raw values will now show the
full range range from -8092 to 8091.
v3.02
Summary
New Features/Changes
Fixed Problems
- When physical DOs were updated the channels were being
reversed.
- When a missing "reglink" was detected (i.e. Modbus message
received and no register type was associated with the
message type), no error message was logged.
v3.00
Summary
- This is a major new release with many changes and
improvements. Applications that compiled with version 2.50
will need significant changes in order to compile with
v3.00. We apologize for the inconvenience
that this will cause you, but felt it was necessary in
order to make improvements to our product that customers
have been asking for and which will make the system more
flexible, powerful and usable.
- Requires BIOS version 3.01 or later.
New Features/Changes
- Register Banks
- A major change has been made in the mechanism for
allocating and handling data registers.
- Removed support for pre-defined register types such as DI,
DO, AI, AO, AIINT and AOINT.
- All registers are now allocated using register banks
defined by the user.
- Associations may be made between register banks and
Modbus communications.
- Added register-to-register scaling and clamping.
- Communications
- Added support to Modbus for "nonstandard" data types
such as INT8, INT32, float and double.
- Added register link functions for linking specific
register banks to the different message types contained
within a protocol. This is utilized by Modbus RTU and
ASCII Slave protocols.
- Delta triggers (Constant and Register) now update the
entire register block when any one of the registers
crosses the delta threshold.
- ICL ASCII, Optomux and Ultimeter protocols are no longer
supported. We found that no one was using these protocols,
and it was causing us a lot of extra work to try to
maintain them as made changes to the system. If you
really want to run one of these protocols, contact
Technical Support, and we can give you the source code
from the last supported release for you to integrate
into your application code.
- BrickNet peer-to-peer communications protocol has been
extended and this is its first full-featured
implementation.
- Communications system improved to allow the definition
of more complex triggers.
- Message routing for Modbus and BrickNet have been added.
- Communications status and statistics functions are now
fully implemented.
- The interrupt priorities were rearranged, to give
COM1/COM2 highest priority. This allows COM1/COM2 to
handle higher baud rates.
- Alternate network session support has been added.
- The serial communications ISR and timer ISR were
optimized for speed, increasing overall efficiency and
increasing highest acceptable baud rate on COM1/COM2
(which have no FIFOs).
- Receive and transmit buffer size parameters were moved
to the network port, from the network session.
- Added support for nine-bit communications.
- Network port, event and session names are now case
insensitive.
- Added function to determine the number of bytes in the
transmit buffer for serial communications.
- The efficiency of ComWaitUntilXmtEmpty was improved when
used with XINU.
- ESP Configuration File
- Additional error checking has been added to the ESP
parser.
- Many new record types and keywords have been added and/
or altered to accomodate these changes.
- Miscellaneous
- A powerful new feature was added called the Textual User
Interface, or TUI, which allows you to set up a terminal
mode user interface for viewing/changing information
stored on the ICL-4300.
- Added ComEcho sample program to illustrate use of low-
level serial communications functions.
- A number of new sample programs were added,
corresponding to descriptions in the C SDK Manual.
- Added a function to set a limit on the maximum size of
the system log file.
- System log messages now optionally output to the console,
in addition to the log file.
- Much of user function argument checking has been
converted to Check() function calls, which generate a
system log message on error.
- Debug information is now stripped from the libraries.
- Added parameters to configuration file for analog input
averaging, digital input inversion and system log
message display.
- New function DelaySec added to give seconds-based delay.
- Support added for Super Size PCOS (flash memory and
NVRAM).
Fixed Problems
- Fixed scaling error with AI16 IO boards in 0to20mA mode.
Values would scale to large value when the current went
negative.
- Fixed BrickNet communications error. When waiting for a
response to a command and a command from another node is
received, we would respond and return the comm state back
to idle. When our response finally arrived we would reject
it since we were no longer in the receive response state.
- When parsing an [OPTIONS] record the proper parameter line
number is now returned on an error instead of the record
line number.
- Removed debug information form the BC31 libraries.
- The creation of Modbus master net events are now rejected
when an AI or DI register is specified as the destination
for a write.
- For long messages (>200ms), NP_NetDisconnect could
disconnect early. This could cut off the tail end of RS-
485 transmissions, depending on how the Trail Delay was set.
- Problem in makefile was causing libraries to be compiled
as 8086 for all compiler versions, as opposed to
generating 80386 code for 4.5 and 5.0 compilers.
- Changed library makefile to cause in and out I/O
instructions to be generated inline, instead of using
function calls (which is the default behavior in BC 5.0).
- A memory leak was fixed that would occur if the network
system was shutdown and re-started.
- LSR error (framing, parity) status was not being checked
in ComWaitUntilXmtEmpty().
- The RTS signal on COM1 was not enabled.
- The response delay feature was not working.
- Serial port control signal access functions did not work
unless the port was open. Now they work even when the port
is closed.
v2.50
Summary
- Added the use Data Banks for storing various data types
(modified IO to use these).
- Added preliminary support for BrickNet peer-to-peer
communications protocol.
- Added Support for bipolar and multi-mode IO boards.
New Features/Changes
- Added new sample programs illustrating use of
Configuration (.ini) File.
- Scaling data is now stored as 32 bit signed integers.
- Added Analog Input averaging.
- Added support for multiple calibration modes.
- Changed scaling and clamping to be based on percent.
- Added Com7 for modem support.
- Inverted state of AI and DI filters.
- ComReadStatus and associated enums changed to support
multiple error values. Each bit in value no represents a
different error.
- Enabled transmit and receive FIFO usage on COM3-COM7 to
reduce interrupt rate and allow higher baud rates without
receive overruns.
- Revamped Com ISR to process received bytes first, reducing
likelyhood of receive overruns.
- When used with XINU, ComWriteBytes and ComWriteString now
use a more efficient waiting process, if no room in
available in transmit buffer, to allow other threads more
CPU time.
- ComReset now sets port status to normal.
Fixed Problems
- The makefile icl4300.mak had incorrect XINU path.
- In BUILD.BAT, it would remember the LIST attribute once it
was used, and next time BUILD was run, would assume there
should be a list file, even if this was not true.
- Sample programs modrtums and modrtusl had .cfg files that
did not enable the needed modules.
- PCOS API vers.h would overwrite ICL-4300 vers.h on
installation. Now ICL-4300 vers.h is retained.
- Whenever the UART LSR register was read, the value was not
always checked for parity/rcv overrun/framing errors. Thus
some errors could be missed and not reported via
ComReadStatus.
- Receive overflow (data being received faster than
application is reading it from software buffer) was not
being recorded.
- When used with XINU multitasking kernel, communications
lockups could occur at high baud rates if multiple ports
were used simultaneously.
|