28#ifndef INC_CINOSTASKEX_H
29#define INC_CINOSTASKEX_H
40#include <cinosmcnvram.h>
44#include <cinoseventloggerdef.h>
45#include <cinostaskexstatesdef.h>
46#include <cinosmcdata.h>
49#include <cincovdispatcher.h>
53#include <unordered_map>
65#define INOS_TASKEX_MESSAGE( apFormat, ... ) \
66 InternLog( DF_INOS_EVENT_LOGGER_LEVEL_TASKMSG, \
67 DF_INOS_EVENT_LOGGER_FONT_COLOR_BLUE, apFormat, __VA_ARGS__ )
69#define INOS_TASKEX_MESSAGE( apFormat, aArgs... ) \
70 InternLog( DF_INOS_EVENT_LOGGER_LEVEL_TASKMSG, \
71 DF_INOS_EVENT_LOGGER_FONT_COLOR_BLUE, apFormat, ##aArgs )
74#define DF_INOS_TASKEX_MAX_CMD 128
75#define DF_INOS_TASKEX_MAX_AND_TRG 4
76#define DF_INOS_TASKEX_MAX_TRG_VAL_NAME 256
77#define DF_INOS_TASKEX_STARTUP_PRIO DF_INOS_TASK_PRIO_USER_HIGHEST
79#define INOS_MCLOG_REPLY_EX(aMsg,rpl,err) \
81 if( CINOSEventLogger::Instance().IsLevelActive(DF_INOS_EVENT_LOGGER_LEVEL_TASKMSG) ) { \
82 if (!aMsg->GetNoTrace()) { \
83 double tim = double(0.000001)*g_pTarget->ConvertToNanoSeconds(GetSystemTicks()); \
84 InternLog( DF_INOS_EVENT_LOGGER_LEVEL_TASKMSG, \
85 DF_INOS_EVENT_LOGGER_FONT_COLOR_BLUE, \
86 "RPL:TimStp,%f:Rec,%s:Id," PFIID ":Snd,%s:Que,%1.6fms:Typ," PFU32 ":Ret," PF0X32,\
87 tim, GetName(), aMsg->GetId(), GetName(), tim, (uint32)rpl, (uint32) err);\
93#define INOS_MCLOG_REPLY(aMsg) INOS_MCLOG_REPLY_EX(aMsg,eRplOk,0)
102class CINOSMcDataInst;
108class CINCOVServerSession;
109class CINCOVOperation;
110class SINCOVLazyContext;
165 const char* apValue);
205 const char* apParamType,
const char* apTaskName,
const char* apCmdName,
206 const char* apEventName);
209 const char* apParamType,
const char* apTaskName,
const char* apCmdName,
210 const char* apEventName);
265 const char* apParamType, uint64 auBusTicks, uint8 auBusId);
316 { m_pTask = apTask; m_pMsg = apMsg; m_pNext=0;};
338 friend class CINOSMcModule;
339 friend class CINOSMcRobot;
342 void* apObject,
bool abHandlesCommands)
343 { m_pMsg = apMsg; m_uReplyId = auReplyId; m_pHandler = apHandler;
344 m_pObject = apObject; m_pNext=0; m_pPrev = 0;
345 m_bHandlesCommands = abHandlesCommands;};
357 bool m_bHandlesCommands;
417 while (p->m_pNext) p = p->m_pNext;
449 {
return m_uParamCnt;};
453 { m_pTmpResult = 0;};
458 template<
class T>
void AddResult(T,
const char* apResultName = NULL);
462 void AddResult(
char* apValue,
const char* apResultName = NULL);
466 void AddResult(
const char* apValue,
const char* apResultName = NULL);
473 template<
class T>
void InsertResult(T,
const char* apResultName = NULL);
483 void InsertResult(
const char* apValue,
const char* apResultName = NULL);
490 template<
class T>
void AppendResult(T,
const char* apResultName = NULL);
500 void AppendResult(
const char* apValue,
const char* apResultName = NULL);
537 void SetTrigger(
const char* apVarName,
const char* apCompare,
540 void SetTrigger(
const char* apVarName,
const char* apCompare,
541 const char* apValue);
544 const char* apParamType,
const char* apTaskName,
const char* apCmdName,
545 const char* apEventName);
547 void SetTrigger(
const char* apSynName,
const char* apParamValue,
548 const char* apParamType,
const char* apTaskName,
const char* apCmdName,
549 const char* apEventName);
552 const char* apParamType, uint64 auBusTicks, uint8 auBusId);
555 {
return m_pTrigger;};
558 {
if (m_pTrigger) {
delete m_pTrigger; m_pTrigger = 0;}};
562 const char* apParamType,
const char* apTaskName,
const char* apCmdName,
563 const char* apEventName);
566 const char* apParamType, uint64 auBusTicks, uint8 auBusId);
574 { m_pSender = apSender;};
577 { m_pUser = apUser;};
580 { m_pData = apData;};
583 { m_pSync = apSync;};
595 { m_uMsgCode = auMsgCode;};
598 {
return m_uMsgCode;};
601 { m_uMsgSubCode = auMsgSubCode;};
604 {
return m_uMsgSubCode;};
606 {
return m_uType == CINOSTaskExDef::eMsgCall ?
612 { m_uRetValue = auRetValue;};
615 {
return m_uRetValue;};
618 {
return m_pSender;};
619 uint32 GetSenderId()
const
620 {
if (
nullptr != m_pSender)
return m_pSender->GetTaskId();
else return 0;};
623 {
return m_pReceiver;};
624 uint32 GetReceiverId()
const
625 {
if (
nullptr != m_pReceiver)
return ((
CINOSTask*)m_pReceiver)->GetTaskId();
else return 0;};
640 { m_uFlags = auFlags;};
643 { m_uFlags |= auFlags;};
646 { m_uFlags |= eMsgFlgDeferred;};
649 {
return (m_uFlags & eMsgFlgDeferred)!=0;};
652 {
return (m_uFlags & eMsgFlgDone)!=0;};
655 {
return (m_uFlags & eMsgFlgPending)!=0;};
658 { m_uFlags |= eMsgFlgPending;};
661 {
return (m_uFlags & eMsgFlgCanceled)!=0;};
664 { m_uFlags |= eMsgFlgCanceled;};
667 { m_uFlags |= eMsgFlgPersistent;};
670 {
return (m_uFlags & eMsgFlgPersistent)!=0;};
673 { m_uFlags |= eMsgFlgFlushResistent;};
676 {
return (m_uFlags & eMsgFlgFlushResistent)!=0;};
679 {
return (m_uFlags & eMsgFlgSingle)!=0;};
682 { m_uFlags |= eMsgFlgSingle;};
686 return (m_uFlags & eMsgFlgNoTrace)!=0 ||
687 (m_pData && (m_pData->GetFlag() & CINOSMcDataInst::eFlgNoTrace));
691 { m_uFlags |= eMsgFlgNoTrace;};
694 {
return (m_uFlags & eMsgFlgStatic)!=0;};
698 m_uFlags |= eMsgFlgStatic;
699 INOS_CONCURRENCY_CHECK_FREE(
this);
703 { m_uFlags &= ~eMsgFlgStatic;};
704 bool GetAlwaysSyncSignal()
const
705 {
return (m_uFlags & eMsgFlgAlwaysSyncSignal)!=0;};
708 { m_uFlags |= eMsgFlgAlwaysSyncSignal;};
709 bool GetAlwaysReply()
const
710 {
return (m_uFlags & eMsgFlgAlwaysReply)!=0;};
713 { m_uFlags |= eMsgFlgAlwaysReply;};
716 { inos_strncpy(m_cName, apName,
sizeof(m_cName));};
728 { inos_strncpy(m_cInfo, apInfo,
sizeof(m_cInfo));};
731 {
return &m_cInfo[0];};
734 { m_uBusTicks = auBusTicks;};
737 {
return m_uBusTicks;};
740 {
return m_uQueueTicks;};
743 { m_uBusId = auBusId;};
746 {
return (uint8)m_uBusId;};
749 { m_uIdInfo = auIdInfo;};
752 {
return m_uIdInfo;};
767 bool GetINCOV(CINCOVServerSession*& opSession, CINCOVOperation*& opOperation);
769 void ReleaseINCOV(CINCOVServerSession& aSession);
770 bool InINCOVContext()
const {
771 return (m_pIncovContext ?
true : false);
774 bool InINCOVContext()
const {
781 eMsgFlgNone = 0x00000000,
782 eMsgFlgSyncron = 0x00000001,
783 eMsgFlgDeferred = 0x00000002,
784 eMsgFlgPending = 0x00000004,
785 eMsgFlgCanceled = 0x00000008,
786 eMsgFlgPersistent = 0x00000010,
787 eMsgFlgFlushResistent = 0x00000020,
790 eMsgFlgHasEllipsis = 0x00000040,
794 eMsgFlgSingle = 0x00000080,
796 eMsgFlgNoTrace = 0x00000100,
797 eMsgFlgStatic = 0x00000200,
799 eMsgFlgOversizedResult = 0x00000400,
800 eMsgFlgAlwaysSyncSignal = 0x00000800,
801 eMsgFlgAlwaysReply = 0x00001000,
802 eMsgFlgDone = 0x80000000
811 #if defined(INOS_COORDINATOR_SUPPORT)
812 friend class CINOSMcCoord;
814 #if defined(INOS_LUAINTERPRETER)
815 friend class CINOSMcLua;
816 friend class CINOSMcLuaTask;
819 friend class CINOSMcModule;
820 friend class CINOSMcMessage;
821 friend class CMcResult;
822 friend class CINOSTaskExMsgTest;
823 friend class CINOSTaskExMsgHistory;
833 {
return (strcmp(
GetName(), aName)<0);}
834 int operator == (
const char* aName)
835 {
return (strcmp(
GetName(), aName)==0);}
857 void CopyIncovContext(SINCOVContext* apSrc);
859 void CopyIncovContext(SINCOVLazyContext* apSrc);
864 #if defined(INOS_TASKEXMSG_NAME_EXTENDED_LENGTH)
872 uint64 m_uQueueTicks;
886 uint32 m_uMsgSubCode;
896 CINOSMcDataInst* m_pData;
910 uint32 m_uAndTriggerInd;
921 bool m_bCreateMcLogTraces;
925 SINCOVLazyContext* m_pIncovContext =
nullptr;
928 INOS_CONCURRENCY_CHECK_DECLARE;
934template<>
const char* CINOSTaskExMsg::GetParam<const char*>();
935template<>
char* CINOSTaskExMsg::GetParam<char*>();
986 {
return &m_cParam[0];};
989 {
return &m_cType[0];};
992 {
return &m_cAliasName[0];};
995 { inos_strncpy(&m_cAliasName[0], apAlias,
sizeof(m_cAliasName));};
1000 {
return m_pTreeName;};
1006 eSourceIdFastLoad = 253,
1010 {
return m_uSourceId; };
1014 {
return m_pParent;};
1029 bool GetOption(
const char* apBase,
const char* apName)
const;
1031 bool GetOption(
const char* apParams,
const char* apBase,
const char* apName)
const;
1036 bool GetOptionStr(
const char* apBase,
char* apResult, uint32 auSize)
const;
1038 bool GetOptionStr(
const char* apParams,
const char* apBase,
char* apResult, uint32 auSize)
const;
1042 bool GetOptionNbr(
const char* apParams,
const char* apBase, uintnbr& auNumber)
const;
1050 {
return (
GetFlags() & auFlag)!=0;};
1073 uint32 GetIdleTimeout()
const
1074 {
return m_uIdleTimeout; };
1080 {
INOS_OR(m_uDispatchFlags, auFlag); };
1083 {
INOS_AND(m_uDispatchFlags, ~auFlag); };
1086 {
return m_uDispatchFlags; };
1090 #ifdef INOS_MULTICORE
1114 {
return m_pMsgQueue;};
1121 {
return m_pCommands->Find(apName);};
1144 template<
typename... ParamType>
1146 ParamType... aParams,
1157 if(
nullptr == pCmdMsg) {
1176 { (pCallMsg->
AddParam(aParams))... };
1179 auto pParam = pCmdMsg->GetFirstParamPtr(
false);
1180 for(uint32 uIx = 0; uIx <
sizeof...(aParams); uIx ++) {
1182 if(
nullptr == pParam) {
1184 if((pCmdMsg->
GetFlags() & CINOSTaskExMsg::eMsgFlgHasEllipsis)
1193 if(pParam->GetType() != ParamArray[uIx]->GetType() ||
1194 pParam->GetTypeInfo() != ParamArray[uIx]->GetTypeInfo()) {
1199 pParam = pParam->GetNext();
1202 while(
nullptr != pParam) {
1204 if(pParam->GetFlag() & CINOSTaskExMsgParam::eFlgMandatory) {
1225 {
return m_CommandHookRegister.Find(apName);};
1237 {
return m_pOptions;};
1240 {
return m_pFlags;};
1243 {
return m_pRequests;};
1246 {
return m_pCriticals;};
1259 virtual void AddProp(
const char* apName, nvreal64& aMember,
1260 real64 arDefault, real64 arMin, real64 arMax,
const char* apUnit,
1261 uint32 auDigits, uint32 auCharactristics = defCharShowFix);
1263 virtual void AddProp(
const char* apName, nvuint32& aMember,
1264 uint32 auDefault, uint32 auMin, uint32 auMax,
const char* apUnit,
1265 uint32 auCharacteristics=defCharShowDec);
1267 virtual void AddProp(
const char* apName, nvstring& aMember,
1268 const char* apDefault=
"",
const char* apComboData=NULL);
1270 virtual void AddProp(
const char* apName, nvlstring& aMember,
1271 const char* apDefault=
"");
1273 virtual void AddProp(
const char* apName, nvbool& aMember,
1274 bool abDefault, uint32 auCharactristics=defCharShowDec);
1285 virtual void AddActual(
const char* apName, nvreal64& aMember,
1286 real64 arDefault, real64 arMin, real64 arMax,
const char* apUnit,
1289 virtual void AddActual(
const char* apName, nvuint32& aMember,
1290 uint32 auDefault, uint32 auMin, uint32 auMax,
const char* apUnit,
1291 uint32 auCharacteristics=defCharShowDec);
1293 virtual void AddActual(
const char* apName, nvstring& aMember,
1294 const char* apDefault=
nullptr,
const char* apComboData=
nullptr);
1296 virtual void AddActual(
const char* apName, nvlstring& aMember,
1297 const char* apDefault=
nullptr);
1300 bool abDefault, uint32 auCharactristics=defCharShowDec);
1306 CINOSMcDataInst* apData,
const char* apAlias);
1310 return eCmdINOSTaskExLast;
1314 return eUsrINOSTaskExLast;
1322 {m_pMessageHnd = apMessageHnd;};
1325 uint32 auFlags, CINOSMcData* apInfo);
1328 uint32 auFlags,
const char* apText, CINOSMcData* apInfo);
1331 uint32 auFlags,
const char* apProperties);
1334 uint32 auFlags, CINOSMcData* apInfo,
const char* apProperties);
1337 uint32 auFlags, CINOSMcData* apInfo);
1340 uint32 auFlags,
const char* apText, CINOSMcData* apInfo);
1343 uint32 auFlags, CINOSMcData* apInfo=0);
1346 uint32 auFlags,
const char* apText, CINOSMcData* apInfo=0);
1349 uint32 auFlags,
const char* apProperties);
1352 uint32 auFlags, CINOSMcData* apInfo,
const char* apProperties);
1355 uint32 auFlags, CINOSMcData* apInfo,
const char* apText);
1358 uint32 auFlags, CINOSMcData* apInfo=0,
const char* apText=
nullptr);
1361 uint32 auFlags,
const char* apProperties);
1364 uint32 auFlags, CINOSMcData* apInfo,
const char* apProperties);
1368 friend CMcResult AckMessageDelayed(
tMsgId aMsgId, uint32 auFlags, uint32 auTime);
1370 friend CMcResult
AckMessage(uint32 auMsgCode, uint32 auFlags, uint32 auMask);
1371 friend CMcResult AckMessageDelayed(uint32 auMsgCode, uint32 auFlags, uint32 auMask, uint32 auTime);
1377 friend CMcResult
RequestListen(uint32 auMsgType, uint32 auSetId, uint32 auAckId);
1384#if defined(INOS_TIMINIG_CHECKS_SUSPEND)
1386 uint32 GetSuspendTimingCheckLimit()
const {
1387 return m_uSuspendTimingCheckLimit;
1390 void SetSuspendTimingCheckLimit(uint32 auLimit) {
1391 m_uSuspendTimingCheckLimit = auLimit;
1400 eMsgCmd=CINOSTaskExDef::eMsgCmd,
1401 eMsgCall=CINOSTaskExDef::eMsgCall,
1402 eMsgEvent=CINOSTaskExDef::eMsgEvent,
1403 eMsgReply=CINOSTaskExDef::eMsgReply,
1404 eMsgUser=CINOSTaskExDef::eMsgUser,
1405 eMsgSub=CINOSTaskExDef::eMsgSub,
1406 eMsgInternal=CINOSTaskExDef::eMsgInternal,
1407 eMsgMessage=CINOSTaskExDef::eMsgMessage
1412 eRplOk=CINOSTaskExDef::eRplOk,
1413 eRplSkipped=CINOSTaskExDef::eRplSkipped,
1414 eRplInComplete=CINOSTaskExDef::eRplInComplete,
1415 eRplIgnored=CINOSTaskExDef::eRplIgnored,
1416 eRplPaused=CINOSTaskExDef::eRplPaused,
1417 eRplStopped=CINOSTaskExDef::eRplStopped,
1418 eRplCanceled=CINOSTaskExDef::eRplCanceled,
1419 eRplRejected=CINOSTaskExDef::eRplRejected,
1420 eRplFailed=CINOSTaskExDef::eRplFailed,
1421 eRplError=CINOSTaskExDef::eRplError,
1422 eRplFatal=CINOSTaskExDef::eRplFatal,
1423 eRplTimeout=CINOSTaskExDef::eRplTimeout
1428 eCmdINOSTaskExFirst,
1432 eCmdShutdownRequest,
1443 eUsrINOSTaskExFirst,
1452 eIntINOSTaskExFirst,
1471 eMessageAcknowledge,
1484 eStaStartup = DEF_eStaStartup,
1485 eStaOff = DEF_eStaOff,
1486 eStaWait = DEF_eStaWait,
1487 eStaOn = DEF_eStaOn,
1488 eStaReady = DEF_eStaReady,
1489 eStaBusy = DEF_eStaBusy,
1490 eStaError = DEF_eStaError,
1496 eOptOwner = 0x00000001,
1497 eOptStat = 0x00000002,
1498 eOptMsg = 0x00000004,
1499 eOptNvR = 0x00000008,
1500 eOptOvld = 0x0000010,
1501 eOptCaS = 0x0000020,
1502 eOptResTsk2 = 0x0000040,
1503 eOptResTsk3 = 0x0000080
1508 eFlgError = 0x00000001,
1509 eFlgFatal = 0x00000002,
1510 eFlgEmergency=0x00000004,
1511 eFlgSTO = 0x00000008,
1512 eFlgResTsk4 = 0x00000010,
1513 eFlgResTsk5 = 0x00000020,
1514 eFlgResTsk6 = 0x00000040,
1515 eFlgResTsk7 = 0x00000080
1520 eReqResTsk0 = 0x00000001,
1521 eReqResTsk1 = 0x00000002,
1522 eReqResTsk2 = 0x00000004,
1523 eReqResTsk3 = 0x00000008,
1524 eReqResTsk4 = 0x00000010,
1525 eReqResTsk5 = 0x00000020,
1526 eReqResTsk6 = 0x00000040,
1527 eReqResTsk7 = 0x00000080
1532 eCrtSendMsg = 0x00000001,
1533 eCrtResTsk1 = 0x00000002,
1534 eCrtResTsk2 = 0x00000004,
1535 eCrtResTsk3 = 0x00000008,
1536 eCrtResTsk4 = 0x00000010,
1537 eCrtResTsk5 = 0x00000020,
1538 eCrtResTsk6 = 0x00000040,
1539 eCrtResTsk7 = 0x00000080
1544 eDispFlagINCOSync = 0x00000001,
1548 enum eTaskExMsgFlags {
1549 eMsgFlagNone = 0x00000000,
1550 eMsgFlagNoWait = 0x00000001,
1554 enum EDispatchStyle {
1564 friend void _INI_0000_CINOSTaskEx();
1565 friend void _INI_0201_CINOSTaskEx();
1566 friend void _INI_0510_CINOSTaskEx();
1567 friend class CINOSTaskExState;
1569 friend class CINOSMcModule;
1570 friend class CINOSMcRobot;
1571 #if defined(INOS_COORDINATOR_SUPPORT)
1572 friend class CINOSMcCoord;
1574 friend class CINOSMcLua;
1575 friend class CINOSMcMessage;
1577 friend class CINOSTaskExMsgTest;
1578 friend class CINOSEventLogger;
1584 uint32 aStackSize=defDefaultStackSize,
1585 uint32 aPriority=defLowestPriority,
bool aFloatingPoint=
true,
1586 uint32 aTimeSlice=defDefaultTimeSlice,
bool aInterruptsDisabled=
false);
1588 CINOSTaskEx (
const char* apName,
const char* apType,
const char* apParam=0,
1589 uint32 aStackSize=defDefaultStackSize,
1590 uint32 aPriority=defLowestPriority,
bool aFloatingPoint=
true,
1591 uint32 aTimeSlice=defDefaultTimeSlice,
bool aInterruptsDisabled=
false);
1609 int operator == (
const char* aName)
1615 static intnbr HandleTicksTriggers0(
void*, intnbr);
1616 static intnbr HandleTicksTriggers1(
void*, intnbr);
1617 static intnbr HandleTicksTriggers2(
void*, intnbr);
1618 static intnbr HandleTicksTriggers3(
void*, intnbr);
1619 static void HandleTicksTriggers(uint8 auBusId);
1623 uint32* GetEvtLevel(
const uint32 auBitNumber) {
1625 const uint8 uArrayIndex = (uint8)(auBitNumber / 32);
1626 return &m_pLevel[uArrayIndex];
1630 inline uint32 IsLevelActive(
const uint32 auBitNumber)
const {
1631 const uint8 uArrayIndex = (uint8)(auBitNumber / 32);
1632 const uint32 uLevel = (uint32)(1 << (auBitNumber % 32));
1633 return (m_pLevel[uArrayIndex] & uLevel);
1683 #ifdef INOS_MULTICORE
1684 virtual uint32 iSwitchCore(uint8 auCoreId);
1690 virtual void iiSetFlag(
const char* apName);
1738 inosName128& oErrorItemName);
1752 template<
class T>
void ReplyParam(uint32 auReply, T);
1756 { m_pTreeName = apTreeName;};
1798 void* apObject=0,
bool abHandlesCommands =
false);
1802 void* apHandler=0,
void* apObject=0,
bool abHandlesCommands =
false);
1810 uint64 auTicks, uint8 auBusId);
1813 uint64 auTicks, uint8 auBusId, uint32 auFlags);
1819 uint32 auFlags, uint32 auMs);
1832 virtual void AddCommand(
const char* apName, uint32 auCode, CINCOProcedure* apProc);
1836 uint16 aKeyLevel=cKeyLevelMin,
1837 bool abRegisterInco=
true);
1841 virtual void AddCommand(
const char* apName, uint32 auCode, uint32 auType=eMsgCmd);
1845 virtual void AddParam(
const char* apName, real64 arValue, real64 arMin,
1846 real64 arMax,
const char* apUnit, uint32 auChar, uint32 auFlags = 0);
1848 virtual void AddParam(
const char* apName,
const char* apValue, uint32 auFlags = 0);
1850 virtual void AddParam(
const char* apName,
const char* apValue,
1851 const char* apComboData, uint32 auFlags = 0);
1853 virtual void AddParam(
const char* apName,
const char* apUnit,
1854 uint32 auValue, uint32 auMin, uint32 auMax, uint32 auChar, uint32 auFlags = 0);
1857 int32 aiValue, int32 aiMin, int32 aiMax, uint32 auChar, uint32 auFlags = 0);
1862 uint64 auValue, uint64 auMin, uint64 auMax, uint32 auChar, uint32 auFlags = 0);
1865 int64 aiValue, int64 aiMin, int64 aiMax, uint32 auChar, uint32 auFlags = 0);
1867 virtual void AddParam(
const char* apName,
const char* apComboData,
1868 uint32 auValue, uint32 auMin, uint32 auMax,
const char* apUnit,
1869 uint32 auChar, uint32 auFlags = 0);
1871 virtual void AddParam(
const char* apName,
bool abValue, uint32 auChar,
1872 uint32 auFlags = 0);
1880 template <
typename T>
1881 void AddParam(CINCOItem* apItem, T aValue, uint32 auFlags = 0) {
1886 param->m_uFlags = auFlags;
1889 m_pActMsgObj->Add(apItem, (int16)(m_uActParamCount++));
1892 void ProcedureArgCheck(CINCOObject& aObject,
1893 const char* apParamName,
const uint32 auExpectedIncoType);
1898 const char* apFunctionName,
1900 bool abRegisterInco =
true) {};
1903 const char* apFunctionName) {};
1934 { m_pParent = apParent;};
1943 virtual void SetFlag(uint64 auFlag,
bool abUpdateState =
false)
1948 virtual void ClrFlag(uint64 auFlag,
bool abUpdateState =
false)
1967 {
return &m_sSyncCall; };
1970 { m_SyncCallResult = aResult;};
1973 {
return m_SyncCallResult;};
2001 {
return m_uReqPriority; };
2004 { m_uReqPriority = auPrio; };
2052#if defined(INOS_TIMINIG_CHECKS_SUSPEND)
2054 virtual void OnResume(uint32 auLastState, uint32 auElapsedUs,
void* apSync)
override;
2073 static uint32 EncodeReplyCode(uint32 auReply,
tMcAppError aAppError);
2088 inosName32 m_cAliasName;
2090 char m_cParam[1024];
2096 CINOSMcMessage* m_pMessageHnd{};
2098 CINOSMcNvRamGrp* m_pNvRamGrp;
2100 uintptr m_uDispatchCmdId;
2102 const char* m_pTreeName;
2121 uint32 m_uIdleTimeout;
2122 uint32 m_uIdleTimeoutAct;
2125#if defined(INOS_TIMINIG_CHECKS_SUSPEND)
2133 #if defined(INOS_KERNEL_MSGID_64)
2134 static std::atomic<tMsgId> m_MsgId;
2139 CINOSTaskQueue* m_pMsgQueue;
2151 CINCOObject* m_pActMsgObj;
2153 uint32 m_uActParamCount;
2159 TINOSNameBalancedBinaryTree<CINOSTaskExMsg>* m_pCommands;
2161 TINOSNameBalancedBinaryTree<CINOSTaskExCmdBase> m_CommandRegister;
2163 TINOSNameBalancedBinaryTree<CINOSTaskExCmdHookBase> m_CommandHookRegister;
2169 int16 m_iCurCmdOrder = 1;
2171 int16 m_iCurCmdRegOrder = 1;
2176 uintid m_uMptHookId;
2180 uint64 m_uMptTimeBase;
2184 uint64 m_uStaTime[eStaINOSTaskExLast];
2186 nvuint64* m_pNvStaTime[eStaINOSTaskExLast];
2188 uint8 m_uNvStaIndex;
2192 uint8 m_uReqPriority;
2195 CINCOObject* m_pCmd;
2197 CINCOObject* m_pProp;
2199 CINCOObject* m_pOptions;
2201 CINCOObject* m_pFlags;
2203 CINCOObject* m_pRequests;
2205 CINCOObject* m_pCriticals;
2207 CINCOObject* m_pAct;
2209 CINCOObject* m_pStat;
2211 CINCOObject* m_pStatState;
2213 CINCOObject* m_pStatCmd;
2224 CMcResult m_SyncCallResult;
2230 uint32 m_uDispatchFlags;
2233 uint32 m_uPutMsgFlags;
2252 uint32 m_pLevel[DF_INOS_EVENT_LOGGER_LEVEL_ARRAY_SIZE];
2260 struct SDynamicItem {
2262 SDynamicItem(CINOSMcVal* apValue,
const char* apName,
const char* apUnit,
2263 const char* apComboData) :
2264 m_pMcValue(apValue) {
2267 const size_t cBufSize = strlen(apName) + 1;
2268 m_pName =
new char[cBufSize];
2269 strncpy(m_pName, apName, cBufSize);
2272 if (apUnit !=
nullptr && apUnit[0] !=
'\0') {
2273 const size_t cBufSize = strlen(apUnit) + 1;
2274 m_pUnit =
new char[cBufSize];
2275 strncpy(m_pUnit, apUnit, cBufSize);
2282 if (apComboData !=
nullptr) {
2284 const size_t cBufSize = strlen(apComboData) + 1;
2285 m_pComboData =
new char[cBufSize];
2286 strncpy(m_pComboData, apComboData, cBufSize);
2290 m_pComboData =
nullptr;
2294 SDynamicItem(SDynamicItem&& aItem) :
2295 m_pMcValue(aItem.m_pMcValue),
2296 m_pName(aItem.m_pName),
2297 m_pUnit(aItem.m_pUnit),
2298 m_pComboData(aItem.m_pComboData)
2302 aItem.m_pMcValue =
nullptr;
2303 aItem.m_pName =
nullptr;
2304 aItem.m_pUnit =
nullptr;
2305 aItem.m_pComboData =
nullptr;
2310 if(m_pMcValue !=
nullptr) {
2313 if(m_pName !=
nullptr) {
2316 if(m_pUnit !=
nullptr) {
2319 if(m_pComboData !=
nullptr) {
2320 delete [] m_pComboData;
2324 CINOSMcVal* m_pMcValue;
2331 std::unordered_map <std::string, SDynamicItem> m_DynamicProps;
2332 std::unordered_map <std::string, SDynamicItem> m_DynamicActuals;
2337 uint32 m_uSourceIdChild;
2339 static uint32 g_uSourceId;
2344 static uint32 m_uTicksMsgValid[DF_INOS_BUS_MAX_NUMBER];
2346 #if defined(INOS_MULTICORE)
2354 static CINOSHooks s_MsgDoneHooks;
2383 const uint32 auTraceLevel = DF_INOS_EVENT_LOGGER_LEVEL_TASKCMD,
2384 const uint32 auTraceColor = DF_INOS_EVENT_LOGGER_FONT_COLOR_GREEN,
2385 CINCOObject* apCmd = NULL);
2393CINOSMcMessage* GetMessageHnd(
bool abSearch=
true);
2394tMcAppError SendMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData* apInfo=0);
2395tMcAppError SendMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags,
const char* apText, CINOSMcData* apInfo=0);
2396CMcResult PostMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData* apInfo=0);
2397CMcResult PostMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags,
const char* apText, CINOSMcData* apInfo=0);
2398CMcResult ModifyMessage(
tMsgId aiId, uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData* apInfo=0,
const char* apText=
nullptr);
2399CMcResult AckMessage(
const CINOSTask* apOwner, uint32 auMsgType=0xffffffff, uint32 auFlag=0);
2400CINOSMcNvRamGrp* GetNvRamGrp(
bool abSearch=
true);
2401void MsgEvent(
CINOSTaskExMsg* apMsg,
const char* apName, uint32 auMs=0);
2402void MsgEventFlg(
CINOSTaskExMsg* apMsg,
const char* apName, uint32 auFlags, uint32 auMs=0);
2405extern CINOSMcNvRamGrp* GetNvRamGrp(
bool abSearch);
2406extern CINOSMcMessage* GetMessageHnd(
bool abSearch);
2407extern void MsgEvent(
CINOSTaskExMsg* apMsg,
const char* apName, uint64 auTicks, uint8 auBusId);
2408extern void MsgEvent(
CINOSTaskExMsg* apMsg,
const char* apName, uint32 auMs);
2409extern void MsgEventFlg(
CINOSTaskExMsg* apMsg,
const char* apName, uint64 auTicks, uint8 auBusId, uint32 auFlags);
2410extern void MsgEventFlg(
CINOSTaskExMsg* apMsg,
const char* apName, uint32 auFlags, uint32 auMs);
2411extern CMcResult PostMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData* apInfo);
2412extern CMcResult PostMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags,
const char* apFormat, CINOSMcData* apInfo);
2413extern CMcResult PostMessageEx(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags,
const char* apProperties);
2414extern CMcResult PostMessageEx(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData* apInfo,
const char* apProperties);
2415extern CMcResult ModifyMessage(
tMsgId aiId, uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData* apInfo);
2416extern CMcResult ModifyMessageEx(
tMsgId aiId, uint32 auMsgType, uint32 auMsgCode, uint32 auFlags,
const char* apProperties);
2417extern CMcResult ModifyMessageEx(
tMsgId aiId, uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData* apInfo,
const char* apProperties);
2418extern tMcAppError SendMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData* apInfo);
2419extern tMcAppError SendMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags,
const char* apFormat, CINOSMcData* apInfo);
2420extern tMcAppError SendMessageEx(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags,
const char* apProperties);
2421extern tMcAppError SendMessageEx(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData* apInfo,
const char* apProperties);
2422extern CMcResult AckMessage(
tMsgId auMsgId, uint32 auFlags);
2423extern CMcResult AckMessageDelayed(
tMsgId aMsgId, uint32 auFlags, uint32 auTime);
2424extern CMcResult AckMessage(uint32 auMsgCode, uint32 auFlags, uint32 auMask);
2425extern CMcResult AckMessageDelayed(uint32 auMsgCode, uint32 auFlags, uint32 auMask, uint32 auTime);
2476 return p->CINOSTaskExMsgParam::template GetTypedValue<T>();
2493 T val = CINOSTaskExMsg::template GetParam<T>();
2542 return p->CINOSTaskExMsgParam::template GetTypedValue<T>();
2560 if (snd && (snd->mClassSize ==
sizeof(
CINOSTaskEx))){
2568 ((
CINOSTaskEx*)snd)->PutReply(pRpl, m_pActMsg->m_Id);
2580 if (pTask->GetClassSize() ==
sizeof(
CINOSTaskEx)) {
2649 CINOSTaskQueue* m_pEventQueue;
2722 uint32 auMsgSubCode,
2725 uint32 auNumberOfParameters,
2726 uint32 auTypeOfParameters,
2728 uint32 auIntTypeOfParameters,
2734 virtual void Call(
void* aParameters=0,
void* aResult=0,
long aOffset=0,
bool aCallProcEx=
true)
override;
2735#ifdef INOS_FAST_CALLPROCEDURE
2737 virtual void Call(CINCOParamReader& aParameters, CINCOResult& aResult,
long aOffset=0)
override;
2744 uint32 m_uMsgSubCode;
2746 uint32 m_uSubTypeOfParameters;
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
CINOSTaskEx * ActualTaskEx()
Definition cinostaskex.h:2577
uint32 tMcAppError
Definition cinostaskexdef.h:53
Helper class and templates definition for CINOSTaskEx.
Definition cinostaskex.h:2715
Definition cinostaskex.h:2625
virtual CINOSTaskQueue * GetEventQueue()
Gets the message queue from the sync object.
Definition cinostaskex.h:2639
virtual CINOSTaskExMsg * WaitForEvent(const char *apEventName)
Waits for an event of given and returns the message, the return.
CINOSMcSyncEvent()
constructor
virtual ICACHE bool MsgEvent(CINOSTaskExMsg *apMsg) override
overloaded signal
Definition cinostaskex.h:2683
static CINOSMcSyncMsg * Create(CINOSTaskEx &aTask, CINOSTaskExMsg *apMsg)
virtual void Signal() override
Put object into the signaled state.
Definition cinostaskex.h:2593
virtual void Signal() override
overloaded signal
CINOSMcSync(CINOSTaskExMsg *apMsg, void *apHandler=NULL, void *apObject=NULL)
constructor
Definition cinosmutex.h:36
ICACHE void Release(bool aSuspend=false, uint32 auState=defINOSTaskPureSuspended)
ICACHE uint32 Request(uint32 aTimeout=INOS_WAIT_FOREVER)
Definition cinostaskextmpl.h:435
Definition cinostaskex.h:371
Definition cinostaskextmpl.h:262
Definition cinostaskexdef.h:70
Definition cinostaskex.h:332
Definition cinostaskexdef.h:610
Definition cinostaskex.h:312
Definition cinostaskexdef.h:129
CINOSTaskExMsgParam * GetNext() const
Definition cinostaskexdef.h:284
Definition cinostaskex.h:197
inosName64 m_cCmdName
command name
Definition cinostaskex.h:238
char * m_pParamValue
value
Definition cinostaskex.h:246
inosName32 m_cEventName
event name
Definition cinostaskex.h:240
const char * GetParamType()
get paramtype
Definition cinostaskex.h:226
const char * GetCmdName()
get cmd name
Definition cinostaskex.h:220
real64 GetParamValue(CINOSMcData *apData=0)
get param value
const char * GetEventName()
get event name
Definition cinostaskex.h:223
inosName64 m_cTaskName
task name
Definition cinostaskex.h:236
const char * GetSynName()
get syn name
Definition cinostaskex.h:214
DECLARE_DYNAMIC(CINOSTaskExMsgTriggerEvent)
dynamic object handling
real64 m_rParamValue
value
Definition cinostaskex.h:244
const char * GetTaskName()
get task name
Definition cinostaskex.h:217
CINOSTaskExMsgTriggerEvent(const char *apSynName, real64 arParamValue, const char *apParamType, const char *apTaskName, const char *apCmdName, const char *apEventName)
constructor
virtual ~CINOSTaskExMsgTriggerEvent()
destructor
inosName32 m_cSynName
sync name
Definition cinostaskex.h:234
char m_cParamType[8]
param type
Definition cinostaskex.h:242
CINOSTaskExMsgTriggerEvent(const char *apSynName, const char *apParamValue, const char *apParamType, const char *apTaskName, const char *apCmdName, const char *apEventName)
constructor
Definition cinostaskex.h:257
inosName32 m_cSynName
sync name
Definition cinostaskex.h:293
char m_cParamType[8]
param type
Definition cinostaskex.h:295
void AdjTicksMs(int32 aiMs)
adjust bus ticks
uint64 GetBusId()
get bus id
Definition cinostaskex.h:282
const char * GetSynName()
get syn name
Definition cinostaskex.h:270
uint64 m_uBusTicks
bus ticks
Definition cinostaskex.h:299
DECLARE_DYNAMIC(CINOSTaskExMsgTriggerTicks)
dynamic object handling
uint64 GetBusTicks()
get bus ticks
Definition cinostaskex.h:279
CINOSTaskExMsgTriggerTicks(const char *apSynName, real64 arParamValue, const char *apParamType, uint64 auBusTicks, uint8 auBusId)
constructor
const char * GetParamType()
get paramtype
Definition cinostaskex.h:273
virtual ~CINOSTaskExMsgTriggerTicks()
destructor
Definition cinostaskex.h:267
real64 GetParamValue()
get param value
Definition cinostaskex.h:276
void AdjTicks(int32 aiTicks)
adjust bus ticks
Definition cinostaskex.h:287
real64 m_rParamValue
value
Definition cinostaskex.h:297
Definition cinostaskex.h:154
CINOSTaskExMsgTriggerVar(const char *apVarName, const char *apCompare, const char *apValue)
constructor
const char * GetCompare()
get compare
Definition cinostaskex.h:172
CINOSTaskExMsgTriggerVar(const char *apVarName, const char *apCompare, real64 arValue)
constructor
char m_cCompare[8]
compare string
Definition cinostaskex.h:182
virtual ~CINOSTaskExMsgTriggerVar()
destructor
real64 m_rValue
value
Definition cinostaskex.h:184
DECLARE_DYNAMIC(CINOSTaskExMsgTriggerVar)
dynamic object handling
real64 GetValue(CINOSMcData *apData=0)
get value
const char * GetName()
get var name
Definition cinostaskex.h:169
char * m_pValue
value
Definition cinostaskex.h:186
char m_cName[64]
variable name
Definition cinostaskex.h:180
Definition cinostaskex.h:118
uint32 GetType()
return trigger type
Definition cinostaskex.h:131
virtual ~CINOSTaskExMsgTrigger()
destructor
Definition cinostaskex.h:140
uint32 m_uType
trigger type
Definition cinostaskex.h:143
DECLARE_DYNAMIC(CINOSTaskExMsgTrigger)
dynamic object handling
CINOSTaskExMsgTrigger(uint32 auType)
constructor
Definition cinostaskex.h:137
Definition cinostaskex.h:942
CINOSTaskExMsgUser(uint32 auMsgCode, uint32 auFlags=0)
constructor
Definition cinostaskex.h:948
DECLARE_DYNAMIC(CINOSTaskExMsgUser)
dynamic object handling
Definition cinostaskex.h:396
void * GetUser() const
get pointer to user data
Definition cinostaskex.h:627
void SetTrigger(const char *apSynName, real64 arParamValue, const char *apParamType, const char *apTaskName, const char *apCmdName, const char *apEventName)
set message trigger
T GetResult()
get result
Definition cinostaskex.h:2534
void AndTrigger(const char *apSynName, real64 arParamValue, const char *apParamType, const char *apTaskName, const char *apCmdName, const char *apEventName)
add 'and' message trigger
void SetFlags(uint32 auFlags)
set flags
Definition cinostaskex.h:639
char * GetInfo()
get info
Definition cinostaskex.h:730
void SetTrigger(const char *apVarName, const char *apCompare, real64 arValue)
set message trigger (e.g. variable == value)
void DestroyResults()
destroys all result params
void SetTrigger(const char *apSynName, const char *apParamValue, const char *apParamType, const char *apTaskName, const char *apCmdName, const char *apEventName)
set message trigger
void SetBusId(uint8 auBusId)
set busid
Definition cinostaskex.h:742
void SetTrigger(const char *apSynName, real64 arParamValue, const char *apParamType, uint64 auBusTicks, uint8 auBusId)
set message trigger
uint64 GetQueueTicks() const
get QueueTicks
Definition cinostaskex.h:739
void FstParam()
reset internal pointer to first param
Definition cinostaskex.h:412
bool GetDeferred() const
get deferred flag
Definition cinostaskex.h:648
char * GetFirstParam()
get first param
void AddResultsFromMsgParams(CINOSTaskExMsg *apMsg)
Removes all params of apMsgParam and adds them to the results of this message.
bool GetFlushResistent() const
get flush resistent flag
Definition cinostaskex.h:675
void AddFlags(uint32 auFlags)
add flags
Definition cinostaskex.h:642
CINOSTaskExMsgParam * AddParam(T)
add param
Definition cinostaskex.h:2433
tMcAppError AddIncoItemAsResult(CINCOItem *apItem, bool abBitAsNumber=false)
add the value of an INCO item as result
uint32 GetMsgSubCode() const
get message code
Definition cinostaskex.h:603
CINOSTaskExMsgTrigger * GetAndTrigger(uint32 auIndex=0)
get 'and' message trigger
bool GetNoTrace() const
Get notrace flag.
Definition cinostaskex.h:684
uint32 GetFlags()
get flags
Definition cinostaskex.h:636
void AppendResult(const char *apValue, const char *apResultName=NULL)
void AddResult(char *apValue, const char *apResultName=NULL)
void DestroyParams()
destroys all params
void RemTrigger()
remove trigger from message
Definition cinostaskex.h:557
T GetFirstParam()
get first param
Definition cinostaskex.h:2487
void SetStatic()
Set static flag.
Definition cinostaskex.h:696
tMsgId GetIdInfo() const
get id info
Definition cinostaskex.h:751
uint32 GetResultCount() const
Get the count of results.
void SetSync(CINOSSync *apSync)
set pointer to sync object
Definition cinostaskex.h:582
void SetPending()
set pending flag
Definition cinostaskex.h:657
CINOSTaskExMsgParam * iAddParam(CINOSTaskExMsgParam *apParam)
internal addparam
void InsertResult(T, const char *apResultName=NULL)
Definition cinostaskex.h:2512
void SetDeferred()
get deferred flag
Definition cinostaskex.h:645
void AppendResult(T, const char *apResultName=NULL)
Definition cinostaskex.h:2523
void SetMsgCode(uintnbr auMsgCode)
get message code
Definition cinostaskex.h:594
CINOSTaskExMsg(uint32 auMsgType, uintptr auMsgCode, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
constructor
char * GetParam()
get param
bool GetStatic() const
Get notrace flag.
Definition cinostaskex.h:693
CINOSMcDataInst * GetData() const
get pointer to material
Definition cinostaskex.h:630
bool AreMcLogTracesRequested() const
void LstParam()
reset internal pointer to the last param
Definition cinostaskex.h:415
void MoveResultsFromMcResult(CMcResult &aResult)
CINOSTaskExMsgParam * AddJsonParam(const char *apJson)
add params form JSON string
void SetNoTrace()
Set notrace flag.
Definition cinostaskex.h:690
void InsertResult(char *apValue, const char *apResultName=NULL)
CINOSTaskExMsgParam * AddParam(const char *apName, const char *apValue)
add named 'const char*' param
void SetSingle()
set single flag
Definition cinostaskex.h:681
void AppendResult(char *apValue, const char *apResultName=NULL)
void AddResult(T, const char *apResultName=NULL)
Definition cinostaskex.h:2501
tMsgId GetId() const
get message id
Definition cinostaskex.h:588
void SetInfo(const char *apInfo)
set info
Definition cinostaskex.h:727
CINOSTaskExMsgParam * AddParam(CINOSTaskExMsgParam *apParam)
add copy of param
void ClearStatic()
Clear static flag.
Definition cinostaskex.h:702
void SetTrigger(const char *apVarName, const char *apCompare, const char *apValue)
set message trigger (e.g. variable == value)
void SetRetValue(uint32 auRetValue)
set return value. !!!OBSOLETE!!! Will be removed soon
Definition cinostaskex.h:611
void SetTrigger(uint64 auBusTicks, uint8 auBusId)
set message trigger []
void SetTrigger(real64 arValue)
set message trigger [ms]
uintnbr GetMsgCode() const
get message code
Definition cinostaskex.h:597
void MoveResultsToParams(CINOSTaskExMsg &aMsg)
void InsertResult(const char *apValue, const char *apResultName=NULL)
bool GetDone() const
get touched flag
Definition cinostaskex.h:651
void AddResult(const char *apValue, const char *apResultName=NULL)
CINOSTask * GetSender() const
get pointer to sender
Definition cinostaskex.h:617
uint32 GetMsgType() const
get message type
Definition cinostaskex.h:591
CINOSTaskExMsg(const CINOSTaskExMsg &aMsg)
constructor
uint64 GetBusTicks() const
get busticks
Definition cinostaskex.h:736
char * GetName(bool abResolveIfEmpty=false)
int operator<(CINOSTaskExMsg &aTaskExMsg)
binary tree operators
Definition cinostaskex.h:828
T GetParam()
get param
Definition cinostaskex.h:2468
CINOSTaskExMsgDefaultParam * AddDefaultParam(const char *apName, T aValue)
add default param
Definition cinostaskex.h:2456
void SetBusTicks(uint64 auBusTicks)
set busticks
Definition cinostaskex.h:733
void SetSender(CINOSTask *apSender)
set pointer to sender
Definition cinostaskex.h:573
bool GetPending() const
get pending flag
Definition cinostaskex.h:654
void SetFlushResistent()
set flush resistant flag
Definition cinostaskex.h:672
CINOSSync * GetSync() const
get pointer to sync object
Definition cinostaskex.h:633
void MoveParamsFromMsg(CINOSTaskExMsg *apMsg)
Moves all params of apMsg to this message.
bool GetSingle() const
get single flag
Definition cinostaskex.h:678
uint32 GetRetValue() const
get return value. !!!OBSOLETE!!! Will be removed soon
Definition cinostaskex.h:614
CINOSTaskExMsgTrigger * GetTrigger()
get message trigger
Definition cinostaskex.h:554
void DontCreateMcLogTraces()
char * GetResult()
get string result
void SetAlwaysSyncSignal()
Set notrace flag.
Definition cinostaskex.h:707
void SetIdInfo(tMsgId auIdInfo)
set id info
Definition cinostaskex.h:748
bool GetCanceled() const
get canceled flag
Definition cinostaskex.h:660
void SetId(tMsgId aId)
set message id
Definition cinostaskex.h:585
CINOSTaskExMsg(uint32 auMsgType, const char *apMsgName, uintptr auMsgCode=0)
constructor
void SetPersistent()
set persistent flag
Definition cinostaskex.h:666
void SetUser(void *apUser)
set pointer to user data
Definition cinostaskex.h:576
CINOSTaskEx * GetReceiver() const
get pointer to receiver task
Definition cinostaskex.h:622
CINOSTaskExMsgParam * GetFirstResultPtr()
Get pointer to iterate over results.
void SetMsgSubCode(uint32 auMsgSubCode)
get message code
Definition cinostaskex.h:600
void AddResults(CINOSTaskExMsgParam *apMsgParam)
void SetAlwaysReply()
Set notrace flag.
Definition cinostaskex.h:712
CINOSTaskExMsgParam * GetParam(const char *apName)
get name
void SetData(CINOSMcDataInst *apData)
set pointer to data
Definition cinostaskex.h:579
bool GetPersistent() const
get persistent flag
Definition cinostaskex.h:669
uint8 GetBusId() const
get busid
Definition cinostaskex.h:745
void SetName(const char *apName)
set name
Definition cinostaskex.h:715
void FstResult()
reset internal pointer to first result
Definition cinostaskex.h:452
~CINOSTaskExMsg()
destructor
void SetCanceled()
set canceled flag
Definition cinostaskex.h:663
void RemAndTrigger(uint32 auIndex=0, bool abDelete=true)
remove 'and' message trigger
void AndTrigger(const char *apSynName, real64 arParamValue, const char *apParamType, uint64 auBusTicks, uint8 auBusId)
add 'and' message trigger
uint32 GetParamCnt() const
get number of param's
Definition cinostaskex.h:448
CINOSTaskExMsgParam * AddParam(const char *apName, char *apValue)
add named 'char*' param
Definition cinostaskex.h:966
virtual CMcResult GetCallResult() override
get sync call result
Definition cinostaskex.h:1972
virtual void MsgDone(CINOSTaskExMsg *apMsg, tMcAppError aAppError=0)
message done -> reply or signal initiator if requested
virtual void AddProp(const char *apName, nvuint32 &aMember, uint32 auDefault, uint32 auMin, uint32 auMax, const char *apUnit, uint32 auCharacteristics=defCharShowDec)
add nvuint32 property to the 'Prop' folder
char * GetMsgName(CINOSTaskExMsg *apMsg)
get message name
static void RemoveMsgDoneHook(CINOSHook *apHook)
Remove a previously added MsgDone() hook. This function is thread-safe.
bool GetOptionStr(const char *apParams, const char *apBase, char *apResult, uint32 auSize) const
return option string belonging to apBase 'apBase=optionstring'
virtual void AddParam(const char *apName, const char *apValue, const char *apComboData, uint32 auFlags=0)
add string param with combobox data
virtual void PostDispatchMsg()
PostDispatchMsg.
Definition cinostaskex.h:1647
bool GetOption(const char *apName) const
return true if option 'aName' is requested in params
virtual const CINOSTaskExMsg * GetCommandMsg(const char *apName)
get pointer to command apName or NULL if not found
Definition cinostaskex.h:1120
virtual ~CINOSTaskEx()
destructor
friend void MsgEventFlg(CINOSTaskExMsg *apMsg, const char *apName, uint32 auFlags, uint32 auMs)
put event
virtual void RemChildModule(const char *apModuleName)
remove child command
Definition cinostaskex.h:1907
virtual void iUsrMsgDone(CINOSTaskExMsg *apMsg)
internal user message done, used to handle message dones from other
virtual void iSetIdleTimeout(CINOSTaskExMsg *apMsg)
internal set idle timeout
friend CMcResult ModifyMessageEx(tMsgId aiId, uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData *apInfo, const char *apProperties)
modify message
virtual void AddCommand(const char *apName, uint32 auCode, uint32 auType=eMsgCmd)
add internal command
virtual CINCOObject * GetFlagsObj()
get pointer to 'Flags' inco folder
Definition cinostaskex.h:1239
virtual void FlushTmd(tMsgId aId=0)
remove triggered messages auId of type eMsgCmd or all if auId==0
const char * GetAliasName() const
get pointer to alias name
Definition cinostaskex.h:991
uint32 m_uCriticals
task critical sections
Definition cinostaskex.h:2113
bool IsCmdDeferred(uint32 auCmdCode)
return true if task has a deferred command 'auCmdCode'
virtual const char * GetIncoName()
get requested inco folder name
virtual void RemProp(const char *apName)
remove object property apName
static void INCOItemToMessageResult(CINCOItem *apItem, const char *apParentPath, CINOSTaskExMsg *apMsg)
Add value of INCO item to results of apMsg.
virtual void AddParam_int32(const char *apName, const char *apUnit, int32 aiValue, int32 aiMin, int32 aiMax, uint32 auChar, uint32 auFlags=0)
Add int32 parameter to command. You can use INT32MIN/MAX to allow all possible values.
void ClrDispatchFlag(uint32 auFlag)
clr dispatch flag. see SetDispatchFlag for further information
Definition cinostaskex.h:1082
static CINOSHook * AddMsgDoneHook(void *apHandler, void *apObject=NULL)
Add a hook to call some member function when MsgDone() gets called. This function is thread-safe.
bool GetOption(const char *apBase, const char *apName) const
return true if option 'apBase=aName' is requested in params
virtual const char * GetTreeName()
get requested binary tree name
Definition cinostaskex.h:999
virtual void AdjTrigger(CINOSTaskExMsg *apMsg)
adjust trigger
void SetAliasName(const char *apAlias)
set alias name
Definition cinostaskex.h:994
virtual void AddActual(const char *apName, nvlstring &aMember, const char *apDefault=nullptr)
add nvlstring to the 'Act' folder
virtual void iSetFlag(CINOSTaskExMsg *apMsg)
internal switch core
virtual void iMessageRemove(CINOSTaskExMsg *apMsg)
internal message remove
virtual bool DispatchReply(CINOSTaskExMsg *apMsg)
dispatch reply message
void RemDeferredMsg(CINOSTaskExDeferredMsg *apDef)
remove deferred message from list
virtual void AddParam(const char *apName, const char *apValue, uint32 auFlags=0)
add param to command
bool GetOptionStr(const char *apBase, char *apResult, uint32 auSize) const
return option string belonging to apBase 'apBase=optionstring'
CINOSTaskEx(const char *apName, const char *apType, const char *apParam=0, uint32 aStackSize=defDefaultStackSize, uint32 aPriority=defLowestPriority, bool aFloatingPoint=true, uint32 aTimeSlice=defDefaultTimeSlice, bool aInterruptsDisabled=false)
constructor
static void CallMsgDoneHooks(CINOSTaskExMsg *apMsg, ERplId aRplId, tMcAppError aAppError)
Call hooks to notify observers about MsgDone, passing all arguments for inspection....
void ReplyParam(uint32 auReply, T)
reply to actual message with param
Definition cinostaskex.h:2553
virtual void AddProp(const char *apName, nvreal64 &aMember, real64 arDefault, real64 arMin, real64 arMax, const char *apUnit, uint32 auDigits, uint32 auCharactristics=defCharShowFix)
add nvreal property to the 'Prop' folder
bool GetOptionNbr(const char *apBase, uintnbr &auNumber) const
return option number belonging to apBase 'apBase=number'
uint32 GetState()
get state
virtual void MsgFatal(CINOSTaskExMsg *apMsg, tMcAppError aAppError)
message fatal error
friend CMcResult ModifyMessageEx(tMsgId aiId, uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, const char *apProperties)
modify message
virtual bool IsCmdAllowed(CINOSTaskExMsg *apMsg)
Definition cinostaskex.h:982
virtual void iCancelDeferred()
internal cancel all deferred messages
virtual void MsgCanceled(CINOSTaskExMsg *apMsg, tMcAppError aAppError=0)
message canceled
uint32 GetSourceId()
get source id
Definition cinostaskex.h:1009
virtual CINCOObject * SetCmdObj(CINCOObject *apCmd)
set pointer to 'Cmd' inco folder and return old one
virtual CMcResult PostMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, const char *apText, CINOSMcData *apInfo=0)
post message
friend CMcResult PostMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, const char *apText, CINOSMcData *apInfo)
post message
CINOSTaskExDeferredMsg * GetDeferredMsg(tMsgId auReplyId)
get pointer to deferred message with given reply id
static constexpr int GetLastUsr()
return last taskex user id
Definition cinostaskex.h:1313
virtual bool DispatchEvent(CINOSTaskExMsg *apMsg)
dispatch event message
virtual tMsgId MsgDefer(CINOSTaskExMsg *apMsg, tMsgId aMsgId, void *apHandler=0, void *apObject=0, bool abHandlesCommands=false)
virtual void MsgCompleted(CINOSTaskExMsg *&apMsg)
virtual void MsgStopped(CINOSTaskExMsg *apMsg, tMcAppError aAppError=0)
message stopped
void SetCritical(uint32 auCritical)
set critical
Definition cinostaskex.h:1959
virtual const CINOSTaskExCmdHookBase * GetCommandHook(const char *apName)
get pointer to command hook apName or NULL if not found
Definition cinostaskex.h:1224
virtual CINCOObject * GetCmdObj()
get pointer to 'Cmd' inco folder
virtual bool DispatchOther(CINOSTaskExMsg *apMsg)
dispatch other message
virtual void AddActual(const char *apName, nvstring &aMember, const char *apDefault=nullptr, const char *apComboData=nullptr)
add nvstring to the 'Act' folder
virtual void iDeleteCommand(CINOSTaskExMsg *apMsg)
internal delete command (only used for commands of type call)
virtual CINCOObject * GetActObj()
get pointer to 'Act' inco folder
void NvUpdate()
nvram update
virtual CINOSTaskExMsg * CreateMsg(CINOSTaskExMsg *apMsg, CINOSMcDataInst *apData, const char *apAlias)
create message from apMsg
virtual tMsgId PutCmd(uint32 auCommand)
put command to queue and return command id
bool GetFlag(const char *apName) const
return true if flag 'aName' is requested in params
virtual void iFailure(CINOSTaskExMsg *apMsg)
internal command handling failure
virtual void AddActual(CINCOItem *apItem)
add actual to the 'Act' folder
virtual CINCOObject * GetRegister(CINCOObject *apObject=0)
get pointer to inco registration
uint32 m_uPropOrder
prop folder order
Definition cinostaskex.h:2243
virtual void iStopMsg(CINOSTaskExMsg *apMsg)
stop message
virtual void AddParam(const char *apName, const char *apUnit, uint32 auValue, uint32 auMin, uint32 auMax, uint32 auChar, uint32 auFlags=0)
Add uint32 parameter to command. You can use UINT32MIN/MAX to allow all possible values.
virtual void iSetProp(CINOSTaskExMsg *apMsg)
internal set property
std::atomic< uint64 > m_uFlags
task flags
Definition cinostaskex.h:2109
virtual void MsgPaused(CINOSTaskExMsg *apMsg, tMcAppError aAppError=0)
message paused. Deprecated!
virtual bool DispatchInternal(CINOSTaskExMsg *apMsg)
dispatch internal message
virtual void MsgIgnored(CINOSTaskExMsg *apMsg, tMcAppError aAppError=0)
message ignored
virtual void iShutdown(CINOSTaskExMsg *apMsg)
internal shutdown task
virtual void AddProp(const char *apName, nvlstring &aMember, const char *apDefault="")
add nvlstring property to the 'Prop' folder
CINOSTaskEx * GetParent() const
get parent
Definition cinostaskex.h:1013
virtual void MsgFailed(CINOSTaskExMsg *apMsg, tMcAppError aAppError=0)
message failed
virtual CMcResult SetIdleTimeout(uint32 auIdleTimeout, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
virtual uint32 Shutdown(CINOSSync *apSync=DF_INOS_SYNCHRONOUS) override
shutdown task
virtual void PutReply(CINOSTaskExMsg *apMsg, tMsgId aMsgId)
put reply message to queue
static tMsgId GetMsgId(uint32 auId, uint32 auMask)
void HandleTriggerMsg(CINOSTaskExMsg *apMsg, EDispatchStyle aeDispStyle)
handle message with a trigger
virtual CMcResult PutMsg(CINOSTaskExMsg *apMsg, tMsgId aMsgId=0)
put message to queue and return command id
const char * GetType() const
get pointer to type
Definition cinostaskex.h:988
bool GetCommand(const char *apName) const
return true if command 'aName' is requested in params
int operator<(CINOSTaskEx &aTaskEx)
binary tree operators
Definition cinostaskex.h:1603
virtual void AddProp()
add object property to the 'Prop' folder
uint32 GetDispatchFlag() const
set dispatch flag. see SetDispatchFlag for further information
Definition cinostaskex.h:1085
static tMsgId GetMsgId()
get system wide unique message id
bool GetOption(uint32 auOption) const
return true if option available
Definition cinostaskex.h:1044
void MptHook()
measure hook
virtual void AddProp(const char *apName)
add object property to the 'Prop' folder
bool GetRequest(uint32 auRequest) const
return true if request set
Definition cinostaskex.h:1055
friend void MsgEvent(CINOSTaskExMsg *apMsg, const char *apName, uint32 auMs)
put event
virtual CINOSTaskExMsg * CreateMsgFromCommand(const char *apName, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
create a new message from command name or NULL if command not found. To call a command directly the t...
friend tMcAppError SendMessageEx(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, const char *apProperties)
send message
uint32 m_uActOrder
act folder order
Definition cinostaskex.h:2245
friend CMcResult ModifyMessage(tMsgId aiId, uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData *apInfo, const char *apText)
modify message
CINCOObject * m_pRegister
pointer to my inco registration
Definition cinostaskex.h:2105
friend void MsgEvent(CINOSTaskExMsg *apMsg, const char *apName, uint64 auTicks, uint8 auBusId)
return an informational event to the sender of apMsg
virtual void MsgDonePnd(CINOSTaskExMsg *apMsg, ERplId aRplId, tMcAppError aAppError=0)
message done (and set 'pending' flag)
virtual void iRemCommand(CINOSTaskExMsg *apMsg)
internal add command
virtual void AddProp(CINCOItem *apItem)
add property to the 'Prop' folder
virtual CMcResult PostMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData *apInfo=0)
post message
virtual void iGetActual(CINOSTaskExMsg *apMsg)
internal get actual
bool GetOptionEx(const char *apBase) const
virtual void _AddCommand(CINOSTaskExMsg *apMsg, CINCOObject *apMsgCmdObj, int16 aiOrder=0)
add inco command
friend CMcResult PostMessageEx(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData *apInfo, const char *apProperties)
post message
bool GetOption(const char *apParams, const char *apBase, const char *apName) const
return true if option 'apBase=aName' is requested in apParams
friend CMcResult PostMessageEx(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, const char *apProperties)
post message
virtual void SetTreeName(const char *apTreeName)
set requested binary tree name
Definition cinostaskex.h:1755
virtual void PostCreate(void *apParent)
called after creation
uint32 m_uRequests
task requests
Definition cinostaskex.h:2111
CINOSTaskExMsg * GetDeferredMsgCmd(uint32 auCmdCode)
get pointer to deferred message with given command code
friend tMcAppError SendMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, const char *apText, CINOSMcData *apInfo)
send message
virtual void MsgDone(CINOSTaskExMsg *apMsg, ERplId aRplId, tMcAppError aAppError=0)
message done -> reply or signal initiator if requested
virtual void AddParam_uint64(const char *apName, const char *apUnit, uint64 auValue, uint64 auMin, uint64 auMax, uint32 auChar, uint32 auFlags=0)
Add uint64 parameter to command. You can use UINT64MIN/MAX to allow all possible values.
friend CMcResult PostMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData *apInfo)
post message
virtual void RemActual(const char *apName)
remove object actual apName
CINOSMcMessage * GetMessageHndEx()
get message handler
friend CMcResult AckMessage(const CINOSTask *apOwner, uint32 auMsgType, uint32 auFlag)
ack message
virtual CINOSTaskQueue * GetMsgQueue()
get pointer to message queue
Definition cinostaskex.h:1113
void SetParent(CINOSTaskEx *apParent)
set parent pointer
Definition cinostaskex.h:1933
virtual void AddActual(const char *apName, nvbool &aMember, bool abDefault, uint32 auCharactristics=defCharShowDec)
add nvbool property to the 'Act' folder and register it as checkbox.
virtual void iAddProp(CINOSTaskExMsg *apMsg)
internal set property
virtual void AddChildModule(const char *apModuleName)
add child command
Definition cinostaskex.h:1905
const char * GetParam() const
get pointer to param
Definition cinostaskex.h:985
uint64 GetFlags() const
return all flags
Definition cinostaskex.h:1052
friend tMcAppError SendMessage(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData *apInfo)
send message
virtual void AddActual()
add object property to the 'Act' folder
virtual CMcResult Startup(real64 arStage)
startup task (always asynchronous)
static void INCOItemsToMessageResults(CINCOItem *apItem, const char *apParentPath, CINOSTaskExMsg *apMsg)
Add the value of the INCO item apItem and all its children (if any) as named results to the message (...
bool AddToInputQueue(CINOSTaskExMsg *apMsg, uint32 auFlags=0)
virtual bool DispatchCmd(CINOSTaskExMsg *apMsg)
dispatch command message
virtual void iMessageAcknowledge(CINOSTaskExMsg *apMsg)
internal message acknowledge
void SetMessageHnd(CINOSMcMessage *apMessageHnd)
set message handler
Definition cinostaskex.h:1321
virtual const char * GetStateText()
return actual state text
virtual bool iPostStartup()
internal post startup
uint32 m_uOptions
task options
Definition cinostaskex.h:2107
void RegisterHook(CINOSTaskExCmdHookBase *apHook)
register a command hook which can be set to a command later
virtual void RemChildCommand(const char *apModuleName, const char *apFunctionName)
remove child command
Definition cinostaskex.h:1902
virtual CMcResult ClrFlag(const char *apName, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
clear flag apName
virtual void SetState(uint32 auState)
set state
Definition cinostaskex.h:974
friend CMcResult ReleaseListen()
request listen
virtual bool DispatchSub(CINOSTaskExMsg *apMsg)
dispatch sub message
virtual void iHandleIdleTimeout()
internal handle idle timeout
virtual void Action() override
main action
CINOSTaskExMsg * GetTmpMsg()
Get temporary message (used for subclasses overriding AddCommand)
Definition cinostaskex.h:2050
bool GetCritical(uint32 auCritical) const
return true if critical set
Definition cinostaskex.h:1058
virtual CMcResult ModifyMessage(tMsgId aiId, uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData *apInfo=0, const char *apText=nullptr)
modify message
virtual CMcResult PutMsgEx(CINOSTaskExMsg *apMsg, uint32 auFlags, tMsgId aMsgId=0)
Put a message with flags to adjust behaviour.
virtual CINCOObject * GetPropObj()
get pointer to 'Prop' inco folder
static uint32 iSetIncoItemsFromParamStruct(CINCOItem *apIncoItem, long alOffset, CINOSTaskExMsgParam *apParams, bool abOverwrite, inosName128 &oErrorItemName)
Helper function for commands that set INCO items from a parameter stucture.
virtual bool DispatchMessage(CINOSTaskExMsg *apMsg)
dispatch message message
virtual void AddParam_int64(const char *apName, const char *apUnit, int64 aiValue, int64 aiMin, int64 aiMax, uint32 auChar, uint32 auFlags=0)
Add int64 parameter to command. You can use INT64MIN/MAX to allow all possible values.
void AddParam(CINCOItem *apItem, T aValue, uint32 auFlags=0)
Definition cinostaskex.h:1881
void ClrCritical(uint32 auCritical)
clr critical
Definition cinostaskex.h:1962
virtual void MsgError(CINOSTaskExMsg *apMsg, tMcAppError aAppError)
message error
virtual void ClrFlag(uint64 auFlag, bool abUpdateState=false)
clr flag
Definition cinostaskex.h:1948
virtual void AddEllipsis()
Add ellipsis to command.
virtual void SetFlag(uint64 auFlag, bool abUpdateState=false)
set flag
Definition cinostaskex.h:1943
uint8 GetRequestedPriority()
get requested priority
Definition cinostaskex.h:2000
virtual void iStartup(real64 arStage)
internal startup task
virtual void AddParam(const char *apName, const char *apComboData, uint32 auValue, uint32 auMin, uint32 auMax, const char *apUnit, uint32 auChar, uint32 auFlags=0)
Add combo box parameter to command. You can use UINT32MIN/MAX to allow all possible values.
void SetDispatchFlag(uint32 auFlag)
Definition cinostaskex.h:1079
virtual void AddParam(const char *apName, bool abValue, uint32 auChar, uint32 auFlags=0)
Add parameter of type bool to command.
friend CINOSMcNvRamGrp * GetNvRamGrp(bool abSearch)
get nvram group
CINOSTaskEx(const char *apName, const char *apParam=0, uint32 aStackSize=defDefaultStackSize, uint32 aPriority=defLowestPriority, bool aFloatingPoint=true, uint32 aTimeSlice=defDefaultTimeSlice, bool aInterruptsDisabled=false)
constructor
void iCheckIdleTimeout()
internal check idle timeout
virtual CMcResult SetFlag(const char *apName, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
set flag apName
virtual void AddCommand(const char *apName, uint32 auCode, CINCOProcedure *apProc)
add inco command
virtual void AddChildCommand(const char *apModuleName, const char *apFunctionName, CINOSTaskExMsg *apCmdMsg, bool abRegisterInco=true)
add child command
Definition cinostaskex.h:1897
virtual CMcResult StopMsg(tMsgId atMsgId, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
stop message
friend CMcResult RemMessage(const CINOSTask *apOwner)
rem message
virtual void AddProp(const char *apName, nvstring &aMember, const char *apDefault="", const char *apComboData=NULL)
add nvstring property to the 'Prop' folder
virtual void AddCommand(CINOSTaskExMsg *apMsg, CINCOObject *apMsgCmdObj)
add inco command
virtual uint32 iAddRegisteredCommands()
add registered commands (done between startup and post startup)
static constexpr int GetLastCmd()
return last taskex command id
Definition cinostaskex.h:1309
virtual void iStartup(CINOSTaskExMsg *apMsg)
internal startup task
virtual void AddProp(const char *apName, nvbool &aMember, bool abDefault, uint32 auCharactristics=defCharShowDec)
add nvbool property to the 'Prop' folder and register it as checkbox.
virtual void iGetCommands(CINOSTaskExMsg *apMsg)
internal get commands
virtual void iGetProp(CINOSTaskExMsg *apMsg)
internal get property
friend CMcResult AckMessage(tMsgId aMsgId, uint32 auFlags)
ack message
virtual void iMessageModify(CINOSTaskExMsg *apMsg)
internal message modify
virtual void iAddCommand(CINOSTaskExMsg *apMsg)
internal add command
CINCOObject * m_pNvInitObj
pointer to temporary nvobj
Definition cinostaskex.h:2241
bool GetOptionNbr(const char *apParams, const char *apBase, uintnbr &auNumber) const
return option number belonging to apBase 'apBase=number'
void RequestCritical()
request critical section
Definition cinostaskex.h:1976
virtual void iSetActual(CINOSTaskExMsg *apMsg)
internal set actual
ERplId
reply id's
Definition cinostaskex.h:1411
virtual void MsgDone(tMsgId aMsgId, tMcAppError aAppError=0)
message done (used for deferred messages)
virtual void RemCommand(const char *apName)
remove command
virtual void MsgInComplete(CINOSTaskExMsg *apMsg, tMcAppError aAppError=0)
message incomplete
virtual void MsgRejected(CINOSTaskExMsg *apMsg, tMcAppError aAppError=0)
message rejected
virtual void MsgDonePnd(CINOSTaskExMsg *apMsg, tMcAppError aAppError=0)
message done (and set 'pending' flag)
virtual CINCOObject * GetStatObj()
get pointer to 'Stat' inco folder
virtual void AddActual(const char *apName)
add object property to the 'Act' folder
CINOSTaskExMsg * GetActMsg()
get pointer to actually handled message
Definition cinostaskex.h:1117
virtual bool PreDestroy(bool &bDeleteSelf)
called before destruction (return false if destruction not allowed)
virtual void ClrRequest(uint32 auRequest)
clr request
Definition cinostaskex.h:1956
bool IsCmdBusy(uintptr auCmdCode)
return true if task is actual command 'auCmdCode' busy
virtual void SetCallResult(CMcResult aResult) override
set sync call result
Definition cinostaskex.h:1969
CMcResult CallCommand(const char *apName, ParamType... aParams, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
calls a command given the command name. The function can be called using less than defined parameters...
Definition cinostaskex.h:1145
virtual void iAddActual(CINOSTaskExMsg *apMsg)
reply to actual message
void RegisterCommand(CINOSTaskExCmdBase *apCommand)
register a command that will be added at startup (depending in the option)
uint32 m_uState
task state
Definition cinostaskex.h:2115
virtual bool DispatchUser(CINOSTaskExMsg *apMsg)
dispatch user message
bool GetFlag(uint64 auFlag) const
return true if flag available
Definition cinostaskex.h:1049
virtual bool PreDispatchMsg(CINOSTaskExMsg *apMsg)
Pre dispatcher.
virtual void AddCommand(CINOSTaskExMsg *apMsg, uint64 aChar=0, uint16 aKeyLevel=cKeyLevelMin, bool abRegisterInco=true)
add inco command
virtual tMsgId MsgDefer(CINOSTaskExMsg *apMsg, void *apHandler=0, void *apObject=0, bool abHandlesCommands=false)
defer message and return according MsgId
virtual void AddActual(const char *apName, nvreal64 &aMember, real64 arDefault, real64 arMin, real64 arMax, const char *apUnit, uint32 auDigits)
add nvreal to the 'Act' folder
virtual CINCOObject * GetRequestsObj()
get pointer to 'Requests' inco folder
Definition cinostaskex.h:1242
void SetRequestedPriority(uint8 auPrio)
set requested priority
Definition cinostaskex.h:2003
virtual CINCOObject * GetOptionsObj()
get pointer to 'Options' inco folder
Definition cinostaskex.h:1236
virtual void AddParam(const char *apName, real64 arValue, real64 arMin, real64 arMax, const char *apUnit, uint32 auChar, uint32 auFlags=0)
add param to command. You can use REAL64MIN/MAX to allow all possible values.
virtual void AddActual(const char *apName, nvuint32 &aMember, uint32 auDefault, uint32 auMin, uint32 auMax, const char *apUnit, uint32 auCharacteristics=defCharShowDec)
add nvuint32 to the 'Act' folder
virtual void SetRequest(uint32 auRequest)
set request
Definition cinostaskex.h:1953
virtual void iMessageAdd(CINOSTaskExMsg *apMsg)
internal message add
friend tMcAppError SendMessageEx(uint32 auMsgType, uint32 auMsgCode, uint32 auFlags, CINOSMcData *apInfo, const char *apProperties)
send message
friend CINOSMcMessage * GetMessageHnd(bool abSearch)
get message handler
void ReleaseCritical()
release critical section
Definition cinostaskex.h:1979
friend CMcResult RequestListen(uint32 auMsgType, uint32 auSetId, uint32 auAckId)
request listen
friend void MsgEventFlg(CINOSTaskExMsg *apMsg, const char *apName, uint64 auTicks, uint8 auBusId, uint32 auFlags)
return an informational event to the sender of apMsg
virtual CINOSSync * GetSync() override
get task sync object
Definition cinostaskex.h:1966
virtual CINCOObject * GetCriticalsObj()
get pointer to 'Criticals' inco folder
Definition cinostaskex.h:1245
friend CMcResult AckMessage(uint32 auMsgCode, uint32 auFlags, uint32 auMask)
ack message
virtual void iClrFlag(CINOSTaskExMsg *apMsg)
internal clear flag
virtual bool DispatchTmd(CINOSTaskExMsg *apMsg)
dispatch triggered command message
void Reply(CINOSTaskExMsg *apMsg, uint32 auReply, tMcAppError aAppError=0)
reply to actual message
void Create()
do main creation work
Definition cinostask.h:52
#define DF_INOS_TIMINIG_CHECKS_SUSPEND_MAX_TIME_US
Definition inosdefault.h:257
#define DF_INOS_MAX_CORES
Definition inosdefine.h:164
uint32 INOS_MCMSG_CODE_TSKEX_PARAM_MISSING
Definition inoserror.h:1681
uint32 INOS_MCMSG_CODE_TSKEX_UNKNOWN
Definition inoserror.h:1681
uint32 INOS_MCMSG_CODE_TSKEX_WRONG_PARAMS
Definition inoserror.h:1681
#define INOS_OR(variable, mask)
Definition inosmacro.h:201
#define DF_INOS_ASYNCHRONOUS
Definition inosmacro.h:337
#define DF_INOS_SYNCHRONOUS
Definition inosmacro.h:332
#define ASSERT_ALWAYS(f)
Definition inosmacro.h:696
#define INOS_AND(variable, mask)
Definition inosmacro.h:210
int32 tMsgId
Definition inostype.h:186