wdbCnctLib.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:4k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* wdbCntctLib.c - handles WDB connections */
  2. /* Copyright 1984-1994 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01f,23jul98,dbt  if the agent is already connected to a target server when we
  7.                  receive a new connect request, call wdbTargetDisconnect() to
  8.                  remove all old eventpoints.
  9. 01e,12feb98,dbt  replaced wdbEvtLib.h include with wdbEvtptLib.h. Remove
  10.                  dynamically loaded services when we connect to a new target
  11.                  server.
  12. 01d,05jul96,p_m  added WDB_TARGET_MODE_GET (SPR# 6200).
  13. 01c,07jun95,ms   remove all eventpoints during WDB_TARGET_DISCONNECT.
  14. 01b,02jun95,ms   Added wdbTargetIsConnected().
  15. 01a,21sep94,ms   written.
  16. */
  17. /*
  18. DESCPRIPTION
  19. This library contains the session management services:
  20. WDB_TARGET_CONNECT connect to agent
  21. WDB_TARGET_DISCONNECT disconnect from agent
  22. WDB_TARGET_MODE_SET change agent mode (system vs tasking)
  23. WDB_TARGET_MODE_GET return agent mode 
  24. WDB_TARGET_PING test the connection.
  25. */
  26. #include "vxWorks.h"
  27. #include "wdb/wdb.h"
  28. #include "wdb/wdbLib.h"
  29. #include "wdb/wdbLibP.h"
  30. #include "wdb/wdbSvcLib.h"
  31. #include "wdb/wdbRtIfLib.h"
  32. #include "wdb/wdbEvtptLib.h"
  33. /* local variables */
  34. static BOOL    _wdbTargetIsConnected = FALSE;
  35. /* forward declarations */
  36. static UINT32  wdbTargetConnect    (void * noParams, WDB_TGT_INFO * pTgtInfo);
  37. static UINT32  wdbTargetModeSet    (u_int * pModeVal);
  38. static UINT32  wdbTargetModeGet    (void * noParams, u_int * pModeVal);
  39. static UINT32  wdbTargetDisconnect (void);
  40. static UINT32  wdbTargetPing    (void);
  41. /******************************************************************************
  42. *
  43. * wdbConnectLibInit -
  44. */
  45. void wdbConnectLibInit (void)
  46.     {
  47.     wdbSvcAdd (WDB_TARGET_PING, wdbTargetPing, xdr_void, xdr_void);
  48.     wdbSvcAdd (WDB_TARGET_CONNECT, wdbTargetConnect, xdr_void,
  49. xdr_WDB_TGT_INFO);
  50.     wdbSvcAdd (WDB_TARGET_DISCONNECT, wdbTargetDisconnect, xdr_void, xdr_void);
  51.     wdbSvcAdd (WDB_TARGET_MODE_SET, wdbTargetModeSet, xdr_u_int, xdr_void);
  52.     wdbSvcAdd (WDB_TARGET_MODE_GET, wdbTargetModeGet, xdr_void, xdr_u_int);
  53.     }
  54. /******************************************************************************
  55. *
  56. * wdbTargetIsConnected - test if the target is conected.
  57. */ 
  58. BOOL wdbTargetIsConnected (void)
  59.     {
  60.     return (_wdbTargetIsConnected);
  61.     }
  62. /******************************************************************************
  63. *
  64. * wdbTargetConnect - connect to the target server.
  65. */
  66. static UINT32 wdbTargetConnect
  67.     (
  68.     void * noParams,
  69.     WDB_TGT_INFO * pTgtInfo
  70.     )
  71.     {
  72.     /*
  73.      * If the agent is already connected to a target server, disconnect from
  74.      * this target server.
  75.      */
  76.     if (wdbTargetIsConnected ())
  77. wdbTargetDisconnect ();
  78.     /* get the run time info */
  79.     (*pWdbRtIf->rtInfoGet)(&pTgtInfo->rtInfo);
  80.     /* get the agent info */
  81.     wdbInfoGet (&pTgtInfo->agentInfo);
  82.     /* mark the target as connnected */
  83.     _wdbTargetIsConnected = TRUE;
  84.     return (OK);
  85.     }
  86. /******************************************************************************
  87. *
  88. * wdbTargetPing - ping the target.
  89. */ 
  90. static UINT32  wdbTargetPing       (void)
  91.     {
  92.     return (OK);
  93.     }
  94. /******************************************************************************
  95. *
  96. * wdbTargetDisconnect - disconnect from the target
  97. */
  98. static UINT32 wdbTargetDisconnect (void)
  99.     {
  100.     _wdbTargetIsConnected = FALSE;
  101.     /* remove all dynamically loaded services */
  102.     wdbSvcDsaSvcRemove ();
  103.     /* remove all eventpoints */
  104.     wdbEvtptDeleteAll();
  105.     return (OK);
  106.     }
  107. /******************************************************************************
  108. *
  109. * wdbTargetModeSet - change agent modes.
  110. */
  111. static UINT32 wdbTargetModeSet
  112.     (
  113.     UINT32 * pMode
  114.     )
  115.     {
  116.     if (wdbModeSet (*pMode) != OK)
  117. return (WDB_ERR_AGENT_MODE);
  118.     return (OK);
  119.     }
  120. /******************************************************************************
  121. *
  122. * wdbTargetModeGet - return current agent mode.
  123. */
  124. static UINT32 wdbTargetModeGet
  125.     (
  126.     void * noParams,
  127.     UINT32 * pMode
  128.     )
  129.     {
  130.     if (wdbIsNowExternal())
  131. *pMode = WDB_MODE_EXTERN;
  132.     else
  133. *pMode = WDB_MODE_TASK;
  134.     return (OK);
  135.     }