An example of importing Embedded Coder code into the mbed IDE. Currently doesn't connect IO to PWM, ADC, and Encoder, instead provides random inputs and measures execution time.

Dependencies:   mbed-dsp mbed Nucleo_pmsmfoc

Dependents:   Nucleo_pmsmfoc

Committer:
paulcox
Date:
Tue Nov 25 07:52:02 2014 +0000
Revision:
2:bbc155b0b886
adding doc?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
paulcox 2:bbc155b0b886 1 /* Copyright 2013-2014 The MathWorks, Inc. */
paulcox 2:bbc155b0b886 2 function queryByClassName(className, elem) {
paulcox 2:bbc155b0b886 3 if (!elem) elem = document.body;
paulcox 2:bbc155b0b886 4 if (typeof elem.querySelectorAll === "function") {
paulcox 2:bbc155b0b886 5 return elem.querySelectorAll("."+className);
paulcox 2:bbc155b0b886 6 } else {
paulcox 2:bbc155b0b886 7 return elem.getElementsByClass(className);
paulcox 2:bbc155b0b886 8 }
paulcox 2:bbc155b0b886 9 }
paulcox 2:bbc155b0b886 10
paulcox 2:bbc155b0b886 11 function nav_token_usage_details(direction) {
paulcox 2:bbc155b0b886 12 var els = queryByClassName("token_usage_details_tabrow");
paulcox 2:bbc155b0b886 13 var selectedIdx = 0;
paulcox 2:bbc155b0b886 14 var selectedClassName = "selected";
paulcox 2:bbc155b0b886 15 for (selectedIdx; selectedIdx < els.length; selectedIdx++) {
paulcox 2:bbc155b0b886 16 if (els[selectedIdx].classList.contains(selectedClassName)) {
paulcox 2:bbc155b0b886 17 break;
paulcox 2:bbc155b0b886 18 }
paulcox 2:bbc155b0b886 19 }
paulcox 2:bbc155b0b886 20 var nextIdx = selectedIdx;
paulcox 2:bbc155b0b886 21 if (direction === -1 && selectedIdx > 0) {
paulcox 2:bbc155b0b886 22 nextIdx = selectedIdx-1;
paulcox 2:bbc155b0b886 23 } else if (direction === 1 && selectedIdx < els.length - 1) {
paulcox 2:bbc155b0b886 24 nextIdx = selectedIdx + 1;
paulcox 2:bbc155b0b886 25 }
paulcox 2:bbc155b0b886 26 if (nextIdx !== selectedIdx) {
paulcox 2:bbc155b0b886 27 els[selectedIdx].classList.remove(selectedClassName);
paulcox 2:bbc155b0b886 28 els[nextIdx].classList.add(selectedClassName);
paulcox 2:bbc155b0b886 29 els[nextIdx].scrollIntoView(alignWithTop=false);
paulcox 2:bbc155b0b886 30 }
paulcox 2:bbc155b0b886 31 return false;
paulcox 2:bbc155b0b886 32 }
paulcox 2:bbc155b0b886 33
paulcox 2:bbc155b0b886 34 function tabrowClicked(event) {
paulcox 2:bbc155b0b886 35 }
paulcox 2:bbc155b0b886 36
paulcox 2:bbc155b0b886 37 function popupOnload() {
paulcox 2:bbc155b0b886 38 var els = queryByClassName("token_usage_details_tabrow");
paulcox 2:bbc155b0b886 39 for (var i=0; i<els.length; i++) {
paulcox 2:bbc155b0b886 40 els[i].onclick= tabrowClicked;
paulcox 2:bbc155b0b886 41 }
paulcox 2:bbc155b0b886 42 };
paulcox 2:bbc155b0b886 43
paulcox 2:bbc155b0b886 44 function tokenOnRightclick(event) {
paulcox 2:bbc155b0b886 45 var filename = location.pathname.split(/\//);
paulcox 2:bbc155b0b886 46 filename = filename[filename.length-1];
paulcox 2:bbc155b0b886 47 top.inspectToken(filename, location.pathname, event);
paulcox 2:bbc155b0b886 48 top.hiliteClickedToken(event.currentTarget);
paulcox 2:bbc155b0b886 49 return false;
paulcox 2:bbc155b0b886 50 }
paulcox 2:bbc155b0b886 51
paulcox 2:bbc155b0b886 52 function tokenOnclick(event) {
paulcox 2:bbc155b0b886 53 tokenOnRightclick(event);
paulcox 2:bbc155b0b886 54 if (event.currentTarget.href.length !== 0 && event.currentTarget.href.protocol !== "matlab:") {
paulcox 2:bbc155b0b886 55 top.tokenLinkOnClick(event);
paulcox 2:bbc155b0b886 56 return true;
paulcox 2:bbc155b0b886 57 }
paulcox 2:bbc155b0b886 58 return false;
paulcox 2:bbc155b0b886 59 };
paulcox 2:bbc155b0b886 60
paulcox 2:bbc155b0b886 61 function tokenOnMouseOver(event) {
paulcox 2:bbc155b0b886 62 var filename = location.pathname.split(/\//);
paulcox 2:bbc155b0b886 63 filename = filename[filename.length-1];
paulcox 2:bbc155b0b886 64 createPopup(filename, event);
paulcox 2:bbc155b0b886 65 };
paulcox 2:bbc155b0b886 66 function tokenOnMouseOut(event) {
paulcox 2:bbc155b0b886 67 destroyPopup(event.currentTarget);
paulcox 2:bbc155b0b886 68 };
paulcox 2:bbc155b0b886 69
paulcox 2:bbc155b0b886 70 function blkLinkOnClick(event) {
paulcox 2:bbc155b0b886 71 top.hiliteClickedToken(event.currentTarget);
paulcox 2:bbc155b0b886 72 return true;
paulcox 2:bbc155b0b886 73 }
paulcox 2:bbc155b0b886 74
paulcox 2:bbc155b0b886 75 // remove the code table; update tokens; insert back
paulcox 2:bbc155b0b886 76 function updateToken(codeElement) {
paulcox 2:bbc155b0b886 77 var filename = location.pathname.split(/\//);
paulcox 2:bbc155b0b886 78 filename = filename[filename.length-1];
paulcox 2:bbc155b0b886 79 var srcFilename;
paulcox 2:bbc155b0b886 80 if (top.RTW_TraceInfo) {
paulcox 2:bbc155b0b886 81 srcFilename = top.RTW_TraceInfo.toSrcFileName(filename);
paulcox 2:bbc155b0b886 82 }
paulcox 2:bbc155b0b886 83 var els = queryByClassName("tk", codeElement);
paulcox 2:bbc155b0b886 84 var elem;
paulcox 2:bbc155b0b886 85 var hasTraceFlag = null;
paulcox 2:bbc155b0b886 86 if (top.TraceInfoFlag && top.TraceInfoFlag.instance)
paulcox 2:bbc155b0b886 87 hasTraceFlag = top.TraceInfoFlag.instance.traceFlag;
paulcox 2:bbc155b0b886 88 else
paulcox 2:bbc155b0b886 89 hasTraceFlag = false;
paulcox 2:bbc155b0b886 90 var defObj;
paulcox 2:bbc155b0b886 91 var traceObj;
paulcox 2:bbc155b0b886 92 var codeDef = (top.CodeDefine && top.CodeDefine.instance) ? top.CodeDefine.instance : null;
paulcox 2:bbc155b0b886 93 var aLink = top.document.createElement("a");
paulcox 2:bbc155b0b886 94 if (hasTraceFlag || (top.CodeDefine && top.CodeDefine.instance)) {
paulcox 2:bbc155b0b886 95 for (var i=0; i<els.length; i++) {
paulcox 2:bbc155b0b886 96 defObj = (codeDef) ? codeDef.def[els[i].text] : null;
paulcox 2:bbc155b0b886 97 traceObj = hasTraceFlag && hasTraceFlag[srcFilename+":"+els[i].id];
paulcox 2:bbc155b0b886 98 if (traceObj || defObj) {
paulcox 2:bbc155b0b886 99 els[i].onclick= tokenOnclick;
paulcox 2:bbc155b0b886 100 els[i].oncontextmenu= tokenOnRightclick;
paulcox 2:bbc155b0b886 101 els[i].onmouseover = tokenOnMouseOver;
paulcox 2:bbc155b0b886 102 els[i].onmouseout = tokenOnMouseOut;
paulcox 2:bbc155b0b886 103 els[i].className += " active";
paulcox 2:bbc155b0b886 104 els[i].target = "rtwreport_document_frame";
paulcox 2:bbc155b0b886 105 if (traceObj && top.reportModel) {
paulcox 2:bbc155b0b886 106 els[i].href = "matlab:rtw.report.code2model(\'" + top.reportModel
paulcox 2:bbc155b0b886 107 + "\',\'" + location.pathname + "\',\'" + els[i].id + "')";
paulcox 2:bbc155b0b886 108 } else {
paulcox 2:bbc155b0b886 109 aLink.href = defObj.file;
paulcox 2:bbc155b0b886 110 els[i].href = aLink.pathname + "#" + defObj.line;
paulcox 2:bbc155b0b886 111 }
paulcox 2:bbc155b0b886 112 }
paulcox 2:bbc155b0b886 113 }
paulcox 2:bbc155b0b886 114 }
paulcox 2:bbc155b0b886 115 // update block path link in comments
paulcox 2:bbc155b0b886 116 els = queryByClassName("blk", codeElement);
paulcox 2:bbc155b0b886 117 var lineSid = null;
paulcox 2:bbc155b0b886 118 if (top.RTW_rtwnameSIDMap && top.RTW_rtwnameSIDMap.instance) {
paulcox 2:bbc155b0b886 119 for (var i=0; i<els.length; i++) {
paulcox 2:bbc155b0b886 120 lineSid = top.RTW_rtwnameSIDMap.instance.getSID(els[i].text);
paulcox 2:bbc155b0b886 121 if (lineSid) {
paulcox 2:bbc155b0b886 122 els[i].href = "matlab:coder.internal.code2model('" + lineSid.sid + "');";
paulcox 2:bbc155b0b886 123 els[i].id = "blkLink_" + i;
paulcox 2:bbc155b0b886 124 els[i].onclick = blkLinkOnClick;
paulcox 2:bbc155b0b886 125 els[i].className += " blk_active";
paulcox 2:bbc155b0b886 126 }
paulcox 2:bbc155b0b886 127 }
paulcox 2:bbc155b0b886 128 }
paulcox 2:bbc155b0b886 129 // update requirement link in comments
paulcox 2:bbc155b0b886 130 els = queryByClassName("req", codeElement);
paulcox 2:bbc155b0b886 131 if (top.RTW_rtwnameSIDMap && top.RTW_rtwnameSIDMap.instance) {
paulcox 2:bbc155b0b886 132 for (var i=0; i<els.length; i++) {
paulcox 2:bbc155b0b886 133 lineSid = top.RTW_rtwnameSIDMap.instance.getSID(els[i].getAttribute("blockpath"));
paulcox 2:bbc155b0b886 134 if (lineSid) {
paulcox 2:bbc155b0b886 135 var req_id = els[i].getAttribute("req_id");
paulcox 2:bbc155b0b886 136 els[i].href = "matlab:rtw.report.code2req('" + lineSid.sid + "'," + req_id + ");";
paulcox 2:bbc155b0b886 137 els[i].id = "req_" + i;
paulcox 2:bbc155b0b886 138 els[i].onclick = top.reqOnClick;
paulcox 2:bbc155b0b886 139 els[i].className += " req_active";
paulcox 2:bbc155b0b886 140 }
paulcox 2:bbc155b0b886 141 }
paulcox 2:bbc155b0b886 142 }
paulcox 2:bbc155b0b886 143
paulcox 2:bbc155b0b886 144 // add link to source file
paulcox 2:bbc155b0b886 145 if (top.Html2SrcLink && top.Html2SrcLink.instance) {
paulcox 2:bbc155b0b886 146 filename = top.rtwGetFileName(location.href);
paulcox 2:bbc155b0b886 147 var link2Src = top.Html2SrcLink.instance.getLink2Src(filename);
paulcox 2:bbc155b0b886 148 var link = document.createElement("h4");
paulcox 2:bbc155b0b886 149 link.innerHTML = "File: <a href=\"" + link2Src +
paulcox 2:bbc155b0b886 150 "\" target = \"rtwreport_document_frame\" id=\"linkToText_plain\">" +
paulcox 2:bbc155b0b886 151 top.rtwGetFileName(link2Src) + "</a>";
paulcox 2:bbc155b0b886 152 var bodyNode = document.body;
paulcox 2:bbc155b0b886 153 bodyNode.insertBefore(link, bodyNode.firstElementChild);
paulcox 2:bbc155b0b886 154 }
paulcox 2:bbc155b0b886 155 top.updateHyperlinks();
paulcox 2:bbc155b0b886 156 }
paulcox 2:bbc155b0b886 157 function getInsertFunction(element) {
paulcox 2:bbc155b0b886 158 var parentNode = element.parentNode;
paulcox 2:bbc155b0b886 159 var nextSibling = element.nextSibling;
paulcox 2:bbc155b0b886 160 parentNode.removeChild(element);
paulcox 2:bbc155b0b886 161 var spinner = document.createElement("img");
paulcox 2:bbc155b0b886 162 spinner.src = "spinner.gif";
paulcox 2:bbc155b0b886 163 parentNode.appendChild(spinner);
paulcox 2:bbc155b0b886 164 return function() {
paulcox 2:bbc155b0b886 165 if (spinner) {
paulcox 2:bbc155b0b886 166 parentNode.removeChild(spinner);
paulcox 2:bbc155b0b886 167 }
paulcox 2:bbc155b0b886 168 if (nextSibling) {
paulcox 2:bbc155b0b886 169 parentNode.insertBefore(element, nextSibling);
paulcox 2:bbc155b0b886 170 } else {
paulcox 2:bbc155b0b886 171 parentNode.appendChild(element);
paulcox 2:bbc155b0b886 172 }
paulcox 2:bbc155b0b886 173 };
paulcox 2:bbc155b0b886 174 }
paulcox 2:bbc155b0b886 175
paulcox 2:bbc155b0b886 176 // the onload function for source file
paulcox 2:bbc155b0b886 177 function srcFileOnload() {
paulcox 2:bbc155b0b886 178 var codeElement = document.getElementById("codeTbl");
paulcox 2:bbc155b0b886 179 var insertFunction = getInsertFunction(codeElement);
paulcox 2:bbc155b0b886 180 try {
paulcox 2:bbc155b0b886 181 updateToken(codeElement);
paulcox 2:bbc155b0b886 182 } catch (err) {};
paulcox 2:bbc155b0b886 183 insertFunction();
paulcox 2:bbc155b0b886 184 // add code to model hyperlinks for all tokens
paulcox 2:bbc155b0b886 185 var filename = location.pathname.split(/\//);
paulcox 2:bbc155b0b886 186 filename = filename[filename.length-1];
paulcox 2:bbc155b0b886 187 // highlight the filename in the TOC frame
paulcox 2:bbc155b0b886 188 if (top.rtwreport_contents_frame && top.hiliteByFileName(top.rtwreport_document_frame.document.location.href)) {
paulcox 2:bbc155b0b886 189 // remove the highlights in the TOC frame if filename is hilite successfully
paulcox 2:bbc155b0b886 190 top.removeHiliteTOC(top.rtwreport_contents_frame);
paulcox 2:bbc155b0b886 191 }
paulcox 2:bbc155b0b886 192
paulcox 2:bbc155b0b886 193 // annotate code with code coverage data
paulcox 2:bbc155b0b886 194 if (typeof rtwannotate === 'function') {
paulcox 2:bbc155b0b886 195 rtwannotate(filename.replace(/.html$/,"_cov.xml"));
paulcox 2:bbc155b0b886 196 }
paulcox 2:bbc155b0b886 197
paulcox 2:bbc155b0b886 198 // highlight token and row
paulcox 2:bbc155b0b886 199 if (top.RTW_TraceInfo.instance && top.RTW_TraceArgs.instance) {
paulcox 2:bbc155b0b886 200 var i;
paulcox 2:bbc155b0b886 201 // find the highlight file name
paulcox 2:bbc155b0b886 202 var fileIdx = top.RTW_TraceArgs.instance.getFileIdx(filename);
paulcox 2:bbc155b0b886 203 var ids=[], rows=[];
paulcox 2:bbc155b0b886 204 if (typeof fileIdx !== "undefined") {
paulcox 2:bbc155b0b886 205 ids = top.RTW_TraceArgs.instance.getIDs(fileIdx);
paulcox 2:bbc155b0b886 206 rows = top.RTW_TraceArgs.instance.getRows(fileIdx);
paulcox 2:bbc155b0b886 207 // highlight rows in file
paulcox 2:bbc155b0b886 208 for (i=0; i<rows.length;i++) {
paulcox 2:bbc155b0b886 209 elem = top.rtwreport_document_frame.document.getElementById(rows[i]);
paulcox 2:bbc155b0b886 210 if (elem) elem.className += " hilite";
paulcox 2:bbc155b0b886 211 }
paulcox 2:bbc155b0b886 212 // highlight tokens in file
paulcox 2:bbc155b0b886 213 if (top.GlobalConfig.hiliteToken) {
paulcox 2:bbc155b0b886 214 for (i=0; i<ids.length;i++) {
paulcox 2:bbc155b0b886 215 elem = top.rtwreport_document_frame.document.getElementById(ids[i]);
paulcox 2:bbc155b0b886 216 if (elem) elem.className += " hilite";
paulcox 2:bbc155b0b886 217 }
paulcox 2:bbc155b0b886 218 }
paulcox 2:bbc155b0b886 219 } // end of if current file has highlighted lines
paulcox 2:bbc155b0b886 220
paulcox 2:bbc155b0b886 221 // if the loaded file is not currFile, call setInitLocation
paulcox 2:bbc155b0b886 222 var currFileIdx = top.RTW_TraceInfo.instance.getCurrFileIdx();
paulcox 2:bbc155b0b886 223 var myFileIdx = top.RTW_TraceInfo.instance.getFileIdx(filename);
paulcox 2:bbc155b0b886 224 // update navigation status if the file is loaded first time
paulcox 2:bbc155b0b886 225 if (currFileIdx !== myFileIdx && document.location.hash === "") {
paulcox 2:bbc155b0b886 226 if (rows.length > 0)
paulcox 2:bbc155b0b886 227 top.RTW_TraceInfo.instance.setInitLocation(filename,rows[0]);
paulcox 2:bbc155b0b886 228 else {
paulcox 2:bbc155b0b886 229 top.toggleNavSideBar("off");
paulcox 2:bbc155b0b886 230 return;
paulcox 2:bbc155b0b886 231 }
paulcox 2:bbc155b0b886 232 }
paulcox 2:bbc155b0b886 233
paulcox 2:bbc155b0b886 234 // display navigation side bar
paulcox 2:bbc155b0b886 235 if (top.rtwreport_nav_frame) top.rtwreport_nav_frame.location.reload();
paulcox 2:bbc155b0b886 236 if (rows.length>0) {
paulcox 2:bbc155b0b886 237 top.toggleNavSideBar("on");
paulcox 2:bbc155b0b886 238 top.toggleNavToolBar("on");
paulcox 2:bbc155b0b886 239 } else {
paulcox 2:bbc155b0b886 240 top.toggleNavSideBar("off");
paulcox 2:bbc155b0b886 241 }
paulcox 2:bbc155b0b886 242 }
paulcox 2:bbc155b0b886 243 top.scrollToLineBasedOnHash(document.location.hash);
paulcox 2:bbc155b0b886 244 function getHash() {
paulcox 2:bbc155b0b886 245 var loc;
paulcox 2:bbc155b0b886 246 var aHash="";
paulcox 2:bbc155b0b886 247 var topDocObj = top.window.document;
paulcox 2:bbc155b0b886 248 // get the hash value from location.
paulcox 2:bbc155b0b886 249 loc = topDocObj.location;
paulcox 2:bbc155b0b886 250 loc = loc.search || loc.hash;
paulcox 2:bbc155b0b886 251 aHash = loc.substring(1);
paulcox 2:bbc155b0b886 252 aHash = decodeURI(aHash);
paulcox 2:bbc155b0b886 253 return aHash;
paulcox 2:bbc155b0b886 254 }
paulcox 2:bbc155b0b886 255 }
paulcox 2:bbc155b0b886 256
paulcox 2:bbc155b0b886 257 function createPopup(filename, evt) {
paulcox 2:bbc155b0b886 258 var anchorObj = evt.currentTarget;
paulcox 2:bbc155b0b886 259 if (anchorObj.children.length > 0)
paulcox 2:bbc155b0b886 260 return;
paulcox 2:bbc155b0b886 261 var filename = location.pathname.split(/\//);
paulcox 2:bbc155b0b886 262 filename = filename[filename.length-1];
paulcox 2:bbc155b0b886 263 var windowObj = top.getInspectWindow();
paulcox 2:bbc155b0b886 264 var propObj = top.getInspectData(filename, anchorObj);
paulcox 2:bbc155b0b886 265 var navObj = top.getInspectLink(filename, location.pathname, anchorObj);
paulcox 2:bbc155b0b886 266 if (propObj) {
paulcox 2:bbc155b0b886 267 windowObj.appendChild(propObj);
paulcox 2:bbc155b0b886 268 windowObj.style.left = "0px";
paulcox 2:bbc155b0b886 269 if (anchorObj.parentElement.nodeName === "TD" &&
paulcox 2:bbc155b0b886 270 anchorObj.parentElement.parentElement.nodeName === "TR") {
paulcox 2:bbc155b0b886 271 anchorObj.parentElement.parentElement.lastChild.insertBefore(windowObj,
paulcox 2:bbc155b0b886 272 anchorObj.parentElement.parentElement.lastChild.lastChild.nextSibling);
paulcox 2:bbc155b0b886 273 var left = Math.min(evt.clientX , window.innerWidth - windowObj.scrollWidth - 30);
paulcox 2:bbc155b0b886 274 left = Math.max(0, left);
paulcox 2:bbc155b0b886 275 windowObj.style.left = "" + left + "px";
paulcox 2:bbc155b0b886 276 }
paulcox 2:bbc155b0b886 277 }
paulcox 2:bbc155b0b886 278 };
paulcox 2:bbc155b0b886 279
paulcox 2:bbc155b0b886 280 function destroyPopup(anchorObj) {
paulcox 2:bbc155b0b886 281 var popWindow = document.getElementById("popup_window");
paulcox 2:bbc155b0b886 282 if (popWindow) {
paulcox 2:bbc155b0b886 283 popWindow.parentElement.removeChild(popWindow);
paulcox 2:bbc155b0b886 284 }
paulcox 2:bbc155b0b886 285 };