title: FreeRTOS suspend task from another function
body: <p>So I have a half duplex bus driver, where I send something and then always have to wait a lot of time to get a response. During this wait time I want the processor to do something valuable, so I'm thinking about using FreeRTOS and vTaskDelay() or something. </p>
  
  <p>One way to do it would off be splitting the driver up in some send/receive part. After sending, it returns to the caller. The caller then suspends, and does the reception part after a certain period of time. </p>
  
  <p>But, the level of abstraction would be finer if it continues to be one task from the user point of view, as today. Therefore I was thinking, is it possible for a function within a task to suspend the task itself? Like</p>
  
  <pre><code> void someTask()
   {
       while(true){
         someFunction(&amp;someTask(), arg 1, arg 2,...);
         otherStuff(); 
   }
  
  
   }
  
   void someFunction(*someSortOfReferenceToWhateverTaskWhoCalled, arg1, arg2 ...)
   {
      if(something)  
      {
  
         /*Use the pointer or whatever to suspend the task that called this                      function*/
      }
  
   }
  </code></pre>