<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: sharring data between tasks using pipes in MQX 4.2 in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/sharring-data-between-tasks-using-pipes-in-MQX-4-2/m-p/738241#M45032</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would try in the MQX forums for such questions:&lt;BR /&gt;-&amp;nbsp;&lt;A href="https://community.nxp.com/community/mqx"&gt;https://community.nxp.com/community/mqx&lt;/A&gt;&amp;nbsp;&lt;BR /&gt;-&amp;nbsp;&lt;A href="https://community.nxp.com/space/11347"&gt;MQX RTOS Training&lt;/A&gt;&amp;nbsp;&lt;BR /&gt;-&amp;nbsp;&lt;A href="https://community.nxp.com/space/11629"&gt;MQX Downloads&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Although I don't think that MQX is supported by NXP any more.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 27 Mar 2018 01:52:39 GMT</pubDate>
    <dc:creator>mjbcswitzerland</dc:creator>
    <dc:date>2018-03-27T01:52:39Z</dc:date>
    <item>
      <title>sharring data between tasks using pipes in MQX 4.2</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/sharring-data-between-tasks-using-pipes-in-MQX-4-2/m-p/738240#M45031</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to share data between 2 tasks in MQX 4.2 using pipes. I am seeing data go in the pipe (and finally the task blocks when its full) but when I try to pull data out the other end there is nothing there. I have written a simple MQX 4.2 app that does just this and even it fails. Is there anything obvious I'm doing wrong? I have the pipes named differently in the two tasks but my understanding is that does not matter if they both open with the same "pipe1:" string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mqx.h&amp;gt;&lt;BR /&gt;#include &amp;lt;bsp.h&amp;gt; &lt;BR /&gt;#include &amp;lt;fio.h&amp;gt;&lt;BR /&gt;#include &amp;lt;io_pipe.h&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Task IDs */&lt;BR /&gt;#define HELLO_TASK 5&lt;BR /&gt;#define HELLO_TASK2 6&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;extern void hello_task(uint32_t);&lt;BR /&gt;extern void hello_task2(uint32_t);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;const TASK_TEMPLATE_STRUCT&amp;nbsp; MQX_template_list[] = &lt;BR /&gt;{ &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Task Index,&amp;nbsp;&amp;nbsp; Function,&amp;nbsp;&amp;nbsp; Stack,&amp;nbsp; Priority, Name,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Attributes,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param, Time Slice */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { HELLO_TASK,&amp;nbsp;&amp;nbsp; hello_task, 1500,&amp;nbsp;&amp;nbsp; 8,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "hello",&amp;nbsp; MQX_AUTO_START_TASK, 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 },&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { HELLO_TASK2,&amp;nbsp; hello_task2,1500,&amp;nbsp;&amp;nbsp; 8,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "hello2", MQX_TIME_SLICE_TASK, 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 },&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { 0 }&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static MQX_FILE_PTR inPipe1 = NULL;&lt;BR /&gt;static MQX_FILE_PTR outPipe1 = NULL;&lt;BR /&gt;static MQX_FILE_PTR inPipe2 = NULL;&lt;BR /&gt;static MQX_FILE_PTR outPipe2 = NULL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*TASK*-----------------------------------------------------&lt;BR /&gt;* &lt;BR /&gt;* Task Name&amp;nbsp;&amp;nbsp;&amp;nbsp; : hello_task&lt;BR /&gt;* Comments&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;BR /&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; This task prints " Hello World "&lt;BR /&gt;*&lt;BR /&gt;*END*-----------------------------------------------------*/&lt;BR /&gt;void hello_task&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t initial_data&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void)initial_data; /* disable 'unused variable' warning */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t nRead = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _io_pipe_install("pipe1:", 128, 0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; inPipe1&amp;nbsp; = fopen("pipe1:",&amp;nbsp; "rw");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _task_create(0, HELLO_TASK2, initial_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(inPipe1, "FEEDBEEF", 8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ioctl(inPipe1, PIPE_IOCTL_NUM_CHARS_FULL, &amp;amp;nRead);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _time_delay(1000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _task_block();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void hello_task2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t initial_data&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void)initial_data; /* disable 'unused variable' warning */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t nRead = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t buffer[128];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; inPipe2&amp;nbsp; = fopen("pipe1:",&amp;nbsp; "rw");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ioctl(inPipe2, PIPE_IOCTL_NUM_CHARS_FULL, &amp;amp;nRead);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nRead &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nRead &amp;gt; 128)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nRead = 128;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nRead = read(inPipe2, buffer, nRead);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _time_delay(50);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _task_block();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* EOF */&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Mar 2018 19:35:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/sharring-data-between-tasks-using-pipes-in-MQX-4-2/m-p/738240#M45031</guid>
      <dc:creator>ryanlush</dc:creator>
      <dc:date>2018-03-26T19:35:09Z</dc:date>
    </item>
    <item>
      <title>Re: sharring data between tasks using pipes in MQX 4.2</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/sharring-data-between-tasks-using-pipes-in-MQX-4-2/m-p/738241#M45032</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would try in the MQX forums for such questions:&lt;BR /&gt;-&amp;nbsp;&lt;A href="https://community.nxp.com/community/mqx"&gt;https://community.nxp.com/community/mqx&lt;/A&gt;&amp;nbsp;&lt;BR /&gt;-&amp;nbsp;&lt;A href="https://community.nxp.com/space/11347"&gt;MQX RTOS Training&lt;/A&gt;&amp;nbsp;&lt;BR /&gt;-&amp;nbsp;&lt;A href="https://community.nxp.com/space/11629"&gt;MQX Downloads&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Although I don't think that MQX is supported by NXP any more.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Mar 2018 01:52:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/sharring-data-between-tasks-using-pipes-in-MQX-4-2/m-p/738241#M45032</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2018-03-27T01:52:39Z</dc:date>
    </item>
  </channel>
</rss>

