Capture Engine

Steve Holle sholle at link-comm.com
Thu Dec 9 18:26:13 UTC 2004


At 07:51 AM 12/9/2004, Steve Holle wrote:
>At 02:38 PM 12/8/2004, Chris Johns wrote:
>>Steve Holle wrote:
>>>I'm trying to use the Capture Engine and the rtems monitor and am having 
>>>some trouble.  I've reviewed the document on the wiki and added the 
>>>lines recommended but am unable to get a prompt.  As a matter of fact, 
>>>when I include the rtems_monitor_init and rtems_capture_cli_init I loose 
>>>serial communications.
>>
>>The RTEMS monitor will block on stdin. The capture engine's CLI registers 
>>commands with the RTEMS monitor. The CLI uses stdin and stdout.
>>
>>If you have 2 tasks blocking on the stdin the IO will become confused.
>
>I think I have a workaround for this.
>
>
>>>I am unfamiliar with the rtems monitor.
>>>Can it be redirected to a telnet port?
>>
>>I am not sure the RTEMS monitor can be redirected. I do not know the 
>>RTEMS telnet server that well to be sure.
>>
>>>Where is it documented?
>>
>>Not sure about the RTEMS monitor, but the wiki is the best place for 
>>the  Capture Engine.
>>
>>>How is it configured?
>>
>>The Capture Engine is a generic layer with an API defined in capture.h. 
>>The CLI is an interface to the Capture Engine using this API.
>>
>>The design allows you to embedded capture engine commands in your 
>>application so you can create a user interface that suits you.
>>
>>The CLI takes care of the initialisation, how-ever sometime you wish to 
>>have the capture engine run from the start. This is an example is C++ 
>>that initialise the CLI, opens the engine, turns it on, sets a global 
>>watch (trace all events), and then sets a trigger from my init task 
>>called 'main':
>>
>>void
>>setup_capture_engine ()
>>{
>>   rtems_status_code sc;
>>
>>   rtems_capture_cli_init (0);
>>
>>   sc = rtems_capture_open (500, 0);
>>
>>   if (sc != RTEMS_SUCCESSFUL)
>>   {
>>     std::cout << "capture error: open failed: "
>>               << rtems_status_text (sc) << std::endl;
>>     return;
>>   }
>>
>>   sc = rtems_capture_control (1);
>>
>>   if (sc != RTEMS_SUCCESSFUL)
>>   {
>>     std::cout << "capture error: enable failed: "
>>               << rtems_status_text (sc) << std::endl;
>>     return;
>>   }
>>
>>   sc = rtems_capture_watch_global (1);
>>
>>   if (sc != RTEMS_SUCCESSFUL)
>>   {
>>     std::cout << "capture error: enable global watch failed: "
>>               << rtems_status_text (sc) << std::endl;
>>     return;
>>   }
>>
>>   sc = rtems_capture_set_trigger (rtems_build_name ('m', 'a', 'i', 'n'),
>>                                   0, 0, 0, rtems_capture_to_any);
>>
>>   if (sc != RTEMS_SUCCESSFUL)
>>   {
>>     std::cout << "capture error: set trigger failed: "
>>               << rtems_status_text (sc) << std::endl;
>>     return;
>>   }
>>
>>   std::cout << "capture engine opened and enabled." << std::endl;
>>}
>>
>>To dump the trace I use the CLI, you could add code to perform this task 
>>if you wish.
>>
>>>The document on the wiki does a good job of documenting the commands but 
>>>a demo session would be very helpful.
>>
>>Are you after a demo of the CLI commands or a demo of using the Capture 
>>Engine API to embedded it in your application ?
>
>I think what you've given me above is a good example of the API.  If you 
>could give me a demo of the CLI I'd appreciate that also.
>
>Thanks.
>
>
>>--
>>  Chris Johns

In addition, are the rtems_capture_... commands documented anywhere?  Do 
they correspond directly to the CLI commands?


>Steve Holle
>Link Communications, Inc.
>1035 Cerise Rd.
>Billings, MT  59101
>sholle at link-comm.com

Steve Holle
Link Communications, Inc.
1035 Cerise Rd.
Billings, MT  59101
sholle at link-comm.com  




More information about the users mailing list