📄 cml__node_8h-source.html
字号:
<a name="l00343"></a>00343 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *err = <a class="code" href="classNode.html#a31">GetSynchId</a>( <span class="keywordtype">id</span> );<a name="l00344"></a>00344 <span class="keywordflow">if</span>( !err && (<span class="keywordtype">id</span>&0x40000000) )<a name="l00345"></a>00345 err = <a class="code" href="classNode.html#a30">SetSynchId</a>( <span class="keywordtype">id</span> & 0x3FFFFFFF );<a name="l00346"></a>00346 <a name="l00347"></a>00347 <span class="keywordflow">if</span>( !err && (<a class="code" href="classReceiver.html#p0">co</a>-><a class="code" href="classCanOpen.html#a11">GetSynchProducer</a>() == nodeID) )<a name="l00348"></a>00348 <a class="code" href="classReceiver.html#p0">co</a>-><a class="code" href="classCanOpen.html#a12">SetSynchProducer</a>(0);<a name="l00349"></a>00349 <a name="l00350"></a>00350 <span class="keywordflow">return</span> err;<a name="l00351"></a>00351 }<a name="l00352"></a>00352 <span class="comment"></span><a name="l00353"></a>00353 <span class="comment"> /// Return the default COB ID value for the receive PDO</span><a name="l00354"></a>00354 <span class="comment"> /// with the specified index. Return -1 if the specified</span><a name="l00355"></a>00355 <span class="comment"> /// PDO does not have a default COB ID.</span><a name="l00356"></a>00356 <span class="comment"> /// @param index The PDO index</span><a name="l00357"></a>00357 <span class="comment"> /// @return The default COB ID for the PDO, or -1 if none.</span><a name="l00358"></a><a class="code" href="classNode.html#a36">00358</a> <span class="comment"></span> <span class="keyword">virtual</span> <a class="code" href="CML__Utils_8h.html#a9">int32</a> <a class="code" href="classNode.html#a36">GetRpdoCobID</a>( <a class="code" href="CML__Utils_8h.html#a8">uint16</a> index )<a name="l00359"></a>00359 {<a name="l00360"></a>00360 <span class="keywordflow">if</span>( index > 3 ) <span class="keywordflow">return</span> -1;<a name="l00361"></a>00361 <span class="keywordflow">return</span> 0x200 + index*0x100 + nodeID;<a name="l00362"></a>00362 }<a name="l00363"></a>00363 <span class="comment"></span><a name="l00364"></a>00364 <span class="comment"> /// Return the default COB ID value for the transmit PDO</span><a name="l00365"></a>00365 <span class="comment"> /// with the specified index. Return -1 if the specified</span><a name="l00366"></a>00366 <span class="comment"> /// PDO does not have a default COB ID.</span><a name="l00367"></a>00367 <span class="comment"> /// @param index The PDO index</span><a name="l00368"></a>00368 <span class="comment"> /// @return The default COB ID for the PDO, or -1 if none.</span><a name="l00369"></a><a class="code" href="classNode.html#a37">00369</a> <span class="comment"></span> <span class="keyword">virtual</span> <a class="code" href="CML__Utils_8h.html#a9">int32</a> <a class="code" href="classNode.html#a37">GetTpdoCobID</a>( <a class="code" href="CML__Utils_8h.html#a8">uint16</a> index )<a name="l00370"></a>00370 {<a name="l00371"></a>00371 <span class="keywordflow">if</span>( index > 3 ) <span class="keywordflow">return</span> -1;<a name="l00372"></a>00372 <span class="keywordflow">return</span> 0x180 + index*0x100 + nodeID;<a name="l00373"></a>00373 }<a name="l00374"></a>00374 <span class="comment"></span><a name="l00375"></a>00375 <span class="comment"> /// Return the node ID associated with this node</span><a name="l00376"></a>00376 <span class="comment"> /// @return The node ID</span><a name="l00377"></a><a class="code" href="classNode.html#a38">00377</a> <span class="comment"></span> <span class="keyword">virtual</span> <a class="code" href="CML__Utils_8h.html#a7">int16</a> <a class="code" href="classNode.html#a38">GetNodeID</a>( <span class="keywordtype">void</span> ){<a name="l00378"></a>00378 <span class="keywordflow">return</span> nodeID;<a name="l00379"></a>00379 }<a name="l00380"></a>00380 <a name="l00381"></a>00381 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classNode.html#a39">NewFrame</a>( <a class="code" href="structCanFrame.html">CanFrame</a> &frame );<a name="l00382"></a>00382 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classNode.html#a40">run</a>( <span class="keywordtype">void</span> );<a name="l00383"></a>00383 <a name="l00384"></a>00384 <span class="keyword">protected</span>:<span class="comment"></span><a name="l00385"></a>00385 <span class="comment"> /// Overload this function to handle emergency objects sent</span><a name="l00386"></a>00386 <span class="comment"> /// by this node.</span><a name="l00387"></a><a class="code" href="classNode.html#b0">00387</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classNode.html#b0">HandleEmergency</a>( <a class="code" href="structCanFrame.html">CanFrame</a> &frame ){}<a name="l00388"></a>00388 <span class="comment"></span><a name="l00389"></a>00389 <span class="comment"> /// Overload this function to handle changes to the nodes</span><a name="l00390"></a>00390 <span class="comment"> /// state. Note that the state member variable will have</span><a name="l00391"></a>00391 <span class="comment"> /// been changed to the new state before this function is</span><a name="l00392"></a>00392 <span class="comment"> /// called.</span><a name="l00393"></a><a class="code" href="classNode.html#b1">00393</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classNode.html#b1">HandleStateChange</a>( <a class="code" href="CML__Node_8h.html#a9">NodeState</a> from, <a class="code" href="CML__Node_8h.html#a9">NodeState</a> to ){}<a name="l00394"></a>00394 <span class="comment"></span><a name="l00395"></a>00395 <span class="comment"> /// Delay to use when changing modes. This is here as a work around for</span><a name="l00396"></a>00396 <span class="comment"> /// Beckhoff I/O modules which don't conform to the CANopen spec very well.</span><a name="l00397"></a><a class="code" href="classNode.html#p0">00397</a> <span class="comment"></span> <a class="code" href="CML__Utils_8h.html#a9">int32</a> <a class="code" href="classNode.html#p0">stateChangeDelay</a>;<a name="l00398"></a>00398 <a name="l00399"></a>00399 <span class="keyword">private</span>:<a name="l00400"></a>00400 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *WaitStateChange( <a class="code" href="CML__Node_8h.html#a9">NodeState</a> newState, <span class="keywordtype">bool</span> request=<span class="keyword">true</span> );<a name="l00401"></a>00401 <a name="l00402"></a>00402 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classNode.html#a9">PdoEnable</a>( <a class="code" href="CML__Utils_8h.html#a8">uint16</a> n, <a class="code" href="CML__Utils_8h.html#a8">uint16</a> base );<a name="l00403"></a>00403 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classNode.html#a10">PdoDisable</a>( <a class="code" href="CML__Utils_8h.html#a8">uint16</a> n, <a class="code" href="CML__Utils_8h.html#a8">uint16</a> base );<a name="l00404"></a>00404 <span class="comment"></span><a name="l00405"></a>00405 <span class="comment"> /// The NodeID for this node. Note that node IDs must</span><a name="l00406"></a>00406 <span class="comment"> /// be in the range 1 to 127.</span><a name="l00407"></a>00407 <span class="comment"></span> <a class="code" href="CML__Utils_8h.html#a7">int16</a> nodeID;<a name="l00408"></a>00408 <span class="comment"></span><a name="l00409"></a>00409 <span class="comment"> /// This object handles reception of emergency objects</span><a name="l00410"></a>00410 <span class="comment"> /// generated by this node.</span><a name="l00411"></a>00411 <span class="comment"></span> <a class="code" href="classNodeEmcyRcvr.html">NodeEmcyRcvr</a> emcy;<a name="l00412"></a>00412 <span class="comment"></span><a name="l00413"></a>00413 <span class="comment"> /// Holds the current state of this node. Be careful to</span><a name="l00414"></a>00414 <span class="comment"> /// avoid race conditions when modifying this variable!</span><a name="l00415"></a>00415 <span class="comment"></span> <a class="code" href="CML__Node_8h.html#a9">NodeState</a> state;<a name="l00416"></a>00416 <span class="comment"></span><a name="l00417"></a>00417 <span class="comment"> /// This variable identifies the type of guard protocol</span><a name="l00418"></a>00418 <span class="comment"> /// being used by this node. The options are none, heartbeat</span><a name="l00419"></a>00419 <span class="comment"> /// monitor, and node guarding.</span><a name="l00420"></a>00420 <span class="comment"></span> <a class="code" href="CML__Node_8h.html#a10">GuardProtocol</a> guardType;<a name="l00421"></a>00421 <span class="comment"></span><a name="l00422"></a>00422 <span class="comment"> /// This variable gives the guard time in milliseconds.</span><a name="l00423"></a>00423 <span class="comment"> /// It's used both in heartbeat and node guarding modes.</span><a name="l00424"></a>00424 <span class="comment"></span> <a class="code" href="CML__Utils_8h.html#a9">int32</a> guardTimeout;<a name="l00425"></a>00425 <span class="comment"></span><a name="l00426"></a>00426 <span class="comment"> /// This value keeps track of the toggle bit used with </span><a name="l00427"></a>00427 <span class="comment"> /// node guarding. It's set to -1 if the toggle bit isn't</span><a name="l00428"></a>00428 <span class="comment"> /// used.</span><a name="l00429"></a>00429 <span class="comment"></span> <a class="code" href="CML__Utils_8h.html#a7">int16</a> guardToggle;<a name="l00430"></a>00430 <span class="comment"></span><a name="l00431"></a>00431 <span class="comment"> /// General purpose mutex for this node.</span><a name="l00432"></a>00432 <span class="comment"></span> <a class="code" href="classMutex.html">Mutex</a> mutex;<a name="l00433"></a>00433 <span class="comment"></span><a name="l00434"></a>00434 <span class="comment"> /// Used to implement node guarding</span><a name="l00435"></a>00435 <span class="comment"></span> <a class="code" href="classEventMap.html">EventMap</a> guardEvents;<a name="l00436"></a>00436 <span class="comment"></span><a name="l00437"></a>00437 <span class="comment"> /// State I'm waiting for</span><a name="l00438"></a>00438 <span class="comment"></span> <a class="code" href="CML__Node_8h.html#a9">NodeState</a> desired;<a name="l00439"></a>00439 <a name="l00440"></a><a class="code" href="classNode.html#n0">00440</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classNodeEmcyRcvr.html">NodeEmcyRcvr</a>;<a name="l00441"></a>00441 };<a name="l00442"></a>00442 <a name="l00443"></a>00443 <a class="code" href="CML__Settings_8h.html#a12">CML_NAMESPACE_END</a>()<a name="l00444"></a>00444 <a name="l00445"></a>00445 #endif<a name="l00446"></a>00446 </pre></div><hr><address style="align: right;"><small>Copley Motion Library, Copyright (c) 2002-2003<a href="http://www.copleycontrols.com"><img src="CCC_logo.gif" alt="Copley Controls Corp." align="middle" border=0 ></a></small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -