rtdata
Get value of input
title="Action"
Input.aGetValue().send()
title="Check which error we get"
if(rtdata->GetCur() == DRIVE_ERR_FOLLOWINGWIN){
//Do something
}**Transition trigger**: Input Value TRUE
Assign data from signal in choice point or transition action
```title="Example"
// A) transition action
m_Variable = *rtdata;
// B) choice point (digital input)
return *rtdata
## rtport
Source port information
```title="Check source port example"
if(rtport == &PortName){
//Do something
}
title='Send signal to source port'
rtport->Error(CdErrorCode(GEN_ERR_BADPARAM)).reply();
title="Get signal index number"
msg->sapIndex0();
## msg
```title="Get messange priority"
msg->getPriority()
```title="Defer message"
msg->defer();
```title="Recall message" ModePort.aStop().recall( true ); ModePort.recallAllFront(); FuncPort.recall();
```title="Purge message"
ModePort.aStop().purge();
ModePort.purge();
```title="Get signal as object"
if(msg->getSignal() == CpDriveStatePoller::Base::rti_IsMoving) { //Do Something }
```title="Get signal name"
if(msg->getSignalName() == "IsHigh")
{
//Do Something
}
getPortName
add to relations "CrProtocolUtil"
```title="Get port name"
//version 1 CdString sPortName = ""; sPortName.Empty() << CrProtocolUtil::GetNameOfPort( getMsg()->sap() );
//version 2 CdString sPortName = ""; const RTMessage * poMsg = getMsg(); if (poMsg != (const RTMessage *)0) { // Port stuff
const RTProtocol * poPort = poMsg->sap();
if (poPort != (const RTProtocol *)0)
{
sPortName = CrProtocolUtil::GetNameOfPort( poPort );
}
}
po_DLOG("PortName") << "PortName is " << sPortName << "." << CLOSELOG; ```