Skip to content

Commit 80c6d0c

Browse files
author
github-actions
committed
Update documentation for branch main
1 parent 7f9346d commit 80c6d0c

20 files changed

Lines changed: 189 additions & 99 deletions

main/app__config_8hpp_source.html

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -157,46 +157,42 @@
157157
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
158158
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include &quot;cmsis_os2.h&quot;</span> <span class="comment">/* CMSIS-RTOS2 API */</span></div>
159159
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
160-
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// Parameter datatype for the graph</span></div>
161-
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">// An application needs to customize it to adapt to the graph&#39;s needs.</span></div>
162-
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">// This is not provided by the CMSIS-Stream pack and must come from the user </span></div>
163-
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">// application.</span></div>
164-
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &quot;hello_params.h&quot;</span></div>
165-
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
166-
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span>}</div>
160+
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#include &quot;hello_params.h&quot;</span></div>
161+
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
162+
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span>}</div>
163+
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
164+
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &quot;cg_enums.h&quot;</span></div>
165+
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &quot;stream_rtos_events.h&quot;</span></div>
166+
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
167167
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
168-
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include &quot;cg_enums.h&quot;</span></div>
169-
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#include &quot;stream_rtos_events.h&quot;</span></div>
168+
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
169+
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="keyword">extern</span> osEventFlagsId_t cg_streamEvent;</div>
170170
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
171-
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
172-
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
173-
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="keyword">extern</span> osEventFlagsId_t cg_streamEvent;</div>
174-
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
175-
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">// FIFO buffers are placed in a dedicated section so the linker can apply the</span></div>
176-
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">// memory layout selected for the generated graph. </span></div>
177-
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">// When memory optimization setting is used in the Python generator, the memory</span></div>
178-
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">// for FIFOs is shared and the buffers must be aligned to avoid unaligned accesses.</span></div>
179-
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="preprocessor">#define CG_BEFORE_BUFFER __ALIGNED(16) __attribute__((section(&quot;.bss.stream_fifo&quot;</span>)))</div>
180-
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
181-
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor">#define CG_BEFORE_NODE_EXECUTION(id) \</span></div>
182-
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="preprocessor"> { \</span></div>
183-
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="preprocessor"> uint32_t res = \</span></div>
184-
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor"> osEventFlagsWait(cg_streamEvent, STREAM_PAUSE_EVENT | STREAM_DONE_EVENT, \</span></div>
185-
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor"> osFlagsWaitAny, 0); \</span></div>
186-
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor"> if (!(res &amp; 0x80000000)) \</span></div>
187-
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor"> { \</span></div>
188-
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor"> if ((res &amp; STREAM_DONE_EVENT) != 0) \</span></div>
189-
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="preprocessor"> { \</span></div>
190-
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="preprocessor"> cgStaticError = CG_STOP_SCHEDULER; \</span></div>
191-
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="preprocessor"> goto errorHandling; \</span></div>
192-
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="preprocessor"> } \</span></div>
193-
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="preprocessor"> if ((res &amp; STREAM_PAUSE_EVENT) != 0) \</span></div>
194-
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor"> { \</span></div>
195-
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor"> cgStaticError = CG_PAUSED_SCHEDULER; \</span></div>
196-
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor"> goto errorHandling; \</span></div>
197-
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor"> } \</span></div>
198-
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor"> } \</span></div>
199-
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor"> }</span></div>
171+
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">// FIFO buffers are placed in a dedicated section so the linker can apply the</span></div>
172+
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">// memory layout selected for the generated graph. </span></div>
173+
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">// When memory optimization setting is used in the Python generator, the memory</span></div>
174+
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">// for FIFOs is shared and the buffers must be aligned to avoid unaligned accesses.</span></div>
175+
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="preprocessor">#define CG_BEFORE_BUFFER __ALIGNED(16) __attribute__((section(&quot;.bss.stream_fifo&quot;</span>)))</div>
176+
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
177+
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor">#define CG_BEFORE_NODE_EXECUTION(id) \</span></div>
178+
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="preprocessor"> { \</span></div>
179+
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="preprocessor"> uint32_t res = \</span></div>
180+
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor"> osEventFlagsWait(cg_streamEvent, STREAM_PAUSE_EVENT | STREAM_DONE_EVENT, \</span></div>
181+
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor"> osFlagsWaitAny, 0); \</span></div>
182+
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="preprocessor"> if (!(res &amp; 0x80000000)) \</span></div>
183+
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="preprocessor"> { \</span></div>
184+
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor"> if ((res &amp; STREAM_DONE_EVENT) != 0) \</span></div>
185+
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor"> { \</span></div>
186+
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor"> cgStaticError = CG_STOP_SCHEDULER; \</span></div>
187+
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor"> goto errorHandling; \</span></div>
188+
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor"> } \</span></div>
189+
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="preprocessor"> if ((res &amp; STREAM_PAUSE_EVENT) != 0) \</span></div>
190+
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="preprocessor"> { \</span></div>
191+
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="preprocessor"> cgStaticError = CG_PAUSED_SCHEDULER; \</span></div>
192+
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="preprocessor"> goto errorHandling; \</span></div>
193+
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="preprocessor"> } \</span></div>
194+
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor"> } \</span></div>
195+
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor"> }</span></div>
200196
</div><!-- fragment --></div><!-- contents -->
201197
</div><!-- doc-content -->
202198
<!-- start footer part -->

main/cmsis_stream_files_copied.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ <h1><a class="anchor" id="autotoc_md6"></a>
164164
<p>Update <code>NB_APPS</code> to match the number of generated stream applications that can run in the project. A simple project generally keeps <code>NB_APPS</code> set to 1. A project that context switches between several generated graphs should set it to the number of available graphs.</p>
165165
<p>Keep <code>contexts</code> sized with <code>NB_APPS</code>. Each entry describes one generated graph to the runtime: its scheduler function, FIFO reset function, pause and resume helpers, node lookup wrapper, event queue, number of identified nodes, and scheduler length.</p>
166166
<p>Keep <code>currentNetwork</code> as the index of the graph that must be started first, or that is currently selected for execution. Application code may update it before startup or when selecting another graph.</p>
167-
<p>The public functions <code><a class="el" href="group__cmsis__stream__cmsis__rtos__templates.html#ga8601d35319fdf1bf1b9486eecb9b02dc" title="Configure resources and start the currently selected stream graph.">stream_configure_and_start()</a></code> and <code><a class="el" href="group__cmsis__stream__cmsis__rtos__templates.html#gacc78462afffe15dc8142fefdf407a00b" title="Stop all stream threads and release scheduler/runtime resources.">stream_free_all()</a></code> are the application-level lifecycle API. They can be renamed or wrapped by the client project if a different startup convention is required.</p>
167+
<p>The public functions <code><a class="el" href="group__cmsis__stream__cmsis__rtos__templates.html#ga8601d35319fdf1bf1b9486eecb9b02dc" title="Configure resources and start the currently selected stream graph.">stream_configure_and_start()</a></code> and <code><a class="el" href="stream__init_8cpp.html#aa329f38cc330d1b217477216581b1133" title="Stop all stream threads and release scheduler/runtime resources.">stream_free_all()</a></code> are the application-level lifecycle API. They can be renamed or wrapped by the client project if a different startup convention is required.</p>
168168
<h1><a class="anchor" id="autotoc_md7"></a>
169169
Customizing <code>stream_init.cpp</code></h1>
170170
<p>Include the generated scheduler header for each graph. The template contains a single example include such as <code>scheduler_hello.h</code>; replace it with the header generated from the Python graph description. For several graphs, include one generated scheduler header per graph.</p>
@@ -181,7 +181,7 @@ <h1><a class="anchor" id="autotoc_md7"></a>
181181
<p>The <code>get_*_node</code> wrapper hides the application-specific <code><a class="el" href="group__cmsis__stream__cmsis__rtos__templates.html#structCStreamNode" title="Opaque handle for an identified C++ stream node.">CStreamNode</a></code> type from the shared runtime by returning <code>void *</code>. Add one wrapper per generated graph when several graphs are present.</p>
182182
<p>Adapt <code>pause_scheduler_app()</code> and <code>resume_scheduler_app()</code> when the application extends <code><a class="el" href="group__cmsis__stream__cmsis__rtos__templates.html#structCStreamNode" title="Opaque handle for an identified C++ stream node.">CStreamNode</a></code> with additional C-callable interfaces. The default implementation only checks <code><a class="el" href="group__cmsis__stream__cmsis__rtos__templates.html#structContextSwitchInterface" title="Optional C-callable view of the ContextSwitch API.">ContextSwitchInterface</a></code> and calls <code>pause()</code> or <code>resume()</code> on identified nodes that implement it.</p>
183183
<p>Select the first graph to run with <code>currentNetwork</code>, call <code>resume_scheduler_app(&amp;contexts[currentNetwork])</code>, then start the runtime threads with <code>stream_start_threads(&amp;contexts[currentNetwork])</code>. This ordering lets nodes publish initial events after their event queue exists.</p>
184-
<p>Update <code><a class="el" href="group__cmsis__stream__cmsis__rtos__templates.html#gacc78462afffe15dc8142fefdf407a00b" title="Stop all stream threads and release scheduler/runtime resources.">stream_free_all()</a></code> to free every resource allocated during startup. The usual order is:</p>
184+
<p>Update <code><a class="el" href="stream__init_8cpp.html#aa329f38cc330d1b217477216581b1133" title="Stop all stream threads and release scheduler/runtime resources.">stream_free_all()</a></code> to free every resource allocated during startup. The usual order is:</p>
185185
<ol type="1">
186186
<li>Wait for the runtime threads with <code><a class="el" href="group__cmsis__stream__runtime__api.html#ga1deb2590a04c64165627bbb7ae3bb685" title="Wait for the CMSIS-Stream runtime threads to finish.">stream_wait_for_threads_end()</a></code>.</li>
187187
<li>Call every generated <code>free_scheduler_*</code> function.</li>

main/footer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
function writeHeader() {
2-
document.write('Version v3.2.0-27-g08b5a63');
2+
document.write('Version v3.2.0-28-g89cacba');
33
};
44

55
function writeFooter() {
6-
document.write('Generated on Thu May 21 2026 11:33:00 for CMSIS-Stream v3.2.0-27-g08b5a63. Copyright &copy; 2026 Arm Limited (or its affiliates). All rights reserved.');
6+
document.write('Generated on Wed May 27 2026 06:19:53 for CMSIS-Stream v3.2.0-28-g89cacba. Copyright &copy; 2026 Arm Limited (or its affiliates). All rights reserved.');
77
};

0 commit comments

Comments
 (0)