Update README from eaw.app website content

This commit is contained in:
eaw
2026-03-14 10:06:35 +00:00
parent b8afc196c2
commit 0d014802c5

140
README.md
View File

@@ -1,22 +1,24 @@
Please consult my [GitHub](https://pdsmart.github.io) website for more upto date information. # libraries
<br>
**Website:** [engineers@work](https://eaw.app) | **Repository:** [git.eaw.app/eaw/libraries](https://git.eaw.app/eaw/libraries)
---
This repository is a collection of software libraries I've developed over time, some which I aim to use with the ZPU Evo. This repository is a collection of software libraries I've developed over time, some which I aim to use with the ZPU Evo.
Currently there is an issue with the ZPU GCC Toolchain in that it doesnt support network programming or the newlib library. This means UX wont fully build for the ZPU Evo but it is something I will endeavour to resolve as I want network functionality and threads in zOS. Currently there is an issue with the ZPU GCC Toolchain in that it doesn't support network programming or the newlib library. This means UX won't fully build for the ZPU Evo but it is something I will endeavour to resolve as I want network functionality and threads in zOS.
<br> <br>
# UX Library ## <font style="color: yellow;" size="6">UX Library</font>
In 1994 most C program creation involved buying expensive toolkits (such as Rogue Wave) and cobbling the often faulty library API's together or writing your own which was no trivial task. Today, most modern languages have very rich eco systems, ie. Java, Perl, Python etc. Libraries can be found for C/C++ such as this one which are open source to speed development but you may have to look hard. In 1994 most C program creation involved buying expensive toolkits (such as Rogue Wave) and cobbling the often faulty library API's together or writing your own which was no trivial task. Today, most modern languages have very rich eco systems, ie. Java, Perl, Python etc. Libraries can be found for C/C++ such as this one which are open source to speed development but you may have to look hard.
I wrote this library to make it easier to write C programs for clients and often the whole toolkit was eventually given to the client and enhanced considerably for them whilst designing their applications (unfortunately due to licensing I couldnt back port the enhancements). I wrote this library to make it easier to write C programs for clients and often the whole toolkit was eventually given to the client and enhanced considerably for them whilst designing their applications (unfortunately due to licensing I couldn't back port the enhancements).
It makes it much easier to write C programs on Linux, Solaris and Windows and for embedded development will be very useful. The ZPU Evo is one such target for this toolkit, hence bringing it back to life. It makes it much easier to write C programs on Linux, Solaris and Windows and for embedded development will be very useful. The ZPU Evo is one such target for this toolkit, hence bringing it back to life.
The methods in the UX Library are described below ordered by the module to which they belong. If a method begins with '_' then it is internal and normally not called directly, albeit being C there is no Private definition to methods or their data so you can call them if it helps. The methods in the UX Library are described below ordered by the module to which they belong. If a method begins with '_' then it is internal and normally not called directly, albeit being C there is no Private definition to methods or their data so you can call them if it helps.
### ux_cli ### <font style="color: yellow;" size="5">ux_cli</font>
Unix or Windows Command Line Processing functions. Unix or Windows Command Line Processing functions.
@@ -27,7 +29,7 @@ Unix or Windows Command Line Processing functions.
|Returns: |R_OK - Parameter obtained.<br>R_FAIL - Parameter does not exist.| |Returns: |R_OK - Parameter obtained.<br>R_FAIL - Parameter does not exist.|
|Prototype: |`int GetCLIParam( int nArgc /* I: Argc or equiv */, UCHAR **Argv /* IO: Argv or equiv */, UCHAR *szParm /* I: Param flag to look for */, UINT nParmType /* I: Type of param (ie int) */, UCHAR *pVar /* O: Pointer to variable for parm */, UINT nVarLen /* I: Length pointed to by pVar */, UINT nZapParam ) /* I: Delete argument after proc */`| |Prototype: |`int GetCLIParam( int nArgc /* I: Argc or equiv */, UCHAR **Argv /* IO: Argv or equiv */, UCHAR *szParm /* I: Param flag to look for */, UINT nParmType /* I: Type of param (ie int) */, UCHAR *pVar /* O: Pointer to variable for parm */, UINT nVarLen /* I: Length pointed to by pVar */, UINT nZapParam ) /* I: Delete argument after proc */`|
### ux_cmprs ### <font style="color: yellow;" size="5">ux_cmprs</font>
A set of methods to compress/decompress data. The basic code stems from a LINUX public domain lzw compression/decompression algorithm, basically tidied up a little and enhanced to allow embedding within programs. Eventually, a more hi-tech algorithm will be implemented, but for now, this lzw appears to have very high compression ratio's on text. A set of methods to compress/decompress data. The basic code stems from a LINUX public domain lzw compression/decompression algorithm, basically tidied up a little and enhanced to allow embedding within programs. Eventually, a more hi-tech algorithm will be implemented, but for now, this lzw appears to have very high compression ratio's on text.
@@ -59,7 +61,7 @@ A set of methods to compress/decompress data. The basic code stems from a LINUX
|Returns: |0 = Worthless CPU waste (No compression)<br>-1 = General error<br>-2 = Logical error<br>-3 = Expand error<br>>0 = OK/total length| |Returns: |0 = Worthless CPU waste (No compression)<br>-1 = General error<br>-2 = Logical error<br>-3 = Expand error<br>>0 = OK/total length|
|Prototype: |`int RLZW( code *si /* I: Data to be decompressed */, byte *so /* O: Decompressed data */, int silen /* I: Compressed length */, int len ) /* I: Expected length of decompressed data. */`| |Prototype: |`int RLZW( code *si /* I: Data to be decompressed */, byte *so /* O: Decompressed data */, int silen /* I: Compressed length */, int len ) /* I: Expected length of decompressed data. */`|
### ux_comms ### <font style="color: yellow;" size="5">ux_comms</font>
Generic network communications routines. These form the basis of daemon functionality, receiving connections and scheduling processes and callbacks. Generic network communications routines. These form the basis of daemon functionality, receiving connections and scheduling processes and callbacks.
@@ -85,13 +87,13 @@ Generic network communications routines. These form the basis of daemon function
|**Function**: |**_SL_FdBlocking**| |**Function**: |**_SL_FdBlocking**|
|Description: |Set a file descriptors blocking mode.| |Description: |Set a file descriptors blocking mode.|
|Thread Safe: | Yes| |Thread Safe: | Yes|
|Returns: |R_OK - Mode set.<br>R_FAIL - Couldnt set mode.| |Returns: |R_OK - Mode set.<br>R_FAIL - Couldn't set mode.|
|Prototype: |`int _SL_FdBlocking( int nFd /* File descr to perform action on*/, int nBlock ) /* Block (1) or non-blocking (0) */`| |Prototype: |`int _SL_FdBlocking( int nFd /* File descr to perform action on*/, int nBlock ) /* Block (1) or non-blocking (0) */`|
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_SL_AcceptClient**| |**Function**: |**_SL_AcceptClient**|
|Description: |Accept an incoming request from a client. Builds a duplicate table entry for the client (if one doesnt already exist) and allocates a unique Channel Id to it.| |Description: |Accept an incoming request from a client. Builds a duplicate table entry for the client (if one doesn't already exist) and allocates a unique Channel Id to it.|
|Thread Safe: | No, ensures only SL library thread may enter.| |Thread Safe: | No, ensures only SL library thread may enter.|
|Returns: |R_OK - Comms functionality initialised.<br>R_FAIL - Initialisation failed, see Errno.<br>| |Returns: |R_OK - Comms functionality initialised.<br>R_FAIL - Initialisation failed, see Errno.<br>|
|<Errno> |E_NOMEM - Memory exhaustion.| |<Errno> |E_NOMEM - Memory exhaustion.|
@@ -120,7 +122,7 @@ Generic network communications routines. These form the basis of daemon function
|Description: |Attempt to make a connection with a remote server.| |Description: |Attempt to make a connection with a remote server.|
|Thread Safe: | No, forces SL thread entry only.| |Thread Safe: | No, forces SL thread entry only.|
|Returns: |R_OK - <br>R_FAIL - <br>| |Returns: |R_OK - <br>R_FAIL - <br>|
|<Errno> |E_NOMEM - Memory exhaustion.<br>E_NOSOCKET - Couldnt allocate a socket for connection.| |<Errno> |E_NOMEM - Memory exhaustion.<br>E_NOSOCKET - Couldn't allocate a socket for connection.|
|Prototype: |`int _SL_ConnectToServer( SL_NETCONS *spNetCon )| |Prototype: |`int _SL_ConnectToServer( SL_NETCONS *spNetCon )|
| | | | | |
@@ -138,7 +140,7 @@ Generic network communications routines. These form the basis of daemon function
|Description: |Process the data held in a network connection's receive buffer. If a complete packet has been assembled and passed a CRC check, pass the data to the subscribing application via its callback.| |Description: |Process the data held in a network connection's receive buffer. If a complete packet has been assembled and passed a CRC check, pass the data to the subscribing application via its callback.|
|Thread Safe: | No, forces SL thread entry only.| |Thread Safe: | No, forces SL thread entry only.|
|Returns: |R_OK - <br>R_FAIL - <br>| |Returns: |R_OK - <br>R_FAIL - <br>|
|<Errno> |E_NOMEM - Memory exhaustion.<br>E_NOSOCKET - Couldnt allocate a socket for connection.| |<Errno> |E_NOMEM - Memory exhaustion.<br>E_NOSOCKET - Couldn't allocate a socket for connection.|
|Prototype: |`int _SL_ProcessRecvBuf( SL_NETCONS *spNetCon )`| |Prototype: |`int _SL_ProcessRecvBuf( SL_NETCONS *spNetCon )`|
| | | | | |
@@ -197,7 +199,7 @@ Generic network communications routines. These form the basis of daemon function
|**Function**: |**SL_Exit**| |**Function**: |**SL_Exit**|
|Description: |Decommission the Comms module ready for program termination or re-initialisation.| |Description: |Decommission the Comms module ready for program termination or re-initialisation.|
|Thread Safe: | No, API function, only allows one thread at a time.| |Thread Safe: | No, API function, only allows one thread at a time.|
|Returns: |R_OK - Exit succeeded.<br>R_FAIL - Couldnt perform exit processing, see errno.| |Returns: |R_OK - Exit succeeded.<br>R_FAIL - Couldn't perform exit processing, see errno.|
|<Errno> | |<Errno> |
|Prototype: |`int SL_Exit( UCHAR *szErrMsg ) /* O: Error message buffer */`| |Prototype: |`int SL_Exit( UCHAR *szErrMsg ) /* O: Error message buffer */`|
@@ -212,9 +214,9 @@ Generic network communications routines. These form the basis of daemon function
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**SL_GetChanId**| |**Function**: |**SL_GetChanId**|
|Description: |Get a channel Id from a given IP addr. If the IP addr doesnt exist or is still pending a connection, return 0 as an error.| |Description: |Get a channel Id from a given IP addr. If the IP addr doesn't exist or is still pending a connection, return 0 as an error.|
|Thread Safe: | No, API function only allows one thread at a time.| |Thread Safe: | No, API function only allows one thread at a time.|
|Returns: |> 0 - Channel Id associated with IP address.<br>0 - Couldnt find an associated channel.| |Returns: |> 0 - Channel Id associated with IP address.<br>0 - Couldn't find an associated channel.|
|Prototype: |`UINT SL_GetChanId( ULNG lIPaddr ) /* I: Address to xlate */`| |Prototype: |`UINT SL_GetChanId( ULNG lIPaddr ) /* I: Address to xlate */`|
| | | | | |
@@ -232,7 +234,7 @@ Generic network communications routines. These form the basis of daemon function
|Description: |Add an entry into the Network Connections table as a Server. An entry is built up and a socket created and set listening.| |Description: |Add an entry into the Network Connections table as a Server. An entry is built up and a socket created and set listening.|
|Thread Safe: | No, API Function, only allows one thread at a time.| |Thread Safe: | No, API Function, only allows one thread at a time.|
|Returns: |R_OK - Successfully added.<br>R_FAIL - Error, see Errno.| |Returns: |R_OK - Successfully added.<br>R_FAIL - Error, see Errno.|
|<Errno> |E_NOMEM - Memory exhaustion.<br>E_BADPARM - Bad parameters passed.<br>E_EXISTS - Entry already exists.<br>E_NOSOCKET - Couldnt grab a socket.<br>E_NOLISTEN - Couldnt listen on given port.| |<Errno> |E_NOMEM - Memory exhaustion.<br>E_BADPARM - Bad parameters passed.<br>E_EXISTS - Entry already exists.<br>E_NOSOCKET - Couldn't grab a socket.<br>E_NOLISTEN - Couldn't listen on given port.|
|Prototype: |`int SL_AddServer( UINT nPortNo /* I: Port to listen on */, UINT nForkForAccept /* I: Fork prior to accept */, void (*nDataCallback)() /* I: Data ready callback */, void (*nCntrlCallback)(int, ...) ) /* I: Control callback */`| |Prototype: |`int SL_AddServer( UINT nPortNo /* I: Port to listen on */, UINT nForkForAccept /* I: Fork prior to accept */, void (*nDataCallback)() /* I: Data ready callback */, void (*nCntrlCallback)(int, ...) ) /* I: Control callback */`|
| | | | | |
@@ -284,7 +286,7 @@ Generic network communications routines. These form the basis of daemon function
|**Function**: |**SL_SendData**| |**Function**: |**SL_SendData**|
|Description: |Transmit a packet of data to a given destination identified by it channel Id.| |Description: |Transmit a packet of data to a given destination identified by it channel Id.|
|Thread Safe: | No, API function, only allows one thread at a time.| |Thread Safe: | No, API function, only allows one thread at a time.|
|Returns: |R_OK - Data sent successfully.<br>R_FAIL - Couldnt send data, see Errno.| |Returns: |R_OK - Data sent successfully.<br>R_FAIL - Couldn't send data, see Errno.|
|<Errno> |E_INVCHANID - Invalid channel Id.<br>E_BUSY - Channel is busy, retry later.<br>E_BADSOCKET - Internal failure on socket, terminal.<br>E_NOSERVICE - No remote connection established yet.| |<Errno> |E_INVCHANID - Invalid channel Id.<br>E_BUSY - Channel is busy, retry later.<br>E_BADSOCKET - Internal failure on socket, terminal.<br>E_NOSERVICE - No remote connection established yet.|
|Prototype: |`int SL_SendData( UINT nChanId /* I: Channel Id to send data on */, UCHAR *szData /* I: Data to be sent */, UINT nDataLen ) /* I: Length of data */`| |Prototype: |`int SL_SendData( UINT nChanId /* I: Channel Id to send data on */, UCHAR *szData /* I: Data to be sent */, UINT nDataLen ) /* I: Length of data */`|
@@ -293,14 +295,14 @@ Generic network communications routines. These form the basis of daemon function
|**Function**: |**SL_BlockSendData**| |**Function**: |**SL_BlockSendData**|
|Description: |Transmit a packet of data to a given destination but ensure it is sent prior to exit. If an error occurs, then return it to the caller. | |Description: |Transmit a packet of data to a given destination but ensure it is sent prior to exit. If an error occurs, then return it to the caller. |
|Thread Safe: | No, API function, only allows one thread at a time.| |Thread Safe: | No, API function, only allows one thread at a time.|
|Returns: |R_OK - Data sent successfully.<br>R_FAIL - Couldnt send data, see Errno.| |Returns: |R_OK - Data sent successfully.<br>R_FAIL - Couldn't send data, see Errno.|
|<Errno> |E_INVCHANID - Invalid channel Id.<br>E_BADSOCKET - Internal failure on socket, terminal.<br>E_NOSERVICE - No remote connection established yet.| |<Errno> |E_INVCHANID - Invalid channel Id.<br>E_BADSOCKET - Internal failure on socket, terminal.<br>E_NOSERVICE - No remote connection established yet.|
|Prototype: |`int SL_BlockSendData( UINT nChanId /* I: Channel Id to send data on */, UCHAR *szData /* I: Data to be sent */, UINT nDataLen ) /* I: Length of data */`| |Prototype: |`int SL_BlockSendData( UINT nChanId /* I: Channel Id to send data on */, UCHAR *szData /* I: Data to be sent */, UINT nDataLen ) /* I: Length of data */`|
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**SL_Poll**| |**Function**: |**SL_Poll**|
|Description: |Function for programs which cant afford UX taking control of the CPU. This function offers these type of applications the ability to allow comms processing by frequently calling this Poll function.| |Description: |Function for programs which can't afford UX taking control of the CPU. This function offers these type of applications the ability to allow comms processing by frequently calling this Poll function.|
|Thread Safe: | No, API function, only allows one thread at a time.| |Thread Safe: | No, API function, only allows one thread at a time.|
|Returns: |R_OK - System closing down.R_FAIL - Catastrophe, see Errno.| |Returns: |R_OK - System closing down.R_FAIL - Catastrophe, see Errno.|
|<Errno> | | |<Errno> | |
@@ -315,7 +317,7 @@ Generic network communications routines. These form the basis of daemon function
|<Errno> | | |<Errno> | |
|Prototype: |`int SL_Kernel( void )`| |Prototype: |`int SL_Kernel( void )`|
### ux_lgr ### <font style="color: yellow;" size="5">ux_lgr</font>
General purpose standalone (programmable) logging utilities. General purpose standalone (programmable) logging utilities.
@@ -326,7 +328,7 @@ General purpose standalone (programmable) logging utilities.
|Returns: |Non.| |Returns: |Non.|
|Prototype: |`void Lgr( int nLevel /* I: Level of error message/or command */, ... ) /* I: Varargs */`| |Prototype: |`void Lgr( int nLevel /* I: Level of error message/or command */, ... ) /* I: Varargs */`|
### ux_linkl ### <font style="color: yellow;" size="5">ux_linkl</font>
A library of linked list functions for creating, deleting, searching (etc..) linked lists. A library of linked list functions for creating, deleting, searching (etc..) linked lists.
@@ -343,7 +345,7 @@ A library of linked list functions for creating, deleting, searching (etc..) lin
|**Function**: |**DelItem**| |**Function**: |**DelItem**|
|Description: |Delete an element from a given linked list. The underlying carried data is not freed, it is assumed that the caller will free that, as it was the caller that allocated it.| |Description: |Delete an element from a given linked list. The underlying carried data is not freed, it is assumed that the caller will free that, as it was the caller that allocated it.|
|Returns: |R_OK - Item deleted successfully.<br>R_FAIL - Failure in deletion, see Errno.| |Returns: |R_OK - Item deleted successfully.<br>R_FAIL - Failure in deletion, see Errno.|
|<Errno> |E_BADHEAD - Head pointer is bad.<br>E_BADTAIL - Tail pointer is bad.<br>E_MEMFREE - Couldnt free memory to sys pool.<br>E_NOKEY - No search key provided.| |<Errno> |E_BADHEAD - Head pointer is bad.<br>E_BADTAIL - Tail pointer is bad.<br>E_MEMFREE - Couldn't free memory to sys pool.<br>E_NOKEY - No search key provided.|
|Prototype: |`int DelItem( LINKLIST **spHead /* IO: Pointer to head of list */, LINKLIST **spTail /* IO: Pointer to tail of list */, void *spKey /* I: Addr of item, direct update */, UINT *nKey /* I: Integer based search key */, ULNG *lKey /* I: Long based search key */, UCHAR *szKey ) /* I: String based search key */`| |Prototype: |`int DelItem( LINKLIST **spHead /* IO: Pointer to head of list */, LINKLIST **spTail /* IO: Pointer to tail of list */, void *spKey /* I: Addr of item, direct update */, UINT *nKey /* I: Integer based search key */, ULNG *lKey /* I: Long based search key */, UCHAR *szKey ) /* I: String based search key */`|
| | | | | |
@@ -394,7 +396,7 @@ A library of linked list functions for creating, deleting, searching (etc..) lin
|<Errno> |E_BADHEAD - Head pointer is bad.| |<Errno> |E_BADHEAD - Head pointer is bad.|
|Prototype: |`int SizeList( LINKLIST *spHead /* I: Pointer to head of list */, UINT *nCnt ) /* O: Count of elements in list */`| |Prototype: |`int SizeList( LINKLIST *spHead /* I: Pointer to head of list */, UINT *nCnt ) /* O: Count of elements in list */`|
### ux_mon ### <font style="color: yellow;" size="5">ux_mon</font>
Interactive Monitor functionality. Provides a suite of interactive commands (HTML or Natural Language) that a user can issue to an executing application that incorporates these facilities. Interactive Monitor functionality. Provides a suite of interactive commands (HTML or Natural Language) that a user can issue to an executing application that incorporates these facilities.
@@ -408,7 +410,7 @@ Interactive Monitor functionality. Provides a suite of interactive commands (HTM
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_ML_InterpretHTMLRequest**| |**Function**: |**_ML_InterpretHTMLRequest**|
|Description: |Buffer from an external client (ie. Web Browser) contains a an HTML request. Interpret it into a set of actions through comparisons and deductions.| |Description: |Buffer from an external client (ie. Web Browser) contains an HTML request. Interpret it into a set of actions through comparisons and deductions.|
|Returns: |Non.| |Returns: |Non.|
|Prototype: |`UINT _ML_InterpretHTMLRequest( ML_MONLIST *spMon /* I: Monitor Desc */, ML_CONLIST *spCon /* I: Connection Desc */, UCHAR *szData ) /* I: Command Buffer */`| |Prototype: |`UINT _ML_InterpretHTMLRequest( ML_MONLIST *spMon /* I: Monitor Desc */, ML_CONLIST *spCon /* I: Connection Desc */, UCHAR *szData ) /* I: Command Buffer */`|
@@ -451,7 +453,7 @@ Interactive Monitor functionality. Provides a suite of interactive commands (HTM
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**ML_Exit**| |**Function**: |**ML_Exit**|
|Description: |Decommission the Monitor module ready for program termination or re-initialisation.| |Description: |Decommission the Monitor module ready for program termination or re-initialisation.|
|Returns: |R_OK - Exit succeeded.<br>R_FAIL - Couldnt perform exit processing, see errno.| |Returns: |R_OK - Exit succeeded.<br>R_FAIL - Couldn't perform exit processing, see errno.|
|<Errno> | |<Errno> |
|Prototype: |`int ML_Exit( UCHAR *szErrMsg ) /* O: Error message buffer */`| |Prototype: |`int ML_Exit( UCHAR *szErrMsg ) /* O: Error message buffer */`|
@@ -466,7 +468,7 @@ Interactive Monitor functionality. Provides a suite of interactive commands (HTM
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**ML_AddMonCommand**| |**Function**: |**ML_AddMonCommand**|
|Description: |Add a command to the interactive monitors database of recognised reserved words. When a command comes in from an external user, if checks it against its reserved word list for verification and identification.| |Description: |Add a command to the interactive monitors database of recognised reserved words. When a command comes in from an external user, if checks it against its reserved word list for verification and identification.|
|Returns: |R_OK - Command added.<br>R_FAIL - Couldnt add command, see errno.| |Returns: |R_OK - Command added.<br>R_FAIL - Couldn't add command, see errno.|
|<Errno> | |<Errno> |
|Prototype: |`int ML_AddMonCommand( UINT nMonPort /* I: Service Mon Port */, UCHAR *szCommand /* I: Command in text */, int (*nCallback)()) /* I: Command callback */`| |Prototype: |`int ML_AddMonCommand( UINT nMonPort /* I: Service Mon Port */, UCHAR *szCommand /* I: Command in text */, int (*nCallback)()) /* I: Command callback */`|
@@ -474,7 +476,7 @@ Interactive Monitor functionality. Provides a suite of interactive commands (HTM
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**ML_DelMonCommand**| |**Function**: |**ML_DelMonCommand**|
|Description: |Delete a command currently active in a monitor channels database of recognised words.| |Description: |Delete a command currently active in a monitor channels database of recognised words.|
|Returns: |R_OK - Command deleted.<br>R_FAIL - Couldnt delete command, see errno.| |Returns: |R_OK - Command deleted.<br>R_FAIL - Couldn't delete command, see errno.|
|<Errno> | |<Errno> |
|Prototype: |`int ML_DelMonCommand( UINT nMonPort, /* I: Service Mon Port */, UCHAR *szCommand ) /* I: Command to delete */`| |Prototype: |`int ML_DelMonCommand( UINT nMonPort, /* I: Service Mon Port */, UCHAR *szCommand ) /* I: Command to delete */`|
@@ -482,11 +484,11 @@ Interactive Monitor functionality. Provides a suite of interactive commands (HTM
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**ML_Broadcast**| |**Function**: |**ML_Broadcast**|
|Description: |Broadcast a message to all listening monitor processes.| |Description: |Broadcast a message to all listening monitor processes.|
|Returns: |R_OK - Data sent to some/all successfully.<br>R_FAIL - Couldnt send to any, see Errno.| |Returns: |R_OK - Data sent to some/all successfully.<br>R_FAIL - Couldn't send to any, see Errno.|
|<Errno> | | |<Errno> | |
|Prototype: |`int ML_Broadcast( UCHAR *szData /* I: Data to be sent */, UINT nDataLen ) /* I: Length of data */`| |Prototype: |`int ML_Broadcast( UCHAR *szData /* I: Data to be sent */, UINT nDataLen ) /* I: Length of data */`|
### ux_str ### <font style="color: yellow;" size="5">ux_str</font>
General purpose string processing funtions. Additions to those which exist within the C libraries. General purpose string processing funtions. Additions to those which exist within the C libraries.
@@ -521,7 +523,7 @@ General purpose string processing funtions. Additions to those which exist withi
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**StrPut**| |**Function**: |**StrPut**|
|Description: |Put a string INTO another string. Same as strcpy BUT it doesnt terminate the destination string.| |Description: |Put a string INTO another string. Same as strcpy BUT it doesn't terminate the destination string.|
|Returns: |R_OK - Cannot fail ... will I be eating my words...?| |Returns: |R_OK - Cannot fail ... will I be eating my words...?|
|Prototype: |`UINT StrPut( UCHAR *spDestBuf /* I: Destination buffer to copy into */, UCHAR *spSrcBuf /* I: Source buffer to copy from */, UINT nBytes ) /* I: Number of bytes to copy */`| |Prototype: |`UINT StrPut( UCHAR *spDestBuf /* I: Destination buffer to copy into */, UCHAR *spSrcBuf /* I: Source buffer to copy from */, UINT nBytes ) /* I: Number of bytes to copy */`|
@@ -570,14 +572,14 @@ General purpose string processing funtions. Additions to those which exist withi
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**StrCaseCmp**| |**Function**: |**StrCaseCmp**|
|Description: |A function to perform string compares regardless of character case. Provided mainly for operating systems that dont possess such functionality.| |Description: |A function to perform string compares regardless of character case. Provided mainly for operating systems that don't possess such functionality.|
|Returns: |0 - Strings compare.<br>> 0 <br>< 0| |Returns: |0 - Strings compare.<br>> 0 <br>< 0|
|Prototype: |`int StrCaseCmp( const char *szSrc /* I: Base string to compare against */, const char *szCmp ) /* I: Comparator string */`| |Prototype: |`int StrCaseCmp( const char *szSrc /* I: Base string to compare against */, const char *szCmp ) /* I: Comparator string */`|
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**StrnCaseCmp**| |**Function**: |**StrnCaseCmp**|
|Description: |A function to perform string compares regardless of character case for a specified number of characters within both strings. Provided mainly for operating systems that dont possess such functionality.| |Description: |A function to perform string compares regardless of character case for a specified number of characters within both strings. Provided mainly for operating systems that don't possess such functionality.|
|Returns: |0 - Strings compare.<br>> 0 <br>< 0| |Returns: |0 - Strings compare.<br>> 0 <br>< 0|
|Prototype: |`int StrnCaseCmp( const char *szSrc /* I: Base string to compare against */, const char *szCmp /* I: Comparator string */, size_t nCount ) /* I: Number of bytes to compare */`| |Prototype: |`int StrnCaseCmp( const char *szSrc /* I: Base string to compare against */, const char *szCmp /* I: Comparator string */, size_t nCount ) /* I: Number of bytes to compare */`|
@@ -585,10 +587,10 @@ General purpose string processing funtions. Additions to those which exist withi
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**SplitFQFN**| |**Function**: |**SplitFQFN**|
|Description: |A function to split a fully qualified filename into a directory and filename components.| |Description: |A function to split a fully qualified filename into a directory and filename components.|
|Returns: |R_OK - Filename split.<br>R_FAIL - Couldnt split due to errors, ie. memory.| |Returns: |R_OK - Filename split.<br>R_FAIL - Couldn't split due to errors, ie. memory.|
|Prototype: |`int SplitFQFN( char *szFQFN /* I: Fully Qualified File Name */, char **szDir /* O: Directory component */, char **szFN ) /* O: Filename component */`| |Prototype: |`int SplitFQFN( char *szFQFN /* I: Fully Qualified File Name */, char **szDir /* O: Directory component */, char **szFN ) /* O: Filename component */`|
### Example UX test program ### <font style="color: yellow;" size="5">Example UX test program</font>
This example can be found in the repository in the ux_test folder. This example can be found in the repository in the ux_test folder.
@@ -690,7 +692,7 @@ int _HTML_GetHandler( UINT nChanId, /* I: Channel Id of new con */
ML_Send(nChanId, "Content-type: text/html\n\n", 0); ML_Send(nChanId, "Content-type: text/html\n\n", 0);
/* Scan the buffer for the recognised browser end of stream: /* Scan the buffer for the recognised browser end of stream:
* HTTP/version. If it doesnt exist, send an error message to client * HTTP/version. If it doesn't exist, send an error message to client
* and exit. * and exit.
*/ */
if( (spMsgBuf=(UCHAR *)malloc((strlen(szData)*3)+1)) == NULL ) if( (spMsgBuf=(UCHAR *)malloc((strlen(szData)*3)+1)) == NULL )
@@ -1146,7 +1148,7 @@ int main( int argc, /* I: Count of available arguments */
<br> <br>
# SDD Library ## <font style="color: yellow;" size="6">SDD Library</font>
The Server Data-source Driver library is a set of API's for communicating with a data source. Currently drivers have been written for: The Server Data-source Driver library is a set of API's for communicating with a data source. Currently drivers have been written for:
- Audio Playback - not technically a data source, more a data target but the SDD library is bi-directional in nature. - Audio Playback - not technically a data source, more a data target but the SDD library is bi-directional in nature.
@@ -1162,27 +1164,27 @@ The drivers are opened via the MDC layer or directly in an application wishing t
The methods in the SDD Library are described below ordered by the driver to which they belong. If a method begins with '_' then it is internal and normally not called directly, albeit being C there is no Private definition to methods or their data so you can call them if it helps. The methods in the SDD Library are described below ordered by the driver to which they belong. If a method begins with '_' then it is internal and normally not called directly, albeit being C there is no Private definition to methods or their data so you can call them if it helps.
### Audio driver sdd_aupl ### <font style="color: yellow;" size="5">Audio driver sdd_aupl</font>
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_AUPL_GetStrArg**| |**Function**: |**_AUPL_GetStrArg**|
|Description: |Function to scan an input buffer and extract a string based argument. | |Description: |Function to scan an input buffer and extract a string based argument. |
|Returns: |SDD_FAIL- Couldnt obtain argument.<br>SDD_OK - Argument obtained. | |Returns: |SDD_FAIL- Couldn't obtain argument.<br>SDD_OK - Argument obtained. |
|Prototype: |`int _AUPL_GetStrArg( UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR *szArg /* I: Arg to look for */, UCHAR **pszPath ) /* O: Pointer to argument */` | |Prototype: |`int _AUPL_GetStrArg( UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR *szArg /* I: Arg to look for */, UCHAR **pszPath ) /* O: Pointer to argument */` |
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_AUPL_ValidatePath**| |**Function**: |**_AUPL_ValidatePath**|
|Description: |Function to validate the existence of a path. | |Description: |Function to validate the existence of a path. |
|Returns: |SDD_FAIL- Couldnt validate PATH.<br>SDD_OK - PATH validated. | |Returns: |SDD_FAIL- Couldn't validate PATH.<br>SDD_OK - PATH validated. |
|Prototype: |`int _AUPL_ValidatePath( UCHAR *pszPath ) /* I: Path to validate */` | |Prototype: |`int _AUPL_ValidatePath( UCHAR *pszPath ) /* I: Path to validate */` |
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_AUPL_ValidateFile**| |**Function**: |**_AUPL_ValidateFile**|
|Description: |Function to validate the existence of a file or to validate that a file can be created. | |Description: |Function to validate the existence of a file or to validate that a file can be created. |
|Returns: |SDD_FAIL- Couldnt obtain Filename or validate it.<br>SDD_OK - Filename obtained and validated. | |Returns: |SDD_FAIL- Couldn't obtain Filename or validate it.<br>SDD_OK - Filename obtained and validated. |
|Prototype: |`int _AUPL_ValidateFile( UCHAR *pszPath /* I: Path to file */, UCHAR *pszFile /* I: File to validate */, UINT nWriteFlag ) /* I: Read = 0, Write = 1 */` | |Prototype: |`int _AUPL_ValidateFile( UCHAR *pszPath /* I: Path to file */, UCHAR *pszFile /* I: File to validate */, UINT nWriteFlag ) /* I: Read = 0, Write = 1 */` |
| | | | | |
@@ -1220,13 +1222,13 @@ The methods in the SDD Library are described below ordered by the driver to whic
|Returns: |No returns. | |Returns: |No returns. |
|Prototype: |`void aupl_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` | |Prototype: |`void aupl_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` |
### FTP Protocol driver sdd_ftpx ### <font style="color: yellow;" size="5">FTP Protocol driver sdd_ftpx</font>
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_FTPX_GetStrArg**| |**Function**: |**_FTPX_GetStrArg**|
|Description: |Function to scan an input buffer and extract a string based argument. | |Description: |Function to scan an input buffer and extract a string based argument. |
|Returns: |SDD_FAIL- Couldnt obtain argument.<br>SDD_OK - Argument obtained. | |Returns: |SDD_FAIL- Couldn't obtain argument.<br>SDD_OK - Argument obtained. |
|Prototype: |`int _FTPX_GetStrArg( UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR *szArg /* I: Arg to look for */, UCHAR **pszPath ) /* O: Pointer to argument */` | |Prototype: |`int _FTPX_GetStrArg( UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR *szArg /* I: Arg to look for */, UCHAR **pszPath ) /* O: Pointer to argument */` |
| | | | | |
@@ -1247,7 +1249,7 @@ The methods in the SDD Library are described below ordered by the driver to whic
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_FTPX_PutReadData**| |**Function**: |**_FTPX_PutReadData**|
|Description: |Function to read an open stream and transmit the data contents to the caller via the callback mechanism. | |Description: |Function to read an open stream and transmit the data contents to the caller via the callback mechanism. |
|Returns: |SDD_FAIL- Couldnt obtain PATH.<br>SDD_OK - PATH obtained. | |Returns: |SDD_FAIL- Couldn't obtain PATH.<br>SDD_OK - PATH obtained. |
|Prototype: |`int _FTPX_PutReadData( FILE *fpFile /* I: Stream to read from */, int (*fSendDataCB)(UCHAR *, UINT) /* I: CB to send data to */, UCHAR *szErrMsg ) /* O: Error text */` | |Prototype: |`int _FTPX_PutReadData( FILE *fpFile /* I: Stream to read from */, int (*fSendDataCB)(UCHAR *, UINT) /* I: CB to send data to */, UCHAR *szErrMsg ) /* O: Error text */` |
| | | | | |
@@ -1324,14 +1326,14 @@ The methods in the SDD Library are described below ordered by the driver to whic
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_FTPX_FTPInit**| |**Function**: |**_FTPX_FTPInit**|
|Description: |Function to initialise a connection with an FTP server. The caller provides the name/IP address of the server and the user name/password to complete the connection. | |Description: |Function to initialise a connection with an FTP server. The caller provides the name/IP address of the server and the user name/password to complete the connection. |
|Returns: |SDD_FAIL - Couldnt make connection with given details.<br>SDD_OK - FTP connection made. | |Returns: |SDD_FAIL - Couldn't make connection with given details.<br>SDD_OK - FTP connection made. |
|Prototype: |`int _FTPX_FTPInit( UCHAR *szFTPServer /* I: Name of FTP server */, UCHAR *szUserName /* I: User name to login with */, UCHAR *szPassword /* I: Password for login */, UCHAR *szErrMsg ) /* O: Error message if failed */` | |Prototype: |`int _FTPX_FTPInit( UCHAR *szFTPServer /* I: Name of FTP server */, UCHAR *szUserName /* I: User name to login with */, UCHAR *szPassword /* I: Password for login */, UCHAR *szErrMsg ) /* O: Error message if failed */` |
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_FTPX_FTPClose**| |**Function**: |**_FTPX_FTPClose**|
|Description: |Function to close a connected FTP connection and tidy up in preparation for next task. | |Description: |Function to close a connected FTP connection and tidy up in preparation for next task. |
|Returns: |SDD_FAIL - Failed to close properly, library wont work again.<br>SDD_OK - Closed. | |Returns: |SDD_FAIL - Failed to close properly, library won't work again.<br>SDD_OK - Closed. |
|Prototype: |`int _FTPX_FTPClose( UCHAR *szErrMsg ) /* O: Generated error messages */` | |Prototype: |`int _FTPX_FTPClose( UCHAR *szErrMsg ) /* O: Generated error messages */` |
| | | | | |
@@ -1383,7 +1385,7 @@ The methods in the SDD Library are described below ordered by the driver to whic
|Returns: |No returns. | |Returns: |No returns. |
|Prototype: |`void ftpx_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` | |Prototype: |`void ftpx_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` |
### Java driver sdd_java ### <font style="color: yellow;" size="5">Java driver sdd_java</font>
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
@@ -1413,13 +1415,13 @@ The methods in the SDD Library are described below ordered by the driver to whic
|Returns: |No returns. | |Returns: |No returns. |
|Prototype: |`void java_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` | |Prototype: |`void java_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` |
### ODBC driver sdd_odbc ### <font style="color: yellow;" size="5">ODBC driver sdd_odbc</font>
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_ODBC_GetArg**| |**Function**: |**_ODBC_GetArg**|
|Description: |Function to scan an input buffer and extract a required argument from it. | |Description: |Function to scan an input buffer and extract a required argument from it. |
|Returns: |SDD_FAIL- Couldnt obtain argument.<br>SDD_OK - Argument obtained and validated. | |Returns: |SDD_FAIL- Couldn't obtain argument.<br>SDD_OK - Argument obtained and validated. |
|Prototype: |`int _ODBC_GetArg( UCHAR *szArgType /* I: Type of Arg to scan for */, UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR **pszArg ) /* O: Pointer to Arg */` | |Prototype: |`int _ODBC_GetArg( UCHAR *szArgType /* I: Type of Arg to scan for */, UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR **pszArg ) /* O: Pointer to Arg */` |
| | | | | |
@@ -1485,34 +1487,34 @@ The methods in the SDD Library are described below ordered by the driver to whic
|Returns: |No returns. | |Returns: |No returns. |
|Prototype: |`void odbc_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` | |Prototype: |`void odbc_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` |
### SCMD driver sdd_scmd ### <font style="color: yellow;" size="5">SCMD driver sdd_scmd</font>
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_SCMD_GetStrArg**| |**Function**: |**_SCMD_GetStrArg**|
|Description: |Function to scan an input buffer and extract a string based argument. | |Description: |Function to scan an input buffer and extract a string based argument. |
|Returns: |SDD_FAIL- Couldnt obtain argument.<br>SDD_OK - Argument obtained. | |Returns: |SDD_FAIL- Couldn't obtain argument.<br>SDD_OK - Argument obtained. |
|Prototype: |`int _SCMD_GetStrArg( UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR *szArg /* I: Arg to look for */, UCHAR **pszPath ) /* O: Pointer to argument */` | |Prototype: |`int _SCMD_GetStrArg( UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR *szArg /* I: Arg to look for */, UCHAR **pszPath ) /* O: Pointer to argument */` |
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_SCMD_ValidatePath**| |**Function**: |**_SCMD_ValidatePath**|
|Description: |Function to validate the existence of a path. | |Description: |Function to validate the existence of a path. |
|Returns: |SDD_FAIL- Couldnt validate PATH.<br>SDD_OK - PATH validated. | |Returns: |SDD_FAIL- Couldn't validate PATH.<br>SDD_OK - PATH validated. |
|Prototype: |`int _SCMD_ValidatePath( UCHAR *pszPath ) /* I: Path to validate */` | |Prototype: |`int _SCMD_ValidatePath( UCHAR *pszPath ) /* I: Path to validate */` |
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_SCMD_ValidateFile**| |**Function**: |**_SCMD_ValidateFile**|
|Description: |Function to validate the existence of a file or to validate that a file can be created. | |Description: |Function to validate the existence of a file or to validate that a file can be created. |
|Returns: |SDD_FAIL- Couldnt obtain Filename or validate it.<br>SDD_OK - Filename obtained and validated. | |Returns: |SDD_FAIL- Couldn't obtain Filename or validate it.<br>SDD_OK - Filename obtained and validated. |
|Prototype: |`int _SCMD_ValidateFile( UCHAR *pszPath /* I: Path to file */, UCHAR *pszFile /* I: File to validate */, UINT nWriteFlag ) /* I: Read = 0, Write = 1 */` | |Prototype: |`int _SCMD_ValidateFile( UCHAR *pszPath /* I: Path to file */, UCHAR *pszFile /* I: File to validate */, UINT nWriteFlag ) /* I: Read = 0, Write = 1 */` |
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_SCMD_ValidateTime**| |**Function**: |**_SCMD_ValidateTime**|
|Description: |Function to validate a time value given as an ascii string. | |Description: |Function to validate a time value given as an ascii string. |
|Returns: |SDD_FAIL- Couldnt obtain a TIME or validate it.<br>SDD_OK - TIME obtained and validated. | |Returns: |SDD_FAIL- Couldn't obtain a TIME or validate it.<br>SDD_OK - TIME obtained and validated. |
|Prototype: |`int _SCMD_ValidateTime( UCHAR *pszTime /* I: Time to verify */, ULNG *lTime ) /* O: Time in seconds */` | |Prototype: |`int _SCMD_ValidateTime( UCHAR *pszTime /* I: Time to verify */, ULNG *lTime ) /* O: Time in seconds */` |
| | | | | |
@@ -1533,7 +1535,7 @@ The methods in the SDD Library are described below ordered by the driver to whic
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_SCMD_PutReadData**| |**Function**: |**_SCMD_PutReadData**|
|Description: |Function to read an open stream and transmit the data contents to the caller via the callback mechanism. | |Description: |Function to read an open stream and transmit the data contents to the caller via the callback mechanism. |
|Returns: |SDD_FAIL- Couldnt obtain PATH.<br>SDD_OK - PATH obtained. | |Returns: |SDD_FAIL- Couldn't obtain PATH.<br>SDD_OK - PATH obtained. |
|Prototype: |`int _SCMD_PutReadData( FILE *fpFile /* I: Stream to read from */, int (*fSendDataCB)(UCHAR *, UINT) /* I: CB to send data to */, UCHAR *szErrMsg ) /* O: Error text */` | |Prototype: |`int _SCMD_PutReadData( FILE *fpFile /* I: Stream to read from */, int (*fSendDataCB)(UCHAR *, UINT) /* I: CB to send data to */, UCHAR *szErrMsg ) /* O: Error text */` |
| | | | | |
@@ -1578,13 +1580,13 @@ The methods in the SDD Library are described below ordered by the driver to whic
|Returns: |No returns. | |Returns: |No returns. |
|Prototype: |`void scmd_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` | |Prototype: |`void scmd_ProcessOOB( UCHAR nCommand ) /* I: OOB Command */` |
### Sybase driver sdd_sybc ### <font style="color: yellow;" size="5">Sybase driver sdd_sybc</font>
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_SYBC_GetArg**| |**Function**: |**_SYBC_GetArg**|
|Description: |Function to scan an input buffer and extract a required argument from it. | |Description: |Function to scan an input buffer and extract a required argument from it. |
|Returns: |SDD_FAIL- Couldnt obtain argument.<br>SDD_OK - Argument obtained and validated. | |Returns: |SDD_FAIL- Couldn't obtain argument.<br>SDD_OK - Argument obtained and validated. |
|Prototype: |`int _SYBC_GetArg( UCHAR *szArgType /* I: Type of Arg to scan for */, UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR **pszArg ) /* O: Pointer to Arg */` | |Prototype: |`int _SYBC_GetArg( UCHAR *szArgType /* I: Type of Arg to scan for */, UCHAR *snzDataBuf /* I: Input buffer */, int nDataLen /* I: Len of data */, UCHAR **pszArg ) /* O: Pointer to Arg */` |
| | | | | |
@@ -1645,7 +1647,7 @@ The methods in the SDD Library are described below ordered by the driver to whic
<br> <br>
# VDW Library ## <font style="color: yellow;" size="6">VDW Library</font>
The Virtual Data Warehouse Library was a set of API's to build a Virtual Data Warehouse. Typically these methods are used to build a set of cross platform (Linux, SunOS, Solaris, Windows) daemons each sited on a server with a data source. The daemon would have a set of SDD drivers built in and would open the required data sources and communicate with an application or the MDC layer and serve accordingly. The Virtual Data Warehouse Library was a set of API's to build a Virtual Data Warehouse. Typically these methods are used to build a set of cross platform (Linux, SunOS, Solaris, Windows) daemons each sited on a server with a data source. The daemon would have a set of SDD drivers built in and would open the required data sources and communicate with an application or the MDC layer and serve accordingly.
ie. A SQL Server on Network A, a Sybase Server on Network B, an FTP source on Network C, a VDW daemon would be placed on a server in all the 3 networks and open connections with the data source. Via routing, an MDC application sat on Network D would be able to query all the sources as needed. ie. A SQL Server on Network A, a Sybase Server on Network B, an FTP source on Network C, a VDW daemon would be placed on a server in all the 3 networks and open connections with the data source. Via routing, an MDC application sat on Network D would be able to query all the sources as needed.
@@ -1718,27 +1720,27 @@ The methods in the VDW Library are as follows. If a method begins with '_' then
<br> <br>
# MDC Library ## <font style="color: yellow;" size="6">MDC Library</font>
The Meta Data Communications API was part of my Virtual Data Warehouse design which sought to encapsulate disparate systems and data sources and through the MDC API's provide a central uniform way of querying them, ie. Sybase, SQL Server, FTP CSV, Flat File etc. The application would make a normalized request, irrespective of data source, to the MDC layer and the MDC would take care of targetting the correct source and any needed transalations. The Meta Data Communications API was part of my Virtual Data Warehouse design which sought to encapsulate disparate systems and data sources and through the MDC API's provide a central uniform way of querying them, ie. Sybase, SQL Server, FTP CSV, Flat File etc. The application would make a normalized request, irrespective of data source, to the MDC layer and the MDC would take care of targetting the correct source and any needed transalations.
At the moment I can see no use for it in the ZPU Evo but it may be useful if your trying to join disparate data sources using the VDW daemons. At the moment I can see no use for it in the ZPU Evo but it may be useful if your trying to join disparate data sources using the VDW daemons.
The methods in the MDC Library are described below ordered by the functionality to which they belong. If a method begins with '_' then it is internal and normally not called directly, albeit being C there is no Private definition to methods or their data so you can call them if it helps. The methods in the MDC Library are described below ordered by the functionality to which they belong. If a method begins with '_' then it is internal and normally not called directly, albeit being C there is no Private definition to methods or their data so you can call them if it helps.
### MDC Server API ### <font style="color: yellow;" size="5">MDC Server API</font>
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_MDC_SendACK** | |**Function**: |**_MDC_SendACK** |
|Description: |Function to send an acknowledge to the client in response to a data block received correctly or a request processed successfully. | |Description: |Function to send an acknowledge to the client in response to a data block received correctly or a request processed successfully. |
|Returns: |MDC_FAIL- Couldnt transmit an ACK message to the client.<br>MDC_OK - ACK sent successfully. | |Returns: |MDC_FAIL- Couldn't transmit an ACK message to the client.<br>MDC_OK - ACK sent successfully. |
|Prototype: |`int _MDC_SendACK( void )` | |Prototype: |`int _MDC_SendACK( void )` |
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_MDC_SendNAK** | |**Function**: |**_MDC_SendNAK** |
|Description: |Function to send a negative acknowledge to the client in to a data block which arrived incorrectly or a request which couldnt be processed successfully. | |Description: |Function to send a negative acknowledge to the client in to a data block which arrived incorrectly or a request which couldn't be processed successfully. |
|Returns: |MDC_FAIL- Couldnt transmit a NAK message to the client.<br>MDC_OK - NAK sent successfully. | |Returns: |MDC_FAIL- Couldn't transmit a NAK message to the client.<br>MDC_OK - NAK sent successfully. |
|Prototype: |`int _MDC_SendNAK( UCHAR szErrMsg /* I: Error msg to send with NAK */ )` | |Prototype: |`int _MDC_SendNAK( UCHAR szErrMsg /* I: Error msg to send with NAK */ )` |
| | | | | |
@@ -1776,7 +1778,7 @@ The methods in the MDC Library are described below ordered by the functionality
|Returns: |No Return Values. | |Returns: |No Return Values. |
|Prototype: |`int MDC_TimerCB( ULNG lTimePeriod /* I: CB Time in Millseconds */, UINT nEnable /* I: Enable(TRUE)/Dis(FALSE) CB */, UINT nAstable /* I: Astable(TRUE) or Mono CB */, void (fTimerCB)(void) /* I: Function to call back */ )` | |Prototype: |`int MDC_TimerCB( ULNG lTimePeriod /* I: CB Time in Millseconds */, UINT nEnable /* I: Enable(TRUE)/Dis(FALSE) CB */, UINT nAstable /* I: Astable(TRUE) or Mono CB */, void (fTimerCB)(void) /* I: Function to call back */ )` |
### MDC Client API ### <font style="color: yellow;" size="5">MDC Client API</font>
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
@@ -1915,7 +1917,7 @@ The methods in the MDC Library are described below ordered by the functionality
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**MDC_SetTimeout** | |**Function**: |**MDC_SetTimeout** |
|Description: |Function to program one of the system timeout values from the default to a user setting. | |Description: |Function to program one of the system timeout values from the default to a user setting. |
|Returns: | MDC_OK - Setting changed.<br>MDC_FAIL - Setting couldnt be changed, see error message. | |Returns: | MDC_OK - Setting changed.<br>MDC_FAIL - Setting couldn't be changed, see error message. |
|Prototype: |`int MDC_SetTimeout( UCHAR *pszWhichTimeout /* I: Timeout to set */, UINT nTimeoutValue /* I: New value */, UCHAR *pszErrMsg /* O: Error message */ )` | |Prototype: |`int MDC_SetTimeout( UCHAR *pszWhichTimeout /* I: Timeout to set */, UINT nTimeoutValue /* I: New value */, UCHAR *pszErrMsg /* O: Error message */ )` |
| | | | | |
@@ -1946,30 +1948,30 @@ The methods in the MDC Library are described below ordered by the functionality
|Returns: | MDC_OK, MDC_FAIL, MDC_NODAEMON, MDC_NOSERVICE, MDC_BADPARMS | |Returns: | MDC_OK, MDC_FAIL, MDC_NODAEMON, MDC_NOSERVICE, MDC_BADPARMS |
|Prototype: |`int MDC_ChangeService( UINT nChanId /* I: Chan ID of srvc */, SERVICEDETAILS *serviceDet /* I: Service details */ )` | |Prototype: |`int MDC_ChangeService( UINT nChanId /* I: Chan ID of srvc */, SERVICEDETAILS *serviceDet /* I: Service details */ )` |
### MDC Common API ### <font style="color: yellow;" size="5">MDC Common API</font>
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_MDC_Init** | |**Function**: |**_MDC_Init** |
|Description: |Function to perform MDC initialisation. The library performs checking to ensure that initialisation only occurs once prior to an _MDC_Terminate. | |Description: |Function to perform MDC initialisation. The library performs checking to ensure that initialisation only occurs once prior to an _MDC_Terminate. |
|Returns: |MDC_FAIL- Couldnt initialise library.<br> MDC_OK - Library initialised. | |Returns: |MDC_FAIL- Couldn't initialise library.<br> MDC_OK - Library initialised. |
|Prototype: |`int _MDC_Init( void )` | |Prototype: |`int _MDC_Init( void )` |
| | | | | |
| ---------- | ----------------------------------------------------------------------------- | | ---------- | ----------------------------------------------------------------------------- |
|**Function**: |**_MDC_Terminate** | |**Function**: |**_MDC_Terminate** |
|Description: |Function to shutdown the MDC library. After a successful shutdown, _MDC_Init may be called to re-initialise the library. If MDC_Terminate fails, program exit is advised. | |Description: |Function to shutdown the MDC library. After a successful shutdown, _MDC_Init may be called to re-initialise the library. If MDC_Terminate fails, program exit is advised. |
|Returns: |MDC_FAIL- Couldnt perform a clean shutdown.<br>MDC_OK - Library successfully shutdown. | |Returns: |MDC_FAIL- Couldn't perform a clean shutdown.<br>MDC_OK - Library successfully shutdown. |
|Prototype: |`int _MDC_Terminate( void )` | |Prototype: |`int _MDC_Terminate( void )` |
<br> <br>
## Licenses ## <font style="color: yellow;" size="6">Licenses</font>
These software libraries are licensed under the GNU Public Licence v3. These software libraries are licensed under the GNU Public Licence v3.
### The Gnu Public License v3 ### <font style="color: yellow;" size="5">The Gnu Public License v3</font>
The source and binary files in this project marked as GPL v3 are 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. The source and binary files in this project marked as GPL v3 are 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.
The source files are 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. The source files are 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.