// gfaipc.h : // #if !defined(AGD_GFAIPC_H__6126047E_C1B1_4ACE_BD49_8780C7E5E068__INCLUDED_) #define AGD_GFAIPC_H__6126047E_C1B1_4ACE_BD49_8780C7E5E068__INCLUDED_ #include #include #include #ifdef __cplusplus extern "C" { #endif // __cplusplus ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // gfaipc.h - Declarations: typedef void *HSHM; HSHM GfaIpcAcquireSHM (const char *pszUuid, size_t nSizeElement, size_t nCntElements, const char *pszDescName); void GfaIpcReleaseSHM (HSHM hShm); void* GfaIpcAcquirePointer(HSHM hShm); void GfaIpcReleasePointer(HSHM hShm, const void *p); void GfaIpcLockSHM (HSHM hShm); void GfaIpcUnlockSHM (HSHM hShm); void GfaIpcDumpSHMROT (void); long GfaIpcInterlockedIncrement(HSHM hShm, volatile long *pl); long GfaIpcInterlockedDecrement(HSHM hShm, volatile long *pl); long GfaIpcInterlockedCompare(HSHM hShm, volatile long *pl, long comparand); long GfaIpcInterlockedSet(HSHM hShm, volatile long *pl, long val); long GfaIpcInterlockedClear(HSHM hShm, volatile long *pl); ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// typedef void *HAPPCTRL; typedef void *HAPPINFO; typedef unsigned long long appid_t; typedef unsigned long long ctrlmsg_t; typedef long long clock64_t; ///////////////////////////////////////////////////////////////////////////// #define GFA_APPCTRL_MAKE_APPID(i) (1ULL << (i)) #define GFA_APPCTRL_MAKE_CTRLMSG(m) (1ULL << (m)) ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // GfA typedef enum { GAI_Remanent, GAI_Datalogger, GAI_Summarist, GAI_Rest, GAI_Mqttcl, }GfaAppIndex; #define GFA_APPCTRL_APPID_REMANENT GFA_APPCTRL_MAKE_APPID(GAI_Remanent) #define GFA_APPCTRL_APPID_DATALOGGER GFA_APPCTRL_MAKE_APPID(GAI_Datalogger) #define GFA_APPCTRL_APPID_SUMMARIST GFA_APPCTRL_MAKE_APPID(GAI_Summarist) #define GFA_APPCTRL_APPID_REST GFA_APPCTRL_MAKE_APPID(GAI_Rest) #define GFA_APPCTRL_APPID_MQTTCL GFA_APPCTRL_MAKE_APPID(GAI_Mqttcl) #define GFA_APPCTRL_APPID_ALL_GFA (GFA_APPCTRL_APPID_REMANENT | GFA_APPCTRL_APPID_DATALOGGER | GFA_APPCTRL_APPID_SUMMARIST | GFA_APPCTRL_APPID_REST | GFA_APPCTRL_APPID_MQTTCL) ///////////////////////////////////////////////////////////////////////////// #define GFA_APPCTRL_CTRLMSG_STOP GFA_APPCTRL_MAKE_CTRLMSG(0) #define GFA_APPCTRL_CTRLMSG_PAUSE GFA_APPCTRL_MAKE_CTRLMSG(1) #define GFA_APPCTRL_CTRLMSG_RESUME GFA_APPCTRL_MAKE_CTRLMSG(2) ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // User #define GFA_APPCTRL_APPID_USER_01 GFA_APPCTRL_MAKE_APPID(32) #define GFA_APPCTRL_APPID_USER_02 GFA_APPCTRL_MAKE_APPID(33) #define GFA_APPCTRL_APPID_USER_03 GFA_APPCTRL_MAKE_APPID(34) #define GFA_APPCTRL_APPID_USER_04 GFA_APPCTRL_MAKE_APPID(35) #define GFA_APPCTRL_APPID_USER_05 GFA_APPCTRL_MAKE_APPID(36) #define GFA_APPCTRL_APPID_USER_06 GFA_APPCTRL_MAKE_APPID(37) #define GFA_APPCTRL_APPID_USER_07 GFA_APPCTRL_MAKE_APPID(38) #define GFA_APPCTRL_APPID_USER_08 GFA_APPCTRL_MAKE_APPID(39) #define GFA_APPCTRL_APPID_USER_09 GFA_APPCTRL_MAKE_APPID(40) #define GFA_APPCTRL_APPID_USER_10 GFA_APPCTRL_MAKE_APPID(41) #define GFA_APPCTRL_APPID_USER_11 GFA_APPCTRL_MAKE_APPID(42) #define GFA_APPCTRL_APPID_USER_12 GFA_APPCTRL_MAKE_APPID(43) #define GFA_APPCTRL_APPID_USER_13 GFA_APPCTRL_MAKE_APPID(44) #define GFA_APPCTRL_APPID_USER_14 GFA_APPCTRL_MAKE_APPID(45) #define GFA_APPCTRL_APPID_USER_15 GFA_APPCTRL_MAKE_APPID(46) #define GFA_APPCTRL_APPID_USER_16 GFA_APPCTRL_MAKE_APPID(47) #define GFA_APPCTRL_APPID_USER_17 GFA_APPCTRL_MAKE_APPID(48) #define GFA_APPCTRL_APPID_USER_18 GFA_APPCTRL_MAKE_APPID(49) #define GFA_APPCTRL_APPID_USER_19 GFA_APPCTRL_MAKE_APPID(50) #define GFA_APPCTRL_APPID_USER_20 GFA_APPCTRL_MAKE_APPID(51) #define GFA_APPCTRL_APPID_USER_21 GFA_APPCTRL_MAKE_APPID(52) #define GFA_APPCTRL_APPID_USER_22 GFA_APPCTRL_MAKE_APPID(53) #define GFA_APPCTRL_APPID_USER_23 GFA_APPCTRL_MAKE_APPID(54) #define GFA_APPCTRL_APPID_USER_24 GFA_APPCTRL_MAKE_APPID(55) #define GFA_APPCTRL_APPID_USER_25 GFA_APPCTRL_MAKE_APPID(56) #define GFA_APPCTRL_APPID_USER_26 GFA_APPCTRL_MAKE_APPID(57) #define GFA_APPCTRL_APPID_USER_27 GFA_APPCTRL_MAKE_APPID(58) #define GFA_APPCTRL_APPID_USER_28 GFA_APPCTRL_MAKE_APPID(59) #define GFA_APPCTRL_APPID_USER_29 GFA_APPCTRL_MAKE_APPID(60) #define GFA_APPCTRL_APPID_USER_30 GFA_APPCTRL_MAKE_APPID(61) #define GFA_APPCTRL_APPID_USER_31 GFA_APPCTRL_MAKE_APPID(62) #define GFA_APPCTRL_APPID_USER_32 GFA_APPCTRL_MAKE_APPID(63) ///////////////////////////////////////////////////////////////////////////// #define GFA_APPCTRL_CTRLMSG_USER_01 GFA_APPCTRL_MAKE_CTRLMSG(32) #define GFA_APPCTRL_CTRLMSG_USER_02 GFA_APPCTRL_MAKE_CTRLMSG(33) #define GFA_APPCTRL_CTRLMSG_USER_03 GFA_APPCTRL_MAKE_CTRLMSG(34) #define GFA_APPCTRL_CTRLMSG_USER_04 GFA_APPCTRL_MAKE_CTRLMSG(35) #define GFA_APPCTRL_CTRLMSG_USER_05 GFA_APPCTRL_MAKE_CTRLMSG(36) #define GFA_APPCTRL_CTRLMSG_USER_06 GFA_APPCTRL_MAKE_CTRLMSG(37) #define GFA_APPCTRL_CTRLMSG_USER_07 GFA_APPCTRL_MAKE_CTRLMSG(38) #define GFA_APPCTRL_CTRLMSG_USER_08 GFA_APPCTRL_MAKE_CTRLMSG(39) #define GFA_APPCTRL_CTRLMSG_USER_09 GFA_APPCTRL_MAKE_CTRLMSG(40) #define GFA_APPCTRL_CTRLMSG_USER_10 GFA_APPCTRL_MAKE_CTRLMSG(41) #define GFA_APPCTRL_CTRLMSG_USER_11 GFA_APPCTRL_MAKE_CTRLMSG(42) #define GFA_APPCTRL_CTRLMSG_USER_12 GFA_APPCTRL_MAKE_CTRLMSG(43) #define GFA_APPCTRL_CTRLMSG_USER_13 GFA_APPCTRL_MAKE_CTRLMSG(44) #define GFA_APPCTRL_CTRLMSG_USER_14 GFA_APPCTRL_MAKE_CTRLMSG(45) #define GFA_APPCTRL_CTRLMSG_USER_15 GFA_APPCTRL_MAKE_CTRLMSG(46) #define GFA_APPCTRL_CTRLMSG_USER_16 GFA_APPCTRL_MAKE_CTRLMSG(47) #define GFA_APPCTRL_CTRLMSG_USER_17 GFA_APPCTRL_MAKE_CTRLMSG(48) #define GFA_APPCTRL_CTRLMSG_USER_18 GFA_APPCTRL_MAKE_CTRLMSG(49) #define GFA_APPCTRL_CTRLMSG_USER_19 GFA_APPCTRL_MAKE_CTRLMSG(50) #define GFA_APPCTRL_CTRLMSG_USER_20 GFA_APPCTRL_MAKE_CTRLMSG(51) #define GFA_APPCTRL_CTRLMSG_USER_21 GFA_APPCTRL_MAKE_CTRLMSG(52) #define GFA_APPCTRL_CTRLMSG_USER_22 GFA_APPCTRL_MAKE_CTRLMSG(53) #define GFA_APPCTRL_CTRLMSG_USER_23 GFA_APPCTRL_MAKE_CTRLMSG(54) #define GFA_APPCTRL_CTRLMSG_USER_24 GFA_APPCTRL_MAKE_CTRLMSG(55) #define GFA_APPCTRL_CTRLMSG_USER_25 GFA_APPCTRL_MAKE_CTRLMSG(56) #define GFA_APPCTRL_CTRLMSG_USER_26 GFA_APPCTRL_MAKE_CTRLMSG(57) #define GFA_APPCTRL_CTRLMSG_USER_27 GFA_APPCTRL_MAKE_CTRLMSG(58) #define GFA_APPCTRL_CTRLMSG_USER_28 GFA_APPCTRL_MAKE_CTRLMSG(59) #define GFA_APPCTRL_CTRLMSG_USER_29 GFA_APPCTRL_MAKE_CTRLMSG(60) #define GFA_APPCTRL_CTRLMSG_USER_30 GFA_APPCTRL_MAKE_CTRLMSG(61) #define GFA_APPCTRL_CTRLMSG_USER_31 GFA_APPCTRL_MAKE_CTRLMSG(62) #define GFA_APPCTRL_CTRLMSG_USER_32 GFA_APPCTRL_MAKE_CTRLMSG(63) ///////////////////////////////////////////////////////////////////////////// typedef enum { GIAS_StateNotRunning, GIAS_Initializing, GIAS_Running, GIAS_Paused, GIAS_Hanging, // pseudo state! GIAS_Terminating, GIAS_Invalid }GfaIpcAppStates; ///////////////////////////////////////////////////////////////////////////// typedef struct _GFA_APPCTRL_APPTIMES { clock64_t nCyclePresetUs; clock64_t nCycleLastUs; clock64_t nCycleMinUs; clock64_t nCycleMaxUs; clock64_t nWorkLastUs; clock64_t nWorkMinUs; clock64_t nWorkMaxUs; clock64_t nCpuUsrTimeUs; clock64_t nCpuKerTimeUs; clock64_t nMaxHeartbeatDelay; double fCpuTime; double fCpuCur; double fCpuAvg; time_t nTsStart; }GFA_APPCTRL_APPTIMES, *LPGFA_APPCTRL_APPTIMES; typedef const GFA_APPCTRL_APPTIMES *LPCGFA_APPCTRL_APPTIMES; ///////////////////////////////////////////////////////////////////////////// HAPPCTRL GfaIpcAppCtrlAcquire (appid_t nAppID, const char *pszDisplayName, clock64_t nCycleIntvUs, clock64_t nMaxHeartbeatDelayUs); void GfaIpcAppCtrlRelease (HAPPCTRL hAC); appid_t GfaIpcAppCtrlGetRunningMask (HAPPCTRL hAC); HAPPINFO GfaIpcAppCtrlInfoUpdate (HAPPCTRL hAC, clock64_t nCurWorkingTime); GfaIpcAppStates GfaIpcAppCtrlGetState (HAPPCTRL hAC, appid_t nAppID); GfaIpcAppStates GfaIpcAppCtrlSetState (HAPPCTRL hAC, GfaIpcAppStates state); const char* GfaIpcAppCtrlGetDisplayName (HAPPCTRL hAC, appid_t nAppID, char *pszName, size_t nCChName); bool GfaIpcAppCtrlPresetDisplayName (HAPPCTRL hAC, appid_t nAppID, const char *pszName); bool GfaIpcAppCtrlSubscribeStateEvents (HAPPCTRL hAC, appid_t nAppMask); bool GfaIpcAppCtrlUnsubscribeStateEvents (HAPPCTRL hAC, appid_t nAppMask); appid_t GfaIpcAppCtrlGetPendingStateEvents (HAPPCTRL hAC); bool GfaIpcAppCtrlSendCtrlMsg (HAPPCTRL hAC, appid_t nAppID, ctrlmsg_t msg); ctrlmsg_t GfaIpcAppCtrlGetPendingCtrlMsg (HAPPCTRL hAC); clock64_t GfaIpcAppCtrlGetAppTimes (HAPPCTRL hAC, appid_t nAppID, LPGFA_APPCTRL_APPTIMES pat); ///////////////////////////////////////////////////////////////////////////// ctrlmsg_t GfaIpcAppCtrlGetNextCtrlMsg (HAPPINFO hAI); appid_t GfaIpcAppCtrlGetNextStateEvtSrc (HAPPINFO hAI); const char* GfaIpcAppCtrlGetStateText (GfaIpcAppStates state); ///////////////////////////////////////////////////////////////////////////// #ifdef __cplusplus } #endif // __cplusplus #endif // !defined(AGD_GFAIPC_H__6126047E_C1B1_4ACE_BD49_8780C7E5E068__INCLUDED_)