Tani OpcPipe protocol  1.0.5
Tani OpcPipe protocol
Macros | Functions | Variables
PlcOpcPipeSubs.c File Reference

General subs used in OpcPipe server and client. More...

Macros

#define TIMERRATE_NETCACHE   (500 / OPCPIPE_TIMER_MS)
 
#define CREATE_RETRY_TIMEOUT   40
 
#define DEBUG_WMK_ERR
 
#define IN_BAD_SESSION   0x01
 
#define NETCACHE_IN_WORK_THREAD
 
#define SERVER_HANDLE_DIFF   1
 
#define CLIENT_HANDLE_DIFF   1
 
#define OPCPIPE_HANDLE_TOPIC_SHIFT   20
 
#define NIL_INDEX   0
 
#define SEARCH_TREE_OFFSET_DIFF   1
 
#define SEARCH_TREE_FLAG_RED   0x0001
 
#define SEARCH_TREE_FLAG_IN_TREE   0x0002
 
#define ITEM_FROM_INDEX(index)   (((index) == NIL_INDEX) ? 0 : (&(items[index - SEARCH_TREE_OFFSET_DIFF])))
 
#define INDEX_FROM_ITEM(item)   (((item) - items) + SEARCH_TREE_OFFSET_DIFF)
 
#define LEFT_CHILD(item)   (((item)->SearchTreeLeft == NIL_INDEX) ? 0 : (&(items[(item)->SearchTreeLeft - SEARCH_TREE_OFFSET_DIFF])))
 
#define RIGHT_CHILD(item)   (((item)->SearchTreeRight == NIL_INDEX) ? 0 : (&(items[(item)->SearchTreeRight - SEARCH_TREE_OFFSET_DIFF])))
 
#define PARENT(item)   (((item)->SearchTreeParent == NIL_INDEX) ? 0 : (&(items[(item)->SearchTreeParent - SEARCH_TREE_OFFSET_DIFF])))
 
#define DEBUG_WMK
 
#define DO_CONTINUE   1
 

Functions

EXTERN_C unsigned long WENTRY_C OpcPipeGetVersion (void)
 
char * OpcPipeDatTime (char *text)
 
EXTERN_C int WENTRY_C WmkProtReadDebugBuffer (char *buffer, W_UINT32 buflen)
 query internal debug buffer More...
 
void DebugPrintAllItems (OPCPIPE_INTERNALS *t)
 
EXTERN_C int WENTRY_C DatavalueReserveData (DATAVALUE *val, W_UINT32 datalen)
 
EXTERN_C W_UINT8 *WENTRY_C DatavalueGetData (DATAVALUE *val)
 
EXTERN_C int WENTRY_C DatavalueSetData (DATAVALUE *val, W_UINT8 *data, W_UINT32 datalen)
 
EXTERN_C int WENTRY_C DatavalueClearData (DATAVALUE *val)
 
EXTERN_C WMK_OPCPIPE_HANDLE WENTRY_C PipeHandleFromPointer (OPCPIPE_INTERNALS *t, OPCPIPE_TOPIC *topic, OPCPIPE_ITEM *item)
 
EXTERN_C int WENTRY_C WmkProtHandleFromPointer (W_UINT32 handle, OPCPIPE_TOPIC *topic, OPCPIPE_ITEM *item, WMK_OPCPIPE_HANDLE *retHandle)
 
EXTERN_C W_UINT32 WENTRY_C IndexFromPipeHandle (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE handle)
 
EXTERN_C int WENTRY_C WmkProtIndexFromHandle (W_UINT32 handle, WMK_OPCPIPE_HANDLE topicOrItemHandle, W_UINT32 *retIndex)
 
EXTERN_C WMK_OPCPIPE_HANDLE WENTRY_C TopicHandleFromItemHandle (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE itemHandle)
 
EXTERN_C int WENTRY_C WmkProtTopicHandleFromItemHandle (W_UINT32 handle, WMK_OPCPIPE_HANDLE itemHandle, WMK_OPCPIPE_HANDLE *retHandle)
 
OPCPIPE_ITEMItemTreeFirst (OPCPIPE_TOPIC *topic)
 
OPCPIPE_ITEMItemTreeNext (OPCPIPE_TOPIC *topic, OPCPIPE_ITEM *item)
 
OPCPIPE_ITEMItemTreePrefixSearch (OPCPIPE_TOPIC *topic, const char *prefix)
 
void OpcPipeClearVariables (OPCPIPE_INTERNALS *t)
 
void OpcPipeTerminateOne (OPCPIPE_INTERNALS *t, int disableConfirms)
 
EXTERN_C void WENTRY_C OpcPipeRefConnection__ (OPCPIPE_INTERNALS *t, const char *file, int line)
 
EXTERN_C void WENTRY_C OpcPipeUnRefConnection__ (OPCPIPE_INTERNALS *t, const char *file, int line)
 
EXTERN_C void WENTRY_C OpcPipeRefTopic__ (OPCPIPE_INTERNALS *t, OPCPIPE_TOPIC *topic, const char *file, int line)
 
EXTERN_C void WENTRY_C OpcPipeUnRefTopic__ (OPCPIPE_INTERNALS *t, OPCPIPE_TOPIC *topic, const char *file, int line)
 
OPCPIPE_INTERNALS * OpcPipeConnError (OPCPIPE_INTERNALS *t, int who)
 
OPCPIPE_INTERNALS *WENTRY_C OpcPipeConnStatusChange (OPCPIPE_INTERNALS *t)
 
OPCPIPE_INTERNALS *WENTRY_C OpcPipeInternalsAlloc ()
 
OPCPIPE_INTERNALS *WENTRY_C OpcPipeInternals (int handle)
 
OPCPIPE_INTERNALS *WENTRY_C OpcPipeInternalsFromNet (int handle)
 
OPCPIPE_INTERNALS *WENTRY_C OpcPipeInternalsByOffset (W_UINT32 *offset)
 
EXTERN_C void WENTRY_C OpcPipeSetEstab (OPCPIPE_INTERNALS *t, int bits)
 
EXTERN_C void WENTRY_C OpcPipeResetEstab (OPCPIPE_INTERNALS *t, int bits)
 
HANDLE_PAIROpcPipeAddElementReference (OPCPIPE_ITEM *dt, W_UINT16 handle, W_UINT32 id, int *perr)
 
int OpcPipeFindElementReference (OPCPIPE_ITEM *it, W_UINT16 handle, HANDLE_PAIR **netref, W_UINT32 id)
 
OPCPIPE_ITEM *WENTRY_C OpcPipeFindItemID (OPCPIPE_INTERNALS *t, OPCPIPE_ITEM *items, W_UINT32 itemsLen, W_UINT32 used, W_UINT32 rootIndex, W_UINT32 handle, WMK_OPCPIPE_HANDLE id, int add, HANDLE_PAIR **netref, const char *name)
 
OPCPIPE_TOPIC *WENTRY_C OpcPipeFindTopicID (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE id, int add, const char *name, int nameLen)
 
int OpcPipeFindItemIDs (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE topicHandle, WMK_OPCPIPE_HANDLE itemHandle, int lr, OPCPIPE_TOPIC **htopic, OPCPIPE_ITEM **hitem)
 
int WENTRY_C FindItem (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE itemHandle, OPCPIPE_ITEM **item, HANDLE_PAIR **netrefItem)
 
int WENTRY_C FindItemByNetHandle (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE netItemHandle, W_UINT32 *offset, OPCPIPE_ITEM **item, HANDLE_PAIR **netrefItem)
 
int WENTRY_C FindItemByName (OPCPIPE_INTERNALS *t, const char *itemName, OPCPIPE_ITEM **item, HANDLE_PAIR **netrefItem, WMK_OPCPIPE_HANDLE *pipeItemHandle)
 
int WENTRY_C FindTopicFromItem (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE itemHandle, OPCPIPE_TOPIC **topic)
 
OPCPIPE_INTERNALS * OpcPipeBadQualityAllElements (OPCPIPE_INTERNALS *t, int quality, int markAsRecreate, int sendQuality, int *perr)
 
EXTERN_C void WENTRY_C OpcPipeNetcacheHandling (OPCPIPE_INTERNALS *t)
 
void TopicItemDeleteLoop (OPCPIPE_INTERNALS *t, OPCPIPE_TOPIC *topicTable, W_UINT32 availTopicTable, W_UINT32 *usedTopicTable, int force)
 
void WorkThreadRelease (OPCPIPE_INTERNALS *t)
 
void OpcPipeStartTimerThread ()
 
void OpcPipeStopTimerThread ()
 
OPCPIPE_INTERNALS * OpcPipeBrokenConnection (OPCPIPE_INTERNALS *t)
 
EXTERN_C int WENTRY_C OpcPipeQueryVersion (W_UINT32 *version)
 retrieves OpcPipe library version. More...
 
EXTERN_C int WENTRY_C WmkProtGetCapabilities (W_UINT32 handle, W_UINT64 *capabilities)
 Queries the connection capabilities. This may be used for checking functionality or requested things in the partner or local configuration. More...
 
EXTERN_C int WENTRY_C WmkProtTopicList (W_UINT32 handle, W_UINT32 *tablen, OPCPIPE_TOPIC **table)
 
EXTERN_C int WENTRY_C WmkProtItemList (W_UINT32 handle, W_UINT32 *tablen, OPCPIPE_ITEM **table)
 
EXTERN_C int WENTRY_C WmkProtGetAppData (W_UINT32 handle, WMK_OPCPIPE_HANDLE pipeTopicHandle, void **appTopicData, WMK_OPCPIPE_HANDLE pipeItemHandle, void **appItemData)
 
EXTERN_C int WENTRY_C WmkProtSetAppData (W_UINT32 handle, WMK_OPCPIPE_HANDLE pipeTopicHandle, void *appTopicData, WMK_OPCPIPE_HANDLE pipeItemHandle, void *appItemData)
 Set application specific pointers. More...
 
EXTERN_C int WENTRY_C WmkProtGetItemName (W_UINT32 handle, WMK_OPCPIPE_HANDLE pipeTopicHandle, WMK_OPCPIPE_HANDLE pipeItemHandle, const char **itemName)
 
EXTERN_C int WENTRY_C WmkProtFindTopicByName (W_UINT32 handle, const char *topicName, W_UINT32 *appTopicHandle, W_UINT32 *pipeTopicHandle)
 
EXTERN_C int WENTRY_C WmkProtFindItemByName (W_UINT32 handle, WMK_OPCPIPE_HANDLE pipeTopicHandle, const char *itemName, W_UINT32 *appItemHandle, W_UINT32 *pipeItemHandle)
 
void OpcPipeStopAllConnections (int server)
 
int OpcPipeAddTopicID (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE topicHandle, int add, const char *topicName, int topicNameLen, OPCPIPE_TOPIC **topic, WMK_OPCPIPE_HANDLE *pipeTopicHandle)
 
int OpcPipeAddItemID (OPCPIPE_INTERNALS *t, OPCPIPE_TOPIC *topic, WMK_OPCPIPE_HANDLE itemHandle, int lr, const char *itemName, OPCPIPE_ITEM **pitem, W_UINT16 itemTyp, W_UINT16 itemFlags, WMK_OPCPIPE_HANDLE *pipeItemHandle)
 
void MarkItemDead (OPCPIPE_INTERNALS *t, OPCPIPE_TOPIC *topic, OPCPIPE_ITEM *item)
 
int CleanupOneItemStart (OPCPIPE_INTERNALS **t, OPCPIPE_TOPIC *topic, OPCPIPE_ITEM *item, HANDLE_PAIR *netrefItem)
 
OPCPIPE_INTERNALS * CleanupOneItemEnd (OPCPIPE_INTERNALS *t, OPCPIPE_TOPIC *topic, OPCPIPE_ITEM *item)
 
OPCPIPE_INTERNALS * OpcPipeDeleteOneItem (OPCPIPE_INTERNALS *t, OPCPIPE_TOPIC *topic, OPCPIPE_ITEM *item, HANDLE_PAIR *nh, int doNetworkSend)
 
OPCPIPE_INTERNALS * OpcPipeDeleteAllItems (OPCPIPE_INTERNALS *t, OPCPIPE_TOPIC *topic, int *perr)
 
int OpcPipeDeleteItems (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE pipeTopicHandle, OPCPIPE_TOPIC *topic, WMK_OPCPIPE_HANDLE *appTopicHandle)
 
int OpcPipeDeleteTopicID (OPCPIPE_INTERNALS *t, WMK_OPCPIPE_HANDLE pipeTopicHandle, WMK_OPCPIPE_HANDLE *appTopicHandle)
 
void ConvertDiagTopicItemID (OPCPIPE_INTERNALS *t, W_UINT32 dataLen, void *data)
 
EXTERN_C void WENTRY_C OpcPipeChangeNetworkHandle (OPCPIPE_INTERNALS *t, OPCPIPE_ITEM *item, WMK_OPCPIPE_HANDLE networkHandle)
 
EXTERN_C int WENTRY_C OpcPipeNetErrToOpcPipeErr (int err)
 
EXTERN_C int WENTRY_C WmkProtTimings (PLC_OPCPIPE_TIMINGS *timings, int func)
 Handling of internal timings like life data ack send rate and check rate, and reset of connections. More...
 
void OpcPipeSetInternalCallbacks ()
 

Variables

PLC_OPCPIPE_CONFIRMS_EX OpcPipeServerConf
 
PLC_OPCPIPE_CONFIRMS_EX OpcPipeClientConf
 
int OpcPipeHasClientInit = 0
 
int OpcPipeHasServerInit = 0
 
OPCPIPE_TOPICGlobalTopicTable = 0
 
W_UINT32 UsedGlobalTopicTable = 0
 
W_UINT32 AvailGlobalTopicTable = 0
 
int DcomCaseInsensitive = 0
 
W_UINT32 OpcPipeNetCompatVersion = 0
 
W_UINT32 OpcDaCompatVersion = 0
 
W_UINT32 OpcUaCompatVersion = 0
 
W_UINT32 MqttCompatVersion = 0
 
W_UINT32 KNXCompatVersion = 0
 
W_UINT32 IEC104CompatVersion = 0
 
W_UINT32 OpcUaStartDelay
 

Detailed Description

General subs used in OpcPipe server and client.

Mostly the item management. Used as base in other applications, too

Author
MN
Version
5723
Date
Mon Jan 26 09:07:14 2026 !