====================================================================================================
== Release Note (TDSE) =============================================================================

[] V19.070 : 2019/07/05

  + First release of Program in English and English Documentation.



[] V19.100 : 2019/10/25

  + LSH (Local String Header) can be specified in Multi Byte Text String item in SML format message
    definition file.
    Specify 'M99' (99:LSH value) as the mnemonic when specifying Multi Byte Text String (022).

  + LSH (Local String Header) of Multi Byte Text String item can be output to communication trace
    file by specifying (TRCTTYPE&0x4000) of .ini.

  + In _TDSMssgBuild(), _TDSMDMssgBuild(), _TDSMssgNext(), and _TDSMDMssgNext() functions, it is
    now possible to specify whether or not to perform character code conversion for Multi Byte Text
    String items.

  + Enabled to display LSH (Local String Header) of Multi Byte Text String item by specifying
    (mode&0x4000) of _TDSMssgNextL().

  + The TDSCommClose() and TDSUDrvClose() processes were reviewed to shorten the end time.

  + Solved the problem that the software may terminate abnormally due to inadequate license
    management processing when the NIC does not exist.

  + Revised the termination process when any abnormality such as a license abnormality occurred,
    revised the malfunctions such as abnormal termination at the end, and shortened the termination
    process time.

  + Change the configuration of the sample program.
    Changed to automatically place execution files and setting files in Sample0/bin32/ and
    Sample0/bin64/ by Make or Build processing in each directory.
    Note that SampleX on Windows is automatically placed in ./bin/ as before.

  + Announced that support for VS2005 and VS2008 will end at the end of 2019



[] V20.040 : 2020/04/17

  + Problem that error code in return value from _TDSCommRecv(), _TDSCommSend(), etc. and error
    code obtained by callback function differ depending on the OS type, OS version, etc. was solved
    by unifying the error codes.
    Macro constants indicating error codes (numbers) used in TDS are macro names starting with "E_".
    ----
    Therefore, if you are currently using a macro name such as "ENOMEM" etc., originally, it is
    necessary to change to "E_NOMEM" etc.
    However, the current values of E_NOENT, E_INTR ... E_NOSPC are same as the ENOENT, EINTR ...
    ENOSPC values, so there is no problem in operation without changing them at present.
    ----
    When referring to error codes in languages such as C#, VB, Java, etc., refer to the error
    numbers displayed by tdse.exe.

  + Solved the following problem that occurred when using Local Memory as a queue used inside TDS
    ((QUEMODE & 0xc0) == 0x80) on Windows.
    Contention occurs when a message transmission request generated inside the TDS and a transmission
    request from the AP occur at the same time, for example, by using the Link Test.
    As a result, either message is not processed for transmission, and E_TIMEDOUT is reported to the
    AP or E_T6TIMEDOUT occurs as a result.

  + Added setting of (mode&0x1000) of _TDSCommOpen().  When the communication processing execution
    unit is executed as a thread inside the AP (that is, when (mode&0x1003)==0x1002 of
    _TDSCommOpen()), the current connection status obtained by _TDSCommStatus() and
    _TDSCommSelectStatus() can be synchronized with the current connection status of the
    communication control unit.
    With this setting ((mode&0x1003)==0x1002), if the communication control is threaded, the current
    connection status can always be obtained regardless of execution of _TDSCommRecv() even if the
    receiving from TDS is not based on Callback.

  + Review the Select, Deselect, and Separate processing when connecting to HSMS-GS and revise so
    that the current Select status can be correctly recognized.

  + Improved automatic connection method when HSMS-GS communication is performed by Active
    connection using _TDSUDrvXxxx().
    The Separate request for each sessionID used re-examined the reconnection procedure when a
    certain sessionID became Not Select status, and avoided the situation where connection
    processing could not be performed.

  + Solved the problem of reporting a disconnection to User AP (reporting disconnection processing
    for new connection) when prioritizing an existing connection at the time of ACCEPT of duplicate
    connection during HSMS Passive connection.

  + When sending SECS messages with _TDSCommSend() and _TDSUDrvSend() in HSMS-SS/HSMS-GS
    communication, the current Select status was checked.  If not, a -E_NOEXEC error occurred.

  + (mode&0x4000) of _TDSCommRecv(), _TDSCommSend(), _TDSCommSendError() and similar _TDSUDrvXxxx()
    are newly added, and it is now possible to specify the byte order format of multiple byte items
    in the SECS header to get and set.
    Currently, the configuration of SECS message header referenced by AP is the byte order of
    operating system, but it is also possible to refer to SECS message in original byte order.

  + In the following functions of C# version TDS, 'sbyte' can be used as the type of each item value.
    - MssgBuild()
    - MDMssgBuild()
    - MDMssgNext()

  + The following revisions were made for each sample program (.c, .cpp, .cs, .vb, .java, .py, .rb).
    - A startup parameter is added, and the parameter that indicates the operation mode can be
      changed at startup.
    - The sending/receiving processing of S1F21 and S1F22 was added, and the sending/receiving
      example for all data types was shown.
    - DispSECSMssg() illustrates how to use _TDSMDMssgFind(), MDMssgNext(), and MDMssgEnd() to get
      the value of any message item you need by using the message definition file.

  + To show send/receive examples for all data types, S1F21 and S1F22 was added to each sample
    program (.c, .cpp, .cs, .vb, .java, .py and .rb).
    In addition, startup parameters for each sample program have been added, and parameters that
    indicate the mode of operation can be changed at startup.


[] V20.090 : 2020/09/01

  + By setting (DEVMODE&0x4000)!=0 in .ini, it became possible to reset LinkTest transmission timer
    during HSMS communication by receiving a data message from connection partner.
    As a result, with this setting, LinkTest will not be issued while application messages are being
    exchanged.

  + TDSECSHeadA structure that stores SECS Header member for each SECS-1 connection and HSMS
    connection is newly added in TDS.h.

  + Moved the setting of the 14th bit of 'mode' value in the following function (SECS header to get
    or specify is Network ByteOrder) (mode&0x4000) to the 13th bit (mode&0x2000).
    - _TDSCommRecv(), _TDSCommSend(), _TDSCommSendError()
    - _TDSUDrvRecv(), _TDSUDrvSend(), _TDSUDrvSendError()
    If you are currently using this function in the above function, please move the bit that
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    specifies mode.
    ~~~~~~~~~~~~~~~
  + Added the setting of the 13th bit (mode&0x2000) to 'mode' of _TDSMDMssgAutoRes(), and made it
    possible to specify the SECS header to be specified in Network ByteOrder. 


