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)
316 { m_pTask =
apTask; m_pMsg = apMsg; m_pNext=0;};
344 m_pObject =
apObject; m_pNext=0; m_pPrev = 0;
357 bool m_bHandlesCommands;
449 {
return m_uParamCnt;};
453 { m_pTmpResult = 0;};
555 {
return m_pTrigger;};
558 {
if (m_pTrigger) {
delete m_pTrigger; m_pTrigger = 0;}};
598 {
return m_uMsgCode;};
604 {
return m_uMsgSubCode;};
606 {
return m_uType == CINOSTaskExDef::eMsgCall ?
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;};
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;};
731 {
return &m_cInfo[0];};
737 {
return m_uBusTicks;};
740 {
return m_uQueueTicks;};
746 {
return (
uint8)m_uBusId;};
752 {
return m_uIdInfo;};
770 bool InINCOVContext()
const {
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)
814 #if defined(INOS_LUAINTERPRETER)
815 friend class CINOSMcLua;
820 friend class CINOSMcMessage;
821 friend class CMcResult;
822 friend class CINOSTaskExMsgTest;
823 friend class CINOSTaskExMsgHistory;
864 #if defined(INOS_TASKEXMSG_NAME_EXTENDED_LENGTH)
921 bool m_bCreateMcLogTraces;
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];};
1000 {
return m_pTreeName;};
1006 eSourceIdFastLoad = 253,
1010 {
return m_uSourceId; };
1014 {
return m_pParent;};
1073 uint32 GetIdleTimeout()
const
1074 {
return m_uIdleTimeout; };
1086 {
return m_uDispatchFlags; };
1090 #ifdef INOS_MULTICORE
1114 {
return m_pMsgQueue;};
1121 {
return m_pCommands->Find(
apName);};
1144 template<
typename... ParamType>
1180 for(uint32
uIx = 0;
uIx <
sizeof...(aParams);
uIx ++) {
1184 if((
pCmdMsg->GetFlags() & CINOSTaskExMsg::eMsgFlgHasEllipsis)
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;};
1310 return eCmdINOSTaskExLast;
1314 return eUsrINOSTaskExLast;
1382#if defined(INOS_TIMINIG_CHECKS_SUSPEND)
1398 eMsgCmd=CINOSTaskExDef::eMsgCmd,
1399 eMsgCall=CINOSTaskExDef::eMsgCall,
1400 eMsgEvent=CINOSTaskExDef::eMsgEvent,
1401 eMsgReply=CINOSTaskExDef::eMsgReply,
1402 eMsgUser=CINOSTaskExDef::eMsgUser,
1403 eMsgSub=CINOSTaskExDef::eMsgSub,
1404 eMsgInternal=CINOSTaskExDef::eMsgInternal,
1405 eMsgMessage=CINOSTaskExDef::eMsgMessage
1410 eRplOk=CINOSTaskExDef::eRplOk,
1411 eRplSkipped=CINOSTaskExDef::eRplSkipped,
1412 eRplInComplete=CINOSTaskExDef::eRplInComplete,
1413 eRplIgnored=CINOSTaskExDef::eRplIgnored,
1414 eRplPaused=CINOSTaskExDef::eRplPaused,
1415 eRplStopped=CINOSTaskExDef::eRplStopped,
1416 eRplCanceled=CINOSTaskExDef::eRplCanceled,
1417 eRplRejected=CINOSTaskExDef::eRplRejected,
1418 eRplFailed=CINOSTaskExDef::eRplFailed,
1419 eRplError=CINOSTaskExDef::eRplError,
1420 eRplFatal=CINOSTaskExDef::eRplFatal,
1421 eRplTimeout=CINOSTaskExDef::eRplTimeout
1426 eCmdINOSTaskExFirst,
1430 eCmdShutdownRequest,
1441 eUsrINOSTaskExFirst,
1450 eIntINOSTaskExFirst,
1469 eMessageAcknowledge,
1494 eOptOwner = 0x00000001,
1495 eOptStat = 0x00000002,
1496 eOptMsg = 0x00000004,
1497 eOptNvR = 0x00000008,
1498 eOptOvld = 0x0000010,
1499 eOptCaS = 0x0000020,
1500 eOptResTsk2 = 0x0000040,
1501 eOptResTsk3 = 0x0000080
1506 eFlgError = 0x00000001,
1507 eFlgFatal = 0x00000002,
1508 eFlgEmergency=0x00000004,
1509 eFlgSTO = 0x00000008,
1510 eFlgResTsk4 = 0x00000010,
1511 eFlgResTsk5 = 0x00000020,
1512 eFlgResTsk6 = 0x00000040,
1513 eFlgResTsk7 = 0x00000080
1518 eReqResTsk0 = 0x00000001,
1519 eReqResTsk1 = 0x00000002,
1520 eReqResTsk2 = 0x00000004,
1521 eReqResTsk3 = 0x00000008,
1522 eReqResTsk4 = 0x00000010,
1523 eReqResTsk5 = 0x00000020,
1524 eReqResTsk6 = 0x00000040,
1525 eReqResTsk7 = 0x00000080
1530 eCrtSendMsg = 0x00000001,
1531 eCrtResTsk1 = 0x00000002,
1532 eCrtResTsk2 = 0x00000004,
1533 eCrtResTsk3 = 0x00000008,
1534 eCrtResTsk4 = 0x00000010,
1535 eCrtResTsk5 = 0x00000020,
1536 eCrtResTsk6 = 0x00000040,
1537 eCrtResTsk7 = 0x00000080
1542 eDispFlagINCOSync = 0x00000001,
1546 enum eTaskExMsgFlags {
1547 eMsgFlagNone = 0x00000000,
1548 eMsgFlagNoWait = 0x00000001,
1552 enum EDispatchStyle {
1562 friend void _INI_0000_CINOSTaskEx();
1563 friend void _INI_0201_CINOSTaskEx();
1564 friend void _INI_0510_CINOSTaskEx();
1565 friend class CINOSTaskExState;
1569 #if defined(INOS_COORDINATOR_SUPPORT)
1572 friend class CINOSMcLua;
1573 friend class CINOSMcMessage;
1575 friend class CINOSTaskExMsgTest;
1576 friend class CINOSEventLogger;
1617 static void HandleTicksTriggers(uint8
auBusId);
1628 inline uint32 IsLevelActive(
const uint32
auBitNumber)
const {
1681 #ifdef INOS_MULTICORE
1688 virtual void iiSetFlag(
const char*
apName);
1878 template <
typename T>
1887 m_pActMsgObj->Add(
apItem, (
int16)(m_uActParamCount++));
1890 void ProcedureArgCheck(CINCOObject&
aObject,
1965 {
return &m_sSyncCall; };
1968 { m_SyncCallResult =
aResult;};
1971 {
return m_SyncCallResult;};
1999 {
return m_uReqPriority; };
2002 { m_uReqPriority =
auPrio; };
2050#if defined(INOS_TIMINIG_CHECKS_SUSPEND)
2086 inosName32 m_cAliasName;
2088 char m_cParam[1024];
2094 CINOSMcMessage* m_pMessageHnd{};
2100 const char* m_pTreeName;
2119 uint32 m_uIdleTimeout;
2120 uint32 m_uIdleTimeoutAct;
2123#if defined(INOS_TIMINIG_CHECKS_SUSPEND)
2131 #if defined(INOS_KERNEL_MSGID_64)
2132 static std::atomic<tMsgId> m_MsgId;
2149 CINCOObject* m_pActMsgObj;
2151 uint32 m_uActParamCount;
2167 int16 m_iCurCmdOrder = 1;
2169 int16 m_iCurCmdRegOrder = 1;
2178 uint64 m_uMptTimeBase;
2182 uint64 m_uStaTime[eStaINOSTaskExLast];
2184 nvuint64* m_pNvStaTime[eStaINOSTaskExLast];
2186 uint8 m_uNvStaIndex;
2190 uint8 m_uReqPriority;
2193 CINCOObject* m_pCmd;
2195 CINCOObject* m_pProp;
2197 CINCOObject* m_pOptions;
2199 CINCOObject* m_pFlags;
2201 CINCOObject* m_pRequests;
2203 CINCOObject* m_pCriticals;
2205 CINCOObject* m_pAct;
2207 CINCOObject* m_pStat;
2209 CINCOObject* m_pStatState;
2211 CINCOObject* m_pStatCmd;
2222 CMcResult m_SyncCallResult;
2228 uint32 m_uDispatchFlags;
2231 uint32 m_uPutMsgFlags;
2258 struct SDynamicItem {
2288 m_pComboData =
nullptr;
2292 SDynamicItem(SDynamicItem&&
aItem) :
2293 m_pMcValue(
aItem.m_pMcValue),
2294 m_pName(
aItem.m_pName),
2295 m_pUnit(
aItem.m_pUnit),
2296 m_pComboData(
aItem.m_pComboData)
2300 aItem.m_pMcValue =
nullptr;
2301 aItem.m_pName =
nullptr;
2302 aItem.m_pUnit =
nullptr;
2303 aItem.m_pComboData =
nullptr;
2308 if(m_pMcValue !=
nullptr) {
2311 if(m_pName !=
nullptr) {
2314 if(m_pUnit !=
nullptr) {
2317 if(m_pComboData !=
nullptr) {
2318 delete [] m_pComboData;
2329 std::unordered_map <std::string, SDynamicItem> m_DynamicProps;
2330 std::unordered_map <std::string, SDynamicItem> m_DynamicActuals;
2335 uint32 m_uSourceIdChild;
2337 static uint32 g_uSourceId;
2342 static uint32 m_uTicksMsgValid[DF_INOS_BUS_MAX_NUMBER];
2344 #if defined(INOS_MULTICORE)
2391CINOSMcMessage* GetMessageHnd(
bool abSearch=
true);
2404extern CINOSMcMessage* GetMessageHnd(
bool abSearch);
2733#ifdef INOS_FAST_CALLPROCEDURE
2744 uint32 m_uSubTypeOfParameters;
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
CINOSTaskEx * ActualTaskEx()
Definition cinostaskex.h:2575
uint32 tMcAppError
Definition cinostaskexdef.h:53
Helper class and templates definition for CINOSTaskEx.
Definition cinostaskex.h:2713
CINOSMcModuleWaitObj * m_pNext
pointer to next in chain
Definition cinosmcmodule.h:1890
Definition cinosmcmodule.h:1900
Definition cinosmcmodule.h:296
Definition cinosmcrobot.h:206
Definition cinostaskex.h:2623
virtual CINOSTaskQueue * GetEventQueue()
Gets the message queue from the sync object.
Definition cinostaskex.h:2637
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:2681
virtual void Signal()
Put object into the signaled state.
static CINOSMcSyncMsg * Create(CINOSTaskEx &aTask, CINOSTaskExMsg *apMsg)
Definition cinostaskex.h:2591
virtual void Signal()
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
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:2532
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:2431
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:2485
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:2510
void SetDeferred()
get deferred flag
Definition cinostaskex.h:645
void AppendResult(T, const char *apResultName=NULL)
Definition cinostaskex.h:2521
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:2499
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:2466
CINOSTaskExMsgDefaultParam * AddDefaultParam(const char *apName, T aValue)
add default param
Definition cinostaskex.h:2454
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:1970
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:1645
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:1905
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:2111
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:2551
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:1957
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:2241
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:2107
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:1601
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:2243
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:2103
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:1753
virtual void PostCreate(void *apParent)
called after creation
uint32 m_uRequests
task requests
Definition cinostaskex.h:2109
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:1931
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:1903
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:2105
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:1900
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:2048
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:1879
void ClrCritical(uint32 auCritical)
clr critical
Definition cinostaskex.h:1960
virtual void MsgError(CINOSTaskExMsg *apMsg, tMcAppError aAppError)
message error
virtual void ClrFlag(uint64 auFlag, bool abUpdateState=false)
clr flag
Definition cinostaskex.h:1946
virtual void AddEllipsis()
Add ellipsis to command.
virtual void SetFlag(uint64 auFlag, bool abUpdateState=false)
set flag
Definition cinostaskex.h:1941
uint8 GetRequestedPriority()
get requested priority
Definition cinostaskex.h:1998
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:1895
virtual CMcResult StopMsg(tMsgId atMsgId, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
stop 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:2239
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:1974
virtual void iSetActual(CINOSTaskExMsg *apMsg)
internal set actual
ERplId
reply id's
Definition cinostaskex.h:1409
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:1954
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:1967
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:2113
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:2001
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:1951
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:1977
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:1964
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
Definition inos_1ms.h:143
#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:1677
uint32 INOS_MCMSG_CODE_TSKEX_UNKNOWN
Definition inoserror.h:1677
uint32 INOS_MCMSG_CODE_TSKEX_WRONG_PARAMS
Definition inoserror.h:1677
#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