Преглед на файлове

Updated Documentation to Doxygen 1.9.2 and new layout.

Vladimir Marchenko преди 3 години
родител
ревизия
155759586a

+ 11 - 11
.github/workflows/build.yaml

@@ -29,21 +29,21 @@ jobs:
           sudo apt-get install --no-install-recommends -y libclang1-9 libclang-cpp1-9 p7zip libxml2-utils
           sudo pip install LinkChecker
 
-      - name: Install Doxygen 1.8.6
-        run: |
-          wget http://archive.ubuntu.com/ubuntu/pool/main/d/doxygen/doxygen_1.8.6-2_amd64.deb
-          sudo dpkg -i doxygen_1.8.6-2_amd64.deb
-          which doxygen
-          doxygen --version
-
-#      - name: Install doxygen 1.9.2
+#      - name: Install Doxygen 1.8.6
 #        run: |
-#          wget https://doxygen.nl/files/doxygen-1.9.2.linux.bin.tar.gz
-#          sudo tar -C /opt -xf doxygen-1.9.2.linux.bin.tar.gz
-#          sudo ln -s /opt/doxygen-1.9.2/bin/doxygen /usr/local/bin/
+#          wget http://archive.ubuntu.com/ubuntu/pool/main/d/doxygen/doxygen_1.8.6-2_amd64.deb
+#          sudo dpkg -i doxygen_1.8.6-2_amd64.deb
 #          which doxygen
 #          doxygen --version
 
+      - name: Install doxygen 1.9.2
+        run: |
+          wget https://doxygen.nl/files/doxygen-1.9.2.linux.bin.tar.gz
+          sudo tar -C /opt -xf doxygen-1.9.2.linux.bin.tar.gz
+          sudo ln -s /opt/doxygen-1.9.2/bin/doxygen /usr/local/bin/
+          which doxygen
+          doxygen --version
+
       - name: Install PackChk 1.3.95
         run: |
           wget https://github.com/Open-CMSIS-Pack/devtools/releases/download/tools%2Fpackchk%2F1.3.95/packchk-1.3.95-linux64.zip

Файловите разлики са ограничени, защото са твърде много
+ 351 - 137
Doxygen/dsp.dxy.in


+ 3 - 3
Doxygen/gen_doc.sh

@@ -5,7 +5,7 @@
 #
 # Pre-requisites:
 # - bash shell (for Windows: install git for Windows)
-# - doxygen 1.8.6
+# - doxygen 1.9.2
 
 set -o pipefail
 
@@ -22,8 +22,8 @@ if [[ ! -f "${DOXYGEN}" ]]; then
 else
   version=$("${DOXYGEN}" --version)
   echo "DOXYGEN is ${DOXYGEN} at version ${version}"
-  if [[ "${version}" != "1.8.6" ]]; then
-    echo " >> Version is different from 1.8.6 !" >&2
+  if [[ "${version}" != "1.9.2" ]]; then
+    echo " >> Version is different from 1.9.2 !" >&2
   fi
 fi
 

BIN
Doxygen/templates/CMSIS_Logo_Final.png


+ 61 - 9
Doxygen/templates/DoxygenLayout_forUser.xml → Doxygen/templates/Layout_forUser.xml

@@ -1,36 +1,54 @@
 <doxygenlayout version="1.0">
+  <!-- Generated by doxygen 1.9.2 -->
   <!-- Navigation index tabs for HTML output -->
   <navindex>
     <tab type="mainpage" visible="yes" title=""/>
     <tab type="pages" visible="yes" title="Usage and Description" intro=""/>
-    <tab type="modules" visible="yes" title="Reference" intro=""/>
+    <tab type="modules" visible="yes" title=" API Reference" intro=""/>
     <tab type="namespaces" visible="no" title="Namespaces">
-      <tab type="namespacelist" visible="no" title="" intro=""/>
-      <tab type="namespacemembers" visible="no" title="" intro=""/>
+      <tab type="namespacelist" visible="no" title="Namespace list" intro=""/>
+      <tab type="namespacemembers" visible="no" title="Namespace members" intro=""/>
+    </tab>
+    <tab type="concepts" visible="yes" title="">
+    </tab>
+    <tab type="interfaces" visible="no" title="">
+      <tab type="interfacelist" visible="no" title="" intro=""/>
+      <tab type="interfaceindex" visible="no" title=""/>
+      <tab type="interfacehierarchy" visible="no" title="" intro=""/>
     </tab>
     <tab type="classes" visible="no" title="Data Structures">
       <tab type="classlist" visible="yes" title="" intro=""/>
-      <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 
+      <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
       <tab type="hierarchy" visible="yes" title="" intro=""/>
       <tab type="classmembers" visible="yes" title="" intro=""/>
     </tab>
+    <tab type="structs" visible="no" title="">
+      <tab type="structlist" visible="no" title="" intro=""/>
+      <tab type="structindex" visible="no" title=""/>
+    </tab>
+    <tab type="exceptions" visible="no" title="">
+      <tab type="exceptionlist" visible="no" title="" intro=""/>
+      <tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
+      <tab type="exceptionhierarchy" visible="no" title="" intro=""/>
+    </tab>
     <tab type="files" visible="no" title="Files">
       <tab type="filelist" visible="no" title="" intro=""/>
       <tab type="globals" visible="no" title="" intro=""/>
     </tab>
-    <tab type="examples" visible="no" title="" intro=""/>  
+    <tab type="examples" visible="no" title="" intro=""/>
   </navindex>
 
   <!-- Layout definition for a class page -->
   <class>
     <briefdescription visible="yes"/>
-    <includes visible="$SHOW_INCLUDE_FILES"/>
+    <includes visible="$SHOW_HEADERFILE"/>
     <inheritancegraph visible="$CLASS_GRAPH"/>
     <collaborationgraph visible="$COLLABORATION_GRAPH"/>
-    <allmemberslink visible="yes"/>
     <memberdecl>
       <nestedclasses visible="yes" title=""/>
       <publictypes title=""/>
+      <services title=""/>
+      <interfaces title=""/>
       <publicslots title=""/>
       <signals title=""/>
       <publicmethods title=""/>
@@ -65,6 +83,8 @@
       <inlineclasses title=""/>
       <typedefs title=""/>
       <enums title=""/>
+      <services title=""/>
+      <interfaces title=""/>
       <constructors title=""/>
       <functions title=""/>
       <related title=""/>
@@ -72,6 +92,7 @@
       <properties title=""/>
       <events title=""/>
     </memberdef>
+    <allmemberslink visible="yes"/>
     <usedfiles visible="$SHOW_USED_FILES"/>
     <authorsection visible="yes"/>
   </class>
@@ -81,17 +102,26 @@
     <briefdescription visible="yes"/>
     <memberdecl>
       <nestednamespaces visible="yes" title=""/>
+      <constantgroups visible="yes" title=""/>
+      <interfaces visible="yes" title=""/>
       <classes visible="yes" title=""/>
+      <concepts visible="yes" title=""/>
+      <structs visible="yes" title=""/>
+      <exceptions visible="yes" title=""/>
       <typedefs title=""/>
+      <sequences title=""/>
+      <dictionaries title=""/>
       <enums title=""/>
       <functions title=""/>
       <variables title=""/>
       <membergroups visible="yes"/>
     </memberdecl>
-    <detaileddescription title="Description"/>
+    <detaileddescription title=""/>
     <memberdef>
       <inlineclasses title=""/>
       <typedefs title=""/>
+      <sequences title=""/>
+      <dictionaries title=""/>
       <enums title=""/>
       <functions title=""/>
       <variables title=""/>
@@ -99,6 +129,14 @@
     <authorsection visible="yes"/>
   </namespace>
 
+  <!-- Layout definition for a concept page -->
+  <concept>
+    <briefdescription visible="yes"/>
+    <includes visible="$SHOW_HEADERFILE"/>
+    <definition visible="yes" title=""/>
+    <detaileddescription title=""/>
+    <authorsection visible="yes"/>
+  </concept>
   <!-- Layout definition for a file page -->
   <file>
     <briefdescription visible="yes"/>
@@ -107,20 +145,29 @@
     <includedbygraph visible="$INCLUDED_BY_GRAPH"/>
     <sourcelink visible="yes"/>
     <memberdecl>
+      <interfaces visible="yes" title=""/>
       <classes visible="yes" title=""/>
+      <structs visible="yes" title=""/>
+      <exceptions visible="yes" title=""/>
       <namespaces visible="yes" title=""/>
+      <concepts visible="yes" title=""/>
+      <constantgroups visible="yes" title=""/>
       <defines title=""/>
       <typedefs title=""/>
+      <sequences title=""/>
+      <dictionaries title=""/>
       <enums title=""/>
       <functions title=""/>
       <variables title=""/>
       <membergroups visible="yes"/>
     </memberdecl>
-    <detaileddescription title="Description"/>
+    <detaileddescription title=""/>
     <memberdef>
       <inlineclasses title=""/>
       <defines title=""/>
       <typedefs title=""/>
+      <sequences title=""/>
+      <dictionaries title=""/>
       <enums title=""/>
       <functions title=""/>
       <variables title=""/>
@@ -137,9 +184,12 @@
       <dirs visible="yes" title=""/>
       <files visible="yes" title=""/>
       <namespaces visible="yes" title=""/>
+      <concepts visible="yes" title=""/>
       <classes visible="yes" title=""/>
       <defines title=""/>
       <typedefs title=""/>
+      <sequences title=""/>
+      <dictionaries title=""/>
       <enums title=""/>
       <enumvalues title=""/>
       <functions title=""/>
@@ -159,6 +209,8 @@
       <inlineclasses title=""/>
       <defines title=""/>
       <typedefs title=""/>
+      <sequences title=""/>
+      <dictionaries title=""/>
       <enums title=""/>
       <enumvalues title=""/>
       <functions title=""/>

BIN
Doxygen/templates/cmsis_logo_white_small.png


Файловите разлики са ограничени, защото са твърде много
+ 353 - 231
Doxygen/templates/extra_stylesheet.css


+ 44 - 27
Doxygen/templates/header.html

@@ -1,61 +1,78 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- HTML header for doxygen 1.9.2-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<title>$title</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
 <!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
-<link href="$relpath$tabs.css" rel="stylesheet" type="text/css"/>
-<link href="$relpath$cmsis.css" rel="stylesheet" type="text/css" />
-<script type="text/javascript" src="$relpath$jquery.js"></script>
-<script type="text/javascript" src="$relpath$dynsections.js"></script>
-<script type="text/javascript" src="$relpath$footer.js"></script>
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<!--BEGIN DISABLE_INDEX-->
+  <!--BEGIN FULL_SIDEBAR-->
+<script type="text/javascript">var page_layout=1;</script>
+  <!--END FULL_SIDEBAR-->
+<!--END DISABLE_INDEX-->
+
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+<script type="text/javascript" src="$relpath^printComponentTabs.js"></script>
+<script type="text/javascript" src="$relpath^footer.js"></script>
 $treeview
 $search
 $mathjax
-<link href="../version.css" rel="stylesheet" type="text/css" />
-<script type="text/javascript" src="../version.js"></script>
+<link href="$relpath^$extra_stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
 </head>
 <body>
+<!--BEGIN DISABLE_INDEX-->
+  <!--BEGIN FULL_SIDEBAR-->
+<div id="side-nav" class="ui-resizable side-nav-resizable"><!-- do not remove this div, it is closed by doxygen! -->
+  <!--END FULL_SIDEBAR-->
+<!--END DISABLE_INDEX-->
 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
 <!--BEGIN TITLEAREA-->
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
- <tr style="height: 46px;">
+ <tr style="height: 55px;">
   <!--BEGIN PROJECT_LOGO-->
-  <td id="projectlogo"><img alt="Logo" src="$relpath$$projectlogo"/></td>
+  <td id="projectlogo" style="padding: 1.5em;"><img alt="Logo" src="$relpath^$projectlogo"/></td>
   <!--END PROJECT_LOGO-->
+  <td style="padding-left: 1em; padding-bottom: 1em;padding-top: 1em;">
   <!--BEGIN PROJECT_NAME-->
-  <td style="padding-left: 0.5em;">
    <div id="projectname">$projectname
-   <!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber" class=""><script type="text/javascript">
-     <!--
-     writeHeader.call(this);
-     writeVersionDropdown(this);
-     //-->
-    </script> 
-   </span><!--END PROJECT_NUMBER-->
+   <!--END PROJECT_NAME-->
+   <!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
    </div>
    <!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
   </td>
-  <!--END PROJECT_NAME-->
-  <!--BEGIN !PROJECT_NAME-->
-   <!--BEGIN PROJECT_BRIEF-->
-    <td style="padding-left: 0.5em;">
-    <div id="projectbrief">$projectbrief</div>
-    </td>
-   <!--END PROJECT_BRIEF-->
+
   <!--END !PROJECT_NAME-->
   <!--BEGIN DISABLE_INDEX-->
    <!--BEGIN SEARCHENGINE-->
+     <!--BEGIN !FULL_SIDEBAR-->
    <td>$searchbox</td>
+     <!--END !FULL_SIDEBAR-->
    <!--END SEARCHENGINE-->
   <!--END DISABLE_INDEX-->
  </tr>
+  <!--BEGIN SEARCHENGINE-->
+   <!--BEGIN FULL_SIDEBAR-->
+   <tr><td colspan="2">$searchbox</td></tr>
+   <!--END FULL_SIDEBAR-->
+  <!--END SEARCHENGINE-->
  </tbody>
 </table>
 </div>
 <!--END TITLEAREA-->
 <!-- end header part -->
+<div id="Compnav" class="tabs1">
+    <ul class="tablist">
+      <script type="text/javascript">
+		<!--
+		writeComponentTabs.call(this);
+		//-->
+      </script>
+	  </ul>
+</div>

+ 64 - 26
Doxygen/templates/navtree.css

@@ -1,6 +1,15 @@
-#nav-tree .children_ul {
-  margin:0;
-  padding:4px;
+:root {
+  --arm_light_blue: #00C1DE;
+  --arm_blue: #11809F;
+  --arm_blue1: #0091BD;
+  --arm_dark_blue: #002B49;
+  --arm_light_gray: #E5ECEB;
+  --arm_light_gray1: #EFF5F4;
+  --arm_light_gray2: #EBEBEB;
+  --arm_light_gray3: #F7F7F7;
+  --arm_dark_gray: #7D868C;
+  --arm_black: #333E48;
+  --arm_orange: #FF6B00;
 }
 
 #nav-tree ul {
@@ -20,10 +29,9 @@
 }
 
 #nav-tree .selected {
-  background-image: url('tab_a.png');
-  background-repeat:repeat-x;
-  color: #fff;
-  text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+  border: 1.5px solid var(--arm_blue);
+  border-left-width: 5px;
+  margin-left:-10px; /*correction to place selection border on the edge screen edge */
 }
 
 #nav-tree img {
@@ -36,6 +44,7 @@
 #nav-tree a {
   text-decoration:none;
   padding:0px;
+  padding-left:0px;
   margin:0px;
   outline:none;
 }
@@ -43,33 +52,37 @@
 #nav-tree .label {
   margin:0px;
   padding:0px;
+  font: 15px  Lato, Calibri, sans-serif;
+}
+
+#nav-tree .label:hover {
+  color: var(--arm_orange);
 }
 
 #nav-tree .label a {
-  padding:2px;
+  padding-left:6px;
+  line-height: 30px;
+  color: var(--arm_black);
 }
 
 #nav-tree .selected a {
-  text-decoration:none;
-  padding:2px;
-  margin:0px;
-  color:#fff;
+  font-weight: bold;
 }
 
-#nav-tree .children_ul {
-  margin:0px;
-  padding:0px;
+/*correction for the larger box border on the left (10px-5px) */
+#nav-tree .selected .arrow {
+  margin-left:5px;
 }
 
-#nav-tree .item {
+#nav-tree .children_ul {
   margin:0px;
   padding:0px;
 }
 
 #nav-tree {
   padding: 0px 0px;
-  background-color: #FAFAFF; 
-  font-size:14px;
+  padding-left: 10px;  /*correction to add space before the first arrow in nav-tree */
+  background-color: #FAFAFF;
   overflow:auto;
 }
 
@@ -78,15 +91,16 @@
   display:block;
   padding:0px;
   margin:0px;
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
 }
 
 #side-nav {
-  padding:0 6px 0 0;
+  padding:0 2px 0 0;
   margin: 0px;
   display:block;
   position: absolute;
   left: 0px;
-  width: 300px;
+  width: 340px;
 }
 
 .ui-resizable .ui-resizable-handle {
@@ -94,12 +108,14 @@
 }
 
 .ui-resizable-e {
-  background:url("ftv2splitbar.png") repeat scroll right center transparent;
-  cursor:e-resize;
+  background-color: var(--arm_light_gray);
+  background-repeat:repeat-y;
+  background-attachment: scroll;
+  cursor:ew-resize;
   height:100%;
   right:0;
   top:0;
-  width:6px;
+  width:2px;
 }
 
 .ui-resizable-handle {
@@ -114,10 +130,32 @@
 }
 
 #nav-tree {
-  background-image:url('nav_h.png');
-  background-repeat:repeat-x;
-  background-color: #F9FAFC;
+  background-color: white;
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
 }
 
+#nav-sync {
+  position:absolute;
+  top:5px;
+  right:24px;
+  z-index:0;
+}
 
+#nav-sync img {
+  opacity:0.0;
+}
+
+#nav-sync img:hover {
+  opacity:0.0;
+}
+
+#nav-tree a:hover {
+  color: var(--arm_orange);
+}
+
+@media print
+{
+  #nav-tree { display: none; }
+  div.ui-resizable-handle { display: none; position: relative; }
+}
 

+ 551 - 0
Doxygen/templates/navtree.js

@@ -0,0 +1,551 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+var navTreeSubIndices = new Array();
+var arrowDown = '&#9660;';
+var arrowRight = '&#9658;';
+
+function getData(varName)
+{
+  var i = varName.lastIndexOf('/');
+  var n = i>=0 ? varName.substring(i+1) : varName;
+  return eval(n.replace(/\-/g,'_'));
+}
+
+function stripPath(uri)
+{
+  return uri.substring(uri.lastIndexOf('/')+1);
+}
+
+function stripPath2(uri)
+{
+  var i = uri.lastIndexOf('/');
+  var s = uri.substring(i+1);
+  var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
+  return m ? uri.substring(i-6) : s;
+}
+
+function hashValue()
+{
+  return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,'');
+}
+
+function hashUrl()
+{
+  return '#'+hashValue();
+}
+
+function pathName()
+{
+  return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, '');
+}
+
+function localStorageSupported()
+{
+  try {
+    return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem;
+  }
+  catch(e) {
+    return false;
+  }
+}
+
+function storeLink(link)
+{
+  if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) {
+      window.localStorage.setItem('navpath',link);
+  }
+}
+
+function deleteLink()
+{
+  if (localStorageSupported()) {
+    window.localStorage.setItem('navpath','');
+  }
+}
+
+function cachedLink()
+{
+  if (localStorageSupported()) {
+    return window.localStorage.getItem('navpath');
+  } else {
+    return '';
+  }
+}
+
+function getScript(scriptName,func,show)
+{
+  var head = document.getElementsByTagName("head")[0];
+  var script = document.createElement('script');
+  script.id = scriptName;
+  script.type = 'text/javascript';
+  script.onload = func;
+  script.src = scriptName+'.js';
+  head.appendChild(script);
+}
+
+function createIndent(o,domNode,node,level)
+{
+  var level=-1;
+  var n = node;
+  while (n.parentNode) { level++; n=n.parentNode; }
+  if (node.childrenData) {
+    var imgNode = document.createElement("span");
+    imgNode.className = 'arrow';
+    imgNode.style.paddingLeft=(16*level).toString()+'px';
+    imgNode.innerHTML=arrowRight;
+    node.plus_img = imgNode;
+    node.expandToggle = document.createElement("a");
+    node.expandToggle.href = "javascript:void(0)";
+    node.expandToggle.onclick = function() {
+      if (node.expanded) {
+        $(node.getChildrenUL()).slideUp("fast");
+        node.plus_img.innerHTML=arrowRight;
+        node.expanded = false;
+      } else {
+        expandNode(o, node, false, false);
+      }
+    }
+    node.expandToggle.appendChild(imgNode);
+    domNode.appendChild(node.expandToggle);
+  } else {
+    var span = document.createElement("span");
+    span.className = 'arrow';
+    span.style.width   = 16*(level+1)+'px';
+    span.innerHTML = '&#160;';
+    domNode.appendChild(span);
+  }
+}
+
+var animationInProgress = false;
+
+function gotoAnchor(anchor,aname,updateLocation)
+{
+  var pos, docContent = $('#doc-content');
+  var ancParent = $(anchor.parent());
+  if (ancParent.hasClass('memItemLeft') ||
+      ancParent.hasClass('memtitle') ||
+      ancParent.hasClass('fieldname') ||
+      ancParent.hasClass('fieldtype') ||
+      ancParent.is(':header'))
+  {
+    pos = ancParent.position().top;
+  } else if (anchor.position()) {
+    pos = anchor.position().top;
+  }
+  if (pos) {
+    var dist = Math.abs(Math.min(
+               pos-docContent.offset().top,
+               docContent[0].scrollHeight-
+               docContent.height()-docContent.scrollTop()));
+    animationInProgress=true;
+    docContent.animate({
+      scrollTop: pos + docContent.scrollTop() - docContent.offset().top
+    },Math.max(50,Math.min(500,dist)),function(){
+      if (updateLocation) window.location.href=aname;
+      animationInProgress=false;
+    });
+  }
+}
+
+function newNode(o, po, text, link, childrenData, lastNode)
+{
+  var node = new Object();
+  node.children = Array();
+  node.childrenData = childrenData;
+  node.depth = po.depth + 1;
+  node.relpath = po.relpath;
+  node.isLast = lastNode;
+
+  node.li = document.createElement("li");
+  po.getChildrenUL().appendChild(node.li);
+  node.parentNode = po;
+
+  node.itemDiv = document.createElement("div");
+  node.itemDiv.className = "item";
+
+  node.labelSpan = document.createElement("span");
+  node.labelSpan.className = "label";
+
+  createIndent(o,node.itemDiv,node,0);
+  node.itemDiv.appendChild(node.labelSpan);
+  node.li.appendChild(node.itemDiv);
+
+  var a = document.createElement("a");
+  node.labelSpan.appendChild(a);
+  node.label = document.createTextNode(text);
+  node.expanded = false;
+  a.appendChild(node.label);
+  if (link) {
+    var url;
+    if (link.substring(0,1)=='^') {
+      url = link.substring(1);
+      link = url;
+    } else {
+      url = node.relpath+link;
+    }
+    a.className = stripPath(link.replace('#',':'));
+    if (link.indexOf('#')!=-1) {
+      var aname = '#'+link.split('#')[1];
+      var srcPage = stripPath(pathName());
+      var targetPage = stripPath(link.split('#')[0]);
+      a.href = srcPage!=targetPage ? url : "javascript:void(0)";
+      a.onclick = function(){
+        storeLink(link);
+        if (!$(a).parent().parent().hasClass('selected'))
+        {
+          $('.item').removeClass('selected');
+          $('.item').removeAttr('id');
+          $(a).parent().parent().addClass('selected');
+          $(a).parent().parent().attr('id','selected');
+        }
+        var anchor = $(aname);
+        gotoAnchor(anchor,aname,true);
+      };
+    } else {
+      a.href = url;
+      a.onclick = function() { storeLink(link); }
+    }
+  } else {
+    if (childrenData != null)
+    {
+      a.className = "nolink";
+      a.href = "javascript:void(0)";
+      a.onclick = node.expandToggle.onclick;
+    }
+  }
+
+  node.childrenUL = null;
+  node.getChildrenUL = function() {
+    if (!node.childrenUL) {
+      node.childrenUL = document.createElement("ul");
+      node.childrenUL.className = "children_ul";
+      node.childrenUL.style.display = "none";
+      node.li.appendChild(node.childrenUL);
+    }
+    return node.childrenUL;
+  };
+
+  return node;
+}
+
+function showRoot()
+{
+  var headerHeight = $("#top").height();
+  var footerHeight = $("#nav-path").height();
+  var windowHeight = $(window).height() - headerHeight - footerHeight;
+  (function (){ // retry until we can scroll to the selected item
+    try {
+      var navtree=$('#nav-tree');
+      navtree.scrollTo('#selected',100,{offset:-windowHeight/2});
+    } catch (err) {
+      setTimeout(arguments.callee, 0);
+    }
+  })();
+}
+
+function expandNode(o, node, imm, showRoot)
+{
+  if (node.childrenData && !node.expanded) {
+    if (typeof(node.childrenData)==='string') {
+      var varName    = node.childrenData;
+      getScript(node.relpath+varName,function(){
+        node.childrenData = getData(varName);
+        expandNode(o, node, imm, showRoot);
+      }, showRoot);
+    } else {
+      if (!node.childrenVisited) {
+        getNode(o, node);
+      }
+      $(node.getChildrenUL()).slideDown("fast");
+      node.plus_img.innerHTML = arrowDown;
+      node.expanded = true;
+    }
+  }
+}
+
+function glowEffect(n,duration)
+{
+  n.addClass('glow').delay(duration).queue(function(next){
+    $(this).removeClass('glow');next();
+  });
+}
+
+function highlightAnchor()
+{
+  var aname = hashUrl();
+  var anchor = $(aname);
+  if (anchor.parent().attr('class')=='memItemLeft'){
+    var rows = $('.memberdecls tr[class$="'+hashValue()+'"]');
+    glowEffect(rows.children(),300); // member without details
+  } else if (anchor.parent().attr('class')=='fieldname'){
+    glowEffect(anchor.parent().parent(),1000); // enum value
+  } else if (anchor.parent().attr('class')=='fieldtype'){
+    glowEffect(anchor.parent().parent(),1000); // struct field
+  } else if (anchor.parent().is(":header")) {
+    glowEffect(anchor.parent(),1000); // section header
+  } else {
+    glowEffect(anchor.next(),1000); // normal member
+  }
+}
+
+function selectAndHighlight(hash,n)
+{
+  var a;
+  if (hash) {
+    var link=stripPath(pathName())+':'+hash.substring(1);
+    a=$('.item a[class$="'+link+'"]');
+  }
+  if (a && a.length) {
+    a.parent().parent().addClass('selected');
+    a.parent().parent().attr('id','selected');
+    highlightAnchor();
+  } else if (n) {
+    $(n.itemDiv).addClass('selected');
+    $(n.itemDiv).attr('id','selected');
+  }
+  var topOffset=5;
+  if (typeof page_layout!=='undefined' && page_layout==1) {
+    topOffset+=$('#top').outerHeight();
+  }
+  if ($('#nav-tree-contents .item:first').hasClass('selected')) {
+    topOffset+=25;
+  }
+  $('#nav-sync').css('top',topOffset+'px');
+  showRoot();
+}
+
+function showNode(o, node, index, hash)
+{
+  if (node && node.childrenData) {
+    if (typeof(node.childrenData)==='string') {
+      var varName    = node.childrenData;
+      getScript(node.relpath+varName,function(){
+        node.childrenData = getData(varName);
+        showNode(o,node,index,hash);
+      },true);
+    } else {
+      if (!node.childrenVisited) {
+        getNode(o, node);
+      }
+      $(node.getChildrenUL()).css({'display':'block'});
+      node.plus_img.innerHTML = arrowDown;
+      node.expanded = true;
+      var n = node.children[o.breadcrumbs[index]];
+      if (index+1<o.breadcrumbs.length) {
+        showNode(o,n,index+1,hash);
+      } else {
+        if (typeof(n.childrenData)==='string') {
+          var varName = n.childrenData;
+          getScript(n.relpath+varName,function(){
+            n.childrenData = getData(varName);
+            node.expanded=false;
+            showNode(o,node,index,hash); // retry with child node expanded
+          },true);
+        } else {
+          /* vlamar01: Commented two lines below to ensure nav. tree expands on all selections */
+          //var rootBase = stripPath(o.toroot.replace(/\..+$/, ''));
+          //if (rootBase=="index" || rootBase=="pages" || rootBase=="search")
+          {
+            expandNode(o, n, true, true);
+          }
+          selectAndHighlight(hash,n);
+        }
+      }
+    }
+  } else {
+    selectAndHighlight(hash);
+  }
+}
+
+function removeToInsertLater(element) {
+  var parentNode = element.parentNode;
+  var nextSibling = element.nextSibling;
+  parentNode.removeChild(element);
+  return function() {
+    if (nextSibling) {
+      parentNode.insertBefore(element, nextSibling);
+    } else {
+      parentNode.appendChild(element);
+    }
+  };
+}
+
+function getNode(o, po)
+{
+  var insertFunction = removeToInsertLater(po.li);
+  po.childrenVisited = true;
+  var l = po.childrenData.length-1;
+  for (var i in po.childrenData) {
+    var nodeData = po.childrenData[i];
+    po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],
+      i==l);
+  }
+  insertFunction();
+}
+
+function gotoNode(o,subIndex,root,hash,relpath)
+{
+  var nti = navTreeSubIndices[subIndex][root+hash];
+  o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]);
+  if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index
+    navTo(o,NAVTREE[0][1],"",relpath);
+    $('.item').removeClass('selected');
+    $('.item').removeAttr('id');
+  }
+  if (o.breadcrumbs) {
+    o.breadcrumbs.unshift(0); // add 0 for root node
+    showNode(o, o.node, 0, hash);
+  }
+}
+
+function navTo(o,root,hash,relpath)
+{
+  var link = cachedLink();
+  if (link) {
+    var parts = link.split('#');
+    root = parts[0];
+    if (parts.length>1) hash = '#'+parts[1].replace(/[^\w\-]/g,'');
+    else hash='';
+  }
+  if (hash.match(/^#l\d+$/)) {
+    var anchor=$('a[name='+hash.substring(1)+']');
+    glowEffect(anchor.parent(),1000); // line number
+    hash=''; // strip line number anchors
+  }
+  var url=root+hash;
+  var i=-1;
+  while (NAVTREEINDEX[i+1]<=url) i++;
+  if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index
+  if (navTreeSubIndices[i]) {
+    gotoNode(o,i,root,hash,relpath)
+  } else {
+    getScript(relpath+'navtreeindex'+i,function(){
+      navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
+      if (navTreeSubIndices[i]) {
+        gotoNode(o,i,root,hash,relpath);
+      }
+    },true);
+  }
+}
+
+function showSyncOff(n,relpath)
+{
+    n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>');
+}
+
+function showSyncOn(n,relpath)
+{
+    n.html('<img src="'+relpath+'sync_on.png" title="'+SYNCONMSG+'"/>');
+}
+
+function toggleSyncButton(relpath)
+{
+  var navSync = $('#nav-sync');
+  if (navSync.hasClass('sync')) {
+    navSync.removeClass('sync');
+    showSyncOff(navSync,relpath);
+    storeLink(stripPath2(pathName())+hashUrl());
+  } else {
+    navSync.addClass('sync');
+    showSyncOn(navSync,relpath);
+    deleteLink();
+  }
+}
+
+var loadTriggered = false;
+var readyTriggered = false;
+var loadObject,loadToRoot,loadUrl,loadRelPath;
+
+$(window).on('load',function(){
+  if (readyTriggered) { // ready first
+    navTo(loadObject,loadToRoot,loadUrl,loadRelPath);
+    showRoot();
+  }
+  loadTriggered=true;
+});
+
+function initNavTree(toroot,relpath)
+{
+  var o = new Object();
+  o.toroot = toroot;
+  o.node = new Object();
+  o.node.li = document.getElementById("nav-tree-contents");
+  o.node.childrenData = NAVTREE;
+  o.node.children = new Array();
+  o.node.childrenUL = document.createElement("ul");
+  o.node.getChildrenUL = function() { return o.node.childrenUL; };
+  o.node.li.appendChild(o.node.childrenUL);
+  o.node.depth = 0;
+  o.node.relpath = relpath;
+  o.node.expanded = false;
+  o.node.isLast = true;
+  o.node.plus_img = document.createElement("span");
+  o.node.plus_img.className = 'arrow';
+  o.node.plus_img.innerHTML = arrowRight;
+
+  if (localStorageSupported()) {
+    var navSync = $('#nav-sync');
+    if (cachedLink()) {
+      showSyncOff(navSync,relpath);
+      navSync.removeClass('sync');
+    } else {
+      showSyncOn(navSync,relpath);
+    }
+    navSync.click(function(){ toggleSyncButton(relpath); });
+  }
+
+  if (loadTriggered) { // load before ready
+    navTo(o,toroot,hashUrl(),relpath);
+    showRoot();
+  } else { // ready before load
+    loadObject  = o;
+    loadToRoot  = toroot;
+    loadUrl     = hashUrl();
+    loadRelPath = relpath;
+    readyTriggered=true;
+  }
+
+  $(window).bind('hashchange', function(){
+     if (window.location.hash && window.location.hash.length>1){
+       var a;
+       if ($(location).attr('hash')){
+         var clslink=stripPath(pathName())+':'+hashValue();
+         a=$('.item a[class$="'+clslink.replace(/</g,'\\3c ')+'"]');
+       }
+       if (a==null || !$(a).parent().parent().hasClass('selected')){
+         $('.item').removeClass('selected');
+         $('.item').removeAttr('id');
+       }
+       var link=stripPath2(pathName());
+       navTo(o,link,hashUrl(),relpath);
+     } else if (!animationInProgress) {
+       $('#doc-content').scrollTop(0);
+       $('.item').removeClass('selected');
+       $('.item').removeAttr('id');
+       navTo(o,toroot,hashUrl(),relpath);
+     }
+  })
+}
+/* @license-end */

+ 7 - 19
Doxygen/templates/printComponentTabs.js

@@ -2,8 +2,8 @@ var strgURL =   location.pathname;                      // path of current compo
 
 // constuctor for the array of objects
 function tabElement(id, folderName, tabTxt )  {
-	this.id = id;                                       // elementID as needed in html; 
-	this.folderName = folderName;                       // folder name of the component 
+	this.id = id;                                       // elementID as needed in html;
+	this.folderName = folderName;                       // folder name of the component
     this.tabTxt = tabTxt;                               // Text displayed as menu on the web
 	this.currentListItem = '<li id="' + this.id + '" class="current"> <a href="../..' + this.folderName + 'index.html"><span>' + this.tabTxt + '</span></a></li>';
 	this.listItem = '<li id="' + this.id + '"> <a href="../..' + this.folderName + 'index.html"><span>' + this.tabTxt + '</span></a></li>';
@@ -13,28 +13,16 @@ function tabElement(id, folderName, tabTxt )  {
 var arr = [];
 
 // fill array
- arr.push( new tabElement( "GEN",     "/General/html/",     "General")   );
- arr.push( new tabElement( "CORE_A",  "/Core_A/html/",      "Core(A)")   );
- arr.push( new tabElement( "CORE_M",  "/Core/html/",        "Core(M)")   );
- arr.push( new tabElement( "DRV",     "/Driver/html/",      "Driver")    );
- arr.push( new tabElement( "DSP&ML",  "/DSP/html/",         "DSP")       );
- arr.push( new tabElement( "NN",      "/NN/html/",          "NN")        );
- arr.push( new tabElement( "RTOSv1",  "/RTOS/html/",        "RTOS v1")   );
- arr.push( new tabElement( "RTOSv2",  "/RTOS2/html/",       "RTOS v2")   );
- arr.push( new tabElement( "PACK",    "/Pack/html/",        "Pack")      );
- arr.push( new tabElement( "Build",   "/Build/html/",       "Build")     );
- arr.push( new tabElement( "SVD",     "/SVD/html/",         "SVD")       );
- arr.push( new tabElement( "DAP",     "/DAP/html/",         "DAP")       );
- arr.push( new tabElement( "ZONE",    "/Zone/html/",        "Zone")      );
- 
+// arr.push( new    tabElement( "GEN",    "/General/html/", "General"));
+
 // write tabs
 // called from the header file.
 function writeComponentTabs()  {
   for ( var i=0; i < arr.length; i++ ) {
     if (strgURL.search(arr[i].folderName) > 0) {                    // if this is the current folder
-      document.write(arr[i].currentListItem);                       // then print and hightlight the tab
-    } else {                                                      
+      document.write(arr[i].currentListItem);                       // then print and highlight the tab
+    } else {
       document.write(arr[i].listItem);                              // else, print the tab
-    }                                                             
+    }
   }
 };

+ 6 - 6
Doxygen/templates/search.css

@@ -136,7 +136,7 @@ span.SelectionMark {
 a.SelectItem {
     display: block;
     outline-style: none;
-    color: #000000; 
+    color: #000000;
     text-decoration: none;
     padding-left:   6px;
     padding-right: 12px;
@@ -144,7 +144,7 @@ a.SelectItem {
 
 a.SelectItem:focus,
 a.SelectItem:active {
-    color: #000000; 
+    color: #000000;
     outline-style: none;
     text-decoration: none;
 }
@@ -177,7 +177,7 @@ iframe#MSearchResults {
 
 
 #SRIndex {
-    clear:both; 
+    clear:both;
     padding-bottom: 15px;
 }
 
@@ -196,7 +196,7 @@ body.SRPage {
 }
 
 .SRChildren {
-    padding-left: 3ex; padding-bottom: .5em 
+    padding-left: 3ex; padding-bottom: .5em
 }
 
 .SRPage .SRChildren {
@@ -204,7 +204,7 @@ body.SRPage {
 }
 
 .SRSymbol {
-    font-weight: bold; 
+    font-weight: bold;
     color: #425E97;
     font-family: Arial, Verdana, sans-serif;
     text-decoration: none;
@@ -213,7 +213,7 @@ body.SRPage {
 
 a.SRScope {
     display: block;
-    color: #425E97; 
+    color: #425E97;
     font-family: Arial, Verdana, sans-serif;
     text-decoration: none;
     outline: none;

BIN
Doxygen/templates/tab_b.png


BIN
Doxygen/templates/tab_topnav.png


+ 69 - 37
Doxygen/templates/tabs.css

@@ -1,71 +1,103 @@
-.tabs, .tabs1, .tabs2, .tabs3 {
-    background-image: url('tab_b.png');
+:root {
+  --arm_light_blue: #00C1DE;
+  --arm_blue: #11809F;
+  --arm_blue1: #0091BD;
+  --arm_dark_blue: #002B49;
+  --arm_light_gray: #E5ECEB;
+  --arm_light_gray1: #EFF5F4;
+  --arm_light_gray2: #EBEBEB;
+  --arm_light_gray3: #F7F7F7;
+  --arm_dark_gray: #7D868C;
+  --arm_black: #333E48;
+  --arm_orange: #FF6B00;
+  --arm_yellow: #FFC700;
+}
+
+/* in Doxygen 1.9.2 'tabs' is assigned to second navigation row (navrow1) with
+ 'Main Page', 'Namespaces', etc */
+
+.tabs, .tabs1, .tabs2, .tabs3, .main-nav {
+    background-color: var(--arm_light_gray);
+    color: var(--arm_black);
     width: 100%;
     z-index: 101;
-    font-size: 10px;
+    font-family: 'Futura PT W01 Medium', 'Lato Light', Lato, Calibri, sans-serif;
+    font-size: 14px;
+    font-weight: 800;
 }
 
 .tabs1 {
-    background-image: url('tab_topnav.png');
-    font-size: 12px;
+    background-color: var(--arm_black);
+    font-size: 16px;
 }
 
-.tabs2 {
-    font-size: 10px;
-}
-.tabs3 {
-    font-size: 9px;
+.tabs {
+    background-color: var(--arm_light_gray);
 }
 
-.tablist {
+.tablist, .main-menu {
     margin: 0;
     padding: 0;
     display: table;
-    line-height: 24px;
+    line-height: 28px;
 }
 
 .tablist li {
     float: left;
     display: table-cell;
-    background-image: url('tab_b.png');
+    background-color: var(--arm_light_gray);
+    border-right-style:solid;
+    border-right-width:1px;
+    border-right-color:var(--arm_dark_gray);
     list-style: none;
+    margin:0px;
+}
+
+.tablist .MSearchBoxInactive {
+    opacity:0.75;
 }
 
+.tablist .MSearchBoxInactive:hover {
+    opacity:1.0;
+}
+
+
 .tabs1 .tablist li {
-    float: left;
-    display: table-cell;
-    background-image: url('tab_topnav.png');
-    list-style: none;
+    background-color: var(--arm_black);
+    font-weight: 1000;
 }
 
 .tablist a {
     display: block;
-    padding: 0 20px;
-    font-weight: bold;
-    background-image:url('tab_s.png');
-    background-repeat:no-repeat;
-    background-position:right;
-    color: #283A5D;
-    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-    text-decoration: none;
+    padding: 0 10px;
+    color: var(--arm_dark_gray);
+    font-weight: 600;
     outline: none;
 }
 
-.tabs3 .tablist a {
-    padding: 0 10px;
+.tabs1 .tablist a {
+    padding: 3px 20px;
+    color: white;
+    background-color:var(--arm_black);
+}
+
+.tablist li.current a {
+    background-color: var(--arm_dark_gray);
+    color: white;
+}
+
+.tabs1 .tablist li.current a {
+    background-color: var(--arm_blue);
 }
 
 .tablist a:hover {
-    background-image: url('tab_h.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-    text-decoration: none;
+    color: var(--arm_orange);
 }
 
-.tablist li.current a {
-    background-image: url('tab_a.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+.tabs1 a:hover {
+    color: var(--arm_yellow);
+}
+
+.tablist li.current :hover {
+    color: white;
 }

+ 61 - 72
Include/arm_math.h

@@ -33,20 +33,20 @@
    * based devices.
    *
    * The library is divided into a number of functions each covering a specific category:
-   * - Basic math functions
-   * - Fast math functions
-   * - Complex math functions
-   * - Filtering functions
-   * - Matrix functions
-   * - Transform functions
-   * - Motor control functions
-   * - Statistical functions
-   * - Support functions
-   * - Interpolation functions
-   * - Support Vector Machine functions (SVM)
-   * - Bayes classifier functions
-   * - Distance functions
-   * - Quaternion functions
+   * - \ref groupMath "Basic math functions"
+   * - \ref groupFastMath "Fast math functions"
+   * - \ref groupCmplxMath "Complex math functions"
+   * - \ref groupFilters "Filtering functions"
+   * - \ref groupMatrix "Matrix functions"
+   * - \ref groupTransforms "Transform functions"
+   * - \ref groupController "Motor control functions"
+   * - \ref groupStats "Statistical functions"
+   * - \ref groupSupport "Support functions"
+   * - \ref groupInterpolation "Interpolation functions"
+   * - \ref groupSVM "Support Vector Machine functions (SVM)"
+   * - \ref groupBayes "Bayes classifier functions"
+   * - \ref groupDistance "Distance functions"
+   * - \ref groupQuaternionMath "Quaternion functions"
    *
    * The library has generally separate functions for operating on 8-bit integers, 16-bit integers,
    * 32-bit integer and 32-bit floating-point values.
@@ -64,13 +64,13 @@
    * The library is released in source form. It is strongly advised to compile the library using -Ofast to
    * have the best performances.
    *
-   * The library functions are declared in the public file <code>arm_math.h</code> which is placed in the <code>Include</code> folder.
+   * The library functions are declared in the public file `arm_math.h` which is placed in the `Include` folder.
    * Simply include this file. If you don't want to include everything, you can also rely
-   * on headers in Include/dsp folder and use only what you need.
+   * on headers in `Include/dsp` folder and use only what you need.
    *
    * \section example Examples
    *
-   * The library ships with a number of examples which demonstrate how to use the library functions.
+   * The library ships with a number of examples which demonstrate how to use the library functions. Please refer to \ref groupExamples.
    *
    * \section toolchain Toolchain Support
    *
@@ -80,72 +80,58 @@
    *
    * \section preprocessor Preprocessor Macros
    *
-   * Each library project have different preprocessor macros.
-   *
-   * - ARM_MATH_BIG_ENDIAN:
-   *
-   * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.
-   *
-   * - ARM_MATH_MATRIX_CHECK:
-   *
-   * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices
-   *
-   * - ARM_MATH_ROUNDING:
-   *
-   * Define macro ARM_MATH_ROUNDING for rounding on support functions
-   *
-   * - ARM_MATH_LOOPUNROLL:
-   *
-   * Define macro ARM_MATH_LOOPUNROLL to enable manual loop unrolling in DSP functions
-   *
-   * - ARM_MATH_NEON:
-   *
-   * Define macro ARM_MATH_NEON to enable Neon versions of the DSP functions.
+   * Each library project has different preprocessor macros.
+   *
+   * - `ARM_MATH_BIG_ENDIAN`:
+   *  - Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.
+   * .
+   * - `ARM_MATH_MATRIX_CHECK`:
+   *  - Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices
+   * .
+   * - `ARM_MATH_ROUNDING`:
+   *  - Define macro ARM_MATH_ROUNDING for rounding on support functions
+   * .
+   * - `ARM_MATH_LOOPUNROLL`:
+   *  - Define macro ARM_MATH_LOOPUNROLL to enable manual loop unrolling in DSP functions
+   * .
+   * - `ARM_MATH_NEON`:
+   *  - Define macro ARM_MATH_NEON to enable Neon versions of the DSP functions.
    * It is not enabled by default when Neon is available because performances are 
    * dependent on the compiler and target architecture.
-   *
-   * - ARM_MATH_NEON_EXPERIMENTAL:
-   *
-   * Define macro ARM_MATH_NEON_EXPERIMENTAL to enable experimental Neon versions of 
+   * .
+   * - `ARM_MATH_NEON_EXPERIMENTAL`:
+   *  - Define macro ARM_MATH_NEON_EXPERIMENTAL to enable experimental Neon versions of 
    * of some DSP functions. Experimental Neon versions currently do not have better
    * performances than the scalar versions.
-   *
-   * - ARM_MATH_HELIUM:
-   *
-   * It implies the flags ARM_MATH_MVEF and ARM_MATH_MVEI and ARM_MATH_MVE_FLOAT16.
-   *
-   * - ARM_MATH_HELIUM_EXPERIMENTAL:
-   *
-   * Only taken into account when ARM_MATH_MVEF, ARM_MATH_MVEI or ARM_MATH_MVE_FLOAT16 are defined.
+   * .
+   * - `ARM_MATH_HELIUM`:
+   *  - It implies the flags ARM_MATH_MVEF and ARM_MATH_MVEI and ARM_MATH_MVE_FLOAT16.
+   * .
+   * - `ARM_MATH_HELIUM_EXPERIMENTAL`:
+   *  - Only taken into account when ARM_MATH_MVEF, ARM_MATH_MVEI or ARM_MATH_MVE_FLOAT16 are defined.
    * Enable some vector versions which may have worse performance than scalar
    * depending on the core / compiler configuration.
-   *
-   * - ARM_MATH_MVEF:
-   *
-   * Select Helium versions of the f32 algorithms.
+   * .
+   * - `ARM_MATH_MVEF`:
+   *  - Select Helium versions of the f32 algorithms.
    * It implies ARM_MATH_FLOAT16 and ARM_MATH_MVEI.
-   *
-   * - ARM_MATH_MVEI:
-   *
-   * Select Helium versions of the int and fixed point algorithms.
-   *
-   * - ARM_MATH_MVE_FLOAT16:
-   *
-   * MVE Float16 implementations of some algorithms (Requires MVE extension).
-   *
-   * - DISABLEFLOAT16:
-   *
-   * Disable float16 algorithms when __fp16 is not supported for a
+   * .
+   * - `ARM_MATH_MVEI`:
+   *  - Select Helium versions of the int and fixed point algorithms.
+   * .
+   * - `ARM_MATH_MVE_FLOAT16`:
+   *  - MVE Float16 implementations of some algorithms (Requires MVE extension).
+   * .
+   * - `DISABLEFLOAT16`:
+   *  - Disable float16 algorithms when __fp16 is not supported for a
    * specific compiler / core configuration.
    * This is only valid for scalar. When vector architecture is
    * supporting f16 then it can't be disabled.
-   *
-   * - ARM_MATH_AUTOVECTORIZE:
-   *
-   * With Helium or Neon, disable the use of vectorized code with C intrinsics
+   * .
+   * - `ARM_MATH_AUTOVECTORIZE`:
+   *  - With Helium or Neon, disable the use of vectorized code with C intrinsics
    * and use pure C instead. The vectorization is then done by the compiler.
    *
-   * <hr>
    * \section pack CMSIS-DSP in ARM::CMSIS Pack
    *
    * The following files relevant to CMSIS-DSP are present in the <b>ARM::CMSIS</b> Pack directories:
@@ -158,9 +144,12 @@
    * |\b CMSIS\\DSP\\PrivateInclude    | private include files for building the lib                                               |
    * |\b CMSIS\\DSP\\Source            | source files                                                   |
    *
-   * <hr>
    * \section rev Revision History of CMSIS-DSP
    * Please refer to \ref ChangeLog_pg.
+   *
+   * \section license License
+   * 
+   * The CMSIS-DSP is provided free of charge under the <a href="LICENSE.txt">Apache 2.0 License</a>.
    */
 
 

+ 28 - 12
Include/dsp/controller_functions.h

@@ -52,15 +52,35 @@ extern "C"
  */
 
 
- /**
-   * @ingroup groupController
-   */
-
-  /**
-   * @addtogroup SinCos
-   * @{
-   */
+/**
+  @ingroup groupController
+ */
 
+/**
+  @defgroup SinCos Sine Cosine
+
+  Computes the trigonometric sine and cosine values using a combination of table lookup
+  and linear interpolation.
+  There are separate functions for Q31 and floating-point data types.
+  The input to the floating-point version is in degrees while the
+  fixed-point Q31 have a scaled input with the range
+  [-1 0.9999] mapping to [-180 +180] degrees.
+
+  The floating point function also allows values that are out of the usual range. When this happens, the function will
+  take extra time to adjust the input value to the range of [-180 180].
+
+  The result is accurate to 5 digits after the decimal point.
+
+  The implementation is based on table lookup using 360 values together with linear interpolation.
+  The steps used are:
+   -# Calculation of the nearest integer table index.
+   -# Compute the fractional portion (fract) of the input.
+   -# Fetch the value corresponding to \c index from sine table to \c y0 and also value from \c index+1 to \c y1.
+   -# Sine value is computed as <code> *psinVal = y0 + (fract * (y1 - y0))</code>.
+   -# Fetch the value corresponding to \c index from cosine table to \c y0 and also value from \c index+1 to \c y1.
+   -# Cosine value is computed as <code> *pcosVal = y0 + (fract * (y1 - y0))</code>.
+ */
+ 
 /**
    * @brief  Floating-point sin_cos function.
    * @param[in]  theta   input value in degrees
@@ -84,10 +104,6 @@ extern "C"
         q31_t * pSinVal,
         q31_t * pCosVal);
 
-  /**
-   * @} end of SinCos group
-   */
-
  /**
    * @ingroup groupController
    */

+ 3 - 25
Include/dsp/fast_math_functions.h

@@ -63,17 +63,8 @@ extern "C"
  *
  */
 
-  /**
-   * @ingroup groupFastMath
-   */
-
-
-/**
-  @addtogroup sin
-  @{
- */
 
-/**
+   /**
    * @brief  Fast approximation to the trigonometric sine function for floating-point data.
    * @param[in] x  input value in radians.
    * @return  sin(x).
@@ -90,7 +81,6 @@ extern "C"
   q31_t arm_sin_q31(
   q31_t x);
 
-
   /**
    * @brief  Fast approximation to the trigonometric sine function for Q15 data.
    * @param[in] x  Scaled input value in radians.
@@ -99,14 +89,6 @@ extern "C"
   q15_t arm_sin_q15(
   q15_t x);
 
-/**
-  @} end of sin group
- */
-
-/**
-  @addtogroup cos
-  @{
- */
 
   /**
    * @brief  Fast approximation to the trigonometric cosine function for floating-point data.
@@ -134,10 +116,6 @@ extern "C"
   q15_t arm_cos_q15(
   q15_t x);
 
-/**
-  @} end of cos group
- */
-
 
 /**
   @brief         Floating-point vector of log values.
@@ -162,8 +140,8 @@ extern "C"
  */
   void arm_vlog_f64(
   const float64_t * pSrc,
-		float64_t * pDst,
-		uint32_t blockSize);
+        float64_t * pDst,
+        uint32_t blockSize);
 
 
 

+ 1 - 45
Include/dsp/interpolation_functions.h

@@ -121,18 +121,6 @@ extern "C"
   } arm_spline_instance_f32;
 
 
-
-
-  /**
-   * @ingroup groupInterpolation
-   */
-
-  /**
-   * @addtogroup SplineInterpolate
-   * @{
-   */
-
-  
   /**
    * @brief Processing function for the floating-point cubic spline interpolation.
    * @param[in]  S          points to an instance of the floating-point spline structure.
@@ -166,18 +154,7 @@ extern "C"
           float32_t * tempBuffer);
 
 
-  /**
-   * @} end of SplineInterpolate group
-   */
-
-
-  
-  /**
-   * @addtogroup LinearInterpolate
-   * @{
-   */
-
-    /**
+   /**
    * @brief  Process function for the floating-point Linear Interpolation Function.
    * @param[in,out] S  is an instance of the floating-point Linear Interpolation structure
    * @param[in]     x  input sample to process
@@ -241,23 +218,6 @@ q7_t arm_linear_interp_q7(
   q31_t x,
   uint32_t nValues);
 
-  /**
-   * @} end of LinearInterpolate group
-   */
-
-  
-
-
-  /**
-   * @ingroup groupInterpolation
-   */
-
-
-  /**
-   * @addtogroup BilinearInterpolate
-   * @{
-   */
-
   /**
   * @brief  Floating-point bilinear interpolation.
   * @param[in,out] S  points to an instance of the interpolation structure.
@@ -306,10 +266,6 @@ q7_t arm_linear_interp_q7(
   arm_bilinear_interp_instance_q7 * S,
   q31_t X,
   q31_t Y);
-  /**
-   * @} end of BilinearInterpolate group
-   */
-
 
 
 #ifdef   __cplusplus

+ 0 - 29
Source/ControllerFunctions/arm_sin_cos_f32.c

@@ -29,35 +29,6 @@
 #include "dsp/controller_functions.h"
 #include "arm_common_tables.h"
 
-/**
-  @ingroup groupController
- */
-
-/**
-  @defgroup SinCos Sine Cosine
-
-  Computes the trigonometric sine and cosine values using a combination of table lookup
-  and linear interpolation.
-  There are separate functions for Q31 and floating-point data types.
-  The input to the floating-point version is in degrees while the
-  fixed-point Q31 have a scaled input with the range
-  [-1 0.9999] mapping to [-180 +180] degrees.
-
-  The floating point function also allows values that are out of the usual range. When this happens, the function will
-  take extra time to adjust the input value to the range of [-180 180].
-
-  The result is accurate to 5 digits after the decimal point.
-
-  The implementation is based on table lookup using 360 values together with linear interpolation.
-  The steps used are:
-   -# Calculation of the nearest integer table index.
-   -# Compute the fractional portion (fract) of the input.
-   -# Fetch the value corresponding to \c index from sine table to \c y0 and also value from \c index+1 to \c y1.
-   -# Sine value is computed as <code> *psinVal = y0 + (fract * (y1 - y0))</code>.
-   -# Fetch the value corresponding to \c index from cosine table to \c y0 and also value from \c index+1 to \c y1.
-   -# Cosine value is computed as <code> *pcosVal = y0 + (fract * (y1 - y0))</code>.
- */
-
 /**
   @addtogroup SinCos
   @{

+ 1 - 0
Source/SupportFunctions/arm_barycenter_f32.c

@@ -33,6 +33,7 @@
 
 /**
   @ingroup barycenter
+  @{
  */
 
 

+ 0 - 4
Source/TransformFunctions/arm_cfft_f64.c

@@ -41,10 +41,6 @@ extern void arm_bitreversal_64(
   const uint16_t   bitRevLen,
   const uint16_t * pBitRevTable);
 
-/**
-* @} end of ComplexFFT group
-*/
-
 /* ----------------------------------------------------------------------
  * Internal helper function used by the FFTs
  * ---------------------------------------------------------------------- */

Някои файлове не бяха показани, защото твърде много файлове са промени